effect-app 0.182.0 → 0.183.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 +97 -76
- package/_cjs/service.cjs.map +1 -1
- package/dist/service.d.ts +12 -36
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +97 -73
- package/dist/services/FiberBag.d.ts +19 -35
- package/dist/services/FiberBag.d.ts.map +1 -1
- package/package.json +4 -5
- package/src/service.ts +151 -139
- package/{dist → test/dist}/schema.test.d.ts.map +1 -1
- package/{src → test}/schema.test.ts +1 -0
- package/tsconfig.json +4 -16
- package/tsconfig.json.bak +9 -40
- package/tsconfig.src.json +47 -0
- package/tsconfig.test.json +32 -0
- package/.prettierignore +0 -6
- package/_cjs/schema.test.cjs +0 -7
- package/_cjs/schema.test.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
package/_cjs/service.cjs
CHANGED
|
@@ -4,9 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ServiceTagged = exports.ServiceTag = exports.PhantomTypeParameter = void 0;
|
|
7
|
-
exports.TagClass = TagClass;
|
|
8
7
|
exports.TagClassId = TagClassId;
|
|
9
|
-
exports.
|
|
8
|
+
exports.TagClassMakeId = void 0;
|
|
10
9
|
exports.assignTag = assignTag;
|
|
11
10
|
exports.make = make;
|
|
12
11
|
exports.makeService = makeService;
|
|
@@ -96,70 +95,92 @@ const proxify = TagClass => () => {
|
|
|
96
95
|
});
|
|
97
96
|
return done;
|
|
98
97
|
};
|
|
98
|
+
// export const TagMake = <ServiceImpl, R, E, const Key extends string>(
|
|
99
|
+
// key: Key,
|
|
100
|
+
// make: Effect<ServiceImpl, E, R>
|
|
101
|
+
// ) =>
|
|
102
|
+
// <Id>() => {
|
|
103
|
+
// const limit = Error.stackTraceLimit
|
|
104
|
+
// Error.stackTraceLimit = 2
|
|
105
|
+
// const creationError = new Error()
|
|
106
|
+
// Error.stackTraceLimit = limit
|
|
107
|
+
// const c: {
|
|
108
|
+
// new(): Context.TagClassShape<Key, ServiceImpl>
|
|
109
|
+
// toLayer: () => Layer<Id, E, R>
|
|
110
|
+
// toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>
|
|
111
|
+
// } = class {
|
|
112
|
+
// static toLayer = () => {
|
|
113
|
+
// return Layer.effect(this as any, make)
|
|
114
|
+
// }
|
|
115
|
+
// static toLayerScoped = () => {
|
|
116
|
+
// return Layer.scoped(this as any, make)
|
|
117
|
+
// }
|
|
118
|
+
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
119
|
+
// } as any
|
|
120
|
+
// return proxify(assignTag<Id, ServiceImpl>(key, creationError)(c))<Id, ServiceImpl>()
|
|
121
|
+
// }
|
|
122
|
+
// export function TagClass<Id, ServiceImpl, Service = Id>(key?: string) {
|
|
123
|
+
// const limit = Error.stackTraceLimit
|
|
124
|
+
// Error.stackTraceLimit = 2
|
|
125
|
+
// const creationError = new Error()
|
|
126
|
+
// Error.stackTraceLimit = limit
|
|
127
|
+
// const c: (abstract new(impl: ServiceImpl) => Readonly<ServiceImpl>) & {
|
|
128
|
+
// toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>
|
|
129
|
+
// toLayerScoped: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, Exclude<R, Scope>>
|
|
130
|
+
// } = class {
|
|
131
|
+
// constructor(service: ServiceImpl) {
|
|
132
|
+
// Object.assign(this, service)
|
|
133
|
+
// }
|
|
134
|
+
// static _key?: string
|
|
135
|
+
// static toLayer = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
|
|
136
|
+
// return Layer.effect(this as any, eff)
|
|
137
|
+
// }
|
|
138
|
+
// static toLayerScoped = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
|
|
139
|
+
// return Layer.scoped(this as any, eff)
|
|
140
|
+
// }
|
|
141
|
+
// static get key() {
|
|
142
|
+
// return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
|
|
143
|
+
// }
|
|
144
|
+
// } as any
|
|
145
|
+
// return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, ServiceImpl>()
|
|
146
|
+
// }
|
|
147
|
+
// export const TagClassMake = <ServiceImpl, R, E>(
|
|
148
|
+
// make: Effect<ServiceImpl, E, R>,
|
|
149
|
+
// key?: string
|
|
150
|
+
// ) =>
|
|
151
|
+
// <Id, Service = Id>() => {
|
|
152
|
+
// const limit = Error.stackTraceLimit
|
|
153
|
+
// Error.stackTraceLimit = 2
|
|
154
|
+
// const creationError = new Error()
|
|
155
|
+
// Error.stackTraceLimit = limit
|
|
156
|
+
// const c: (abstract new(impl: ServiceImpl) => Readonly<ServiceImpl>) & {
|
|
157
|
+
// toLayer: { (): Layer<Id, E, R>; <E, R>(eff: Effect<ServiceImpl, E, R>): Layer<Id, E, R> }
|
|
158
|
+
// toLayerScoped: {
|
|
159
|
+
// (): Layer<Id, E, Exclude<R, Scope>>
|
|
160
|
+
// <E, R>(eff: Effect<ServiceImpl, E, R>): Layer<Id, E, Exclude<R, Scope>>
|
|
161
|
+
// }
|
|
162
|
+
// make: Effect<Id, E, R>
|
|
163
|
+
// } = class {
|
|
164
|
+
// constructor(service: ServiceImpl) {
|
|
165
|
+
// Object.assign(this, service)
|
|
166
|
+
// }
|
|
167
|
+
// static _key: string
|
|
168
|
+
// static make = make
|
|
169
|
+
// // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
|
|
170
|
+
// static toLayer = (arg?: any) => {
|
|
171
|
+
// return Layer.effect(this as any, arg ?? this.make)
|
|
172
|
+
// }
|
|
173
|
+
// static toLayerScoped = (arg?: any) => {
|
|
174
|
+
// return Layer.scoped(this as any, arg ?? this.make)
|
|
175
|
+
// }
|
|
176
|
+
// static get key() {
|
|
177
|
+
// return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
|
|
178
|
+
// }
|
|
179
|
+
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
180
|
+
// } as any
|
|
181
|
+
// return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, ServiceImpl>()
|
|
182
|
+
// }
|
|
99
183
|
exports.proxify = proxify;
|
|
100
|
-
const TagMake = (key, make) => () => {
|
|
101
|
-
const limit = Error.stackTraceLimit;
|
|
102
|
-
Error.stackTraceLimit = 2;
|
|
103
|
-
const creationError = new Error();
|
|
104
|
-
Error.stackTraceLimit = limit;
|
|
105
|
-
const c = class {
|
|
106
|
-
static toLayer = () => {
|
|
107
|
-
return _core.Layer.effect(this, make);
|
|
108
|
-
};
|
|
109
|
-
static toLayerScoped = () => {
|
|
110
|
-
return _core.Layer.scoped(this, make);
|
|
111
|
-
};
|
|
112
|
-
};
|
|
113
|
-
return proxify(assignTag(key, creationError)(c))();
|
|
114
|
-
};
|
|
115
|
-
exports.TagMake = TagMake;
|
|
116
|
-
function TagClass(key) {
|
|
117
|
-
const limit = Error.stackTraceLimit;
|
|
118
|
-
Error.stackTraceLimit = 2;
|
|
119
|
-
const creationError = new Error();
|
|
120
|
-
Error.stackTraceLimit = limit;
|
|
121
|
-
const c = class {
|
|
122
|
-
constructor(service) {
|
|
123
|
-
Object.assign(this, service);
|
|
124
|
-
}
|
|
125
|
-
static _key;
|
|
126
|
-
static toLayer = eff => {
|
|
127
|
-
return _core.Layer.effect(this, _core.Effect.map(eff, _ => new this(_)));
|
|
128
|
-
};
|
|
129
|
-
static toLayerScoped = eff => {
|
|
130
|
-
return _core.Layer.scoped(this, _core.Effect.map(eff, _ => new this(_)));
|
|
131
|
-
};
|
|
132
|
-
static get key() {
|
|
133
|
-
return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
return proxify(assignTag(key, creationError)(c))();
|
|
137
|
-
}
|
|
138
|
-
const TagClassMake = (make, key) => () => {
|
|
139
|
-
const limit = Error.stackTraceLimit;
|
|
140
|
-
Error.stackTraceLimit = 2;
|
|
141
|
-
const creationError = new Error();
|
|
142
|
-
Error.stackTraceLimit = limit;
|
|
143
|
-
const c = class {
|
|
144
|
-
constructor(service) {
|
|
145
|
-
Object.assign(this, service);
|
|
146
|
-
}
|
|
147
|
-
static _key;
|
|
148
|
-
static make = _core.Effect.andThen(make, _ => new this(_));
|
|
149
|
-
// works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
|
|
150
|
-
static toLayer = () => {
|
|
151
|
-
return _core.Layer.effect(this, this.make);
|
|
152
|
-
};
|
|
153
|
-
static toLayerScoped = () => {
|
|
154
|
-
return _core.Layer.scoped(this, this.make);
|
|
155
|
-
};
|
|
156
|
-
static get key() {
|
|
157
|
-
return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
return proxify(assignTag(key, creationError)(c))();
|
|
161
|
-
};
|
|
162
|
-
exports.TagClassMake = TagClassMake;
|
|
163
184
|
function TagClassId(key) {
|
|
164
185
|
return () => {
|
|
165
186
|
const limit = Error.stackTraceLimit;
|
|
@@ -168,15 +189,15 @@ function TagClassId(key) {
|
|
|
168
189
|
Error.stackTraceLimit = limit;
|
|
169
190
|
const c = class {
|
|
170
191
|
constructor(service) {
|
|
171
|
-
//
|
|
172
|
-
|
|
192
|
+
// TODO: instead, wrap the service, and direct calls?
|
|
193
|
+
Object.assign(this, service);
|
|
173
194
|
}
|
|
174
|
-
static
|
|
195
|
+
static of = service => service;
|
|
175
196
|
static toLayer = eff => {
|
|
176
|
-
return _core.Layer.effect(this,
|
|
197
|
+
return _core.Layer.effect(this, eff);
|
|
177
198
|
};
|
|
178
199
|
static toLayerScoped = eff => {
|
|
179
|
-
return _core.Layer.scoped(this,
|
|
200
|
+
return _core.Layer.scoped(this, eff);
|
|
180
201
|
};
|
|
181
202
|
};
|
|
182
203
|
return proxify(assignTag(key, creationError)(c))();
|
|
@@ -189,17 +210,17 @@ const TagClassMakeId = (key, make) => () => {
|
|
|
189
210
|
Error.stackTraceLimit = limit;
|
|
190
211
|
const c = class {
|
|
191
212
|
constructor(service) {
|
|
192
|
-
//
|
|
193
|
-
|
|
213
|
+
// TODO: instead, wrap the service, and direct calls?
|
|
214
|
+
Object.assign(this, service);
|
|
194
215
|
}
|
|
195
|
-
static
|
|
196
|
-
static make =
|
|
216
|
+
static of = service => service;
|
|
217
|
+
static make = make;
|
|
197
218
|
// works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
|
|
198
219
|
static toLayer = arg => {
|
|
199
|
-
return
|
|
220
|
+
return _core.Layer.effect(this, arg ?? this.make);
|
|
200
221
|
};
|
|
201
222
|
static toLayerScoped = arg => {
|
|
202
|
-
return
|
|
223
|
+
return _core.Layer.scoped(this, arg ?? this.make);
|
|
203
224
|
};
|
|
204
225
|
};
|
|
205
226
|
return proxify(assignTag(key, creationError)(c))();
|
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","proxify","TagClass","cache","Map","done","Proxy","_target","prop","_receiver","body","Effect","andThen","has","fn","args","s","cn","setPrototypeOf","set","
|
|
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","cache","Map","done","Proxy","_target","prop","_receiver","body","Effect","andThen","has","fn","args","s","cn","setPrototypeOf","set","TagClassId","c","constructor","service","of","toLayer","eff","Layer","effect","toLayerScoped","scoped","TagClassMakeId","arg"],"sources":["../src/service.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/dist/service.d.ts
CHANGED
|
@@ -27,55 +27,31 @@ export declare function makeService<T extends ServiceTagged<any>>(_: Omit<T, Ser
|
|
|
27
27
|
*/
|
|
28
28
|
export declare function make<T extends ServiceTagged<any>, I = T>(_: Context.Tag<I, T>, t: Omit<T, ServiceTag>): T;
|
|
29
29
|
export declare function assignTag<Id, Service = Id>(key?: string, creationError?: Error): <S extends object>(cls: S) => S & Context.Tag<Id, Service>;
|
|
30
|
-
export type ServiceAcessorShape<Self, Type> = {
|
|
30
|
+
export type ServiceAcessorShape<Self, Type> = (Type extends Record<PropertyKey, any> ? {
|
|
31
31
|
[k in keyof Type as Type[k] extends ((...args: [...infer Args]) => infer Ret) ? ((...args: Readonly<Args>) => Ret) extends Type[k] ? k : never : k]: Type[k] extends (...args: [...infer Args]) => Effect<infer A, infer E, infer R> ? (...args: Readonly<Args>) => Effect<A, E, Self | R> : Type[k] extends (...args: [...infer Args]) => infer A ? (...args: Readonly<Args>) => Effect<A, never, Self> : Type[k] extends Effect<infer A, infer E, infer R> ? Effect<A, E, Self | R> : Effect<Type[k], never, Self>;
|
|
32
|
-
} & {
|
|
32
|
+
} : {}) & {
|
|
33
33
|
use: <X>(body: (_: Type) => X) => X extends Effect<infer A, infer E, infer R> ? Effect<A, E, R | Self> : Effect<X, never, Self>;
|
|
34
34
|
};
|
|
35
35
|
export declare const proxify: <T extends object>(TagClass: T) => <Self, Shape>() => T & ServiceAcessorShape<Self, Shape>;
|
|
36
|
-
export declare
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
} & Context.Tag<Id,
|
|
41
|
-
use: <X>(body: (_: ServiceImpl) => X) => X extends Effect<infer A_3, infer E_3, infer R_3> ? Effect<A_3, E_3, R_3 | Id> : Effect<X, never, Id>;
|
|
42
|
-
};
|
|
43
|
-
export declare function TagClass<Id, ServiceImpl, Service = Id>(key?: string): {
|
|
44
|
-
new (service: ServiceImpl): Readonly<ServiceImpl>;
|
|
45
|
-
toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>;
|
|
46
|
-
toLayerScoped: <E_1, R_1>(eff: Effect<ServiceImpl, E_1, R_1>) => Layer<Id, E_1, Exclude<R_1, Scope.Scope>>;
|
|
47
|
-
} & Context.Tag<Id, Service> & { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args_0: infer Args) => infer Ret ? ((...args: Readonly<Args>) => Ret) extends ServiceImpl[k] ? k : never : k]: ServiceImpl[k] extends (...args_0: infer Args_1) => Effect<infer A, infer E_2, infer R_2> ? (...args: Readonly<Args_1>) => Effect<A, E_2, R_2 | Id> : ServiceImpl[k] extends (...args_0: infer Args_2) => infer A_1 ? (...args: Readonly<Args_2>) => Effect<A_1, never, Id> : ServiceImpl[k] extends Effect<infer A_2, infer E_3, infer R_3> ? Effect<A_2, E_3, R_3 | Id> : Effect<ServiceImpl[k], never, Id>; } & {
|
|
48
|
-
use: <X>(body: (_: ServiceImpl) => X) => X extends Effect<infer A_3, infer E_4, infer R_4> ? Effect<A_3, E_4, R_4 | Id> : Effect<X, never, Id>;
|
|
49
|
-
};
|
|
50
|
-
export declare const TagClassMake: <ServiceImpl, R, E>(make: Effect<ServiceImpl, E, R>, key?: string) => <Id, Service = Id>() => {
|
|
51
|
-
new (service: ServiceImpl): Readonly<ServiceImpl>;
|
|
52
|
-
toLayer: () => Layer<Id, E, R>;
|
|
53
|
-
toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>;
|
|
54
|
-
make: Effect<Id, E, R>;
|
|
55
|
-
} & Context.Tag<Id, Service> & { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args_0: infer Args) => infer Ret ? ((...args: Readonly<Args>) => Ret) extends ServiceImpl[k] ? k : never : k]: ServiceImpl[k] extends (...args_0: infer Args_1) => Effect<infer A, infer E_1, infer R_1> ? (...args: Readonly<Args_1>) => Effect<A, E_1, R_1 | Id> : ServiceImpl[k] extends (...args_0: infer Args_2) => infer A_1 ? (...args: Readonly<Args_2>) => Effect<A_1, never, Id> : ServiceImpl[k] extends Effect<infer A_2, infer E_2, infer R_2> ? Effect<A_2, E_2, R_2 | Id> : Effect<ServiceImpl[k], never, Id>; } & {
|
|
56
|
-
use: <X>(body: (_: ServiceImpl) => X) => X extends Effect<infer A_3, infer E_3, infer R_3> ? Effect<A_3, E_3, R_3 | Id> : Effect<X, never, Id>;
|
|
57
|
-
};
|
|
58
|
-
export declare function TagClassId<const Key extends string>(key: Key): <Id, ServiceImpl>() => {
|
|
59
|
-
new (service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>;
|
|
60
|
-
toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>;
|
|
61
|
-
toLayerScoped: <E_1, R_1>(eff: Effect<ServiceImpl, E_1, R_1>) => Layer<Id, E_1, Exclude<R_1, Scope.Scope>>;
|
|
62
|
-
wrap: (service: ServiceImpl) => Id;
|
|
63
|
-
} & Context.Tag<Id, Id> & { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args_0: infer Args) => infer Ret ? ((...args: Readonly<Args>) => Ret) extends ServiceImpl[k] ? k : never : k]: ServiceImpl[k] extends (...args_0: infer Args_1) => Effect<infer A, infer E_2, infer R_2> ? (...args: Readonly<Args_1>) => Effect<A, E_2, R_2 | Id> : ServiceImpl[k] extends (...args_0: infer Args_2) => infer A_1 ? (...args: Readonly<Args_2>) => Effect<A_1, never, Id> : ServiceImpl[k] extends Effect<infer A_2, infer E_3, infer R_3> ? Effect<A_2, E_3, R_3 | Id> : Effect<ServiceImpl[k], never, Id>; } & {
|
|
36
|
+
export declare function TagClassId<const Key extends string>(key: Key): <Id, ServiceImpl>() => (abstract new (service: ServiceImpl) => Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>) & {
|
|
37
|
+
toLayer: <E, R>(eff: Effect<Omit<Id, keyof Context.TagClassShape<any, any>>, E, R>) => Layer<Id, E, R>;
|
|
38
|
+
toLayerScoped: <E_1, R_1>(eff: Effect<Omit<Id, keyof Context.TagClassShape<any, any>>, E_1, R_1>) => Layer<Id, E_1, Exclude<R_1, Scope.Scope>>;
|
|
39
|
+
of: (service: Omit<Id, keyof Context.TagClassShape<any, any>>) => Id;
|
|
40
|
+
} & Context.Tag<Id, Id> & (ServiceImpl extends Record<PropertyKey, any> ? { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args_0: infer Args) => infer Ret ? ((...args: Readonly<Args>) => Ret) extends ServiceImpl[k] ? k : never : k]: ServiceImpl[k] extends (...args_0: infer Args_1) => Effect<infer A, infer E_2, infer R_2> ? (...args: Readonly<Args_1>) => Effect<A, E_2, R_2 | Id> : ServiceImpl[k] extends (...args_0: infer Args_2) => infer A_1 ? (...args: Readonly<Args_2>) => Effect<A_1, never, Id> : ServiceImpl[k] extends Effect<infer A_2, infer E_3, infer R_3> ? Effect<A_2, E_3, R_3 | Id> : Effect<ServiceImpl[k], never, Id>; } : {}) & {
|
|
64
41
|
use: <X>(body: (_: ServiceImpl) => X) => X extends Effect<infer A_3, infer E_4, infer R_4> ? Effect<A_3, E_4, R_4 | Id> : Effect<X, never, Id>;
|
|
65
42
|
};
|
|
66
|
-
export declare const TagClassMakeId: <ServiceImpl, R, E, const Key extends string>(key: Key, make: Effect<ServiceImpl, E, R>) => <Id>() => {
|
|
67
|
-
new (service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>;
|
|
43
|
+
export declare const TagClassMakeId: <ServiceImpl, R, E, const Key extends string>(key: Key, make: Effect<ServiceImpl, E, R>) => <Id>() => (abstract new (service: ServiceImpl) => Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>) & {
|
|
68
44
|
toLayer: {
|
|
69
45
|
(): Layer<Id, E, R>;
|
|
70
|
-
<E_1, R_1>(eff: Effect<
|
|
46
|
+
<E_1, R_1>(eff: Effect<Omit<Id, keyof Context.TagClassShape<any, any>>, E_1, R_1>): Layer<Id, E_1, R_1>;
|
|
71
47
|
};
|
|
72
48
|
toLayerScoped: {
|
|
73
49
|
(): Layer<Id, E, Exclude<R, Scope>>;
|
|
74
|
-
<E_2, R_2>(eff: Effect<
|
|
50
|
+
<E_2, R_2>(eff: Effect<Context.TagClassShape<any, any>, E_2, R_2>): Layer<Id, E_2, Exclude<R_2, Scope.Scope>>;
|
|
75
51
|
};
|
|
76
|
-
|
|
52
|
+
of: (service: Context.TagClassShape<any, any>) => Id;
|
|
77
53
|
make: Effect<Id, E, R>;
|
|
78
|
-
} & Context.Tag<Id, Id> & { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args_0: infer Args) => infer Ret ? ((...args: Readonly<Args>) => Ret) extends ServiceImpl[k] ? k : never : k]: ServiceImpl[k] extends (...args_0: infer Args_1) => Effect<infer A, infer E_3, infer R_3> ? (...args: Readonly<Args_1>) => Effect<A, E_3, R_3 | Id> : ServiceImpl[k] extends (...args_0: infer Args_2) => infer A_1 ? (...args: Readonly<Args_2>) => Effect<A_1, never, Id> : ServiceImpl[k] extends Effect<infer A_2, infer E_4, infer R_4> ? Effect<A_2, E_4, R_4 | Id> : Effect<ServiceImpl[k], never, Id>; } & {
|
|
54
|
+
} & Context.Tag<Id, Id> & (ServiceImpl extends Record<PropertyKey, any> ? { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args_0: infer Args) => infer Ret ? ((...args: Readonly<Args>) => Ret) extends ServiceImpl[k] ? k : never : k]: ServiceImpl[k] extends (...args_0: infer Args_1) => Effect<infer A, infer E_3, infer R_3> ? (...args: Readonly<Args_1>) => Effect<A, E_3, R_3 | Id> : ServiceImpl[k] extends (...args_0: infer Args_2) => infer A_1 ? (...args: Readonly<Args_2>) => Effect<A_1, never, Id> : ServiceImpl[k] extends Effect<infer A_2, infer E_4, infer R_4> ? Effect<A_2, E_4, R_4 | Id> : Effect<ServiceImpl[k], never, Id>; } : {}) & {
|
|
79
55
|
use: <X>(body: (_: ServiceImpl) => X) => X extends Effect<infer A_3, infer E_5, infer R_5> ? Effect<A_3, E_5, R_5 | Id> : Effect<X, never, Id>;
|
|
80
56
|
};
|
|
81
57
|
//# 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,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CACxE,CAAC,EACD,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CACtC,CAAA;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,2BAC9C,CAAC,KAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAsBhE;AAED,MAAM,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,IACtC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/service.js
CHANGED
|
@@ -79,67 +79,91 @@ export const proxify = (TagClass) => () => {
|
|
|
79
79
|
});
|
|
80
80
|
return done;
|
|
81
81
|
};
|
|
82
|
-
export const TagMake =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
82
|
+
// export const TagMake = <ServiceImpl, R, E, const Key extends string>(
|
|
83
|
+
// key: Key,
|
|
84
|
+
// make: Effect<ServiceImpl, E, R>
|
|
85
|
+
// ) =>
|
|
86
|
+
// <Id>() => {
|
|
87
|
+
// const limit = Error.stackTraceLimit
|
|
88
|
+
// Error.stackTraceLimit = 2
|
|
89
|
+
// const creationError = new Error()
|
|
90
|
+
// Error.stackTraceLimit = limit
|
|
91
|
+
// const c: {
|
|
92
|
+
// new(): Context.TagClassShape<Key, ServiceImpl>
|
|
93
|
+
// toLayer: () => Layer<Id, E, R>
|
|
94
|
+
// toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>
|
|
95
|
+
// } = class {
|
|
96
|
+
// static toLayer = () => {
|
|
97
|
+
// return Layer.effect(this as any, make)
|
|
98
|
+
// }
|
|
99
|
+
// static toLayerScoped = () => {
|
|
100
|
+
// return Layer.scoped(this as any, make)
|
|
101
|
+
// }
|
|
102
|
+
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
103
|
+
// } as any
|
|
104
|
+
// return proxify(assignTag<Id, ServiceImpl>(key, creationError)(c))<Id, ServiceImpl>()
|
|
105
|
+
// }
|
|
106
|
+
// export function TagClass<Id, ServiceImpl, Service = Id>(key?: string) {
|
|
107
|
+
// const limit = Error.stackTraceLimit
|
|
108
|
+
// Error.stackTraceLimit = 2
|
|
109
|
+
// const creationError = new Error()
|
|
110
|
+
// Error.stackTraceLimit = limit
|
|
111
|
+
// const c: (abstract new(impl: ServiceImpl) => Readonly<ServiceImpl>) & {
|
|
112
|
+
// toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>
|
|
113
|
+
// toLayerScoped: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, Exclude<R, Scope>>
|
|
114
|
+
// } = class {
|
|
115
|
+
// constructor(service: ServiceImpl) {
|
|
116
|
+
// Object.assign(this, service)
|
|
117
|
+
// }
|
|
118
|
+
// static _key?: string
|
|
119
|
+
// static toLayer = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
|
|
120
|
+
// return Layer.effect(this as any, eff)
|
|
121
|
+
// }
|
|
122
|
+
// static toLayerScoped = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
|
|
123
|
+
// return Layer.scoped(this as any, eff)
|
|
124
|
+
// }
|
|
125
|
+
// static get key() {
|
|
126
|
+
// return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
|
|
127
|
+
// }
|
|
128
|
+
// } as any
|
|
129
|
+
// return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, ServiceImpl>()
|
|
130
|
+
// }
|
|
131
|
+
// export const TagClassMake = <ServiceImpl, R, E>(
|
|
132
|
+
// make: Effect<ServiceImpl, E, R>,
|
|
133
|
+
// key?: string
|
|
134
|
+
// ) =>
|
|
135
|
+
// <Id, Service = Id>() => {
|
|
136
|
+
// const limit = Error.stackTraceLimit
|
|
137
|
+
// Error.stackTraceLimit = 2
|
|
138
|
+
// const creationError = new Error()
|
|
139
|
+
// Error.stackTraceLimit = limit
|
|
140
|
+
// const c: (abstract new(impl: ServiceImpl) => Readonly<ServiceImpl>) & {
|
|
141
|
+
// toLayer: { (): Layer<Id, E, R>; <E, R>(eff: Effect<ServiceImpl, E, R>): Layer<Id, E, R> }
|
|
142
|
+
// toLayerScoped: {
|
|
143
|
+
// (): Layer<Id, E, Exclude<R, Scope>>
|
|
144
|
+
// <E, R>(eff: Effect<ServiceImpl, E, R>): Layer<Id, E, Exclude<R, Scope>>
|
|
145
|
+
// }
|
|
146
|
+
// make: Effect<Id, E, R>
|
|
147
|
+
// } = class {
|
|
148
|
+
// constructor(service: ServiceImpl) {
|
|
149
|
+
// Object.assign(this, service)
|
|
150
|
+
// }
|
|
151
|
+
// static _key: string
|
|
152
|
+
// static make = make
|
|
153
|
+
// // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
|
|
154
|
+
// static toLayer = (arg?: any) => {
|
|
155
|
+
// return Layer.effect(this as any, arg ?? this.make)
|
|
156
|
+
// }
|
|
157
|
+
// static toLayerScoped = (arg?: any) => {
|
|
158
|
+
// return Layer.scoped(this as any, arg ?? this.make)
|
|
159
|
+
// }
|
|
160
|
+
// static get key() {
|
|
161
|
+
// return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
|
|
162
|
+
// }
|
|
163
|
+
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
164
|
+
// } as any
|
|
165
|
+
// return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, ServiceImpl>()
|
|
166
|
+
// }
|
|
143
167
|
export function TagClassId(key) {
|
|
144
168
|
return () => {
|
|
145
169
|
const limit = Error.stackTraceLimit;
|
|
@@ -148,15 +172,15 @@ export function TagClassId(key) {
|
|
|
148
172
|
Error.stackTraceLimit = limit;
|
|
149
173
|
const c = class {
|
|
150
174
|
constructor(service) {
|
|
151
|
-
//
|
|
152
|
-
|
|
175
|
+
// TODO: instead, wrap the service, and direct calls?
|
|
176
|
+
Object.assign(this, service);
|
|
153
177
|
}
|
|
154
|
-
static
|
|
178
|
+
static of = (service) => service;
|
|
155
179
|
static toLayer = (eff) => {
|
|
156
|
-
return Layer.effect(this,
|
|
180
|
+
return Layer.effect(this, eff);
|
|
157
181
|
};
|
|
158
182
|
static toLayerScoped = (eff) => {
|
|
159
|
-
return Layer.scoped(this,
|
|
183
|
+
return Layer.scoped(this, eff);
|
|
160
184
|
};
|
|
161
185
|
};
|
|
162
186
|
return proxify(assignTag(key, creationError)(c))();
|
|
@@ -169,19 +193,19 @@ export const TagClassMakeId = (key, make) => () => {
|
|
|
169
193
|
Error.stackTraceLimit = limit;
|
|
170
194
|
const c = class {
|
|
171
195
|
constructor(service) {
|
|
172
|
-
//
|
|
173
|
-
|
|
196
|
+
// TODO: instead, wrap the service, and direct calls?
|
|
197
|
+
Object.assign(this, service);
|
|
174
198
|
}
|
|
175
|
-
static
|
|
176
|
-
static make =
|
|
199
|
+
static of = (service) => service;
|
|
200
|
+
static make = make;
|
|
177
201
|
// works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
|
|
178
202
|
static toLayer = (arg) => {
|
|
179
|
-
return
|
|
203
|
+
return Layer.effect(this, arg ?? this.make);
|
|
180
204
|
};
|
|
181
205
|
static toLayerScoped = (arg) => {
|
|
182
|
-
return
|
|
206
|
+
return Layer.scoped(this, arg ?? this.make);
|
|
183
207
|
};
|
|
184
208
|
};
|
|
185
209
|
return proxify(assignTag(key, creationError)(c))();
|
|
186
210
|
};
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQ7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUdsQyxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQU9EOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixhQUEwQixTQUFRLG9CQUF3QztDQUFHO0FBRW5HOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBK0IsQ0FBc0I7SUFDOUUsT0FBTyxDQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFzQyxDQUFvQixFQUFFLENBQXNCO0lBQ3BHLE9BQU8sQ0FBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFBO0FBRS9DLE1BQU0sVUFBVSxTQUFTLENBQW1CLEdBQVksRUFBRSxhQUFxQjtJQUM3RSxPQUFPLENBQW1CLEdBQU0sRUFBZ0MsRUFBRTtRQUNoRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFjLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzlELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQTtRQUNoQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQTtZQUM1QixN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
|