effect 3.10.19 → 3.11.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/dist/cjs/BigDecimal.js +125 -24
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/Channel.js +44 -4
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Config.js +8 -1
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/Context.js +26 -1
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js +75 -67
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/DateTime.js +114 -664
- package/dist/cjs/DateTime.js.map +1 -1
- package/dist/cjs/Effect.js +82 -4
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Inspectable.js +8 -4
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/JSONSchema.js.map +1 -1
- package/dist/cjs/Micro.js +1099 -1072
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schema.js +57 -8
- package/dist/cjs/Schema.js.map +1 -1
- package/dist/cjs/Sink.js +9 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js +25 -7
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/Utils.js +7 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +5 -9
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel.js +156 -130
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/config.js +13 -4
- package/dist/cjs/internal/config.js.map +1 -1
- package/dist/cjs/internal/context.js +46 -3
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/dateTime.js +747 -0
- package/dist/cjs/internal/dateTime.js.map +1 -0
- package/dist/cjs/internal/fiberRuntime.js +34 -11
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js +9 -3
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/layer.js +1 -1
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/mailbox.js +1 -1
- package/dist/cjs/internal/mailbox.js.map +1 -1
- package/dist/cjs/internal/sink.js +25 -21
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stream.js +70 -71
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/cjs/internal/version.js.map +1 -1
- package/dist/dts/BigDecimal.d.ts +56 -1
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +66 -5
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +23 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +111 -0
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +15 -6
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts +40 -49
- package/dist/dts/DateTime.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +88 -1
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Inspectable.d.ts.map +1 -1
- package/dist/dts/JSONSchema.d.ts +1 -0
- package/dist/dts/JSONSchema.d.ts.map +1 -1
- package/dist/dts/Micro.d.ts +875 -872
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +2 -0
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schema.d.ts +32 -0
- package/dist/dts/Schema.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +8 -0
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +50 -32
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Utils.d.ts +4 -0
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/internal/context.d.ts +1 -1
- package/dist/dts/internal/context.d.ts.map +1 -1
- package/dist/dts/internal/dateTime.d.ts +2 -0
- package/dist/dts/internal/dateTime.d.ts.map +1 -0
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/BigDecimal.js +119 -20
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/Channel.js +42 -2
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Config.js +7 -0
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Context.js +25 -0
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Cron.js +75 -67
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/DateTime.js +112 -627
- package/dist/esm/DateTime.js.map +1 -1
- package/dist/esm/Effect.js +77 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Inspectable.js +8 -4
- package/dist/esm/Inspectable.js.map +1 -1
- package/dist/esm/JSONSchema.js.map +1 -1
- package/dist/esm/Micro.js +1077 -1047
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schema.js +54 -0
- package/dist/esm/Schema.js.map +1 -1
- package/dist/esm/Sink.js +8 -0
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js +23 -5
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/Utils.js +5 -0
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js +5 -7
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel.js +152 -129
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/config.js +11 -3
- package/dist/esm/internal/config.js.map +1 -1
- package/dist/esm/internal/context.js +42 -2
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/dateTime.js +704 -0
- package/dist/esm/internal/dateTime.js.map +1 -0
- package/dist/esm/internal/fiberRuntime.js +31 -9
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js +9 -3
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/layer.js +1 -1
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/mailbox.js +1 -1
- package/dist/esm/internal/mailbox.js.map +1 -1
- package/dist/esm/internal/sink.js +23 -20
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stream.js +66 -69
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/dist/esm/internal/version.js.map +1 -1
- package/package.json +1 -1
- package/src/BigDecimal.ts +131 -21
- package/src/Channel.ts +81 -5
- package/src/Config.ts +24 -1
- package/src/Context.ts +119 -0
- package/src/Cron.ts +85 -68
- package/src/DateTime.ts +155 -757
- package/src/Effect.ts +340 -1
- package/src/Inspectable.ts +11 -7
- package/src/JSONSchema.ts +1 -0
- package/src/Micro.ts +2005 -1757
- package/src/STM.ts +2 -0
- package/src/Schema.ts +60 -0
- package/src/Sink.ts +11 -0
- package/src/Stream.ts +55 -44
- package/src/Utils.ts +8 -0
- package/src/internal/channel/channelExecutor.ts +37 -33
- package/src/internal/channel.ts +504 -467
- package/src/internal/config.ts +18 -6
- package/src/internal/context.ts +56 -4
- package/src/internal/dateTime.ts +1126 -0
- package/src/internal/fiberRuntime.ts +35 -16
- package/src/internal/groupBy.ts +13 -22
- package/src/internal/layer.ts +5 -8
- package/src/internal/mailbox.ts +6 -4
- package/src/internal/sink.ts +55 -35
- package/src/internal/stream.ts +299 -299
- package/src/internal/version.ts +1 -1
package/src/internal/config.ts
CHANGED
|
@@ -179,6 +179,19 @@ export const boolean = (name?: string): Config.Config<boolean> => {
|
|
|
179
179
|
return name === undefined ? config : nested(config, name)
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
+
/** @internal */
|
|
183
|
+
export const url = (name?: string): Config.Config<URL> => {
|
|
184
|
+
const config = primitive(
|
|
185
|
+
"an URL property",
|
|
186
|
+
(text) =>
|
|
187
|
+
Either.try({
|
|
188
|
+
try: () => new URL(text),
|
|
189
|
+
catch: (_) => configError.InvalidData([], `Expected an URL value but received ${text}`)
|
|
190
|
+
})
|
|
191
|
+
)
|
|
192
|
+
return name === undefined ? config : nested(config, name)
|
|
193
|
+
}
|
|
194
|
+
|
|
182
195
|
/** @internal */
|
|
183
196
|
export const array = <A>(config: Config.Config<A>, name?: string): Config.Config<Array<A>> => {
|
|
184
197
|
return pipe(chunk(config, name), map(Chunk.toArray))
|
|
@@ -424,12 +437,11 @@ export const secret = (name?: string): Config.Config<Secret.Secret> => {
|
|
|
424
437
|
}
|
|
425
438
|
|
|
426
439
|
/** @internal */
|
|
427
|
-
export const redacted =
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
)
|
|
432
|
-
return name === undefined ? config : nested(config, name)
|
|
440
|
+
export const redacted = <A>(
|
|
441
|
+
nameOrConfig?: string | Config.Config<A>
|
|
442
|
+
): Config.Config<Redacted.Redacted<A | string>> => {
|
|
443
|
+
const config: Config.Config<A | string> = isConfig(nameOrConfig) ? nameOrConfig : string(nameOrConfig)
|
|
444
|
+
return map(config, redacted_.make)
|
|
433
445
|
}
|
|
434
446
|
|
|
435
447
|
/** @internal */
|
package/src/internal/context.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type * as C from "../Context.js"
|
|
|
2
2
|
import * as Equal from "../Equal.js"
|
|
3
3
|
import type { LazyArg } from "../Function.js"
|
|
4
4
|
import { dual } from "../Function.js"
|
|
5
|
+
import { globalValue } from "../GlobalValue.js"
|
|
5
6
|
import * as Hash from "../Hash.js"
|
|
6
7
|
import { format, NodeInspectSymbol, toJSON } from "../Inspectable.js"
|
|
7
8
|
import type * as O from "../Option.js"
|
|
@@ -14,6 +15,9 @@ import * as option from "./option.js"
|
|
|
14
15
|
/** @internal */
|
|
15
16
|
export const TagTypeId: C.TagTypeId = Symbol.for("effect/Context/Tag") as C.TagTypeId
|
|
16
17
|
|
|
18
|
+
/** @internal */
|
|
19
|
+
export const ReferenceTypeId: C.ReferenceTypeId = Symbol.for("effect/Context/Reference") as C.ReferenceTypeId
|
|
20
|
+
|
|
17
21
|
/** @internal */
|
|
18
22
|
const STMSymbolKey = "effect/STM"
|
|
19
23
|
|
|
@@ -55,6 +59,11 @@ export const TagProto: any = {
|
|
|
55
59
|
}
|
|
56
60
|
}
|
|
57
61
|
|
|
62
|
+
export const ReferenceProto: any = {
|
|
63
|
+
...TagProto,
|
|
64
|
+
[ReferenceTypeId]: ReferenceTypeId
|
|
65
|
+
}
|
|
66
|
+
|
|
58
67
|
/** @internal */
|
|
59
68
|
export const makeGenericTag = <Identifier, Service = Identifier>(key: string): C.Tag<Identifier, Service> => {
|
|
60
69
|
const limit = Error.stackTraceLimit
|
|
@@ -89,6 +98,28 @@ export const Tag = <const Id extends string>(id: Id) => <Self, Shape>(): C.TagCl
|
|
|
89
98
|
return TagClass as any
|
|
90
99
|
}
|
|
91
100
|
|
|
101
|
+
/** @internal */
|
|
102
|
+
export const Reference = <Self>() =>
|
|
103
|
+
<const Id extends string, Service>(id: Id, options: {
|
|
104
|
+
readonly defaultValue: () => Service
|
|
105
|
+
}): C.ReferenceClass<Self, Id, Service> => {
|
|
106
|
+
const limit = Error.stackTraceLimit
|
|
107
|
+
Error.stackTraceLimit = 2
|
|
108
|
+
const creationError = new Error()
|
|
109
|
+
Error.stackTraceLimit = limit
|
|
110
|
+
|
|
111
|
+
function ReferenceClass() {}
|
|
112
|
+
Object.setPrototypeOf(ReferenceClass, ReferenceProto)
|
|
113
|
+
ReferenceClass.key = id
|
|
114
|
+
ReferenceClass.defaultValue = options.defaultValue
|
|
115
|
+
Object.defineProperty(ReferenceClass, "stack", {
|
|
116
|
+
get() {
|
|
117
|
+
return creationError.stack
|
|
118
|
+
}
|
|
119
|
+
})
|
|
120
|
+
return ReferenceClass as any
|
|
121
|
+
}
|
|
122
|
+
|
|
92
123
|
/** @internal */
|
|
93
124
|
export const TypeId: C.TypeId = Symbol.for("effect/Context") as C.TypeId
|
|
94
125
|
|
|
@@ -162,6 +193,9 @@ export const isContext = (u: unknown): u is C.Context<never> => hasProperty(u, T
|
|
|
162
193
|
/** @internal */
|
|
163
194
|
export const isTag = (u: unknown): u is C.Tag<any, any> => hasProperty(u, TagTypeId)
|
|
164
195
|
|
|
196
|
+
/** @internal */
|
|
197
|
+
export const isReference = (u: unknown): u is C.Reference<any, any> => hasProperty(u, ReferenceTypeId)
|
|
198
|
+
|
|
165
199
|
const _empty = makeContext(new Map())
|
|
166
200
|
|
|
167
201
|
/** @internal */
|
|
@@ -192,22 +226,40 @@ export const add = dual<
|
|
|
192
226
|
return makeContext(map)
|
|
193
227
|
})
|
|
194
228
|
|
|
229
|
+
const defaultValueCache = globalValue("effect/Context/defaultValueCache", () => new Map<string, any>())
|
|
230
|
+
const getDefaultValue = (tag: C.Reference<any, any>) => {
|
|
231
|
+
if (defaultValueCache.has(tag.key)) {
|
|
232
|
+
return defaultValueCache.get(tag.key)
|
|
233
|
+
}
|
|
234
|
+
const value = tag.defaultValue()
|
|
235
|
+
defaultValueCache.set(tag.key, value)
|
|
236
|
+
return value
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/** @internal */
|
|
240
|
+
export const unsafeGetReference = <Services, I, S>(self: C.Context<Services>, tag: C.Reference<I, S>): S => {
|
|
241
|
+
return self.unsafeMap.has(tag.key) ? self.unsafeMap.get(tag.key) : getDefaultValue(tag)
|
|
242
|
+
}
|
|
243
|
+
|
|
195
244
|
/** @internal */
|
|
196
245
|
export const unsafeGet = dual<
|
|
197
246
|
<S, I>(tag: C.Tag<I, S>) => <Services>(self: C.Context<Services>) => S,
|
|
198
247
|
<Services, S, I>(self: C.Context<Services>, tag: C.Tag<I, S>) => S
|
|
199
248
|
>(2, (self, tag) => {
|
|
200
249
|
if (!self.unsafeMap.has(tag.key)) {
|
|
201
|
-
|
|
250
|
+
if (ReferenceTypeId in tag) return getDefaultValue(tag as any)
|
|
251
|
+
throw serviceNotFoundError(tag)
|
|
202
252
|
}
|
|
203
253
|
return self.unsafeMap.get(tag.key)! as any
|
|
204
254
|
})
|
|
205
255
|
|
|
206
256
|
/** @internal */
|
|
207
257
|
export const get: {
|
|
258
|
+
<I, S>(tag: C.Reference<I, S>): <Services>(self: C.Context<Services>) => S
|
|
208
259
|
<Services, T extends C.ValidTagsById<Services>>(tag: T): (self: C.Context<Services>) => C.Tag.Service<T>
|
|
260
|
+
<Services, I, S>(self: C.Context<Services>, tag: C.Reference<I, S>): S
|
|
209
261
|
<Services, T extends C.ValidTagsById<Services>>(self: C.Context<Services>, tag: T): C.Tag.Service<T>
|
|
210
|
-
} = unsafeGet
|
|
262
|
+
} = unsafeGet as any
|
|
211
263
|
|
|
212
264
|
/** @internal */
|
|
213
265
|
export const getOrElse = dual<
|
|
@@ -215,7 +267,7 @@ export const getOrElse = dual<
|
|
|
215
267
|
<Services, S, I, B>(self: C.Context<Services>, tag: C.Tag<I, S>, orElse: LazyArg<B>) => S | B
|
|
216
268
|
>(3, (self, tag, orElse) => {
|
|
217
269
|
if (!self.unsafeMap.has(tag.key)) {
|
|
218
|
-
return orElse()
|
|
270
|
+
return isReference(tag) ? getDefaultValue(tag) : orElse()
|
|
219
271
|
}
|
|
220
272
|
return self.unsafeMap.get(tag.key)! as any
|
|
221
273
|
})
|
|
@@ -226,7 +278,7 @@ export const getOption = dual<
|
|
|
226
278
|
<Services, S, I>(self: C.Context<Services>, tag: C.Tag<I, S>) => O.Option<S>
|
|
227
279
|
>(2, (self, tag) => {
|
|
228
280
|
if (!self.unsafeMap.has(tag.key)) {
|
|
229
|
-
return option.none
|
|
281
|
+
return isReference(tag) ? option.some(getDefaultValue(tag)) : option.none
|
|
230
282
|
}
|
|
231
283
|
return option.some(self.unsafeMap.get(tag.key)! as any)
|
|
232
284
|
})
|