effect-app 0.182.1 → 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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 0.183.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 77366cc: don't go through service constructor
8
+
3
9
  ## 0.182.1
4
10
 
5
11
  ### Patch Changes
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.TagMake = exports.TagClassMakeId = exports.TagClassMake = void 0;
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
- // 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.
172
- return Object.assign(Object.create(service), service);
192
+ // TODO: instead, wrap the service, and direct calls?
193
+ Object.assign(this, service);
173
194
  }
174
- static wrap = service => new this(service);
195
+ static of = service => service;
175
196
  static toLayer = eff => {
176
- return _core.Layer.effect(this, _core.Effect.map(eff, _ => new this(_)));
197
+ return _core.Layer.effect(this, eff);
177
198
  };
178
199
  static toLayerScoped = eff => {
179
- return _core.Layer.scoped(this, _core.Effect.map(eff, _ => new 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
- // 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.
193
- return Object.assign(Object.create(service), service);
213
+ // TODO: instead, wrap the service, and direct calls?
214
+ Object.assign(this, service);
194
215
  }
195
- static wrap = service => new this(service);
196
- static make = _core.Effect.andThen(make, _ => new this(_));
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 arg ? _core.Layer.effect(this, arg) : _core.Layer.effect(this, this.make);
220
+ return _core.Layer.effect(this, arg ?? this.make);
200
221
  };
201
222
  static toLayerScoped = arg => {
202
- return arg ? _core.Layer.scoped(this, arg) : _core.Layer.scoped(this, this.make);
223
+ return _core.Layer.scoped(this, arg ?? this.make);
203
224
  };
204
225
  };
205
226
  return proxify(assignTag(key, creationError)(c))();
@@ -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","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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"}
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
@@ -33,47 +33,23 @@ export type ServiceAcessorShape<Self, Type> = (Type extends Record<PropertyKey,
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 const TagMake: <ServiceImpl, R, E, const Key extends string>(key: Key, make: Effect<ServiceImpl, E, R>) => <Id>() => {
37
- new (): Context.TagClassShape<Key, ServiceImpl>;
38
- toLayer: () => Layer<Id, E, R>;
39
- toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>;
40
- } & Context.Tag<Id, ServiceImpl> & (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_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>; } : {}) & {
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> & (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>; } : {}) & {
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> & (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_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;
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;
63
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<ServiceImpl, E_1, R_1>): Layer<Id, E_1, R_1>;
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<ServiceImpl, E_2, R_2>): Layer<Id, E_2, Exclude<R_2, Scope.Scope>>;
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
- wrap: (service: ServiceImpl) => Id;
52
+ of: (service: Context.TagClassShape<any, any>) => Id;
77
53
  make: Effect<Id, E, R>;
78
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>;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
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 = (key, make) => () => {
83
- const limit = Error.stackTraceLimit;
84
- Error.stackTraceLimit = 2;
85
- const creationError = new Error();
86
- Error.stackTraceLimit = limit;
87
- const c = class {
88
- static toLayer = () => {
89
- return Layer.effect(this, make);
90
- };
91
- static toLayerScoped = () => {
92
- return Layer.scoped(this, make);
93
- };
94
- };
95
- return proxify(assignTag(key, creationError)(c))();
96
- };
97
- export function TagClass(key) {
98
- const limit = Error.stackTraceLimit;
99
- Error.stackTraceLimit = 2;
100
- const creationError = new Error();
101
- Error.stackTraceLimit = limit;
102
- const c = class {
103
- constructor(service) {
104
- Object.assign(this, service);
105
- }
106
- static _key;
107
- static toLayer = (eff) => {
108
- return Layer.effect(this, Effect.map(eff, (_) => new this(_)));
109
- };
110
- static toLayerScoped = (eff) => {
111
- return Layer.scoped(this, Effect.map(eff, (_) => new this(_)));
112
- };
113
- static get key() {
114
- return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
115
- }
116
- };
117
- return proxify(assignTag(key, creationError)(c))();
118
- }
119
- export const TagClassMake = (make, key) => () => {
120
- const limit = Error.stackTraceLimit;
121
- Error.stackTraceLimit = 2;
122
- const creationError = new Error();
123
- Error.stackTraceLimit = limit;
124
- const c = class {
125
- constructor(service) {
126
- Object.assign(this, service);
127
- }
128
- static _key;
129
- static make = Effect.andThen(make, (_) => new this(_));
130
- // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
131
- static toLayer = () => {
132
- return Layer.effect(this, this.make);
133
- };
134
- static toLayerScoped = () => {
135
- return Layer.scoped(this, this.make);
136
- };
137
- static get key() {
138
- return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
139
- }
140
- };
141
- return proxify(assignTag(key, creationError)(c))();
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
- // 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.
152
- return Object.assign(Object.create(service), service);
175
+ // TODO: instead, wrap the service, and direct calls?
176
+ Object.assign(this, service);
153
177
  }
154
- static wrap = (service) => new this(service);
178
+ static of = (service) => service;
155
179
  static toLayer = (eff) => {
156
- return Layer.effect(this, Effect.map(eff, (_) => new this(_)));
180
+ return Layer.effect(this, eff);
157
181
  };
158
182
  static toLayerScoped = (eff) => {
159
- return Layer.scoped(this, Effect.map(eff, (_) => new 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
- // 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.
173
- return Object.assign(Object.create(service), service);
196
+ // TODO: instead, wrap the service, and direct calls?
197
+ Object.assign(this, service);
174
198
  }
175
- static wrap = (service) => new this(service);
176
- static make = Effect.andThen(make, (_) => new this(_));
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 arg ? Layer.effect(this, arg) : Layer.effect(this, this.make);
203
+ return Layer.effect(this, arg ?? this.make);
180
204
  };
181
205
  static toLayerScoped = (arg) => {
182
- return arg ? Layer.scoped(this, arg) : Layer.scoped(this, this.make);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQ7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUdsQyxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQU9EOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixhQUEwQixTQUFRLG9CQUF3QztDQUFHO0FBRW5HOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBK0IsQ0FBc0I7SUFDOUUsT0FBTyxDQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFzQyxDQUFvQixFQUFFLENBQXNCO0lBQ3BHLE9BQU8sQ0FBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFBO0FBRS9DLE1BQU0sVUFBVSxTQUFTLENBQW1CLEdBQVksRUFBRSxhQUFxQjtJQUM3RSxPQUFPLENBQW1CLEdBQU0sRUFBZ0MsRUFBRTtRQUNoRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFjLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzlELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQTtRQUNoQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQTtZQUM1QixNQUFNLEdBQUcsSUFBVyxDQUFBO1FBQ3RCLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ2hFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFBO1lBQ25DLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO1lBQ3pCLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1lBQzNCLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1FBQy9CLENBQUM7UUFDRCx5R0FBeUc7UUFDekcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFO1lBQ2hDLEdBQUc7Z0JBQ0QsT0FBTyxhQUFjLENBQUMsS0FBSyxDQUFBO1lBQzdCLENBQUM7U0FDRixDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUMsQ0FBQTtBQUNILENBQUM7QUFxQkQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQW1CLFFBQVcsRUFBRSxFQUFFLENBQ3pELEdBRXFDLEVBQUU7SUFFckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDL0IsR0FBRyxDQUFDLE9BQVksRUFBRSxJQUFTLEVBQUUsU0FBUztZQUNwQyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDbkIsdUJBQXVCO2dCQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNqRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLHVCQUF1QjtnQkFDdkIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkIsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDeEIsQ0FBQztZQUNELHVCQUF1QjtZQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBZ0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDMUYsdUJBQXVCO1lBQ3ZCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUNuRCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNyQixNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDcEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDbkIsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO0tBQ0YsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsR0FBUSxFQUNSLElBQStCLEVBQy9CLEVBQUUsQ0FDSixHQUFPLEVBQUU7SUFDUCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFBO0lBQ25DLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO0lBQ3pCLE1BQU0sYUFBYSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7SUFDakMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7SUFDN0IsTUFBTSxDQUFDLEdBSUg7UUFDRixNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNwQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBVyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3hDLENBQUMsQ0FBQTtRQUVELE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQzFCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEMsQ0FBQyxDQUFBO0tBRUssQ0FBQTtJQUVSLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBa0IsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQW1CLENBQUE7QUFDdEYsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBZ0MsR0FBWTtJQUNsRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFBO0lBQ25DLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO0lBQ3pCLE1BQU0sYUFBYSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7SUFDakMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7SUFDN0IsTUFBTSxDQUFDLEdBSUg7UUFDRixZQUFZLE9BQW9CO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzlCLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFTO1FBQ3BCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBTyxHQUE4QixFQUFFLEVBQUU7WUFDeEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZFLENBQUMsQ0FBQTtRQUNELE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBTyxHQUE4QixFQUFFLEVBQUU7WUFDOUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZFLENBQUMsQ0FBQTtRQUNELE1BQU0sS0FBSyxHQUFHO1lBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNGLENBQUM7S0FDSyxDQUFBO0lBRVIsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFjLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFtQixDQUFBO0FBQ2xGLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FDMUIsSUFBK0IsRUFDL0IsR0FBWSxFQUNaLEVBQUUsQ0FDSixHQUFxQixFQUFFO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUE7SUFDbkMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUE7SUFDekIsTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtJQUNqQyxLQUFLLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQTtJQUM3QixNQUFNLENBQUMsR0FLSDtRQUNGLFlBQVksT0FBb0I7WUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQVE7UUFDbkIsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0RCxpSEFBaUg7UUFDakgsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDcEIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDN0MsQ0FBQyxDQUFBO1FBRUQsTUFBTSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDN0MsQ0FBQyxDQUFBO1FBRUQsTUFBTSxLQUFLLEdBQUc7WUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0YsQ0FBQztLQUVLLENBQUE7SUFFUixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQWMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQW1CLENBQUE7QUFDbEYsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBMkIsR0FBUTtJQUMzRCxPQUFPLEdBQW9CLEVBQUU7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQTtRQUNuQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQTtRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1FBQ2pDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxHQUtIO1lBQ0YsWUFBWSxPQUFvQjtnQkFDOUIsd0tBQXdLO2dCQUN4SyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3pELE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBTyxHQUE4QixFQUFFLEVBQUU7Z0JBQ3hELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFXLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN2RSxDQUFDLENBQUE7WUFDRCxNQUFNLENBQUMsYUFBYSxHQUFHLENBQU8sR0FBOEIsRUFBRSxFQUFFO2dCQUM5RCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkUsQ0FBQyxDQUFBO1NBQ0ssQ0FBQTtRQUVSLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBUyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBbUIsQ0FBQTtJQUM3RSxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzVCLEdBQVEsRUFDUixJQUErQixFQUMvQixFQUFFLENBQ0osR0FBTyxFQUFFO0lBQ1AsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQTtJQUNuQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQTtJQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO0lBQ2pDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO0lBQzdCLE1BQU0sQ0FBQyxHQVVIO1FBQ0YsWUFBWSxPQUFvQjtZQUM5Qix3S0FBd0s7WUFDeEssT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUQsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN6RCxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RELGlIQUFpSDtRQUNqSCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBUyxFQUFFLEVBQUU7WUFDN0IsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEYsQ0FBQyxDQUFBO1FBRUQsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQVMsRUFBRSxFQUFFO1lBQ25DLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BGLENBQUMsQ0FBQTtLQUVLLENBQUE7SUFFUixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQVMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQW1CLENBQUE7QUFDN0UsQ0FBQyxDQUFBIn0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQ7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUdsQyxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQU9EOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixhQUEwQixTQUFRLG9CQUF3QztDQUFHO0FBRW5HOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBK0IsQ0FBc0I7SUFDOUUsT0FBTyxDQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFzQyxDQUFvQixFQUFFLENBQXNCO0lBQ3BHLE9BQU8sQ0FBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFBO0FBRS9DLE1BQU0sVUFBVSxTQUFTLENBQW1CLEdBQVksRUFBRSxhQUFxQjtJQUM3RSxPQUFPLENBQW1CLEdBQU0sRUFBZ0MsRUFBRTtRQUNoRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFjLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzlELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQTtRQUNoQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQTtZQUM1QixNQUFNLEdBQUcsSUFBVyxDQUFBO1FBQ3RCLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ2hFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFBO1lBQ25DLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO1lBQ3pCLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1lBQzNCLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1FBQy9CLENBQUM7UUFDRCx5R0FBeUc7UUFDekcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFO1lBQ2hDLEdBQUc7Z0JBQ0QsT0FBTyxhQUFjLENBQUMsS0FBSyxDQUFBO1lBQzdCLENBQUM7U0FDRixDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUMsQ0FBQTtBQUNILENBQUM7QUFxQkQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQW1CLFFBQVcsRUFBRSxFQUFFLENBQ3pELEdBRXFDLEVBQUU7SUFFckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDL0IsR0FBRyxDQUFDLE9BQVksRUFBRSxJQUFTLEVBQUUsU0FBUztZQUNwQyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDbkIsdUJBQXVCO2dCQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNqRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLHVCQUF1QjtnQkFDdkIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkIsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDeEIsQ0FBQztZQUNELHVCQUF1QjtZQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBZ0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDMUYsdUJBQXVCO1lBQ3ZCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUNuRCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNyQixNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDcEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDbkIsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO0tBQ0YsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUE7QUFFRCx3RUFBd0U7QUFDeEUsY0FBYztBQUNkLG9DQUFvQztBQUNwQyxPQUFPO0FBQ1AsY0FBYztBQUNkLHdDQUF3QztBQUN4Qyw4QkFBOEI7QUFDOUIsc0NBQXNDO0FBQ3RDLGtDQUFrQztBQUNsQyxlQUFlO0FBQ2YscURBQXFEO0FBQ3JELHFDQUFxQztBQUNyQywyREFBMkQ7QUFDM0QsZ0JBQWdCO0FBQ2hCLCtCQUErQjtBQUMvQiwrQ0FBK0M7QUFDL0MsUUFBUTtBQUVSLHFDQUFxQztBQUNyQywrQ0FBK0M7QUFDL0MsUUFBUTtBQUNSLHFFQUFxRTtBQUNyRSxhQUFhO0FBRWIseUZBQXlGO0FBQ3pGLElBQUk7QUFFSiwwRUFBMEU7QUFDMUUsd0NBQXdDO0FBQ3hDLDhCQUE4QjtBQUM5QixzQ0FBc0M7QUFDdEMsa0NBQWtDO0FBQ2xDLDRFQUE0RTtBQUM1RSx5RUFBeUU7QUFDekUsK0ZBQStGO0FBQy9GLGdCQUFnQjtBQUNoQiwwQ0FBMEM7QUFDMUMscUNBQXFDO0FBQ3JDLFFBQVE7QUFDUiwyQkFBMkI7QUFDM0IsbUVBQW1FO0FBQ25FLDhDQUE4QztBQUM5QyxRQUFRO0FBQ1IseUVBQXlFO0FBQ3pFLDhDQUE4QztBQUM5QyxRQUFRO0FBQ1IseUJBQXlCO0FBQ3pCLGtHQUFrRztBQUNsRyxRQUFRO0FBQ1IsYUFBYTtBQUViLHFGQUFxRjtBQUNyRixJQUFJO0FBRUosbURBQW1EO0FBQ25ELHFDQUFxQztBQUNyQyxpQkFBaUI7QUFDakIsT0FBTztBQUNQLDRCQUE0QjtBQUM1Qix3Q0FBd0M7QUFDeEMsOEJBQThCO0FBQzlCLHNDQUFzQztBQUN0QyxrQ0FBa0M7QUFDbEMsNEVBQTRFO0FBQzVFLGdHQUFnRztBQUNoRyx1QkFBdUI7QUFDdkIsNENBQTRDO0FBQzVDLGdGQUFnRjtBQUNoRixRQUFRO0FBQ1IsNkJBQTZCO0FBQzdCLGdCQUFnQjtBQUNoQiwwQ0FBMEM7QUFDMUMscUNBQXFDO0FBQ3JDLFFBQVE7QUFDUiwwQkFBMEI7QUFDMUIseUJBQXlCO0FBQ3pCLHdIQUF3SDtBQUN4SCx3Q0FBd0M7QUFDeEMsMkRBQTJEO0FBQzNELFFBQVE7QUFFUiw4Q0FBOEM7QUFDOUMsMkRBQTJEO0FBQzNELFFBQVE7QUFFUix5QkFBeUI7QUFDekIsa0dBQWtHO0FBQ2xHLFFBQVE7QUFDUixxRUFBcUU7QUFDckUsYUFBYTtBQUViLHFGQUFxRjtBQUNyRixJQUFJO0FBRUosTUFBTSxVQUFVLFVBQVUsQ0FBMkIsR0FBUTtJQUMzRCxPQUFPLEdBQW9CLEVBQUU7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQTtRQUNuQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQTtRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1FBQ2pDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxHQVVEO1lBQ0YsWUFBWSxPQUFZO2dCQUN0QixxREFBcUQ7Z0JBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQzlCLENBQUM7WUFDRCxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBb0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFBO1lBQzdDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBTyxHQUE4QixFQUFFLEVBQUU7Z0JBQ3hELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFXLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDdkMsQ0FBQyxDQUFBO1lBQ0QsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFPLEdBQThCLEVBQUUsRUFBRTtnQkFDOUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUN2QyxDQUFDLENBQUE7U0FDSyxDQUFBO1FBRVYsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFTLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFtQixDQUFBO0lBQzdFLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsR0FBUSxFQUNSLElBQStCLEVBQy9CLEVBQUUsQ0FDSixHQUFPLEVBQUU7SUFDUCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFBO0lBQ25DLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO0lBQ3pCLE1BQU0sYUFBYSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7SUFDakMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7SUFDN0IsTUFBTSxDQUFDLEdBZUQ7UUFDRixZQUFZLE9BQVk7WUFDdEIscURBQXFEO1lBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzlCLENBQUM7UUFFRCxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBb0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFBO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2xCLGlIQUFpSDtRQUNqSCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBUyxFQUFFLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BELENBQUMsQ0FBQTtRQUVELE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFTLEVBQUUsRUFBRTtZQUNuQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBVyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEQsQ0FBQyxDQUFBO0tBRUssQ0FBQTtJQUVWLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBUyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBbUIsQ0FBQTtBQUM3RSxDQUFDLENBQUEifQ==
@@ -1,45 +1,29 @@
1
1
  import { Effect, Fiber, Layer } from "@effect-app/core";
2
- declare const FiberBag_base: {
3
- new (service: {
4
- join: Effect.Effect<void, never, never>;
5
- run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
6
- add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
7
- addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
8
- }): Readonly<{
9
- join: Effect.Effect<void, never, never>;
10
- run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
11
- add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
12
- addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
13
- }> & import("effect/Context").TagClassShape<"FiberBag", {
14
- join: Effect.Effect<void, never, never>;
15
- run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
16
- add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
17
- addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
18
- }>;
2
+ declare const FiberBag_base: (abstract new (service: {
3
+ join: Effect.Effect<void, never, never>;
4
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
5
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
6
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
7
+ }) => Readonly<{
8
+ join: Effect.Effect<void, never, never>;
9
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
10
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
11
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
12
+ }> & import("effect/Context").TagClassShape<"FiberBag", {
13
+ join: Effect.Effect<void, never, never>;
14
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
15
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
16
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
17
+ }>) & {
19
18
  toLayer: {
20
19
  (): Layer<FiberBag, never, import("effect/Scope").Scope>;
21
- <E, R_1>(eff: Effect<{
22
- join: Effect.Effect<void, never, never>;
23
- run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
24
- add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
25
- addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
26
- }, E, R_1>): Layer<FiberBag, E, R_1>;
20
+ <E, R_1>(eff: Effect<Omit<FiberBag, keyof import("effect/Context").TagClassShape<any, any>>, E, R_1>): Layer<FiberBag, E, R_1>;
27
21
  };
28
22
  toLayerScoped: {
29
23
  (): Layer<FiberBag, never, never>;
30
- <E_1, R_2>(eff: Effect<{
31
- join: Effect.Effect<void, never, never>;
32
- run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
33
- add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
34
- addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
35
- }, E_1, R_2>): Layer<FiberBag, E_1, Exclude<R_2, import("effect/Scope").Scope>>;
24
+ <E_1, R_2>(eff: Effect<import("effect/Context").TagClassShape<any, any>, E_1, R_2>): Layer<FiberBag, E_1, Exclude<R_2, import("effect/Scope").Scope>>;
36
25
  };
37
- wrap: (service: {
38
- join: Effect.Effect<void, never, never>;
39
- run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
40
- add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
41
- addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
42
- }) => FiberBag;
26
+ of: (service: import("effect/Context").TagClassShape<any, any>) => FiberBag;
43
27
  make: Effect<FiberBag, never, import("effect/Scope").Scope>;
44
28
  } & import("effect/Context").Tag<FiberBag, FiberBag> & {
45
29
  join: Effect<void, never, FiberBag>;
@@ -1 +1 @@
1
- {"version":3,"file":"FiberBag.d.ts","sourceRoot":"","sources":["../../src/services/FiberBag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BjE;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,aAA4C;IACxE,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAuB;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,mCAA0F;IAClH,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAa,OAAO,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,0EAAkD;CAC1G"}
1
+ {"version":3,"file":"FiberBag.d.ts","sourceRoot":"","sources":["../../src/services/FiberBag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BjE;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,aAA4C;IACxE,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAuB;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,mCAA0F;IAClH,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAa,OAAO,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,0EAAkD;CAC1G"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "0.182.1",
3
+ "version": "0.183.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -26,8 +26,7 @@
26
26
  "fast-check": "~3.16.0",
27
27
  "ts-node": "^10.9.2",
28
28
  "typescript": "^5.4.2",
29
- "vitest": "^1.3.1",
30
- "@effect-app/compiler": "0.72.0"
29
+ "vitest": "^1.3.1"
31
30
  },
32
31
  "peerDependencies": {
33
32
  "@effect/platform": "^0.46.3",
package/src/service.ts CHANGED
@@ -121,98 +121,99 @@ export const proxify = <T extends object>(TagClass: T) =>
121
121
  return done
122
122
  }
123
123
 
124
- export const TagMake = <ServiceImpl, R, E, const Key extends string>(
125
- key: Key,
126
- make: Effect<ServiceImpl, E, R>
127
- ) =>
128
- <Id>() => {
129
- const limit = Error.stackTraceLimit
130
- Error.stackTraceLimit = 2
131
- const creationError = new Error()
132
- Error.stackTraceLimit = limit
133
- const c: {
134
- new(): Context.TagClassShape<Key, ServiceImpl>
135
- toLayer: () => Layer<Id, E, R>
136
- toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>
137
- } = class {
138
- static toLayer = () => {
139
- return Layer.effect(this as any, make)
140
- }
124
+ // export const TagMake = <ServiceImpl, R, E, const Key extends string>(
125
+ // key: Key,
126
+ // make: Effect<ServiceImpl, E, R>
127
+ // ) =>
128
+ // <Id>() => {
129
+ // const limit = Error.stackTraceLimit
130
+ // Error.stackTraceLimit = 2
131
+ // const creationError = new Error()
132
+ // Error.stackTraceLimit = limit
133
+ // const c: {
134
+ // new(): Context.TagClassShape<Key, ServiceImpl>
135
+ // toLayer: () => Layer<Id, E, R>
136
+ // toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>
137
+ // } = class {
138
+ // static toLayer = () => {
139
+ // return Layer.effect(this as any, make)
140
+ // }
141
141
 
142
- static toLayerScoped = () => {
143
- return Layer.scoped(this as any, make)
144
- }
145
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
146
- } as any
142
+ // static toLayerScoped = () => {
143
+ // return Layer.scoped(this as any, make)
144
+ // }
145
+ // // eslint-disable-next-line @typescript-eslint/no-explicit-any
146
+ // } as any
147
147
 
148
- return proxify(assignTag<Id, ServiceImpl>(key, creationError)(c))<Id, ServiceImpl>()
149
- }
148
+ // return proxify(assignTag<Id, ServiceImpl>(key, creationError)(c))<Id, ServiceImpl>()
149
+ // }
150
150
 
151
- export function TagClass<Id, ServiceImpl, Service = Id>(key?: string) {
152
- const limit = Error.stackTraceLimit
153
- Error.stackTraceLimit = 2
154
- const creationError = new Error()
155
- Error.stackTraceLimit = limit
156
- const c: {
157
- new(service: ServiceImpl): Readonly<ServiceImpl>
158
- toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>
159
- toLayerScoped: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, Exclude<R, Scope>>
160
- } = class {
161
- constructor(service: ServiceImpl) {
162
- Object.assign(this, service)
163
- }
164
- static _key?: string
165
- static toLayer = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
166
- return Layer.effect(this as any, Effect.map(eff, (_) => new this(_)))
167
- }
168
- static toLayerScoped = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
169
- return Layer.scoped(this as any, Effect.map(eff, (_) => new this(_)))
170
- }
171
- static get key() {
172
- return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
173
- }
174
- } as any
151
+ // export function TagClass<Id, ServiceImpl, Service = Id>(key?: string) {
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: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>
158
+ // toLayerScoped: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, Exclude<R, Scope>>
159
+ // } = class {
160
+ // constructor(service: ServiceImpl) {
161
+ // Object.assign(this, service)
162
+ // }
163
+ // static _key?: string
164
+ // static toLayer = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
165
+ // return Layer.effect(this as any, eff)
166
+ // }
167
+ // static toLayerScoped = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
168
+ // return Layer.scoped(this as any, eff)
169
+ // }
170
+ // static get key() {
171
+ // return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
172
+ // }
173
+ // } as any
175
174
 
176
- return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, ServiceImpl>()
177
- }
175
+ // return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, ServiceImpl>()
176
+ // }
178
177
 
179
- export const TagClassMake = <ServiceImpl, R, E>(
180
- make: Effect<ServiceImpl, E, R>,
181
- key?: string
182
- ) =>
183
- <Id, Service = Id>() => {
184
- const limit = Error.stackTraceLimit
185
- Error.stackTraceLimit = 2
186
- const creationError = new Error()
187
- Error.stackTraceLimit = limit
188
- const c: {
189
- new(service: ServiceImpl): Readonly<ServiceImpl>
190
- toLayer: () => Layer<Id, E, R>
191
- toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>
192
- make: Effect<Id, E, R>
193
- } = class {
194
- constructor(service: ServiceImpl) {
195
- Object.assign(this, service)
196
- }
197
- static _key: string
198
- static make = Effect.andThen(make, (_) => new this(_))
199
- // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
200
- static toLayer = () => {
201
- return Layer.effect(this as any, this.make)
202
- }
178
+ // export const TagClassMake = <ServiceImpl, R, E>(
179
+ // make: Effect<ServiceImpl, E, R>,
180
+ // key?: string
181
+ // ) =>
182
+ // <Id, Service = Id>() => {
183
+ // const limit = Error.stackTraceLimit
184
+ // Error.stackTraceLimit = 2
185
+ // const creationError = new Error()
186
+ // Error.stackTraceLimit = limit
187
+ // const c: (abstract new(impl: ServiceImpl) => Readonly<ServiceImpl>) & {
188
+ // toLayer: { (): Layer<Id, E, R>; <E, R>(eff: Effect<ServiceImpl, E, R>): Layer<Id, E, R> }
189
+ // toLayerScoped: {
190
+ // (): Layer<Id, E, Exclude<R, Scope>>
191
+ // <E, R>(eff: Effect<ServiceImpl, E, R>): Layer<Id, E, Exclude<R, Scope>>
192
+ // }
193
+ // make: Effect<Id, E, R>
194
+ // } = class {
195
+ // constructor(service: ServiceImpl) {
196
+ // Object.assign(this, service)
197
+ // }
198
+ // static _key: string
199
+ // static make = make
200
+ // // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
201
+ // static toLayer = (arg?: any) => {
202
+ // return Layer.effect(this as any, arg ?? this.make)
203
+ // }
203
204
 
204
- static toLayerScoped = () => {
205
- return Layer.scoped(this as any, this.make)
206
- }
205
+ // static toLayerScoped = (arg?: any) => {
206
+ // return Layer.scoped(this as any, arg ?? this.make)
207
+ // }
207
208
 
208
- static get key() {
209
- return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
210
- }
211
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
212
- } as any
209
+ // static get key() {
210
+ // return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
211
+ // }
212
+ // // eslint-disable-next-line @typescript-eslint/no-explicit-any
213
+ // } as any
213
214
 
214
- return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, ServiceImpl>()
215
- }
215
+ // return proxify(assignTag<Id, Service>(key, creationError)(c))<Id, ServiceImpl>()
216
+ // }
216
217
 
217
218
  export function TagClassId<const Key extends string>(key: Key) {
218
219
  return <Id, ServiceImpl>() => {
@@ -220,24 +221,29 @@ export function TagClassId<const Key extends string>(key: Key) {
220
221
  Error.stackTraceLimit = 2
221
222
  const creationError = new Error()
222
223
  Error.stackTraceLimit = limit
223
- const c: {
224
- new(service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>
225
- toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>
226
- toLayerScoped: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, Exclude<R, Scope>>
227
- wrap: (service: ServiceImpl) => Id
228
- } = class {
229
- constructor(service: ServiceImpl) {
230
- // 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.
231
- return Object.assign(Object.create(service as any), service)
232
- }
233
- static wrap = (service: ServiceImpl) => new this(service)
234
- static toLayer = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
235
- return Layer.effect(this as any, Effect.map(eff, (_) => new this(_)))
236
- }
237
- static toLayerScoped = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
238
- return Layer.scoped(this as any, Effect.map(eff, (_) => new this(_)))
239
- }
240
- } as any
224
+ const c:
225
+ & (abstract new(
226
+ service: ServiceImpl
227
+ ) => Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>)
228
+ & {
229
+ toLayer: <E, R>(eff: Effect<Omit<Id, keyof Context.TagClassShape<any, any>>, E, R>) => Layer<Id, E, R>
230
+ toLayerScoped: <E, R>(
231
+ eff: Effect<Omit<Id, keyof Context.TagClassShape<any, any>>, E, R>
232
+ ) => Layer<Id, E, Exclude<R, Scope>>
233
+ of: (service: Omit<Id, keyof Context.TagClassShape<any, any>>) => Id
234
+ } = class {
235
+ constructor(service: any) {
236
+ // TODO: instead, wrap the service, and direct calls?
237
+ Object.assign(this, service)
238
+ }
239
+ static of = (service: ServiceImpl) => service
240
+ static toLayer = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
241
+ return Layer.effect(this as any, eff)
242
+ }
243
+ static toLayerScoped = <E, R>(eff: Effect<ServiceImpl, E, R>) => {
244
+ return Layer.scoped(this as any, eff)
245
+ }
246
+ } as any
241
247
 
242
248
  return proxify(assignTag<Id, Id>(key, creationError)(c))<Id, ServiceImpl>()
243
249
  }
@@ -252,34 +258,39 @@ export const TagClassMakeId = <ServiceImpl, R, E, const Key extends string>(
252
258
  Error.stackTraceLimit = 2
253
259
  const creationError = new Error()
254
260
  Error.stackTraceLimit = limit
255
- const c: {
256
- new(service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>
257
- toLayer: { (): Layer<Id, E, R>; <E, R>(eff: Effect<ServiceImpl, E, R>): Layer<Id, E, R> }
258
- toLayerScoped: {
259
- (): Layer<Id, E, Exclude<R, Scope>>
260
- <E, R>(eff: Effect<ServiceImpl, E, R>): Layer<Id, E, Exclude<R, Scope>>
261
- }
262
-
263
- wrap: (service: ServiceImpl) => Id
264
- make: Effect<Id, E, R>
265
- } = class {
266
- constructor(service: ServiceImpl) {
267
- // 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.
268
- return Object.assign(Object.create(service as any), service)
269
- }
261
+ const c:
262
+ & (abstract new(
263
+ service: ServiceImpl
264
+ ) => Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>)
265
+ & {
266
+ toLayer: {
267
+ (): Layer<Id, E, R>
268
+ <E, R>(eff: Effect<Omit<Id, keyof Context.TagClassShape<any, any>>, E, R>): Layer<Id, E, R>
269
+ }
270
+ toLayerScoped: {
271
+ (): Layer<Id, E, Exclude<R, Scope>>
272
+ <E, R>(eff: Effect<Context.TagClassShape<any, any>, E, R>): Layer<Id, E, Exclude<R, Scope>>
273
+ }
274
+ of: (service: Context.TagClassShape<any, any>) => Id
275
+ make: Effect<Id, E, R>
276
+ } = class {
277
+ constructor(service: any) {
278
+ // TODO: instead, wrap the service, and direct calls?
279
+ Object.assign(this, service)
280
+ }
270
281
 
271
- static wrap = (service: ServiceImpl) => new this(service)
272
- static make = Effect.andThen(make, (_) => new this(_))
273
- // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
274
- static toLayer = (arg?: any) => {
275
- return arg ? Layer.effect(this as any, arg) : Layer.effect(this as any, this.make)
276
- }
282
+ static of = (service: ServiceImpl) => service
283
+ static make = make
284
+ // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
285
+ static toLayer = (arg?: any) => {
286
+ return Layer.effect(this as any, arg ?? this.make)
287
+ }
277
288
 
278
- static toLayerScoped = (arg?: any) => {
279
- return arg ? Layer.scoped(this as any, arg) : Layer.scoped(this as any, this.make)
280
- }
281
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
282
- } as any
289
+ static toLayerScoped = (arg?: any) => {
290
+ return Layer.scoped(this as any, arg ?? this.make)
291
+ }
292
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
293
+ } as any
283
294
 
284
295
  return proxify(assignTag<Id, Id>(key, creationError)(c))<Id, ServiceImpl>()
285
296
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../src/schema.test.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../schema.test.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import { StringId } from "@effect-app/schema"
2
+ import { test } from "vitest"
2
3
 
3
4
  test("works", () => {
4
5
  console.log(StringId.make())
package/tsconfig.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "forceConsistentCasingInFileNames": true,
19
19
  "module": "Node16",
20
20
  "lib": [
21
- "esnext"
21
+ "ES2023"
22
22
  ],
23
23
  "baseUrl": "./",
24
24
  "target": "es2022",
@@ -31,16 +31,14 @@
31
31
  "noImplicitAny": true,
32
32
  "useUnknownInCatchVariables": true,
33
33
  "noImplicitThis": true,
34
- "outDir": "./dist",
34
+ "outDir": "build/dist",
35
35
  "resolveJsonModule": true,
36
36
  "moduleResolution": "Node16",
37
37
  "downlevelIteration": true,
38
38
  "noErrorTruncation": true,
39
39
  "types": [
40
40
  "vitest/globals"
41
- ],
42
- "rootDir": "./src",
43
- "tsBuildInfoFile": "./dist/.tsbuildinfo"
41
+ ]
44
42
  },
45
43
  "$schema": "https://json.schemastore.org/tsconfig",
46
44
  "display": "Strictest",
@@ -64,22 +62,12 @@
64
62
  "*.json"
65
63
  ]
66
64
  },
67
- "include": [
68
- "./src/**/*.ts"
69
- ],
65
+ "include": [],
70
66
  "exclude": [
71
67
  "**/node_modules",
72
68
  "**/build",
73
69
  "**/dist",
74
70
  "**/.*"
75
71
  ],
76
- "ts-node": {
77
- "require": [
78
- "tsconfig-paths/register"
79
- ],
80
- "compilerOptions": {
81
- "module": "CommonJS"
82
- }
83
- },
84
72
  "references": []
85
73
  }
package/tsconfig.json.bak CHANGED
@@ -1,43 +1,12 @@
1
1
  {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "lib": [
5
- "esnext",
6
- ],
7
- "moduleResolution": "Node16",
8
- "outDir": "./dist",
9
- "rootDir": "./src",
10
- "tsBuildInfoFile": "./dist/.tsbuildinfo",
11
- // "paths": {
12
- // "effect-app": [
13
- // "./src"
14
- // ],
15
- // "effect-app/*": [
16
- // "./src/*"
17
- // ],
18
- // },
2
+ "compilerOptions": {},
3
+ "extends": "../../tsconfig.base.json",
4
+ "references": [
5
+ {
6
+ "path": "./tsconfig.src.json"
19
7
  },
20
- "include": [
21
- // "./src/**/*.mts",
22
- "./src/**/*.ts"
23
- ],
24
- "ts-node": {
25
- "require": [
26
- "tsconfig-paths/register"
27
- ],
28
- "compilerOptions": {
29
- "module": "CommonJS"
30
- }
31
- },
32
- "references": [
33
- {
34
- "path": "../fluent-extensions"
35
- },
36
- {
37
- "path": "../schema"
38
- },
39
- {
40
- "path": "../core"
41
- },
42
- ]
8
+ {
9
+ "path": "./tsconfig.test.json"
10
+ }
11
+ ],
43
12
  }
@@ -0,0 +1,47 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "lib": [
5
+ "esnext"
6
+ ],
7
+ "tsBuildInfoFile": "./dist/.tsbuildinfo",
8
+ "esModuleInterop": true,
9
+ "baseUrl": "./",
10
+ "rootDir": "./src",
11
+ // keep in here, cause madge can't detect it from extended tsconfig
12
+ "moduleResolution": "Node16",
13
+ "outDir": "./dist"
14
+ },
15
+ "include": [
16
+ "./src/**/*.ts"
17
+ ],
18
+ "exclude": [
19
+ "./dist",
20
+ "*.test.ts",
21
+ "node_modules",
22
+ "build",
23
+ "lib",
24
+ "dist",
25
+ "**/*.d.ts.map",
26
+ ".git",
27
+ ".data",
28
+ "**/.*",
29
+ "**/*.tmp"
30
+ ],
31
+ "ts-node": {
32
+ "require": [
33
+ "tsconfig-paths/register"
34
+ ],
35
+ "compilerOptions": {
36
+ "module": "CommonJS"
37
+ }
38
+ },
39
+ "references": [
40
+ {
41
+ "path": "../schema"
42
+ },
43
+ {
44
+ "path": "../core"
45
+ },
46
+ ]
47
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "extends": "./tsconfig.src.json",
3
+ "compilerOptions": {
4
+ "rootDir": "./test",
5
+ "outDir": "./test/dist",
6
+ "tsBuildInfoFile": "./test/dist/.tsbuildinfo",
7
+ // "types": [
8
+ // "vitest/globals"
9
+ // ]
10
+ },
11
+ "include": [
12
+ "./test/**/*.ts"
13
+ ],
14
+ "exclude": [
15
+ "./dist",
16
+ "./test/dist",
17
+ "node_modules",
18
+ "build",
19
+ "lib",
20
+ "dist",
21
+ "**/*.d.ts.map",
22
+ ".git",
23
+ ".data",
24
+ "**/.*",
25
+ "**/*.tmp"
26
+ ],
27
+ "references": [
28
+ {
29
+ "path": "./tsconfig.src.json"
30
+ },
31
+ ]
32
+ }
package/.prettierignore DELETED
@@ -1,6 +0,0 @@
1
- **/node_modules/
2
-
3
- **/dist/
4
- **/*.js
5
- **/*.jsx
6
- **/*.d.ts
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- var _schema = require("@effect-app/schema");
4
- test("works", () => {
5
- console.log(_schema.StringId.make());
6
- });
7
- //# sourceMappingURL=schema.test.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.test.cjs","names":["_schema","require","test","console","log","StringId","make"],"sources":["../src/schema.test.ts"],"sourcesContent":[null],"mappings":";;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEAC,IAAI,CAAC,OAAO,EAAE,MAAK;EACjBC,OAAO,CAACC,GAAG,CAACC,gBAAQ,CAACC,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC"}