| 182 | } as const |
| 183 | |
| 184 | const make = (input: number | bigint): Duration => { |
| 185 | const duration = Object.create(DurationProto) |
| 186 | if (isNumber(input)) { |
| 187 | if (isNaN(input) || input <= 0) { |
| 188 | duration.value = zeroValue |
| 189 | } else if (!Number.isFinite(input)) { |
| 190 | duration.value = infinityValue |
| 191 | } else if (!Number.isInteger(input)) { |
| 192 | duration.value = { _tag: "Nanos", nanos: BigInt(Math.round(input * 1_000_000)) } |
| 193 | } else { |
| 194 | duration.value = { _tag: "Millis", millis: input } |
| 195 | } |
| 196 | } else if (input <= bigint0) { |
| 197 | duration.value = zeroValue |
| 198 | } else { |
| 199 | duration.value = { _tag: "Nanos", nanos: input } |
| 200 | } |
| 201 | return duration |
| 202 | } |
| 203 | |
| 204 | /** |
| 205 | * @since 2.0.0 |