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 CHANGED
@@ -1,5 +1,17 @@
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
+
9
+ ## 0.182.1
10
+
11
+ ### Patch Changes
12
+
13
+ - f188543: update accessor shape
14
+
3
15
  ## 0.182.0
4
16
 
5
17
  ### Minor 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":";;;;;;;;;;;;AASA,IAAAA,KAAA,GAAAC,OAAA;AATA;AACA;AACA;;;;;;AASO,MAAMC,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGE,MAAM,EAAE;AAG5B,MAAgBC,oBAAoB;AAW1C;;;AAAAF,OAAA,CAAAE,oBAAA,GAAAA,oBAAA;AAGM,MAAgBC,aAA0B,SAAQD,oBAAwC;AAEhG;;;AAAAF,OAAA,CAAAG,aAAA,GAAAA,aAAA;AAGM,SAAUC,WAAWA,CAA+BC,CAAsB;EAC9E,OAAOA,CAAM;AACf;AAEA;;;AAGM,SAAUC,IAAIA,CAAsCD,CAAoB,EAAEE,CAAsB;EACpG,OAAOA,CAAM;AACf;AAEA,IAAIC,CAAC,GAAG,CAAC;AACT,MAAMC,QAAQ,GAAGA,CAAA,KAAM,kBAAkB,GAAGD,CAAC,EAAE;AAEzC,SAAUE,SAASA,CAAmBC,GAAY,EAAEC,aAAqB;EAC7E,OAA0BC,GAAM,IAAkC;IAChE,MAAMC,GAAG,GAAGC,aAAO,CAACC,UAAU,CAAcL,GAAG,IAAIF,QAAQ,EAAE,CAAC;IAC9D,IAAIQ,MAAM,GAAGH,GAAG;IAChB,IAAII,OAAO,CAACC,OAAO,CAACN,GAAG,CAAC,CAACO,QAAQ,CAAC,KAAK,CAAC,EAAE;MACxC,MAAM;QAAET,GAAG;QAAE,GAAGU;MAAI,CAAE,GAAGP,GAAG;MAC5BG,MAAM,GAAGI,IAAW;IACtB;IACA,MAAMd,CAAC,GAAGe,MAAM,CAACC,MAAM,CAACV,GAAG,EAAES,MAAM,CAACE,cAAc,CAACV,GAAG,CAAC,EAAEG,MAAM,CAAC;IAChE,IAAI,CAACL,aAAa,EAAE;MAClB,MAAMa,KAAK,GAAGC,KAAK,CAACC,eAAe;MACnCD,KAAK,CAACC,eAAe,GAAG,CAAC;MACzBf,aAAa,GAAG,IAAIc,KAAK,EAAE;MAC3BA,KAAK,CAACC,eAAe,GAAGF,KAAK;IAC/B;IACA;IACAH,MAAM,CAACM,cAAc,CAACrB,CAAC,EAAE,OAAO,EAAE;MAChCsB,GAAGA,CAAA;QACD,OAAOjB,aAAc,CAACkB,KAAK;MAC7B;KACD,CAAC;IACF,OAAOvB,CAAC;EACV,CAAC;AACH;AAqBO,MAAMwB,OAAO,GAAsBC,QAAW,IACrD,MAEuC;EAErC,MAAMC,KAAK,GAAG,IAAIC,GAAG,EAAE;EACvB,MAAMC,IAAI,GAAG,IAAIC,KAAK,CAACJ,QAAQ,EAAE;IAC/BH,GAAGA,CAACQ,OAAY,EAAEC,IAAS,EAAEC,SAAS;MACpC,IAAID,IAAI,KAAK,KAAK,EAAE;QAClB;QACA,OAAQE,IAAI,IAAKC,YAAM,CAACC,OAAO,CAACV,QAAQ,EAAEQ,IAAI,CAAC;MACjD;MACA,IAAIF,IAAI,IAAIN,QAAQ,EAAE;QACpB;QACA,OAAOA,QAAQ,CAACM,IAAI,CAAC;MACvB;MACA,IAAIL,KAAK,CAACU,GAAG,CAACL,IAAI,CAAC,EAAE;QACnB,OAAOL,KAAK,CAACJ,GAAG,CAACS,IAAI,CAAC;MACxB;MACA;MACA,MAAMM,EAAE,GAAGA,CAAC,GAAGC,IAAgB,KAAKJ,YAAM,CAACC,OAAO,CAACV,QAAQ,EAAGc,CAAM,IAAKA,CAAC,CAACR,IAAI,CAAC,CAAC,GAAGO,IAAI,CAAC,CAAC;MAC1F;MACA,MAAME,EAAE,GAAGN,YAAM,CAACC,OAAO,CAACV,QAAQ,EAAGc,CAAC,IAAKA,CAAC,CAACR,IAAI,CAAC,CAAC;MACnDhB,MAAM,CAACC,MAAM,CAACqB,EAAE,EAAEG,EAAE,CAAC;MACrBzB,MAAM,CAAC0B,cAAc,CAACJ,EAAE,EAAEtB,MAAM,CAACE,cAAc,CAACuB,EAAE,CAAC,CAAC;MACpDd,KAAK,CAACgB,GAAG,CAACX,IAAI,EAAEM,EAAE,CAAC;MACnB,OAAOA,EAAE;IACX;GACD,CAAC;EACF,OAAOT,IAAI;AACb,CAAC;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAAnC,OAAA,CAAA+B,OAAA,GAAAA,OAAA;AAEM,SAAUmB,UAAUA,CAA2BvC,GAAQ;EAC3D,OAAO,MAAsB;IAC3B,MAAMc,KAAK,GAAGC,KAAK,CAACC,eAAe;IACnCD,KAAK,CAACC,eAAe,GAAG,CAAC;IACzB,MAAMf,aAAa,GAAG,IAAIc,KAAK,EAAE;IACjCA,KAAK,CAACC,eAAe,GAAGF,KAAK;IAC7B,MAAM0B,CAAC,GAUD;MACFC,YAAYC,OAAY;QACtB;QACA/B,MAAM,CAACC,MAAM,CAAC,IAAI,EAAE8B,OAAO,CAAC;MAC9B;MACA,OAAOC,EAAE,GAAID,OAAoB,IAAKA,OAAO;MAC7C,OAAOE,OAAO,GAAUC,GAA8B,IAAI;QACxD,OAAOC,WAAK,CAACC,MAAM,CAAC,IAAW,EAAEF,GAAG,CAAC;MACvC,CAAC;MACD,OAAOG,aAAa,GAAUH,GAA8B,IAAI;QAC9D,OAAOC,WAAK,CAACG,MAAM,CAAC,IAAW,EAAEJ,GAAG,CAAC;MACvC,CAAC;KACK;IAEV,OAAOzB,OAAO,CAACrB,SAAS,CAASC,GAAG,EAAEC,aAAa,CAAC,CAACuC,CAAC,CAAC,CAAC,EAAmB;EAC7E,CAAC;AACH;AAEO,MAAMU,cAAc,GAAGA,CAC5BlD,GAAQ,EACRL,IAA+B,KAEjC,MAAS;EACP,MAAMmB,KAAK,GAAGC,KAAK,CAACC,eAAe;EACnCD,KAAK,CAACC,eAAe,GAAG,CAAC;EACzB,MAAMf,aAAa,GAAG,IAAIc,KAAK,EAAE;EACjCA,KAAK,CAACC,eAAe,GAAGF,KAAK;EAC7B,MAAM0B,CAAC,GAeD;IACFC,YAAYC,OAAY;MACtB;MACA/B,MAAM,CAACC,MAAM,CAAC,IAAI,EAAE8B,OAAO,CAAC;IAC9B;IAEA,OAAOC,EAAE,GAAID,OAAoB,IAAKA,OAAO;IAC7C,OAAO/C,IAAI,GAAGA,IAAI;IAClB;IACA,OAAOiD,OAAO,GAAIO,GAAS,IAAI;MAC7B,OAAOL,WAAK,CAACC,MAAM,CAAC,IAAW,EAAEI,GAAG,IAAI,IAAI,CAACxD,IAAI,CAAC;IACpD,CAAC;IAED,OAAOqD,aAAa,GAAIG,GAAS,IAAI;MACnC,OAAOL,WAAK,CAACG,MAAM,CAAC,IAAW,EAAEE,GAAG,IAAI,IAAI,CAACxD,IAAI,CAAC;IACpD,CAAC;GAEK;EAEV,OAAOyB,OAAO,CAACrB,SAAS,CAASC,GAAG,EAAEC,aAAa,CAAC,CAACuC,CAAC,CAAC,CAAC,EAAmB;AAC7E,CAAC;AAAAnD,OAAA,CAAA6D,cAAA,GAAAA,cAAA"}
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 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> & { [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> & { [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<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
- } & 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
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQ7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUdsQyxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQU9EOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixhQUEwQixTQUFRLG9CQUF3QztDQUFHO0FBRW5HOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBK0IsQ0FBc0I7SUFDOUUsT0FBTyxDQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFzQyxDQUFvQixFQUFFLENBQXNCO0lBQ3BHLE9BQU8sQ0FBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFBO0FBRS9DLE1BQU0sVUFBVSxTQUFTLENBQW1CLEdBQVksRUFBRSxhQUFxQjtJQUM3RSxPQUFPLENBQW1CLEdBQU0sRUFBZ0MsRUFBRTtRQUNoRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFjLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzlELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQTtRQUNoQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQTtZQUM1QixNQUFNLEdBQUcsSUFBVyxDQUFBO1FBQ3RCLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ2hFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFBO1lBQ25DLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO1lBQ3pCLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1lBQzNCLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1FBQy9CLENBQUM7UUFDRCx5R0FBeUc7UUFDekcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFO1lBQ2hDLEdBQUc7Z0JBQ0QsT0FBTyxhQUFjLENBQUMsS0FBSyxDQUFBO1lBQzdCLENBQUM7U0FDRixDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUMsQ0FBQTtBQUNILENBQUM7QUFvQkQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQW1CLFFBQVcsRUFBRSxFQUFFLENBQ3pELEdBRXFDLEVBQUU7SUFFckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDL0IsR0FBRyxDQUFDLE9BQVksRUFBRSxJQUFTLEVBQUUsU0FBUztZQUNwQyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDbkIsdUJBQXVCO2dCQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNqRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLHVCQUF1QjtnQkFDdkIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkIsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNwQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDeEIsQ0FBQztZQUNELHVCQUF1QjtZQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBZ0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDMUYsdUJBQXVCO1lBQ3ZCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUNuRCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUNyQixNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDcEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDbkIsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO0tBQ0YsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsR0FBUSxFQUNSLElBQStCLEVBQy9CLEVBQUUsQ0FDSixHQUFPLEVBQUU7SUFDUCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFBO0lBQ25DLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO0lBQ3pCLE1BQU0sYUFBYSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7SUFDakMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7SUFDN0IsTUFBTSxDQUFDLEdBSUg7UUFDRixNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNwQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBVyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3hDLENBQUMsQ0FBQTtRQUVELE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQzFCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEMsQ0FBQyxDQUFBO0tBRUssQ0FBQTtJQUVSLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBa0IsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQW1CLENBQUE7QUFDdEYsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBZ0MsR0FBWTtJQUNsRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFBO0lBQ25DLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFBO0lBQ3pCLE1BQU0sYUFBYSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7SUFDakMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7SUFDN0IsTUFBTSxDQUFDLEdBSUg7UUFDRixZQUFZLE9BQW9CO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzlCLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFTO1FBQ3BCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBTyxHQUE4QixFQUFFLEVBQUU7WUFDeEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZFLENBQUMsQ0FBQTtRQUNELE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBTyxHQUE4QixFQUFFLEVBQUU7WUFDOUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZFLENBQUMsQ0FBQTtRQUNELE1BQU0sS0FBSyxHQUFHO1lBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNGLENBQUM7S0FDSyxDQUFBO0lBRVIsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFjLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFtQixDQUFBO0FBQ2xGLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FDMUIsSUFBK0IsRUFDL0IsR0FBWSxFQUNaLEVBQUUsQ0FDSixHQUFxQixFQUFFO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUE7SUFDbkMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUE7SUFDekIsTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtJQUNqQyxLQUFLLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQTtJQUM3QixNQUFNLENBQUMsR0FLSDtRQUNGLFlBQVksT0FBb0I7WUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQVE7UUFDbkIsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0RCxpSEFBaUg7UUFDakgsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDcEIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDN0MsQ0FBQyxDQUFBO1FBRUQsTUFBTSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDN0MsQ0FBQyxDQUFBO1FBRUQsTUFBTSxLQUFLLEdBQUc7WUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0YsQ0FBQztLQUVLLENBQUE7SUFFUixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQWMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQW1CLENBQUE7QUFDbEYsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBMkIsR0FBUTtJQUMzRCxPQUFPLEdBQW9CLEVBQUU7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQTtRQUNuQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQTtRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1FBQ2pDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxHQUtIO1lBQ0YsWUFBWSxPQUFvQjtnQkFDOUIsd0tBQXdLO2dCQUN4SyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3pELE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBTyxHQUE4QixFQUFFLEVBQUU7Z0JBQ3hELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFXLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN2RSxDQUFDLENBQUE7WUFDRCxNQUFNLENBQUMsYUFBYSxHQUFHLENBQU8sR0FBOEIsRUFBRSxFQUFFO2dCQUM5RCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkUsQ0FBQyxDQUFBO1NBQ0ssQ0FBQTtRQUVSLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBUyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBbUIsQ0FBQTtJQUM3RSxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzVCLEdBQVEsRUFDUixJQUErQixFQUMvQixFQUFFLENBQ0osR0FBTyxFQUFFO0lBQ1AsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQTtJQUNuQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQTtJQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO0lBQ2pDLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO0lBQzdCLE1BQU0sQ0FBQyxHQVVIO1FBQ0YsWUFBWSxPQUFvQjtZQUM5Qix3S0FBd0s7WUFDeEssT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUQsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN6RCxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RELGlIQUFpSDtRQUNqSCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBUyxFQUFFLEVBQUU7WUFDN0IsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEYsQ0FBQyxDQUFBO1FBRUQsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQVMsRUFBRSxFQUFFO1lBQ25DLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BGLENBQUMsQ0FBQTtLQUVLLENBQUE7SUFFUixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQVMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQW1CLENBQUE7QUFDN0UsQ0FBQyxDQUFBIn0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQ7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUdsQyxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQU9EOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixhQUEwQixTQUFRLG9CQUF3QztDQUFHO0FBRW5HOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBK0IsQ0FBc0I7SUFDOUUsT0FBTyxDQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFzQyxDQUFvQixFQUFFLENBQXNCO0lBQ3BHLE9BQU8sQ0FBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFBO0FBRS9DLE1BQU0sVUFBVSxTQUFTLENBQW1CLEdBQVksRUFBRSxhQUFxQjtJQUM3RSxPQUFPLENBQW1CLEdBQU0sRUFBZ0MsRUFBRTtRQUNoRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFjLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzlELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQTtRQUNoQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQTtZQUM1QixN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