UNPKG

@tai-kun/surrealdb

Version:

The SurrealDB SDK for JavaScript

114 lines (112 loc) 13.3 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // src/data-types/encodable/duration.ts import { Duration as Base } from "../decode-only/index.mjs"; import { NumberRangeError } from "../../errors/index.mjs"; import { CBOR_TAG_DURATION } from "./spec.mjs"; var SECONDS_PER_MINUTE = 60n; var SECONDS_PER_HOUR = 60n * SECONDS_PER_MINUTE; var SECONDS_PER_DAY = 24n * SECONDS_PER_HOUR; var SECONDS_PER_WEEK = 7n * SECONDS_PER_DAY; var SECONDS_PER_YEAR = 365n * SECONDS_PER_DAY; var NANOSECONDS_PER_MICROSECOND = 1000n; var NANOSECONDS_PER_MILLISECOND = 1000000n; var NANOSECONDS_PER_SECOND = 1000000000n; var JS_MAX_SAFE_UNSIGNED_INTEGER = 9007199254740991n; var _Duration = class _Duration extends Base { // dprint-ignore parse() { let secs = this.seconds; let nano = BigInt(this.nanoseconds); if (secs === 0n && nano === 0n) { return { nanoseconds: 0 }; } let year = secs / SECONDS_PER_YEAR; secs = secs % SECONDS_PER_YEAR; let week = secs / SECONDS_PER_WEEK; secs = secs % SECONDS_PER_WEEK; let days = secs / SECONDS_PER_DAY; secs = secs % SECONDS_PER_DAY; let hour = secs / SECONDS_PER_HOUR; secs = secs % SECONDS_PER_HOUR; let mins = secs / SECONDS_PER_MINUTE; secs = secs % SECONDS_PER_MINUTE; let msec = nano / NANOSECONDS_PER_MILLISECOND; nano = nano % NANOSECONDS_PER_MILLISECOND; let usec = nano / NANOSECONDS_PER_MICROSECOND; nano = nano % NANOSECONDS_PER_MICROSECOND; const o = {}; if (year) o.years = Number(year); if (week) o.weeks = Number(week); if (days) o.days = Number(days); if (hour) o.hours = Number(hour); if (mins) o.minutes = Number(mins); if (secs) o.seconds = Number(secs); if (msec) o.milliseconds = Number(msec); if (usec) o.microseconds = Number(usec); if (nano) o.nanoseconds = Number(nano); return o; } valueOf() { return this.seconds * NANOSECONDS_PER_SECOND + BigInt(this.nanoseconds); } // dprint-ignore toString() { const o = this.parse(); let s = ""; if ("years" in o) s += o.years + "y"; if ("weeks" in o) s += o.weeks + "w"; if ("days" in o) s += o.days + "d"; if ("hours" in o) s += o.hours + "h"; if ("minutes" in o) s += o.minutes + "m"; if ("seconds" in o) s += o.seconds + "s"; if ("milliseconds" in o) s += o.milliseconds + "ms"; if ("microseconds" in o) s += o.microseconds + "\xB5s"; if ("nanoseconds" in o) s += o.nanoseconds + "ns"; return s; } [Symbol.toPrimitive](hint) { switch (hint) { case "number": { const ms = this.seconds * 1000n + BigInt(this.nanoseconds) / 1000000n; if (ms > JS_MAX_SAFE_UNSIGNED_INTEGER || ms < 0n) { throw new NumberRangeError([0n, JS_MAX_SAFE_UNSIGNED_INTEGER], ms, { integer: true }); } return Number(ms) + this.nanoseconds % 1e6 / 1e6; } case "string": case "default": return this.toString(); default: throw TypeError("Invalid hint: " + String(hint)); } } toCBOR() { return [ CBOR_TAG_DURATION, [this.seconds, this.nanoseconds] ]; } toJSON() { return this.toString(); } toSurql() { return this.toString(); } toPlainObject() { return { seconds: this.seconds, nanoseconds: this.nanoseconds }; } }; __name(_Duration, "Duration"); var Duration = _Duration; export { Duration as default }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RhdGEtdHlwZXMvZW5jb2RhYmxlL2R1cmF0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBEdXJhdGlvbiBhcyBCYXNlIH0gZnJvbSBcIkB0YWkta3VuL3N1cnJlYWxkYi9kZWNvZGVvbmx5LWRhdGF0eXBlc1wiO1xuaW1wb3J0IHsgTnVtYmVyUmFuZ2VFcnJvciB9IGZyb20gXCJAdGFpLWt1bi9zdXJyZWFsZGIvZXJyb3JzXCI7XG5pbXBvcnQgeyBDQk9SX1RBR19EVVJBVElPTiwgdHlwZSBFbmNvZGFibGUgfSBmcm9tIFwiLi9zcGVjXCI7XG5cbmV4cG9ydCB0eXBlICogZnJvbSBcIi4uL2RlY29kZS1vbmx5L2R1cmF0aW9uXCI7XG5cbmNvbnN0IFNFQ09ORFNfUEVSX01JTlVURSA9IDYwbjtcbmNvbnN0IFNFQ09ORFNfUEVSX0hPVVIgPSA2MG4gKiBTRUNPTkRTX1BFUl9NSU5VVEU7XG5jb25zdCBTRUNPTkRTX1BFUl9EQVkgPSAyNG4gKiBTRUNPTkRTX1BFUl9IT1VSO1xuY29uc3QgU0VDT05EU19QRVJfV0VFSyA9IDduICogU0VDT05EU19QRVJfREFZO1xuY29uc3QgU0VDT05EU19QRVJfWUVBUiA9IDM2NW4gKiBTRUNPTkRTX1BFUl9EQVk7XG5jb25zdCBOQU5PU0VDT05EU19QRVJfTUlDUk9TRUNPTkQgPSAxXzAwMG47XG5jb25zdCBOQU5PU0VDT05EU19QRVJfTUlMTElTRUNPTkQgPSAxXzAwMF8wMDBuO1xuY29uc3QgTkFOT1NFQ09ORFNfUEVSX1NFQ09ORCA9IDFfMDAwXzAwMF8wMDBuO1xuXG5jb25zdCBKU19NQVhfU0FGRV9VTlNJR05FRF9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MW47IC8vIDJeNTMtMVxuXG4vKipcbiAqIFtBUEkgUmVmZXJlbmNlXShodHRwczovL3RhaS1rdW4uZ2l0aHViLmlvL3N1cnJlYWxkYi5qcy92Mi9hcGkvZGF0YS9kdXJhdGlvbilcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHVyYXRpb24gZXh0ZW5kcyBCYXNlIGltcGxlbWVudHMgRW5jb2RhYmxlIHtcbiAgLy8gZHByaW50LWlnbm9yZVxuICBwYXJzZSgpOiB7XG4gICAgeWVhcnM/OiBudW1iZXI7XG4gICAgd2Vla3M/OiBudW1iZXI7XG4gICAgZGF5cz86IG51bWJlcjtcbiAgICBob3Vycz86IG51bWJlcjtcbiAgICBtaW51dGVzPzogbnVtYmVyO1xuICAgIHNlY29uZHM/OiBudW1iZXI7XG4gICAgbWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuICAgIG1pY3Jvc2Vjb25kcz86IG51bWJlcjtcbiAgICBuYW5vc2Vjb25kcz86IG51bWJlcjtcbiAgfSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3N1cnJlYWxkYi9zdXJyZWFsZGIvYmxvYi92Mi4wLjEvY29yZS9zcmMvc3FsL2R1cmF0aW9uLnJzI0wxNjZcblxuICAgIGxldCBzZWNzID0gdGhpcy5zZWNvbmRzO1xuICAgIGxldCBuYW5vID0gQmlnSW50KHRoaXMubmFub3NlY29uZHMpO1xuXG4gICAgaWYgKHNlY3MgPT09IDBuICYmIG5hbm8gPT09IDBuKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW5vc2Vjb25kczogMCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgeWVhciA9IHNlY3MgLyBTRUNPTkRTX1BFUl9ZRUFSO1xuICAgICAgICBzZWNzID0gc2VjcyAlIFNFQ09ORFNfUEVSX1lFQVI7XG4gICAgbGV0IHdlZWsgPSBzZWNzIC8gU0VDT05EU19QRVJfV0VFSztcbiAgICAgICAgc2VjcyA9IHNlY3MgJSBTRUNPTkRTX1BFUl9XRUVLO1xuICAgIGxldCBkYXlzID0gc2VjcyAvIFNFQ09ORFNfUEVSX0RBWTtcbiAgICAgICAgc2VjcyA9IHNlY3MgJSBTRUNPTkRTX1BFUl9EQVk7XG4gICAgbGV0IGhvdXIgPSBzZWNzIC8gU0VDT05EU19QRVJfSE9VUjtcbiAgICAgICAgc2VjcyA9IHNlY3MgJSBTRUNPTkRTX1BFUl9IT1VSO1xuICAgIGxldCBtaW5zID0gc2VjcyAvIFNFQ09ORFNfUEVSX01JTlVURTtcbiAgICAgICAgc2VjcyA9IHNlY3MgJSBTRUNPTkRTX1BFUl9NSU5VVEU7XG4gICAgbGV0IG1zZWMgPSBuYW5vIC8gTkFOT1NFQ09ORFNfUEVSX01JTExJU0VDT05EO1xuICAgICAgICBuYW5vID0gbmFubyAlIE5BTk9TRUNPTkRTX1BFUl9NSUxMSVNFQ09ORDtcbiAgICBsZXQgdXNlYyA9IG5hbm8gLyBOQU5PU0VDT05EU19QRVJfTUlDUk9TRUNPTkQ7XG4gICAgICAgIG5hbm8gPSBuYW5vICUgTkFOT1NFQ09ORFNfUEVSX01JQ1JPU0VDT05EO1xuXG4gICAgY29uc3Qgbzoge1xuICAgICAgeWVhcnM/OiBudW1iZXJcbiAgICAgIHdlZWtzPzogbnVtYmVyXG4gICAgICBkYXlzPzogbnVtYmVyXG4gICAgICBob3Vycz86IG51bWJlclxuICAgICAgbWludXRlcz86IG51bWJlclxuICAgICAgc2Vjb25kcz86IG51bWJlclxuICAgICAgbWlsbGlzZWNvbmRzPzogbnVtYmVyXG4gICAgICBtaWNyb3NlY29uZHM/OiBudW1iZXJcbiAgICAgIG5hbm9zZWNvbmRzPzogbnVtYmVyXG4gICAgfSA9IHt9XG5cbiAgICBpZiAoeWVhcikgby55ZWFycyAgICAgICAgPSBOdW1iZXIoeWVhcik7XG4gICAgaWYgKHdlZWspIG8ud2Vla3MgICAgICAgID0gTnVtYmVyKHdlZWspO1xuICAgIGlmIChkYXlzKSBvLmRheXMgICAgICAgICA9IE51bWJlcihkYXlzKTtcbiAgICBpZiAoaG91cikgby5ob3VycyAgICAgICAgPSBOdW1iZXIoaG91cik7XG4gICAgaWYgKG1pbnMpIG8ubWludXRlcyAgICAgID0gTnVtYmVyKG1pbnMpO1xuICAgIGlmIChzZWNzKSBvLnNlY29uZHMgICAgICA9IE51bWJlcihzZWNzKTtcbiAgICBpZiAobXNlYykgby5taWxsaXNlY29uZHMgPSBOdW1iZXIobXNlYyk7XG4gICAgaWYgKHVzZWMpIG8ubWljcm9zZWNvbmRzID0gTnVtYmVyKHVzZWMpO1xuICAgIGlmIChuYW5vKSBvLm5hbm9zZWNvbmRzICA9IE51bWJlcihuYW5vKTtcblxuICAgIHJldHVybiBvXG4gIH1cblxuICBvdmVycmlkZSB2YWx1ZU9mKCk6IGJpZ2ludCB7XG4gICAgcmV0dXJuIHRoaXMuc2Vjb25kcyAqIE5BTk9TRUNPTkRTX1BFUl9TRUNPTkQgKyBCaWdJbnQodGhpcy5uYW5vc2Vjb25kcyk7XG4gIH1cblxuICAvLyBkcHJpbnQtaWdub3JlXG4gIG92ZXJyaWRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3N1cnJlYWxkYmRiL3N1cnJlYWxkYmRiL2Jsb2IvdjEuNS4yL2NvcmUvc3FsL2R1cmF0aW9uLnJzI0wxNTktTDIxN1xuXG4gICAgY29uc3QgbyA9IHRoaXMucGFyc2UoKTtcbiAgICBsZXQgcyA9IFwiXCI7XG5cbiAgICBpZiAoXCJ5ZWFyc1wiICAgICAgICBpbiBvKSBzICs9IG8ueWVhcnMgICAgICAgICsgXCJ5XCI7XG4gICAgaWYgKFwid2Vla3NcIiAgICAgICAgaW4gbykgcyArPSBvLndlZWtzICAgICAgICArIFwid1wiO1xuICAgIGlmIChcImRheXNcIiAgICAgICAgIGluIG8pIHMgKz0gby5kYXlzICAgICAgICAgKyBcImRcIjtcbiAgICBpZiAoXCJob3Vyc1wiICAgICAgICBpbiBvKSBzICs9IG8uaG91cnMgICAgICAgICsgXCJoXCI7XG4gICAgaWYgKFwibWludXRlc1wiICAgICAgaW4gbykgcyArPSBvLm1pbnV0ZXMgICAgICArIFwibVwiO1xuICAgIGlmIChcInNlY29uZHNcIiAgICAgIGluIG8pIHMgKz0gby5zZWNvbmRzICAgICAgKyBcInNcIjtcbiAgICBpZiAoXCJtaWxsaXNlY29uZHNcIiBpbiBvKSBzICs9IG8ubWlsbGlzZWNvbmRzICsgXCJtc1wiO1xuICAgIGlmIChcIm1pY3Jvc2Vjb25kc1wiIGluIG8pIHMgKz0gby5taWNyb3NlY29uZHMgKyBcIlx1MDBCNXNcIjtcbiAgICBpZiAoXCJuYW5vc2Vjb25kc1wiICBpbiBvKSBzICs9IG8ubmFub3NlY29uZHMgICsgXCJuc1wiO1xuXG4gICAgcmV0dXJuIHNcbiAgfVxuXG4gIFtTeW1ib2wudG9QcmltaXRpdmVdKGhpbnQ6IFwiZGVmYXVsdFwiIHwgXCJzdHJpbmdcIik6IHN0cmluZztcbiAgW1N5bWJvbC50b1ByaW1pdGl2ZV0oaGludDogXCJudW1iZXJcIik6IG51bWJlcjtcbiAgW1N5bWJvbC50b1ByaW1pdGl2ZV0oaGludDogc3RyaW5nKTogc3RyaW5nIHwgbnVtYmVyO1xuICBbU3ltYm9sLnRvUHJpbWl0aXZlXShoaW50OiBzdHJpbmcpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHN3aXRjaCAoaGludCkge1xuICAgICAgY2FzZSBcIm51bWJlclwiOiB7XG4gICAgICAgIGNvbnN0IG1zID0gdGhpcy5zZWNvbmRzICogMV8wMDBuXG4gICAgICAgICAgKyBCaWdJbnQodGhpcy5uYW5vc2Vjb25kcykgLyAxXzAwMF8wMDBuO1xuXG4gICAgICAgIGlmIChtcyA+IEpTX01BWF9TQUZFX1VOU0lHTkVEX0lOVEVHRVIgfHwgbXMgPCAwbikge1xuICAgICAgICAgIHRocm93IG5ldyBOdW1iZXJSYW5nZUVycm9yKFswbiwgSlNfTUFYX1NBRkVfVU5TSUdORURfSU5URUdFUl0sIG1zLCB7XG4gICAgICAgICAgICBpbnRlZ2VyOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE51bWJlcihtcykgKyAodGhpcy5uYW5vc2Vjb25kcyAlIDFlNikgLyAxZTY7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIGNhc2UgXCJkZWZhdWx0XCI6XG4gICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IFR5cGVFcnJvcihcIkludmFsaWQgaGludDogXCIgKyBTdHJpbmcoaGludCkpO1xuICAgIH1cbiAgfVxuXG4gIHRvQ0JPUigpOiBbXG4gICAgdGFnOiB0eXBlb2YgQ0JPUl9UQUdfRFVSQVRJT04sXG4gICAgdmFsdWU6IFtzZWNvbmRzOiBiaWdpbnQsIG5hbm9zZWNvbmRzOiBudW1iZXJdLFxuICBdIHtcbiAgICByZXR1cm4gW1xuICAgICAgQ0JPUl9UQUdfRFVSQVRJT04sXG4gICAgICBbdGhpcy5zZWNvbmRzLCB0aGlzLm5hbm9zZWNvbmRzXSxcbiAgICBdO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHRvU3VycWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICB9XG5cbiAgdG9QbGFpbk9iamVjdCgpOiB7XG4gICAgc2Vjb25kczogYmlnaW50O1xuICAgIG5hbm9zZWNvbmRzOiBudW1iZXI7XG4gIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBzZWNvbmRzOiB0aGlzLnNlY29uZHMsXG4gICAgICBuYW5vc2Vjb25kczogdGhpcy5uYW5vc2Vjb25kcyxcbiAgICB9O1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBQUEsU0FBUyxZQUFZLFlBQVk7QUFDakMsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyx5QkFBeUM7QUFJbEQsSUFBTSxxQkFBcUI7QUFDM0IsSUFBTSxtQkFBbUIsTUFBTTtBQUMvQixJQUFNLGtCQUFrQixNQUFNO0FBQzlCLElBQU0sbUJBQW1CLEtBQUs7QUFDOUIsSUFBTSxtQkFBbUIsT0FBTztBQUNoQyxJQUFNLDhCQUE4QjtBQUNwQyxJQUFNLDhCQUE4QjtBQUNwQyxJQUFNLHlCQUF5QjtBQUUvQixJQUFNLCtCQUErQjtBQUtyQyxJQUFxQixZQUFyQixNQUFxQixrQkFBaUIsS0FBMEI7QUFBQTtBQUFBLEVBRTlELFFBVUU7QUFHQSxRQUFJLE9BQU8sS0FBSztBQUNoQixRQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVc7QUFFbEMsUUFBSSxTQUFTLE1BQU0sU0FBUyxJ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