tedious
Version:
A TDS driver, for connecting to MS SQLServer databases.
64 lines (63 loc) • 7.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _temporal = require("./temporal");
const DateTimeOffset = {
id: 0x2B,
type: 'DATETIMEOFFSETN',
name: 'DateTimeOffset',
declaration: function (parameter) {
return 'datetimeoffset(' + this.resolveScale(parameter) + ')';
},
resolveScale: function (parameter) {
if (parameter.scale != null) {
return parameter.scale;
} else if (parameter.value === null) {
return 0;
} else {
return 7;
}
},
writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeUInt8(parameter.scale);
},
writeValue(buffer, parameter) {
const value = parameter.value;
if (value == null) {
buffer.writeUInt8(0x00);
return;
}
buffer.writeUInt8((0, _temporal.timeLength)(parameter.scale) + 5);
(0, _temporal.writeTimeOfDay)(buffer, value, parameter.scale, true);
buffer.writeUInt24LE((0, _temporal.daysSinceYearOne)(value, true));
buffer.writeInt16LE(-value.getTimezoneOffset());
},
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 < 1 || year > 9999) {
throw new TypeError('Out of range.');
}
if (isNaN(value)) {
throw new TypeError('Invalid date.');
}
return value;
}
};
var _default = exports.default = DateTimeOffset;
module.exports = DateTimeOffset;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVtcG9yYWwiLCJyZXF1aXJlIiwiRGF0ZVRpbWVPZmZzZXQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJyZXNvbHZlU2NhbGUiLCJzY2FsZSIsInZhbHVlIiwid3JpdGVUeXBlSW5mbyIsImJ1ZmZlciIsIndyaXRlVUludDgiLCJ3cml0ZVZhbHVlIiwidGltZUxlbmd0aCIsIndyaXRlVGltZU9mRGF5Iiwid3JpdGVVSW50MjRMRSIsImRheXNTaW5jZVllYXJPbmUiLCJ3cml0ZUludDE2TEUiLCJnZXRUaW1lem9uZU9mZnNldCIsInZhbGlkYXRlIiwiY29sbGF0aW9uIiwib3B0aW9ucyIsIkRhdGUiLCJwYXJzZSIsInllYXIiLCJ1c2VVVEMiLCJnZXRVVENGdWxsWWVhciIsImdldEZ1bGxZZWFyIiwiVHlwZUVycm9yIiwiaXNOYU4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGF0ZXRpbWVvZmZzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBkYXlzU2luY2VZZWFyT25lLCB0aW1lTGVuZ3RoLCB3cml0ZVRpbWVPZkRheSwgdHlwZSBUZW1wb3JhbFZhbHVlIH0gZnJvbSAnLi90ZW1wb3JhbCc7XG5cbmNvbnN0IERhdGVUaW1lT2Zmc2V0OiBEYXRhVHlwZSAmIHsgcmVzb2x2ZVNjYWxlOiBOb25OdWxsYWJsZTxEYXRhVHlwZVsncmVzb2x2ZVNjYWxlJ10+IH0gPSB7XG4gIGlkOiAweDJCLFxuICB0eXBlOiAnREFURVRJTUVPRkZTRVROJyxcbiAgbmFtZTogJ0RhdGVUaW1lT2Zmc2V0JyxcbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIHJldHVybiAnZGF0ZXRpbWVvZmZzZXQoJyArICh0aGlzLnJlc29sdmVTY2FsZShwYXJhbWV0ZXIpKSArICcpJztcbiAgfSxcbiAgcmVzb2x2ZVNjYWxlOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBpZiAocGFyYW1ldGVyLnNjYWxlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIuc2NhbGU7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gNztcbiAgICB9XG4gIH0sXG5cbiAgd3JpdGVUeXBlSW5mbyhidWZmZXIsIHBhcmFtZXRlcikge1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHBhcmFtZXRlci5zY2FsZSEpO1xuICB9LFxuXG4gIHdyaXRlVmFsdWUoYnVmZmVyLCBwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBUZW1wb3JhbFZhbHVlIHwgbnVsbDtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoMHgwMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYnVmZmVyLndyaXRlVUludDgodGltZUxlbmd0aChwYXJhbWV0ZXIuc2NhbGUpICsgNSk7XG4gICAgd3JpdGVUaW1lT2ZEYXkoYnVmZmVyLCB2YWx1ZSwgcGFyYW1ldGVyLnNjYWxlISwgdHJ1ZSk7XG4gICAgYnVmZmVyLndyaXRlVUludDI0TEUoZGF5c1NpbmNlWWVhck9uZSh2YWx1ZSwgdHJ1ZSkpO1xuICAgIGJ1ZmZlci53cml0ZUludDE2TEUoLXZhbHVlLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZTogYW55LCBjb2xsYXRpb24sIG9wdGlvbnMpOiBudWxsIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgdmFsdWUgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgdmFsdWUgPSB2YWx1ZSBhcyBEYXRlO1xuXG4gICAgbGV0IHllYXI7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIHllYXIgPSB2YWx1ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICBpZiAoeWVhciA8IDEgfHwgeWVhciA+IDk5OTkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dCBvZiByYW5nZS4nKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGRhdGUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZU9mZnNldDtcbm1vZHVsZS5leHBvcnRzID0gRGF0ZVRpbWVPZmZzZXQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFNBQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLGNBQWtGLEdBQUc7RUFDekZDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxpQkFBaUI7RUFDdkJDLElBQUksRUFBRSxnQkFBZ0I7RUFDdEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDL0IsT0FBTyxpQkFBaUIsR0FBSSxJQUFJLENBQUNDLFlBQVksQ0FBQ0QsU0FBUyxDQUFFLEdBQUcsR0FBRztFQUNqRSxDQUFDO0VBQ0RDLFlBQVksRUFBRSxTQUFBQSxDQUFTRCxTQUFTLEVBQUU7SUFDaEMsSUFBSUEsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9GLFNBQVMsQ0FBQ0UsS0FBSztJQUN4QixDQUFDLE1BQU0sSUFBSUYsU0FBUyxDQUFDRyxLQUFLLEtBQUssSUFBSSxFQUFFO01BQ25DLE9BQU8sQ0FBQztJQUNWLENBQUMsTUFBTTtNQUNMLE9BQU8sQ0FBQztJQUNWO0VBQ0YsQ0FBQztFQUVEQyxhQUFhQSxDQUFDQyxNQUFNLEVBQUVMLFNBQVMsRUFBRTtJQUMvQkssTUFBTSxDQUFDQyxVQUFVLENBQUMsSUFBSSxDQUFDVixFQUFFLENBQUM7SUFDMUJTLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDTixTQUFTLENBQUNFLEtBQU0sQ0FBQztFQUNyQyxDQUFDO0VBRURLLFVBQVVBLENBQUNGLE1BQU0sRUFBRUwsU0FBUyxFQUFFO0lBQzVCLE1BQU1HLEtBQUssR0FBR0gsU0FBUyxDQUFDRyxLQUE2QjtJQUNyRCxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCRSxNQUFNLENBQUNDLFVBQVUsQ0FBQyxJQUFJLENBQUM7TUFDdkI7SUFDRjtJQUVBRCxNQUFNLENBQUNDLFVBQVUsQ0FBQyxJQUFBRSxvQkFBVSxFQUFDUixTQUFTLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxJQUFBTyx3QkFBYyxFQUFDSixNQUFNLEVBQUVGLEtBQUssRUFBRUgsU0FBUyxDQUFDRSxLQUFLLEVBQUcsSUFBSSxDQUFDO0lBQ3JERyxNQUFNLENBQUNLLGFBQWEsQ0FBQyxJQUFBQywwQkFBZ0IsRUFBQ1IsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ERSxNQUFNLENBQUNPLFlBQVksQ0FBQyxDQUFDVCxLQUFLLENBQUNVLGlCQUFpQixDQUFDLENBQUMsQ0FBQztFQUNqRCxDQUFDO0VBRURDLFFBQVEsRUFBRSxTQUFBQSxDQUFTWCxLQUFVLEVBQUVZLFNBQVMsRUFBRUMsT0FBTyxFQUFpQjtJQUNoRSxJQUFJYixLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxFQUFFQSxLQUFLLFlBQVljLElBQUksQ0FBQyxFQUFFO01BQzVCZCxLQUFLLEdBQUcsSUFBSWMsSUFBSSxDQUFDQSxJQUFJLENBQUNDLEtBQUssQ0FBQ2YsS0FBSyxDQUFDLENBQUM7SUFDckM7SUFFQUEsS0FBSyxHQUFHQSxLQUFhO0lBRXJCLElBQUlnQixJQUFJO0lBQ1IsSUFBSUgsT0FBTyxJQUFJQSxPQUFPLENBQUNJLE1BQU0sRUFBRTtNQUM3QkQsSUFBSSxHQUFHaEIsS0FBSyxDQUFDa0IsY0FBYyxDQUFDLENBQUM7SUFDL0IsQ0FBQyxNQUFNO01BQ0xGLElBQUksR0FBR2hCLEtBQUssQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDO0lBQzVCO0lBRUEsSUFBSUgsSUFBSSxHQUFHLENBQUMsSUFBSUEsSUFBSSxHQUFHLElBQUksRUFBRTtNQUMzQixNQUFNLElBQUlJLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFDdEM7SUFFQSxJQUFJQyxLQUFLLENBQUNyQixLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlvQixTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ3RDO0lBRUEsT0FBT3BCLEtBQUs7RUFDZDtBQUNGLENBQUM7QUFBQyxJQUFBc0IsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYWhDLGNBQWM7QUFDN0JpQyxNQUFNLENBQUNGLE9BQU8sR0FBRy9CLGNBQWMiLCJpZ25vcmVMaXN0IjpbXX0=