UNPKG

tedious

Version:

A TDS driver, for connecting to MS SQLServer databases.

72 lines (67 loc) • 8.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.daysSinceYearOne = daysSinceYearOne; exports.timeLength = timeLength; exports.writeTimeOfDay = writeTimeOfDay; var _core = require("@js-joda/core"); const YEAR_ONE = _core.LocalDate.ofYearDay(1, 1); /** * A `Date` that may carry the sub-millisecond part of a `time`, `datetime2` * or `datetimeoffset` value, as the value parser produces it. */ /** * The number of days from 0001-01-01 to the calendar date of `value`. */ function daysSinceYearOne(value, useUTC) { const date = useUTC ? _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()) : _core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate()); return YEAR_ONE.until(date, _core.ChronoUnit.DAYS); } /** * The length in bytes of a `time` value at `scale`, as it prefixes the * value and pads out the lengths of `datetime2` and `datetimeoffset`. */ function timeLength(scale) { switch (scale) { case 0: case 1: case 2: return 3; case 3: case 4: return 4; case 5: case 6: case 7: return 5; default: throw new Error('invalid scale'); } } /** * Writes the time of day of `value` as the number of 10^-scale second * intervals since midnight, in `timeLength(scale)` bytes. */ function writeTimeOfDay(buffer, value, scale, useUTC) { let timestamp = useUTC ? ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getUTCMilliseconds() : ((value.getHours() * 60 + value.getMinutes()) * 60 + value.getSeconds()) * 1000 + value.getMilliseconds(); timestamp = timestamp * Math.pow(10, scale - 3); timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale); timestamp = Math.round(timestamp); switch (scale) { case 0: case 1: case 2: buffer.writeUInt24LE(timestamp); break; case 3: case 4: buffer.writeUInt32LE(timestamp); break; case 5: case 6: case 7: buffer.writeUInt40LE(timestamp); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJZRUFSX09ORSIsIkxvY2FsRGF0ZSIsIm9mWWVhckRheSIsImRheXNTaW5jZVllYXJPbmUiLCJ2YWx1ZSIsInVzZVVUQyIsImRhdGUiLCJvZiIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJ1bnRpbCIsIkNocm9ub1VuaXQiLCJEQVlTIiwidGltZUxlbmd0aCIsInNjYWxlIiwiRXJyb3IiLCJ3cml0ZVRpbWVPZkRheSIsImJ1ZmZlciIsInRpbWVzdGFtcCIsImdldFVUQ0hvdXJzIiwiZ2V0VVRDTWludXRlcyIsImdldFVUQ1NlY29uZHMiLCJnZXRVVENNaWxsaXNlY29uZHMiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwiTWF0aCIsInBvdyIsIm5hbm9zZWNvbmREZWx0YSIsInJvdW5kIiwid3JpdGVVSW50MjRMRSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQ0MExFIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvdGVtcG9yYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hyb25vVW5pdCwgTG9jYWxEYXRlIH0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQgdHlwZSBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBZRUFSX09ORSA9IExvY2FsRGF0ZS5vZlllYXJEYXkoMSwgMSk7XG5cbi8qKlxuICogQSBgRGF0ZWAgdGhhdCBtYXkgY2FycnkgdGhlIHN1Yi1taWxsaXNlY29uZCBwYXJ0IG9mIGEgYHRpbWVgLCBgZGF0ZXRpbWUyYFxuICogb3IgYGRhdGV0aW1lb2Zmc2V0YCB2YWx1ZSwgYXMgdGhlIHZhbHVlIHBhcnNlciBwcm9kdWNlcyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wb3JhbFZhbHVlIGV4dGVuZHMgRGF0ZSB7XG4gIG5hbm9zZWNvbmREZWx0YT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGRheXMgZnJvbSAwMDAxLTAxLTAxIHRvIHRoZSBjYWxlbmRhciBkYXRlIG9mIGB2YWx1ZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXlzU2luY2VZZWFyT25lKHZhbHVlOiBEYXRlLCB1c2VVVEM6IGJvb2xlYW4pOiBudW1iZXIge1xuICBjb25zdCBkYXRlID0gdXNlVVRDID9cbiAgICBMb2NhbERhdGUub2YodmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgdmFsdWUuZ2V0VVRDTW9udGgoKSArIDEsIHZhbHVlLmdldFVUQ0RhdGUoKSkgOlxuICAgIExvY2FsRGF0ZS5vZih2YWx1ZS5nZXRGdWxsWWVhcigpLCB2YWx1ZS5nZXRNb250aCgpICsgMSwgdmFsdWUuZ2V0RGF0ZSgpKTtcblxuICByZXR1cm4gWUVBUl9PTkUudW50aWwoZGF0ZSwgQ2hyb25vVW5pdC5EQVlTKTtcbn1cblxuLyoqXG4gKiBUaGUgbGVuZ3RoIGluIGJ5dGVzIG9mIGEgYHRpbWVgIHZhbHVlIGF0IGBzY2FsZWAsIGFzIGl0IHByZWZpeGVzIHRoZVxuICogdmFsdWUgYW5kIHBhZHMgb3V0IHRoZSBsZW5ndGhzIG9mIGBkYXRldGltZTJgIGFuZCBgZGF0ZXRpbWVvZmZzZXRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZUxlbmd0aChzY2FsZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgc3dpdGNoIChzY2FsZSkge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIDE6XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIDM7XG4gICAgY2FzZSAzOlxuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiA0O1xuICAgIGNhc2UgNTpcbiAgICBjYXNlIDY6XG4gICAgY2FzZSA3OlxuICAgICAgcmV0dXJuIDU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzY2FsZScpO1xuICB9XG59XG5cbi8qKlxuICogV3JpdGVzIHRoZSB0aW1lIG9mIGRheSBvZiBgdmFsdWVgIGFzIHRoZSBudW1iZXIgb2YgMTBeLXNjYWxlIHNlY29uZFxuICogaW50ZXJ2YWxzIHNpbmNlIG1pZG5pZ2h0LCBpbiBgdGltZUxlbmd0aChzY2FsZSlgIGJ5dGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVUaW1lT2ZEYXkoYnVmZmVyOiBXcml0YWJsZVRyYWNraW5nQnVmZmVyLCB2YWx1ZTogVGVtcG9yYWxWYWx1ZSwgc2NhbGU6IG51bWJlciwgdXNlVVRDOiBib29sZWFuKTogdm9pZCB7XG4gIGxldCB0aW1lc3RhbXAgPSB1c2VVVEMgP1xuICAgICgodmFsdWUuZ2V0VVRDSG91cnMoKSAqIDYwICsgdmFsdWUuZ2V0VVRDTWludXRlcygpKSAqIDYwICsgdmFsdWUuZ2V0VVRDU2Vjb25kcygpKSAqIDEwMDAgKyB2YWx1ZS5nZXRVVENNaWxsaXNlY29uZHMoKSA6XG4gICAgKCh2YWx1ZS5nZXRIb3VycygpICogNjAgKyB2YWx1ZS5nZXRNaW51dGVzKCkpICogNjAgKyB2YWx1ZS5nZXRTZWNvbmRzKCkpICogMTAwMCArIHZhbHVlLmdldE1pbGxpc2Vjb25kcygpO1xuXG4gIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCAqIE1hdGgucG93KDEwLCBzY2FsZSAtIDMpO1xuICB0aW1lc3RhbXAgKz0gKHZhbHVlLm5hbm9zZWNvbmREZWx0YSAhPSBudWxsID8gdmFsdWUubmFub3NlY29uZERlbHRhIDogMCkgKiBNYXRoLnBvdygxMCwgc2NhbGUpO1xuICB0aW1lc3RhbXAgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCk7XG5cbiAgc3dpdGNoIChzY2FsZSkge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIDE6XG4gICAgY2FzZSAyOlxuICAgICAgYnVmZmVyLndyaXRlVUludDI0TEUodGltZXN0YW1wKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICBjYXNlIDQ6XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRSh0aW1lc3RhbXApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgIGNhc2UgNjpcbiAgICBjYXNlIDc6XG4gICAgICBidWZmZXIud3JpdGVVSW50NDBMRSh0aW1lc3RhbXApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBR0EsTUFBTUMsUUFBUSxHQUFHQyxlQUFTLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTs7QUFLQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxnQkFBZ0JBLENBQUNDLEtBQVcsRUFBRUMsTUFBZSxFQUFVO0VBQ3JFLE1BQU1DLElBQUksR0FBR0QsTUFBTSxHQUNqQkosZUFBUyxDQUFDTSxFQUFFLENBQUNILEtBQUssQ0FBQ0ksY0FBYyxDQUFDLENBQUMsRUFBRUosS0FBSyxDQUFDSyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUwsS0FBSyxDQUFDTSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQ2pGVCxlQUFTLENBQUNNLEVBQUUsQ0FBQ0gsS0FBSyxDQUFDTyxXQUFXLENBQUMsQ0FBQyxFQUFFUCxLQUFLLENBQUNRLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUixLQUFLLENBQUNTLE9BQU8sQ0FBQyxDQUFDLENBQUM7RUFFMUUsT0FBT2IsUUFBUSxDQUFDYyxLQUFLLENBQUNSLElBQUksRUFBRVMsZ0JBQVUsQ0FBQ0MsSUFBSSxDQUFDO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsVUFBVUEsQ0FBQ0MsS0FBeUIsRUFBVTtFQUM1RCxRQUFRQSxLQUFLO0lBQ1gsS0FBSyxDQUFDO0lBQ04sS0FBSyxDQUFDO0lBQ04sS0FBSyxDQUFDO01BQ0osT0FBTyxDQUFDO0lBQ1YsS0FBSyxDQUFDO0lBQ04sS0FBSyxDQUFDO01BQ0osT0FBTyxDQUFDO0lBQ1YsS0FBSyxDQUFDO0lBQ04sS0FBSyxDQUFDO0lBQ04sS0FBSyxDQUFDO01BQ0osT0FBTyxDQUFDO0lBQ1Y7TUFDRSxNQUFNLElBQUlDLEtBQUssQ0FBQyxlQUFlLENBQUM7RUFDcEM7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGNBQWNBLENBQUNDLE1BQThCLEVBQUVqQixLQUFvQixFQUFFYyxLQUFhLEVBQUViLE1BQWUsRUFBUTtFQUN6SCxJQUFJaUIsU0FBUyxHQUFHakIsTUFBTSxHQUNwQixDQUFDLENBQUNELEtBQUssQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHbkIsS0FBSyxDQUFDb0IsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUdwQixLQUFLLENBQUNxQixhQUFhLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBR3JCLEtBQUssQ0FBQ3NCLGtCQUFrQixDQUFDLENBQUMsR0FDckgsQ0FBQyxDQUFDdEIsS0FBSyxDQUFDdUIsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUd2QixLQUFLLENBQUN3QixVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBR3hCLEtBQUssQ0FBQ3lCLFVBQVUsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHekIsS0FBSyxDQUFDMEIsZUFBZSxDQUFDLENBQUM7RUFFM0dSLFNBQVMsR0FBR0EsU0FBUyxHQUFHUyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxFQUFFLEVBQUVkLEtBQUssR0FBRyxDQUFDLENBQUM7RUFDL0NJLFNBQVMsSUFBSSxDQUFDbEIsS0FBSyxDQUFDNkIsZUFBZSxJQUFJLElBQUksR0FBRzdCLEtBQUssQ0FBQzZCLGVBQWUsR0FBRyxDQUFDLElBQUlGLElBQUksQ0FBQ0MsR0FBRyxDQUFDLEVBQUUsRUFBRWQsS0FBSyxDQUFDO0VBQzlGSSxTQUFTLEdBQUdTLElBQUksQ0FBQ0csS0FBSyxDQUFDWixTQUFTLENBQUM7RUFFakMsUUFBUUosS0FBSztJQUNYLEtBQUssQ0FBQztJQUNOLEtBQUssQ0FBQztJQUNOLEtBQUssQ0FBQztNQUNKRyxNQUFNLENBQUNjLGFBQWEsQ0FBQ2IsU0FBUyxDQUFDO01BQy9CO0lBQ0YsS0FBSyxDQUFDO0lBQ04sS0FBSyxDQUFDO01BQ0pELE1BQU0sQ0FBQ2UsYUFBYSxDQUFDZCxTQUFTLENBQUM7TUFDL0I7SUFDRixLQUFLLENBQUM7SUFDTixLQUFLLENBQUM7SUFDTixLQUFLLENBQUM7TUFDSkQsTUFBTSxDQUFDZ0IsYUFBYSxDQUFDZixTQUFTLENBQUM7RUFDbkM7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==