tedious 20.3.2 → 20.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/connection.js +8 -1
- package/lib/connection.js.map +1 -1
- package/lib/metadata-parser.d.ts +1 -3
- package/lib/metadata-parser.js +1 -22
- package/lib/metadata-parser.js.map +1 -1
- package/lib/token/colmetadata-token-parser.d.ts +11 -3
- package/lib/token/colmetadata-token-parser.js +29 -42
- package/lib/token/colmetadata-token-parser.js.map +1 -1
- package/lib/token/nbcrow-token-parser.d.ts +11 -3
- package/lib/token/nbcrow-token-parser.js +22 -89
- package/lib/token/nbcrow-token-parser.js.map +1 -1
- package/lib/token/returnvalue-token-parser.d.ts +19 -3
- package/lib/token/returnvalue-token-parser.js +67 -73
- package/lib/token/returnvalue-token-parser.js.map +1 -1
- package/lib/token/row-token-parser.d.ts +33 -3
- package/lib/token/row-token-parser.js +62 -60
- package/lib/token/row-token-parser.js.map +1 -1
- package/lib/token/stream-parser.d.ts +59 -27
- package/lib/token/stream-parser.js +157 -325
- package/lib/token/stream-parser.js.map +1 -1
- package/lib/token/token-stream-parser.d.ts +12 -5
- package/lib/token/token-stream-parser.js +46 -17
- package/lib/token/token-stream-parser.js.map +1 -1
- package/lib/value-parser.d.ts +19 -2
- package/lib/value-parser.js +73 -30
- package/lib/value-parser.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,74 +3,76 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.RowTokenReader = exports.ColumnValuesReader = void 0;
|
|
7
|
+
exports.toColumnsMap = toColumnsMap;
|
|
7
8
|
var _token = require("./token");
|
|
8
|
-
var iconv = _interopRequireWildcard(require("iconv-lite"));
|
|
9
9
|
var _valueParser = require("../value-parser");
|
|
10
|
-
var _helpers = require("./helpers");
|
|
11
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
10
|
// s2.2.7.17
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Reads the column values of a row one by one. Column values - especially PLP
|
|
14
|
+
* values - can be arbitrarily large, so the progress is kept across chunks.
|
|
15
|
+
*/
|
|
16
|
+
class ColumnValuesReader {
|
|
17
|
+
// The reader of a PLP column value that is not complete yet.
|
|
18
|
+
|
|
19
|
+
constructor() {
|
|
20
|
+
this.columns = [];
|
|
21
|
+
this.plpReader = undefined;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Read the remaining column values. Columns flagged in the `nullBitmap`
|
|
26
|
+
* have no data and are `null`.
|
|
27
|
+
*/
|
|
28
|
+
readColumns(parser, nullBitmap) {
|
|
29
|
+
const colMetadata = parser.colMetadata;
|
|
30
|
+
while (this.columns.length < colMetadata.length) {
|
|
31
|
+
const index = this.columns.length;
|
|
32
|
+
const metadata = colMetadata[index];
|
|
33
|
+
let value;
|
|
34
|
+
if (nullBitmap !== undefined && nullBitmap[index >> 3] & 1 << (index & 7)) {
|
|
35
|
+
value = null;
|
|
36
|
+
} else if ((0, _valueParser.isPLPStream)(metadata)) {
|
|
37
|
+
this.plpReader ??= new _valueParser.PLPReader(metadata);
|
|
38
|
+
value = this.plpReader.read(parser);
|
|
39
|
+
this.plpReader = undefined;
|
|
41
40
|
} else {
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
result = (0, _valueParser.readValue)(parser.buffer, parser.position, metadata, parser.options);
|
|
45
|
-
} catch (err) {
|
|
46
|
-
if (err instanceof _helpers.NotEnoughDataError) {
|
|
47
|
-
await parser.waitForChunk();
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
throw err;
|
|
51
|
-
}
|
|
41
|
+
const result = (0, _valueParser.readValue)(parser.buffer, parser.position, metadata, parser.options);
|
|
52
42
|
parser.position = result.offset;
|
|
53
|
-
|
|
54
|
-
value: result.value,
|
|
55
|
-
metadata
|
|
56
|
-
});
|
|
43
|
+
value = result.value;
|
|
57
44
|
}
|
|
58
|
-
|
|
45
|
+
this.columns.push({
|
|
46
|
+
value,
|
|
47
|
+
metadata
|
|
48
|
+
});
|
|
59
49
|
}
|
|
60
50
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Reads a `ROW` token.
|
|
55
|
+
*/
|
|
56
|
+
exports.ColumnValuesReader = ColumnValuesReader;
|
|
57
|
+
class RowTokenReader extends ColumnValuesReader {
|
|
58
|
+
read(parser) {
|
|
59
|
+
this.readColumns(parser, undefined);
|
|
60
|
+
return new _token.RowToken(parser.options.useColumnNames ? toColumnsMap(this.columns) : this.columns);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Map columns by name. If multiple columns share a name, the first one wins.
|
|
66
|
+
*/
|
|
67
|
+
exports.RowTokenReader = RowTokenReader;
|
|
68
|
+
function toColumnsMap(columns) {
|
|
69
|
+
const columnsMap = Object.create(null);
|
|
70
|
+
for (const column of columns) {
|
|
71
|
+
const colName = column.metadata.colName;
|
|
72
|
+
if (columnsMap[colName] == null) {
|
|
73
|
+
columnsMap[colName] = column;
|
|
74
|
+
}
|
|
72
75
|
}
|
|
76
|
+
return columnsMap;
|
|
73
77
|
}
|
|
74
|
-
|
|
75
|
-
module.exports = rowParser;
|
|
76
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiaWNvbnYiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl92YWx1ZVBhcnNlciIsIl9oZWxwZXJzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwicm93UGFyc2VyIiwicGFyc2VyIiwiY29sdW1ucyIsIm1ldGFkYXRhIiwiY29sTWV0YWRhdGEiLCJpc1BMUFN0cmVhbSIsImNodW5rcyIsInJlYWRQTFBTdHJlYW0iLCJwdXNoIiwidmFsdWUiLCJ0eXBlIiwibmFtZSIsIkJ1ZmZlciIsImNvbmNhdCIsInRvU3RyaW5nIiwiZGVjb2RlIiwiY29sbGF0aW9uIiwiY29kZXBhZ2UiLCJyZXN1bHQiLCJyZWFkVmFsdWUiLCJidWZmZXIiLCJwb3NpdGlvbiIsIm9wdGlvbnMiLCJlcnIiLCJOb3RFbm91Z2hEYXRhRXJyb3IiLCJ3YWl0Rm9yQ2h1bmsiLCJvZmZzZXQiLCJ1c2VDb2x1bW5OYW1lcyIsImNvbHVtbnNNYXAiLCJjcmVhdGUiLCJmb3JFYWNoIiwiY29sdW1uIiwiY29sTmFtZSIsIlJvd1Rva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3Jvdy10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gczIuMi43LjE3XG5cbmltcG9ydCBQYXJzZXIgZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IHR5cGUgQ29sdW1uTWV0YWRhdGEgfSBmcm9tICcuL2NvbG1ldGFkYXRhLXRva2VuLXBhcnNlcic7XG5cbmltcG9ydCB7IFJvd1Rva2VuIH0gZnJvbSAnLi90b2tlbic7XG5pbXBvcnQgKiBhcyBpY29udiBmcm9tICdpY29udi1saXRlJztcblxuaW1wb3J0IHsgaXNQTFBTdHJlYW0sIHJlYWRQTFBTdHJlYW0sIHJlYWRWYWx1ZSB9IGZyb20gJy4uL3ZhbHVlLXBhcnNlcic7XG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5pbnRlcmZhY2UgQ29sdW1uIHtcbiAgdmFsdWU6IHVua25vd247XG4gIG1ldGFkYXRhOiBDb2x1bW5NZXRhZGF0YTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcm93UGFyc2VyKHBhcnNlcjogUGFyc2VyKTogUHJvbWlzZTxSb3dUb2tlbj4ge1xuICBjb25zdCBjb2x1bW5zOiBDb2x1bW5bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgbWV0YWRhdGEgb2YgcGFyc2VyLmNvbE1ldGFkYXRhKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChpc1BMUFN0cmVhbShtZXRhZGF0YSkpIHtcbiAgICAgICAgY29uc3QgY2h1bmtzID0gYXdhaXQgcmVhZFBMUFN0cmVhbShwYXJzZXIpO1xuXG4gICAgICAgIGlmIChjaHVua3MgPT09IG51bGwpIHtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogY2h1bmtzLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdOVmFyQ2hhcicgfHwgbWV0YWRhdGEudHlwZS5uYW1lID09PSAnWG1sJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBCdWZmZXIuY29uY2F0KGNodW5rcykudG9TdHJpbmcoJ3VjczInKSwgbWV0YWRhdGEgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGEudHlwZS5uYW1lID09PSAnVmFyQ2hhcicpIHtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogaWNvbnYuZGVjb2RlKEJ1ZmZlci5jb25jYXQoY2h1bmtzKSwgbWV0YWRhdGEuY29sbGF0aW9uPy5jb2RlcGFnZSA/PyAndXRmOCcpLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdWYXJCaW5hcnknIHx8IG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1VEVCcpIHtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogQnVmZmVyLmNvbmNhdChjaHVua3MpLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXN1bHQgPSByZWFkVmFsdWUocGFyc2VyLmJ1ZmZlciwgcGFyc2VyLnBvc2l0aW9uLCBtZXRhZGF0YSwgcGFyc2VyLm9wdGlvbnMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgICAgICBhd2FpdCBwYXJzZXIud2FpdEZvckNodW5rKCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJzZXIucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogcmVzdWx0LnZhbHVlLCBtZXRhZGF0YSB9KTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnNlci5vcHRpb25zLnVzZUNvbHVtbk5hbWVzKSB7XG4gICAgY29uc3QgY29sdW1uc01hcDogeyBba2V5OiBzdHJpbmddOiBDb2x1bW4gfSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3QgY29sTmFtZSA9IGNvbHVtbi5tZXRhZGF0YS5jb2xOYW1lO1xuICAgICAgaWYgKGNvbHVtbnNNYXBbY29sTmFtZV0gPT0gbnVsbCkge1xuICAgICAgICBjb2x1bW5zTWFwW2NvbE5hbWVdID0gY29sdW1uO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBSb3dUb2tlbihjb2x1bW5zTWFwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IFJvd1Rva2VuKGNvbHVtbnMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJvd1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gcm93UGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFBK0MsU0FBQUUsd0JBQUFHLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFMLHVCQUFBLFlBQUFBLENBQUFHLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxRQUFBQyxPQUFBLEVBQUFWLENBQUEsaUJBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsZ0JBQUFQLENBQUEsSUFBQUQsQ0FBQSxnQkFBQUMsQ0FBQSxPQUFBYSxjQUFBLENBQUFDLElBQUEsQ0FBQWYsQ0FBQSxFQUFBQyxDQUFBLE9BQUFN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
|
|
78
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX3ZhbHVlUGFyc2VyIiwiQ29sdW1uVmFsdWVzUmVhZGVyIiwiY29uc3RydWN0b3IiLCJjb2x1bW5zIiwicGxwUmVhZGVyIiwidW5kZWZpbmVkIiwicmVhZENvbHVtbnMiLCJwYXJzZXIiLCJudWxsQml0bWFwIiwiY29sTWV0YWRhdGEiLCJsZW5ndGgiLCJpbmRleCIsIm1ldGFkYXRhIiwidmFsdWUiLCJpc1BMUFN0cmVhbSIsIlBMUFJlYWRlciIsInJlYWQiLCJyZXN1bHQiLCJyZWFkVmFsdWUiLCJidWZmZXIiLCJwb3NpdGlvbiIsIm9wdGlvbnMiLCJvZmZzZXQiLCJwdXNoIiwiZXhwb3J0cyIsIlJvd1Rva2VuUmVhZGVyIiwiUm93VG9rZW4iLCJ1c2VDb2x1bW5OYW1lcyIsInRvQ29sdW1uc01hcCIsImNvbHVtbnNNYXAiLCJPYmplY3QiLCJjcmVhdGUiLCJjb2x1bW4iLCJjb2xOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3Jvdy10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gczIuMi43LjE3XG5cbmltcG9ydCBQYXJzZXIsIHsgdHlwZSBUb2tlblJlYWRlciB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyB0eXBlIENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuXG5pbXBvcnQgeyBSb3dUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgeyBpc1BMUFN0cmVhbSwgUExQUmVhZGVyLCByZWFkVmFsdWUgfSBmcm9tICcuLi92YWx1ZS1wYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBtZXRhZGF0YTogQ29sdW1uTWV0YWRhdGE7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGNvbHVtbiB2YWx1ZXMgb2YgYSByb3cgb25lIGJ5IG9uZS4gQ29sdW1uIHZhbHVlcyAtIGVzcGVjaWFsbHkgUExQXG4gKiB2YWx1ZXMgLSBjYW4gYmUgYXJiaXRyYXJpbHkgbGFyZ2UsIHNvIHRoZSBwcm9ncmVzcyBpcyBrZXB0IGFjcm9zcyBjaHVua3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2x1bW5WYWx1ZXNSZWFkZXIge1xuICBkZWNsYXJlIGNvbHVtbnM6IENvbHVtbltdO1xuXG4gIC8vIFRoZSByZWFkZXIgb2YgYSBQTFAgY29sdW1uIHZhbHVlIHRoYXQgaXMgbm90IGNvbXBsZXRlIHlldC5cbiAgZGVjbGFyZSBwbHBSZWFkZXI6IFBMUFJlYWRlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbHVtbnMgPSBbXTtcbiAgICB0aGlzLnBscFJlYWRlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIHRoZSByZW1haW5pbmcgY29sdW1uIHZhbHVlcy4gQ29sdW1ucyBmbGFnZ2VkIGluIHRoZSBgbnVsbEJpdG1hcGBcbiAgICogaGF2ZSBubyBkYXRhIGFuZCBhcmUgYG51bGxgLlxuICAgKi9cbiAgcmVhZENvbHVtbnMocGFyc2VyOiBQYXJzZXIsIG51bGxCaXRtYXA6IEJ1ZmZlciB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGNvbE1ldGFkYXRhID0gcGFyc2VyLmNvbE1ldGFkYXRhO1xuXG4gICAgd2hpbGUgKHRoaXMuY29sdW1ucy5sZW5ndGggPCBjb2xNZXRhZGF0YS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jb2x1bW5zLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gY29sTWV0YWRhdGFbaW5kZXhdO1xuXG4gICAgICBsZXQgdmFsdWU7XG4gICAgICBpZiAobnVsbEJpdG1hcCAhPT0gdW5kZWZpbmVkICYmIChudWxsQml0bWFwW2luZGV4ID4+IDNdICYgKDEgPDwgKGluZGV4ICYgNykpKSkge1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGlzUExQU3RyZWFtKG1ldGFkYXRhKSkge1xuICAgICAgICB0aGlzLnBscFJlYWRlciA/Pz0gbmV3IFBMUFJlYWRlcihtZXRhZGF0YSk7XG4gICAgICAgIHZhbHVlID0gdGhpcy5wbHBSZWFkZXIucmVhZChwYXJzZXIpO1xuICAgICAgICB0aGlzLnBscFJlYWRlciA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlYWRWYWx1ZShwYXJzZXIuYnVmZmVyLCBwYXJzZXIucG9zaXRpb24sIG1ldGFkYXRhLCBwYXJzZXIub3B0aW9ucyk7XG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgICAgIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbHVtbnMucHVzaCh7IHZhbHVlLCBtZXRhZGF0YSB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyBhIGBST1dgIHRva2VuLlxuICovXG5leHBvcnQgY2xhc3MgUm93VG9rZW5SZWFkZXIgZXh0ZW5kcyBDb2x1bW5WYWx1ZXNSZWFkZXIgaW1wbGVtZW50cyBUb2tlblJlYWRlciB7XG4gIHJlYWQocGFyc2VyOiBQYXJzZXIpOiBSb3dUb2tlbiB7XG4gICAgdGhpcy5yZWFkQ29sdW1ucyhwYXJzZXIsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIG5ldyBSb3dUb2tlbihwYXJzZXIub3B0aW9ucy51c2VDb2x1bW5OYW1lcyA/IHRvQ29sdW1uc01hcCh0aGlzLmNvbHVtbnMpIDogdGhpcy5jb2x1bW5zKTtcbiAgfVxufVxuXG4vKipcbiAqIE1hcCBjb2x1bW5zIGJ5IG5hbWUuIElmIG11bHRpcGxlIGNvbHVtbnMgc2hhcmUgYSBuYW1lLCB0aGUgZmlyc3Qgb25lIHdpbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NvbHVtbnNNYXAoY29sdW1uczogQ29sdW1uW10pOiB7IFtrZXk6IHN0cmluZ106IENvbHVtbiB9IHtcbiAgY29uc3QgY29sdW1uc01hcDogeyBba2V5OiBzdHJpbmddOiBDb2x1bW4gfSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgIGNvbnN0IGNvbE5hbWUgPSBjb2x1bW4ubWV0YWRhdGEuY29sTmFtZTtcbiAgICBpZiAoY29sdW1uc01hcFtjb2xOYW1lXSA9PSBudWxsKSB7XG4gICAgICBjb2x1bW5zTWFwW2NvbE5hbWVdID0gY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb2x1bW5zTWFwO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBUEE7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxrQkFBa0IsQ0FBQztFQUc5Qjs7RUFHQUMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUcsRUFBRTtJQUNqQixJQUFJLENBQUNDLFNBQVMsR0FBR0MsU0FBUztFQUM1Qjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtFQUNFQyxXQUFXQSxDQUFDQyxNQUFjLEVBQUVDLFVBQThCLEVBQUU7SUFDMUQsTUFBTUMsV0FBVyxHQUFHRixNQUFNLENBQUNFLFdBQVc7SUFFdEMsT0FBTyxJQUFJLENBQUNOLE9BQU8sQ0FBQ08sTUFBTSxHQUFHRCxXQUFXLENBQUNDLE1BQU0sRUFBRTtNQUMvQyxNQUFNQyxLQUFLLEdBQUcsSUFBSSxDQUFDUixPQUFPLENBQUNPLE1BQU07TUFDakMsTUFBTUUsUUFBUSxHQUFHSCxXQUFXLENBQUNFLEtBQUssQ0FBQztNQUVuQyxJQUFJRSxLQUFLO01BQ1QsSUFBSUwsVUFBVSxLQUFLSCxTQUFTLElBQUtHLFVBQVUsQ0FBQ0csS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFJLENBQUMsS0FBS0EsS0FBSyxHQUFHLENBQUMsQ0FBRyxFQUFFO1FBQzdFRSxLQUFLLEdBQUcsSUFBSTtNQUNkLENBQUMsTUFBTSxJQUFJLElBQUFDLHdCQUFXLEVBQUNGLFFBQVEsQ0FBQyxFQUFFO1FBQ2hDLElBQUksQ0FBQ1IsU0FBUyxLQUFLLElBQUlXLHNCQUFTLENBQUNILFFBQVEsQ0FBQztRQUMxQ0MsS0FBSyxHQUFHLElBQUksQ0FBQ1QsU0FBUyxDQUFDWSxJQUFJLENBQUNULE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUNILFNBQVMsR0FBR0MsU0FBUztNQUM1QixDQUFDLE1BQU07UUFDTCxNQUFNWSxNQUFNLEdBQUcsSUFBQUMsc0JBQVMsRUFBQ1gsTUFBTSxDQUFDWSxNQUFNLEVBQUVaLE1BQU0sQ0FBQ2EsUUFBUSxFQUFFUixRQUFRLEVBQUVMLE1BQU0sQ0FBQ2MsT0FBTyxDQUFDO1FBQ2xGZCxNQUFNLENBQUNhLFFBQVEsR0FBR0gsTUFBTSxDQUFDSyxNQUFNO1FBQy9CVCxLQUFLLEdBQUdJLE1BQU0sQ0FBQ0osS0FBSztNQUN0QjtNQUVBLElBQUksQ0FBQ1YsT0FBTyxDQUFDb0IsSUFBSSxDQUFDO1FBQUVWLEtBQUs7UUFBRUQ7TUFBUyxDQUFDLENBQUM7SUFDeEM7RUFDRjtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUZBWSxPQUFBLENBQUF2QixrQkFBQSxHQUFBQSxrQkFBQTtBQUdPLE1BQU13QixjQUFjLFNBQVN4QixrQkFBa0IsQ0FBd0I7RUFDNUVlLElBQUlBLENBQUNULE1BQWMsRUFBWTtJQUM3QixJQUFJLENBQUNELFdBQVcsQ0FBQ0MsTUFBTSxFQUFFRixTQUFTLENBQUM7SUFDbkMsT0FBTyxJQUFJcUIsZUFBUSxDQUFDbkIsTUFBTSxDQUFDYyxPQUFPLENBQUNNLGNBQWMsR0FBR0MsWUFBWSxDQUFDLElBQUksQ0FBQ3pCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQ0EsT0FBTyxDQUFDO0VBQ2hHO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBRkFxQixPQUFBLENBQUFDLGNBQUEsR0FBQUEsY0FBQTtBQUdPLFNBQVNHLFlBQVlBLENBQUN6QixPQUFpQixFQUE2QjtFQUN6RSxNQUFNMEIsVUFBcUMsR0FBR0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDO0VBRWpFLEtBQUssTUFBTUMsTUFBTSxJQUFJN0IsT0FBTyxFQUFFO0lBQzVCLE1BQU04QixPQUFPLEdBQUdELE1BQU0sQ0FBQ3BCLFFBQVEsQ0FBQ3FCLE9BQU87SUFDdkMsSUFBSUosVUFBVSxDQUFDSSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUU7TUFDL0JKLFVBQVUsQ0FBQ0ksT0FBTyxDQUFDLEdBQUdELE1BQU07SUFDOUI7RUFDRjtFQUVBLE9BQU9ILFVBQVU7QUFDbkIiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-token-parser.js","names":["_token","require","
|
|
1
|
+
{"version":3,"file":"row-token-parser.js","names":["_token","require","_valueParser","ColumnValuesReader","constructor","columns","plpReader","undefined","readColumns","parser","nullBitmap","colMetadata","length","index","metadata","value","isPLPStream","PLPReader","read","result","readValue","buffer","position","options","offset","push","exports","RowTokenReader","RowToken","useColumnNames","toColumnsMap","columnsMap","Object","create","column","colName"],"sources":["../../src/token/row-token-parser.ts"],"sourcesContent":["// s2.2.7.17\n\nimport Parser, { type TokenReader } from './stream-parser';\nimport { type ColumnMetadata } from './colmetadata-token-parser';\n\nimport { RowToken } from './token';\n\nimport { isPLPStream, PLPReader, readValue } from '../value-parser';\n\nexport interface Column {\n value: unknown;\n metadata: ColumnMetadata;\n}\n\n/**\n * Reads the column values of a row one by one. Column values - especially PLP\n * values - can be arbitrarily large, so the progress is kept across chunks.\n */\nexport class ColumnValuesReader {\n declare columns: Column[];\n\n // The reader of a PLP column value that is not complete yet.\n declare plpReader: PLPReader | undefined;\n\n constructor() {\n this.columns = [];\n this.plpReader = undefined;\n }\n\n /**\n * Read the remaining column values. Columns flagged in the `nullBitmap`\n * have no data and are `null`.\n */\n readColumns(parser: Parser, nullBitmap: Buffer | undefined) {\n const colMetadata = parser.colMetadata;\n\n while (this.columns.length < colMetadata.length) {\n const index = this.columns.length;\n const metadata = colMetadata[index];\n\n let value;\n if (nullBitmap !== undefined && (nullBitmap[index >> 3] & (1 << (index & 7)))) {\n value = null;\n } else if (isPLPStream(metadata)) {\n this.plpReader ??= new PLPReader(metadata);\n value = this.plpReader.read(parser);\n this.plpReader = undefined;\n } else {\n const result = readValue(parser.buffer, parser.position, metadata, parser.options);\n parser.position = result.offset;\n value = result.value;\n }\n\n this.columns.push({ value, metadata });\n }\n }\n}\n\n/**\n * Reads a `ROW` token.\n */\nexport class RowTokenReader extends ColumnValuesReader implements TokenReader {\n read(parser: Parser): RowToken {\n this.readColumns(parser, undefined);\n return new RowToken(parser.options.useColumnNames ? toColumnsMap(this.columns) : this.columns);\n }\n}\n\n/**\n * Map columns by name. If multiple columns share a name, the first one wins.\n */\nexport function toColumnsMap(columns: Column[]): { [key: string]: Column } {\n const columnsMap: { [key: string]: Column } = Object.create(null);\n\n for (const column of columns) {\n const colName = column.metadata.colName;\n if (columnsMap[colName] == null) {\n columnsMap[colName] = column;\n }\n }\n\n return columnsMap;\n}\n"],"mappings":";;;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAPA;;AAcA;AACA;AACA;AACA;AACO,MAAME,kBAAkB,CAAC;EAG9B;;EAGAC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,OAAO,GAAG,EAAE;IACjB,IAAI,CAACC,SAAS,GAAGC,SAAS;EAC5B;;EAEA;AACF;AACA;AACA;EACEC,WAAWA,CAACC,MAAc,EAAEC,UAA8B,EAAE;IAC1D,MAAMC,WAAW,GAAGF,MAAM,CAACE,WAAW;IAEtC,OAAO,IAAI,CAACN,OAAO,CAACO,MAAM,GAAGD,WAAW,CAACC,MAAM,EAAE;MAC/C,MAAMC,KAAK,GAAG,IAAI,CAACR,OAAO,CAACO,MAAM;MACjC,MAAME,QAAQ,GAAGH,WAAW,CAACE,KAAK,CAAC;MAEnC,IAAIE,KAAK;MACT,IAAIL,UAAU,KAAKH,SAAS,IAAKG,UAAU,CAACG,KAAK,IAAI,CAAC,CAAC,GAAI,CAAC,KAAKA,KAAK,GAAG,CAAC,CAAG,EAAE;QAC7EE,KAAK,GAAG,IAAI;MACd,CAAC,MAAM,IAAI,IAAAC,wBAAW,EAACF,QAAQ,CAAC,EAAE;QAChC,IAAI,CAACR,SAAS,KAAK,IAAIW,sBAAS,CAACH,QAAQ,CAAC;QAC1CC,KAAK,GAAG,IAAI,CAACT,SAAS,CAACY,IAAI,CAACT,MAAM,CAAC;QACnC,IAAI,CAACH,SAAS,GAAGC,SAAS;MAC5B,CAAC,MAAM;QACL,MAAMY,MAAM,GAAG,IAAAC,sBAAS,EAACX,MAAM,CAACY,MAAM,EAAEZ,MAAM,CAACa,QAAQ,EAAER,QAAQ,EAAEL,MAAM,CAACc,OAAO,CAAC;QAClFd,MAAM,CAACa,QAAQ,GAAGH,MAAM,CAACK,MAAM;QAC/BT,KAAK,GAAGI,MAAM,CAACJ,KAAK;MACtB;MAEA,IAAI,CAACV,OAAO,CAACoB,IAAI,CAAC;QAAEV,KAAK;QAAED;MAAS,CAAC,CAAC;IACxC;EACF;AACF;;AAEA;AACA;AACA;AAFAY,OAAA,CAAAvB,kBAAA,GAAAA,kBAAA;AAGO,MAAMwB,cAAc,SAASxB,kBAAkB,CAAwB;EAC5Ee,IAAIA,CAACT,MAAc,EAAY;IAC7B,IAAI,CAACD,WAAW,CAACC,MAAM,EAAEF,SAAS,CAAC;IACnC,OAAO,IAAIqB,eAAQ,CAACnB,MAAM,CAACc,OAAO,CAACM,cAAc,GAAGC,YAAY,CAAC,IAAI,CAACzB,OAAO,CAAC,GAAG,IAAI,CAACA,OAAO,CAAC;EAChG;AACF;;AAEA;AACA;AACA;AAFAqB,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAGO,SAASG,YAAYA,CAACzB,OAAiB,EAA6B;EACzE,MAAM0B,UAAqC,GAAGC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EAEjE,KAAK,MAAMC,MAAM,IAAI7B,OAAO,EAAE;IAC5B,MAAM8B,OAAO,GAAGD,MAAM,CAACpB,QAAQ,CAACqB,OAAO;IACvC,IAAIJ,UAAU,CAACI,OAAO,CAAC,IAAI,IAAI,EAAE;MAC/BJ,UAAU,CAACI,OAAO,CAAC,GAAGD,MAAM;IAC9B;EACF;EAEA,OAAOH,UAAU;AACnB","ignoreList":[]}
|
|
@@ -1,36 +1,68 @@
|
|
|
1
|
-
import Debug from '../debug';
|
|
2
1
|
import { type InternalConnectionOptions } from '../connection';
|
|
3
|
-
import {
|
|
2
|
+
import { type Token } from './token';
|
|
4
3
|
import { type ColumnMetadata } from './colmetadata-token-parser';
|
|
4
|
+
import { type Result } from './helpers';
|
|
5
5
|
export type ParserOptions = Pick<InternalConnectionOptions, 'useUTC' | 'lowerCaseGuids' | 'tdsVersion' | 'useColumnNames' | 'columnNameReplacer' | 'camelCaseColumns'>;
|
|
6
|
+
/**
|
|
7
|
+
* Parses a token that is short enough to simply be parsed again from its
|
|
8
|
+
* start if it is not fully available yet.
|
|
9
|
+
*/
|
|
10
|
+
type TokenParser = (buf: Buffer, offset: number, options: ParserOptions) => Result<Token | undefined>;
|
|
11
|
+
/**
|
|
12
|
+
* Parses a token that can grow arbitrarily large, and thus needs to be parsed
|
|
13
|
+
* incrementally.
|
|
14
|
+
*
|
|
15
|
+
* The reader starts parsing right after the token's type byte and keeps its
|
|
16
|
+
* progress across calls: if `read` throws a `NotEnoughDataError`, it is
|
|
17
|
+
* called again once more data has arrived.
|
|
18
|
+
*/
|
|
19
|
+
export interface TokenReader {
|
|
20
|
+
read(parser: Parser): Token;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A push-based parser for the tokens contained in a TDS token stream.
|
|
24
|
+
*
|
|
25
|
+
* Data is pushed into the parser as it arrives via `write`, and parsed tokens
|
|
26
|
+
* are pulled out via `read`. Tokens are parsed lazily, one at a time, so any
|
|
27
|
+
* effects of handling a token (e.g. the TDS version negotiated via the
|
|
28
|
+
* `LOGINACK` token) apply to the parsing of all tokens that follow it.
|
|
29
|
+
*/
|
|
6
30
|
declare class Parser {
|
|
7
|
-
debug: Debug;
|
|
8
|
-
colMetadata: ColumnMetadata[];
|
|
9
31
|
options: ParserOptions;
|
|
10
|
-
|
|
32
|
+
colMetadata: ColumnMetadata[];
|
|
11
33
|
buffer: Buffer;
|
|
12
34
|
position: number;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
pending: Buffer[];
|
|
36
|
+
pendingLength: number;
|
|
37
|
+
bytesNeeded: number;
|
|
38
|
+
tokenReader: TokenReader | undefined;
|
|
39
|
+
constructor(options: ParserOptions, colMetadata?: ColumnMetadata[]);
|
|
40
|
+
/**
|
|
41
|
+
* Parse all tokens from the given chunks of data.
|
|
42
|
+
*/
|
|
43
|
+
static parseTokens(iterable: AsyncIterable<Buffer> | Iterable<Buffer>, options: ParserOptions, colMetadata?: ColumnMetadata[]): AsyncGenerator<Token, void, undefined>;
|
|
44
|
+
/**
|
|
45
|
+
* Add a chunk of data to be parsed.
|
|
46
|
+
*/
|
|
47
|
+
write(chunk: Buffer): void;
|
|
48
|
+
/**
|
|
49
|
+
* Parse the next token, or return `undefined` if more data needs to be
|
|
50
|
+
* written first.
|
|
51
|
+
*/
|
|
52
|
+
read(): Token | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Signal that all data was written.
|
|
55
|
+
*
|
|
56
|
+
* Throws if the data ended in the middle of a token.
|
|
57
|
+
*/
|
|
58
|
+
end(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Append the pending chunks to the unconsumed data, if that makes enough
|
|
61
|
+
* data available for parsing to make progress.
|
|
62
|
+
*/
|
|
63
|
+
appendPending(): boolean;
|
|
64
|
+
readToken(): Token | undefined;
|
|
65
|
+
parseToken(parser: TokenParser): Token | undefined;
|
|
66
|
+
startTokenReader(reader: TokenReader): Token;
|
|
35
67
|
}
|
|
36
68
|
export default Parser;
|