UNPKG

tedious

Version:

A TDS driver, for connecting to MS SQLServer databases.

55 lines (53 loc) • 6.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _moneyn = _interopRequireDefault(require("./moneyn")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const SHIFT_LEFT_32 = (1 << 16) * (1 << 16); const SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32; const TYPE_INFO = Buffer.from([_moneyn.default.id, 0x08]); const Money = { id: 0x3C, type: 'MONEY', name: 'Money', declaration: function () { return 'money'; }, writeTypeInfo(buffer) { buffer.writeBuffer(TYPE_INFO); }, writeValue(buffer, parameter) { const value = parameter.value; if (value == null) { buffer.writeUInt8(0x00); return; } // The value in ten-thousandths, as a high and a low 32-bit half. const scaled = value * 10000; buffer.writeUInt8(0x08); buffer.writeInt32LE(Math.floor(scaled * SHIFT_RIGHT_32)); buffer.writeInt32LE(scaled & -1); }, validate: function (value) { if (value == null) { return null; } value = parseFloat(value); if (isNaN(value)) { throw new TypeError('Invalid number.'); } // money: -922337203685477.5808 to 922337203685477.5807 // in javascript -922337203685477.5808 === -922337203685477.6 // 922337203685477.5807 === 922337203685477.6 // javascript number doesn't have enough precision. if (value < -922337203685477.6 || value > 922337203685477.6) { throw new TypeError('Value must be between -922337203685477.5808 and 922337203685477.5807, inclusive.'); } return value; } }; var _default = exports.default = Money; module.exports = Money; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZXluIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJTSElGVF9MRUZUXzMyIiwiU0hJRlRfUklHSFRfMzIiLCJUWVBFX0lORk8iLCJCdWZmZXIiLCJmcm9tIiwiTW9uZXlOIiwiaWQiLCJNb25leSIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJ3cml0ZVR5cGVJbmZvIiwiYnVmZmVyIiwid3JpdGVCdWZmZXIiLCJ3cml0ZVZhbHVlIiwicGFyYW1ldGVyIiwidmFsdWUiLCJ3cml0ZVVJbnQ4Iiwic2NhbGVkIiwid3JpdGVJbnQzMkxFIiwiTWF0aCIsImZsb29yIiwidmFsaWRhdGUiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9tb25leS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBNb25leU4gZnJvbSAnLi9tb25leW4nO1xuXG5jb25zdCBTSElGVF9MRUZUXzMyID0gKDEgPDwgMTYpICogKDEgPDwgMTYpO1xuY29uc3QgU0hJRlRfUklHSFRfMzIgPSAxIC8gU0hJRlRfTEVGVF8zMjtcblxuY29uc3QgVFlQRV9JTkZPID0gQnVmZmVyLmZyb20oW01vbmV5Ti5pZCwgMHgwOF0pO1xuXG5jb25zdCBNb25leTogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDNDLFxuICB0eXBlOiAnTU9ORVknLFxuICBuYW1lOiAnTW9uZXknLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ21vbmV5JztcbiAgfSxcblxuICB3cml0ZVR5cGVJbmZvKGJ1ZmZlcikge1xuICAgIGJ1ZmZlci53cml0ZUJ1ZmZlcihUWVBFX0lORk8pO1xuICB9LFxuXG4gIHdyaXRlVmFsdWUoYnVmZmVyLCBwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBudW1iZXIgfCBudWxsO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50OCgweDAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUaGUgdmFsdWUgaW4gdGVuLXRob3VzYW5kdGhzLCBhcyBhIGhpZ2ggYW5kIGEgbG93IDMyLWJpdCBoYWxmLlxuICAgIGNvbnN0IHNjYWxlZCA9IHZhbHVlICogMTAwMDA7XG4gICAgYnVmZmVyLndyaXRlVUludDgoMHgwOCk7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShNYXRoLmZsb29yKHNjYWxlZCAqIFNISUZUX1JJR0hUXzMyKSk7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShzY2FsZWQgJiAtMSk7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbnVtYmVyLicpO1xuICAgIH1cbiAgICAvLyBtb25lee+8miAtOTIyMzM3MjAzNjg1NDc3LjU4MDggdG8gOTIyMzM3MjAzNjg1NDc3LjU4MDdcbiAgICAvLyBpbiBqYXZhc2NyaXB0IC05MjIzMzcyMDM2ODU0NzcuNTgwOCA9PT0gLTkyMjMzNzIwMzY4NTQ3Ny42XG4gICAgLy8gICAgICAgICAgICAgICAgOTIyMzM3MjAzNjg1NDc3LjU4MDcgPT09IDkyMjMzNzIwMzY4NTQ3Ny42XG4gICAgLy8gamF2YXNjcmlwdCBudW1iZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcmVjaXNpb24uXG4gICAgaWYgKHZhbHVlIDwgLTkyMjMzNzIwMzY4NTQ3Ny42IHx8IHZhbHVlID4gOTIyMzM3MjAzNjg1NDc3LjYpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYmV0d2VlbiAtOTIyMzM3MjAzNjg1NDc3LjU4MDggYW5kIDkyMjMzNzIwMzY4NTQ3Ny41ODA3LCBpbmNsdXNpdmUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb25leTtcbm1vZHVsZS5leHBvcnRzID0gTW9uZXk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUE4QixTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUU5QixNQUFNRyxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0MsTUFBTUMsY0FBYyxHQUFHLENBQUMsR0FBR0QsYUFBYTtBQUV4QyxNQUFNRSxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLGVBQU0sQ0FBQ0MsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRWhELE1BQU1DLEtBQWUsR0FBRztFQUN0QkQsRUFBRSxFQUFFLElBQUk7RUFDUkUsSUFBSSxFQUFFLE9BQU87RUFDYkMsSUFBSSxFQUFFLE9BQU87RUFFYkMsV0FBVyxFQUFFLFNBQUFBLENBQUEsRUFBVztJQUN0QixPQUFPLE9BQU87RUFDaEIsQ0FBQztFQUVEQyxhQUFhQSxDQUFDQyxNQUFNLEVBQUU7SUFDcEJBLE1BQU0sQ0FBQ0MsV0FBVyxDQUFDWCxTQUFTLENBQUM7RUFDL0IsQ0FBQztFQUVEWSxVQUFVQSxDQUFDRixNQUFNLEVBQUVHLFNBQVMsRUFBRTtJQUM1QixNQUFNQyxLQUFLLEdBQUdELFNBQVMsQ0FBQ0MsS0FBc0I7SUFDOUMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQkosTUFBTSxDQUFDSyxVQUFVLENBQUMsSUFBSSxDQUFDO01BQ3ZCO0lBQ0Y7O0lBRUE7SUFDQSxNQUFNQyxNQUFNLEdBQUdGLEtBQUssR0FBRyxLQUFLO0lBQzVCSixNQUFNLENBQUNLLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDdkJMLE1BQU0sQ0FBQ08sWUFBWSxDQUFDQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxHQUFHakIsY0FBYyxDQUFDLENBQUM7SUFDeERXLE1BQU0sQ0FBQ08sWUFBWSxDQUFDRCxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDbEMsQ0FBQztFQUVESSxRQUFRLEVBQUUsU0FBQUEsQ0FBU04sS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBQ0FBLEtBQUssR0FBR08sVUFBVSxDQUFDUCxLQUFLLENBQUM7SUFDekIsSUFBSVEsS0FBSyxDQUFDUixLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlTLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSVQsS0FBSyxHQUFHLENBQUMsaUJBQWlCLElBQUlBLEtBQUssR0FBRyxpQkFBaUIsRUFBRTtNQUMzRCxNQUFNLElBQUlTLFNBQVMsQ0FBQyxrRkFBa0YsQ0FBQztJQUN6RztJQUVBLE9BQU9ULEtBQUs7RUFDZDtBQUNGLENBQUM7QUFBQyxJQUFBVSxRQUFBLEdBQUFDLE9BQUEsQ0FBQTVCLE9BQUEsR0FFYVEsS0FBSztBQUNwQnFCLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHcEIsS0FBSyIsImlnbm9yZUxpc3QiOltdfQ==