UNPKG

tedious

Version:

A TDS driver, for connecting to MS SQLServer databases.

68 lines (66 loc) • 6.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _token = require("./token"); var _helpers = require("./helpers"); // s2.2.7.3 const STATUS = { EXPRESSION: 0x04, KEY: 0x08, HIDDEN: 0x10, DIFFERENT_NAME: 0x20 }; function colInfoParser(buf, offset, _options) { // length let tokenLength; ({ offset, value: tokenLength } = (0, _helpers.readUInt16LE)(buf, offset)); if (buf.length < offset + tokenLength) { throw new _helpers.NotEnoughDataError(offset + tokenLength); } const end = offset + tokenLength; const columns = []; while (offset < end) { let colNum; ({ offset, value: colNum } = (0, _helpers.readUInt8)(buf, offset)); let tableNum; ({ offset, value: tableNum } = (0, _helpers.readUInt8)(buf, offset)); let status; ({ offset, value: status } = (0, _helpers.readUInt8)(buf, offset)); let colName; if (status & STATUS.DIFFERENT_NAME) { ({ offset, value: colName } = (0, _helpers.readBVarChar)(buf, offset)); } columns.push({ colNum: colNum, tableNum: tableNum, expression: !!(status & STATUS.EXPRESSION), key: !!(status & STATUS.KEY), hidden: !!(status & STATUS.HIDDEN), colName: colName }); } if (offset !== end) { throw new Error('Malformed COLINFO token'); } return new _helpers.Result(new _token.ColInfoToken(columns), offset); } var _default = exports.default = colInfoParser; module.exports = colInfoParser; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJTVEFUVVMiLCJFWFBSRVNTSU9OIiwiS0VZIiwiSElEREVOIiwiRElGRkVSRU5UX05BTUUiLCJjb2xJbmZvUGFyc2VyIiwiYnVmIiwib2Zmc2V0IiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwiZW5kIiwiY29sdW1ucyIsImNvbE51bSIsInJlYWRVSW50OCIsInRhYmxlTnVtIiwic3RhdHVzIiwiY29sTmFtZSIsInJlYWRCVmFyQ2hhciIsInB1c2giLCJleHByZXNzaW9uIiwia2V5IiwiaGlkZGVuIiwiRXJyb3IiLCJSZXN1bHQiLCJDb2xJbmZvVG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2NvbGluZm8tdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHMyLjIuNy4zXG5pbXBvcnQgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuXG5pbXBvcnQgeyBDb2xJbmZvVG9rZW4sIHR5cGUgQ29sdW1uSW5mbyB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkQlZhckNoYXIsIHJlYWRVSW50MTZMRSwgcmVhZFVJbnQ4LCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5jb25zdCBTVEFUVVMgPSB7XG4gIEVYUFJFU1NJT046IDB4MDQsXG4gIEtFWTogMHgwOCxcbiAgSElEREVOOiAweDEwLFxuICBESUZGRVJFTlRfTkFNRTogMHgyMFxufTtcblxuZnVuY3Rpb24gY29sSW5mb1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIF9vcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PENvbEluZm9Ub2tlbj4ge1xuICAvLyBsZW5ndGhcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgZW5kID0gb2Zmc2V0ICsgdG9rZW5MZW5ndGg7XG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbkluZm9bXSA9IFtdO1xuXG4gIHdoaWxlIChvZmZzZXQgPCBlbmQpIHtcbiAgICBsZXQgY29sTnVtO1xuICAgICh7IG9mZnNldCwgdmFsdWU6IGNvbE51bSB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICBsZXQgdGFibGVOdW07XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZTogdGFibGVOdW0gfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgbGV0IHN0YXR1cztcbiAgICAoeyBvZmZzZXQsIHZhbHVlOiBzdGF0dXMgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgbGV0IGNvbE5hbWU7XG4gICAgaWYgKHN0YXR1cyAmIFNUQVRVUy5ESUZGRVJFTlRfTkFNRSkge1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sTmFtZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG4gICAgfVxuXG4gICAgY29sdW1ucy5wdXNoKHtcbiAgICAgIGNvbE51bTogY29sTnVtLFxuICAgICAgdGFibGVOdW06IHRhYmxlTnVtLFxuICAgICAgZXhwcmVzc2lvbjogISEoc3RhdHVzICYgU1RBVFVTLkVYUFJFU1NJT04pLFxuICAgICAga2V5OiAhIShzdGF0dXMgJiBTVEFUVVMuS0VZKSxcbiAgICAgIGhpZGRlbjogISEoc3RhdHVzICYgU1RBVFVTLkhJRERFTiksXG4gICAgICBjb2xOYW1lOiBjb2xOYW1lXG4gICAgfSk7XG4gIH1cblxuICBpZiAob2Zmc2V0ICE9PSBlbmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBDT0xJTkZPIHRva2VuJyk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChuZXcgQ29sSW5mb1Rva2VuKGNvbHVtbnMpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb2xJbmZvUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBjb2xJbmZvUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFKQTs7QUFNQSxNQUFNRSxNQUFNLEdBQUc7RUFDYkMsVUFBVSxFQUFFLElBQUk7RUFDaEJDLEdBQUcsRUFBRSxJQUFJO0VBQ1RDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLGNBQWMsRUFBRTtBQUNsQixDQUFDO0FBRUQsU0FBU0MsYUFBYUEsQ0FBQ0MsR0FBVyxFQUFFQyxNQUFjLEVBQUVDLFFBQXVCLEVBQXdCO0VBQ2pHO0VBQ0EsSUFBSUMsV0FBVztFQUNmLENBQUM7SUFBRUYsTUFBTTtJQUFFRyxLQUFLLEVBQUVEO0VBQVksQ0FBQyxHQUFHLElBQUFFLHFCQUFZLEVBQUNMLEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRTNELElBQUlELEdBQUcsQ0FBQ00sTUFBTSxHQUFHTCxNQUFNLEdBQUdFLFdBQVcsRUFBRTtJQUNyQyxNQUFNLElBQUlJLDJCQUFrQixDQUFDTixNQUFNLEdBQUdFLFdBQVcsQ0FBQztFQUNwRDtFQUVBLE1BQU1LLEdBQUcsR0FBR1AsTUFBTSxHQUFHRSxXQUFXO0VBQ2hDLE1BQU1NLE9BQXFCLEdBQUcsRUFBRTtFQUVoQyxPQUFPUixNQUFNLEdBQUdPLEdBQUcsRUFBRTtJQUNuQixJQUFJRSxNQUFNO0lBQ1YsQ0FBQztNQUFFVCxNQUFNO01BQUVHLEtBQUssRUFBRU07SUFBTyxDQUFDLEdBQUcsSUFBQUMsa0JBQVMsRUFBQ1gsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFbkQsSUFBSVcsUUFBUTtJQUNaLENBQUM7TUFBRVgsTUFBTTtNQUFFRyxLQUFLLEVBQUVRO0lBQVMsQ0FBQyxHQUFHLElBQUFELGtCQUFTLEVBQUNYLEdBQUcsRUFBRUMsTUFBTSxDQUFDO0lBRXJELElBQUlZLE1BQU07SUFDVixDQUFDO01BQUVaLE1BQU07TUFBRUcsS0FBSyxFQUFFUztJQUFPLENBQUMsR0FBRyxJQUFBRixrQkFBUyxFQUFDWCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztJQUVuRCxJQUFJYSxPQUFPO0lBQ1gsSUFBSUQsTUFBTSxHQUFHbkIsTUFBTSxDQUFDSSxjQUFjLEVBQUU7TUFDbEMsQ0FBQztRQUFFRyxNQUFNO1FBQUVHLEtBQUssRUFBRVU7TUFBUSxDQUFDLEdBQUcsSUFBQUMscUJBQVksRUFBQ2YsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFDekQ7SUFFQVEsT0FBTyxDQUFDTyxJQUFJLENBQUM7TUFDWE4sTUFBTSxFQUFFQSxNQUFNO01BQ2RFLFFBQVEsRUFBRUEsUUFBUTtNQUNsQkssVUFBVSxFQUFFLENBQUMsRUFBRUosTUFBTSxHQUFHbkIsTUFBTSxDQUFDQyxVQUFVLENBQUM7TUFDMUN1QixHQUFHLEVBQUUsQ0FBQyxFQUFFTCxNQUFNLEdBQUduQixNQUFNLENBQUNFLEdBQUcsQ0FBQztNQUM1QnVCLE1BQU0sRUFBRSxDQUFDLEVBQUVOLE1BQU0sR0FBR25CLE1BQU0sQ0FBQ0csTUFBTSxDQUFDO01BQ2xDaUIsT0FBTyxFQUFFQTtJQUNYLENBQUMsQ0FBQztFQUNKO0VBRUEsSUFBSWIsTUFBTSxLQUFLTyxHQUFHLEVBQUU7SUFDbEIsTUFBTSxJQUFJWSxLQUFLLENBQUMseUJBQXlCLENBQUM7RUFDNUM7RUFFQSxPQUFPLElBQUlDLGVBQU0sQ0FBQyxJQUFJQyxtQkFBWSxDQUFDYixPQUFPLENBQUMsRUFBRVIsTUFBTSxDQUFDO0FBQ3REO0FBQUMsSUFBQXNCLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWMxQixhQUFhO0FBQzVCMkIsTUFBTSxDQUFDRixPQUFPLEdBQUd6QixhQUFhIiwiaWdub3JlTGlzdCI6W119