UNPKG

@tai-kun/surrealdb

Version:

The SurrealDB SDK for JavaScript

52 lines (50 loc) 6.06 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // src/data-types/decode-only/datetime.ts import { defineAsDatetime } from "../_internals/define.mjs"; var MILLISECONDS_PER_SECOND = 1e3; var NANOSECONDS_PER_MILLISECOND = 1e6; var NANOSECONDS_PER_SECOND = 1e9; var MAX_DATE_SECONDS = 864e10; var MIN_DATE_SECONDS = -864e10; var _Datetime = class _Datetime { constructor(source) { let s, ns; if (typeof source === "string") { const msTime = Date.parse(source); if (msTime === msTime) { s = Math.trunc(msTime / MILLISECONDS_PER_SECOND); ns = Math.abs( msTime % MILLISECONDS_PER_SECOND * NANOSECONDS_PER_MILLISECOND ); if (s <= 0 && ns > 0) { if (s <= MIN_DATE_SECONDS) { s = ns = NaN; } else { s -= 1; ns = NANOSECONDS_PER_SECOND - ns; } } } else { s = ns = NaN; } } else { ns = source[1]; s = Number(source[0]) + Math.trunc(ns / NANOSECONDS_PER_SECOND); if (s >= MIN_DATE_SECONDS && s <= MAX_DATE_SECONDS) { ns %= NANOSECONDS_PER_SECOND; } else { s = ns = NaN; } } this.seconds = s === 0 ? 0 : s; this.nanoseconds = ns === 0 ? 0 : ns; defineAsDatetime(this); } }; __name(_Datetime, "Datetime"); var Datetime = _Datetime; export { Datetime as default }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGVjb2RlLW9ubHkvZGF0ZXRpbWUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgRGF0YUl0ZW0gfSBmcm9tIFwiQHRhaS1rdW4vc3VycmVhbGRiL2Nib3JcIjtcbmltcG9ydCB7IGRlZmluZUFzRGF0ZXRpbWUgfSBmcm9tIFwiLi4vX2ludGVybmFscy9kZWZpbmVcIjtcblxuLy8gU2VlOiBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jYm9yLXRhZ3MvY2Jvci10YWdzLnhodG1sXG4vLyBTdXJyZWFsREIgXHUzMDY3XHUzMDZGXHU2NUU1XHU2NjQyXHUzMDZCXHUzMEJGXHUzMEIwIDEwMCwgMSwgMTAwNCBcdTMwOTJcdTRGN0ZcdTMwNjNcdTMwNjZcdTMwNDRcdTMwNkFcdTMwNDRcdTZBMjFcdTY5RDhcbmV4cG9ydCB0eXBlIERhdGV0aW1lU291cmNlID1cbiAgLy8gVGFnIDAgKCwgMTAwKVxuICB8IERhdGFJdGVtLlV0ZjhTdHJpbmcuRml4ZWRMZW5ndGhbXCJ2YWx1ZVwiXVxuICAvLyBUYWcgKDEsIDEwMDQpXG4gIC8vIHwgRGF0YUl0ZW0uVW5zaWduZWRJbnRlZ2VyW1widmFsdWVcIl1cbiAgLy8gfCBEYXRhSXRlbS5OZWdhdGl2ZUludGVnZXJbXCJ2YWx1ZVwiXVxuICAvLyBTdXJyZWFsREIgXHU3MkVDXHU4MUVBXG4gIHwgcmVhZG9ubHkgW1xuICAgIC8vIGk2NFxuICAgIHNlY29uZHM6XG4gICAgICB8IERhdGFJdGVtLlVuc2lnbmVkSW50ZWdlcltcInZhbHVlXCJdXG4gICAgICB8IERhdGFJdGVtLk5lZ2F0aXZlSW50ZWdlcltcInZhbHVlXCJdLFxuICAgIC8vIHUzMlxuICAgIG5hbm9zZWNvbmRzOlxuICAgICAgfCBEYXRhSXRlbS5VbnNpZ25lZEludGVnZXIuVGlueVtcInZhbHVlXCJdXG4gICAgICB8IERhdGFJdGVtLlVuc2lnbmVkSW50ZWdlci5PbmVCeXRlW1widmFsdWVcIl1cbiAgICAgIHwgRGF0YUl0ZW0uVW5zaWduZWRJbnRlZ2VyLlR3b0J5dGVzW1widmFsdWVcIl1cbiAgICAgIHwgRGF0YUl0ZW0uVW5zaWduZWRJbnRlZ2VyLkZvdXJCeXRlc1tcInZhbHVlXCJdLFxuICBdO1xuXG5jb25zdCBNSUxMSVNFQ09ORFNfUEVSX1NFQ09ORCA9IDFlMztcbmNvbnN0IE5BTk9TRUNPTkRTX1BFUl9NSUxMSVNFQ09ORCA9IDFlNjtcbmNvbnN0IE5BTk9TRUNPTkRTX1BFUl9TRUNPTkQgPSAxZTk7XG5cbmNvbnN0IE1BWF9EQVRFX1NFQ09ORFMgPSA4XzY0MF8wMDBfMDAwXzAwMDtcbmNvbnN0IE1JTl9EQVRFX1NFQ09ORFMgPSAtOF82NDBfMDAwXzAwMF8wMDA7XG5cbi8qKlxuICogW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vdGFpLWt1bi5naXRodWIuaW8vc3VycmVhbGRiLmpzL3YyL2FwaS9kYXRhL2RhdGV0aW1lKVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXRldGltZSB7XG4gIC8qKlxuICAgKiAtKDJeNTMtMSkgfiAyXjUzLTEsIE5hTlxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAwIH4gOTk5Xzk5OV85OTksIE5hTlxuICAgKi9cbiAgcmVhZG9ubHkgbmFub3NlY29uZHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IERhdGV0aW1lU291cmNlKSB7XG4gICAgbGV0IHM6IG51bWJlciwgbnM6IG51bWJlcjtcblxuICAgIGlmICh0eXBlb2Ygc291cmNlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBtc1RpbWUgPSBEYXRlLnBhcnNlKHNvdXJjZSk7XG5cbiAgICAgIGlmIChtc1RpbWUgPT09IG1zVGltZSkge1xuICAgICAgICBzID0gTWF0aC50cnVuYyhtc1RpbWUgLyBNSUxMSVNFQ09ORFNfUEVSX1NFQ09ORCk7XG4gICAgICAgIG5zID0gTWF0aC5hYnMoXG4gICAgICAgICAgKG1zVGltZSAlIE1JTExJU0VDT05EU19QRVJfU0VDT05EKSAqIE5BTk9TRUNPTkRTX1BFUl9NSUxMSVNFQ09ORCxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocyA8PSAwICYmIG5zID4gMCkge1xuICAgICAgICAgIGlmIChzIDw9IE1JTl9EQVRFX1NFQ09ORFMpIHtcbiAgICAgICAgICAgIHMgPSBucyA9IE5hTjsgLy8gVW5kZXJmbG93XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMgLT0gMTtcbiAgICAgICAgICAgIG5zID0gTkFOT1NFQ09ORFNfUEVSX1NFQ09ORCAtIG5zO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcyA9IG5zID0gTmFOO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBucyA9IHNvdXJjZVsxXTtcbiAgICAgIHMgPSBOdW1iZXIoc291cmNlWzBdKSArIE1hdGgudHJ1bmMobnMgLyBOQU5PU0VDT05EU19QRVJfU0VDT05EKTtcblxuICAgICAgaWYgKHMgPj0gTUlOX0RBVEVfU0VDT05EUyAmJiBzIDw9IE1BWF9EQVRFX1NFQ09ORFMpIHtcbiAgICAgICAgbnMgJT0gTkFOT1NFQ09ORFNfUEVSX1NFQ09ORDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMgPSBucyA9IE5hTjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlY29uZHMgPSBzID09PSAwID8gMCA6IHM7XG4gICAgdGhpcy5uYW5vc2Vjb25kcyA9IG5zID09PSAwID8gMCA6IG5zO1xuXG4gICAgZGVmaW5lQXNEYXRldGltZSh0aGlzKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7OztBQUNBLFNBQVMsd0JBQXdCO0FBd0JqQyxJQUFNLDBCQUEwQjtBQUNoQyxJQUFNLDhCQUE4QjtBQUNwQyxJQUFNLHlCQUF5QjtBQUUvQixJQUFNLG1CQUFtQjtBQUN6QixJQUFNLG1CQUFtQjtBQUt6QixJQUFxQixZQUFyQixNQUFxQixVQUFTO0FBQUEsRUFXNUIsWUFBWSxRQUF3QjtBQUNsQyxRQUFJLEdBQVc7QUFFZixRQUFJLE9BQU8sV0FBVyxVQUFVO0FBQzlCLFlBQU0sU0FBUyxLQUFLLE1BQU0sTUFBTTtBQUVoQyxVQUFJLFdBQVcsUUFBUTtBQUNyQixZQUFJLEtBQUssTUFBTSxTQUFTLHVCQUF1QjtBQUMvQyxhQUFLLEtBQUs7QUFBQSxVQUNQLFNBQVMsMEJBQTJCO0FBQUEsUUFDdkM7QUFFQSxZQUFJLEtBQUssS0FBSyxLQUFLLEdBQUc7QUFDcEIsY0FBSSxLQUFLLGtCQUFrQjtBQUN6QixnQkFBSSxLQUFLO0FBQUEsVUFDWCxPQUFPO0FBQ0wsaUJBQUs7QUFDTCxpQkFBSyx5QkFBeUI7QUFBQSxVQUNoQztBQUFBLFFBQ0Y7QUFBQSxNQUNGLE9BQU87QUFDTCxZQUFJLEtBQUs7QUFBQSxNQUNYO0FBQUEsSUFDRixPQUFPO0FBQ0wsV0FBSyxPQUFPLENBQUM7QUFDYixVQUFJLE9BQU8sT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sS0FBSyxzQkFBc0I7QUFFOUQsVUFBSSxLQUFLLG9CQUFvQixLQUFLLGtCQUFrQjtBQUNsRCxjQUFNO0FBQUEsTUFDUixPQUFPO0FBQ0wsWUFBSSxLQUFLO0FBQUEsTUFDWDtBQUFBLElBQ0Y7QUFFQSxTQUFLLFVBQVUsTUFBTSxJQUFJLElBQUk7QUFDN0IsU0FBSyxjQUFjLE9BQU8sSUFBSSxJQUFJO0FBRWxDLHFCQUFpQixJQUFJO0FBQUEsRUFDdkI7QUFDRjtBQWxEOEI7QUFBOUIsSUFBcUIsV0FBckI7IiwKICAibmFtZXMiOiBbXQp9Cg==