Current section

Files

Jump to
gossamer src utils time.ffi.mjs
Raw

src/utils/time.ffi.mjs

// src/utils/time.ffi.ts
import {
add,
nanoseconds as durationNanoseconds,
seconds as durationSeconds,
to_seconds_and_nanoseconds as durationToSecondsAndNanoseconds
} from "../../gleam_time/gleam/time/duration.mjs";
import {
from_unix_seconds_and_nanoseconds,
to_unix_seconds_and_nanoseconds
} from "../../gleam_time/gleam/time/timestamp.mjs";
function msToTimestamp(ms) {
const seconds = Math.floor(ms / 1e3);
const nanoseconds = Math.round((ms - seconds * 1e3) * 1e6);
return from_unix_seconds_and_nanoseconds(seconds, nanoseconds);
}
function timestampToMs(timestamp) {
const [seconds, nanoseconds] = to_unix_seconds_and_nanoseconds(timestamp);
return seconds * 1e3 + nanoseconds / 1e6;
}
function msToDuration(ms) {
const wholeSeconds = Math.floor(ms / 1e3);
const remainderMs = ms - wholeSeconds * 1e3;
const ns = Math.round(remainderMs * 1e6);
return add(durationSeconds(wholeSeconds), durationNanoseconds(ns));
}
function durationToMs(duration) {
const [seconds, nanoseconds] = durationToSecondsAndNanoseconds(duration);
return seconds * 1e3 + nanoseconds / 1e6;
}
export {
durationToMs,
msToDuration,
msToTimestamp,
timestampToMs
};