effect 3.10.18 → 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/Array.js +206 -0
- package/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/BigDecimal.js +181 -24
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/BigInt.js +54 -0
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/Boolean.js +24 -0
- package/dist/cjs/Boolean.js.map +1 -1
- package/dist/cjs/Brand.js +4 -0
- package/dist/cjs/Brand.js.map +1 -1
- package/dist/cjs/Channel.js +44 -4
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Chunk.js +8 -0
- package/dist/cjs/Chunk.js.map +1 -1
- package/dist/cjs/Config.js +10 -1
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/Context.js +50 -1
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js +81 -67
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Data.js +14 -0
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/DateTime.js +178 -664
- package/dist/cjs/DateTime.js.map +1 -1
- package/dist/cjs/Duration.js +2 -0
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +296 -4
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +38 -2
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/FiberHandle.js +6 -0
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberMap.js +6 -0
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberSet.js +6 -0
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/Function.js +34 -0
- package/dist/cjs/Function.js.map +1 -1
- package/dist/cjs/GlobalValue.js +2 -0
- package/dist/cjs/GlobalValue.js.map +1 -1
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/Inspectable.js +8 -4
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/Iterable.js +18 -0
- package/dist/cjs/Iterable.js.map +1 -1
- package/dist/cjs/JSONSchema.js.map +1 -1
- package/dist/cjs/List.js +4 -0
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/Logger.js +26 -0
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Mailbox.js +2 -0
- package/dist/cjs/Mailbox.js.map +1 -1
- package/dist/cjs/ManagedRuntime.js +2 -0
- package/dist/cjs/ManagedRuntime.js.map +1 -1
- package/dist/cjs/Metric.js +10 -0
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Micro.js +1104 -1069
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/Number.js +44 -0
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js +70 -0
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Order.js +2 -0
- package/dist/cjs/Order.js.map +1 -1
- package/dist/cjs/Ordering.js +4 -0
- package/dist/cjs/Ordering.js.map +1 -1
- package/dist/cjs/Predicate.js +68 -0
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/Random.js +4 -0
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/RateLimiter.js +4 -0
- package/dist/cjs/RateLimiter.js.map +1 -1
- package/dist/cjs/RcMap.js +2 -0
- package/dist/cjs/RcMap.js.map +1 -1
- package/dist/cjs/RcRef.js +2 -0
- package/dist/cjs/RcRef.js.map +1 -1
- package/dist/cjs/Record.js +56 -0
- package/dist/cjs/Record.js.map +1 -1
- package/dist/cjs/Redacted.js +8 -0
- package/dist/cjs/Redacted.js.map +1 -1
- package/dist/cjs/RegExp.js +4 -0
- package/dist/cjs/RegExp.js.map +1 -1
- package/dist/cjs/Request.js +4 -0
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/RequestResolver.js +2 -0
- package/dist/cjs/RequestResolver.js.map +1 -1
- package/dist/cjs/Runtime.js +6 -0
- package/dist/cjs/Runtime.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schema.js +91 -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 +179 -7
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/String.js +62 -0
- package/dist/cjs/String.js.map +1 -1
- package/dist/cjs/Struct.js +12 -0
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/Symbol.js +2 -0
- package/dist/cjs/Symbol.js.map +1 -1
- package/dist/cjs/Trie.js +56 -0
- package/dist/cjs/Trie.js.map +1 -1
- package/dist/cjs/Tuple.js +18 -0
- package/dist/cjs/Tuple.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/Array.d.ts +534 -0
- package/dist/dts/Array.d.ts.map +1 -1
- package/dist/dts/BigDecimal.d.ts +172 -1
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/BigInt.d.ts +114 -0
- package/dist/dts/BigInt.d.ts.map +1 -1
- package/dist/dts/Boolean.d.ts +56 -0
- package/dist/dts/Boolean.d.ts.map +1 -1
- package/dist/dts/Brand.d.ts +6 -0
- package/dist/dts/Brand.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/Chunk.d.ts +30 -0
- package/dist/dts/Chunk.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +25 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +155 -0
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +21 -6
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +26 -0
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts +192 -49
- package/dist/dts/DateTime.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +2 -0
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +658 -1
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +84 -2
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts +6 -0
- package/dist/dts/FiberHandle.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +6 -0
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +6 -0
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/Function.d.ts +50 -0
- package/dist/dts/Function.d.ts.map +1 -1
- package/dist/dts/GlobalValue.d.ts +2 -0
- package/dist/dts/GlobalValue.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +6 -0
- package/dist/dts/HashMap.d.ts.map +1 -1
- package/dist/dts/Inspectable.d.ts.map +1 -1
- package/dist/dts/Iterable.d.ts +26 -0
- package/dist/dts/Iterable.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/List.d.ts +20 -0
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +34 -0
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/Mailbox.d.ts +2 -0
- package/dist/dts/Mailbox.d.ts.map +1 -1
- package/dist/dts/ManagedRuntime.d.ts +2 -0
- package/dist/dts/ManagedRuntime.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +18 -0
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/Micro.d.ts +880 -863
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +104 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +142 -0
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Order.d.ts +2 -0
- package/dist/dts/Order.d.ts.map +1 -1
- package/dist/dts/Ordering.d.ts +8 -0
- package/dist/dts/Ordering.d.ts.map +1 -1
- package/dist/dts/Predicate.d.ts +104 -0
- package/dist/dts/Predicate.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +4 -0
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/RateLimiter.d.ts +4 -0
- package/dist/dts/RateLimiter.d.ts.map +1 -1
- package/dist/dts/RcMap.d.ts +6 -0
- package/dist/dts/RcMap.d.ts.map +1 -1
- package/dist/dts/RcRef.d.ts +2 -0
- package/dist/dts/RcRef.d.ts.map +1 -1
- package/dist/dts/Record.d.ts +136 -0
- package/dist/dts/Record.d.ts.map +1 -1
- package/dist/dts/Redacted.d.ts +8 -0
- package/dist/dts/Redacted.d.ts.map +1 -1
- package/dist/dts/RegExp.d.ts +4 -0
- package/dist/dts/RegExp.d.ts.map +1 -1
- package/dist/dts/Request.d.ts +4 -0
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/RequestResolver.d.ts +6 -0
- package/dist/dts/RequestResolver.d.ts.map +1 -1
- package/dist/dts/Runtime.d.ts +18 -0
- package/dist/dts/Runtime.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 +90 -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 +394 -32
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/String.d.ts +94 -0
- package/dist/dts/String.d.ts.map +1 -1
- package/dist/dts/Struct.d.ts +24 -0
- package/dist/dts/Struct.d.ts.map +1 -1
- package/dist/dts/Symbol.d.ts +2 -0
- package/dist/dts/Symbol.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +132 -0
- package/dist/dts/Trie.d.ts.map +1 -1
- package/dist/dts/Tuple.d.ts +42 -0
- package/dist/dts/Tuple.d.ts.map +1 -1
- package/dist/dts/Types.d.ts +24 -0
- package/dist/dts/Types.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/Array.js +208 -0
- package/dist/esm/Array.js.map +1 -1
- package/dist/esm/BigDecimal.js +175 -20
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/BigInt.js +54 -0
- package/dist/esm/BigInt.js.map +1 -1
- package/dist/esm/Boolean.js +24 -0
- package/dist/esm/Boolean.js.map +1 -1
- package/dist/esm/Brand.js +4 -0
- package/dist/esm/Brand.js.map +1 -1
- package/dist/esm/Channel.js +42 -2
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Chunk.js +8 -0
- package/dist/esm/Chunk.js.map +1 -1
- package/dist/esm/Config.js +9 -0
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Context.js +49 -0
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Cron.js +81 -67
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/Data.js +16 -0
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/DateTime.js +176 -627
- package/dist/esm/DateTime.js.map +1 -1
- package/dist/esm/Duration.js +2 -0
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js +297 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +40 -2
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/FiberHandle.js +6 -0
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberMap.js +6 -0
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberSet.js +6 -0
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/Function.js +34 -0
- package/dist/esm/Function.js.map +1 -1
- package/dist/esm/GlobalValue.js +2 -0
- package/dist/esm/GlobalValue.js.map +1 -1
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/Inspectable.js +8 -4
- package/dist/esm/Inspectable.js.map +1 -1
- package/dist/esm/Iterable.js +18 -0
- package/dist/esm/Iterable.js.map +1 -1
- package/dist/esm/JSONSchema.js.map +1 -1
- package/dist/esm/List.js +4 -0
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/Logger.js +26 -0
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Mailbox.js +2 -0
- package/dist/esm/Mailbox.js.map +1 -1
- package/dist/esm/ManagedRuntime.js +2 -0
- package/dist/esm/ManagedRuntime.js.map +1 -1
- package/dist/esm/Metric.js +10 -0
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Micro.js +1077 -1037
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/Number.js +44 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js +72 -0
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Order.js +2 -0
- package/dist/esm/Order.js.map +1 -1
- package/dist/esm/Ordering.js +4 -0
- package/dist/esm/Ordering.js.map +1 -1
- package/dist/esm/Predicate.js +68 -0
- package/dist/esm/Predicate.js.map +1 -1
- package/dist/esm/Random.js +4 -0
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/RateLimiter.js +4 -0
- package/dist/esm/RateLimiter.js.map +1 -1
- package/dist/esm/RcMap.js +2 -0
- package/dist/esm/RcMap.js.map +1 -1
- package/dist/esm/RcRef.js +2 -0
- package/dist/esm/RcRef.js.map +1 -1
- package/dist/esm/Record.js +56 -0
- package/dist/esm/Record.js.map +1 -1
- package/dist/esm/Redacted.js +8 -0
- package/dist/esm/Redacted.js.map +1 -1
- package/dist/esm/RegExp.js +4 -0
- package/dist/esm/RegExp.js.map +1 -1
- package/dist/esm/Request.js +4 -0
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/RequestResolver.js +2 -0
- package/dist/esm/RequestResolver.js.map +1 -1
- package/dist/esm/Runtime.js +6 -0
- package/dist/esm/Runtime.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schema.js +88 -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 +183 -5
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/String.js +62 -0
- package/dist/esm/String.js.map +1 -1
- package/dist/esm/Struct.js +12 -0
- package/dist/esm/Struct.js.map +1 -1
- package/dist/esm/Symbol.js +2 -0
- package/dist/esm/Symbol.js.map +1 -1
- package/dist/esm/Trie.js +56 -0
- package/dist/esm/Trie.js.map +1 -1
- package/dist/esm/Tuple.js +22 -0
- package/dist/esm/Tuple.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/Array.ts +534 -0
- package/src/BigDecimal.ts +247 -21
- package/src/BigInt.ts +114 -0
- package/src/Boolean.ts +56 -0
- package/src/Brand.ts +6 -0
- package/src/Channel.ts +81 -5
- package/src/Chunk.ts +32 -0
- package/src/Config.ts +26 -1
- package/src/Context.ts +163 -0
- package/src/Cron.ts +91 -68
- package/src/Data.ts +26 -0
- package/src/DateTime.ts +307 -757
- package/src/Duration.ts +2 -0
- package/src/Effect.ts +910 -1
- package/src/Either.ts +84 -2
- package/src/FiberHandle.ts +6 -0
- package/src/FiberMap.ts +6 -0
- package/src/FiberSet.ts +6 -0
- package/src/Function.ts +50 -0
- package/src/GlobalValue.ts +2 -0
- package/src/HashMap.ts +6 -0
- package/src/Inspectable.ts +11 -7
- package/src/Iterable.ts +26 -0
- package/src/JSONSchema.ts +1 -0
- package/src/List.ts +24 -0
- package/src/Logger.ts +34 -0
- package/src/Mailbox.ts +2 -0
- package/src/ManagedRuntime.ts +2 -0
- package/src/Metric.ts +18 -0
- package/src/Micro.ts +2007 -1745
- package/src/Number.ts +104 -0
- package/src/Option.ts +142 -0
- package/src/Order.ts +2 -0
- package/src/Ordering.ts +8 -0
- package/src/Predicate.ts +104 -0
- package/src/Random.ts +4 -0
- package/src/RateLimiter.ts +4 -0
- package/src/RcMap.ts +6 -0
- package/src/RcRef.ts +2 -0
- package/src/Record.ts +136 -0
- package/src/Redacted.ts +8 -0
- package/src/RegExp.ts +4 -0
- package/src/Request.ts +4 -0
- package/src/RequestResolver.ts +6 -0
- package/src/Runtime.ts +18 -0
- package/src/STM.ts +2 -0
- package/src/Schema.ts +124 -0
- package/src/Sink.ts +11 -0
- package/src/Stream.ts +399 -44
- package/src/String.ts +94 -0
- package/src/Struct.ts +24 -0
- package/src/Symbol.ts +2 -0
- package/src/Trie.ts +132 -0
- package/src/Tuple.ts +42 -0
- package/src/Types.ts +24 -0
- 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/dist/cjs/DateTime.js
CHANGED
|
@@ -4,130 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.zonedOffsetIso = exports.zonedOffset = exports.zoneUnsafeMakeNamed = exports.zoneToString = exports.zoneMakeOffset = exports.zoneMakeNamedEffect = exports.zoneMakeNamed = exports.zoneMakeLocal = exports.zoneFromString = exports.withDateUtc = exports.withDate = exports.withCurrentZoneOffset = exports.withCurrentZoneNamed = exports.withCurrentZoneLocal = exports.withCurrentZone = exports.unsafeSetZoneNamed = exports.unsafeNow = exports.unsafeMakeZoned = exports.unsafeMake = exports.unsafeIsPast = exports.unsafeIsFuture = exports.unsafeFromDate = exports.toPartsUtc = exports.toParts = exports.toEpochMillis = exports.toDateUtc = exports.toDate = exports.subtractDuration = exports.subtract = exports.startOf = exports.setZoneOffset = exports.setZoneNamed = exports.setZoneCurrent = exports.setZone = exports.setPartsUtc = exports.setParts = exports.removeTime = exports.nowInCurrentZone = exports.now = exports.nearest = exports.mutateUtc = exports.mutate = exports.min = exports.max = exports.match = exports.mapEpochMillis = exports.makeZonedFromString = exports.makeZoned = exports.make = exports.lessThanOrEqualTo = exports.lessThan = exports.layerCurrentZoneOffset = exports.layerCurrentZoneNamed = exports.layerCurrentZoneLocal = exports.layerCurrentZone = exports.isZoned = exports.isUtc = exports.isTimeZoneOffset = exports.isTimeZoneNamed = exports.isTimeZone = exports.isPast = exports.isFuture = exports.isDateTime = exports.greaterThanOrEqualTo = exports.greaterThan = exports.getPartUtc = exports.getPart = exports.formatUtc = exports.formatLocal = exports.formatIsoZoned = exports.formatIsoOffset = exports.formatIsoDateUtc = exports.formatIsoDate = exports.formatIso = exports.formatIntl = exports.format = exports.endOf = exports.distanceDurationEither = exports.distanceDuration = exports.distance = exports.clamp = exports.between = exports.addDuration = exports.add = exports.TypeId = exports.TimeZoneTypeId = exports.Order = exports.Equivalence = exports.CurrentTimeZone = void 0;
|
|
7
|
-
var _Cause = require("./Cause.js");
|
|
8
|
-
var Clock = _interopRequireWildcard(require("./Clock.js"));
|
|
9
7
|
var Context = _interopRequireWildcard(require("./Context.js"));
|
|
10
|
-
var Duration = _interopRequireWildcard(require("./Duration.js"));
|
|
11
8
|
var Effect = _interopRequireWildcard(require("./Effect.js"));
|
|
12
|
-
var Either = _interopRequireWildcard(require("./Either.js"));
|
|
13
|
-
var Equal = _interopRequireWildcard(require("./Equal.js"));
|
|
14
|
-
var Equivalence_ = _interopRequireWildcard(require("./Equivalence.js"));
|
|
15
9
|
var _Function = require("./Function.js");
|
|
16
|
-
var
|
|
17
|
-
var Hash = _interopRequireWildcard(require("./Hash.js"));
|
|
18
|
-
var Inspectable = _interopRequireWildcard(require("./Inspectable.js"));
|
|
10
|
+
var Internal = _interopRequireWildcard(require("./internal/dateTime.js"));
|
|
19
11
|
var Layer = _interopRequireWildcard(require("./Layer.js"));
|
|
20
|
-
var Option = _interopRequireWildcard(require("./Option.js"));
|
|
21
|
-
var order = _interopRequireWildcard(require("./Order.js"));
|
|
22
|
-
var _Pipeable = require("./Pipeable.js");
|
|
23
|
-
var Predicate = _interopRequireWildcard(require("./Predicate.js"));
|
|
24
12
|
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); }
|
|
25
13
|
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 && {}.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; }
|
|
26
|
-
/**
|
|
27
|
-
* @since 3.6.0
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
14
|
/**
|
|
31
15
|
* @since 3.6.0
|
|
32
16
|
* @category type ids
|
|
33
17
|
*/
|
|
34
|
-
const TypeId = exports.TypeId =
|
|
18
|
+
const TypeId = exports.TypeId = Internal.TypeId;
|
|
35
19
|
/**
|
|
36
20
|
* @since 3.6.0
|
|
37
21
|
* @category type ids
|
|
38
22
|
*/
|
|
39
|
-
const TimeZoneTypeId = exports.TimeZoneTypeId =
|
|
40
|
-
const Proto = {
|
|
41
|
-
[TypeId]: TypeId,
|
|
42
|
-
pipe() {
|
|
43
|
-
return (0, _Pipeable.pipeArguments)(this, arguments);
|
|
44
|
-
},
|
|
45
|
-
[Inspectable.NodeInspectSymbol]() {
|
|
46
|
-
return this.toString();
|
|
47
|
-
},
|
|
48
|
-
toJSON() {
|
|
49
|
-
return toDateUtc(this).toJSON();
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
const ProtoUtc = {
|
|
53
|
-
...Proto,
|
|
54
|
-
_tag: "Utc",
|
|
55
|
-
[Hash.symbol]() {
|
|
56
|
-
return Hash.cached(this, Hash.number(this.epochMillis));
|
|
57
|
-
},
|
|
58
|
-
[Equal.symbol](that) {
|
|
59
|
-
return isDateTime(that) && that._tag === "Utc" && this.epochMillis === that.epochMillis;
|
|
60
|
-
},
|
|
61
|
-
toString() {
|
|
62
|
-
return `DateTime.Utc(${toDateUtc(this).toJSON()})`;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
const ProtoZoned = {
|
|
66
|
-
...Proto,
|
|
67
|
-
_tag: "Zoned",
|
|
68
|
-
[Hash.symbol]() {
|
|
69
|
-
return (0, _Function.pipe)(Hash.number(this.epochMillis), Hash.combine(Hash.hash(this.zone)), Hash.cached(this));
|
|
70
|
-
},
|
|
71
|
-
[Equal.symbol](that) {
|
|
72
|
-
return isDateTime(that) && that._tag === "Zoned" && this.epochMillis === that.epochMillis && Equal.equals(this.zone, that.zone);
|
|
73
|
-
},
|
|
74
|
-
toString() {
|
|
75
|
-
return `DateTime.Zoned(${formatIsoZoned(this)})`;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
const ProtoTimeZone = {
|
|
79
|
-
[TimeZoneTypeId]: TimeZoneTypeId,
|
|
80
|
-
[Inspectable.NodeInspectSymbol]() {
|
|
81
|
-
return this.toString();
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
const ProtoTimeZoneNamed = {
|
|
85
|
-
...ProtoTimeZone,
|
|
86
|
-
_tag: "Named",
|
|
87
|
-
[Hash.symbol]() {
|
|
88
|
-
return Hash.cached(this, Hash.string(`Named:${this.id}`));
|
|
89
|
-
},
|
|
90
|
-
[Equal.symbol](that) {
|
|
91
|
-
return isTimeZone(that) && that._tag === "Named" && this.id === that.id;
|
|
92
|
-
},
|
|
93
|
-
toString() {
|
|
94
|
-
return `TimeZone.Named(${this.id})`;
|
|
95
|
-
},
|
|
96
|
-
toJSON() {
|
|
97
|
-
return {
|
|
98
|
-
_id: "TimeZone",
|
|
99
|
-
_tag: "Named",
|
|
100
|
-
id: this.id
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
const ProtoTimeZoneOffset = {
|
|
105
|
-
...ProtoTimeZone,
|
|
106
|
-
_tag: "Offset",
|
|
107
|
-
[Hash.symbol]() {
|
|
108
|
-
return Hash.cached(this, Hash.string(`Offset:${this.offset}`));
|
|
109
|
-
},
|
|
110
|
-
[Equal.symbol](that) {
|
|
111
|
-
return isTimeZone(that) && that._tag === "Offset" && this.offset === that.offset;
|
|
112
|
-
},
|
|
113
|
-
toString() {
|
|
114
|
-
return `TimeZone.Offset(${offsetToString(this.offset)})`;
|
|
115
|
-
},
|
|
116
|
-
toJSON() {
|
|
117
|
-
return {
|
|
118
|
-
_id: "TimeZone",
|
|
119
|
-
_tag: "Offset",
|
|
120
|
-
offset: this.offset
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
const makeZonedProto = (epochMillis, zone, partsUtc) => {
|
|
125
|
-
const self = Object.create(ProtoZoned);
|
|
126
|
-
self.epochMillis = epochMillis;
|
|
127
|
-
self.zone = zone;
|
|
128
|
-
self.partsUtc = partsUtc;
|
|
129
|
-
return self;
|
|
130
|
-
};
|
|
23
|
+
const TimeZoneTypeId = exports.TimeZoneTypeId = Internal.TimeZoneTypeId;
|
|
131
24
|
// =============================================================================
|
|
132
25
|
// guards
|
|
133
26
|
// =============================================================================
|
|
@@ -135,38 +28,32 @@ const makeZonedProto = (epochMillis, zone, partsUtc) => {
|
|
|
135
28
|
* @since 3.6.0
|
|
136
29
|
* @category guards
|
|
137
30
|
*/
|
|
138
|
-
const isDateTime =
|
|
139
|
-
exports.isDateTime = isDateTime;
|
|
140
|
-
const isDateTimeArgs = args => isDateTime(args[0]);
|
|
31
|
+
const isDateTime = exports.isDateTime = Internal.isDateTime;
|
|
141
32
|
/**
|
|
142
33
|
* @since 3.6.0
|
|
143
34
|
* @category guards
|
|
144
35
|
*/
|
|
145
|
-
const isTimeZone =
|
|
36
|
+
const isTimeZone = exports.isTimeZone = Internal.isTimeZone;
|
|
146
37
|
/**
|
|
147
38
|
* @since 3.6.0
|
|
148
39
|
* @category guards
|
|
149
40
|
*/
|
|
150
|
-
exports.
|
|
151
|
-
const isTimeZoneOffset = u => isTimeZone(u) && u._tag === "Offset";
|
|
41
|
+
const isTimeZoneOffset = exports.isTimeZoneOffset = Internal.isTimeZoneOffset;
|
|
152
42
|
/**
|
|
153
43
|
* @since 3.6.0
|
|
154
44
|
* @category guards
|
|
155
45
|
*/
|
|
156
|
-
exports.
|
|
157
|
-
const isTimeZoneNamed = u => isTimeZone(u) && u._tag === "Named";
|
|
46
|
+
const isTimeZoneNamed = exports.isTimeZoneNamed = Internal.isTimeZoneNamed;
|
|
158
47
|
/**
|
|
159
48
|
* @since 3.6.0
|
|
160
49
|
* @category guards
|
|
161
50
|
*/
|
|
162
|
-
exports.
|
|
163
|
-
const isUtc = self => self._tag === "Utc";
|
|
51
|
+
const isUtc = exports.isUtc = Internal.isUtc;
|
|
164
52
|
/**
|
|
165
53
|
* @since 3.6.0
|
|
166
54
|
* @category guards
|
|
167
55
|
*/
|
|
168
|
-
exports.
|
|
169
|
-
const isZoned = self => self._tag === "Zoned";
|
|
56
|
+
const isZoned = exports.isZoned = Internal.isZoned;
|
|
170
57
|
// =============================================================================
|
|
171
58
|
// instances
|
|
172
59
|
// =============================================================================
|
|
@@ -174,25 +61,19 @@ const isZoned = self => self._tag === "Zoned";
|
|
|
174
61
|
* @since 3.6.0
|
|
175
62
|
* @category instances
|
|
176
63
|
*/
|
|
177
|
-
exports.
|
|
178
|
-
const Equivalence = exports.Equivalence = /*#__PURE__*/Equivalence_.make((a, b) => a.epochMillis === b.epochMillis);
|
|
64
|
+
const Equivalence = exports.Equivalence = Internal.Equivalence;
|
|
179
65
|
/**
|
|
180
66
|
* @since 3.6.0
|
|
181
67
|
* @category instances
|
|
182
68
|
*/
|
|
183
|
-
const Order = exports.Order =
|
|
69
|
+
const Order = exports.Order = Internal.Order;
|
|
184
70
|
/**
|
|
185
71
|
* @since 3.6.0
|
|
186
72
|
*/
|
|
187
|
-
const clamp = exports.clamp =
|
|
73
|
+
const clamp = exports.clamp = Internal.clamp;
|
|
188
74
|
// =============================================================================
|
|
189
75
|
// constructors
|
|
190
76
|
// =============================================================================
|
|
191
|
-
const makeUtc = epochMillis => {
|
|
192
|
-
const self = Object.create(ProtoUtc);
|
|
193
|
-
self.epochMillis = epochMillis;
|
|
194
|
-
return self;
|
|
195
|
-
};
|
|
196
77
|
/**
|
|
197
78
|
* Create a `DateTime` from a `Date`.
|
|
198
79
|
*
|
|
@@ -201,13 +82,7 @@ const makeUtc = epochMillis => {
|
|
|
201
82
|
* @since 3.6.0
|
|
202
83
|
* @category constructors
|
|
203
84
|
*/
|
|
204
|
-
const unsafeFromDate =
|
|
205
|
-
const epochMillis = date.getTime();
|
|
206
|
-
if (Number.isNaN(epochMillis)) {
|
|
207
|
-
throw new _Cause.IllegalArgumentException("Invalid date");
|
|
208
|
-
}
|
|
209
|
-
return makeUtc(epochMillis);
|
|
210
|
-
};
|
|
85
|
+
const unsafeFromDate = exports.unsafeFromDate = Internal.unsafeFromDate;
|
|
211
86
|
/**
|
|
212
87
|
* Create a `DateTime` from one of the following:
|
|
213
88
|
*
|
|
@@ -220,6 +95,7 @@ const unsafeFromDate = date => {
|
|
|
220
95
|
* @since 3.6.0
|
|
221
96
|
* @category constructors
|
|
222
97
|
* @example
|
|
98
|
+
* ```ts
|
|
223
99
|
* import { DateTime } from "effect"
|
|
224
100
|
*
|
|
225
101
|
* // from Date
|
|
@@ -230,20 +106,9 @@ const unsafeFromDate = date => {
|
|
|
230
106
|
*
|
|
231
107
|
* // from string
|
|
232
108
|
* DateTime.unsafeMake("2024-01-01")
|
|
109
|
+
* ```
|
|
233
110
|
*/
|
|
234
|
-
exports.
|
|
235
|
-
const unsafeMake = input => {
|
|
236
|
-
if (isDateTime(input)) {
|
|
237
|
-
return input;
|
|
238
|
-
} else if (input instanceof Date) {
|
|
239
|
-
return unsafeFromDate(input);
|
|
240
|
-
} else if (typeof input === "object") {
|
|
241
|
-
const date = new Date(0);
|
|
242
|
-
setPartsDate(date, input);
|
|
243
|
-
return unsafeFromDate(date);
|
|
244
|
-
}
|
|
245
|
-
return unsafeFromDate(new Date(input));
|
|
246
|
-
};
|
|
111
|
+
const unsafeMake = exports.unsafeMake = Internal.unsafeMake;
|
|
247
112
|
/**
|
|
248
113
|
* Create a `DateTime.Zoned` using `DateTime.unsafeMake` and a time zone.
|
|
249
114
|
*
|
|
@@ -254,36 +119,13 @@ const unsafeMake = input => {
|
|
|
254
119
|
* @since 3.6.0
|
|
255
120
|
* @category constructors
|
|
256
121
|
* @example
|
|
122
|
+
* ```ts
|
|
257
123
|
* import { DateTime } from "effect"
|
|
258
124
|
*
|
|
259
125
|
* DateTime.unsafeMakeZoned(new Date(), { timeZone: "Europe/London" })
|
|
126
|
+
* ```
|
|
260
127
|
*/
|
|
261
|
-
exports.
|
|
262
|
-
const unsafeMakeZoned = (input, options) => {
|
|
263
|
-
if (options?.timeZone === undefined && isDateTime(input) && isZoned(input)) {
|
|
264
|
-
return input;
|
|
265
|
-
}
|
|
266
|
-
const self = unsafeMake(input);
|
|
267
|
-
let zone;
|
|
268
|
-
if (options?.timeZone === undefined) {
|
|
269
|
-
const offset = new Date(self.epochMillis).getTimezoneOffset() * -60 * 1000;
|
|
270
|
-
zone = zoneMakeOffset(offset);
|
|
271
|
-
} else if (isTimeZone(options?.timeZone)) {
|
|
272
|
-
zone = options.timeZone;
|
|
273
|
-
} else if (typeof options?.timeZone === "number") {
|
|
274
|
-
zone = zoneMakeOffset(options.timeZone);
|
|
275
|
-
} else {
|
|
276
|
-
const parsedZone = zoneFromString(options.timeZone);
|
|
277
|
-
if (Option.isNone(parsedZone)) {
|
|
278
|
-
throw new _Cause.IllegalArgumentException(`Invalid time zone: ${options.timeZone}`);
|
|
279
|
-
}
|
|
280
|
-
zone = parsedZone.value;
|
|
281
|
-
}
|
|
282
|
-
if (options?.adjustForTimeZone !== true) {
|
|
283
|
-
return makeZonedProto(self.epochMillis, zone, self.partsUtc);
|
|
284
|
-
}
|
|
285
|
-
return makeZonedFromAdjusted(self.epochMillis, zone);
|
|
286
|
-
};
|
|
128
|
+
const unsafeMakeZoned = exports.unsafeMakeZoned = Internal.unsafeMakeZoned;
|
|
287
129
|
/**
|
|
288
130
|
* Create a `DateTime.Zoned` using `DateTime.make` and a time zone.
|
|
289
131
|
*
|
|
@@ -294,12 +136,13 @@ const unsafeMakeZoned = (input, options) => {
|
|
|
294
136
|
* @since 3.6.0
|
|
295
137
|
* @category constructors
|
|
296
138
|
* @example
|
|
139
|
+
* ```ts
|
|
297
140
|
* import { DateTime } from "effect"
|
|
298
141
|
*
|
|
299
142
|
* DateTime.makeZoned(new Date(), { timeZone: "Europe/London" })
|
|
143
|
+
* ```
|
|
300
144
|
*/
|
|
301
|
-
exports.
|
|
302
|
-
const makeZoned = exports.makeZoned = /*#__PURE__*/Option.liftThrowable(unsafeMakeZoned);
|
|
145
|
+
const makeZoned = exports.makeZoned = Internal.makeZoned;
|
|
303
146
|
/**
|
|
304
147
|
* Create a `DateTime` from one of the following:
|
|
305
148
|
*
|
|
@@ -314,6 +157,7 @@ const makeZoned = exports.makeZoned = /*#__PURE__*/Option.liftThrowable(unsafeMa
|
|
|
314
157
|
* @since 3.6.0
|
|
315
158
|
* @category constructors
|
|
316
159
|
* @example
|
|
160
|
+
* ```ts
|
|
317
161
|
* import { DateTime } from "effect"
|
|
318
162
|
*
|
|
319
163
|
* // from Date
|
|
@@ -324,9 +168,9 @@ const makeZoned = exports.makeZoned = /*#__PURE__*/Option.liftThrowable(unsafeMa
|
|
|
324
168
|
*
|
|
325
169
|
* // from string
|
|
326
170
|
* DateTime.make("2024-01-01")
|
|
171
|
+
* ```
|
|
327
172
|
*/
|
|
328
|
-
const make = exports.make =
|
|
329
|
-
const zonedStringRegex = /^(.{17,35})\[(.+)\]$/;
|
|
173
|
+
const make = exports.make = Internal.make;
|
|
330
174
|
/**
|
|
331
175
|
* Create a `DateTime.Zoned` from a string.
|
|
332
176
|
*
|
|
@@ -335,40 +179,29 @@ const zonedStringRegex = /^(.{17,35})\[(.+)\]$/;
|
|
|
335
179
|
* @since 3.6.0
|
|
336
180
|
* @category constructors
|
|
337
181
|
*/
|
|
338
|
-
const makeZonedFromString =
|
|
339
|
-
const match = zonedStringRegex.exec(input);
|
|
340
|
-
if (match === null) {
|
|
341
|
-
const offset = parseOffset(input);
|
|
342
|
-
return offset !== null ? makeZoned(input, {
|
|
343
|
-
timeZone: offset
|
|
344
|
-
}) : Option.none();
|
|
345
|
-
}
|
|
346
|
-
const [, isoString, timeZone] = match;
|
|
347
|
-
return makeZoned(isoString, {
|
|
348
|
-
timeZone
|
|
349
|
-
});
|
|
350
|
-
};
|
|
182
|
+
const makeZonedFromString = exports.makeZonedFromString = Internal.makeZonedFromString;
|
|
351
183
|
/**
|
|
352
184
|
* Get the current time using the `Clock` service and convert it to a `DateTime`.
|
|
353
185
|
*
|
|
354
186
|
* @since 3.6.0
|
|
355
187
|
* @category constructors
|
|
356
188
|
* @example
|
|
189
|
+
* ```ts
|
|
357
190
|
* import { DateTime, Effect } from "effect"
|
|
358
191
|
*
|
|
359
192
|
* Effect.gen(function* () {
|
|
360
193
|
* const now = yield* DateTime.now
|
|
361
194
|
* })
|
|
195
|
+
* ```
|
|
362
196
|
*/
|
|
363
|
-
exports.
|
|
364
|
-
const now = exports.now = /*#__PURE__*/Effect.map(Clock.currentTimeMillis, makeUtc);
|
|
197
|
+
const now = exports.now = Internal.now;
|
|
365
198
|
/**
|
|
366
199
|
* Get the current time using `Date.now`.
|
|
367
200
|
*
|
|
368
201
|
* @since 3.6.0
|
|
369
202
|
* @category constructors
|
|
370
203
|
*/
|
|
371
|
-
const unsafeNow =
|
|
204
|
+
const unsafeNow = exports.unsafeNow = Internal.unsafeNow;
|
|
372
205
|
// =============================================================================
|
|
373
206
|
// time zones
|
|
374
207
|
// =============================================================================
|
|
@@ -378,6 +211,7 @@ const unsafeNow = () => makeUtc(Date.now());
|
|
|
378
211
|
* @since 3.6.0
|
|
379
212
|
* @category time zones
|
|
380
213
|
* @example
|
|
214
|
+
* ```ts
|
|
381
215
|
* import { DateTime, Effect } from "effect"
|
|
382
216
|
*
|
|
383
217
|
* Effect.gen(function* () {
|
|
@@ -387,9 +221,9 @@ const unsafeNow = () => makeUtc(Date.now());
|
|
|
387
221
|
* // set the time zone
|
|
388
222
|
* const zoned: DateTime.Zoned = DateTime.setZone(now, zone)
|
|
389
223
|
* })
|
|
224
|
+
* ```
|
|
390
225
|
*/
|
|
391
|
-
exports.
|
|
392
|
-
const setZone = exports.setZone = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, zone, options) => options?.adjustForTimeZone === true ? makeZonedFromAdjusted(self.epochMillis, zone) : makeZonedProto(self.epochMillis, zone, self.partsUtc));
|
|
226
|
+
const setZone = exports.setZone = Internal.setZone;
|
|
393
227
|
/**
|
|
394
228
|
* Add a fixed offset time zone to a `DateTime`.
|
|
395
229
|
*
|
|
@@ -398,6 +232,7 @@ const setZone = exports.setZone = /*#__PURE__*/(0, _Function.dual)(isDateTimeArg
|
|
|
398
232
|
* @since 3.6.0
|
|
399
233
|
* @category time zones
|
|
400
234
|
* @example
|
|
235
|
+
* ```ts
|
|
401
236
|
* import { DateTime, Effect } from "effect"
|
|
402
237
|
*
|
|
403
238
|
* Effect.gen(function* () {
|
|
@@ -406,31 +241,9 @@ const setZone = exports.setZone = /*#__PURE__*/(0, _Function.dual)(isDateTimeArg
|
|
|
406
241
|
* // set the offset time zone in milliseconds
|
|
407
242
|
* const zoned: DateTime.Zoned = DateTime.setZoneOffset(now, 3 * 60 * 60 * 1000)
|
|
408
243
|
* })
|
|
244
|
+
* ```
|
|
409
245
|
*/
|
|
410
|
-
const setZoneOffset = exports.setZoneOffset =
|
|
411
|
-
const validZoneCache = /*#__PURE__*/(0, _GlobalValue.globalValue)("effect/DateTime/validZoneCache", () => new Map());
|
|
412
|
-
const formatOptions = {
|
|
413
|
-
day: "numeric",
|
|
414
|
-
month: "numeric",
|
|
415
|
-
year: "numeric",
|
|
416
|
-
hour: "numeric",
|
|
417
|
-
minute: "numeric",
|
|
418
|
-
second: "numeric",
|
|
419
|
-
timeZoneName: "longOffset",
|
|
420
|
-
fractionalSecondDigits: 3,
|
|
421
|
-
hourCycle: "h23"
|
|
422
|
-
};
|
|
423
|
-
const zoneMakeIntl = format => {
|
|
424
|
-
const zoneId = format.resolvedOptions().timeZone;
|
|
425
|
-
if (validZoneCache.has(zoneId)) {
|
|
426
|
-
return validZoneCache.get(zoneId);
|
|
427
|
-
}
|
|
428
|
-
const zone = Object.create(ProtoTimeZoneNamed);
|
|
429
|
-
zone.id = zoneId;
|
|
430
|
-
zone.format = format;
|
|
431
|
-
validZoneCache.set(zoneId, zone);
|
|
432
|
-
return zone;
|
|
433
|
-
};
|
|
246
|
+
const setZoneOffset = exports.setZoneOffset = Internal.setZoneOffset;
|
|
434
247
|
/**
|
|
435
248
|
* Attempt to create a named time zone from a IANA time zone identifier.
|
|
436
249
|
*
|
|
@@ -439,31 +252,14 @@ const zoneMakeIntl = format => {
|
|
|
439
252
|
* @since 3.6.0
|
|
440
253
|
* @category time zones
|
|
441
254
|
*/
|
|
442
|
-
const zoneUnsafeMakeNamed =
|
|
443
|
-
if (validZoneCache.has(zoneId)) {
|
|
444
|
-
return validZoneCache.get(zoneId);
|
|
445
|
-
}
|
|
446
|
-
try {
|
|
447
|
-
return zoneMakeIntl(new Intl.DateTimeFormat("en-US", {
|
|
448
|
-
...formatOptions,
|
|
449
|
-
timeZone: zoneId
|
|
450
|
-
}));
|
|
451
|
-
} catch (_) {
|
|
452
|
-
throw new _Cause.IllegalArgumentException(`Invalid time zone: ${zoneId}`);
|
|
453
|
-
}
|
|
454
|
-
};
|
|
255
|
+
const zoneUnsafeMakeNamed = exports.zoneUnsafeMakeNamed = Internal.zoneUnsafeMakeNamed;
|
|
455
256
|
/**
|
|
456
257
|
* Create a fixed offset time zone.
|
|
457
258
|
*
|
|
458
259
|
* @since 3.6.0
|
|
459
260
|
* @category time zones
|
|
460
261
|
*/
|
|
461
|
-
exports.
|
|
462
|
-
const zoneMakeOffset = offset => {
|
|
463
|
-
const zone = Object.create(ProtoTimeZoneOffset);
|
|
464
|
-
zone.offset = offset;
|
|
465
|
-
return zone;
|
|
466
|
-
};
|
|
262
|
+
const zoneMakeOffset = exports.zoneMakeOffset = Internal.zoneMakeOffset;
|
|
467
263
|
/**
|
|
468
264
|
* Create a named time zone from a IANA time zone identifier. If the time zone
|
|
469
265
|
* is invalid, `None` will be returned.
|
|
@@ -471,8 +267,7 @@ const zoneMakeOffset = offset => {
|
|
|
471
267
|
* @since 3.6.0
|
|
472
268
|
* @category time zones
|
|
473
269
|
*/
|
|
474
|
-
exports.
|
|
475
|
-
const zoneMakeNamed = exports.zoneMakeNamed = /*#__PURE__*/Option.liftThrowable(zoneUnsafeMakeNamed);
|
|
270
|
+
const zoneMakeNamed = exports.zoneMakeNamed = Internal.zoneMakeNamed;
|
|
476
271
|
/**
|
|
477
272
|
* Create a named time zone from a IANA time zone identifier. If the time zone
|
|
478
273
|
* is invalid, it will fail with an `IllegalArgumentException`.
|
|
@@ -480,39 +275,28 @@ const zoneMakeNamed = exports.zoneMakeNamed = /*#__PURE__*/Option.liftThrowable(
|
|
|
480
275
|
* @since 3.6.0
|
|
481
276
|
* @category time zones
|
|
482
277
|
*/
|
|
483
|
-
const zoneMakeNamedEffect =
|
|
484
|
-
try: () => zoneUnsafeMakeNamed(zoneId),
|
|
485
|
-
catch: e => e
|
|
486
|
-
});
|
|
278
|
+
const zoneMakeNamedEffect = exports.zoneMakeNamedEffect = Internal.zoneMakeNamedEffect;
|
|
487
279
|
/**
|
|
488
280
|
* Create a named time zone from the system's local time zone.
|
|
489
281
|
*
|
|
490
282
|
* @since 3.6.0
|
|
491
283
|
* @category time zones
|
|
492
284
|
*/
|
|
493
|
-
exports.
|
|
494
|
-
const zoneMakeLocal = () => zoneMakeIntl(new Intl.DateTimeFormat("en-US", formatOptions));
|
|
495
|
-
exports.zoneMakeLocal = zoneMakeLocal;
|
|
496
|
-
const offsetZoneRegex = /^(?:GMT|[+-])/;
|
|
285
|
+
const zoneMakeLocal = exports.zoneMakeLocal = Internal.zoneMakeLocal;
|
|
497
286
|
/**
|
|
498
287
|
* Try parse a TimeZone from a string
|
|
499
288
|
*
|
|
500
289
|
* @since 3.6.0
|
|
501
290
|
* @category time zones
|
|
502
291
|
*/
|
|
503
|
-
const zoneFromString =
|
|
504
|
-
if (offsetZoneRegex.test(zone)) {
|
|
505
|
-
const offset = parseOffset(zone);
|
|
506
|
-
return offset === null ? Option.none() : Option.some(zoneMakeOffset(offset));
|
|
507
|
-
}
|
|
508
|
-
return zoneMakeNamed(zone);
|
|
509
|
-
};
|
|
292
|
+
const zoneFromString = exports.zoneFromString = Internal.zoneFromString;
|
|
510
293
|
/**
|
|
511
294
|
* Format a `TimeZone` as a string.
|
|
512
295
|
*
|
|
513
296
|
* @since 3.6.0
|
|
514
297
|
* @category time zones
|
|
515
298
|
* @example
|
|
299
|
+
* ```ts
|
|
516
300
|
* import { DateTime, Effect } from "effect"
|
|
517
301
|
*
|
|
518
302
|
* // Outputs "+03:00"
|
|
@@ -520,14 +304,9 @@ const zoneFromString = zone => {
|
|
|
520
304
|
*
|
|
521
305
|
* // Outputs "Europe/London"
|
|
522
306
|
* DateTime.zoneToString(DateTime.zoneUnsafeMakeNamed("Europe/London"))
|
|
307
|
+
* ```
|
|
523
308
|
*/
|
|
524
|
-
exports.
|
|
525
|
-
const zoneToString = self => {
|
|
526
|
-
if (self._tag === "Offset") {
|
|
527
|
-
return offsetToString(self.offset);
|
|
528
|
-
}
|
|
529
|
-
return self.id;
|
|
530
|
-
};
|
|
309
|
+
const zoneToString = exports.zoneToString = Internal.zoneToString;
|
|
531
310
|
/**
|
|
532
311
|
* Set the time zone of a `DateTime` from an IANA time zone identifier. If the
|
|
533
312
|
* time zone is invalid, `None` will be returned.
|
|
@@ -535,6 +314,7 @@ const zoneToString = self => {
|
|
|
535
314
|
* @since 3.6.0
|
|
536
315
|
* @category time zones
|
|
537
316
|
* @example
|
|
317
|
+
* ```ts
|
|
538
318
|
* import { DateTime, Effect } from "effect"
|
|
539
319
|
*
|
|
540
320
|
* Effect.gen(function* () {
|
|
@@ -542,9 +322,9 @@ const zoneToString = self => {
|
|
|
542
322
|
* // set the time zone, returns an Option
|
|
543
323
|
* DateTime.setZoneNamed(now, "Europe/London")
|
|
544
324
|
* })
|
|
325
|
+
* ```
|
|
545
326
|
*/
|
|
546
|
-
exports.
|
|
547
|
-
const setZoneNamed = exports.setZoneNamed = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, zoneId, options) => Option.map(zoneMakeNamed(zoneId), zone => setZone(self, zone, options)));
|
|
327
|
+
const setZoneNamed = exports.setZoneNamed = Internal.setZoneNamed;
|
|
548
328
|
/**
|
|
549
329
|
* Set the time zone of a `DateTime` from an IANA time zone identifier. If the
|
|
550
330
|
* time zone is invalid, an `IllegalArgumentException` will be thrown.
|
|
@@ -552,6 +332,7 @@ const setZoneNamed = exports.setZoneNamed = /*#__PURE__*/(0, _Function.dual)(isD
|
|
|
552
332
|
* @since 3.6.0
|
|
553
333
|
* @category time zones
|
|
554
334
|
* @example
|
|
335
|
+
* ```ts
|
|
555
336
|
* import { DateTime, Effect } from "effect"
|
|
556
337
|
*
|
|
557
338
|
* Effect.gen(function* () {
|
|
@@ -559,8 +340,9 @@ const setZoneNamed = exports.setZoneNamed = /*#__PURE__*/(0, _Function.dual)(isD
|
|
|
559
340
|
* // set the time zone
|
|
560
341
|
* DateTime.unsafeSetZoneNamed(now, "Europe/London")
|
|
561
342
|
* })
|
|
343
|
+
* ```
|
|
562
344
|
*/
|
|
563
|
-
const unsafeSetZoneNamed = exports.unsafeSetZoneNamed =
|
|
345
|
+
const unsafeSetZoneNamed = exports.unsafeSetZoneNamed = Internal.unsafeSetZoneNamed;
|
|
564
346
|
// =============================================================================
|
|
565
347
|
// comparisons
|
|
566
348
|
// =============================================================================
|
|
@@ -573,6 +355,7 @@ const unsafeSetZoneNamed = exports.unsafeSetZoneNamed = /*#__PURE__*/(0, _Functi
|
|
|
573
355
|
* @since 3.6.0
|
|
574
356
|
* @category comparisons
|
|
575
357
|
* @example
|
|
358
|
+
* ```ts
|
|
576
359
|
* import { DateTime, Effect } from "effect"
|
|
577
360
|
*
|
|
578
361
|
* Effect.gen(function* () {
|
|
@@ -582,8 +365,9 @@ const unsafeSetZoneNamed = exports.unsafeSetZoneNamed = /*#__PURE__*/(0, _Functi
|
|
|
582
365
|
* // returns 60000
|
|
583
366
|
* DateTime.distance(now, other)
|
|
584
367
|
* })
|
|
368
|
+
* ```
|
|
585
369
|
*/
|
|
586
|
-
const distance = exports.distance =
|
|
370
|
+
const distance = exports.distance = Internal.distance;
|
|
587
371
|
/**
|
|
588
372
|
* Calulate the difference between two `DateTime` values.
|
|
589
373
|
*
|
|
@@ -596,6 +380,7 @@ const distance = exports.distance = /*#__PURE__*/(0, _Function.dual)(2, (self, o
|
|
|
596
380
|
* @since 3.6.0
|
|
597
381
|
* @category comparisons
|
|
598
382
|
* @example
|
|
383
|
+
* ```ts
|
|
599
384
|
* import { DateTime, Effect } from "effect"
|
|
600
385
|
*
|
|
601
386
|
* Effect.gen(function* () {
|
|
@@ -608,17 +393,16 @@ const distance = exports.distance = /*#__PURE__*/(0, _Function.dual)(2, (self, o
|
|
|
608
393
|
* // returns Either.left(Duration.minutes(1))
|
|
609
394
|
* DateTime.distanceDurationEither(other, now)
|
|
610
395
|
* })
|
|
396
|
+
* ```
|
|
611
397
|
*/
|
|
612
|
-
const distanceDurationEither = exports.distanceDurationEither =
|
|
613
|
-
const diffMillis = distance(self, other);
|
|
614
|
-
return diffMillis > 0 ? Either.right(Duration.millis(diffMillis)) : Either.left(Duration.millis(-diffMillis));
|
|
615
|
-
});
|
|
398
|
+
const distanceDurationEither = exports.distanceDurationEither = Internal.distanceDurationEither;
|
|
616
399
|
/**
|
|
617
400
|
* Calulate the distance between two `DateTime` values.
|
|
618
401
|
*
|
|
619
402
|
* @since 3.6.0
|
|
620
403
|
* @category comparisons
|
|
621
404
|
* @example
|
|
405
|
+
* ```ts
|
|
622
406
|
* import { DateTime, Effect } from "effect"
|
|
623
407
|
*
|
|
624
408
|
* Effect.gen(function* () {
|
|
@@ -628,66 +412,64 @@ const distanceDurationEither = exports.distanceDurationEither = /*#__PURE__*/(0,
|
|
|
628
412
|
* // returns Duration.minutes(1)
|
|
629
413
|
* DateTime.distanceDuration(now, other)
|
|
630
414
|
* })
|
|
415
|
+
* ```
|
|
631
416
|
*/
|
|
632
|
-
const distanceDuration = exports.distanceDuration =
|
|
417
|
+
const distanceDuration = exports.distanceDuration = Internal.distanceDuration;
|
|
633
418
|
/**
|
|
634
419
|
* @since 3.6.0
|
|
635
420
|
* @category comparisons
|
|
636
421
|
*/
|
|
637
|
-
const min = exports.min =
|
|
422
|
+
const min = exports.min = Internal.min;
|
|
638
423
|
/**
|
|
639
424
|
* @since 3.6.0
|
|
640
425
|
* @category comparisons
|
|
641
426
|
*/
|
|
642
|
-
const max = exports.max =
|
|
427
|
+
const max = exports.max = Internal.max;
|
|
643
428
|
/**
|
|
644
429
|
* @since 3.6.0
|
|
645
430
|
* @category comparisons
|
|
646
431
|
*/
|
|
647
|
-
const greaterThan = exports.greaterThan =
|
|
432
|
+
const greaterThan = exports.greaterThan = Internal.greaterThan;
|
|
648
433
|
/**
|
|
649
434
|
* @since 3.6.0
|
|
650
435
|
* @category comparisons
|
|
651
436
|
*/
|
|
652
|
-
const greaterThanOrEqualTo = exports.greaterThanOrEqualTo =
|
|
437
|
+
const greaterThanOrEqualTo = exports.greaterThanOrEqualTo = Internal.greaterThanOrEqualTo;
|
|
653
438
|
/**
|
|
654
439
|
* @since 3.6.0
|
|
655
440
|
* @category comparisons
|
|
656
441
|
*/
|
|
657
|
-
const lessThan = exports.lessThan =
|
|
442
|
+
const lessThan = exports.lessThan = Internal.lessThan;
|
|
658
443
|
/**
|
|
659
444
|
* @since 3.6.0
|
|
660
445
|
* @category comparisons
|
|
661
446
|
*/
|
|
662
|
-
const lessThanOrEqualTo = exports.lessThanOrEqualTo =
|
|
447
|
+
const lessThanOrEqualTo = exports.lessThanOrEqualTo = Internal.lessThanOrEqualTo;
|
|
663
448
|
/**
|
|
664
449
|
* @since 3.6.0
|
|
665
450
|
* @category comparisons
|
|
666
451
|
*/
|
|
667
|
-
const between = exports.between =
|
|
452
|
+
const between = exports.between = Internal.between;
|
|
668
453
|
/**
|
|
669
454
|
* @since 3.6.0
|
|
670
455
|
* @category comparisons
|
|
671
456
|
*/
|
|
672
|
-
const isFuture =
|
|
457
|
+
const isFuture = exports.isFuture = Internal.isFuture;
|
|
673
458
|
/**
|
|
674
459
|
* @since 3.6.0
|
|
675
460
|
* @category comparisons
|
|
676
461
|
*/
|
|
677
|
-
exports.
|
|
678
|
-
const unsafeIsFuture = self => lessThan(unsafeNow(), self);
|
|
462
|
+
const unsafeIsFuture = exports.unsafeIsFuture = Internal.unsafeIsFuture;
|
|
679
463
|
/**
|
|
680
464
|
* @since 3.6.0
|
|
681
465
|
* @category comparisons
|
|
682
466
|
*/
|
|
683
|
-
exports.
|
|
684
|
-
const isPast = self => Effect.map(now, greaterThan(self));
|
|
467
|
+
const isPast = exports.isPast = Internal.isPast;
|
|
685
468
|
/**
|
|
686
469
|
* @since 3.6.0
|
|
687
470
|
* @category comparisons
|
|
688
471
|
*/
|
|
689
|
-
exports.
|
|
690
|
-
const unsafeIsPast = self => greaterThan(unsafeNow(), self);
|
|
472
|
+
const unsafeIsPast = exports.unsafeIsPast = Internal.unsafeIsPast;
|
|
691
473
|
// =============================================================================
|
|
692
474
|
// conversions
|
|
693
475
|
// =============================================================================
|
|
@@ -697,48 +479,21 @@ const unsafeIsPast = self => greaterThan(unsafeNow(), self);
|
|
|
697
479
|
* @since 3.6.0
|
|
698
480
|
* @category conversions
|
|
699
481
|
*/
|
|
700
|
-
exports.
|
|
701
|
-
const toDateUtc = self => new Date(self.epochMillis);
|
|
482
|
+
const toDateUtc = exports.toDateUtc = Internal.toDateUtc;
|
|
702
483
|
/**
|
|
703
484
|
* Convert a `DateTime` to a `Date`, applying the time zone first.
|
|
704
485
|
*
|
|
705
486
|
* @since 3.6.0
|
|
706
487
|
* @category conversions
|
|
707
488
|
*/
|
|
708
|
-
exports.
|
|
709
|
-
const toDate = self => {
|
|
710
|
-
if (self._tag === "Utc") {
|
|
711
|
-
return new Date(self.epochMillis);
|
|
712
|
-
} else if (self.zone._tag === "Offset") {
|
|
713
|
-
return new Date(self.epochMillis + self.zone.offset);
|
|
714
|
-
} else if (self.adjustedEpochMillis !== undefined) {
|
|
715
|
-
return new Date(self.adjustedEpochMillis);
|
|
716
|
-
}
|
|
717
|
-
const parts = self.zone.format.formatToParts(self.epochMillis).filter(_ => _.type !== "literal");
|
|
718
|
-
const date = new Date(0);
|
|
719
|
-
date.setUTCFullYear(Number(parts[2].value), Number(parts[0].value) - 1, Number(parts[1].value));
|
|
720
|
-
date.setUTCHours(Number(parts[3].value), Number(parts[4].value), Number(parts[5].value), Number(parts[6].value));
|
|
721
|
-
self.adjustedEpochMillis = date.getTime();
|
|
722
|
-
return date;
|
|
723
|
-
};
|
|
489
|
+
const toDate = exports.toDate = Internal.toDate;
|
|
724
490
|
/**
|
|
725
491
|
* Calculate the time zone offset of a `DateTime.Zoned` in milliseconds.
|
|
726
492
|
*
|
|
727
493
|
* @since 3.6.0
|
|
728
494
|
* @category conversions
|
|
729
495
|
*/
|
|
730
|
-
exports.
|
|
731
|
-
const zonedOffset = self => {
|
|
732
|
-
const date = toDate(self);
|
|
733
|
-
return date.getTime() - toEpochMillis(self);
|
|
734
|
-
};
|
|
735
|
-
exports.zonedOffset = zonedOffset;
|
|
736
|
-
const offsetToString = offset => {
|
|
737
|
-
const abs = Math.abs(offset);
|
|
738
|
-
const hours = Math.floor(abs / (60 * 60 * 1000));
|
|
739
|
-
const minutes = Math.round(abs % (60 * 60 * 1000) / (60 * 1000));
|
|
740
|
-
return `${offset < 0 ? "-" : "+"}${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}`;
|
|
741
|
-
};
|
|
496
|
+
const zonedOffset = exports.zonedOffset = Internal.zonedOffset;
|
|
742
497
|
/**
|
|
743
498
|
* Calculate the time zone offset of a `DateTime` in milliseconds.
|
|
744
499
|
*
|
|
@@ -747,15 +502,14 @@ const offsetToString = offset => {
|
|
|
747
502
|
* @since 3.6.0
|
|
748
503
|
* @category conversions
|
|
749
504
|
*/
|
|
750
|
-
const zonedOffsetIso =
|
|
505
|
+
const zonedOffsetIso = exports.zonedOffsetIso = Internal.zonedOffsetIso;
|
|
751
506
|
/**
|
|
752
507
|
* Get the milliseconds since the Unix epoch of a `DateTime`.
|
|
753
508
|
*
|
|
754
509
|
* @since 3.6.0
|
|
755
510
|
* @category conversions
|
|
756
511
|
*/
|
|
757
|
-
exports.
|
|
758
|
-
const toEpochMillis = self => self.epochMillis;
|
|
512
|
+
const toEpochMillis = exports.toEpochMillis = Internal.toEpochMillis;
|
|
759
513
|
/**
|
|
760
514
|
* Remove the time aspect of a `DateTime`, first adjusting for the time
|
|
761
515
|
* zone. It will return a `DateTime.Utc` only containing the date.
|
|
@@ -763,6 +517,7 @@ const toEpochMillis = self => self.epochMillis;
|
|
|
763
517
|
* @since 3.6.0
|
|
764
518
|
* @category conversions
|
|
765
519
|
* @example
|
|
520
|
+
* ```ts
|
|
766
521
|
* import { DateTime } from "effect"
|
|
767
522
|
*
|
|
768
523
|
* // returns "2024-01-01T00:00:00Z"
|
|
@@ -773,26 +528,12 @@ const toEpochMillis = self => self.epochMillis;
|
|
|
773
528
|
* DateTime.removeTime,
|
|
774
529
|
* DateTime.formatIso
|
|
775
530
|
* )
|
|
531
|
+
* ```
|
|
776
532
|
*/
|
|
777
|
-
exports.
|
|
778
|
-
const removeTime = self => withDate(self, date => {
|
|
779
|
-
date.setUTCHours(0, 0, 0, 0);
|
|
780
|
-
return makeUtc(date.getTime());
|
|
781
|
-
});
|
|
533
|
+
const removeTime = exports.removeTime = Internal.removeTime;
|
|
782
534
|
// =============================================================================
|
|
783
535
|
// parts
|
|
784
536
|
// =============================================================================
|
|
785
|
-
exports.removeTime = removeTime;
|
|
786
|
-
const dateToParts = date => ({
|
|
787
|
-
millis: date.getUTCMilliseconds(),
|
|
788
|
-
seconds: date.getUTCSeconds(),
|
|
789
|
-
minutes: date.getUTCMinutes(),
|
|
790
|
-
hours: date.getUTCHours(),
|
|
791
|
-
day: date.getUTCDate(),
|
|
792
|
-
weekDay: date.getUTCDay(),
|
|
793
|
-
month: date.getUTCMonth() + 1,
|
|
794
|
-
year: date.getUTCFullYear()
|
|
795
|
-
});
|
|
796
537
|
/**
|
|
797
538
|
* Get the different parts of a `DateTime` as an object.
|
|
798
539
|
*
|
|
@@ -801,15 +542,7 @@ const dateToParts = date => ({
|
|
|
801
542
|
* @since 3.6.0
|
|
802
543
|
* @category parts
|
|
803
544
|
*/
|
|
804
|
-
const toParts =
|
|
805
|
-
if (self._tag === "Utc") {
|
|
806
|
-
return toPartsUtc(self);
|
|
807
|
-
} else if (self.partsAdjusted !== undefined) {
|
|
808
|
-
return self.partsAdjusted;
|
|
809
|
-
}
|
|
810
|
-
self.partsAdjusted = withDate(self, dateToParts);
|
|
811
|
-
return self.partsAdjusted;
|
|
812
|
-
};
|
|
545
|
+
const toParts = exports.toParts = Internal.toParts;
|
|
813
546
|
/**
|
|
814
547
|
* Get the different parts of a `DateTime` as an object.
|
|
815
548
|
*
|
|
@@ -818,14 +551,7 @@ const toParts = self => {
|
|
|
818
551
|
* @since 3.6.0
|
|
819
552
|
* @category parts
|
|
820
553
|
*/
|
|
821
|
-
exports.
|
|
822
|
-
const toPartsUtc = self => {
|
|
823
|
-
if (self.partsUtc !== undefined) {
|
|
824
|
-
return self.partsUtc;
|
|
825
|
-
}
|
|
826
|
-
self.partsUtc = withDateUtc(self, dateToParts);
|
|
827
|
-
return self.partsUtc;
|
|
828
|
-
};
|
|
554
|
+
const toPartsUtc = exports.toPartsUtc = Internal.toPartsUtc;
|
|
829
555
|
/**
|
|
830
556
|
* Get a part of a `DateTime` as a number.
|
|
831
557
|
*
|
|
@@ -834,14 +560,15 @@ const toPartsUtc = self => {
|
|
|
834
560
|
* @since 3.6.0
|
|
835
561
|
* @category parts
|
|
836
562
|
* @example
|
|
563
|
+
* ```ts
|
|
837
564
|
* import { DateTime } from "effect"
|
|
838
565
|
*
|
|
839
566
|
* const now = DateTime.unsafeMake({ year: 2024 })
|
|
840
567
|
* const year = DateTime.getPartUtc(now, "year")
|
|
841
568
|
* assert.strictEqual(year, 2024)
|
|
569
|
+
* ```
|
|
842
570
|
*/
|
|
843
|
-
exports.
|
|
844
|
-
const getPartUtc = exports.getPartUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, part) => toPartsUtc(self)[part]);
|
|
571
|
+
const getPartUtc = exports.getPartUtc = Internal.getPartUtc;
|
|
845
572
|
/**
|
|
846
573
|
* Get a part of a `DateTime` as a number.
|
|
847
574
|
*
|
|
@@ -850,40 +577,15 @@ const getPartUtc = exports.getPartUtc = /*#__PURE__*/(0, _Function.dual)(2, (sel
|
|
|
850
577
|
* @since 3.6.0
|
|
851
578
|
* @category parts
|
|
852
579
|
* @example
|
|
580
|
+
* ```ts
|
|
853
581
|
* import { DateTime } from "effect"
|
|
854
582
|
*
|
|
855
583
|
* const now = DateTime.unsafeMakeZoned({ year: 2024 }, { timeZone: "Europe/London" })
|
|
856
584
|
* const year = DateTime.getPart(now, "year")
|
|
857
585
|
* assert.strictEqual(year, 2024)
|
|
586
|
+
* ```
|
|
858
587
|
*/
|
|
859
|
-
const getPart = exports.getPart =
|
|
860
|
-
const setPartsDate = (date, parts) => {
|
|
861
|
-
if (parts.year !== undefined) {
|
|
862
|
-
date.setUTCFullYear(parts.year);
|
|
863
|
-
}
|
|
864
|
-
if (parts.month !== undefined) {
|
|
865
|
-
date.setUTCMonth(parts.month - 1);
|
|
866
|
-
}
|
|
867
|
-
if (parts.day !== undefined) {
|
|
868
|
-
date.setUTCDate(parts.day);
|
|
869
|
-
}
|
|
870
|
-
if (parts.weekDay !== undefined) {
|
|
871
|
-
const diff = parts.weekDay - date.getUTCDay();
|
|
872
|
-
date.setUTCDate(date.getUTCDate() + diff);
|
|
873
|
-
}
|
|
874
|
-
if (parts.hours !== undefined) {
|
|
875
|
-
date.setUTCHours(parts.hours);
|
|
876
|
-
}
|
|
877
|
-
if (parts.minutes !== undefined) {
|
|
878
|
-
date.setUTCMinutes(parts.minutes);
|
|
879
|
-
}
|
|
880
|
-
if (parts.seconds !== undefined) {
|
|
881
|
-
date.setUTCSeconds(parts.seconds);
|
|
882
|
-
}
|
|
883
|
-
if (parts.millis !== undefined) {
|
|
884
|
-
date.setUTCMilliseconds(parts.millis);
|
|
885
|
-
}
|
|
886
|
-
};
|
|
588
|
+
const getPart = exports.getPart = Internal.getPart;
|
|
887
589
|
/**
|
|
888
590
|
* Set the different parts of a `DateTime` as an object.
|
|
889
591
|
*
|
|
@@ -892,21 +594,21 @@ const setPartsDate = (date, parts) => {
|
|
|
892
594
|
* @since 3.6.0
|
|
893
595
|
* @category parts
|
|
894
596
|
*/
|
|
895
|
-
const setParts = exports.setParts =
|
|
597
|
+
const setParts = exports.setParts = Internal.setParts;
|
|
896
598
|
/**
|
|
897
599
|
* Set the different parts of a `DateTime` as an object.
|
|
898
600
|
*
|
|
899
601
|
* @since 3.6.0
|
|
900
602
|
* @category parts
|
|
901
603
|
*/
|
|
902
|
-
const setPartsUtc = exports.setPartsUtc =
|
|
604
|
+
const setPartsUtc = exports.setPartsUtc = Internal.setPartsUtc;
|
|
903
605
|
// =============================================================================
|
|
904
606
|
// current time zone
|
|
905
607
|
// =============================================================================
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
*/
|
|
608
|
+
// =============================================================================
|
|
609
|
+
// current time zone
|
|
610
|
+
// =============================================================================
|
|
611
|
+
/** @internal */
|
|
910
612
|
class CurrentTimeZone extends /*#__PURE__*/Context.Tag("effect/DateTime/CurrentTimeZone")() {}
|
|
911
613
|
/**
|
|
912
614
|
* Set the time zone of a `DateTime` to the current time zone, which is
|
|
@@ -915,6 +617,7 @@ class CurrentTimeZone extends /*#__PURE__*/Context.Tag("effect/DateTime/CurrentT
|
|
|
915
617
|
* @since 3.6.0
|
|
916
618
|
* @category current time zone
|
|
917
619
|
* @example
|
|
620
|
+
* ```ts
|
|
918
621
|
* import { DateTime, Effect } from "effect"
|
|
919
622
|
*
|
|
920
623
|
* Effect.gen(function* () {
|
|
@@ -923,6 +626,7 @@ class CurrentTimeZone extends /*#__PURE__*/Context.Tag("effect/DateTime/CurrentT
|
|
|
923
626
|
* // set the time zone to "Europe/London"
|
|
924
627
|
* const zoned = yield* DateTime.setZoneCurrent(now)
|
|
925
628
|
* }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
|
|
629
|
+
* ```
|
|
926
630
|
*/
|
|
927
631
|
exports.CurrentTimeZone = CurrentTimeZone;
|
|
928
632
|
const setZoneCurrent = self => Effect.map(CurrentTimeZone, zone => setZone(self, zone));
|
|
@@ -932,6 +636,7 @@ const setZoneCurrent = self => Effect.map(CurrentTimeZone, zone => setZone(self,
|
|
|
932
636
|
* @since 3.6.0
|
|
933
637
|
* @category current time zone
|
|
934
638
|
* @example
|
|
639
|
+
* ```ts
|
|
935
640
|
* import { DateTime, Effect } from "effect"
|
|
936
641
|
*
|
|
937
642
|
* const zone = DateTime.zoneUnsafeMakeNamed("Europe/London")
|
|
@@ -939,6 +644,7 @@ const setZoneCurrent = self => Effect.map(CurrentTimeZone, zone => setZone(self,
|
|
|
939
644
|
* Effect.gen(function* () {
|
|
940
645
|
* const now = yield* DateTime.nowInCurrentZone
|
|
941
646
|
* }).pipe(DateTime.withCurrentZone(zone))
|
|
647
|
+
* ```
|
|
942
648
|
*/
|
|
943
649
|
exports.setZoneCurrent = setZoneCurrent;
|
|
944
650
|
const withCurrentZone = exports.withCurrentZone = /*#__PURE__*/(0, _Function.dual)(2, (effect, zone) => Effect.provideService(effect, CurrentTimeZone, zone));
|
|
@@ -949,12 +655,14 @@ const withCurrentZone = exports.withCurrentZone = /*#__PURE__*/(0, _Function.dua
|
|
|
949
655
|
* @since 3.6.0
|
|
950
656
|
* @category current time zone
|
|
951
657
|
* @example
|
|
658
|
+
* ```ts
|
|
952
659
|
* import { DateTime, Effect } from "effect"
|
|
953
660
|
*
|
|
954
661
|
* Effect.gen(function* () {
|
|
955
662
|
* // will use the system's local time zone
|
|
956
663
|
* const now = yield* DateTime.nowInCurrentZone
|
|
957
664
|
* }).pipe(DateTime.withCurrentZoneLocal)
|
|
665
|
+
* ```
|
|
958
666
|
*/
|
|
959
667
|
const withCurrentZoneLocal = effect => Effect.provideServiceEffect(effect, CurrentTimeZone, Effect.sync(zoneMakeLocal));
|
|
960
668
|
/**
|
|
@@ -963,12 +671,14 @@ const withCurrentZoneLocal = effect => Effect.provideServiceEffect(effect, Curre
|
|
|
963
671
|
* @since 3.6.0
|
|
964
672
|
* @category current time zone
|
|
965
673
|
* @example
|
|
674
|
+
* ```ts
|
|
966
675
|
* import { DateTime, Effect } from "effect"
|
|
967
676
|
*
|
|
968
677
|
* Effect.gen(function* () {
|
|
969
678
|
* // will use the system's local time zone
|
|
970
679
|
* const now = yield* DateTime.nowInCurrentZone
|
|
971
680
|
* }).pipe(DateTime.withCurrentZoneOffset(3 * 60 * 60 * 1000))
|
|
681
|
+
* ```
|
|
972
682
|
*/
|
|
973
683
|
exports.withCurrentZoneLocal = withCurrentZoneLocal;
|
|
974
684
|
const withCurrentZoneOffset = exports.withCurrentZoneOffset = /*#__PURE__*/(0, _Function.dual)(2, (effect, offset) => Effect.provideService(effect, CurrentTimeZone, zoneMakeOffset(offset)));
|
|
@@ -981,12 +691,14 @@ const withCurrentZoneOffset = exports.withCurrentZoneOffset = /*#__PURE__*/(0, _
|
|
|
981
691
|
* @since 3.6.0
|
|
982
692
|
* @category current time zone
|
|
983
693
|
* @example
|
|
694
|
+
* ```ts
|
|
984
695
|
* import { DateTime, Effect } from "effect"
|
|
985
696
|
*
|
|
986
697
|
* Effect.gen(function* () {
|
|
987
698
|
* // will use the "Europe/London" time zone
|
|
988
699
|
* const now = yield* DateTime.nowInCurrentZone
|
|
989
700
|
* }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
|
|
701
|
+
* ```
|
|
990
702
|
*/
|
|
991
703
|
const withCurrentZoneNamed = exports.withCurrentZoneNamed = /*#__PURE__*/(0, _Function.dual)(2, (effect, zone) => Effect.provideServiceEffect(effect, CurrentTimeZone, zoneMakeNamedEffect(zone)));
|
|
992
704
|
/**
|
|
@@ -995,73 +707,19 @@ const withCurrentZoneNamed = exports.withCurrentZoneNamed = /*#__PURE__*/(0, _Fu
|
|
|
995
707
|
* @since 3.6.0
|
|
996
708
|
* @category current time zone
|
|
997
709
|
* @example
|
|
710
|
+
* ```ts
|
|
998
711
|
* import { DateTime, Effect } from "effect"
|
|
999
712
|
*
|
|
1000
713
|
* Effect.gen(function* () {
|
|
1001
714
|
* // will use the "Europe/London" time zone
|
|
1002
715
|
* const now = yield* DateTime.nowInCurrentZone
|
|
1003
716
|
* }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
|
|
717
|
+
* ```
|
|
1004
718
|
*/
|
|
1005
719
|
const nowInCurrentZone = exports.nowInCurrentZone = /*#__PURE__*/Effect.flatMap(now, setZoneCurrent);
|
|
1006
|
-
/**
|
|
1007
|
-
* Create a Layer from the given time zone.
|
|
1008
|
-
*
|
|
1009
|
-
* @since 3.6.0
|
|
1010
|
-
* @category current time zone
|
|
1011
|
-
*/
|
|
1012
|
-
const layerCurrentZone = zone => Layer.succeed(CurrentTimeZone, zone);
|
|
1013
|
-
/**
|
|
1014
|
-
* Create a Layer from the given time zone offset.
|
|
1015
|
-
*
|
|
1016
|
-
* @since 3.6.0
|
|
1017
|
-
* @category current time zone
|
|
1018
|
-
*/
|
|
1019
|
-
exports.layerCurrentZone = layerCurrentZone;
|
|
1020
|
-
const layerCurrentZoneOffset = offset => Layer.succeed(CurrentTimeZone, zoneMakeOffset(offset));
|
|
1021
|
-
/**
|
|
1022
|
-
* Create a Layer from the given IANA time zone identifier.
|
|
1023
|
-
*
|
|
1024
|
-
* @since 3.6.0
|
|
1025
|
-
* @category current time zone
|
|
1026
|
-
*/
|
|
1027
|
-
exports.layerCurrentZoneOffset = layerCurrentZoneOffset;
|
|
1028
|
-
const layerCurrentZoneNamed = zoneId => Layer.effect(CurrentTimeZone, zoneMakeNamedEffect(zoneId));
|
|
1029
|
-
/**
|
|
1030
|
-
* Create a Layer from the systems local time zone.
|
|
1031
|
-
*
|
|
1032
|
-
* @since 3.6.0
|
|
1033
|
-
* @category current time zone
|
|
1034
|
-
*/
|
|
1035
|
-
exports.layerCurrentZoneNamed = layerCurrentZoneNamed;
|
|
1036
|
-
const layerCurrentZoneLocal = exports.layerCurrentZoneLocal = /*#__PURE__*/Layer.sync(CurrentTimeZone, zoneMakeLocal);
|
|
1037
720
|
// =============================================================================
|
|
1038
721
|
// mapping
|
|
1039
722
|
// =============================================================================
|
|
1040
|
-
const makeZonedFromAdjusted = (adjustedMillis, zone) => {
|
|
1041
|
-
const offset = zone._tag === "Offset" ? zone.offset : calculateNamedOffset(adjustedMillis, zone);
|
|
1042
|
-
return makeZonedProto(adjustedMillis - offset, zone);
|
|
1043
|
-
};
|
|
1044
|
-
const offsetRegex = /([+-])(\d{2}):(\d{2})$/;
|
|
1045
|
-
const parseOffset = offset => {
|
|
1046
|
-
const match = offsetRegex.exec(offset);
|
|
1047
|
-
if (match === null) {
|
|
1048
|
-
return null;
|
|
1049
|
-
}
|
|
1050
|
-
const [, sign, hours, minutes] = match;
|
|
1051
|
-
return (sign === "+" ? 1 : -1) * (Number(hours) * 60 + Number(minutes)) * 60 * 1000;
|
|
1052
|
-
};
|
|
1053
|
-
const calculateNamedOffset = (adjustedMillis, zone) => {
|
|
1054
|
-
const offset = zone.format.formatToParts(adjustedMillis).find(_ => _.type === "timeZoneName")?.value ?? "";
|
|
1055
|
-
if (offset === "GMT") {
|
|
1056
|
-
return 0;
|
|
1057
|
-
}
|
|
1058
|
-
const result = parseOffset(offset);
|
|
1059
|
-
if (result === null) {
|
|
1060
|
-
// fallback to using the adjusted date
|
|
1061
|
-
return zonedOffset(makeZonedProto(adjustedMillis, zone));
|
|
1062
|
-
}
|
|
1063
|
-
return result;
|
|
1064
|
-
};
|
|
1065
723
|
/**
|
|
1066
724
|
* Modify a `DateTime` by applying a function to a cloned `Date` instance.
|
|
1067
725
|
*
|
|
@@ -1071,28 +729,14 @@ const calculateNamedOffset = (adjustedMillis, zone) => {
|
|
|
1071
729
|
* @since 3.6.0
|
|
1072
730
|
* @category mapping
|
|
1073
731
|
*/
|
|
1074
|
-
const mutate = exports.mutate =
|
|
1075
|
-
if (self._tag === "Utc") {
|
|
1076
|
-
const date = toDateUtc(self);
|
|
1077
|
-
f(date);
|
|
1078
|
-
return makeUtc(date.getTime());
|
|
1079
|
-
}
|
|
1080
|
-
const adjustedDate = toDate(self);
|
|
1081
|
-
const newAdjustedDate = new Date(adjustedDate.getTime());
|
|
1082
|
-
f(newAdjustedDate);
|
|
1083
|
-
return makeZonedFromAdjusted(newAdjustedDate.getTime(), self.zone);
|
|
1084
|
-
});
|
|
732
|
+
const mutate = exports.mutate = Internal.mutate;
|
|
1085
733
|
/**
|
|
1086
734
|
* Modify a `DateTime` by applying a function to a cloned UTC `Date` instance.
|
|
1087
735
|
*
|
|
1088
736
|
* @since 3.6.0
|
|
1089
737
|
* @category mapping
|
|
1090
738
|
*/
|
|
1091
|
-
const mutateUtc = exports.mutateUtc =
|
|
1092
|
-
const date = new Date(millis);
|
|
1093
|
-
f(date);
|
|
1094
|
-
return date.getTime();
|
|
1095
|
-
}));
|
|
739
|
+
const mutateUtc = exports.mutateUtc = Internal.mutateUtc;
|
|
1096
740
|
/**
|
|
1097
741
|
* Transform a `DateTime` by applying a function to the number of milliseconds
|
|
1098
742
|
* since the Unix epoch.
|
|
@@ -1100,17 +744,16 @@ const mutateUtc = exports.mutateUtc = /*#__PURE__*/(0, _Function.dual)(2, (self,
|
|
|
1100
744
|
* @since 3.6.0
|
|
1101
745
|
* @category mapping
|
|
1102
746
|
* @example
|
|
747
|
+
* ```ts
|
|
1103
748
|
* import { DateTime } from "effect"
|
|
1104
749
|
*
|
|
1105
750
|
* // add 10 milliseconds
|
|
1106
751
|
* DateTime.unsafeMake(0).pipe(
|
|
1107
752
|
* DateTime.mapEpochMillis((millis) => millis + 10)
|
|
1108
753
|
* )
|
|
754
|
+
* ```
|
|
1109
755
|
*/
|
|
1110
|
-
const mapEpochMillis = exports.mapEpochMillis =
|
|
1111
|
-
const millis = f(toEpochMillis(self));
|
|
1112
|
-
return self._tag === "Utc" ? makeUtc(millis) : makeZonedProto(millis, self.zone);
|
|
1113
|
-
});
|
|
756
|
+
const mapEpochMillis = exports.mapEpochMillis = Internal.mapEpochMillis;
|
|
1114
757
|
/**
|
|
1115
758
|
* Using the time zone adjusted `Date`, apply a function to the `Date` and
|
|
1116
759
|
* return the result.
|
|
@@ -1118,14 +761,16 @@ const mapEpochMillis = exports.mapEpochMillis = /*#__PURE__*/(0, _Function.dual)
|
|
|
1118
761
|
* @since 3.6.0
|
|
1119
762
|
* @category mapping
|
|
1120
763
|
* @example
|
|
764
|
+
* ```ts
|
|
1121
765
|
* import { DateTime } from "effect"
|
|
1122
766
|
*
|
|
1123
767
|
* // get the time zone adjusted date in milliseconds
|
|
1124
768
|
* DateTime.unsafeMakeZoned(0, { timeZone: "Europe/London" }).pipe(
|
|
1125
769
|
* DateTime.withDate((date) => date.getTime())
|
|
1126
770
|
* )
|
|
771
|
+
* ```
|
|
1127
772
|
*/
|
|
1128
|
-
const withDate = exports.withDate =
|
|
773
|
+
const withDate = exports.withDate = Internal.withDate;
|
|
1129
774
|
/**
|
|
1130
775
|
* Using the time zone adjusted `Date`, apply a function to the `Date` and
|
|
1131
776
|
* return the result.
|
|
@@ -1133,19 +778,21 @@ const withDate = exports.withDate = /*#__PURE__*/(0, _Function.dual)(2, (self, f
|
|
|
1133
778
|
* @since 3.6.0
|
|
1134
779
|
* @category mapping
|
|
1135
780
|
* @example
|
|
781
|
+
* ```ts
|
|
1136
782
|
* import { DateTime } from "effect"
|
|
1137
783
|
*
|
|
1138
784
|
* // get the date in milliseconds
|
|
1139
785
|
* DateTime.unsafeMake(0).pipe(
|
|
1140
786
|
* DateTime.withDateUtc((date) => date.getTime())
|
|
1141
787
|
* )
|
|
788
|
+
* ```
|
|
1142
789
|
*/
|
|
1143
|
-
const withDateUtc = exports.withDateUtc =
|
|
790
|
+
const withDateUtc = exports.withDateUtc = Internal.withDateUtc;
|
|
1144
791
|
/**
|
|
1145
792
|
* @since 3.6.0
|
|
1146
793
|
* @category mapping
|
|
1147
794
|
*/
|
|
1148
|
-
const match = exports.match =
|
|
795
|
+
const match = exports.match = Internal.match;
|
|
1149
796
|
// =============================================================================
|
|
1150
797
|
// math
|
|
1151
798
|
// =============================================================================
|
|
@@ -1155,31 +802,32 @@ const match = exports.match = /*#__PURE__*/(0, _Function.dual)(2, (self, options
|
|
|
1155
802
|
* @since 3.6.0
|
|
1156
803
|
* @category math
|
|
1157
804
|
* @example
|
|
805
|
+
* ```ts
|
|
1158
806
|
* import { DateTime } from "effect"
|
|
1159
807
|
*
|
|
1160
808
|
* // add 5 minutes
|
|
1161
809
|
* DateTime.unsafeMake(0).pipe(
|
|
1162
810
|
* DateTime.addDuration("5 minutes")
|
|
1163
811
|
* )
|
|
812
|
+
* ```
|
|
1164
813
|
*/
|
|
1165
|
-
const addDuration = exports.addDuration =
|
|
814
|
+
const addDuration = exports.addDuration = Internal.addDuration;
|
|
1166
815
|
/**
|
|
1167
816
|
* Subtract the given `Duration` from a `DateTime`.
|
|
1168
817
|
*
|
|
1169
818
|
* @since 3.6.0
|
|
1170
819
|
* @category math
|
|
1171
820
|
* @example
|
|
821
|
+
* ```ts
|
|
1172
822
|
* import { DateTime } from "effect"
|
|
1173
823
|
*
|
|
1174
824
|
* // subtract 5 minutes
|
|
1175
825
|
* DateTime.unsafeMake(0).pipe(
|
|
1176
826
|
* DateTime.subtractDuration("5 minutes")
|
|
1177
827
|
* )
|
|
828
|
+
* ```
|
|
1178
829
|
*/
|
|
1179
|
-
const subtractDuration = exports.subtractDuration =
|
|
1180
|
-
const addMillis = (date, amount) => {
|
|
1181
|
-
date.setTime(date.getTime() + amount);
|
|
1182
|
-
};
|
|
830
|
+
const subtractDuration = exports.subtractDuration = Internal.subtractDuration;
|
|
1183
831
|
/**
|
|
1184
832
|
* Add the given `amount` of `unit`'s to a `DateTime`.
|
|
1185
833
|
*
|
|
@@ -1189,113 +837,32 @@ const addMillis = (date, amount) => {
|
|
|
1189
837
|
* @since 3.6.0
|
|
1190
838
|
* @category math
|
|
1191
839
|
* @example
|
|
840
|
+
* ```ts
|
|
1192
841
|
* import { DateTime } from "effect"
|
|
1193
842
|
*
|
|
1194
843
|
* // add 5 minutes
|
|
1195
844
|
* DateTime.unsafeMake(0).pipe(
|
|
1196
845
|
* DateTime.add({ minutes: 5 })
|
|
1197
846
|
* )
|
|
847
|
+
* ```
|
|
1198
848
|
*/
|
|
1199
|
-
const add = exports.add =
|
|
1200
|
-
if (parts.millis) {
|
|
1201
|
-
addMillis(date, parts.millis);
|
|
1202
|
-
}
|
|
1203
|
-
if (parts.seconds) {
|
|
1204
|
-
addMillis(date, parts.seconds * 1000);
|
|
1205
|
-
}
|
|
1206
|
-
if (parts.minutes) {
|
|
1207
|
-
addMillis(date, parts.minutes * 60 * 1000);
|
|
1208
|
-
}
|
|
1209
|
-
if (parts.hours) {
|
|
1210
|
-
addMillis(date, parts.hours * 60 * 60 * 1000);
|
|
1211
|
-
}
|
|
1212
|
-
if (parts.days) {
|
|
1213
|
-
date.setUTCDate(date.getUTCDate() + parts.days);
|
|
1214
|
-
}
|
|
1215
|
-
if (parts.weeks) {
|
|
1216
|
-
date.setUTCDate(date.getUTCDate() + parts.weeks * 7);
|
|
1217
|
-
}
|
|
1218
|
-
if (parts.months) {
|
|
1219
|
-
const day = date.getUTCDate();
|
|
1220
|
-
date.setUTCMonth(date.getUTCMonth() + parts.months + 1, 0);
|
|
1221
|
-
if (day < date.getUTCDate()) {
|
|
1222
|
-
date.setUTCDate(day);
|
|
1223
|
-
}
|
|
1224
|
-
}
|
|
1225
|
-
if (parts.years) {
|
|
1226
|
-
const day = date.getUTCDate();
|
|
1227
|
-
const month = date.getUTCMonth();
|
|
1228
|
-
date.setUTCFullYear(date.getUTCFullYear() + parts.years, month + 1, 0);
|
|
1229
|
-
if (day < date.getUTCDate()) {
|
|
1230
|
-
date.setUTCDate(day);
|
|
1231
|
-
}
|
|
1232
|
-
}
|
|
1233
|
-
}));
|
|
849
|
+
const add = exports.add = Internal.add;
|
|
1234
850
|
/**
|
|
1235
851
|
* Subtract the given `amount` of `unit`'s from a `DateTime`.
|
|
1236
852
|
*
|
|
1237
853
|
* @since 3.6.0
|
|
1238
854
|
* @category math
|
|
1239
855
|
* @example
|
|
856
|
+
* ```ts
|
|
1240
857
|
* import { DateTime } from "effect"
|
|
1241
858
|
*
|
|
1242
859
|
* // subtract 5 minutes
|
|
1243
860
|
* DateTime.unsafeMake(0).pipe(
|
|
1244
861
|
* DateTime.subtract({ minutes: 5 })
|
|
1245
862
|
* )
|
|
863
|
+
* ```
|
|
1246
864
|
*/
|
|
1247
|
-
const subtract = exports.subtract =
|
|
1248
|
-
const newParts = {};
|
|
1249
|
-
for (const key in parts) {
|
|
1250
|
-
newParts[key] = -1 * parts[key];
|
|
1251
|
-
}
|
|
1252
|
-
return add(self, newParts);
|
|
1253
|
-
});
|
|
1254
|
-
function startOfDate(date, part, options) {
|
|
1255
|
-
switch (part) {
|
|
1256
|
-
case "second":
|
|
1257
|
-
{
|
|
1258
|
-
date.setUTCMilliseconds(0);
|
|
1259
|
-
break;
|
|
1260
|
-
}
|
|
1261
|
-
case "minute":
|
|
1262
|
-
{
|
|
1263
|
-
date.setUTCSeconds(0, 0);
|
|
1264
|
-
break;
|
|
1265
|
-
}
|
|
1266
|
-
case "hour":
|
|
1267
|
-
{
|
|
1268
|
-
date.setUTCMinutes(0, 0, 0);
|
|
1269
|
-
break;
|
|
1270
|
-
}
|
|
1271
|
-
case "day":
|
|
1272
|
-
{
|
|
1273
|
-
date.setUTCHours(0, 0, 0, 0);
|
|
1274
|
-
break;
|
|
1275
|
-
}
|
|
1276
|
-
case "week":
|
|
1277
|
-
{
|
|
1278
|
-
const weekStartsOn = options?.weekStartsOn ?? 0;
|
|
1279
|
-
const day = date.getUTCDay();
|
|
1280
|
-
const diff = (day - weekStartsOn + 7) % 7;
|
|
1281
|
-
date.setUTCDate(date.getUTCDate() - diff);
|
|
1282
|
-
date.setUTCHours(0, 0, 0, 0);
|
|
1283
|
-
break;
|
|
1284
|
-
}
|
|
1285
|
-
case "month":
|
|
1286
|
-
{
|
|
1287
|
-
date.setUTCDate(1);
|
|
1288
|
-
date.setUTCHours(0, 0, 0, 0);
|
|
1289
|
-
break;
|
|
1290
|
-
}
|
|
1291
|
-
case "year":
|
|
1292
|
-
{
|
|
1293
|
-
date.setUTCMonth(0, 1);
|
|
1294
|
-
date.setUTCHours(0, 0, 0, 0);
|
|
1295
|
-
break;
|
|
1296
|
-
}
|
|
1297
|
-
}
|
|
1298
|
-
}
|
|
865
|
+
const subtract = exports.subtract = Internal.subtract;
|
|
1299
866
|
/**
|
|
1300
867
|
* Converts a `DateTime` to the start of the given `part`.
|
|
1301
868
|
*
|
|
@@ -1305,6 +872,7 @@ function startOfDate(date, part, options) {
|
|
|
1305
872
|
* @since 3.6.0
|
|
1306
873
|
* @category math
|
|
1307
874
|
* @example
|
|
875
|
+
* ```ts
|
|
1308
876
|
* import { DateTime } from "effect"
|
|
1309
877
|
*
|
|
1310
878
|
* // returns "2024-01-01T00:00:00Z"
|
|
@@ -1312,53 +880,9 @@ function startOfDate(date, part, options) {
|
|
|
1312
880
|
* DateTime.startOf("day"),
|
|
1313
881
|
* DateTime.formatIso
|
|
1314
882
|
* )
|
|
883
|
+
* ```
|
|
1315
884
|
*/
|
|
1316
|
-
const startOf = exports.startOf =
|
|
1317
|
-
function endOfDate(date, part, options) {
|
|
1318
|
-
switch (part) {
|
|
1319
|
-
case "second":
|
|
1320
|
-
{
|
|
1321
|
-
date.setUTCMilliseconds(999);
|
|
1322
|
-
break;
|
|
1323
|
-
}
|
|
1324
|
-
case "minute":
|
|
1325
|
-
{
|
|
1326
|
-
date.setUTCSeconds(59, 999);
|
|
1327
|
-
break;
|
|
1328
|
-
}
|
|
1329
|
-
case "hour":
|
|
1330
|
-
{
|
|
1331
|
-
date.setUTCMinutes(59, 59, 999);
|
|
1332
|
-
break;
|
|
1333
|
-
}
|
|
1334
|
-
case "day":
|
|
1335
|
-
{
|
|
1336
|
-
date.setUTCHours(23, 59, 59, 999);
|
|
1337
|
-
break;
|
|
1338
|
-
}
|
|
1339
|
-
case "week":
|
|
1340
|
-
{
|
|
1341
|
-
const weekStartsOn = options?.weekStartsOn ?? 0;
|
|
1342
|
-
const day = date.getUTCDay();
|
|
1343
|
-
const diff = (day - weekStartsOn + 7) % 7;
|
|
1344
|
-
date.setUTCDate(date.getUTCDate() - diff + 6);
|
|
1345
|
-
date.setUTCHours(23, 59, 59, 999);
|
|
1346
|
-
break;
|
|
1347
|
-
}
|
|
1348
|
-
case "month":
|
|
1349
|
-
{
|
|
1350
|
-
date.setUTCMonth(date.getUTCMonth() + 1, 0);
|
|
1351
|
-
date.setUTCHours(23, 59, 59, 999);
|
|
1352
|
-
break;
|
|
1353
|
-
}
|
|
1354
|
-
case "year":
|
|
1355
|
-
{
|
|
1356
|
-
date.setUTCMonth(11, 31);
|
|
1357
|
-
date.setUTCHours(23, 59, 59, 999);
|
|
1358
|
-
break;
|
|
1359
|
-
}
|
|
1360
|
-
}
|
|
1361
|
-
}
|
|
885
|
+
const startOf = exports.startOf = Internal.startOf;
|
|
1362
886
|
/**
|
|
1363
887
|
* Converts a `DateTime` to the end of the given `part`.
|
|
1364
888
|
*
|
|
@@ -1368,6 +892,7 @@ function endOfDate(date, part, options) {
|
|
|
1368
892
|
* @since 3.6.0
|
|
1369
893
|
* @category math
|
|
1370
894
|
* @example
|
|
895
|
+
* ```ts
|
|
1371
896
|
* import { DateTime } from "effect"
|
|
1372
897
|
*
|
|
1373
898
|
* // returns "2024-01-01T23:59:59.999Z"
|
|
@@ -1375,8 +900,9 @@ function endOfDate(date, part, options) {
|
|
|
1375
900
|
* DateTime.endOf("day"),
|
|
1376
901
|
* DateTime.formatIso
|
|
1377
902
|
* )
|
|
903
|
+
* ```
|
|
1378
904
|
*/
|
|
1379
|
-
const endOf = exports.endOf =
|
|
905
|
+
const endOf = exports.endOf = Internal.endOf;
|
|
1380
906
|
/**
|
|
1381
907
|
* Converts a `DateTime` to the nearest given `part`.
|
|
1382
908
|
*
|
|
@@ -1386,6 +912,7 @@ const endOf = exports.endOf = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (
|
|
|
1386
912
|
* @since 3.6.0
|
|
1387
913
|
* @category math
|
|
1388
914
|
* @example
|
|
915
|
+
* ```ts
|
|
1389
916
|
* import { DateTime } from "effect"
|
|
1390
917
|
*
|
|
1391
918
|
* // returns "2024-01-02T00:00:00Z"
|
|
@@ -1393,33 +920,12 @@ const endOf = exports.endOf = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (
|
|
|
1393
920
|
* DateTime.nearest("day"),
|
|
1394
921
|
* DateTime.formatIso
|
|
1395
922
|
* )
|
|
923
|
+
* ```
|
|
1396
924
|
*/
|
|
1397
|
-
const nearest = exports.nearest =
|
|
1398
|
-
if (part === "milli") return;
|
|
1399
|
-
const millis = date.getTime();
|
|
1400
|
-
const start = new Date(millis);
|
|
1401
|
-
startOfDate(start, part, options);
|
|
1402
|
-
const startMillis = start.getTime();
|
|
1403
|
-
const end = new Date(millis);
|
|
1404
|
-
endOfDate(end, part, options);
|
|
1405
|
-
const endMillis = end.getTime() + 1;
|
|
1406
|
-
const diffStart = millis - startMillis;
|
|
1407
|
-
const diffEnd = endMillis - millis;
|
|
1408
|
-
if (diffStart < diffEnd) {
|
|
1409
|
-
date.setTime(startMillis);
|
|
1410
|
-
} else {
|
|
1411
|
-
date.setTime(endMillis);
|
|
1412
|
-
}
|
|
1413
|
-
}));
|
|
925
|
+
const nearest = exports.nearest = Internal.nearest;
|
|
1414
926
|
// =============================================================================
|
|
1415
927
|
// formatting
|
|
1416
928
|
// =============================================================================
|
|
1417
|
-
const intlTimeZone = self => {
|
|
1418
|
-
if (self._tag === "Named") {
|
|
1419
|
-
return self.id;
|
|
1420
|
-
}
|
|
1421
|
-
return offsetToString(self.offset);
|
|
1422
|
-
};
|
|
1423
929
|
/**
|
|
1424
930
|
* Format a `DateTime` as a string using the `DateTimeFormat` API.
|
|
1425
931
|
*
|
|
@@ -1431,19 +937,7 @@ const intlTimeZone = self => {
|
|
|
1431
937
|
* @since 3.6.0
|
|
1432
938
|
* @category formatting
|
|
1433
939
|
*/
|
|
1434
|
-
const format = exports.format =
|
|
1435
|
-
try {
|
|
1436
|
-
return new Intl.DateTimeFormat(options?.locale, {
|
|
1437
|
-
timeZone: self._tag === "Utc" ? "UTC" : intlTimeZone(self.zone),
|
|
1438
|
-
...options
|
|
1439
|
-
}).format(self.epochMillis);
|
|
1440
|
-
} catch (_) {
|
|
1441
|
-
return new Intl.DateTimeFormat(options?.locale, {
|
|
1442
|
-
timeZone: "UTC",
|
|
1443
|
-
...options
|
|
1444
|
-
}).format(toDate(self));
|
|
1445
|
-
}
|
|
1446
|
-
});
|
|
940
|
+
const format = exports.format = Internal.format;
|
|
1447
941
|
/**
|
|
1448
942
|
* Format a `DateTime` as a string using the `DateTimeFormat` API.
|
|
1449
943
|
*
|
|
@@ -1452,7 +946,7 @@ const format = exports.format = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs,
|
|
|
1452
946
|
* @since 3.6.0
|
|
1453
947
|
* @category formatting
|
|
1454
948
|
*/
|
|
1455
|
-
const formatLocal = exports.formatLocal =
|
|
949
|
+
const formatLocal = exports.formatLocal = Internal.formatLocal;
|
|
1456
950
|
/**
|
|
1457
951
|
* Format a `DateTime` as a string using the `DateTimeFormat` API.
|
|
1458
952
|
*
|
|
@@ -1461,51 +955,42 @@ const formatLocal = exports.formatLocal = /*#__PURE__*/(0, _Function.dual)(isDat
|
|
|
1461
955
|
* @since 3.6.0
|
|
1462
956
|
* @category formatting
|
|
1463
957
|
*/
|
|
1464
|
-
const formatUtc = exports.formatUtc =
|
|
1465
|
-
...options,
|
|
1466
|
-
timeZone: "UTC"
|
|
1467
|
-
}).format(self.epochMillis));
|
|
958
|
+
const formatUtc = exports.formatUtc = Internal.formatUtc;
|
|
1468
959
|
/**
|
|
1469
960
|
* Format a `DateTime` as a string using the `DateTimeFormat` API.
|
|
1470
961
|
*
|
|
1471
962
|
* @since 3.6.0
|
|
1472
963
|
* @category formatting
|
|
1473
964
|
*/
|
|
1474
|
-
const formatIntl = exports.formatIntl =
|
|
965
|
+
const formatIntl = exports.formatIntl = Internal.formatIntl;
|
|
1475
966
|
/**
|
|
1476
967
|
* Format a `DateTime` as a UTC ISO string.
|
|
1477
968
|
*
|
|
1478
969
|
* @since 3.6.0
|
|
1479
970
|
* @category formatting
|
|
1480
971
|
*/
|
|
1481
|
-
const formatIso =
|
|
972
|
+
const formatIso = exports.formatIso = Internal.formatIso;
|
|
1482
973
|
/**
|
|
1483
974
|
* Format a `DateTime` as a time zone adjusted ISO date string.
|
|
1484
975
|
*
|
|
1485
976
|
* @since 3.6.0
|
|
1486
977
|
* @category formatting
|
|
1487
978
|
*/
|
|
1488
|
-
exports.
|
|
1489
|
-
const formatIsoDate = self => toDate(self).toISOString().slice(0, 10);
|
|
979
|
+
const formatIsoDate = exports.formatIsoDate = Internal.formatIsoDate;
|
|
1490
980
|
/**
|
|
1491
981
|
* Format a `DateTime` as a UTC ISO date string.
|
|
1492
982
|
*
|
|
1493
983
|
* @since 3.6.0
|
|
1494
984
|
* @category formatting
|
|
1495
985
|
*/
|
|
1496
|
-
exports.
|
|
1497
|
-
const formatIsoDateUtc = self => toDateUtc(self).toISOString().slice(0, 10);
|
|
986
|
+
const formatIsoDateUtc = exports.formatIsoDateUtc = Internal.formatIsoDateUtc;
|
|
1498
987
|
/**
|
|
1499
988
|
* Format a `DateTime.Zoned` as a ISO string with an offset.
|
|
1500
989
|
*
|
|
1501
990
|
* @since 3.6.0
|
|
1502
991
|
* @category formatting
|
|
1503
992
|
*/
|
|
1504
|
-
exports.
|
|
1505
|
-
const formatIsoOffset = self => {
|
|
1506
|
-
const date = toDate(self);
|
|
1507
|
-
return self._tag === "Utc" ? date.toISOString() : `${date.toISOString().slice(0, -1)}${zonedOffsetIso(self)}`;
|
|
1508
|
-
};
|
|
993
|
+
const formatIsoOffset = exports.formatIsoOffset = Internal.formatIsoOffset;
|
|
1509
994
|
/**
|
|
1510
995
|
* Format a `DateTime.Zoned` as a string.
|
|
1511
996
|
*
|
|
@@ -1514,7 +999,36 @@ const formatIsoOffset = self => {
|
|
|
1514
999
|
* @since 3.6.0
|
|
1515
1000
|
* @category formatting
|
|
1516
1001
|
*/
|
|
1517
|
-
exports.
|
|
1518
|
-
|
|
1519
|
-
|
|
1002
|
+
const formatIsoZoned = exports.formatIsoZoned = Internal.formatIsoZoned;
|
|
1003
|
+
/**
|
|
1004
|
+
* Create a Layer from the given time zone.
|
|
1005
|
+
*
|
|
1006
|
+
* @since 3.6.0
|
|
1007
|
+
* @category current time zone
|
|
1008
|
+
*/
|
|
1009
|
+
const layerCurrentZone = zone => Layer.succeed(CurrentTimeZone, zone);
|
|
1010
|
+
/**
|
|
1011
|
+
* Create a Layer from the given time zone offset.
|
|
1012
|
+
*
|
|
1013
|
+
* @since 3.6.0
|
|
1014
|
+
* @category current time zone
|
|
1015
|
+
*/
|
|
1016
|
+
exports.layerCurrentZone = layerCurrentZone;
|
|
1017
|
+
const layerCurrentZoneOffset = offset => Layer.succeed(CurrentTimeZone, Internal.zoneMakeOffset(offset));
|
|
1018
|
+
/**
|
|
1019
|
+
* Create a Layer from the given IANA time zone identifier.
|
|
1020
|
+
*
|
|
1021
|
+
* @since 3.6.0
|
|
1022
|
+
* @category current time zone
|
|
1023
|
+
*/
|
|
1024
|
+
exports.layerCurrentZoneOffset = layerCurrentZoneOffset;
|
|
1025
|
+
const layerCurrentZoneNamed = zoneId => Layer.effect(CurrentTimeZone, Internal.zoneMakeNamedEffect(zoneId));
|
|
1026
|
+
/**
|
|
1027
|
+
* Create a Layer from the systems local time zone.
|
|
1028
|
+
*
|
|
1029
|
+
* @since 3.6.0
|
|
1030
|
+
* @category current time zone
|
|
1031
|
+
*/
|
|
1032
|
+
exports.layerCurrentZoneNamed = layerCurrentZoneNamed;
|
|
1033
|
+
const layerCurrentZoneLocal = exports.layerCurrentZoneLocal = /*#__PURE__*/Layer.sync(CurrentTimeZone, zoneMakeLocal);
|
|
1520
1034
|
//# sourceMappingURL=DateTime.js.map
|