tedious
Version:
A TDS driver, for connecting to MS SQLServer databases.
51 lines (48 loc) • 5.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _token = require("./token");
var _helpers = require("./helpers");
// s2.2.7.20
function tabNameParser(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 tableNames = [];
// Table names are sent as their individual parts. (While TDS versions
// before 7.1 Revision 1 sent each name as a single string, all servers
// that speak TDS 7.1 or newer use the multi-part format.)
while (offset < end) {
let numberOfTableNameParts;
({
offset,
value: numberOfTableNameParts
} = (0, _helpers.readUInt8)(buf, offset));
const tableName = [];
for (let i = 0; i < numberOfTableNameParts; i++) {
let tableNamePart;
({
offset,
value: tableNamePart
} = (0, _helpers.readUsVarChar)(buf, offset));
tableName.push(tableNamePart);
}
tableNames.push(tableName);
}
if (offset !== end) {
throw new Error('Malformed TABNAME token');
}
return new _helpers.Result(new _token.TabNameToken(tableNames), offset);
}
var _default = exports.default = tabNameParser;
module.exports = tabNameParser;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJ0YWJOYW1lUGFyc2VyIiwiYnVmIiwib2Zmc2V0IiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwiZW5kIiwidGFibGVOYW1lcyIsIm51bWJlck9mVGFibGVOYW1lUGFydHMiLCJyZWFkVUludDgiLCJ0YWJsZU5hbWUiLCJpIiwidGFibGVOYW1lUGFydCIsInJlYWRVc1ZhckNoYXIiLCJwdXNoIiwiRXJyb3IiLCJSZXN1bHQiLCJUYWJOYW1lVG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3RhYm5hbWUtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHMyLjIuNy4yMFxuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgVGFiTmFtZVRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRVSW50MTZMRSwgcmVhZFVJbnQ4LCByZWFkVXNWYXJDaGFyLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5mdW5jdGlvbiB0YWJOYW1lUGFyc2VyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8VGFiTmFtZVRva2VuPiB7XG4gIC8vIGxlbmd0aFxuICBsZXQgdG9rZW5MZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRva2VuTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIHRva2VuTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyB0b2tlbkxlbmd0aCk7XG4gIH1cblxuICBjb25zdCBlbmQgPSBvZmZzZXQgKyB0b2tlbkxlbmd0aDtcbiAgY29uc3QgdGFibGVOYW1lczogc3RyaW5nW11bXSA9IFtdO1xuXG4gIC8vIFRhYmxlIG5hbWVzIGFyZSBzZW50IGFzIHRoZWlyIGluZGl2aWR1YWwgcGFydHMuIChXaGlsZSBURFMgdmVyc2lvbnNcbiAgLy8gYmVmb3JlIDcuMSBSZXZpc2lvbiAxIHNlbnQgZWFjaCBuYW1lIGFzIGEgc2luZ2xlIHN0cmluZywgYWxsIHNlcnZlcnNcbiAgLy8gdGhhdCBzcGVhayBURFMgNy4xIG9yIG5ld2VyIHVzZSB0aGUgbXVsdGktcGFydCBmb3JtYXQuKVxuICB3aGlsZSAob2Zmc2V0IDwgZW5kKSB7XG4gICAgbGV0IG51bWJlck9mVGFibGVOYW1lUGFydHM7XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZTogbnVtYmVyT2ZUYWJsZU5hbWVQYXJ0cyB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICBjb25zdCB0YWJsZU5hbWU6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJPZlRhYmxlTmFtZVBhcnRzOyBpKyspIHtcbiAgICAgIGxldCB0YWJsZU5hbWVQYXJ0O1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdGFibGVOYW1lUGFydCB9ID0gcmVhZFVzVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gICAgICB0YWJsZU5hbWUucHVzaCh0YWJsZU5hbWVQYXJ0KTtcbiAgICB9XG5cbiAgICB0YWJsZU5hbWVzLnB1c2godGFibGVOYW1lKTtcbiAgfVxuXG4gIGlmIChvZmZzZXQgIT09IGVuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWFsZm9ybWVkIFRBQk5BTUUgdG9rZW4nKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBUYWJOYW1lVG9rZW4odGFibGVOYW1lcyksIG9mZnNldCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRhYk5hbWVQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IHRhYk5hbWVQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUpBOztBQU1BLFNBQVNFLGFBQWFBLENBQUNDLEdBQVcsRUFBRUMsTUFBYyxFQUFFQyxRQUF1QixFQUF3QjtFQUNqRztFQUNBLElBQUlDLFdBQVc7RUFDZixDQUFDO0lBQUVGLE1BQU07SUFBRUcsS0FBSyxFQUFFRDtFQUFZLENBQUMsR0FBRyxJQUFBRSxxQkFBWSxFQUFDTCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUUzRCxJQUFJRCxHQUFHLENBQUNNLE1BQU0sR0FBR0wsTUFBTSxHQUFHRSxXQUFXLEVBQUU7SUFDckMsTUFBTSxJQUFJSSwyQkFBa0IsQ0FBQ04sTUFBTSxHQUFHRSxXQUFXLENBQUM7RUFDcEQ7RUFFQSxNQUFNSyxHQUFHLEdBQUdQLE1BQU0sR0FBR0UsV0FBVztFQUNoQyxNQUFNTSxVQUFzQixHQUFHLEVBQUU7O0VBRWpDO0VBQ0E7RUFDQTtFQUNBLE9BQU9SLE1BQU0sR0FBR08sR0FBRyxFQUFFO0lBQ25CLElBQUlFLHNCQUFzQjtJQUMxQixDQUFDO01BQUVULE1BQU07TUFBRUcsS0FBSyxFQUFFTTtJQUF1QixDQUFDLEdBQUcsSUFBQUMsa0JBQVMsRUFBQ1gsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFbkUsTUFBTVcsU0FBbUIsR0FBRyxFQUFFO0lBQzlCLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHSCxzQkFBc0IsRUFBRUcsQ0FBQyxFQUFFLEVBQUU7TUFDL0MsSUFBSUMsYUFBYTtNQUNqQixDQUFDO1FBQUViLE1BQU07UUFBRUcsS0FBSyxFQUFFVTtNQUFjLENBQUMsR0FBRyxJQUFBQyxzQkFBYSxFQUFDZixHQUFHLEVBQUVDLE1BQU0sQ0FBQztNQUU5RFcsU0FBUyxDQUFDSSxJQUFJLENBQUNGLGFBQWEsQ0FBQztJQUMvQjtJQUVBTCxVQUFVLENBQUNPLElBQUksQ0FBQ0osU0FBUyxDQUFDO0VBQzVCO0VBRUEsSUFBSVgsTUFBTSxLQUFLTyxHQUFHLEVBQUU7SUFDbEIsTUFBTSxJQUFJUyxLQUFLLENBQUMseUJBQXlCLENBQUM7RUFDNUM7RUFFQSxPQUFPLElBQUlDLGVBQU0sQ0FBQyxJQUFJQyxtQkFBWSxDQUFDVixVQUFVLENBQUMsRUFBRVIsTUFBTSxDQUFDO0FBQ3pEO0FBQUMsSUFBQW1CLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWN2QixhQUFhO0FBQzVCd0IsTUFBTSxDQUFDRixPQUFPLEdBQUd0QixhQUFhIiwiaWdub3JlTGlzdCI6W119