effect 3.12.3 → 3.12.5
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/Arbitrary.js +72 -14
- package/dist/cjs/Arbitrary.js.map +1 -1
- package/dist/cjs/DateTime.js.map +1 -1
- package/dist/cjs/Inspectable.js +0 -4
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/ParseResult.js +2 -2
- package/dist/cjs/ParseResult.js.map +1 -1
- package/dist/cjs/Schema.js +154 -93
- package/dist/cjs/Schema.js.map +1 -1
- package/dist/cjs/internal/dateTime.js +32 -4
- package/dist/cjs/internal/dateTime.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +15 -2
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Arbitrary.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts +40 -36
- package/dist/dts/DateTime.d.ts.map +1 -1
- package/dist/dts/Inspectable.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +1 -1
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/MetricPolling.d.ts +1 -1
- package/dist/dts/MetricPolling.d.ts.map +1 -1
- package/dist/dts/ParseResult.d.ts +11 -0
- package/dist/dts/ParseResult.d.ts.map +1 -1
- package/dist/dts/Schema.d.ts +34 -15
- package/dist/dts/Schema.d.ts.map +1 -1
- package/dist/esm/Arbitrary.js +72 -14
- package/dist/esm/Arbitrary.js.map +1 -1
- package/dist/esm/DateTime.js.map +1 -1
- package/dist/esm/Inspectable.js +0 -3
- package/dist/esm/Inspectable.js.map +1 -1
- package/dist/esm/ParseResult.js +2 -2
- package/dist/esm/ParseResult.js.map +1 -1
- package/dist/esm/Schema.js +149 -86
- package/dist/esm/Schema.js.map +1 -1
- package/dist/esm/internal/dateTime.js +31 -3
- package/dist/esm/internal/dateTime.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +15 -2
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Arbitrary.ts +84 -14
- package/src/DateTime.ts +45 -56
- package/src/Inspectable.ts +0 -1
- package/src/Layer.ts +1 -1
- package/src/MetricPolling.ts +1 -1
- package/src/ParseResult.ts +15 -2
- package/src/Schema.ts +191 -93
- package/src/internal/dateTime.ts +67 -33
- package/src/internal/effect/circular.ts +19 -17
- package/src/internal/fiberRuntime.ts +2 -1
- package/src/internal/version.ts +1 -1
package/src/internal/dateTime.ts
CHANGED
|
@@ -129,7 +129,21 @@ export const makeZonedProto = (
|
|
|
129
129
|
const self = Object.create(ProtoZoned)
|
|
130
130
|
self.epochMillis = epochMillis
|
|
131
131
|
self.zone = zone
|
|
132
|
-
self
|
|
132
|
+
Object.defineProperty(self, "partsUtc", {
|
|
133
|
+
value: partsUtc,
|
|
134
|
+
enumerable: false,
|
|
135
|
+
writable: true
|
|
136
|
+
})
|
|
137
|
+
Object.defineProperty(self, "adjustedEpochMillis", {
|
|
138
|
+
value: undefined,
|
|
139
|
+
enumerable: false,
|
|
140
|
+
writable: true
|
|
141
|
+
})
|
|
142
|
+
Object.defineProperty(self, "partsAdjusted", {
|
|
143
|
+
value: undefined,
|
|
144
|
+
enumerable: false,
|
|
145
|
+
writable: true
|
|
146
|
+
})
|
|
133
147
|
return self
|
|
134
148
|
}
|
|
135
149
|
|
|
@@ -173,8 +187,13 @@ export const Order: order.Order<DateTime.DateTime> = order.make((self, that) =>
|
|
|
173
187
|
|
|
174
188
|
/** @internal */
|
|
175
189
|
export const clamp: {
|
|
176
|
-
|
|
177
|
-
|
|
190
|
+
<Min extends DateTime.DateTime, Max extends DateTime.DateTime>(
|
|
191
|
+
options: { readonly minimum: Min; readonly maximum: Max }
|
|
192
|
+
): <A extends DateTime.DateTime>(self: A) => A | Min | Max
|
|
193
|
+
<A extends DateTime.DateTime, Min extends DateTime.DateTime, Max extends DateTime.DateTime>(
|
|
194
|
+
self: A,
|
|
195
|
+
options: { readonly minimum: Min; readonly maximum: Max }
|
|
196
|
+
): A | Min | Max
|
|
178
197
|
} = order.clamp(Order)
|
|
179
198
|
|
|
180
199
|
// =============================================================================
|
|
@@ -184,6 +203,11 @@ export const clamp: {
|
|
|
184
203
|
const makeUtc = (epochMillis: number): DateTime.Utc => {
|
|
185
204
|
const self = Object.create(ProtoUtc)
|
|
186
205
|
self.epochMillis = epochMillis
|
|
206
|
+
Object.defineProperty(self, "partsUtc", {
|
|
207
|
+
value: undefined,
|
|
208
|
+
enumerable: false,
|
|
209
|
+
writable: true
|
|
210
|
+
})
|
|
187
211
|
return self
|
|
188
212
|
}
|
|
189
213
|
|
|
@@ -210,6 +234,9 @@ export const unsafeMake = <A extends DateTime.DateTime.Input>(input: A): DateTim
|
|
|
210
234
|
return unsafeFromDate(new Date(input)) as DateTime.DateTime.PreserveZone<A>
|
|
211
235
|
}
|
|
212
236
|
|
|
237
|
+
const minEpochMillis = -8640000000000000 + (12 * 60 * 60 * 1000)
|
|
238
|
+
const maxEpochMillis = 8640000000000000 - (14 * 60 * 60 * 1000)
|
|
239
|
+
|
|
213
240
|
/** @internal */
|
|
214
241
|
export const unsafeMakeZoned = (input: DateTime.DateTime.Input, options?: {
|
|
215
242
|
readonly timeZone?: number | string | DateTime.TimeZone | undefined
|
|
@@ -219,6 +246,9 @@ export const unsafeMakeZoned = (input: DateTime.DateTime.Input, options?: {
|
|
|
219
246
|
return input
|
|
220
247
|
}
|
|
221
248
|
const self = unsafeMake(input)
|
|
249
|
+
if (self.epochMillis < minEpochMillis || self.epochMillis > maxEpochMillis) {
|
|
250
|
+
throw new IllegalArgumentException(`Epoch millis out of range: ${self.epochMillis}`)
|
|
251
|
+
}
|
|
222
252
|
let zone: DateTime.TimeZone
|
|
223
253
|
if (options?.timeZone === undefined) {
|
|
224
254
|
const offset = new Date(self.epochMillis).getTimezoneOffset() * -60 * 1000
|
|
@@ -451,14 +481,14 @@ export const distanceDuration: {
|
|
|
451
481
|
|
|
452
482
|
/** @internal */
|
|
453
483
|
export const min: {
|
|
454
|
-
(that: DateTime.DateTime
|
|
455
|
-
|
|
484
|
+
<That extends DateTime.DateTime>(that: That): <Self extends DateTime.DateTime>(self: Self) => Self | That
|
|
485
|
+
<Self extends DateTime.DateTime, That extends DateTime.DateTime>(self: Self, that: That): Self | That
|
|
456
486
|
} = order.min(Order)
|
|
457
487
|
|
|
458
488
|
/** @internal */
|
|
459
489
|
export const max: {
|
|
460
|
-
(that: DateTime.DateTime
|
|
461
|
-
|
|
490
|
+
<That extends DateTime.DateTime>(that: That): <Self extends DateTime.DateTime>(self: Self) => Self | That
|
|
491
|
+
<Self extends DateTime.DateTime, That extends DateTime.DateTime>(self: Self, that: That): Self | That
|
|
462
492
|
} = order.max(Order)
|
|
463
493
|
|
|
464
494
|
/** @internal */
|
|
@@ -544,8 +574,12 @@ export const zonedOffset = (self: DateTime.Zoned): number => {
|
|
|
544
574
|
|
|
545
575
|
const offsetToString = (offset: number): string => {
|
|
546
576
|
const abs = Math.abs(offset)
|
|
547
|
-
|
|
548
|
-
|
|
577
|
+
let hours = Math.floor(abs / (60 * 60 * 1000))
|
|
578
|
+
let minutes = Math.round((abs % (60 * 60 * 1000)) / (60 * 1000))
|
|
579
|
+
if (minutes === 60) {
|
|
580
|
+
hours += 1
|
|
581
|
+
minutes = 0
|
|
582
|
+
}
|
|
549
583
|
return `${offset < 0 ? "-" : "+"}${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}`
|
|
550
584
|
}
|
|
551
585
|
|
|
@@ -641,11 +675,11 @@ const setPartsDate = (date: Date, parts: Partial<DateTime.DateTime.PartsWithWeek
|
|
|
641
675
|
export const setParts: {
|
|
642
676
|
(
|
|
643
677
|
parts: Partial<DateTime.DateTime.PartsWithWeekday>
|
|
644
|
-
): <A extends DateTime.DateTime>(self: A) =>
|
|
678
|
+
): <A extends DateTime.DateTime>(self: A) => A
|
|
645
679
|
<A extends DateTime.DateTime>(
|
|
646
680
|
self: A,
|
|
647
681
|
parts: Partial<DateTime.DateTime.PartsWithWeekday>
|
|
648
|
-
):
|
|
682
|
+
): A
|
|
649
683
|
} = dual(
|
|
650
684
|
2,
|
|
651
685
|
(self: DateTime.DateTime, parts: Partial<DateTime.DateTime.PartsWithWeekday>): DateTime.DateTime =>
|
|
@@ -656,11 +690,11 @@ export const setParts: {
|
|
|
656
690
|
export const setPartsUtc: {
|
|
657
691
|
(
|
|
658
692
|
parts: Partial<DateTime.DateTime.PartsWithWeekday>
|
|
659
|
-
): <A extends DateTime.DateTime>(self: A) =>
|
|
693
|
+
): <A extends DateTime.DateTime>(self: A) => A
|
|
660
694
|
<A extends DateTime.DateTime>(
|
|
661
695
|
self: A,
|
|
662
696
|
parts: Partial<DateTime.DateTime.PartsWithWeekday>
|
|
663
|
-
):
|
|
697
|
+
): A
|
|
664
698
|
} = dual(
|
|
665
699
|
2,
|
|
666
700
|
(self: DateTime.DateTime, parts: Partial<DateTime.DateTime.PartsWithWeekday>): DateTime.DateTime =>
|
|
@@ -701,8 +735,8 @@ const calculateNamedOffset = (adjustedMillis: number, zone: DateTime.TimeZone.Na
|
|
|
701
735
|
|
|
702
736
|
/** @internal */
|
|
703
737
|
export const mutate: {
|
|
704
|
-
(f: (date: Date) => void): <A extends DateTime.DateTime>(self: A) =>
|
|
705
|
-
<A extends DateTime.DateTime>(self: A, f: (date: Date) => void):
|
|
738
|
+
(f: (date: Date) => void): <A extends DateTime.DateTime>(self: A) => A
|
|
739
|
+
<A extends DateTime.DateTime>(self: A, f: (date: Date) => void): A
|
|
706
740
|
} = dual(2, (self: DateTime.DateTime, f: (date: Date) => void): DateTime.DateTime => {
|
|
707
741
|
if (self._tag === "Utc") {
|
|
708
742
|
const date = toDateUtc(self)
|
|
@@ -717,8 +751,8 @@ export const mutate: {
|
|
|
717
751
|
|
|
718
752
|
/** @internal */
|
|
719
753
|
export const mutateUtc: {
|
|
720
|
-
(f: (date: Date) => void): <A extends DateTime.DateTime>(self: A) =>
|
|
721
|
-
<A extends DateTime.DateTime>(self: A, f: (date: Date) => void):
|
|
754
|
+
(f: (date: Date) => void): <A extends DateTime.DateTime>(self: A) => A
|
|
755
|
+
<A extends DateTime.DateTime>(self: A, f: (date: Date) => void): A
|
|
722
756
|
} = dual(2, (self: DateTime.DateTime, f: (date: Date) => void): DateTime.DateTime =>
|
|
723
757
|
mapEpochMillis(self, (millis) => {
|
|
724
758
|
const date = new Date(millis)
|
|
@@ -728,8 +762,8 @@ export const mutateUtc: {
|
|
|
728
762
|
|
|
729
763
|
/** @internal */
|
|
730
764
|
export const mapEpochMillis: {
|
|
731
|
-
(f: (millis: number) => number): <A extends DateTime.DateTime>(self: A) =>
|
|
732
|
-
<A extends DateTime.DateTime>(self: A, f: (millis: number) => number):
|
|
765
|
+
(f: (millis: number) => number): <A extends DateTime.DateTime>(self: A) => A
|
|
766
|
+
<A extends DateTime.DateTime>(self: A, f: (millis: number) => number): A
|
|
733
767
|
} = dual(2, (self: DateTime.DateTime, f: (millis: number) => number): DateTime.DateTime => {
|
|
734
768
|
const millis = f(toEpochMillis(self))
|
|
735
769
|
return self._tag === "Utc" ? makeUtc(millis) : makeZonedProto(millis, self.zone)
|
|
@@ -768,8 +802,8 @@ export const match: {
|
|
|
768
802
|
|
|
769
803
|
/** @internal */
|
|
770
804
|
export const addDuration: {
|
|
771
|
-
(duration: Duration.DurationInput): <A extends DateTime.DateTime>(self: A) =>
|
|
772
|
-
<A extends DateTime.DateTime>(self: A, duration: Duration.DurationInput):
|
|
805
|
+
(duration: Duration.DurationInput): <A extends DateTime.DateTime>(self: A) => A
|
|
806
|
+
<A extends DateTime.DateTime>(self: A, duration: Duration.DurationInput): A
|
|
773
807
|
} = dual(
|
|
774
808
|
2,
|
|
775
809
|
(self: DateTime.DateTime, duration: Duration.DurationInput): DateTime.DateTime =>
|
|
@@ -778,8 +812,8 @@ export const addDuration: {
|
|
|
778
812
|
|
|
779
813
|
/** @internal */
|
|
780
814
|
export const subtractDuration: {
|
|
781
|
-
(duration: Duration.DurationInput): <A extends DateTime.DateTime>(self: A) =>
|
|
782
|
-
<A extends DateTime.DateTime>(self: A, duration: Duration.DurationInput):
|
|
815
|
+
(duration: Duration.DurationInput): <A extends DateTime.DateTime>(self: A) => A
|
|
816
|
+
<A extends DateTime.DateTime>(self: A, duration: Duration.DurationInput): A
|
|
783
817
|
} = dual(
|
|
784
818
|
2,
|
|
785
819
|
(self: DateTime.DateTime, duration: Duration.DurationInput): DateTime.DateTime =>
|
|
@@ -794,11 +828,11 @@ const addMillis = (date: Date, amount: number): void => {
|
|
|
794
828
|
export const add: {
|
|
795
829
|
(
|
|
796
830
|
parts: Partial<DateTime.DateTime.PartsForMath>
|
|
797
|
-
): <A extends DateTime.DateTime>(self: A) =>
|
|
831
|
+
): <A extends DateTime.DateTime>(self: A) => A
|
|
798
832
|
<A extends DateTime.DateTime>(
|
|
799
833
|
self: A,
|
|
800
834
|
parts: Partial<DateTime.DateTime.PartsForMath>
|
|
801
|
-
):
|
|
835
|
+
): A
|
|
802
836
|
} = dual(
|
|
803
837
|
2,
|
|
804
838
|
(self: DateTime.DateTime, parts: Partial<DateTime.DateTime.PartsForMath>): DateTime.DateTime =>
|
|
@@ -847,11 +881,11 @@ export const add: {
|
|
|
847
881
|
export const subtract: {
|
|
848
882
|
(
|
|
849
883
|
parts: Partial<DateTime.DateTime.PartsForMath>
|
|
850
|
-
): <A extends DateTime.DateTime>(self: A) =>
|
|
884
|
+
): <A extends DateTime.DateTime>(self: A) => A
|
|
851
885
|
<A extends DateTime.DateTime>(
|
|
852
886
|
self: A,
|
|
853
887
|
parts: Partial<DateTime.DateTime.PartsForMath>
|
|
854
|
-
):
|
|
888
|
+
): A
|
|
855
889
|
} = dual(2, (self: DateTime.DateTime, parts: Partial<DateTime.DateTime.PartsForMath>): DateTime.DateTime => {
|
|
856
890
|
const newParts = {} as Partial<Mutable<DateTime.DateTime.PartsForMath>>
|
|
857
891
|
for (const key in parts) {
|
|
@@ -905,10 +939,10 @@ const startOfDate = (date: Date, part: DateTime.DateTime.UnitSingular, options?:
|
|
|
905
939
|
export const startOf: {
|
|
906
940
|
(part: DateTime.DateTime.UnitSingular, options?: {
|
|
907
941
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
908
|
-
}): <A extends DateTime.DateTime>(self: A) =>
|
|
942
|
+
}): <A extends DateTime.DateTime>(self: A) => A
|
|
909
943
|
<A extends DateTime.DateTime>(self: A, part: DateTime.DateTime.UnitSingular, options?: {
|
|
910
944
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
911
|
-
}):
|
|
945
|
+
}): A
|
|
912
946
|
} = dual(isDateTimeArgs, (self: DateTime.DateTime, part: DateTime.DateTime.UnitSingular, options?: {
|
|
913
947
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
914
948
|
}): DateTime.DateTime => mutate(self, (date) => startOfDate(date, part, options)))
|
|
@@ -958,10 +992,10 @@ const endOfDate = (date: Date, part: DateTime.DateTime.UnitSingular, options?: {
|
|
|
958
992
|
export const endOf: {
|
|
959
993
|
(part: DateTime.DateTime.UnitSingular, options?: {
|
|
960
994
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
961
|
-
}): <A extends DateTime.DateTime>(self: A) =>
|
|
995
|
+
}): <A extends DateTime.DateTime>(self: A) => A
|
|
962
996
|
<A extends DateTime.DateTime>(self: A, part: DateTime.DateTime.UnitSingular, options?: {
|
|
963
997
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
964
|
-
}):
|
|
998
|
+
}): A
|
|
965
999
|
} = dual(isDateTimeArgs, (self: DateTime.DateTime, part: DateTime.DateTime.UnitSingular, options?: {
|
|
966
1000
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
967
1001
|
}): DateTime.DateTime => mutate(self, (date) => endOfDate(date, part, options)))
|
|
@@ -970,10 +1004,10 @@ export const endOf: {
|
|
|
970
1004
|
export const nearest: {
|
|
971
1005
|
(part: DateTime.DateTime.UnitSingular, options?: {
|
|
972
1006
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
973
|
-
}): <A extends DateTime.DateTime>(self: A) =>
|
|
1007
|
+
}): <A extends DateTime.DateTime>(self: A) => A
|
|
974
1008
|
<A extends DateTime.DateTime>(self: A, part: DateTime.DateTime.UnitSingular, options?: {
|
|
975
1009
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
976
|
-
}):
|
|
1010
|
+
}): A
|
|
977
1011
|
} = dual(isDateTimeArgs, (self: DateTime.DateTime, part: DateTime.DateTime.UnitSingular, options?: {
|
|
978
1012
|
readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
|
|
979
1013
|
}): DateTime.DateTime =>
|
|
@@ -27,7 +27,6 @@ import type * as Types from "../../Types.js"
|
|
|
27
27
|
import * as internalCause from "../cause.js"
|
|
28
28
|
import * as effect from "../core-effect.js"
|
|
29
29
|
import * as core from "../core.js"
|
|
30
|
-
import * as executionStrategy from "../executionStrategy.js"
|
|
31
30
|
import * as internalFiber from "../fiber.js"
|
|
32
31
|
import * as fiberRuntime from "../fiberRuntime.js"
|
|
33
32
|
import { globalScope } from "../fiberScope.js"
|
|
@@ -362,23 +361,26 @@ export const forkIn = dual<
|
|
|
362
361
|
>(
|
|
363
362
|
2,
|
|
364
363
|
(self, scope) =>
|
|
365
|
-
core.
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
core.
|
|
374
|
-
Equal.equals(fiberId, fiber.id()) ?
|
|
375
|
-
core.void :
|
|
376
|
-
core.asVoid(core.interruptFiber(fiber))
|
|
377
|
-
)
|
|
378
|
-
)
|
|
364
|
+
core.withFiberRuntime((parent, parentStatus) => {
|
|
365
|
+
const scopeImpl = scope as fiberRuntime.ScopeImpl
|
|
366
|
+
const fiber = fiberRuntime.unsafeFork(self, parent, parentStatus.runtimeFlags, globalScope)
|
|
367
|
+
if (scopeImpl.state._tag === "Open") {
|
|
368
|
+
const finalizer = () =>
|
|
369
|
+
core.fiberIdWith((fiberId) =>
|
|
370
|
+
Equal.equals(fiberId, fiber.id()) ?
|
|
371
|
+
core.void :
|
|
372
|
+
core.asVoid(core.interruptFiber(fiber))
|
|
379
373
|
)
|
|
380
|
-
)
|
|
381
|
-
|
|
374
|
+
scopeImpl.state.finalizers.add(finalizer)
|
|
375
|
+
fiber.addObserver(() => {
|
|
376
|
+
if (scopeImpl.state._tag === "Closed") return
|
|
377
|
+
scopeImpl.state.finalizers.delete(finalizer)
|
|
378
|
+
})
|
|
379
|
+
} else {
|
|
380
|
+
fiber.unsafeInterruptAsFork(parent.id())
|
|
381
|
+
}
|
|
382
|
+
return core.succeed(fiber)
|
|
383
|
+
})
|
|
382
384
|
)
|
|
383
385
|
|
|
384
386
|
/** @internal */
|
|
@@ -3207,7 +3207,8 @@ export const scopeTag = Context.GenericTag<Scope.Scope>("effect/Scope")
|
|
|
3207
3207
|
/* @internal */
|
|
3208
3208
|
export const scope: Effect.Effect<Scope.Scope, never, Scope.Scope> = scopeTag
|
|
3209
3209
|
|
|
3210
|
-
|
|
3210
|
+
/** @internal */
|
|
3211
|
+
export interface ScopeImpl extends Scope.CloseableScope {
|
|
3211
3212
|
state: {
|
|
3212
3213
|
readonly _tag: "Open"
|
|
3213
3214
|
readonly finalizers: Set<Scope.Scope.Finalizer>
|
package/src/internal/version.ts
CHANGED