UNPKG

tedious

Version:

A TDS driver, for connecting to MS SQLServer databases.

36 lines (34 loc) • 4.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NBCRowTokenReader = void 0; var _token = require("./token"); var _helpers = require("./helpers"); var _rowTokenParser = require("./row-token-parser"); // s2.2.7.13 (introduced in TDS 7.3.B) /** * Reads an `NBCROW` token - a `ROW` token prefixed with a bitmap that flags * `null` columns, which then have no data. */ class NBCRowTokenReader extends _rowTokenParser.ColumnValuesReader { constructor() { super(); this.nullBitmap = undefined; } read(parser) { if (this.nullBitmap === undefined) { const start = parser.position; const end = start + Math.ceil(parser.colMetadata.length / 8); if (parser.buffer.length < end) { throw new _helpers.NotEnoughDataError(end); } this.nullBitmap = parser.buffer.subarray(start, end); parser.position = end; } this.readColumns(parser, this.nullBitmap); return new _token.NBCRowToken(parser.options.useColumnNames ? (0, _rowTokenParser.toColumnsMap)(this.columns) : this.columns); } } exports.NBCRowTokenReader = NBCRowTokenReader; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJfcm93VG9rZW5QYXJzZXIiLCJOQkNSb3dUb2tlblJlYWRlciIsIkNvbHVtblZhbHVlc1JlYWRlciIsImNvbnN0cnVjdG9yIiwibnVsbEJpdG1hcCIsInVuZGVmaW5lZCIsInJlYWQiLCJwYXJzZXIiLCJzdGFydCIsInBvc2l0aW9uIiwiZW5kIiwiTWF0aCIsImNlaWwiLCJjb2xNZXRhZGF0YSIsImxlbmd0aCIsImJ1ZmZlciIsIk5vdEVub3VnaERhdGFFcnJvciIsInN1YmFycmF5IiwicmVhZENvbHVtbnMiLCJOQkNSb3dUb2tlbiIsIm9wdGlvbnMiLCJ1c2VDb2x1bW5OYW1lcyIsInRvQ29sdW1uc01hcCIsImNvbHVtbnMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL25iY3Jvdy10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gczIuMi43LjEzIChpbnRyb2R1Y2VkIGluIFREUyA3LjMuQilcblxuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFRva2VuUmVhZGVyIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgTkJDUm93VG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBDb2x1bW5WYWx1ZXNSZWFkZXIsIHRvQ29sdW1uc01hcCB9IGZyb20gJy4vcm93LXRva2VuLXBhcnNlcic7XG5cbi8qKlxuICogUmVhZHMgYW4gYE5CQ1JPV2AgdG9rZW4gLSBhIGBST1dgIHRva2VuIHByZWZpeGVkIHdpdGggYSBiaXRtYXAgdGhhdCBmbGFnc1xuICogYG51bGxgIGNvbHVtbnMsIHdoaWNoIHRoZW4gaGF2ZSBubyBkYXRhLlxuICovXG5leHBvcnQgY2xhc3MgTkJDUm93VG9rZW5SZWFkZXIgZXh0ZW5kcyBDb2x1bW5WYWx1ZXNSZWFkZXIgaW1wbGVtZW50cyBUb2tlblJlYWRlciB7XG4gIGRlY2xhcmUgbnVsbEJpdG1hcDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5udWxsQml0bWFwID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVhZChwYXJzZXI6IFBhcnNlcik6IE5CQ1Jvd1Rva2VuIHtcbiAgICBpZiAodGhpcy5udWxsQml0bWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VyLnBvc2l0aW9uO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBNYXRoLmNlaWwocGFyc2VyLmNvbE1ldGFkYXRhLmxlbmd0aCAvIDgpO1xuICAgICAgaWYgKHBhcnNlci5idWZmZXIubGVuZ3RoIDwgZW5kKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3IoZW5kKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5udWxsQml0bWFwID0gcGFyc2VyLmJ1ZmZlci5zdWJhcnJheShzdGFydCwgZW5kKTtcbiAgICAgIHBhcnNlci5wb3NpdGlvbiA9IGVuZDtcbiAgICB9XG5cbiAgICB0aGlzLnJlYWRDb2x1bW5zKHBhcnNlciwgdGhpcy5udWxsQml0bWFwKTtcbiAgICByZXR1cm4gbmV3IE5CQ1Jvd1Rva2VuKHBhcnNlci5vcHRpb25zLnVzZUNvbHVtbk5hbWVzID8gdG9Db2x1bW5zTWFwKHRoaXMuY29sdW1ucykgOiB0aGlzLmNvbHVtbnMpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUlBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUYsT0FBQTtBQU5BOztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUcsaUJBQWlCLFNBQVNDLGtDQUFrQixDQUF3QjtFQUcvRUMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLENBQUNDLFVBQVUsR0FBR0MsU0FBUztFQUM3QjtFQUVBQyxJQUFJQSxDQUFDQyxNQUFjLEVBQWU7SUFDaEMsSUFBSSxJQUFJLENBQUNILFVBQVUsS0FBS0MsU0FBUyxFQUFFO01BQ2pDLE1BQU1HLEtBQUssR0FBR0QsTUFBTSxDQUFDRSxRQUFRO01BQzdCLE1BQU1DLEdBQUcsR0FBR0YsS0FBSyxHQUFHRyxJQUFJLENBQUNDLElBQUksQ0FBQ0wsTUFBTSxDQUFDTSxXQUFXLENBQUNDLE1BQU0sR0FBRyxDQUFDLENBQUM7TUFDNUQsSUFBSVAsTUFBTSxDQUFDUSxNQUFNLENBQUNELE1BQU0sR0FBR0osR0FBRyxFQUFFO1FBQzlCLE1BQU0sSUFBSU0sMkJBQWtCLENBQUNOLEdBQUcsQ0FBQztNQUNuQztNQUVBLElBQUksQ0FBQ04sVUFBVSxHQUFHRyxNQUFNLENBQUNRLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDVCxLQUFLLEVBQUVFLEdBQUcsQ0FBQztNQUNwREgsTUFBTSxDQUFDRSxRQUFRLEdBQUdDLEdBQUc7SUFDdkI7SUFFQSxJQUFJLENBQUNRLFdBQVcsQ0FBQ1gsTUFBTSxFQUFFLElBQUksQ0FBQ0gsVUFBVSxDQUFDO0lBQ3pDLE9BQU8sSUFBSWUsa0JBQVcsQ0FBQ1osTUFBTSxDQUFDYSxPQUFPLENBQUNDLGNBQWMsR0FBRyxJQUFBQyw0QkFBWSxFQUFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxPQUFPLENBQUM7RUFDbkc7QUFDRjtBQUFDQyxPQUFBLENBQUF2QixpQkFBQSxHQUFBQSxpQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==