UNPKG

tedious

Version:

A TDS driver, for connecting to MS SQLServer databases.

73 lines (71 loc) • 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _datetimen = _interopRequireDefault(require("./datetimen")); var _core = require("@js-joda/core"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const EPOCH_DATE = _core.LocalDate.ofYearDay(1900, 1); const TYPE_INFO = Buffer.from([_datetimen.default.id, 0x08]); const DateTime = { id: 0x3D, type: 'DATETIME', name: 'DateTime', declaration: function () { return 'datetime'; }, writeTypeInfo(buffer) { buffer.writeBuffer(TYPE_INFO); }, writeValue(buffer, parameter, options) { const value = parameter.value; if (value == null) { buffer.writeUInt8(0x00); return; } let days, milliseconds; if (options.useUTC) { days = EPOCH_DATE.until(_core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()), _core.ChronoUnit.DAYS); milliseconds = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getUTCMilliseconds(); } else { days = EPOCH_DATE.until(_core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate()), _core.ChronoUnit.DAYS); milliseconds = ((value.getHours() * 60 + value.getMinutes()) * 60 + value.getSeconds()) * 1000 + value.getMilliseconds(); } let threeHundredthsOfSecond = Math.round(milliseconds / (3 + 1 / 3)); // 25920000 equals one day if (threeHundredthsOfSecond === 25920000) { days += 1; threeHundredthsOfSecond = 0; } buffer.writeUInt8(0x08); buffer.writeInt32LE(days); buffer.writeUInt32LE(threeHundredthsOfSecond); }, // TODO: type 'any' needs to be revisited. validate: function (value, collation, options) { if (value == null) { return null; } if (!(value instanceof Date)) { value = new Date(Date.parse(value)); } value = value; let year; if (options && options.useUTC) { year = value.getUTCFullYear(); } else { year = value.getFullYear(); } if (year < 1753 || year > 9999) { throw new TypeError('Out of range.'); } if (isNaN(value)) { throw new TypeError('Invalid date.'); } return value; } }; var _default = exports.default = DateTime; module.exports = DateTime; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0ZXRpbWVuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkVQT0NIX0RBVEUiLCJMb2NhbERhdGUiLCJvZlllYXJEYXkiLCJUWVBFX0lORk8iLCJCdWZmZXIiLCJmcm9tIiwiRGF0ZVRpbWVOIiwiaWQiLCJEYXRlVGltZSIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJ3cml0ZVR5cGVJbmZvIiwiYnVmZmVyIiwid3JpdGVCdWZmZXIiLCJ3cml0ZVZhbHVlIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwid3JpdGVVSW50OCIsImRheXMiLCJtaWxsaXNlY29uZHMiLCJ1c2VVVEMiLCJ1bnRpbCIsIm9mIiwiZ2V0VVRDRnVsbFllYXIiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJDaHJvbm9Vbml0IiwiREFZUyIsImdldFVUQ0hvdXJzIiwiZ2V0VVRDTWludXRlcyIsImdldFVUQ1NlY29uZHMiLCJnZXRVVENNaWxsaXNlY29uZHMiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJ0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCIsIk1hdGgiLCJyb3VuZCIsIndyaXRlSW50MzJMRSIsIndyaXRlVUludDMyTEUiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsIkRhdGUiLCJwYXJzZSIsInllYXIiLCJUeXBlRXJyb3IiLCJpc05hTiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2RhdGV0aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IERhdGVUaW1lTiBmcm9tICcuL2RhdGV0aW1lbic7XG5pbXBvcnQgeyBDaHJvbm9Vbml0LCBMb2NhbERhdGUgfSBmcm9tICdAanMtam9kYS9jb3JlJztcblxuY29uc3QgRVBPQ0hfREFURSA9IExvY2FsRGF0ZS5vZlllYXJEYXkoMTkwMCwgMSk7XG5jb25zdCBUWVBFX0lORk8gPSBCdWZmZXIuZnJvbShbRGF0ZVRpbWVOLmlkLCAweDA4XSk7XG5cbmNvbnN0IERhdGVUaW1lOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4M0QsXG4gIHR5cGU6ICdEQVRFVElNRScsXG4gIG5hbWU6ICdEYXRlVGltZScsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAnZGF0ZXRpbWUnO1xuICB9LFxuXG4gIHdyaXRlVHlwZUluZm8oYnVmZmVyKSB7XG4gICAgYnVmZmVyLndyaXRlQnVmZmVyKFRZUEVfSU5GTyk7XG4gIH0sXG5cbiAgd3JpdGVWYWx1ZShidWZmZXIsIHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIERhdGUgfCBudWxsO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50OCgweDAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZGF5czogbnVtYmVyLCBtaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgICBpZiAob3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIGRheXMgPSBFUE9DSF9EQVRFLnVudGlsKExvY2FsRGF0ZS5vZih2YWx1ZS5nZXRVVENGdWxsWWVhcigpLCB2YWx1ZS5nZXRVVENNb250aCgpICsgMSwgdmFsdWUuZ2V0VVRDRGF0ZSgpKSwgQ2hyb25vVW5pdC5EQVlTKTtcbiAgICAgIG1pbGxpc2Vjb25kcyA9ICgodmFsdWUuZ2V0VVRDSG91cnMoKSAqIDYwICsgdmFsdWUuZ2V0VVRDTWludXRlcygpKSAqIDYwICsgdmFsdWUuZ2V0VVRDU2Vjb25kcygpKSAqIDEwMDAgKyB2YWx1ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF5cyA9IEVQT0NIX0RBVEUudW50aWwoTG9jYWxEYXRlLm9mKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCkgKyAxLCB2YWx1ZS5nZXREYXRlKCkpLCBDaHJvbm9Vbml0LkRBWVMpO1xuICAgICAgbWlsbGlzZWNvbmRzID0gKCh2YWx1ZS5nZXRIb3VycygpICogNjAgKyB2YWx1ZS5nZXRNaW51dGVzKCkpICogNjAgKyB2YWx1ZS5nZXRTZWNvbmRzKCkpICogMTAwMCArIHZhbHVlLmdldE1pbGxpc2Vjb25kcygpO1xuICAgIH1cblxuICAgIGxldCB0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCA9IE1hdGgucm91bmQobWlsbGlzZWNvbmRzIC8gKDMgKyAoMSAvIDMpKSk7XG5cbiAgICAvLyAyNTkyMDAwMCBlcXVhbHMgb25lIGRheVxuICAgIGlmICh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCA9PT0gMjU5MjAwMDApIHtcbiAgICAgIGRheXMgKz0gMTtcbiAgICAgIHRocmVlSHVuZHJlZHRoc09mU2Vjb25kID0gMDtcbiAgICB9XG5cbiAgICBidWZmZXIud3JpdGVVSW50OCgweDA4KTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKGRheXMpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKHRocmVlSHVuZHJlZHRoc09mU2Vjb25kKTtcbiAgfSxcblxuICAvLyBUT0RPOiB0eXBlICdhbnknIG5lZWRzIHRvIGJlIHJldmlzaXRlZC5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlOiBhbnksIGNvbGxhdGlvbiwgb3B0aW9ucyk6IG51bGwgfCBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHZhbHVlIGFzIERhdGU7XG5cbiAgICBsZXQgeWVhcjtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnVzZVVUQykge1xuICAgICAgeWVhciA9IHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIGlmICh5ZWFyIDwgMTc1MyB8fCB5ZWFyID4gOTk5OSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT3V0IG9mIHJhbmdlLicpO1xuICAgIH1cblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgZGF0ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVUaW1lO1xubW9kdWxlLmV4cG9ydHMgPSBEYXRlVGltZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQXNELFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRXRELE1BQU1HLFVBQVUsR0FBR0MsZUFBUyxDQUFDQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMvQyxNQUFNQyxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLGtCQUFTLENBQUNDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVuRCxNQUFNQyxRQUFrQixHQUFHO0VBQ3pCRCxFQUFFLEVBQUUsSUFBSTtFQUNSRSxJQUFJLEVBQUUsVUFBVTtFQUNoQkMsSUFBSSxFQUFFLFVBQVU7RUFFaEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxVQUFVO0VBQ25CLENB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