(input: number | bigint)
| 400 | } as const |
| 401 | |
| 402 | const make = (input: number | bigint): Duration => { |
| 403 | const duration = Object.create(DurationProto) |
| 404 | if (typeof input === "number") { |
| 405 | if (isNaN(input) || input === 0 || Object.is(input, -0)) { |
| 406 | duration.value = zeroDurationValue |
| 407 | } else if (!Number.isFinite(input)) { |
| 408 | duration.value = input > 0 ? infinityDurationValue : negativeInfinityDurationValue |
| 409 | } else if (!Number.isInteger(input)) { |
| 410 | duration.value = { _tag: "Nanos", nanos: roundMillisToNanos(input) } |
| 411 | } else { |
| 412 | duration.value = { _tag: "Millis", millis: input } |
| 413 | } |
| 414 | } else if (input === bigint0) { |
| 415 | duration.value = zeroDurationValue |
| 416 | } else { |
| 417 | duration.value = { _tag: "Nanos", nanos: input } |
| 418 | } |
| 419 | return duration |
| 420 | } |
| 421 | |
| 422 | /** |
| 423 | * Checks whether a value is a Duration. |
no test coverage detected