Files
server_debian_macro/node_modules/tedious/lib/token/stream-parser.js

341 lines
38 KiB
JavaScript
Raw Normal View History

2025-02-18 22:59:07 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _token = require("./token");
var _colmetadataTokenParser = _interopRequireDefault(require("./colmetadata-token-parser"));
var _doneTokenParser = require("./done-token-parser");
var _envChangeTokenParser = _interopRequireDefault(require("./env-change-token-parser"));
var _infoerrorTokenParser = require("./infoerror-token-parser");
var _fedauthInfoParser = _interopRequireDefault(require("./fedauth-info-parser"));
var _featureExtAckParser = _interopRequireDefault(require("./feature-ext-ack-parser"));
var _loginackTokenParser = _interopRequireDefault(require("./loginack-token-parser"));
var _orderTokenParser = _interopRequireDefault(require("./order-token-parser"));
var _returnstatusTokenParser = _interopRequireDefault(require("./returnstatus-token-parser"));
var _returnvalueTokenParser = _interopRequireDefault(require("./returnvalue-token-parser"));
var _rowTokenParser = _interopRequireDefault(require("./row-token-parser"));
var _nbcrowTokenParser = _interopRequireDefault(require("./nbcrow-token-parser"));
var _sspiTokenParser = _interopRequireDefault(require("./sspi-token-parser"));
var _helpers = require("./helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class Parser {
debug;
colMetadata;
options;
iterator;
buffer;
position;
static async *parseTokens(iterable, debug, options, colMetadata = []) {
const parser = new Parser(iterable, debug, options);
parser.colMetadata = colMetadata;
while (true) {
try {
await parser.waitForChunk();
} catch (err) {
if (parser.position === parser.buffer.length) {
return;
}
throw err;
}
while (parser.buffer.length >= parser.position + 1) {
const type = parser.buffer.readUInt8(parser.position);
parser.position += 1;
const token = parser.readToken(type);
if (token !== undefined) {
yield token;
}
}
}
}
readToken(type) {
switch (type) {
case _token.TYPE.DONE:
{
return this.readDoneToken();
}
case _token.TYPE.DONEPROC:
{
return this.readDoneProcToken();
}
case _token.TYPE.DONEINPROC:
{
return this.readDoneInProcToken();
}
case _token.TYPE.ERROR:
{
return this.readErrorToken();
}
case _token.TYPE.INFO:
{
return this.readInfoToken();
}
case _token.TYPE.ENVCHANGE:
{
return this.readEnvChangeToken();
}
case _token.TYPE.LOGINACK:
{
return this.readLoginAckToken();
}
case _token.TYPE.RETURNSTATUS:
{
return this.readReturnStatusToken();
}
case _token.TYPE.ORDER:
{
return this.readOrderToken();
}
case _token.TYPE.FEDAUTHINFO:
{
return this.readFedAuthInfoToken();
}
case _token.TYPE.SSPI:
{
return this.readSSPIToken();
}
case _token.TYPE.COLMETADATA:
{
return this.readColMetadataToken();
}
case _token.TYPE.RETURNVALUE:
{
return this.readReturnValueToken();
}
case _token.TYPE.ROW:
{
return this.readRowToken();
}
case _token.TYPE.NBCROW:
{
return this.readNbcRowToken();
}
case _token.TYPE.FEATUREEXTACK:
{
return this.readFeatureExtAckToken();
}
default:
{
throw new Error('Unknown type: ' + type);
}
}
}
readFeatureExtAckToken() {
let result;
try {
result = (0, _featureExtAckParser.default)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readFeatureExtAckToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
async readNbcRowToken() {
return await (0, _nbcrowTokenParser.default)(this);
}
async readReturnValueToken() {
return await (0, _returnvalueTokenParser.default)(this);
}
async readColMetadataToken() {
const token = await (0, _colmetadataTokenParser.default)(this);
this.colMetadata = token.columns;
return token;
}
readSSPIToken() {
let result;
try {
result = (0, _sspiTokenParser.default)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readSSPIToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readFedAuthInfoToken() {
let result;
try {
result = (0, _fedauthInfoParser.default)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readFedAuthInfoToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readOrderToken() {
let result;
try {
result = (0, _orderTokenParser.default)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readOrderToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readReturnStatusToken() {
let result;
try {
result = (0, _returnstatusTokenParser.default)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readReturnStatusToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readLoginAckToken() {
let result;
try {
result = (0, _loginackTokenParser.default)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readLoginAckToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readEnvChangeToken() {
let result;
try {
result = (0, _envChangeTokenParser.default)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readEnvChangeToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readRowToken() {
return (0, _rowTokenParser.default)(this);
}
readInfoToken() {
let result;
try {
result = (0, _infoerrorTokenParser.infoParser)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readInfoToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readErrorToken() {
let result;
try {
result = (0, _infoerrorTokenParser.errorParser)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readErrorToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readDoneInProcToken() {
let result;
try {
result = (0, _doneTokenParser.doneInProcParser)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readDoneInProcToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readDoneProcToken() {
let result;
try {
result = (0, _doneTokenParser.doneProcParser)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readDoneProcToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
readDoneToken() {
let result;
try {
result = (0, _doneTokenParser.doneParser)(this.buffer, this.position, this.options);
} catch (err) {
if (err instanceof _helpers.NotEnoughDataError) {
return this.waitForChunk().then(() => {
return this.readDoneToken();
});
}
throw err;
}
this.position = result.offset;
return result.value;
}
constructor(iterable, debug, options) {
this.debug = debug;
this.colMetadata = [];
this.options = options;
this.iterator = (iterable[Symbol.asyncIterator] || iterable[Symbol.iterator]).call(iterable);
this.buffer = Buffer.alloc(0);
this.position = 0;
}
async waitForChunk() {
const result = await this.iterator.next();
if (result.done) {
throw new Error('unexpected end of data');
}
if (this.position === this.buffer.length) {
this.buffer = result.value;
} else {
this.buffer = Buffer.concat([this.buffer.slice(this.position), result.value]);
}
this.position = 0;
}
}
var _default = exports.default = Parser;
module.exports = Parser;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2NvbG1ldGFkYXRhVG9rZW5QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2RvbmVUb2tlblBhcnNlciIsIl9lbnZDaGFuZ2VUb2tlblBhcnNlciIsIl9pbmZvZXJyb3JUb2tlblBhcnNlciIsIl9mZWRhdXRoSW5mb1BhcnNlciIsIl9mZWF0dXJlRXh0QWNrUGFyc2VyIiwiX2xvZ2luYWNrVG9rZW5QYXJzZXIiLCJfb3JkZXJUb2tlblBhcnNlciIsIl9yZXR1cm5zdGF0dXNUb2tlblBhcnNlciIsIl9yZXR1cm52YWx1ZVRva2VuUGFyc2VyIiwiX3Jvd1Rva2VuUGFyc2VyIiwiX25iY3Jvd1Rva2VuUGFyc2VyIiwiX3NzcGlUb2tlblBhcnNlciIsIl9oZWxwZXJzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJQYXJzZXIiLCJkZWJ1ZyIsImNvbE1ldGFkYXRhIiwib3B0aW9ucyIsIml0ZXJhdG9yIiwiYnVmZmVyIiwicG9zaXRpb24iLCJwYXJzZVRva2VucyIsIml0ZXJhYmxlIiwicGFyc2VyIiwid2FpdEZvckNodW5rIiwiZXJyIiwibGVuZ3RoIiwidHlwZSIsInJlYWRVSW50OCIsInRva2VuIiwicmVhZFRva2VuIiwidW5kZWZpbmVkIiwiVFlQRSIsIkRPTkUiLCJyZWFkRG9uZVRva2VuIiwiRE9ORVBST0MiLCJyZWFkRG9uZVByb2NUb2tlbiIsIkRPTkVJTlBST0MiLCJyZWFkRG9uZUluUHJvY1Rva2VuIiwiRVJST1IiLCJyZWFkRXJyb3JUb2tlbiIsIklORk8iLCJyZWFkSW5mb1Rva2VuIiwiRU5WQ0hBTkdFIiwicmVhZEVudkNoYW5nZVRva2VuIiwiTE9HSU5BQ0siLCJyZWFkTG9naW5BY2tUb2tlbiIsIlJFVFVSTlNUQVRVUyIsInJlYWRSZXR1cm5TdGF0dXNUb2tlbiIsIk9SREVSIiwicmVhZE9yZGVyVG9rZW4iLCJGRURBVVRISU5GTyIsInJlYWRGZWRBdXRoSW5mb1Rva2VuIiwiU1NQSSIsInJlYWRTU1BJVG9rZW4iLCJDT0xNRVRBREFUQSIsInJlYWRDb2xNZXRhZGF0YVRva2VuIiwiUkVUVVJOVkFMVUUiLCJyZWFkUmV0dXJuVmFsdWVUb2tlbiIsIlJPVyIsInJlYWRSb3dUb2tlbiIsIk5CQ1JPVyIsInJlYWROYmNSb3dUb2tlbiIsIkZFQVRVUkVFWFRBQ0siLCJyZWFkRmVhdHVyZUV4dEFja1Rva2VuIiwiRXJyb3IiLCJyZXN1bHQiLCJmZWF0dXJlRXh0QWNrUGFyc2VyIiwiTm90RW5vdWdoRGF0YUVycm9yIiwidGhlbiIsIm9mZnNldCIsInZhbHVlIiwibmJjUm93UGFyc2VyIiwicmV0dXJuVmFsdWVQYXJzZXIiLCJjb2xNZXRhZGF0YVBhcnNlciIsImNvbHVtbnMiLCJzc3BpUGFyc2VyIiwiZmVkQXV0aEluZm9QYXJzZXIiLCJvcmRlclBhcnNlciIsInJldHVyblN0YXR1c1BhcnNlciIsImxvZ2luQWNrUGFyc2VyIiwiZW52Q2hhbmdlUGFyc2VyIiwicm93UGFyc2VyIiwiaW5mb1BhcnNlciIsImVycm9yUGFyc2VyIiwiZG9uZUluUHJvY1BhcnNlciIsImRvbmVQcm9jUGFyc2VyIiwiZG9uZVBhcnNlciIsImNvbnN0cnVjdG9yIiwiU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsImNhbGwiLCJCdWZmZXIiLCJhbGxvYyIsIm5leHQiLCJkb25lIiwiY29uY2F0Iiwic2xpY2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vc3RyZWFtLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVidWcgZnJvbSAnLi4vZGVidWcnO1xuaW1wb3J0IHsgdHlwZSBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vY29ubmVjdGlvbic7XG5cbmltcG9ydCB7IFRZUEUsIENvbE1ldGFkYXRhVG9rZW4sIERvbmVQcm9jVG9rZW4sIERvbmVUb2tlbiwgRG9uZUluUHJvY1Rva2VuLCBFcnJvck1lc3NhZ2VUb2tlbiwgSW5mb01lc3NhZ2VUb2tlbiwgUm93VG9rZW4sIHR5cGUgRW52Q2hhbmdlVG9rZW4sIExvZ2luQWNrVG9rZW4sIFJldHVyblN0YXR1c1Rva2VuLCBPcmRlclRva2VuLCBGZWRBdXRoSW5mb1Rva2VuLCBTU1BJVG9rZW4sIFJldHVyblZhbHVlVG9rZW4sIE5CQ1Jvd1Rva2VuLCBGZWF0dXJlRXh0QWNrVG9rZW4sIFRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmltcG9ydCBjb2xNZXRhZGF0YVBhcnNlciwgeyB0eXBlIENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgZG9uZVBhcnNlciwgZG9uZUluUHJvY1BhcnNlciwgZG9uZVByb2NQYXJzZXIgfSBmcm9tICcuL2RvbmUtdG9rZW4tcGFyc2VyJztcbmltcG9ydCBlbnZDaGFuZ2VQYXJzZXIgZnJvbSAnLi9lbnYtY2hhbmdlLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgeyBlcnJvclBhcnNlciwgaW5mb1BhcnNlciB9IGZyb20gJy4vaW5mb2Vycm9yLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgZmVkQXV0aEluZm9QYXJzZXIgZnJvbSAnLi9mZWRhdXRoLWluZm8tcGFyc2VyJztcbmltcG9ydCBmZWF0dXJlRXh0QWNrUGFyc2VyIGZyb20gJy4vZmVhdHVyZS1leHQtYWNrLXBhcnNlcic7XG5pbXBvcnQgbG9naW5BY2tQYXJzZXIgZnJvbSAnLi9sb2dpbmFjay10b2tlbi1wYXJzZXInO1xuaW1wb3J0IG9yZGVyUGFyc2VyIGZyb20gJy4vb3JkZXItdG9rZW4tcGFyc2VyJztcbmltcG9ydCByZXR1cm5TdGF0dXNQYXJzZXIgZnJvbSAnLi9yZXR1cm5zdGF0dXMtdG9rZW4tcGFyc2VyJztcbmltcG9ydCByZXR1cm5WYWx1ZVBhcnNlciBmcm9tICcuL3JldHVybnZhbHVlLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcm93UGFyc2VyIGZyb20gJy4vcm93LXRva2VuLXBhcnNlcic7XG5pbXBvcnQgbmJjUm93UGFyc2VyIGZyb20gJy4vbmJjcm93LXRva2VuLXBhcnNlcic7XG5pbXBvcnQgc3NwaVBhcnNlciBmcm9tICcuL3NzcGktdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciB9IGZyb20gJy4vaGVscGVycyc7XG5cbmV4cG9ydCB0eXBlIFBhcnNlck9wdGlvbnMgPSBQaWNrPEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMsICd1c2VVVEMnIHwgJ2xvd2VyQ2FzZUd1aWRzJyB8ICd0ZHNWZXJzaW9uJyB8ICd1c2VDb2x1bW5OYW1lcycgfCAnY29sdW1uTmFtZVJlcGxhY2VyJyB8ICdjYW1lbENhc2VDb2x1bW5zJz47XG5cbmNsYXNzIFBhcnN