effect-app 0.178.0 → 0.179.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/_cjs/service.cjs +31 -7
- package/_cjs/service.cjs.map +1 -1
- package/dist/client/fetch.d.ts +2 -2
- package/dist/service.d.ts +25 -5
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +30 -8
- package/package.json +3 -3
- package/src/service.ts +50 -7
- package/vitest.config.ts.timestamp-1670862388823.mjs +0 -23
package/CHANGELOG.md
CHANGED
package/_cjs/service.cjs
CHANGED
|
@@ -10,6 +10,7 @@ exports.TagMake = exports.TagClassMakeId = exports.TagClassMake = void 0;
|
|
|
10
10
|
exports.assignTag = assignTag;
|
|
11
11
|
exports.make = make;
|
|
12
12
|
exports.makeService = makeService;
|
|
13
|
+
exports.proxify = void 0;
|
|
13
14
|
var _core = require("@effect-app/core");
|
|
14
15
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
15
16
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
@@ -68,6 +69,27 @@ function assignTag(key, creationError) {
|
|
|
68
69
|
return t;
|
|
69
70
|
};
|
|
70
71
|
}
|
|
72
|
+
const proxify = TagClass => () => {
|
|
73
|
+
// @ts-expect-error abc
|
|
74
|
+
TagClass["$"] = new Proxy({}, {
|
|
75
|
+
get(_target, prop, _receiver) {
|
|
76
|
+
// @ts-expect-error abc
|
|
77
|
+
return _core.Effect.andThen(TagClass, s => s[prop]);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const done = new Proxy(TagClass, {
|
|
81
|
+
get(_target, prop, _receiver) {
|
|
82
|
+
if (prop in TagClass) {
|
|
83
|
+
// @ts-expect-error abc
|
|
84
|
+
return TagClass[prop];
|
|
85
|
+
}
|
|
86
|
+
// @ts-expect-error abc
|
|
87
|
+
return (...args) => _core.Effect.andThen(TagClass, s => s[prop](...args));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return done;
|
|
91
|
+
};
|
|
92
|
+
exports.proxify = proxify;
|
|
71
93
|
const TagMake = (key, make) => () => {
|
|
72
94
|
const limit = Error.stackTraceLimit;
|
|
73
95
|
Error.stackTraceLimit = 2;
|
|
@@ -81,7 +103,7 @@ const TagMake = (key, make) => () => {
|
|
|
81
103
|
return _core.Layer.scoped(this, make);
|
|
82
104
|
};
|
|
83
105
|
};
|
|
84
|
-
return assignTag(key, creationError)(c);
|
|
106
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
85
107
|
};
|
|
86
108
|
exports.TagMake = TagMake;
|
|
87
109
|
function TagClass(key) {
|
|
@@ -104,7 +126,7 @@ function TagClass(key) {
|
|
|
104
126
|
return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
|
|
105
127
|
}
|
|
106
128
|
};
|
|
107
|
-
return assignTag(key, creationError)(c);
|
|
129
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
108
130
|
}
|
|
109
131
|
const TagClassMake = (make, key) => () => {
|
|
110
132
|
const limit = Error.stackTraceLimit;
|
|
@@ -128,7 +150,7 @@ const TagClassMake = (make, key) => () => {
|
|
|
128
150
|
return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
|
|
129
151
|
}
|
|
130
152
|
};
|
|
131
|
-
return assignTag(key, creationError)(c);
|
|
153
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
132
154
|
};
|
|
133
155
|
exports.TagClassMake = TagClassMake;
|
|
134
156
|
function TagClassId(key) {
|
|
@@ -139,7 +161,8 @@ function TagClassId(key) {
|
|
|
139
161
|
Error.stackTraceLimit = limit;
|
|
140
162
|
const c = class {
|
|
141
163
|
constructor(service) {
|
|
142
|
-
|
|
164
|
+
// this addresses prototype inheritance, but the trade-off is that the object won't be `instanceof` the Service Id class, so it's really just used as an interface only.
|
|
165
|
+
return Object.assign(Object.create(service), service);
|
|
143
166
|
}
|
|
144
167
|
static wrap = service => new this(service);
|
|
145
168
|
static toLayer = eff => {
|
|
@@ -149,7 +172,7 @@ function TagClassId(key) {
|
|
|
149
172
|
return _core.Layer.scoped(this, _core.Effect.map(eff, _ => new this(_)));
|
|
150
173
|
};
|
|
151
174
|
};
|
|
152
|
-
return assignTag(key, creationError)(c);
|
|
175
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
153
176
|
};
|
|
154
177
|
}
|
|
155
178
|
const TagClassMakeId = (key, make) => () => {
|
|
@@ -159,7 +182,8 @@ const TagClassMakeId = (key, make) => () => {
|
|
|
159
182
|
Error.stackTraceLimit = limit;
|
|
160
183
|
const c = class {
|
|
161
184
|
constructor(service) {
|
|
162
|
-
|
|
185
|
+
// this addresses prototype inheritance, but the trade-off is that the object won't be `instanceof` the Service Id class, so it's really just used as an interface only.
|
|
186
|
+
return Object.assign(Object.create(service), service);
|
|
163
187
|
}
|
|
164
188
|
static wrap = service => new this(service);
|
|
165
189
|
static make = _core.Effect.andThen(make, _ => new this(_));
|
|
@@ -171,7 +195,7 @@ const TagClassMakeId = (key, make) => () => {
|
|
|
171
195
|
return arg ? _core.Layer.scoped(this, arg) : _core.Layer.scoped(this, this.make);
|
|
172
196
|
};
|
|
173
197
|
};
|
|
174
|
-
return assignTag(key, creationError)(c);
|
|
198
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
175
199
|
};
|
|
176
200
|
exports.TagClassMakeId = TagClassMakeId;
|
|
177
201
|
//# sourceMappingURL=service.cjs.map
|
package/_cjs/service.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.cjs","names":["_core","require","ServiceTag","exports","Symbol","PhantomTypeParameter","ServiceTagged","makeService","_","make","t","i","randomId","assignTag","key","creationError","cls","tag","Context","GenericTag","fields","Reflect","ownKeys","includes","rest","Object","assign","getPrototypeOf","limit","Error","stackTraceLimit","defineProperty","get","stack","TagMake","c","toLayer","Layer","effect","toLayerScoped","scoped","
|
|
1
|
+
{"version":3,"file":"service.cjs","names":["_core","require","ServiceTag","exports","Symbol","PhantomTypeParameter","ServiceTagged","makeService","_","make","t","i","randomId","assignTag","key","creationError","cls","tag","Context","GenericTag","fields","Reflect","ownKeys","includes","rest","Object","assign","getPrototypeOf","limit","Error","stackTraceLimit","defineProperty","get","stack","proxify","TagClass","Proxy","_target","prop","_receiver","Effect","andThen","s","done","args","TagMake","c","toLayer","Layer","effect","toLayerScoped","scoped","constructor","service","_key","eff","map","split","name","TagClassMake","TagClassId","create","wrap","TagClassMakeId","arg"],"sources":["../src/service.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/dist/client/fetch.d.ts
CHANGED
|
@@ -16,12 +16,12 @@ export declare function fetchApi(method: Method, path: string, body?: unknown):
|
|
|
16
16
|
status: number;
|
|
17
17
|
body: unknown;
|
|
18
18
|
headers: import("@effect/platform/Http/Headers").Headers;
|
|
19
|
-
} | FetchResponse<unknown>, NotFoundError<ItemType> | InvalidStateError | ValidationError | NotLoggedInError | import("./errors.js").LoginError | UnauthorizedError | OptimisticConcurrencyException | HttpRequestError | HttpResponseError<unknown> | import("@effect/platform/Http/Body").BodyError, HttpClient.Client.Default
|
|
19
|
+
} | FetchResponse<unknown>, NotFoundError<ItemType> | InvalidStateError | ValidationError | NotLoggedInError | import("./errors.js").LoginError | UnauthorizedError | OptimisticConcurrencyException | HttpRequestError | HttpResponseError<unknown> | import("@effect/platform/Http/Body").BodyError, ApiConfig | HttpClient.Client.Default>;
|
|
20
20
|
export declare function fetchApi2S<RequestR, RequestFrom, RequestTo, ResponseR, ResponseFrom, ResponseTo>(request: Schema<RequestTo, RequestFrom, RequestR>, response: Schema<ResponseTo, ResponseFrom, ResponseR>): (method: Method, path: Path) => (req: RequestTo) => Effect.Effect<{
|
|
21
21
|
body: ResponseTo;
|
|
22
22
|
headers: Headers;
|
|
23
23
|
status: number;
|
|
24
|
-
}, S.ParseResult.ParseError | NotFoundError<ItemType> | InvalidStateError | ValidationError | NotLoggedInError | import("./errors.js").LoginError | UnauthorizedError | OptimisticConcurrencyException | HttpRequestError | ResError | HttpResponseError<unknown> | import("@effect/platform/Http/Body").BodyError, HttpClient.Client.Default |
|
|
24
|
+
}, S.ParseResult.ParseError | NotFoundError<ItemType> | InvalidStateError | ValidationError | NotLoggedInError | import("./errors.js").LoginError | UnauthorizedError | OptimisticConcurrencyException | HttpRequestError | ResError | HttpResponseError<unknown> | import("@effect/platform/Http/Body").BodyError, ApiConfig | HttpClient.Client.Default | RequestR | ResponseR>;
|
|
25
25
|
export declare function fetchApi3S<RequestA, RequestE, ResponseE = unknown, ResponseA = void>({ Request, Response }: {
|
|
26
26
|
Request: REST.RequestSchemed<RequestA, RequestE>;
|
|
27
27
|
Response: REST.ReqRes<ResponseA, ResponseE, any>;
|
package/dist/service.d.ts
CHANGED
|
@@ -26,28 +26,46 @@ export declare function makeService<T extends ServiceTagged<any>>(_: Omit<T, Ser
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function make<T extends ServiceTagged<any>, I = T>(_: Context.Tag<I, T>, t: Omit<T, ServiceTag>): T;
|
|
28
28
|
export declare function assignTag<Id, Service = Id>(key?: string, creationError?: Error): <S extends object>(cls: S) => S & Context.Tag<Id, Service>;
|
|
29
|
+
export type ServiceAcessorShape<Self, Shape> = {
|
|
30
|
+
$: {
|
|
31
|
+
[k in keyof Shape as Shape[k] extends (...args: Array<any>) => any ? never : k]: Shape[k] extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, Self | R> : Effect.Effect<Shape[k], never, Self>;
|
|
32
|
+
};
|
|
33
|
+
} & {
|
|
34
|
+
[k in keyof Shape as Shape[k] extends (...args: Array<any>) => any ? k : never]: Shape[k] extends (...args: infer Args) => Effect.Effect<infer A, infer E, infer R> ? (...args: Args) => Effect.Effect<A, E, Self | R> : Shape[k] extends (...args: infer Args) => infer A ? (...args: Args) => Effect.Effect<A, never, Self> : never;
|
|
35
|
+
};
|
|
36
|
+
export declare const proxify: <T extends object>(TagClass: T) => <Self, Shape>() => T & {
|
|
37
|
+
$: { [k in keyof Shape as Shape[k] extends (...args: Array<any>) => any ? never : k]: Shape[k] extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, R | Self> : Effect.Effect<Shape[k], never, Self>; };
|
|
38
|
+
} & { [k_1 in keyof Shape as Shape[k_1] extends (...args: Array<any>) => any ? k_1 : never]: Shape[k_1] extends (...args: infer Args) => Effect.Effect<infer A_1, infer E_1, infer R_1> ? (...args: Args) => Effect.Effect<A_1, E_1, R_1 | Self> : Shape[k_1] extends (...args: infer Args_1) => infer A_2 ? (...args: Args_1) => Effect.Effect<A_2, never, Self> : never; };
|
|
29
39
|
export declare const TagMake: <ServiceImpl, R, E, const Key extends string>(key: Key, make: Effect<ServiceImpl, E, R>) => <Id>() => {
|
|
30
40
|
new (): Context.TagClassShape<Key, ServiceImpl>;
|
|
31
41
|
toLayer: () => Layer<Id, E, R>;
|
|
32
42
|
toLayerScoped: () => Layer<Id, E, Exclude<R, Scope.Scope>>;
|
|
33
|
-
} & Context.Tag<Id, ServiceImpl
|
|
43
|
+
} & Context.Tag<Id, ServiceImpl> & {
|
|
44
|
+
$: { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args: Array<any>) => any ? never : k]: ServiceImpl[k] extends Effect.Effect<infer A, infer E_1, infer R_1> ? Effect.Effect<A, E_1, R_1 | Id> : Effect.Effect<ServiceImpl[k], never, Id>; };
|
|
45
|
+
} & { [k_1 in keyof ServiceImpl as ServiceImpl[k_1] extends (...args: Array<any>) => any ? k_1 : never]: ServiceImpl[k_1] extends (...args: infer Args) => Effect.Effect<infer A_1, infer E_2, infer R_2> ? (...args: Args) => Effect.Effect<A_1, E_2, R_2 | Id> : ServiceImpl[k_1] extends (...args: infer Args_1) => infer A_2 ? (...args: Args_1) => Effect.Effect<A_2, never, Id> : never; };
|
|
34
46
|
export declare function TagClass<Id, ServiceImpl, Service = Id>(key?: string): {
|
|
35
47
|
new (service: ServiceImpl): Readonly<ServiceImpl>;
|
|
36
48
|
toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>;
|
|
37
49
|
toLayerScoped: <E_1, R_1>(eff: Effect<ServiceImpl, E_1, R_1>) => Layer<Id, E_1, Exclude<R_1, Scope.Scope>>;
|
|
38
|
-
} & Context.Tag<Id, Service
|
|
50
|
+
} & Context.Tag<Id, Service> & {
|
|
51
|
+
$: { [k in keyof Service as Service[k] extends (...args: any[]) => any ? never : k]: Service[k] extends Effect.Effect<infer A, infer E_2, infer R_2> ? Effect.Effect<A, E_2, R_2 | Id> : Effect.Effect<Service[k], never, Id>; };
|
|
52
|
+
} & { [k_1 in keyof Service as Service[k_1] extends (...args: any[]) => any ? k_1 : never]: Service[k_1] extends (...args: infer Args) => Effect.Effect<infer A_1, infer E_3, infer R_3> ? (...args: Args) => Effect.Effect<A_1, E_3, R_3 | Id> : Service[k_1] extends (...args: infer Args_1) => infer A_2 ? (...args: Args_1) => Effect.Effect<A_2, never, Id> : never; };
|
|
39
53
|
export declare const TagClassMake: <ServiceImpl, R, E>(make: Effect<ServiceImpl, E, R>, key?: string) => <Id, Service = Id>() => {
|
|
40
54
|
new (service: ServiceImpl): Readonly<ServiceImpl>;
|
|
41
55
|
toLayer: () => Layer<Id, E, R>;
|
|
42
56
|
toLayerScoped: () => Layer<Id, E, Exclude<R, Scope.Scope>>;
|
|
43
57
|
make: Effect<Id, E, R>;
|
|
44
|
-
} & Context.Tag<Id, Service
|
|
58
|
+
} & Context.Tag<Id, Service> & {
|
|
59
|
+
$: { [k in keyof Service as Service[k] extends (...args: Array<any>) => any ? never : k]: Service[k] extends Effect.Effect<infer A, infer E_1, infer R_1> ? Effect.Effect<A, E_1, R_1 | Id> : Effect.Effect<Service[k], never, Id>; };
|
|
60
|
+
} & { [k_1 in keyof Service as Service[k_1] extends (...args: Array<any>) => any ? k_1 : never]: Service[k_1] extends (...args: infer Args) => Effect.Effect<infer A_1, infer E_2, infer R_2> ? (...args: Args) => Effect.Effect<A_1, E_2, R_2 | Id> : Service[k_1] extends (...args: infer Args_1) => infer A_2 ? (...args: Args_1) => Effect.Effect<A_2, never, Id> : never; };
|
|
45
61
|
export declare function TagClassId<const Key extends string>(key: Key): <Id, ServiceImpl>() => {
|
|
46
62
|
new (service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>;
|
|
47
63
|
toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>;
|
|
48
64
|
toLayerScoped: <E_1, R_1>(eff: Effect<ServiceImpl, E_1, R_1>) => Layer<Id, E_1, Exclude<R_1, Scope.Scope>>;
|
|
49
65
|
wrap: (service: ServiceImpl) => Id;
|
|
50
|
-
} & Context.Tag<Id, Id
|
|
66
|
+
} & Context.Tag<Id, Id> & {
|
|
67
|
+
$: { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args: any[]) => any ? never : k]: ServiceImpl[k] extends Effect.Effect<infer A, infer E_2, infer R_2> ? Effect.Effect<A, E_2, R_2 | Id> : Effect.Effect<ServiceImpl[k], never, Id>; };
|
|
68
|
+
} & { [k_1 in keyof ServiceImpl as ServiceImpl[k_1] extends (...args: any[]) => any ? k_1 : never]: ServiceImpl[k_1] extends (...args: infer Args) => Effect.Effect<infer A_1, infer E_3, infer R_3> ? (...args: Args) => Effect.Effect<A_1, E_3, R_3 | Id> : ServiceImpl[k_1] extends (...args: infer Args_1) => infer A_2 ? (...args: Args_1) => Effect.Effect<A_2, never, Id> : never; };
|
|
51
69
|
export declare const TagClassMakeId: <ServiceImpl, R, E, const Key extends string>(key: Key, make: Effect<ServiceImpl, E, R>) => <Id>() => {
|
|
52
70
|
new (service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>;
|
|
53
71
|
toLayer: {
|
|
@@ -60,5 +78,7 @@ export declare const TagClassMakeId: <ServiceImpl, R, E, const Key extends strin
|
|
|
60
78
|
};
|
|
61
79
|
wrap: (service: ServiceImpl) => Id;
|
|
62
80
|
make: Effect<Id, E, R>;
|
|
63
|
-
} & Context.Tag<Id, Id
|
|
81
|
+
} & Context.Tag<Id, Id> & {
|
|
82
|
+
$: { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args: Array<any>) => any ? never : k]: ServiceImpl[k] extends Effect.Effect<infer A, infer E_3, infer R_3> ? Effect.Effect<A, E_3, R_3 | Id> : Effect.Effect<ServiceImpl[k], never, Id>; };
|
|
83
|
+
} & { [k_1 in keyof ServiceImpl as ServiceImpl[k_1] extends (...args: Array<any>) => any ? k_1 : never]: ServiceImpl[k_1] extends (...args: infer Args) => Effect.Effect<infer A_1, infer E_4, infer R_4> ? (...args: Args) => Effect.Effect<A_1, E_4, R_4 | Id> : ServiceImpl[k_1] extends (...args: infer Args_1) => infer A_2 ? (...args: Args_1) => Effect.Effect<A_2, never, Id> : never; };
|
|
64
84
|
//# sourceMappingURL=service.d.ts.map
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAEzD,eAAO,MAAM,UAAU,eAAW,CAAA;AAClC,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAA;AAE1C,8BAAsB,oBAAoB,CAAC,UAAU,SAAS,MAAM,GAAG,EAAE,gBAAgB;IACvF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE;QACxC,QAAQ,EAAE,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,gBAAgB,KAAK,gBAAgB;KAC1E,CAAA;CACF;AAED;;GAEG;AACH,8BAAsB,aAAa,CAAC,UAAU,CAAE,SAAQ,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC;CAAG;AAEnG;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,KAE/E;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,KAErG;AAKD,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,8DAuB9E;AAED,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/service.js
CHANGED
|
@@ -52,6 +52,26 @@ export function assignTag(key, creationError) {
|
|
|
52
52
|
return t;
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
+
export const proxify = (TagClass) => () => {
|
|
56
|
+
// @ts-expect-error abc
|
|
57
|
+
TagClass["$"] = new Proxy({}, {
|
|
58
|
+
get(_target, prop, _receiver) {
|
|
59
|
+
// @ts-expect-error abc
|
|
60
|
+
return Effect.andThen(TagClass, (s) => s[prop]);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const done = new Proxy(TagClass, {
|
|
64
|
+
get(_target, prop, _receiver) {
|
|
65
|
+
if (prop in TagClass) {
|
|
66
|
+
// @ts-expect-error abc
|
|
67
|
+
return TagClass[prop];
|
|
68
|
+
}
|
|
69
|
+
// @ts-expect-error abc
|
|
70
|
+
return (...args) => Effect.andThen(TagClass, (s) => s[prop](...args));
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return done;
|
|
74
|
+
};
|
|
55
75
|
export const TagMake = (key, make) => () => {
|
|
56
76
|
const limit = Error.stackTraceLimit;
|
|
57
77
|
Error.stackTraceLimit = 2;
|
|
@@ -65,7 +85,7 @@ export const TagMake = (key, make) => () => {
|
|
|
65
85
|
return Layer.scoped(this, make);
|
|
66
86
|
};
|
|
67
87
|
};
|
|
68
|
-
return assignTag(key, creationError)(c);
|
|
88
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
69
89
|
};
|
|
70
90
|
export function TagClass(key) {
|
|
71
91
|
const limit = Error.stackTraceLimit;
|
|
@@ -87,7 +107,7 @@ export function TagClass(key) {
|
|
|
87
107
|
return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
|
|
88
108
|
}
|
|
89
109
|
};
|
|
90
|
-
return assignTag(key, creationError)(c);
|
|
110
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
91
111
|
}
|
|
92
112
|
export const TagClassMake = (make, key) => () => {
|
|
93
113
|
const limit = Error.stackTraceLimit;
|
|
@@ -111,7 +131,7 @@ export const TagClassMake = (make, key) => () => {
|
|
|
111
131
|
return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
|
|
112
132
|
}
|
|
113
133
|
};
|
|
114
|
-
return assignTag(key, creationError)(c);
|
|
134
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
115
135
|
};
|
|
116
136
|
export function TagClassId(key) {
|
|
117
137
|
return () => {
|
|
@@ -121,7 +141,8 @@ export function TagClassId(key) {
|
|
|
121
141
|
Error.stackTraceLimit = limit;
|
|
122
142
|
const c = class {
|
|
123
143
|
constructor(service) {
|
|
124
|
-
|
|
144
|
+
// this addresses prototype inheritance, but the trade-off is that the object won't be `instanceof` the Service Id class, so it's really just used as an interface only.
|
|
145
|
+
return Object.assign(Object.create(service), service);
|
|
125
146
|
}
|
|
126
147
|
static wrap = (service) => new this(service);
|
|
127
148
|
static toLayer = (eff) => {
|
|
@@ -131,7 +152,7 @@ export function TagClassId(key) {
|
|
|
131
152
|
return Layer.scoped(this, Effect.map(eff, (_) => new this(_)));
|
|
132
153
|
};
|
|
133
154
|
};
|
|
134
|
-
return assignTag(key, creationError)(c);
|
|
155
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
135
156
|
};
|
|
136
157
|
}
|
|
137
158
|
export const TagClassMakeId = (key, make) => () => {
|
|
@@ -141,7 +162,8 @@ export const TagClassMakeId = (key, make) => () => {
|
|
|
141
162
|
Error.stackTraceLimit = limit;
|
|
142
163
|
const c = class {
|
|
143
164
|
constructor(service) {
|
|
144
|
-
|
|
165
|
+
// this addresses prototype inheritance, but the trade-off is that the object won't be `instanceof` the Service Id class, so it's really just used as an interface only.
|
|
166
|
+
return Object.assign(Object.create(service), service);
|
|
145
167
|
}
|
|
146
168
|
static wrap = (service) => new this(service);
|
|
147
169
|
static make = Effect.andThen(make, (_) => new this(_));
|
|
@@ -153,6 +175,6 @@ export const TagClassMakeId = (key, make) => () => {
|
|
|
153
175
|
return arg ? Layer.scoped(this, arg) : Layer.scoped(this, this.make);
|
|
154
176
|
};
|
|
155
177
|
};
|
|
156
|
-
return assignTag(key, creationError)(c);
|
|
178
|
+
return proxify(assignTag(key, creationError)(c))();
|
|
157
179
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQ7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUdsQyxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixhQUEwQixTQUFRLG9CQUF3QztDQUFHO0FBRW5HOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBK0IsQ0FBc0I7SUFDOUUsT0FBTyxDQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFzQyxDQUFvQixFQUFFLENBQXNCO0lBQ3BHLE9BQU8sQ0FBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFBO0FBRS9DLE1BQU0sVUFBVSxTQUFTLENBQW1CLEdBQVksRUFBRSxhQUFxQjtJQUM3RSxPQUFPLENBQW1CLEdBQU0sRUFBZ0MsRUFBRTtRQUNoRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFjLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzlELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQTtRQUNoQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQTtZQUM1QixN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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.179.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"uuid": "^9.0.1",
|
|
15
15
|
"validator": "^13.11.0",
|
|
16
16
|
"@effect-app/core": "0.149.0",
|
|
17
|
-
"@effect-app/
|
|
18
|
-
"@effect-app/
|
|
17
|
+
"@effect-app/fluent-extensions": "0.142.0",
|
|
18
|
+
"@effect-app/schema": "0.201.2"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@babel/cli": "^7.23.9",
|
package/src/service.ts
CHANGED
|
@@ -65,6 +65,47 @@ export function assignTag<Id, Service = Id>(key?: string, creationError?: Error)
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
export type ServiceAcessorShape<Self, Shape> =
|
|
69
|
+
& {
|
|
70
|
+
$: {
|
|
71
|
+
[k in keyof Shape as Shape[k] extends (...args: Array<any>) => any ? never : k]: Shape[k] extends
|
|
72
|
+
Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, Self | R>
|
|
73
|
+
: Effect.Effect<Shape[k], never, Self>
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
& {
|
|
77
|
+
[k in keyof Shape as Shape[k] extends (...args: Array<any>) => any ? k : never]: Shape[k] extends
|
|
78
|
+
(...args: infer Args) => Effect.Effect<infer A, infer E, infer R>
|
|
79
|
+
? (...args: Args) => Effect.Effect<A, E, Self | R>
|
|
80
|
+
: Shape[k] extends (...args: infer Args) => infer A ? (...args: Args) => Effect.Effect<A, never, Self>
|
|
81
|
+
: never
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export const proxify = <T extends object>(TagClass: T) =>
|
|
85
|
+
<Self, Shape>():
|
|
86
|
+
& T
|
|
87
|
+
& ServiceAcessorShape<Self, Shape> =>
|
|
88
|
+
{
|
|
89
|
+
// @ts-expect-error abc
|
|
90
|
+
TagClass["$"] = new Proxy({}, {
|
|
91
|
+
get(_target: any, prop: any, _receiver) {
|
|
92
|
+
// @ts-expect-error abc
|
|
93
|
+
return Effect.andThen(TagClass, (s) => s[prop])
|
|
94
|
+
}
|
|
95
|
+
})
|
|
96
|
+
const done = new Proxy(TagClass, {
|
|
97
|
+
get(_target: any, prop: any, _receiver) {
|
|
98
|
+
if (prop in TagClass) {
|
|
99
|
+
// @ts-expect-error abc
|
|
100
|
+
return TagClass[prop]
|
|
101
|
+
}
|
|
102
|
+
// @ts-expect-error abc
|
|
103
|
+
return (...args: Array<any>) => Effect.andThen(TagClass, (s: any) => s[prop](...args))
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
return done
|
|
107
|
+
}
|
|
108
|
+
|
|
68
109
|
export const TagMake = <ServiceImpl, R, E, const Key extends string>(
|
|
69
110
|
key: Key,
|
|
70
111
|
make: Effect<ServiceImpl, E, R>
|
|
@@ -89,7 +130,7 @@ export const TagMake = <ServiceImpl, R, E, const Key extends string>(
|
|
|
89
130
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
90
131
|
} as any
|
|
91
132
|
|
|
92
|
-
return assignTag<Id, ServiceImpl>(key, creationError)(c)
|
|
133
|
+
return proxify(assignTag<Id, ServiceImpl>(key, creationError)(c))<Id, ServiceImpl>()
|
|
93
134
|
}
|
|
94
135
|
|
|
95
136
|
export function TagClass<Id, ServiceImpl, Service = Id>(key?: string) {
|
|
@@ -117,7 +158,7 @@ export function TagClass<Id, ServiceImpl, Service = Id>(key?: string) {
|
|
|
117
158
|
}
|
|
118
159
|
} as any
|
|
119
160
|
|
|
120
|
-
return assignTag<Id, Service>(key, creationError)(c)
|
|
161
|
+
return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, Service>()
|
|
121
162
|
}
|
|
122
163
|
|
|
123
164
|
export const TagClassMake = <ServiceImpl, R, E>(
|
|
@@ -155,7 +196,7 @@ export const TagClassMake = <ServiceImpl, R, E>(
|
|
|
155
196
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
156
197
|
} as any
|
|
157
198
|
|
|
158
|
-
return assignTag<Id, Service>(key, creationError)(c)
|
|
199
|
+
return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, Service>()
|
|
159
200
|
}
|
|
160
201
|
|
|
161
202
|
export function TagClassId<const Key extends string>(key: Key) {
|
|
@@ -171,7 +212,8 @@ export function TagClassId<const Key extends string>(key: Key) {
|
|
|
171
212
|
wrap: (service: ServiceImpl) => Id
|
|
172
213
|
} = class {
|
|
173
214
|
constructor(service: ServiceImpl) {
|
|
174
|
-
|
|
215
|
+
// this addresses prototype inheritance, but the trade-off is that the object won't be `instanceof` the Service Id class, so it's really just used as an interface only.
|
|
216
|
+
return Object.assign(Object.create(service as any), service)
|
|
175
217
|
}
|
|
176
218
|
static wrap = (service: ServiceImpl) => new this(service)
|
|
177
219
|
static toLayer = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
|
|
@@ -182,7 +224,7 @@ export function TagClassId<const Key extends string>(key: Key) {
|
|
|
182
224
|
}
|
|
183
225
|
} as any
|
|
184
226
|
|
|
185
|
-
return assignTag<Id, Id>(key, creationError)(c)
|
|
227
|
+
return proxify(assignTag<Id, Id>(key, creationError)(c))<Id, ServiceImpl>()
|
|
186
228
|
}
|
|
187
229
|
}
|
|
188
230
|
|
|
@@ -207,7 +249,8 @@ export const TagClassMakeId = <ServiceImpl, R, E, const Key extends string>(
|
|
|
207
249
|
make: Effect<Id, E, R>
|
|
208
250
|
} = class {
|
|
209
251
|
constructor(service: ServiceImpl) {
|
|
210
|
-
|
|
252
|
+
// this addresses prototype inheritance, but the trade-off is that the object won't be `instanceof` the Service Id class, so it's really just used as an interface only.
|
|
253
|
+
return Object.assign(Object.create(service as any), service)
|
|
211
254
|
}
|
|
212
255
|
|
|
213
256
|
static wrap = (service: ServiceImpl) => new this(service)
|
|
@@ -223,5 +266,5 @@ export const TagClassMakeId = <ServiceImpl, R, E, const Key extends string>(
|
|
|
223
266
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
224
267
|
} as any
|
|
225
268
|
|
|
226
|
-
return assignTag<Id, Id>(key, creationError)(c)
|
|
269
|
+
return proxify(assignTag<Id, Id>(key, creationError)(c))<Id, ServiceImpl>()
|
|
227
270
|
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// vitest.config.ts
|
|
2
|
-
import { defineConfig } from "file:///Users/patrickroza/Projects/Personal/effect-ts-app/libs/node_modules/.pnpm/vite@4.0.0_@types+node@18.11.12/node_modules/vite/dist/node/index.js";
|
|
3
|
-
|
|
4
|
-
// ../../vite.config.base.ts
|
|
5
|
-
import { tsPlugin } from "file:///Users/patrickroza/Projects/Personal/effect-ts-app/libs/packages/compiler/dist/vitePlugin.js";
|
|
6
|
-
function makeConfig() {
|
|
7
|
-
return {
|
|
8
|
-
plugins: [tsPlugin({})],
|
|
9
|
-
test: {
|
|
10
|
-
include: ["./_src/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
|
|
11
|
-
exclude: ["./_test/**/*"],
|
|
12
|
-
reporters: "verbose",
|
|
13
|
-
globals: true
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// vitest.config.ts
|
|
19
|
-
var vitest_config_default = defineConfig(makeConfig());
|
|
20
|
-
export {
|
|
21
|
-
vitest_config_default as default
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZXN0LmNvbmZpZy50cyIsICIuLi8uLi92aXRlLmNvbmZpZy5iYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlicy9wYWNrYWdlcy9ib2lsZXJwbGF0ZS1wcmVsdWRlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvUHJvamVjdHMvUGVyc29uYWwvZWZmZWN0LXRzLWFwcC9saWJzL3BhY2thZ2VzL2JvaWxlcnBsYXRlLXByZWx1ZGUvdml0ZXN0LmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvcGF0cmlja3JvemEvUHJvamVjdHMvUGVyc29uYWwvZWZmZWN0LXRzLWFwcC9saWJzL3BhY2thZ2VzL2JvaWxlcnBsYXRlLXByZWx1ZGUvdml0ZXN0LmNvbmZpZy50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBtYWtlQ29uZmlnIGZyb20gXCIuLi8uLi92aXRlLmNvbmZpZy5iYXNlXCJcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKG1ha2VDb25maWcoKSlcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlic1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlicy92aXRlLmNvbmZpZy5iYXNlLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9Qcm9qZWN0cy9QZXJzb25hbC9lZmZlY3QtdHMtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IHRzUGx1Z2luIH0gZnJvbSBcIkBlZmZlY3QtdHMtYXBwL2NvbXBpbGVyL3ZpdGVQbHVnaW5cIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFrZUNvbmZpZygpIHtcbiAgcmV0dXJuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgIHBsdWdpbnM6IFt0c1BsdWdpbih7fSldLFxuICAgIHRlc3Q6IHtcbiAgICAgIGluY2x1ZGU6IFtcIi4vX3NyYy8qKi8qLnRlc3Que2pzLG1qcyxjanMsdHMsbXRzLGN0cyxqc3gsdHN4fVwiXSxcbiAgICAgIGV4Y2x1ZGU6IFtcIi4vX3Rlc3QvKiovKlwiXSxcbiAgICAgIHJlcG9ydGVyczogXCJ2ZXJib3NlXCIsXG4gICAgICBnbG9iYWxzOiB0cnVlXG4gICAgfSxcbiAgICAvLyByZXNvbHZlOiB7XG4gICAgLy8gICBhbGlhczoge1xuICAgIC8vICAgICBcIkBlZmZlY3QvaW8vdGVzdFwiOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcIi90ZXN0XCIpLFxuICAgIC8vICAgICBcIkBlZmZlY3QvaW9cIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCIvc3JjXCIpXG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyxvQkFBb0I7OztBQ0E3QixTQUFTLGdCQUFnQjtBQUNWLFNBQVIsYUFBOEI7QUFDbkMsU0FBTztBQUFBLElBRUwsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUN0QixNQUFNO0FBQUEsTUFDSixTQUFTLENBQUMsa0RBQWtEO0FBQUEsTUFDNUQsU0FBUyxDQUFDLGNBQWM7QUFBQSxNQUN4QixXQUFXO0FBQUEsTUFDWCxTQUFTO0FBQUEsSUFDWDtBQUFBLEVBT0Y7QUFDRjs7O0FEZkEsSUFBTyx3QkFBUSxhQUFhLFdBQVcsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
|