effect-app 0.154.3 → 0.155.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,19 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 0.155.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 71dbfc3: update packages
8
+ - 1cc7ee7: cleanup service tags
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies [71dbfc3]
13
+ - @effect-app/fluent-extensions@0.127.0
14
+ - @effect-app/schema@0.186.0
15
+ - @effect-app/core@0.132.0
16
+
3
17
  ## 0.154.3
4
18
 
5
19
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"_global.cjs","names":["require"],"sources":["../_src/_global.ts"],"sourcesContent":[null],"mappings":";;AASAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAOAA,OAAA;AAKAA,OAAA;AAIAA,OAAA;AA+BAA,OAAA;AAKAA,OAAA;AAEAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAEAA,OAAA;AACAA,OAAA"}
1
+ {"version":3,"file":"_global.cjs","names":["require"],"sources":["../_src/_global.ts"],"sourcesContent":[null],"mappings":";;AASAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAKAA,OAAA;AAOAA,OAAA;AAKAA,OAAA;AAIAA,OAAA;AA+BAA,OAAA;AAaAA,OAAA;AAEAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAEAA,OAAA;AACAA,OAAA"}
package/_cjs/service.cjs CHANGED
@@ -4,15 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ServiceTagged = exports.ServiceTag = exports.PhantomTypeParameter = void 0;
7
- exports.ServiceTaggedClass = ServiceTaggedClass;
8
7
  exports.TagClass = TagClass;
9
- exports.TagClassLegacy = TagClassLegacy;
10
- exports.TagTypeId = exports.TagClassMake = void 0;
8
+ exports.TagClassId = TagClassId;
9
+ exports.TagMake = exports.TagClassMakeId = exports.TagClassMake = void 0;
11
10
  exports.assignTag = assignTag;
12
11
  exports.make = make;
13
12
  exports.makeService = makeService;
14
13
  var tsplus_module_1 = _interopRequireWildcard(require("effect/Context"));
15
14
  var tsplus_module_2 = _interopRequireWildcard(require("effect/Layer"));
15
+ var tsplus_module_3 = _interopRequireWildcard(require("effect/Effect"));
16
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
18
  const ServiceTag = exports.ServiceTag = Symbol();
@@ -35,40 +35,84 @@ function makeService(_) {
35
35
  function make(_, t) {
36
36
  return t;
37
37
  }
38
- const TagTypeId = exports.TagTypeId = Symbol.for("effect/Context/Tag");
39
38
  let i = 0;
40
39
  const randomId = () => "unknown-service-" + i++;
41
- function assignTag(key) {
40
+ function assignTag(key, creationError) {
42
41
  return cls => {
43
42
  const tag = tsplus_module_1.GenericTag(key ?? randomId());
44
- const t = Object.assign(cls, Object.getPrototypeOf(tag), tag);
45
- const limit = Error.stackTraceLimit;
46
- Error.stackTraceLimit = 4; // TODO
47
- const creationError = new Error();
48
- Error.stackTraceLimit = limit;
43
+ let fields = tag;
44
+ if (Reflect.ownKeys(cls).includes("key")) {
45
+ const {
46
+ key,
47
+ ...rest
48
+ } = tag;
49
+ fields = rest;
50
+ }
51
+ const t = Object.assign(cls, Object.getPrototypeOf(tag), fields);
52
+ if (!creationError) {
53
+ const limit = Error.stackTraceLimit;
54
+ Error.stackTraceLimit = 2;
55
+ creationError = new Error();
56
+ Error.stackTraceLimit = limit;
57
+ }
49
58
  // the stack is used to get the location of the tag definition, if a service is not found in the registry
50
59
  Object.defineProperty(t, "stack", {
51
60
  get() {
52
- // remove one line as assignTag is generally used inside a class constructor function
53
- return creationError.stack?.split("\n").slice(1).join("\n");
61
+ return creationError.stack;
54
62
  }
55
63
  });
56
64
  return t;
57
65
  };
58
66
  }
67
+ const TagMake = () => (key, make) => {
68
+ const limit = Error.stackTraceLimit;
69
+ Error.stackTraceLimit = 2;
70
+ const creationError = new Error();
71
+ Error.stackTraceLimit = limit;
72
+ const c = class {
73
+ static toLayer() {
74
+ return tsplus_module_2.effect(this)(make);
75
+ }
76
+ static toLayerScoped() {
77
+ return tsplus_module_2.scoped(this)(make);
78
+ }
79
+ };
80
+ return assignTag(key, creationError)(c);
81
+ };
82
+ exports.TagMake = TagMake;
59
83
  function TagClass(key) {
84
+ const limit = Error.stackTraceLimit;
85
+ Error.stackTraceLimit = 2;
86
+ const creationError = new Error();
87
+ Error.stackTraceLimit = limit;
60
88
  const c = class {
61
89
  constructor(service) {
62
90
  Object.assign(this, service);
63
91
  }
92
+ static toLayer(eff) {
93
+ return tsplus_module_2.effect(this)(tsplus_module_3.map(eff, _ => new this(_)));
94
+ }
95
+ static toLayerScoped(eff) {
96
+ return tsplus_module_2.scoped(this)(tsplus_module_3.map(eff, _ => new this(_)));
97
+ }
98
+ static get key() {
99
+ return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
100
+ }
64
101
  };
65
- return assignTag(key)(c);
102
+ return assignTag(key, creationError)(c);
66
103
  }
67
104
  const TagClassMake = () => (make, key) => {
105
+ const limit = Error.stackTraceLimit;
106
+ Error.stackTraceLimit = 2;
107
+ const creationError = new Error();
108
+ Error.stackTraceLimit = limit;
68
109
  const c = class {
69
110
  constructor(service) {
70
111
  Object.assign(this, service);
71
112
  }
113
+ static make() {
114
+ return make.andThen(_ => new this(_));
115
+ }
72
116
  // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
73
117
  static toLayer() {
74
118
  return tsplus_module_2.effect(this)(make);
@@ -76,22 +120,54 @@ const TagClassMake = () => (make, key) => {
76
120
  static toLayerScoped() {
77
121
  return tsplus_module_2.scoped(this)(make);
78
122
  }
123
+ static get key() {
124
+ return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
125
+ }
79
126
  };
80
- return assignTag(key)(c);
127
+ return assignTag(key, creationError)(c);
81
128
  };
82
129
  exports.TagClassMake = TagClassMake;
83
- function TagClassLegacy(key) {
84
- class TagClassLegacy {}
85
- return assignTag(key)(TagClassLegacy);
86
- }
87
- /** @deprecated use `Id` of TagClass for unique id */
88
- function ServiceTaggedClass() {
89
- return _ => {
90
- class ServiceTaggedClassC {}
91
- ServiceTaggedClassC.make = t => {
92
- return t;
130
+ function TagClassId() {
131
+ return key => {
132
+ const limit = Error.stackTraceLimit;
133
+ Error.stackTraceLimit = 2;
134
+ const creationError = new Error();
135
+ Error.stackTraceLimit = limit;
136
+ const c = class {
137
+ constructor(service) {
138
+ Object.assign(this, service);
139
+ }
140
+ static toLayer(eff) {
141
+ return tsplus_module_2.effect(this)(tsplus_module_3.map(eff, _ => new this(_)));
142
+ }
143
+ static toLayerScoped(eff) {
144
+ return tsplus_module_2.scoped(this)(tsplus_module_3.map(eff, _ => new this(_)));
145
+ }
93
146
  };
94
- return assignTag()(ServiceTaggedClassC);
147
+ return assignTag(key, creationError)(c);
95
148
  };
96
149
  }
150
+ const TagClassMakeId = () => (key, make) => {
151
+ const limit = Error.stackTraceLimit;
152
+ Error.stackTraceLimit = 2;
153
+ const creationError = new Error();
154
+ Error.stackTraceLimit = limit;
155
+ const c = class {
156
+ constructor(service) {
157
+ Object.assign(this, service);
158
+ }
159
+ static make() {
160
+ return make.andThen(_ => new this(_));
161
+ }
162
+ // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
163
+ static toLayer() {
164
+ return tsplus_module_2.effect(this)(make);
165
+ }
166
+ static toLayerScoped() {
167
+ return tsplus_module_2.scoped(this)(make);
168
+ }
169
+ };
170
+ return assignTag(key, creationError)(c);
171
+ };
172
+ exports.TagClassMakeId = TagClassMakeId;
97
173
  //# sourceMappingURL=service.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.cjs","names":["ServiceTag","exports","Symbol","PhantomTypeParameter","ServiceTagged","makeService","_","make","t","TagTypeId","for","i","randomId","assignTag","key","cls","tag","tsplus_module_1","GenericTag","Object","assign","getPrototypeOf","limit","Error","stackTraceLimit","creationError","defineProperty","get","stack","split","slice","join","TagClass","c","constructor","service","TagClassMake","toLayer","tsplus_module_2","effect","toLayerScoped","scoped","TagClassLegacy","ServiceTaggedClass","ServiceTaggedClassC"],"sources":["../_src/service.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"service.cjs","names":["ServiceTag","exports","Symbol","PhantomTypeParameter","ServiceTagged","makeService","_","make","t","i","randomId","assignTag","key","creationError","cls","tag","tsplus_module_1","GenericTag","fields","Reflect","ownKeys","includes","rest","Object","assign","getPrototypeOf","limit","Error","stackTraceLimit","defineProperty","get","stack","TagMake","c","toLayer","tsplus_module_2","effect","toLayerScoped","scoped","TagClass","constructor","service","eff","tsplus_module_3","map","_key","split","name","TagClassMake","andThen","TagClassId","TagClassMakeId"],"sources":["../_src/service.ts"],"sourcesContent":[null],"mappings":"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"}
package/_src/_global.ts CHANGED
@@ -104,7 +104,15 @@ import {
104
104
  /**
105
105
  * @tsplus global
106
106
  */
107
- import { assignTag, ServiceTagged, TagClass, TagClassMake } from "effect-app/service"
107
+ import {
108
+ assignTag,
109
+ ServiceTagged,
110
+ TagClass,
111
+ TagClassId,
112
+ TagClassMake,
113
+ TagClassMakeId,
114
+ TagMake
115
+ } from "effect-app/service"
108
116
 
109
117
  /**
110
118
  * @tsplus global
package/_src/service.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * https://github.com/microsoft/TypeScript/issues/52644
7
7
  */
8
8
 
9
- import type { TagTypeId as TagTypeIdOriginal } from "effect/Context"
9
+ import type { Context } from "effect"
10
10
 
11
11
  export const ServiceTag = Symbol()
12
12
  export type ServiceTag = typeof ServiceTag
@@ -36,40 +36,87 @@ export function make<T extends ServiceTagged<any>, I = T>(_: Tag<I, T>, t: Omit<
36
36
  return t as T
37
37
  }
38
38
 
39
- export const TagTypeId: TagTypeIdOriginal = Symbol.for("effect/Context/Tag") as unknown as TagTypeIdOriginal
40
- export type TagTypeId = typeof TagTypeId
41
-
42
39
  let i = 0
43
40
  const randomId = () => "unknown-service-" + i++
44
41
 
45
- export function assignTag<Id, Service = Id>(key?: string) {
42
+ export function assignTag<Id, Service = Id>(key?: string, creationError?: Error) {
46
43
  return <S extends object>(cls: S): S & Tag<Id, Service> => {
47
44
  const tag = GenericTag<Id, Service>(key ?? randomId())
48
- const t = Object.assign(cls, Object.getPrototypeOf(tag), tag)
49
- const limit = Error.stackTraceLimit
50
- Error.stackTraceLimit = 4 // TODO
51
- const creationError = new Error()
52
- Error.stackTraceLimit = limit
45
+ let fields = tag
46
+ if (Reflect.ownKeys(cls).includes("key")) {
47
+ const { key, ...rest } = tag
48
+ fields = rest as any
49
+ }
50
+ const t = Object.assign(cls, Object.getPrototypeOf(tag), fields)
51
+ if (!creationError) {
52
+ const limit = Error.stackTraceLimit
53
+ Error.stackTraceLimit = 2
54
+ creationError = new Error()
55
+ Error.stackTraceLimit = limit
56
+ }
53
57
  // the stack is used to get the location of the tag definition, if a service is not found in the registry
54
58
  Object.defineProperty(t, "stack", {
55
59
  get() {
56
- // remove one line as assignTag is generally used inside a class constructor function
57
- return creationError.stack?.split("\n").slice(1).join("\n")
60
+ return creationError!.stack
58
61
  }
59
62
  })
60
63
  return t
61
64
  }
62
65
  }
63
66
 
67
+ export const TagMake = <Id>() =>
68
+ <ServiceImpl, R, E, const Key extends string>(
69
+ key: Key,
70
+ make: Effect<ServiceImpl, E, R>
71
+ ) => {
72
+ const limit = Error.stackTraceLimit
73
+ Error.stackTraceLimit = 2
74
+ const creationError = new Error()
75
+ Error.stackTraceLimit = limit
76
+ const c: {
77
+ new(): Context.TagClassShape<Key, ServiceImpl>
78
+ toLayer: () => Layer<Id, E, R>
79
+ toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>
80
+ } = class {
81
+ static toLayer() {
82
+ return make.toLayer(this as any)
83
+ }
84
+
85
+ static toLayerScoped() {
86
+ return make.toLayerScoped(this as any)
87
+ }
88
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
+ } as any
90
+
91
+ return assignTag<Id, ServiceImpl>(key, creationError)(c)
92
+ }
93
+
64
94
  export function TagClass<Id, ServiceImpl, Service = Id>(key?: string) {
65
- const c: { new(service: ServiceImpl): Readonly<ServiceImpl> } = class {
95
+ const limit = Error.stackTraceLimit
96
+ Error.stackTraceLimit = 2
97
+ const creationError = new Error()
98
+ Error.stackTraceLimit = limit
99
+ const c: {
100
+ new(service: ServiceImpl): Readonly<ServiceImpl>
101
+ toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>
102
+ toLayerScoped: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, Exclude<R, Scope>>
103
+ } = class {
66
104
  constructor(service: ServiceImpl) {
67
105
  Object.assign(this, service)
68
106
  }
69
- // static readonly Id: Id
107
+ static _key?: string
108
+ static toLayer<E, R>(eff: Effect<ServiceImpl, E, R>) {
109
+ return eff.map((_) => new this(_)).toLayer(this as any)
110
+ }
111
+ static toLayerScoped<E, R>(eff: Effect<ServiceImpl, E, R>) {
112
+ return eff.map((_) => new this(_)).toLayerScoped(this as any)
113
+ }
114
+ static get key() {
115
+ return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
116
+ }
70
117
  } as any
71
118
 
72
- return assignTag<Id, Service>(key)(c)
119
+ return assignTag<Id, Service>(key, creationError)(c)
73
120
  }
74
121
 
75
122
  export const TagClassMake = <Id, Service = Id>() =>
@@ -77,14 +124,23 @@ export const TagClassMake = <Id, Service = Id>() =>
77
124
  make: Effect<ServiceImpl, E, R>,
78
125
  key?: string
79
126
  ) => {
127
+ const limit = Error.stackTraceLimit
128
+ Error.stackTraceLimit = 2
129
+ const creationError = new Error()
130
+ Error.stackTraceLimit = limit
80
131
  const c: {
81
132
  new(service: ServiceImpl): Readonly<ServiceImpl>
82
- toLayer: () => Layer<Service, E, R>
83
- toLayerScoped: () => Layer<Service, E, Exclude<R, Scope>>
133
+ toLayer: () => Layer<Id, E, R>
134
+ toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>
135
+ make: Effect<Id, E, R>
84
136
  } = class {
85
137
  constructor(service: ServiceImpl) {
86
138
  Object.assign(this, service)
87
139
  }
140
+ static _key: string
141
+ static make() {
142
+ return make.andThen((_) => new this(_))
143
+ }
88
144
  // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
89
145
  static toLayer() {
90
146
  return make.toLayer(this as any)
@@ -93,27 +149,73 @@ export const TagClassMake = <Id, Service = Id>() =>
93
149
  static toLayerScoped() {
94
150
  return make.toLayerScoped(this as any)
95
151
  }
152
+
153
+ static get key() {
154
+ return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name)
155
+ }
96
156
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
157
  } as any
98
158
 
99
- return assignTag<Id, Service>(key)(c)
159
+ return assignTag<Id, Service>(key, creationError)(c)
100
160
  }
101
161
 
102
- export function TagClassLegacy<Id, Service = Id>(key?: string) {
103
- abstract class TagClassLegacy {}
162
+ export function TagClassId<Id, ServiceImpl>() {
163
+ return <const Key extends string>(key: Key) => {
164
+ const limit = Error.stackTraceLimit
165
+ Error.stackTraceLimit = 2
166
+ const creationError = new Error()
167
+ Error.stackTraceLimit = limit
168
+ const c: {
169
+ new(service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>
170
+ toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>
171
+ toLayerScoped: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, Exclude<R, Scope>>
172
+ } = class {
173
+ constructor(service: ServiceImpl) {
174
+ Object.assign(this, service)
175
+ }
176
+ static toLayer<E, R>(eff: Effect<ServiceImpl, E, R>) {
177
+ return eff.map((_) => new this(_)).toLayer(this as any)
178
+ }
179
+ static toLayerScoped<E, R>(eff: Effect<ServiceImpl, E, R>) {
180
+ return eff.map((_) => new this(_)).toLayerScoped(this as any)
181
+ }
182
+ } as any
104
183
 
105
- return assignTag<Id, Service>(key)(TagClassLegacy)
184
+ return assignTag<Id, Id>(key, creationError)(c)
185
+ }
106
186
  }
107
187
 
108
- /** @deprecated use `Id` of TagClass for unique id */
109
- export function ServiceTaggedClass<Id, Service = Id>() {
110
- return <Key extends PropertyKey>(_: Key) => {
111
- abstract class ServiceTaggedClassC {
112
- static make = (t: Omit<Service, Key>) => {
113
- return t as Service
114
- }
188
+ export const TagClassMakeId = <Id>() =>
189
+ <ServiceImpl, R, E, const Key extends string>(
190
+ key: Key,
191
+ make: Effect<ServiceImpl, E, R>
192
+ ) => {
193
+ const limit = Error.stackTraceLimit
194
+ Error.stackTraceLimit = 2
195
+ const creationError = new Error()
196
+ Error.stackTraceLimit = limit
197
+ const c: {
198
+ new(service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>
199
+ toLayer: () => Layer<Id, E, R>
200
+ toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>
201
+ make: Effect<Id, E, R>
202
+ } = class {
203
+ constructor(service: ServiceImpl) {
204
+ Object.assign(this, service)
205
+ }
206
+ static make() {
207
+ return make.andThen((_) => new this(_))
208
+ }
209
+ // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
210
+ static toLayer() {
211
+ return make.toLayer(this as any)
115
212
  }
116
213
 
117
- return assignTag<Id, Service>()(ServiceTaggedClassC)
118
- }
214
+ static toLayerScoped() {
215
+ return make.toLayerScoped(this as any)
216
+ }
217
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
218
+ } as any
219
+
220
+ return assignTag<Id, Id>(key, creationError)(c)
119
221
  }
package/dist/_global.d.ts CHANGED
@@ -57,7 +57,7 @@ import { Fnc, NonEmptySet, ReadonlySet, Record, S, Utils } from "effect-app";
57
57
  /**
58
58
  * @tsplus global
59
59
  */
60
- import { assignTag, ServiceTagged, TagClass, TagClassMake } from "effect-app/service";
60
+ import { assignTag, ServiceTagged, TagClass, TagClassId, TagClassMake, TagClassMakeId, TagMake } from "effect-app/service";
61
61
  /**
62
62
  * @tsplus global
63
63
  */
@@ -1 +1 @@
1
- {"version":3,"file":"_global.d.ts","sourceRoot":"","sources":["../_src/_global.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAEvD;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE3E;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEnE;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE3E;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAIxD;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE3D;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACrF;;GAEG;AACH,OAAO,EASL,GAAG,EAMH,WAAW,EAEX,WAAW,EAGX,MAAM,EAEN,CAAC,EAED,KAAK,EAEN,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAErF;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,0BAA0B,CAAA;AACjC,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AAEnC,OAAO,kBAAkB,CAAA;AACzB,OAAO,kBAAkB,CAAA"}
1
+ {"version":3,"file":"_global.d.ts","sourceRoot":"","sources":["../_src/_global.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAEvD;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE3E;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEnE;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE3E;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAIxD;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE3D;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACrF;;GAEG;AACH,OAAO,EASL,GAAG,EAMH,WAAW,EAEX,WAAW,EAGX,MAAM,EAEN,CAAC,EAED,KAAK,EAEN,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,OAAO,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,cAAc,EACd,OAAO,EACR,MAAM,oBAAoB,CAAA;AAE3B;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,0BAA0B,CAAA;AACjC,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AAEnC,OAAO,kBAAkB,CAAA;AACzB,OAAO,kBAAkB,CAAA"}
package/dist/_global.js CHANGED
@@ -73,4 +73,4 @@ import "@effect-app/core/Prelude";
73
73
  import "@effect-app/schema/_global";
74
74
  import "./_global.ext.js";
75
75
  import "./refinements.js";
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2dsb2JhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvX2dsb2JhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsTUFBTTtBQUNOLG9CQUFvQjtBQUNwQixNQUFNO0FBQ04sd0RBQXdEO0FBRXhEOztHQUVHO0FBQ0gsT0FBd0IsZ0JBQWdCLENBQUE7QUFFeEM7O0dBRUc7QUFDSCxPQUF1QixlQUFlLENBQUE7QUFFdEM7O0dBRUc7QUFDSCxPQUEwQiw2QkFBNkIsQ0FBQTtBQUV2RDs7R0FFRztBQUNILE9BQXVCLGVBQWUsQ0FBQTtBQUV0Qzs7R0FFRztBQUNILE9BQTRCLG9CQUFvQixDQUFBO0FBRWhEOztHQUVHO0FBQ0gsT0FBK0IsdUJBQXVCLENBQUE7QUFFdEQ7O0dBRUc7QUFDSCxPQUE2RCxjQUFjLENBQUE7QUFFM0U7O0dBRUc7QUFDSCxPQUF3QixnQkFBZ0IsQ0FBQTtBQUV4Qzs7R0FFRztBQUNILE9BQThCLHFDQUFxQyxDQUFBO0FBRW5FOztHQUVHO0FBQ0gsT0FBdUQsb0JBQW9CLENBQUE7QUFFM0U7O0dBRUc7QUFDSCxPQUFnQyx3QkFBd0IsQ0FBQTtBQUV4RCxxREFBcUQ7QUFFckQ7O0dBRUc7QUFDSCxPQUEwQyxpQkFBaUIsQ0FBQTtBQUUzRDs7R0FFRztBQUNILE9BQW1FLGtCQUFrQixDQUFBO0FBQ3JGOztHQUVHO0FBQ0gsT0EwQk8sWUFBWSxDQUFBO0FBRW5COztHQUVHO0FBQ0gsT0FBaUUsb0JBQW9CLENBQUE7QUFFckY7O0dBRUc7QUFDSCxPQUErQixZQUFZLENBQUE7QUFFM0MsT0FBTywwQkFBMEIsQ0FBQTtBQUNqQyxPQUFPLDBCQUEwQixDQUFBO0FBQ2pDLE9BQU8sNEJBQTRCLENBQUE7QUFFbkMsT0FBTyxrQkFBa0IsQ0FBQTtBQUN6QixPQUFPLGtCQUFrQixDQUFBIn0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2dsb2JhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvX2dsb2JhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsTUFBTTtBQUNOLG9CQUFvQjtBQUNwQixNQUFNO0FBQ04sd0RBQXdEO0FBRXhEOztHQUVHO0FBQ0gsT0FBd0IsZ0JBQWdCLENBQUE7QUFFeEM7O0dBRUc7QUFDSCxPQUF1QixlQUFlLENBQUE7QUFFdEM7O0dBRUc7QUFDSCxPQUEwQiw2QkFBNkIsQ0FBQTtBQUV2RDs7R0FFRztBQUNILE9BQXVCLGVBQWUsQ0FBQTtBQUV0Qzs7R0FFRztBQUNILE9BQTRCLG9CQUFvQixDQUFBO0FBRWhEOztHQUVHO0FBQ0gsT0FBK0IsdUJBQXVCLENBQUE7QUFFdEQ7O0dBRUc7QUFDSCxPQUE2RCxjQUFjLENBQUE7QUFFM0U7O0dBRUc7QUFDSCxPQUF3QixnQkFBZ0IsQ0FBQTtBQUV4Qzs7R0FFRztBQUNILE9BQThCLHFDQUFxQyxDQUFBO0FBRW5FOztHQUVHO0FBQ0gsT0FBdUQsb0JBQW9CLENBQUE7QUFFM0U7O0dBRUc7QUFDSCxPQUFnQyx3QkFBd0IsQ0FBQTtBQUV4RCxxREFBcUQ7QUFFckQ7O0dBRUc7QUFDSCxPQUEwQyxpQkFBaUIsQ0FBQTtBQUUzRDs7R0FFRztBQUNILE9BQW1FLGtCQUFrQixDQUFBO0FBQ3JGOztHQUVHO0FBQ0gsT0EwQk8sWUFBWSxDQUFBO0FBRW5COztHQUVHO0FBQ0gsT0FRTyxvQkFBb0IsQ0FBQTtBQUUzQjs7R0FFRztBQUNILE9BQStCLFlBQVksQ0FBQTtBQUUzQyxPQUFPLDBCQUEwQixDQUFBO0FBQ2pDLE9BQU8sMEJBQTBCLENBQUE7QUFDakMsT0FBTyw0QkFBNEIsQ0FBQTtBQUVuQyxPQUFPLGtCQUFrQixDQUFBO0FBQ3pCLE9BQU8sa0JBQWtCLENBQUEifQ==
package/dist/service.d.ts CHANGED
@@ -7,7 +7,7 @@ import { Tag } from "effect/Context";
7
7
  import { Effect } from "effect/Effect";
8
8
  import { Layer } from "effect/Layer";
9
9
  import { Scope } from "effect/Scope";
10
- import type { TagTypeId as TagTypeIdOriginal } from "effect/Context";
10
+ import type { Context } from "effect";
11
11
  export declare const ServiceTag: unique symbol;
12
12
  export type ServiceTag = typeof ServiceTag;
13
13
  export declare abstract class PhantomTypeParameter<Identifier extends keyof any, InstantiatedType> {
@@ -30,18 +30,32 @@ export declare function makeService<T extends ServiceTagged<any>>(_: Omit<T, Ser
30
30
  * @tsplus location "effect-app/service"
31
31
  */
32
32
  export declare function make<T extends ServiceTagged<any>, I = T>(_: Tag<I, T>, t: Omit<T, ServiceTag>): T;
33
- export declare const TagTypeId: TagTypeIdOriginal;
34
- export type TagTypeId = typeof TagTypeId;
35
- export declare function assignTag<Id, Service = Id>(key?: string): <S extends object>(cls: S) => S & Tag<Id, Service>;
36
- export declare function TagClass<Id, ServiceImpl, Service = Id>(key?: string): (new (service: ServiceImpl) => Readonly<ServiceImpl>) & import("effect/Context").Tag<Id, Service>;
33
+ export declare function assignTag<Id, Service = Id>(key?: string, creationError?: Error): <S extends object>(cls: S) => S & Tag<Id, Service>;
34
+ export declare const TagMake: <Id>() => <ServiceImpl, R, E, const Key extends string>(key: Key, make: Effect<ServiceImpl, E, R>) => {
35
+ new (): Context.TagClassShape<Key, ServiceImpl>;
36
+ toLayer: () => Layer<Id, E, R>;
37
+ toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>;
38
+ } & Context.Tag<Id, ServiceImpl>;
39
+ export declare function TagClass<Id, ServiceImpl, Service = Id>(key?: string): {
40
+ new (service: ServiceImpl): Readonly<ServiceImpl>;
41
+ toLayer: <E, R>(eff: Effect<ServiceImpl, E, R>) => Layer<Id, E, R>;
42
+ toLayerScoped: <E_1, R_1>(eff: import("effect/Effect").Effect<ServiceImpl, E_1, R_1>) => import("effect/Layer").Layer<Id, E_1, Exclude<R_1, import("effect/Scope").Scope>>;
43
+ } & Context.Tag<Id, Service>;
37
44
  export declare const TagClassMake: <Id, Service = Id>() => <ServiceImpl, R, E>(make: Effect<ServiceImpl, E, R>, key?: string) => {
38
45
  new (service: ServiceImpl): Readonly<ServiceImpl>;
39
- toLayer: () => Layer<Service, E, R>;
40
- toLayerScoped: () => Layer<Service, E, Exclude<R, Scope>>;
41
- } & import("effect/Context").Tag<Id, Service>;
42
- export declare function TagClassLegacy<Id, Service = Id>(key?: string): (abstract new () => {}) & import("effect/Context").Tag<Id, Service>;
43
- /** @deprecated use `Id` of TagClass for unique id */
44
- export declare function ServiceTaggedClass<Id, Service = Id>(): <Key extends PropertyKey>(_: Key) => ((abstract new () => {}) & {
45
- make: (t: Omit<Service, Key>) => Service;
46
- }) & import("effect/Context").Tag<Id, Service>;
46
+ toLayer: () => Layer<Id, E, R>;
47
+ toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>;
48
+ make: Effect<Id, E, R>;
49
+ } & Context.Tag<Id, Service>;
50
+ export declare function TagClassId<Id, ServiceImpl>(): <const Key extends string>(key: Key) => {
51
+ new (service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>;
52
+ toLayer: <E, R>(eff: import("effect/Effect").Effect<ServiceImpl, E, R>) => import("effect/Layer").Layer<Id, E, R>;
53
+ toLayerScoped: <E_1, R_1>(eff: import("effect/Effect").Effect<ServiceImpl, E_1, R_1>) => import("effect/Layer").Layer<Id, E_1, Exclude<R_1, import("effect/Scope").Scope>>;
54
+ } & Context.Tag<Id, Id>;
55
+ export declare const TagClassMakeId: <Id>() => <ServiceImpl, R, E, const Key extends string>(key: Key, make: Effect<ServiceImpl, E, R>) => {
56
+ new (service: ServiceImpl): Readonly<ServiceImpl> & Context.TagClassShape<Key, ServiceImpl>;
57
+ toLayer: () => Layer<Id, E, R>;
58
+ toLayerScoped: () => Layer<Id, E, Exclude<R, Scope>>;
59
+ make: Effect<Id, E, R>;
60
+ } & Context.Tag<Id, Id>;
47
61
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../_src/service.ts"],"names":[],"mappings":"AAEA;;;;GAIG;;;;;AAEH,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,eAAO,MAAM,UAAU,eAAW,CAAA;AAClC,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAA;AAE1C,8BAAsB,oBAAoB,CAAC,UAAU,SAAS,MAAM,GAAG,EAAE,gBAAgB;IACvF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE;QACxC,QAAQ,EAAE,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,gBAAgB,KAAK,gBAAgB;KAC1E,CAAA;CACF;AAED;;GAEG;AACH,8BAAsB,aAAa,CAAC,UAAU,CAAE,SAAQ,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC;CAAG;;;;;AAKnG,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,KAE/E;;;;;AAKD,wBAAgB,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,KAE7F;AAED,eAAO,MAAM,SAAS,EAAE,iBAAoF,CAAA;AAC5G,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAA;AAKxC,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,2BACvB,CAAC,KAAG,CAAC,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC,CAgBxD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,kBAC1C,WAAW,KAAG,SAAS,WAAW,CAAC,8CAQ5D;AAED,eAAO,MAAM,YAAY,oDAEjB,OAAO,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,QACzB,MAAM;kBAGG,WAAW,GAAG,SAAS,WAAW,CAAC;aACvC,MAAM,MAAM,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;mBACpB,MAAM,MAAM,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;6CAiB5D,CAAA;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,uEAI5D;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,kCACb,GAAG;cAEjB,KAAK,OAAO,EAAE,GAAG,CAAC;+CAOzC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../_src/service.ts"],"names":[],"mappings":"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"}
package/dist/service.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as tsplus_module_1 from "effect/Context";
2
2
  import * as tsplus_module_2 from "effect/Layer";
3
+ import * as tsplus_module_3 from "effect/Effect";
3
4
  export const ServiceTag = Symbol();
4
5
  export class PhantomTypeParameter {
5
6
  }
@@ -20,40 +21,80 @@ export function makeService(_) {
20
21
  export function make(_, t) {
21
22
  return t;
22
23
  }
23
- export const TagTypeId = Symbol.for("effect/Context/Tag");
24
24
  let i = 0;
25
25
  const randomId = () => "unknown-service-" + i++;
26
- export function assignTag(key) {
26
+ export function assignTag(key, creationError) {
27
27
  return (cls) => {
28
28
  const tag = tsplus_module_1.GenericTag(key ?? randomId());
29
- const t = Object.assign(cls, Object.getPrototypeOf(tag), tag);
30
- const limit = Error.stackTraceLimit;
31
- Error.stackTraceLimit = 4; // TODO
32
- const creationError = new Error();
33
- Error.stackTraceLimit = limit;
29
+ let fields = tag;
30
+ if (Reflect.ownKeys(cls).includes("key")) {
31
+ const { key, ...rest } = tag;
32
+ fields = rest;
33
+ }
34
+ const t = Object.assign(cls, Object.getPrototypeOf(tag), fields);
35
+ if (!creationError) {
36
+ const limit = Error.stackTraceLimit;
37
+ Error.stackTraceLimit = 2;
38
+ creationError = new Error();
39
+ Error.stackTraceLimit = limit;
40
+ }
34
41
  // the stack is used to get the location of the tag definition, if a service is not found in the registry
35
42
  Object.defineProperty(t, "stack", {
36
43
  get() {
37
- // remove one line as assignTag is generally used inside a class constructor function
38
- return creationError.stack?.split("\n").slice(1).join("\n");
44
+ return creationError.stack;
39
45
  }
40
46
  });
41
47
  return t;
42
48
  };
43
49
  }
50
+ export const TagMake = () => (key, make) => {
51
+ const limit = Error.stackTraceLimit;
52
+ Error.stackTraceLimit = 2;
53
+ const creationError = new Error();
54
+ Error.stackTraceLimit = limit;
55
+ const c = class {
56
+ static toLayer() {
57
+ return tsplus_module_2.effect(this)(make);
58
+ }
59
+ static toLayerScoped() {
60
+ return tsplus_module_2.scoped(this)(make);
61
+ }
62
+ };
63
+ return assignTag(key, creationError)(c);
64
+ };
44
65
  export function TagClass(key) {
66
+ const limit = Error.stackTraceLimit;
67
+ Error.stackTraceLimit = 2;
68
+ const creationError = new Error();
69
+ Error.stackTraceLimit = limit;
45
70
  const c = class {
46
71
  constructor(service) {
47
72
  Object.assign(this, service);
48
73
  }
74
+ static toLayer(eff) {
75
+ return tsplus_module_2.effect(this)(tsplus_module_3.map(eff, (_) => new this(_)));
76
+ }
77
+ static toLayerScoped(eff) {
78
+ return tsplus_module_2.scoped(this)(tsplus_module_3.map(eff, (_) => new this(_)));
79
+ }
80
+ static get key() {
81
+ return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
82
+ }
49
83
  };
50
- return assignTag(key)(c);
84
+ return assignTag(key, creationError)(c);
51
85
  }
52
86
  export const TagClassMake = () => (make, key) => {
87
+ const limit = Error.stackTraceLimit;
88
+ Error.stackTraceLimit = 2;
89
+ const creationError = new Error();
90
+ Error.stackTraceLimit = limit;
53
91
  const c = class {
54
92
  constructor(service) {
55
93
  Object.assign(this, service);
56
94
  }
95
+ static make() {
96
+ return make.andThen((_) => new this(_));
97
+ }
57
98
  // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
58
99
  static toLayer() {
59
100
  return tsplus_module_2.effect(this)(make);
@@ -61,23 +102,52 @@ export const TagClassMake = () => (make, key) => {
61
102
  static toLayerScoped() {
62
103
  return tsplus_module_2.scoped(this)(make);
63
104
  }
105
+ static get key() {
106
+ return this._key ?? (this._key = key ?? creationError.stack?.split("\n")[2] ?? this.name);
107
+ }
64
108
  };
65
- return assignTag(key)(c);
109
+ return assignTag(key, creationError)(c);
66
110
  };
67
- export function TagClassLegacy(key) {
68
- class TagClassLegacy {
69
- }
70
- return assignTag(key)(TagClassLegacy);
71
- }
72
- /** @deprecated use `Id` of TagClass for unique id */
73
- export function ServiceTaggedClass() {
74
- return (_) => {
75
- class ServiceTaggedClassC {
76
- }
77
- ServiceTaggedClassC.make = (t) => {
78
- return t;
111
+ export function TagClassId() {
112
+ return (key) => {
113
+ const limit = Error.stackTraceLimit;
114
+ Error.stackTraceLimit = 2;
115
+ const creationError = new Error();
116
+ Error.stackTraceLimit = limit;
117
+ const c = class {
118
+ constructor(service) {
119
+ Object.assign(this, service);
120
+ }
121
+ static toLayer(eff) {
122
+ return tsplus_module_2.effect(this)(tsplus_module_3.map(eff, (_) => new this(_)));
123
+ }
124
+ static toLayerScoped(eff) {
125
+ return tsplus_module_2.scoped(this)(tsplus_module_3.map(eff, (_) => new this(_)));
126
+ }
79
127
  };
80
- return assignTag()(ServiceTaggedClassC);
128
+ return assignTag(key, creationError)(c);
81
129
  };
82
130
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUdsQyxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixhQUEwQixTQUFRLG9CQUF3QztDQUFHO0FBRW5HOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBK0IsQ0FBc0I7SUFDOUUsT0FBTyxDQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFzQyxDQUFZLEVBQUUsQ0FBc0I7SUFDNUYsT0FBTyxDQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFzQixNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFpQyxDQUFBO0FBRzVHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFBO0FBRS9DLE1BQU0sVUFBVSxTQUFTLENBQW1CLEdBQVk7SUFDdEQsT0FBTyxDQUFtQixHQUFNLEVBQXdCLEVBQUU7UUFDeEQsTUFBTSxHQUFHLEdBQUcsZ0JBQUEsVUFBVSxDQUFjLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ3RELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDN0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQTtRQUNuQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQSxDQUFDLE9BQU87UUFDakMsTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtRQUNqQyxLQUFLLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQTtRQUM3Qix5R0FBeUc7UUFDekcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFO1lBQ2hDLEdBQUc7Z0JBQ0QscUZBQXFGO2dCQUNyRixPQUFPLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDN0QsQ0FBQztTQUNGLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxDQUFBO0lBQ1YsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQWdDLEdBQVk7SUFDbEUsTUFBTSxDQUFDLEdBQXlEO1FBQzlELFlBQVksT0FBb0I7WUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQztLQUVLLENBQUE7SUFFUixPQUFPLFNBQVMsQ0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQXFCLEVBQUUsQ0FDbkQsQ0FDRSxJQUErQixFQUMvQixHQUFZLEVBQ1osRUFBRTtJQUNGLE1BQU0sQ0FBQyxHQUlIO1FBQ0YsWUFBWSxPQUFvQjtZQUM5QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQ0QsaUhBQWlIO1FBQ2pILE1BQU0sQ0FBQyxPQUFPO1lBQ1osT0FBTyx1QkFBYSxJQUFXLEVBQXhCLElBQUksQ0FBcUIsQ0FBQTtRQUNsQyxDQUFDO1FBRUQsTUFBTSxDQUFDLGFBQWE7WUFDbEIsT0FBTyx1QkFBbUIsSUFBVyxFQUE5QixJQUFJLENBQTJCLENBQUE7UUFDeEMsQ0FBQztLQUVLLENBQUE7SUFFUixPQUFPLFNBQVMsQ0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN2QyxDQUFDLENBQUE7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFtQixHQUFZO0lBQzNELE1BQWUsY0FBYztLQUFHO0lBRWhDLE9BQU8sU0FBUyxDQUFjLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBQ3BELENBQUM7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLENBQTBCLENBQU0sRUFBRSxFQUFFO1FBQ3pDLE1BQWUsbUJBQW1COztRQUN6Qix3QkFBSSxHQUFHLENBQUMsQ0FBcUIsRUFBRSxFQUFFO1lBQ3RDLE9BQU8sQ0FBWSxDQUFBO1FBQ3JCLENBQUMsQ0FBQTtRQUdILE9BQU8sU0FBUyxFQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUN0RCxDQUFDLENBQUE7QUFDSCxDQUFDIn0=
131
+ export const TagClassMakeId = () => (key, make) => {
132
+ const limit = Error.stackTraceLimit;
133
+ Error.stackTraceLimit = 2;
134
+ const creationError = new Error();
135
+ Error.stackTraceLimit = limit;
136
+ const c = class {
137
+ constructor(service) {
138
+ Object.assign(this, service);
139
+ }
140
+ static make() {
141
+ return make.andThen((_) => new this(_));
142
+ }
143
+ // works around an issue where defining layer on the class messes up and causes the Tag to infer to `any, any` :/
144
+ static toLayer() {
145
+ return tsplus_module_2.effect(this)(make);
146
+ }
147
+ static toLayerScoped() {
148
+ return tsplus_module_2.scoped(this)(make);
149
+ }
150
+ };
151
+ return assignTag(key, creationError)(c);
152
+ };
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUE7QUFHbEMsTUFBTSxPQUFnQixvQkFBb0I7Q0FJekM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsYUFBMEIsU0FBUSxvQkFBd0M7Q0FBRztBQUVuRzs7R0FFRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQStCLENBQXNCO0lBQzlFLE9BQU8sQ0FBTSxDQUFBO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBc0MsQ0FBWSxFQUFFLENBQXNCO0lBQzVGLE9BQU8sQ0FBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNULE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFBO0FBRS9DLE1BQU0sVUFBVSxTQUFTLENBQW1CLEdBQVksRUFBRSxhQUFxQjtJQUM3RSxPQUFPLENBQW1CLEdBQU0sRUFBd0IsRUFBRTtRQUN4RCxNQUFNLEdBQUcsR0FBRyxnQkFBQSxVQUFVLENBQWMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDdEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2hCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFBO1lBQzVCLE1BQU0sR0FBRyxJQUFXLENBQUE7UUFDdEIsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FB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
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "0.154.3",
3
+ "version": "0.155.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@effect/platform": "^0.44.2",
8
- "@effect/schema": "^0.62.1",
7
+ "@effect/platform": "^0.44.3",
8
+ "@effect/schema": "^0.62.2",
9
9
  "@fp-ts/optic": "^0.22.0",
10
10
  "date-fns": "^3.3.1",
11
- "effect": "^2.3.1",
11
+ "effect": "^2.3.2",
12
12
  "lodash": "^4.17.21",
13
13
  "nanoid": "^5.0.5",
14
14
  "path-parser": "^6.1.0",
@@ -16,9 +16,9 @@
16
16
  "ts-pattern": "^5.0.6",
17
17
  "uuid": "^9.0.1",
18
18
  "validator": "^13.11.0",
19
- "@effect-app/core": "0.131.9",
20
- "@effect-app/schema": "0.185.2",
21
- "@effect-app/fluent-extensions": "0.126.10"
19
+ "@effect-app/fluent-extensions": "0.127.0",
20
+ "@effect-app/core": "0.132.0",
21
+ "@effect-app/schema": "0.186.0"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@babel/cli": "^7.23.9",