Socket
Socket
Sign inDemoInstall

tedious

Package Overview
Dependencies
Maintainers
7
Versions
227
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tedious - npm Package Compare versions

Comparing version 8.0.1 to 8.1.0

benchmarks/connection/open.js

315

benchmarks/common.js

@@ -1,77 +0,285 @@

"use strict";
'use strict';
var fs = require("fs");
var async = require("async");
var Benchmark = require("benchmark");
var Connection = require("../lib/tedious").Connection;
const fs = require('fs');
const child_process = require('child_process');
function createConnection(cb) {
var config = JSON.parse(fs.readFileSync(require('os').homedir() + '/.tedious/test-connection.json', 'utf8')).config;
const {
PerformanceObserver,
constants: {
NODE_PERFORMANCE_GC_INCREMENTAL,
NODE_PERFORMANCE_GC_MAJOR,
NODE_PERFORMANCE_GC_MINOR
}
} = require('perf_hooks');
var connection = new Connection(config);
connection.on("connect", function() {
cb(connection);
require('@babel/register')({ extensions: ['.ts'] });
const { Connection } = require('../src/tedious');
// The `Benchmark` class is taken from Node.js - see
// https://github.com/nodejs/node/blob/0f96dc266fd0cd8c1baa82ce7eb951c11b29a331/benchmark/common.js
// Copyright Node.js contributors. All rights reserved.
function Benchmark(fn, configs, options) {
// Use the file name as the name of the benchmark
this.name = require.main.filename.slice(__dirname.length + 1);
// Parse job-specific configuration from the command line arguments
const parsed_args = this._parseArgs(process.argv.slice(2), configs);
this.options = parsed_args.cli;
this.extra_options = parsed_args.extra;
// The configuration list as a queue of jobs
this.queue = this._queue(this.options);
// The configuration of the current job, head of the queue
this.config = this.queue[0];
// Execution arguments i.e. flags used to run the jobs
this.flags = [];
if (options && options.flags) {
this.flags = this.flags.concat(options.flags);
}
if (process.env.NODE_BENCHMARK_FLAGS) {
const flags = process.env.NODE_BENCHMARK_FLAGS.split(/\s+/);
this.flags = this.flags.concat(flags);
}
// Holds process.hrtime value
this._time = [0, 0];
// Used to make sure a benchmark only start a timer once
this._started = false;
this._gcStats = {
[NODE_PERFORMANCE_GC_INCREMENTAL]: {
count: 0,
totalDuration: 0
},
[NODE_PERFORMANCE_GC_MINOR]: {
count: 0,
totalDuration: 0
},
[NODE_PERFORMANCE_GC_MAJOR]: {
count: 0,
totalDuration: 0
}
};
this._observer = new PerformanceObserver((list) => {
const entries = list.getEntries();
const length = entries.length;
for (let i = 0; i < length; i++) {
const entry = entries[i];
const stats = this._gcStats[entry.kind];
if (stats) {
stats.count += 1;
stats.totalDuration += entry.duration;
}
}
});
}
function createBenchmark(test) {
if (process.argv.indexOf("--profile") != -1) {
process.nextTick(function() {
runProfile(test);
});
// this._run will use fork() to create a new process for each configuration
// combination.
if (process.env.hasOwnProperty('NODE_RUN_BENCHMARK_FN')) {
process.nextTick(() => fn(this.config));
} else {
process.nextTick(function() {
runBenchmark(test);
});
process.nextTick(() => this._run());
}
}
function runBenchmark(test) {
var memStart, memMax = memStart = process.memoryUsage().rss;
Benchmark.prototype._parseArgs = function(argv, configs) {
const cliOptions = {};
const extraOptions = {};
const validArgRE = /^(.+?)=([\s\S]*)$/;
// Parse configuration arguments
for (const arg of argv) {
const match = arg.match(validArgRE);
if (!match) {
console.error(`bad argument: ${arg}`);
process.exit(1);
}
const config = match[1];
test.setup(function(err) {
if (err) throw err;
if (configs[config]) {
// Infer the type from the config object and parse accordingly
const isNumber = typeof configs[config][0] === 'number';
const value = isNumber ? +match[2] : match[2];
if (!cliOptions[config])
cliOptions[config] = [];
cliOptions[config].push(value);
} else {
extraOptions[config] = match[2];
}
}
return { cli: Object.assign({}, configs, cliOptions), extra: extraOptions };
};
var bm = new Benchmark(test.name, {
defer: true,
fn: function(deferred) {
test.exec(function(err) {
if (err) throw err;
Benchmark.prototype._queue = function(options) {
const queue = [];
const keys = Object.keys(options);
memMax = Math.max(memMax, process.memoryUsage().rss);
// Perform a depth-first walk though all options to generate a
// configuration list that contains all combinations.
function recursive(keyIndex, prevConfig) {
const key = keys[keyIndex];
const values = options[key];
const type = typeof values[0];
deferred.resolve();
});
for (const value of values) {
if (typeof value !== 'number' && typeof value !== 'string') {
throw new TypeError(`configuration "${key}" had type ${typeof value}`);
}
if (typeof value !== type) {
// This is a requirement for being able to consistently and predictably
// parse CLI provided configuration values.
throw new TypeError(`configuration "${key}" has mixed types`);
}
const currConfig = Object.assign({ [key]: value }, prevConfig);
if (keyIndex + 1 < keys.length) {
recursive(keyIndex + 1, currConfig);
} else {
queue.push(currConfig);
}
}
}
if (keys.length > 0) {
recursive(0, {});
} else {
queue.push({});
}
return queue;
};
Benchmark.prototype._run = function() {
const self = this;
// If forked, report to the parent.
if (process.send) {
process.send({
type: 'config',
name: this.name,
queueLength: this.queue.length,
});
}
bm.on("complete", function(event) {
console.log(String(event.target))
console.log("Memory:", (memMax - memStart)/1024/1024, "MiB")
(function recursive(queueIndex) {
const config = self.queue[queueIndex];
test.teardown(function(err) {
if (err) throw err;
});
// Set NODE_RUN_BENCHMARK_FN to indicate that the child shouldn't construct
// a configuration queue, but just execute the benchmark function.
const childEnv = Object.assign({}, process.env);
childEnv.NODE_RUN_BENCHMARK_FN = '';
// Create configuration arguments
const childArgs = [];
for (const key of Object.keys(config)) {
childArgs.push(`${key}=${config[key]}`);
}
for (const key of Object.keys(self.extra_options)) {
childArgs.push(`${key}=${self.extra_options[key]}`);
}
const child = child_process.fork(require.main.filename, childArgs, {
env: childEnv,
execArgv: self.flags.concat(process.execArgv),
});
child.on('message', sendResult);
child.on('close', (code) => {
if (code) {
process.exit(code);
}
bm.run({ "async": true });
if (queueIndex + 1 < self.queue.length) {
recursive(queueIndex + 1);
}
});
})(0);
};
Benchmark.prototype.start = function() {
if (this._started) {
throw new Error('Called start more than once in a single benchmark');
}
this._started = true;
this._observer.observe({ entryTypes: ['gc'], buffered: false });
this._time = process.hrtime();
};
Benchmark.prototype.end = function(operations) {
// Get elapsed time now and do error checking later for accuracy.
const elapsed = process.hrtime(this._time);
if (!this._started) {
throw new Error('called end without start');
}
if (typeof operations !== 'number') {
throw new Error('called end() without specifying operation count');
}
if (!process.env.NODEJS_BENCHMARK_ZERO_ALLOWED && operations <= 0) {
throw new Error('called end() with operation count <= 0');
}
if (elapsed[0] === 0 && elapsed[1] === 0) {
if (!process.env.NODEJS_BENCHMARK_ZERO_ALLOWED)
throw new Error('insufficient clock precision for short benchmark');
// Avoid dividing by zero
elapsed[1] = 1;
}
this._observer.disconnect();
const time = elapsed[0] + elapsed[1] / 1e9;
const rate = operations / time;
this.report(rate, elapsed);
};
function formatResult(data) {
// Construct configuration string, " A=a, B=b, ..."
let conf = '';
for (const key of Object.keys(data.conf)) {
conf += ` ${key}=${JSON.stringify(data.conf[key])}`;
}
var rate = data.rate.toString().split('.');
rate[0] = rate[0].replace(/(\d)(?=(?:\d\d\d)+(?!\d))/g, '$1,');
rate = (rate[1] ? rate.join('.') : rate[0]);
var gcInfo;
gcInfo = `(minor: ${data.gcStats[NODE_PERFORMANCE_GC_MINOR].count} - ${data.gcStats[NODE_PERFORMANCE_GC_MINOR].totalDuration}ms,`;
gcInfo += ` major: ${data.gcStats[NODE_PERFORMANCE_GC_MAJOR].count} - ${data.gcStats[NODE_PERFORMANCE_GC_MAJOR].totalDuration}ms,`;
gcInfo += ` incremental: ${data.gcStats[NODE_PERFORMANCE_GC_INCREMENTAL].count} - ${data.gcStats[NODE_PERFORMANCE_GC_INCREMENTAL].totalDuration}ms)`;
return `${data.name}${conf}: ${rate} ${gcInfo}`;
}
function sendResult(data) {
if (process.send) {
// If forked, report by process send
process.send(data);
} else {
// Otherwise report by stdout
console.log(formatResult(data));
}
}
Benchmark.prototype.report = function(rate, elapsed) {
sendResult({
name: this.name,
conf: this.config,
rate: rate,
time: elapsed[0] + elapsed[1] / 1e9,
type: 'report',
gcStats: this._gcStats
});
};
function createBenchmark(fn, configs, options) {
return new Benchmark(fn, configs, options);
}
function runProfile(test) {
test.setup(function(err) {
if (err) throw err;
function createConnection(cb) {
var config = JSON.parse(fs.readFileSync(require('os').homedir() + '/.tedious/test-connection.json', 'utf8')).config;
async.timesSeries(test.profileIterations, function(n, done) {
async.setImmediate(function() {
console.log("[Iteration " + n + "]");
test.exec(done);
});
}, function(err) {
if (err) throw err;
test.teardown(function(err) {
if (err) throw err;
});
});
var connection = new Connection(config);
connection.on('connect', function() {
cb(connection);
});

@@ -82,2 +290,1 @@ }

module.exports.createConnection = createConnection;

25

benchmarks/README.md

@@ -5,7 +5,6 @@ # Tedious Benchmarks

Running all existing benchmarks is easy, just execute the following from
inside the `tedious` root folder:
Running an existing benchmark is easy, simply execute the benchmark file with `node`:
```sh
node benchmarks
node benchmarks/query/select-many-rows.js
```

@@ -15,21 +14,1 @@

you run `npm run prepublish` first.
This will serially execute every available benchmark test in a
seperate Node.js process. Running each benchmark in a separate process
ensures that each benchmark is run with a clean slate.
You can also execute a specific benchmarks:
```sh
node benchmarks/<type>/<benchmark-name>
```
The benchmarks are executed by using the `benchmark` module. Unfortunately,
this module can add a bit of useless noise when trying to collect profiling
information. To reduce this noise, benchmarks can be run in a special "profile"
mode. This will execute the benchmark's code without making use of `benchmark`
library and with a fixed number of iterations.
```sh
node benchmarks/<type>/<benchmark-name> --profile
```

@@ -1,42 +0,22 @@

var tedious = require("../../lib/tedious");
var Request = tedious.Request;
var TYPES = tedious.TYPES;
const { createBenchmark } = require('../common');
var Parser = require("../../lib/token/token-stream-parser").Parser;
const { Parser } = require('../../src/token/token-stream-parser');
var common = require("../common");
const bench = createBenchmark(main, {
n: [10, 100, 1000],
tokenCount: [10, 100, 1000, 10000]
});
var parser = new Parser({ token: function() { } }, {}, {});
function main({ n, tokenCount }) {
const parser = new Parser({ token: function() { } }, {}, {});
var tokenCount = 50;
var data = Buffer.from(new Array(tokenCount).join("810300000000001000380269006400000000000900e7c8000904d00034046e0061006d006500000000000900e7ffff0904d000340b6400650073006300720069007000740069006f006e00"), "hex");
const data = Buffer.from('810300000000001000380269006400000000000900e7c8000904d00034046e0061006d006500000000000900e7ffff0904d000340b6400650073006300720069007000740069006f006e00'.repeat(tokenCount), 'hex');
common.createBenchmark({
name: "parsing `COLMETADATA` tokens",
bench.start();
profileIterations: 3000,
setup: function(cb) {
cb();
},
exec: function(cb) {
var count = 0;
parser.on("columnMetadata", function() {
count += 1;
if (count === tokenCount - 1) {
parser.removeAllListeners("columnMetadata");
cb();
}
});
for (let i = 0; i < n; i++) {
parser.addBuffer(data);
},
}
teardown: function(cb) {
cb();
}
});
bench.end(n);
}

@@ -1,42 +0,22 @@

var tedious = require("../../lib/tedious");
var Request = tedious.Request;
var TYPES = tedious.TYPES;
const { createBenchmark } = require('../common');
var Parser = require("../../lib/token/token-stream-parser").Parser;
const { Parser } = require('../../src/token/token-stream-parser');
var common = require("../common");
const bench = createBenchmark(main, {
n: [10, 100, 1000],
tokenCount: [10, 100, 1000, 10000]
});
var parser = new Parser({ token: function() { } }, {}, {});
function main({ n, tokenCount }) {
const parser = new Parser({ token: function() { } }, {}, {});
var tokenCount = 500;
var data = Buffer.from(new Array(tokenCount).join("FE0000E0000000000000000000"), "hex");
const data = Buffer.from('FE0000E0000000000000000000'.repeat(tokenCount), 'hex');
common.createBenchmark({
name: "parsing `DONEPROC` tokens",
bench.start();
profileIterations: 3000,
setup: function(cb) {
cb();
},
exec: function(cb) {
var count = 0;
parser.on("doneProc", function() {
count += 1;
if (count === tokenCount - 1) {
parser.removeAllListeners("doneProc");
cb();
}
});
for (let i = 0; i < n; i++) {
parser.addBuffer(data);
},
}
teardown: function(cb) {
cb();
}
});
bench.end(n);
}

@@ -1,366 +0,353 @@

var tedious = require("../../lib/tedious");
var Request = tedious.Request;
var TYPES = tedious.TYPES;
const { createBenchmark } = require('../common');
var Parser = require("../../lib/token/token-stream-parser").Parser;
const { Parser } = require('../../src/token/token-stream-parser');
var common = require("../common");
const bench = createBenchmark(main, {
n: [10, 100, 1000]
});
var parser = new Parser({ token: function() { } }, {}, {});
var data = Buffer.from([
"810300000000001000380269006400000000000900E7C8000904D00034046E00",
"61006D006500000000000900E7FFFF0904D000340B6400650073006300720069",
"007000740069006F006E00D1010000000A0052006F0077002000300044000000",
"00000000440000004500780061006D0070006C00650020005400650073007400",
"20004400650073006300720069007000740069006F006E00200066006F007200",
"200052006F0077002000300000000000D1020000000A0052006F007700200031",
"004400000000000000440000004500780061006D0070006C0065002000540065",
"007300740020004400650073006300720069007000740069006F006E00200066",
"006F007200200052006F0077002000310000000000D1030000000A0052006F00",
"7700200032004400000000000000440000004500780061006D0070006C006500",
"2000540065007300740020004400650073006300720069007000740069006F00",
"6E00200066006F007200200052006F0077002000320000000000D1040000000A",
"0052006F007700200033004400000000000000440000004500780061006D0070",
"006C006500200054006500730074002000440065007300630072006900700074",
"0069006F006E00200066006F007200200052006F0077002000330000000000D1",
"050000000A0052006F0077002000340044000000000000004400000045007800",
"61006D0070006C00650020005400650073007400200044006500730063007200",
"69007000740069006F006E00200066006F007200200052006F00770020003400",
"00000000D1060000000A0052006F007700200035004400000000000000440000",
"004500780061006D0070006C0065002000540065007300740020004400650073",
"006300720069007000740069006F006E00200066006F007200200052006F0077",
"002000350000000000D1070000000A0052006F00770020003600440000000000",
"0000440000004500780061006D0070006C006500200054006500730074002000",
"4400650073006300720069007000740069006F006E00200066006F0072002000",
"52006F0077002000360000000000D1080000000A0052006F0077002000370044",
"00000000000000440000004500780061006D0070006C00650020005400650073",
"00740020004400650073006300720069007000740069006F006E00200066006F",
"007200200052006F0077002000370000000000D1090000000A0052006F007700",
"200038004400000000000000440000004500780061006D0070006C0065002000",
"540065007300740020004400650073006300720069007000740069006F006E00",
"200066006F007200200052006F0077002000380000000000D10A0000000A0052",
"006F007700200039004400000000000000440000004500780061006D0070006C",
"0065002000540065007300740020004400650073006300720069007000740069",
"006F006E00200066006F007200200052006F0077002000390000000000D10B00",
"00000C0052006F00770020003100300046000000000000004600000045007800",
"61006D0070006C00650020005400650073007400200044006500730063007200",
"69007000740069006F006E00200066006F007200200052006F00770020003100",
"300000000000D10C0000000C0052006F00770020003100310046000000000000",
"00460000004500780061006D0070006C00650020005400650073007400200044",
"00650073006300720069007000740069006F006E00200066006F007200200052",
"006F00770020003100310000000000D10D0000000C0052006F00770020003100",
"32004600000000000000460000004500780061006D0070006C00650020005400",
"65007300740020004400650073006300720069007000740069006F006E002000",
"66006F007200200052006F00770020003100320000000000D10E0000000C0052",
"006F0077002000310033004600000000000000460000004500780061006D0070",
"006C006500200054006500730074002000440065007300630072006900700074",
"0069006F006E00200066006F007200200052006F007700200031003300000000",
"00D10F0000000C0052006F007700200031003400460000000000000046000000",
"4500780061006D0070006C006500200054006500730074002000440065007300",
"6300720069007000740069006F006E00200066006F007200200052006F007700",
"20003100340000000000D1100000000C0052006F007700200031003500460000",
"0000000000460000004500780061006D0070006C006500200054006500730074",
"0020004400650073006300720069007000740069006F006E00200066006F0072",
"00200052006F00770020003100350000000000D1110000000C0052006F007700",
"2000310036004600000000000000460000004500780061006D0070006C006500",
"2000540065007300740020004400650073006300720069007000740069006F00",
"6E00200066006F007200200052006F00770020003100360000000000D1120000",
"000C0052006F0077002000310037004600000000000000460000004500780061",
"006D0070006C0065002000540065007300740020004400650073006300720069",
"007000740069006F006E00200066006F007200200052006F0077002000310037",
"0000000000D1130000000C0052006F0077002000310038004600000000000000",
"460000004500780061006D0070006C0065002000540065007300740020004400",
"650073006300720069007000740069006F006E00200066006F00720020005200",
"6F00770020003100380000000000D1140000000C0052006F0077002000310039",
"004600000000000000460000004500780061006D0070006C0065002000540065",
"007300740020004400650073006300720069007000740069006F006E00200066",
"006F007200200052006F00770020003100390000000000D1150000000C005200",
"6F0077002000320030004600000000000000460000004500780061006D007000",
"6C00650020005400650073007400200044006500730063007200690070007400",
"69006F006E00200066006F007200200052006F00770020003200300000000000",
"D1160000000C0052006F00770020003200310046000000000000004600000045",
"00780061006D0070006C00650020005400650073007400200044006500730063",
"00720069007000740069006F006E00200066006F007200200052006F00770020",
"003200310000000000D1170000000C0052006F00770020003200320046000000",
"00000000460000004500780061006D0070006C00650020005400650073007400",
"20004400650073006300720069007000740069006F006E00200066006F007200",
"200052006F00770020003200320000000000D1180000000C0052006F00770020",
"00320033004600000000000000460000004500780061006D0070006C00650020",
"00540065007300740020004400650073006300720069007000740069006F006E",
"00200066006F007200200052006F00770020003200330000000000D119000000",
"0C0052006F007700200032003400460000000000000046000000450078006100",
"6D0070006C006500200054006500730074002000440065007300630072006900",
"7000740069006F006E00200066006F007200200052006F007700200032003400",
"00000000D11A0000000C0052006F007700200032003500460000000000000046",
"0000004500780061006D0070006C006500200054006500730074002000440065",
"0073006300720069007000740069006F006E00200066006F007200200052006F",
"00770020003200350000000000D11B0000000C0052006F007700200032003600",
"4600000000000000460000004500780061006D0070006C006500200054006500",
"7300740020004400650073006300720069007000740069006F006E0020006600",
"6F007200200052006F00770020003200360000000000D11C0000000C0052006F",
"0077002000320037004600000000000000460000004500780061006D0070006C",
"0065002000540065007300740020004400650073006300720069007000740069",
"006F006E00200066006F007200200052006F00770020003200370000000000D1",
"1D0000000C0052006F0077002000320038004600000000000000460000004500",
"780061006D0070006C0065002000540065007300740020004400650073006300",
"720069007000740069006F006E00200066006F007200200052006F0077002000",
"3200380000000000D11E0000000C0052006F0077002000320039004600000000",
"000000460000004500780061006D0070006C0065002000540065007300740020",
"004400650073006300720069007000740069006F006E00200066006F00720020",
"0052006F00770020003200390000000000D11F0000000C0052006F0077002000",
"330030004600000000000000460000004500780061006D0070006C0065002000",
"540065007300740020004400650073006300720069007000740069006F006E00",
"200066006F007200200052006F00770020003300300000000000D1200000000C",
"0052006F0077002000330031004600000000000000460000004500780061006D",
"0070006C00650020005400650073007400200044006500730063007200690070",
"00740069006F006E00200066006F007200200052006F00770020003300310000",
"000000D1210000000C0052006F00770020003300320046000000000000004600",
"00004500780061006D0070006C00650020005400650073007400200044006500",
"73006300720069007000740069006F006E00200066006F007200200052006F00",
"770020003300320000000000D1220000000C0052006F00770020003300330046",
"00000000000000460000004500780061006D0070006C00650020005400650073",
"00740020004400650073006300720069007000740069006F006E00200066006F",
"007200200052006F00770020003300330000000000D1230000000C0052006F00",
"77002000330034004600000000000000460000004500780061006D0070006C00",
"6500200054006500730074002000440065007300630072006900700074006900",
"6F006E00200066006F007200200052006F00770020003300340000000000D124",
"0000000C0052006F007700200033003500460000000000000046000000450078",
"0061006D0070006C006500200054006500730074002000440065007300630072",
"0069007000740069006F006E00200066006F007200200052006F007700200033",
"00350000000000D1250000000C0052006F007700200033003600460000000000",
"0000460000004500780061006D0070006C006500200054006500730074002000",
"4400650073006300720069007000740069006F006E00200066006F0072002000",
"52006F00770020003300360000000000D1260000000C0052006F007700200033",
"0037004600000000000000460000004500780061006D0070006C006500200054",
"0065007300740020004400650073006300720069007000740069006F006E0020",
"0066006F007200200052006F00770020003300370000000000D1270000000C00",
"52006F0077002000330038004600000000000000200000004500780061006D00",
"70006C006500200054006500730074002000440065007300",
"260000006300720069007000740069006F006E00200066006F00720020005200",
"6F00770020003300380000000000D1280000000C0052006F0077002000330039",
"004600000000000000460000004500780061006D0070006C0065002000540065",
"007300740020004400650073006300720069007000740069006F006E00200066",
"006F007200200052006F00770020003300390000000000D1290000000C005200",
"6F0077002000340030004600000000000000460000004500780061006D007000",
"6C00650020005400650073007400200044006500730063007200690070007400",
"69006F006E00200066006F007200200052006F00770020003400300000000000",
"D12A0000000C0052006F00770020003400310046000000000000004600000045",
"00780061006D0070006C00650020005400650073007400200044006500730063",
"00720069007000740069006F006E00200066006F007200200052006F00770020",
"003400310000000000D12B0000000C0052006F00770020003400320046000000",
"00000000460000004500780061006D0070006C00650020005400650073007400",
"20004400650073006300720069007000740069006F006E00200066006F007200",
"200052006F00770020003400320000000000D12C0000000C0052006F00770020",
"00340033004600000000000000460000004500780061006D0070006C00650020",
"00540065007300740020004400650073006300720069007000740069006F006E",
"00200066006F007200200052006F00770020003400330000000000D12D000000",
"0C0052006F007700200034003400460000000000000046000000450078006100",
"6D0070006C006500200054006500730074002000440065007300630072006900",
"7000740069006F006E00200066006F007200200052006F007700200034003400",
"00000000D12E0000000C0052006F007700200034003500460000000000000046",
"0000004500780061006D0070006C006500200054006500730074002000440065",
"0073006300720069007000740069006F006E00200066006F007200200052006F",
"00770020003400350000000000D12F0000000C0052006F007700200034003600",
"4600000000000000460000004500780061006D0070006C006500200054006500",
"7300740020004400650073006300720069007000740069006F006E0020006600",
"6F007200200052006F00770020003400360000000000D1300000000C0052006F",
"0077002000340037004600000000000000460000004500780061006D0070006C",
"0065002000540065007300740020004400650073006300720069007000740069",
"006F006E00200066006F007200200052006F00770020003400370000000000D1",
"310000000C0052006F0077002000340038004600000000000000460000004500",
"780061006D0070006C0065002000540065007300740020004400650073006300",
"720069007000740069006F006E00200066006F007200200052006F0077002000",
"3400380000000000D1320000000C0052006F0077002000340039004600000000",
"000000460000004500780061006D0070006C0065002000540065007300740020",
"004400650073006300720069007000740069006F006E00200066006F00720020",
"0052006F00770020003400390000000000D1330000000C0052006F0077002000",
"350030004600000000000000460000004500780061006D0070006C0065002000",
"540065007300740020004400650073006300720069007000740069006F006E00",
"200066006F007200200052006F00770020003500300000000000D1340000000C",
"0052006F0077002000350031004600000000000000460000004500780061006D",
"0070006C00650020005400650073007400200044006500730063007200690070",
"00740069006F006E00200066006F007200200052006F00770020003500310000",
"000000D1350000000C0052006F00770020003500320046000000000000004600",
"00004500780061006D0070006C00650020005400650073007400200044006500",
"73006300720069007000740069006F006E00200066006F007200200052006F00",
"770020003500320000000000D1360000000C0052006F00770020003500330046",
"00000000000000460000004500780061006D0070006C00650020005400650073",
"00740020004400650073006300720069007000740069006F006E00200066006F",
"007200200052006F00770020003500330000000000D1370000000C0052006F00",
"77002000350034004600000000000000460000004500780061006D0070006C00",
"6500200054006500730074002000440065007300630072006900700074006900",
"6F006E00200066006F007200200052006F00770020003500340000000000D138",
"0000000C0052006F007700200035003500460000000000000046000000450078",
"0061006D0070006C006500200054006500730074002000440065007300630072",
"0069007000740069006F006E00200066006F007200200052006F007700200035",
"00350000000000D1390000000C0052006F007700200035003600460000000000",
"0000460000004500780061006D0070006C006500200054006500730074002000",
"4400650073006300720069007000740069006F006E00200066006F0072002000",
"52006F00770020003500360000000000D13A0000000C0052006F007700200035",
"0037004600000000000000460000004500780061006D0070006C006500200054",
"0065007300740020004400650073006300720069007000740069006F006E0020",
"0066006F007200200052006F00770020003500370000000000D13B0000000C00",
"52006F0077002000350038004600000000000000460000004500780061006D00",
"70006C0065002000540065007300740020004400650073006300720069007000",
"740069006F006E00200066006F007200200052006F0077002000350038000000",
"0000D13C0000000C0052006F0077002000350039004600000000000000460000",
"004500780061006D0070006C0065002000540065007300740020004400650073",
"006300720069007000740069006F006E00200066006F007200200052006F0077",
"0020003500390000000000D13D0000000C0052006F0077002000360030004600",
"000000000000460000004500780061006D0070006C0065002000540065007300",
"740020004400650073006300720069007000740069006F006E00200066006F00",
"7200200052006F00770020003600300000000000D13E0000000C0052006F0077",
"002000360031004600000000000000460000004500780061006D0070006C0065",
"002000540065007300740020004400650073006300720069007000740069006F",
"006E00200066006F007200200052006F00770020003600310000000000D13F00",
"00000C0052006F00770020003600320046000000000000004600000045007800",
"61006D0070006C00650020005400650073007400200044006500730063007200",
"69007000740069006F006E00200066006F007200200052006F00770020003600",
"320000000000D1400000000C0052006F00770020003600330046000000000000",
"00460000004500780061006D0070006C00650020005400650073007400200044",
"00650073006300720069007000740069006F006E00200066006F007200200052",
"006F00770020003600330000000000D1410000000C0052006F00770020003600",
"34004600000000000000460000004500780061006D0070006C00650020005400",
"65007300740020004400650073006300720069007000740069006F006E002000",
"66006F007200200052006F00770020003600340000000000D1420000000C0052",
"006F0077002000360035004600000000000000460000004500780061006D0070",
"006C006500200054006500730074002000440065007300630072006900700074",
"0069006F006E00200066006F007200200052006F007700200036003500000000",
"00D1430000000C0052006F007700200036003600460000000000000046000000",
"4500780061006D0070006C006500200054006500730074002000440065007300",
"6300720069007000740069006F006E00200066006F007200200052006F007700",
"20003600360000000000D1440000000C0052006F007700200036003700460000",
"0000000000460000004500780061006D0070006C006500200054006500730074",
"0020004400650073006300720069007000740069006F006E00200066006F0072",
"00200052006F00770020003600370000000000D1450000000C0052006F007700",
"2000360038004600000000000000460000004500780061006D0070006C006500",
"2000540065007300740020004400650073006300720069007000740069006F00",
"6E00200066006F007200200052006F00770020003600380000000000D1460000",
"000C0052006F0077002000360039004600000000000000460000004500780061",
"006D0070006C0065002000540065007300740020004400650073006300720069",
"007000740069006F006E00200066006F007200200052006F0077002000360039",
"0000000000D1470000000C0052006F0077002000370030004600000000000000",
"460000004500780061006D0070006C0065002000540065007300740020004400",
"650073006300720069007000740069006F006E00200066006F00720020005200",
"6F00770020003700300000000000D1480000000C0052006F0077002000370031",
"004600000000000000460000004500780061006D0070006C0065002000540065",
"007300740020004400650073006300720069007000740069006F006E00200066",
"006F007200200052006F00770020003700310000000000D1490000000C005200",
"6F0077002000370032004600000000000000460000004500780061006D007000",
"6C00650020005400650073007400200044006500730063007200690070007400",
"69006F006E00200066006F007200200052006F00770020003700320000000000",
"D14A0000000C0052006F00770020003700330046000000000000004600000045",
"00780061006D0070006C00650020005400650073007400200044006500730063",
"00720069007000740069006F006E00200066006F007200200052006F00770020",
"003700330000000000D14B0000000C0052006F00770020003700340046000000",
"00000000460000004500780061006D0070006C00650020005400650073007400",
"20004400650073006300720069007000740069006F006E00200066006F007200",
"200052006F00770020003700340000000000D14C0000000C0052006F00770020",
"00370035004600000000000000460000004500780061006D0070006C00650020",
"00540065007300740020004400650073006300720069007000740069006F006E",
"00200066006F007200200052006F00770020003700350000000000D14D000000",
"0C0052006F007700200037003600460000000000000046000000450078006100",
"6D0070006C006500200054006500730074002000440065007300630072006900",
"7000740069006F006E00200066006F007200200052006F007700200037003600",
"00000000D14E0000000C0052006F007700200037003700460000000000000015",
"0000004500780061006D0070006C00650020005400650073",
"3100000000740020004400650073006300720069007000740069006F006E0020",
"0066006F007200200052006F00770020003700370000000000D14F0000000C00",
"52006F0077002000370038004600000000000000460000004500780061006D00",
"70006C0065002000540065007300740020004400650073006300720069007000",
"740069006F006E00200066006F007200200052006F0077002000370038000000",
"0000D1500000000C0052006F0077002000370039004600000000000000460000",
"004500780061006D0070006C0065002000540065007300740020004400650073",
"006300720069007000740069006F006E00200066006F007200200052006F0077",
"0020003700390000000000D1510000000C0052006F0077002000380030004600",
"000000000000460000004500780061006D0070006C0065002000540065007300",
"740020004400650073006300720069007000740069006F006E00200066006F00",
"7200200052006F00770020003800300000000000D1520000000C0052006F0077",
"002000380031004600000000000000460000004500780061006D0070006C0065",
"002000540065007300740020004400650073006300720069007000740069006F",
"006E00200066006F007200200052006F00770020003800310000000000D15300",
"00000C0052006F00770020003800320046000000000000004600000045007800",
"61006D0070006C00650020005400650073007400200044006500730063007200",
"69007000740069006F006E00200066006F007200200052006F00770020003800",
"320000000000D1540000000C0052006F00770020003800330046000000000000",
"00460000004500780061006D0070006C00650020005400650073007400200044",
"00650073006300720069007000740069006F006E00200066006F007200200052",
"006F00770020003800330000000000D1550000000C0052006F00770020003800",
"34004600000000000000460000004500780061006D0070006C00650020005400",
"65007300740020004400650073006300720069007000740069006F006E002000",
"66006F007200200052006F00770020003800340000000000D1560000000C0052",
"006F0077002000380035004600000000000000460000004500780061006D0070",
"006C006500200054006500730074002000440065007300630072006900700074",
"0069006F006E00200066006F007200200052006F007700200038003500000000",
"00D1570000000C0052006F007700200038003600460000000000000046000000",
"4500780061006D0070006C006500200054006500730074002000440065007300",
"6300720069007000740069006F006E00200066006F007200200052006F007700",
"20003800360000000000D1580000000C0052006F007700200038003700460000",
"0000000000460000004500780061006D0070006C006500200054006500730074",
"0020004400650073006300720069007000740069006F006E00200066006F0072",
"00200052006F00770020003800370000000000D1590000000C0052006F007700",
"2000380038004600000000000000460000004500780061006D0070006C006500",
"2000540065007300740020004400650073006300720069007000740069006F00",
"6E00200066006F007200200052006F00770020003800380000000000D15A0000",
"000C0052006F0077002000380039004600000000000000460000004500780061",
"006D0070006C0065002000540065007300740020004400650073006300720069",
"007000740069006F006E00200066006F007200200052006F0077002000380039",
"0000000000D15B0000000C0052006F0077002000390030004600000000000000",
"460000004500780061006D0070006C0065002000540065007300740020004400",
"650073006300720069007000740069006F006E00200066006F00720020005200",
"6F00770020003900300000000000D15C0000000C0052006F0077002000390031",
"004600000000000000460000004500780061006D0070006C0065002000540065",
"007300740020004400650073006300720069007000740069006F006E00200066",
"006F007200200052006F00770020003900310000000000D15D0000000C005200",
"6F0077002000390032004600000000000000460000004500780061006D007000",
"6C00650020005400650073007400200044006500730063007200690070007400",
"69006F006E00200066006F007200200052006F00770020003900320000000000",
"D15E0000000C0052006F00770020003900330046000000000000004600000045",
"00780061006D0070006C00650020005400650073007400200044006500730063",
"00720069007000740069006F006E00200066006F007200200052006F00770020",
"003900330000000000D15F0000000C0052006F00770020003900340046000000",
"00000000460000004500780061006D0070006C00650020005400650073007400",
"20004400650073006300720069007000740069006F006E00200066006F007200",
"200052006F00770020003900340000000000D1600000000C0052006F00770020",
"00390035004600000000000000460000004500780061006D0070006C00650020",
"00540065007300740020004400650073006300720069007000740069006F006E",
"00200066006F007200200052006F00770020003900350000000000D161000000",
"0C0052006F007700200039003600460000000000000046000000450078006100",
"6D0070006C006500200054006500730074002000440065007300630072006900",
"7000740069006F006E00200066006F007200200052006F007700200039003600",
"00000000D1620000000C0052006F007700200039003700460000000000000046",
"0000004500780061006D0070006C006500200054006500730074002000440065",
"0073006300720069007000740069006F006E00200066006F007200200052006F",
"00770020003900370000000000D1630000000C0052006F007700200039003800",
"4600000000000000460000004500780061006D0070006C006500200054006500",
"7300740020004400650073006300720069007000740069006F006E0020006600",
"6F007200200052006F00770020003900380000000000D1640000000C0052006F",
"0077002000390039004600000000000000460000004500780061006D0070006C",
"0065002000540065007300740020004400650073006300720069007000740069",
"006F006E00200066006F007200200052006F00770020003900390000000000FF",
"1100C10064000000000000007900000000FE0000E0000000000000000000"
].join(""), "hex");
function main({ n }) {
const parser = new Parser({ token: function() { } }, {}, {});
common.createBenchmark({
name: "parsing tokens for 100 rows",
const data = Buffer.from([
'810300000000001000380269006400000000000900E7C8000904D00034046E00',
'61006D006500000000000900E7FFFF0904D000340B6400650073006300720069',
'007000740069006F006E00D1010000000A0052006F0077002000300044000000',
'00000000440000004500780061006D0070006C00650020005400650073007400',
'20004400650073006300720069007000740069006F006E00200066006F007200',
'200052006F0077002000300000000000D1020000000A0052006F007700200031',
'004400000000000000440000004500780061006D0070006C0065002000540065',
'007300740020004400650073006300720069007000740069006F006E00200066',
'006F007200200052006F0077002000310000000000D1030000000A0052006F00',
'7700200032004400000000000000440000004500780061006D0070006C006500',
'2000540065007300740020004400650073006300720069007000740069006F00',
'6E00200066006F007200200052006F0077002000320000000000D1040000000A',
'0052006F007700200033004400000000000000440000004500780061006D0070',
'006C006500200054006500730074002000440065007300630072006900700074',
'0069006F006E00200066006F007200200052006F0077002000330000000000D1',
'050000000A0052006F0077002000340044000000000000004400000045007800',
'61006D0070006C00650020005400650073007400200044006500730063007200',
'69007000740069006F006E00200066006F007200200052006F00770020003400',
'00000000D1060000000A0052006F007700200035004400000000000000440000',
'004500780061006D0070006C0065002000540065007300740020004400650073',
'006300720069007000740069006F006E00200066006F007200200052006F0077',
'002000350000000000D1070000000A0052006F00770020003600440000000000',
'0000440000004500780061006D0070006C006500200054006500730074002000',
'4400650073006300720069007000740069006F006E00200066006F0072002000',
'52006F0077002000360000000000D1080000000A0052006F0077002000370044',
'00000000000000440000004500780061006D0070006C00650020005400650073',
'00740020004400650073006300720069007000740069006F006E00200066006F',
'007200200052006F0077002000370000000000D1090000000A0052006F007700',
'200038004400000000000000440000004500780061006D0070006C0065002000',
'540065007300740020004400650073006300720069007000740069006F006E00',
'200066006F007200200052006F0077002000380000000000D10A0000000A0052',
'006F007700200039004400000000000000440000004500780061006D0070006C',
'0065002000540065007300740020004400650073006300720069007000740069',
'006F006E00200066006F007200200052006F0077002000390000000000D10B00',
'00000C0052006F00770020003100300046000000000000004600000045007800',
'61006D0070006C00650020005400650073007400200044006500730063007200',
'69007000740069006F006E00200066006F007200200052006F00770020003100',
'300000000000D10C0000000C0052006F00770020003100310046000000000000',
'00460000004500780061006D0070006C00650020005400650073007400200044',
'00650073006300720069007000740069006F006E00200066006F007200200052',
'006F00770020003100310000000000D10D0000000C0052006F00770020003100',
'32004600000000000000460000004500780061006D0070006C00650020005400',
'65007300740020004400650073006300720069007000740069006F006E002000',
'66006F007200200052006F00770020003100320000000000D10E0000000C0052',
'006F0077002000310033004600000000000000460000004500780061006D0070',
'006C006500200054006500730074002000440065007300630072006900700074',
'0069006F006E00200066006F007200200052006F007700200031003300000000',
'00D10F0000000C0052006F007700200031003400460000000000000046000000',
'4500780061006D0070006C006500200054006500730074002000440065007300',
'6300720069007000740069006F006E00200066006F007200200052006F007700',
'20003100340000000000D1100000000C0052006F007700200031003500460000',
'0000000000460000004500780061006D0070006C006500200054006500730074',
'0020004400650073006300720069007000740069006F006E00200066006F0072',
'00200052006F00770020003100350000000000D1110000000C0052006F007700',
'2000310036004600000000000000460000004500780061006D0070006C006500',
'2000540065007300740020004400650073006300720069007000740069006F00',
'6E00200066006F007200200052006F00770020003100360000000000D1120000',
'000C0052006F0077002000310037004600000000000000460000004500780061',
'006D0070006C0065002000540065007300740020004400650073006300720069',
'007000740069006F006E00200066006F007200200052006F0077002000310037',
'0000000000D1130000000C0052006F0077002000310038004600000000000000',
'460000004500780061006D0070006C0065002000540065007300740020004400',
'650073006300720069007000740069006F006E00200066006F00720020005200',
'6F00770020003100380000000000D1140000000C0052006F0077002000310039',
'004600000000000000460000004500780061006D0070006C0065002000540065',
'007300740020004400650073006300720069007000740069006F006E00200066',
'006F007200200052006F00770020003100390000000000D1150000000C005200',
'6F0077002000320030004600000000000000460000004500780061006D007000',
'6C00650020005400650073007400200044006500730063007200690070007400',
'69006F006E00200066006F007200200052006F00770020003200300000000000',
'D1160000000C0052006F00770020003200310046000000000000004600000045',
'00780061006D0070006C00650020005400650073007400200044006500730063',
'00720069007000740069006F006E00200066006F007200200052006F00770020',
'003200310000000000D1170000000C0052006F00770020003200320046000000',
'00000000460000004500780061006D0070006C00650020005400650073007400',
'20004400650073006300720069007000740069006F006E00200066006F007200',
'200052006F00770020003200320000000000D1180000000C0052006F00770020',
'00320033004600000000000000460000004500780061006D0070006C00650020',
'00540065007300740020004400650073006300720069007000740069006F006E',
'00200066006F007200200052006F00770020003200330000000000D119000000',
'0C0052006F007700200032003400460000000000000046000000450078006100',
'6D0070006C006500200054006500730074002000440065007300630072006900',
'7000740069006F006E00200066006F007200200052006F007700200032003400',
'00000000D11A0000000C0052006F007700200032003500460000000000000046',
'0000004500780061006D0070006C006500200054006500730074002000440065',
'0073006300720069007000740069006F006E00200066006F007200200052006F',
'00770020003200350000000000D11B0000000C0052006F007700200032003600',
'4600000000000000460000004500780061006D0070006C006500200054006500',
'7300740020004400650073006300720069007000740069006F006E0020006600',
'6F007200200052006F00770020003200360000000000D11C0000000C0052006F',
'0077002000320037004600000000000000460000004500780061006D0070006C',
'0065002000540065007300740020004400650073006300720069007000740069',
'006F006E00200066006F007200200052006F00770020003200370000000000D1',
'1D0000000C0052006F0077002000320038004600000000000000460000004500',
'780061006D0070006C0065002000540065007300740020004400650073006300',
'720069007000740069006F006E00200066006F007200200052006F0077002000',
'3200380000000000D11E0000000C0052006F0077002000320039004600000000',
'000000460000004500780061006D0070006C0065002000540065007300740020',
'004400650073006300720069007000740069006F006E00200066006F00720020',
'0052006F00770020003200390000000000D11F0000000C0052006F0077002000',
'330030004600000000000000460000004500780061006D0070006C0065002000',
'540065007300740020004400650073006300720069007000740069006F006E00',
'200066006F007200200052006F00770020003300300000000000D1200000000C',
'0052006F0077002000330031004600000000000000460000004500780061006D',
'0070006C00650020005400650073007400200044006500730063007200690070',
'00740069006F006E00200066006F007200200052006F00770020003300310000',
'000000D1210000000C0052006F00770020003300320046000000000000004600',
'00004500780061006D0070006C00650020005400650073007400200044006500',
'73006300720069007000740069006F006E00200066006F007200200052006F00',
'770020003300320000000000D1220000000C0052006F00770020003300330046',
'00000000000000460000004500780061006D0070006C00650020005400650073',
'00740020004400650073006300720069007000740069006F006E00200066006F',
'007200200052006F00770020003300330000000000D1230000000C0052006F00',
'77002000330034004600000000000000460000004500780061006D0070006C00',
'6500200054006500730074002000440065007300630072006900700074006900',
'6F006E00200066006F007200200052006F00770020003300340000000000D124',
'0000000C0052006F007700200033003500460000000000000046000000450078',
'0061006D0070006C006500200054006500730074002000440065007300630072',
'0069007000740069006F006E00200066006F007200200052006F007700200033',
'00350000000000D1250000000C0052006F007700200033003600460000000000',
'0000460000004500780061006D0070006C006500200054006500730074002000',
'4400650073006300720069007000740069006F006E00200066006F0072002000',
'52006F00770020003300360000000000D1260000000C0052006F007700200033',
'0037004600000000000000460000004500780061006D0070006C006500200054',
'0065007300740020004400650073006300720069007000740069006F006E0020',
'0066006F007200200052006F00770020003300370000000000D1270000000C00',
'52006F0077002000330038004600000000000000200000004500780061006D00',
'70006C006500200054006500730074002000440065007300',
'260000006300720069007000740069006F006E00200066006F00720020005200',
'6F00770020003300380000000000D1280000000C0052006F0077002000330039',
'004600000000000000460000004500780061006D0070006C0065002000540065',
'007300740020004400650073006300720069007000740069006F006E00200066',
'006F007200200052006F00770020003300390000000000D1290000000C005200',
'6F0077002000340030004600000000000000460000004500780061006D007000',
'6C00650020005400650073007400200044006500730063007200690070007400',
'69006F006E00200066006F007200200052006F00770020003400300000000000',
'D12A0000000C0052006F00770020003400310046000000000000004600000045',
'00780061006D0070006C00650020005400650073007400200044006500730063',
'00720069007000740069006F006E00200066006F007200200052006F00770020',
'003400310000000000D12B0000000C0052006F00770020003400320046000000',
'00000000460000004500780061006D0070006C00650020005400650073007400',
'20004400650073006300720069007000740069006F006E00200066006F007200',
'200052006F00770020003400320000000000D12C0000000C0052006F00770020',
'00340033004600000000000000460000004500780061006D0070006C00650020',
'00540065007300740020004400650073006300720069007000740069006F006E',
'00200066006F007200200052006F00770020003400330000000000D12D000000',
'0C0052006F007700200034003400460000000000000046000000450078006100',
'6D0070006C006500200054006500730074002000440065007300630072006900',
'7000740069006F006E00200066006F007200200052006F007700200034003400',
'00000000D12E0000000C0052006F007700200034003500460000000000000046',
'0000004500780061006D0070006C006500200054006500730074002000440065',
'0073006300720069007000740069006F006E00200066006F007200200052006F',
'00770020003400350000000000D12F0000000C0052006F007700200034003600',
'4600000000000000460000004500780061006D0070006C006500200054006500',
'7300740020004400650073006300720069007000740069006F006E0020006600',
'6F007200200052006F00770020003400360000000000D1300000000C0052006F',
'0077002000340037004600000000000000460000004500780061006D0070006C',
'0065002000540065007300740020004400650073006300720069007000740069',
'006F006E00200066006F007200200052006F00770020003400370000000000D1',
'310000000C0052006F0077002000340038004600000000000000460000004500',
'780061006D0070006C0065002000540065007300740020004400650073006300',
'720069007000740069006F006E00200066006F007200200052006F0077002000',
'3400380000000000D1320000000C0052006F0077002000340039004600000000',
'000000460000004500780061006D0070006C0065002000540065007300740020',
'004400650073006300720069007000740069006F006E00200066006F00720020',
'0052006F00770020003400390000000000D1330000000C0052006F0077002000',
'350030004600000000000000460000004500780061006D0070006C0065002000',
'540065007300740020004400650073006300720069007000740069006F006E00',
'200066006F007200200052006F00770020003500300000000000D1340000000C',
'0052006F0077002000350031004600000000000000460000004500780061006D',
'0070006C00650020005400650073007400200044006500730063007200690070',
'00740069006F006E00200066006F007200200052006F00770020003500310000',
'000000D1350000000C0052006F00770020003500320046000000000000004600',
'00004500780061006D0070006C00650020005400650073007400200044006500',
'73006300720069007000740069006F006E00200066006F007200200052006F00',
'770020003500320000000000D1360000000C0052006F00770020003500330046',
'00000000000000460000004500780061006D0070006C00650020005400650073',
'00740020004400650073006300720069007000740069006F006E00200066006F',
'007200200052006F00770020003500330000000000D1370000000C0052006F00',
'77002000350034004600000000000000460000004500780061006D0070006C00',
'6500200054006500730074002000440065007300630072006900700074006900',
'6F006E00200066006F007200200052006F00770020003500340000000000D138',
'0000000C0052006F007700200035003500460000000000000046000000450078',
'0061006D0070006C006500200054006500730074002000440065007300630072',
'0069007000740069006F006E00200066006F007200200052006F007700200035',
'00350000000000D1390000000C0052006F007700200035003600460000000000',
'0000460000004500780061006D0070006C006500200054006500730074002000',
'4400650073006300720069007000740069006F006E00200066006F0072002000',
'52006F00770020003500360000000000D13A0000000C0052006F007700200035',
'0037004600000000000000460000004500780061006D0070006C006500200054',
'0065007300740020004400650073006300720069007000740069006F006E0020',
'0066006F007200200052006F00770020003500370000000000D13B0000000C00',
'52006F0077002000350038004600000000000000460000004500780061006D00',
'70006C0065002000540065007300740020004400650073006300720069007000',
'740069006F006E00200066006F007200200052006F0077002000350038000000',
'0000D13C0000000C0052006F0077002000350039004600000000000000460000',
'004500780061006D0070006C0065002000540065007300740020004400650073',
'006300720069007000740069006F006E00200066006F007200200052006F0077',
'0020003500390000000000D13D0000000C0052006F0077002000360030004600',
'000000000000460000004500780061006D0070006C0065002000540065007300',
'740020004400650073006300720069007000740069006F006E00200066006F00',
'7200200052006F00770020003600300000000000D13E0000000C0052006F0077',
'002000360031004600000000000000460000004500780061006D0070006C0065',
'002000540065007300740020004400650073006300720069007000740069006F',
'006E00200066006F007200200052006F00770020003600310000000000D13F00',
'00000C0052006F00770020003600320046000000000000004600000045007800',
'61006D0070006C00650020005400650073007400200044006500730063007200',
'69007000740069006F006E00200066006F007200200052006F00770020003600',
'320000000000D1400000000C0052006F00770020003600330046000000000000',
'00460000004500780061006D0070006C00650020005400650073007400200044',
'00650073006300720069007000740069006F006E00200066006F007200200052',
'006F00770020003600330000000000D1410000000C0052006F00770020003600',
'34004600000000000000460000004500780061006D0070006C00650020005400',
'65007300740020004400650073006300720069007000740069006F006E002000',
'66006F007200200052006F00770020003600340000000000D1420000000C0052',
'006F0077002000360035004600000000000000460000004500780061006D0070',
'006C006500200054006500730074002000440065007300630072006900700074',
'0069006F006E00200066006F007200200052006F007700200036003500000000',
'00D1430000000C0052006F007700200036003600460000000000000046000000',
'4500780061006D0070006C006500200054006500730074002000440065007300',
'6300720069007000740069006F006E00200066006F007200200052006F007700',
'20003600360000000000D1440000000C0052006F007700200036003700460000',
'0000000000460000004500780061006D0070006C006500200054006500730074',
'0020004400650073006300720069007000740069006F006E00200066006F0072',
'00200052006F00770020003600370000000000D1450000000C0052006F007700',
'2000360038004600000000000000460000004500780061006D0070006C006500',
'2000540065007300740020004400650073006300720069007000740069006F00',
'6E00200066006F007200200052006F00770020003600380000000000D1460000',
'000C0052006F0077002000360039004600000000000000460000004500780061',
'006D0070006C0065002000540065007300740020004400650073006300720069',
'007000740069006F006E00200066006F007200200052006F0077002000360039',
'0000000000D1470000000C0052006F0077002000370030004600000000000000',
'460000004500780061006D0070006C0065002000540065007300740020004400',
'650073006300720069007000740069006F006E00200066006F00720020005200',
'6F00770020003700300000000000D1480000000C0052006F0077002000370031',
'004600000000000000460000004500780061006D0070006C0065002000540065',
'007300740020004400650073006300720069007000740069006F006E00200066',
'006F007200200052006F00770020003700310000000000D1490000000C005200',
'6F0077002000370032004600000000000000460000004500780061006D007000',
'6C00650020005400650073007400200044006500730063007200690070007400',
'69006F006E00200066006F007200200052006F00770020003700320000000000',
'D14A0000000C0052006F00770020003700330046000000000000004600000045',
'00780061006D0070006C00650020005400650073007400200044006500730063',
'00720069007000740069006F006E00200066006F007200200052006F00770020',
'003700330000000000D14B0000000C0052006F00770020003700340046000000',
'00000000460000004500780061006D0070006C00650020005400650073007400',
'20004400650073006300720069007000740069006F006E00200066006F007200',
'200052006F00770020003700340000000000D14C0000000C0052006F00770020',
'00370035004600000000000000460000004500780061006D0070006C00650020',
'00540065007300740020004400650073006300720069007000740069006F006E',
'00200066006F007200200052006F00770020003700350000000000D14D000000',
'0C0052006F007700200037003600460000000000000046000000450078006100',
'6D0070006C006500200054006500730074002000440065007300630072006900',
'7000740069006F006E00200066006F007200200052006F007700200037003600',
'00000000D14E0000000C0052006F007700200037003700460000000000000015',
'0000004500780061006D0070006C00650020005400650073',
'3100000000740020004400650073006300720069007000740069006F006E0020',
'0066006F007200200052006F00770020003700370000000000D14F0000000C00',
'52006F0077002000370038004600000000000000460000004500780061006D00',
'70006C0065002000540065007300740020004400650073006300720069007000',
'740069006F006E00200066006F007200200052006F0077002000370038000000',
'0000D1500000000C0052006F0077002000370039004600000000000000460000',
'004500780061006D0070006C0065002000540065007300740020004400650073',
'006300720069007000740069006F006E00200066006F007200200052006F0077',
'0020003700390000000000D1510000000C0052006F0077002000380030004600',
'000000000000460000004500780061006D0070006C0065002000540065007300',
'740020004400650073006300720069007000740069006F006E00200066006F00',
'7200200052006F00770020003800300000000000D1520000000C0052006F0077',
'002000380031004600000000000000460000004500780061006D0070006C0065',
'002000540065007300740020004400650073006300720069007000740069006F',
'006E00200066006F007200200052006F00770020003800310000000000D15300',
'00000C0052006F00770020003800320046000000000000004600000045007800',
'61006D0070006C00650020005400650073007400200044006500730063007200',
'69007000740069006F006E00200066006F007200200052006F00770020003800',
'320000000000D1540000000C0052006F00770020003800330046000000000000',
'00460000004500780061006D0070006C00650020005400650073007400200044',
'00650073006300720069007000740069006F006E00200066006F007200200052',
'006F00770020003800330000000000D1550000000C0052006F00770020003800',
'34004600000000000000460000004500780061006D0070006C00650020005400',
'65007300740020004400650073006300720069007000740069006F006E002000',
'66006F007200200052006F00770020003800340000000000D1560000000C0052',
'006F0077002000380035004600000000000000460000004500780061006D0070',
'006C006500200054006500730074002000440065007300630072006900700074',
'0069006F006E00200066006F007200200052006F007700200038003500000000',
'00D1570000000C0052006F007700200038003600460000000000000046000000',
'4500780061006D0070006C006500200054006500730074002000440065007300',
'6300720069007000740069006F006E00200066006F007200200052006F007700',
'20003800360000000000D1580000000C0052006F007700200038003700460000',
'0000000000460000004500780061006D0070006C006500200054006500730074',
'0020004400650073006300720069007000740069006F006E00200066006F0072',
'00200052006F00770020003800370000000000D1590000000C0052006F007700',
'2000380038004600000000000000460000004500780061006D0070006C006500',
'2000540065007300740020004400650073006300720069007000740069006F00',
'6E00200066006F007200200052006F00770020003800380000000000D15A0000',
'000C0052006F0077002000380039004600000000000000460000004500780061',
'006D0070006C0065002000540065007300740020004400650073006300720069',
'007000740069006F006E00200066006F007200200052006F0077002000380039',
'0000000000D15B0000000C0052006F0077002000390030004600000000000000',
'460000004500780061006D0070006C0065002000540065007300740020004400',
'650073006300720069007000740069006F006E00200066006F00720020005200',
'6F00770020003900300000000000D15C0000000C0052006F0077002000390031',
'004600000000000000460000004500780061006D0070006C0065002000540065',
'007300740020004400650073006300720069007000740069006F006E00200066',
'006F007200200052006F00770020003900310000000000D15D0000000C005200',
'6F0077002000390032004600000000000000460000004500780061006D007000',
'6C00650020005400650073007400200044006500730063007200690070007400',
'69006F006E00200066006F007200200052006F00770020003900320000000000',
'D15E0000000C0052006F00770020003900330046000000000000004600000045',
'00780061006D0070006C00650020005400650073007400200044006500730063',
'00720069007000740069006F006E00200066006F007200200052006F00770020',
'003900330000000000D15F0000000C0052006F00770020003900340046000000',
'00000000460000004500780061006D0070006C00650020005400650073007400',
'20004400650073006300720069007000740069006F006E00200066006F007200',
'200052006F00770020003900340000000000D1600000000C0052006F00770020',
'00390035004600000000000000460000004500780061006D0070006C00650020',
'00540065007300740020004400650073006300720069007000740069006F006E',
'00200066006F007200200052006F00770020003900350000000000D161000000',
'0C0052006F007700200039003600460000000000000046000000450078006100',
'6D0070006C006500200054006500730074002000440065007300630072006900',
'7000740069006F006E00200066006F007200200052006F007700200039003600',
'00000000D1620000000C0052006F007700200039003700460000000000000046',
'0000004500780061006D0070006C006500200054006500730074002000440065',
'0073006300720069007000740069006F006E00200066006F007200200052006F',
'00770020003900370000000000D1630000000C0052006F007700200039003800',
'4600000000000000460000004500780061006D0070006C006500200054006500',
'7300740020004400650073006300720069007000740069006F006E0020006600',
'6F007200200052006F00770020003900380000000000D1640000000C0052006F',
'0077002000390039004600000000000000460000004500780061006D0070006C',
'0065002000540065007300740020004400650073006300720069007000740069',
'006F006E00200066006F007200200052006F00770020003900390000000000FF',
'1100C10064000000000000007900000000FE0000E0000000000000000000'
].join(''), 'hex');
profileIterations: 1000,
bench.start();
setup: function(cb) {
cb();
},
exec: function(cb) {
parser.on("doneProc", function() {
parser.removeAllListeners("doneProc");
cb();
});
for (let i = 0; i < n; i++) {
parser.addBuffer(data);
},
}
teardown: function(cb) {
cb();
}
});
bench.end(n);
}

@@ -53,2 +53,71 @@ "use strict";

// A transform that converts rows to packets.
class RowTransform extends _readableStream.Transform {
constructor(bulkLoad) {
super({
writableObjectMode: true
});
this.columnMetadataWritten = void 0;
this.bulkLoad = void 0;
this.mainOptions = void 0;
this.columns = void 0;
this.bulkLoad = bulkLoad;
this.mainOptions = bulkLoad.options;
this.columns = bulkLoad.columns;
this.columnMetadataWritten = false;
}
_transform(row, _encoding, callback) {
if (!this.columnMetadataWritten) {
this.push(this.bulkLoad.getColMetaData());
this.columnMetadataWritten = true;
}
const buf = new _writableTrackingBuffer.default(64, 'ucs2', true);
buf.writeUInt8(_token.TYPE.ROW);
this.push(buf.data);
for (let i = 0; i < this.columns.length; i++) {
const c = this.columns[i];
const parameter = {
length: c.length,
scale: c.scale,
precision: c.precision,
value: row[i]
};
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = c.type.generateParameterData(parameter, this.mainOptions)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
const chunk = _step.value;
this.push(chunk);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
process.nextTick(callback);
}
_flush(callback) {
this.push(this.bulkLoad.createDoneToken());
process.nextTick(callback);
}
}
class BulkLoad extends _events.EventEmitter {

@@ -275,3 +344,3 @@ constructor(table, connectionOptions, {

c.type.writeTypeInfo(tBuf, c, this.options); // ColName
tBuf.writeBuffer(c.type.generateTypeInfo(c, this.options)); // ColName

@@ -351,47 +420,2 @@ tBuf.writeBVarchar(c.name, 'ucs2');

exports.default = _default;
module.exports = BulkLoad; // A transform that converts rows to packets.
class RowTransform extends _readableStream.Transform {
constructor(bulkLoad) {
super({
writableObjectMode: true
});
this.columnMetadataWritten = void 0;
this.bulkLoad = void 0;
this.mainOptions = void 0;
this.columns = void 0;
this.bulkLoad = bulkLoad;
this.mainOptions = bulkLoad.options;
this.columns = bulkLoad.columns;
this.columnMetadataWritten = false;
}
_transform(row, _encoding, callback) {
if (!this.columnMetadataWritten) {
this.push(this.bulkLoad.getColMetaData());
this.columnMetadataWritten = true;
}
const buf = new _writableTrackingBuffer.default(64, 'ucs2', true);
buf.writeUInt8(_token.TYPE.ROW);
for (let i = 0; i < this.columns.length; i++) {
const c = this.columns[i];
c.type.writeParameterData(buf, {
length: c.length,
scale: c.scale,
precision: c.precision,
value: row[i]
}, this.mainOptions, () => {});
}
this.push(buf.data);
process.nextTick(callback);
}
_flush(callback) {
this.push(this.bulkLoad.createDoneToken());
process.nextTick(callback);
}
}
module.exports = BulkLoad;

@@ -10,2 +10,4 @@ "use strict";

var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -20,16 +22,18 @@

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_intn.default.id);
buffer.writeUInt8(8);
generateTypeInfo() {
return Buffer.from([_intn.default.id, 0x08]);
},
writeParameterData: function writeParameterData(buffer, parameter, _options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
const buffer = new _writableTrackingBuffer.default(9);
buffer.writeUInt8(8);
buffer.writeInt64LE(Number(parameter.value));
yield buffer.data;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
validate: function validate(value) {

@@ -36,0 +40,0 @@ if (value == null) {

@@ -15,3 +15,3 @@ "use strict";

const value = parameter.value;
var length;
let length;

@@ -39,16 +39,24 @@ if (parameter.length) {

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeUInt16LE(parameter.length);
generateTypeInfo(parameter) {
const buffer = Buffer.alloc(3);
buffer.writeUInt8(this.id, 0);
buffer.writeUInt16LE(parameter.length, 1);
return buffer;
},
writeParameterData: function writeParameterData(buffer, parameter, _options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
buffer.writeUInt16LE(parameter.length);
buffer.writeBuffer(parameter.value.slice(0, parameter.length !== undefined ? Math.min(parameter.length, this.maximumLength) : this.maximumLength));
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(parameter.length, 0);
yield buffer;
const value = parameter.value.slice(0, parameter.length !== undefined ? Math.min(parameter.length, this.maximumLength) : this.maximumLength);
yield value;
} else {
buffer.writeUInt16LE(NULL);
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(NULL, 0);
yield buffer;
}
},
cb();
},
validate: function validate(value) {

@@ -55,0 +63,0 @@ if (value == null) {

@@ -19,16 +19,20 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_bitn.default.id);
buffer.writeUInt8(1);
generateTypeInfo() {
return Buffer.from([_bitn.default.id, 0x01]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (typeof parameter.value === 'undefined' || parameter.value === null) {
buffer.writeUInt8(0);
const buffer = Buffer.alloc(1);
buffer.writeUInt8(0, 0);
yield buffer;
} else {
buffer.writeUInt8(1);
buffer.writeUInt8(parameter.value ? 1 : 0);
const buffer = Buffer.alloc(2);
buffer.writeUInt8(1, 0);
buffer.writeUInt8(parameter.value ? 1 : 0, 1);
yield buffer;
}
},
cb();
},
validate: function validate(value) {

@@ -35,0 +39,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
*generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -51,18 +51,27 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeUInt16LE(parameter.length);
buffer.writeBuffer(Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00]));
generateTypeInfo(parameter) {
const buffer = Buffer.alloc(8);
buffer.writeUInt8(this.id, 0);
buffer.writeUInt16LE(parameter.length, 1);
return buffer;
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
const value = parameter.value; // Temporary solution. Remove 'any' later.
*generateParameterData(parameter, options) {
let value = parameter.value; // Temporary solution. Remove 'any' later.
if (value != null) {
buffer.writeUsVarbyte(value, 'ascii');
value = value.toString();
const length = Buffer.byteLength(value, 'ascii');
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(length, 0);
yield buffer;
yield Buffer.alloc(length, parameter.value, 'ascii');
} else {
buffer.writeUInt16LE(NULL);
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(NULL, 0);
yield buffer;
}
},
cb();
},
validate: function validate(value) {

@@ -69,0 +78,0 @@ if (value == null) {

@@ -10,2 +10,6 @@ "use strict";

var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// globalDate is to be used for JavaScript's global 'Date' object to avoid name clashing with the 'Date' constant below

@@ -23,10 +27,11 @@ const globalDate = global.Date;

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(this.id);
generateTypeInfo: function generateTypeInfo(buffer) {
return Buffer.from([this.id]);
},
// ParameterData<any> is temporary solution. TODO: need to understand what type ParameterData<...> can be.
writeParameterData: function writeParameterData(buffer, {
value
}, options, cb) {
*generateParameterData(parameter, options) {
const value = parameter.value; // Temporary solution. Remove 'any' later.
if (value != null) {
const buffer = new _writableTrackingBuffer.default(16);
buffer.writeUInt8(3);

@@ -43,8 +48,8 @@ let date;

buffer.writeUInt24LE(days);
yield buffer.data;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
// TODO: value is techincally of type 'unknown'.

@@ -51,0 +56,0 @@ validate: function validate(value) {

@@ -23,10 +23,10 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_datetimen.default.id);
buffer.writeUInt8(8);
generateTypeInfo() {
return Buffer.from([_datetimen.default.id, 0x08]);
},
// ParameterData<any> is temporary solution. TODO: need to understand what type ParameterData<...> can be.
writeParameterData: function writeParameterData(buffer, {
value
}, options, cb) {
generateParameterData: function* generateParameterData(parameter, options) {
const value = parameter.value; // Temporary solution. Remove 'any' later.
if (value != null) {

@@ -64,10 +64,10 @@ let date;

buffer.writeUInt8(8);
buffer.writeInt32LE(days);
buffer.writeUInt32LE(threeHundredthsOfSecond);
const buffer = Buffer.alloc(9);
buffer.writeUInt8(8, 0);
buffer.writeInt32LE(days, 1);
buffer.writeUInt32LE(threeHundredthsOfSecond, 5);
yield buffer;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
cb();
},

@@ -74,0 +74,0 @@ // TODO: type 'any' needs to be revisited.

@@ -10,2 +10,6 @@ "use strict";

var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1);

@@ -29,11 +33,13 @@

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeUInt8(parameter.scale);
generateTypeInfo(parameter, _options) {
return Buffer.from([this.id, parameter.scale]);
},
writeParameterData: function writeParameterData(buffer, {
value,
scale
}, options, cb) {
*generateParameterData(parameter, options) {
const value = parameter.value;
let scale = parameter.scale;
if (value != null) {
const buffer = new _writableTrackingBuffer.default(16);
scale = scale;

@@ -83,8 +89,10 @@ let timestamp;

buffer.writeUInt24LE(days);
yield buffer.data;
} else {
const buffer = new _writableTrackingBuffer.default(1);
buffer.writeUInt8(0);
yield buffer.data;
}
},
cb();
},
validate: function validate(value) {

@@ -91,0 +99,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -10,2 +10,6 @@ "use strict";

var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1);

@@ -29,11 +33,13 @@

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeUInt8(parameter.scale);
generateTypeInfo(parameter) {
return Buffer.from([this.id, parameter.scale]);
},
writeParameterData: function writeParameterData(buffer, {
value,
scale
}, _options, cb) {
generateParameterData: function* generateParameterData(parameter, options) {
const value = parameter.value;
let scale = parameter.scale;
if (value != null) {
const buffer = new _writableTrackingBuffer.default(16);
scale = scale;

@@ -73,7 +79,8 @@ let timestamp;

buffer.writeInt16LE(offset);
yield buffer.data;
} else {
const buffer = new _writableTrackingBuffer.default(1);
buffer.writeUInt8(0);
yield buffer.data;
}
cb();
},

@@ -80,0 +87,0 @@ validate: function validate(value) {

@@ -10,2 +10,4 @@ "use strict";

var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -36,19 +38,20 @@

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(_decimaln.default.id);
generateTypeInfo(parameter, _options) {
let precision;
if (parameter.precision <= 9) {
buffer.writeUInt8(5);
precision = 0x05;
} else if (parameter.precision <= 19) {
buffer.writeUInt8(9);
precision = 0x09;
} else if (parameter.precision <= 28) {
buffer.writeUInt8(13);
precision = 0x0D;
} else {
buffer.writeUInt8(17);
precision = 0x11;
}
buffer.writeUInt8(parameter.precision);
buffer.writeUInt8(parameter.scale);
return Buffer.from([_decimaln.default.id, precision, parameter.precision, parameter.scale]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {

@@ -59,10 +62,16 @@ const sign = parameter.value < 0 ? 0 : 1;

if (parameter.precision <= 9) {
buffer.writeUInt8(5);
buffer.writeUInt8(sign);
buffer.writeUInt32LE(value);
const buffer = Buffer.alloc(6);
let offset = 0;
offset = buffer.writeUInt8(5, offset);
offset = buffer.writeUInt8(sign, offset);
buffer.writeUInt32LE(value, offset);
yield buffer;
} else if (parameter.precision <= 19) {
const buffer = new _writableTrackingBuffer.default(10);
buffer.writeUInt8(9);
buffer.writeUInt8(sign);
buffer.writeUInt64LE(value);
yield buffer.data;
} else if (parameter.precision <= 28) {
const buffer = new _writableTrackingBuffer.default(14);
buffer.writeUInt8(13);

@@ -72,3 +81,5 @@ buffer.writeUInt8(sign);

buffer.writeUInt32LE(0x00000000);
yield buffer.data;
} else {
const buffer = new _writableTrackingBuffer.default(18);
buffer.writeUInt8(17);

@@ -79,9 +90,9 @@ buffer.writeUInt8(sign);

buffer.writeUInt32LE(0x00000000);
yield buffer.data;
}
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
validate: function validate(value) {

@@ -88,0 +99,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -19,16 +19,18 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_floatn.default.id);
buffer.writeUInt8(8);
generateTypeInfo() {
return Buffer.from([_floatn.default.id, 0x08]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
buffer.writeUInt8(8);
buffer.writeDoubleLE(parseFloat(parameter.value));
const buffer = Buffer.alloc(9);
buffer.writeUInt8(8, 0);
buffer.writeDoubleLE(parseFloat(parameter.value), 1);
yield buffer;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
validate: function validate(value) {

@@ -35,0 +37,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -24,16 +24,23 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeInt32LE(parameter.length);
generateTypeInfo(parameter) {
const buffer = Buffer.alloc(5);
buffer.writeUInt8(this.id, 0);
buffer.writeInt32LE(parameter.length, 1);
return buffer;
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
buffer.writeInt32LE(parameter.length);
buffer.writeBuffer(parameter.value);
const buffer = Buffer.alloc(4);
buffer.writeInt32LE(parameter.length, 0);
yield buffer;
yield parameter.value;
} else {
buffer.writeInt32LE(parameter.length);
const buffer = Buffer.alloc(4);
buffer.writeInt32LE(parameter.length, 0);
yield buffer;
}
},
cb();
},
validate: function validate(value) {

@@ -40,0 +47,0 @@ if (value == null) {

@@ -19,16 +19,20 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_intn.default.id);
buffer.writeUInt8(4);
generateTypeInfo() {
return Buffer.from([_intn.default.id, 0x04]);
},
writeParameterData: function writeParameterData(buffer, parameter, _options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
buffer.writeUInt8(4);
buffer.writeInt32LE(Number(parameter.value));
const buffer = Buffer.alloc(1);
buffer.writeUInt8(4, 0);
yield buffer;
const buffer2 = Buffer.alloc(4);
buffer2.writeInt32LE(Number(parameter.value), 0);
yield buffer2;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
validate: function validate(value) {

@@ -35,0 +39,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -12,2 +12,4 @@ "use strict";

const SHIFT_LEFT_32 = (1 << 16) * (1 << 16);
const SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;
const Money = {

@@ -20,16 +22,23 @@ id: 0x3C,

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_moneyn.default.id);
buffer.writeUInt8(8);
generateTypeInfo: function generateTypeInfo() {
return Buffer.from([_moneyn.default.id, 0x08]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
buffer.writeUInt8(8);
buffer.writeMoney(parameter.value * 10000);
const buffer = Buffer.alloc(1);
buffer.writeUInt8(8, 0);
yield buffer;
const value = parameter.value * 10000;
const buffer2 = Buffer.alloc(4);
buffer2.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32), 0);
yield buffer2;
const buffer3 = Buffer.alloc(4);
buffer3.writeInt32LE(value & -1, 0);
yield buffer3;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
validate: function validate(value) {

@@ -36,0 +45,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -51,16 +51,34 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeUInt16LE(parameter.length * 2);
buffer.writeBuffer(Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00]));
generateTypeInfo: function generateTypeInfo(parameter) {
const buffer = Buffer.alloc(8);
buffer.writeUInt8(this.id, 0);
buffer.writeUInt16LE(parameter.length * 2, 1);
return buffer;
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
let value = parameter.value;
if (parameter.value != null) {
buffer.writeUsVarbyte(parameter.value, 'ucs2');
if (value instanceof Buffer) {
const length = value.length;
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(length, 0);
yield buffer;
yield value;
} else {
value = value.toString();
const length = Buffer.byteLength(value, 'ucs2');
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(length, 0);
yield buffer;
yield Buffer.from(value, 'ucs2');
}
} else {
buffer.writeUInt16LE(NULL);
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(NULL, 0);
yield buffer;
}
},
cb();
},
validate: function validate(value) {

@@ -67,0 +85,0 @@ if (value == null) {

@@ -17,7 +17,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -24,0 +24,0 @@ },

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -10,2 +10,4 @@ "use strict";

var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -36,19 +38,20 @@

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(_numericn.default.id);
generateTypeInfo(parameter) {
let precision;
if (parameter.precision <= 9) {
buffer.writeUInt8(5);
precision = 0x05;
} else if (parameter.precision <= 19) {
buffer.writeUInt8(9);
precision = 0x09;
} else if (parameter.precision <= 28) {
buffer.writeUInt8(13);
precision = 0x0D;
} else {
buffer.writeUInt8(17);
precision = 0x11;
}
buffer.writeUInt8(parameter.precision);
buffer.writeUInt8(parameter.scale);
return Buffer.from([_numericn.default.id, precision, parameter.precision, parameter.scale]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {

@@ -59,10 +62,16 @@ const sign = parameter.value < 0 ? 0 : 1;

if (parameter.precision <= 9) {
buffer.writeUInt8(5);
buffer.writeUInt8(sign);
buffer.writeUInt32LE(value);
const buffer = Buffer.alloc(6);
let offset = 0;
offset = buffer.writeUInt8(5, offset);
offset = buffer.writeUInt8(sign, offset);
buffer.writeUInt32LE(value, offset);
yield buffer;
} else if (parameter.precision <= 19) {
const buffer = new _writableTrackingBuffer.default(10);
buffer.writeUInt8(9);
buffer.writeUInt8(sign);
buffer.writeUInt64LE(value);
yield buffer.data;
} else if (parameter.precision <= 28) {
const buffer = new _writableTrackingBuffer.default(14);
buffer.writeUInt8(13);

@@ -72,3 +81,5 @@ buffer.writeUInt8(sign);

buffer.writeUInt32LE(0x00000000);
yield buffer.data;
} else {
const buffer = new _writableTrackingBuffer.default(18);
buffer.writeUInt8(17);

@@ -79,9 +90,9 @@ buffer.writeUInt8(sign);

buffer.writeUInt32LE(0x00000000);
yield buffer.data;
}
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
validate: function validate(value) {

@@ -88,0 +99,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -9,2 +9,4 @@ "use strict";

const MAX = (1 << 16) - 1;
const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);
const PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);
const NVarChar = {

@@ -51,29 +53,75 @@ id: 0xE7,

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
generateTypeInfo(parameter) {
const buffer = Buffer.alloc(8);
buffer.writeUInt8(this.id, 0);
if (parameter.length <= this.maximumLength) {
buffer.writeUInt16LE(parameter.length * 2);
buffer.writeUInt16LE(parameter.length * 2, 1);
} else {
buffer.writeUInt16LE(MAX);
buffer.writeUInt16LE(MAX, 1);
}
buffer.writeBuffer(Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00]));
return buffer;
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
let value = parameter.value;
if (parameter.length <= this.maximumLength) {
buffer.writeUsVarbyte(parameter.value, 'ucs2');
let length;
if (value instanceof Buffer) {
length = value.length;
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(length, 0);
yield buffer;
yield value;
} else {
value = value.toString();
length = Buffer.byteLength(value, 'ucs2');
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(length, 0);
yield buffer;
yield Buffer.from(value, 'ucs2');
}
} else {
buffer.writePLPBody(parameter.value, 'ucs2');
yield UNKNOWN_PLP_LEN;
if (value instanceof Buffer) {
const length = value.length;
if (length > 0) {
const buffer = Buffer.alloc(4);
buffer.writeUInt32LE(length, 0);
yield buffer;
yield value;
}
} else {
value = value.toString();
const length = Buffer.byteLength(value, 'ucs2');
if (length > 0) {
const buffer = Buffer.alloc(4);
buffer.writeUInt32LE(length, 0);
yield buffer;
yield Buffer.from(value, 'ucs2');
}
}
yield PLP_TERMINATOR;
}
} else if (parameter.length <= this.maximumLength) {
buffer.writeUInt16LE(NULL);
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(NULL, 0);
yield buffer;
} else {
buffer.writeUInt32LE(0xFFFFFFFF);
buffer.writeUInt32LE(0xFFFFFFFF);
const buffer = Buffer.alloc(8);
const offset = buffer.writeUInt32LE(0xFFFFFFFF, 0);
buffer.writeUInt32LE(0xFFFFFFFF, offset);
yield buffer;
}
},
cb();
},
validate: function validate(value) {

@@ -80,0 +128,0 @@ if (value == null) {

@@ -19,16 +19,19 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_floatn.default.id);
buffer.writeUInt8(4);
generateTypeInfo() {
return Buffer.from([_floatn.default.id, 0x04]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
buffer.writeUInt8(4);
buffer.writeFloatLE(parseFloat(parameter.value));
const buffer = Buffer.alloc(5);
let offset = 0;
offset = buffer.writeUInt8(4, offset);
buffer.writeFloatLE(parseFloat(parameter.value), offset);
yield buffer;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
validate: function validate(value) {

@@ -35,0 +38,0 @@ if (value == null) {

@@ -21,8 +21,10 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_datetimen.default.id);
buffer.writeUInt8(4);
generateTypeInfo() {
return Buffer.from([_datetimen.default.id, 0x04]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
const buffer = Buffer.alloc(5);
let days, dstDiff, minutes;

@@ -39,11 +41,11 @@

buffer.writeUInt8(4);
buffer.writeUInt16LE(days);
buffer.writeUInt16LE(minutes);
buffer.writeUInt8(4, 0);
buffer.writeUInt16LE(days, 1);
buffer.writeUInt16LE(minutes, 3);
yield buffer;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
},
cb();
},
validate: function validate(value) {

@@ -50,0 +52,0 @@ if (value == null) {

@@ -19,15 +19,16 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_intn.default.id);
buffer.writeUInt8(2);
generateTypeInfo() {
return Buffer.from([_intn.default.id, 0x02]);
},
writeParameterData: function writeParameterData(buffer, parameter, _options, cb) {
generateParameterData: function* generateParameterData(parameter, options) {
if (parameter.value != null) {
buffer.writeUInt8(2);
buffer.writeInt16LE(Number(parameter.value));
const buffer = Buffer.alloc(3);
buffer.writeUInt8(2, 0);
buffer.writeInt16LE(Number(parameter.value), 1);
yield buffer;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
cb();
},

@@ -34,0 +35,0 @@ validate: function validate(value) {

@@ -19,15 +19,14 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_moneyn.default.id);
buffer.writeUInt8(4);
generateTypeInfo: function generateTypeInfo() {
return Buffer.from([_moneyn.default.id, 0x04]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
generateParameterData: function* generateParameterData(parameter) {
if (parameter.value != null) {
buffer.writeUInt8(4);
buffer.writeInt32LE(parameter.value * 10000);
const buffer = Buffer.alloc(5);
buffer.writeUInt8(4, 0);
buffer.writeInt32LE(parameter.value * 10000, 1);
yield buffer;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
cb();
},

@@ -34,0 +33,0 @@ validate: function validate(value) {

@@ -15,7 +15,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -22,0 +22,0 @@ },

@@ -24,17 +24,23 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeInt32LE(parameter.length);
generateTypeInfo(parameter, _options) {
const buffer = Buffer.alloc(5);
buffer.writeUInt8(this.id, 0);
buffer.writeInt32LE(parameter.length, 1);
return buffer;
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
buffer.writeBuffer(Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00]));
generateParameterData: function* generateParameterData(parameter, options) {
yield Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00]);
if (parameter.value != null) {
buffer.writeInt32LE(parameter.length);
buffer.writeString(parameter.value.toString(), 'ascii');
const buffer = Buffer.alloc(4);
buffer.writeInt32LE(parameter.length, 0);
yield buffer;
yield Buffer.from(parameter.value.toString(), 'ascii');
} else {
buffer.writeInt32LE(parameter.length);
const buffer = Buffer.alloc(4);
buffer.writeInt32LE(parameter.length, 0);
yield buffer;
}
cb();
},

@@ -41,0 +47,0 @@ validate: function validate(value) {

@@ -7,2 +7,7 @@ "use strict";

exports.default = void 0;
var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const Time = {

@@ -24,8 +29,10 @@ id: 0x29,

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
buffer.writeUInt8(parameter.scale);
generateTypeInfo(parameter) {
return Buffer.from([this.id, parameter.scale]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
generateParameterData: function* generateParameterData(parameter, options) {
if (parameter.value != null) {
const buffer = new _writableTrackingBuffer.default(16);
const time = parameter.value;

@@ -64,7 +71,7 @@ let timestamp;

}
yield buffer.data;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
cb();
},

@@ -71,0 +78,0 @@ validate: function validate(value) {

@@ -19,15 +19,17 @@ "use strict";

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(_intn.default.id);
buffer.writeUInt8(1);
generateTypeInfo() {
return Buffer.from([_intn.default.id, 0x01]);
},
writeParameterData: function writeParameterData(buffer, parameter, _options, cb) {
generateParameterData: function* generateParameterData(parameter, options) {
if (parameter.value != null) {
buffer.writeUInt8(1);
buffer.writeUInt8(Number(parameter.value));
const buffer = Buffer.alloc(2);
let offset = 0;
offset = buffer.writeUInt8(1, offset);
buffer.writeUInt8(Number(parameter.value), offset);
yield buffer;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
cb();
},

@@ -34,0 +36,0 @@ validate: function validate(value) {

@@ -7,2 +7,9 @@ "use strict";

exports.default = void 0;
var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const TVP_ROW_TOKEN = Buffer.from([0x01]);
const TVP_END_TOKEN = Buffer.from([0x00]);
const TVP = {

@@ -17,59 +24,72 @@ id: 0xF3,

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
let ref, ref1, ref2, ref3;
generateTypeInfo(parameter) {
var _ref, _parameter$value, _ref2, _parameter$value2;
const databaseName = '';
const schema = (_ref = (_parameter$value = parameter.value) === null || _parameter$value === void 0 ? void 0 : _parameter$value.schema) !== null && _ref !== void 0 ? _ref : '';
const typeName = (_ref2 = (_parameter$value2 = parameter.value) === null || _parameter$value2 === void 0 ? void 0 : _parameter$value2.name) !== null && _ref2 !== void 0 ? _ref2 : '';
const bufferLength = 1 + 1 + Buffer.byteLength(databaseName, 'ucs2') + 1 + Buffer.byteLength(schema, 'ucs2') + 1 + Buffer.byteLength(typeName, 'ucs2');
const buffer = new _writableTrackingBuffer.default(bufferLength, 'ucs2');
buffer.writeUInt8(this.id);
buffer.writeBVarchar('');
buffer.writeBVarchar((ref = (ref1 = parameter.value) != null ? ref1.schema : undefined) != null ? ref : '');
buffer.writeBVarchar((ref2 = (ref3 = parameter.value) != null ? ref3.name : undefined) != null ? ref2 : '');
buffer.writeBVarchar(databaseName);
buffer.writeBVarchar(schema);
buffer.writeBVarchar(typeName);
return buffer.data;
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value == null) {
buffer.writeUInt16LE(0xFFFF);
buffer.writeUInt8(0x00);
buffer.writeUInt8(0x00);
const buffer = Buffer.alloc(4);
buffer.writeUInt16LE(0xFFFF, 0);
buffer.writeUInt8(0x00, 2);
buffer.writeUInt8(0x00, 3);
yield buffer;
return;
}
buffer.writeUInt16LE(parameter.value.columns.length);
const ref = parameter.value.columns;
const _parameter$value3 = parameter.value,
columns = _parameter$value3.columns,
rows = _parameter$value3.rows;
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(columns.length, 0);
yield buffer;
for (let i = 0, len = ref.length; i < len; i++) {
const column = ref[i];
buffer.writeUInt32LE(0x00000000);
buffer.writeUInt16LE(0x0000);
column.type.writeTypeInfo(buffer, column);
buffer.writeBVarchar('');
for (let i = 0, len = columns.length; i < len; i++) {
const column = columns[i];
const buff = Buffer.alloc(6); // UserType
buff.writeUInt32LE(0x00000000, 0); // Flags
buff.writeUInt16LE(0x0000, 4);
yield buff; // TYPE_INFO
yield column.type.generateTypeInfo(column); // ColName
yield Buffer.from([0x00]);
}
buffer.writeUInt8(0x00);
const ref1 = parameter.value.rows;
yield TVP_END_TOKEN;
const writeNext = i => {
if (i >= ref1.length) {
buffer.writeUInt8(0x00);
cb();
return;
}
for (let i = 0, length = rows.length; i < length; i++) {
yield TVP_ROW_TOKEN;
const row = rows[i];
const row = ref1[i];
buffer.writeUInt8(0x01);
for (let k = 0, len2 = row.length; k < len2; k++) {
const column = columns[k];
const value = row[k];
const param = {
value: value,
length: parameter.value.columns[k].length,
scale: parameter.value.columns[k].scale,
precision: parameter.value.columns[k].precision
};
parameter.value.columns[k].type.writeParameterData(buffer, param, options, () => {});
length: column.length,
scale: column.scale,
precision: column.precision
}; // TvpColumnData
yield* column.type.generateParameterData(param, options);
}
}
setImmediate(() => {
writeNext(i + 1);
});
};
yield TVP_END_TOKEN;
},
writeNext(0);
},
validate: function validate(value) {

@@ -76,0 +96,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -10,2 +10,6 @@ "use strict";

var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const UniqueIdentifier = {

@@ -21,15 +25,16 @@ id: 0x24,

},
writeTypeInfo: function writeTypeInfo(buffer) {
buffer.writeUInt8(this.id);
buffer.writeUInt8(0x10);
generateTypeInfo() {
return Buffer.from([this.id, 0x10]);
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
generateParameterData: function* generateParameterData(parameter, options) {
if (parameter.value != null) {
const buffer = new _writableTrackingBuffer.default(1);
buffer.writeUInt8(0x10);
buffer.writeBuffer(Buffer.from((0, _guidParser.guidToArray)(parameter.value)));
yield buffer.data;
} else {
buffer.writeUInt8(0);
yield Buffer.from([0x00]);
}
cb();
},

@@ -36,0 +41,0 @@ validate: function validate(value) {

@@ -7,4 +7,11 @@ "use strict";

exports.default = void 0;
var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const NULL = (1 << 16) - 1;
const MAX = (1 << 16) - 1;
const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);
const PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);
const VarBinary = {

@@ -47,27 +54,65 @@ id: 0xA5,

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
generateTypeInfo: function generateTypeInfo(parameter) {
const buffer = Buffer.alloc(3);
buffer.writeUInt8(this.id, 0);
if (parameter.length <= this.maximumLength) {
buffer.writeUInt16LE(this.maximumLength);
buffer.writeUInt16LE(this.maximumLength, 1);
} else {
buffer.writeUInt16LE(MAX);
buffer.writeUInt16LE(MAX, 1);
}
return buffer;
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
if (parameter.value != null) {
*generateParameterData(parameter, options) {
let value = parameter.value;
if (value != null) {
if (!Buffer.isBuffer(value)) {
value = value.toString();
}
const length = Buffer.byteLength(value, 'ucs2');
if (parameter.length <= this.maximumLength) {
buffer.writeUsVarbyte(parameter.value);
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(length, 0);
yield buffer;
if (Buffer.isBuffer(value)) {
yield value;
} else {
yield Buffer.from(value, 'ucs2');
}
} else {
buffer.writePLPBody(parameter.value);
// writePLPBody
yield UNKNOWN_PLP_LEN;
if (length > 0) {
const buffer = Buffer.alloc(4);
buffer.writeUInt32LE(length, 0);
yield buffer;
if (Buffer.isBuffer(value)) {
yield value;
} else {
yield Buffer.from(value, 'ucs2');
}
}
yield PLP_TERMINATOR;
}
} else if (parameter.length <= this.maximumLength) {
const buffer = new _writableTrackingBuffer.default(2);
buffer.writeUInt16LE(NULL);
yield buffer.data;
} else {
const buffer = new _writableTrackingBuffer.default(8);
buffer.writeUInt32LE(0xFFFFFFFF);
buffer.writeUInt32LE(0xFFFFFFFF);
yield buffer.data;
}
},
cb();
},
validate: function validate(value) {

@@ -74,0 +119,0 @@ if (value == null) {

@@ -7,4 +7,11 @@ "use strict";

exports.default = void 0;
var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const NULL = (1 << 16) - 1;
const MAX = (1 << 16) - 1;
const UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);
const PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);
const VarChar = {

@@ -51,29 +58,64 @@ id: 0xA7,

},
writeTypeInfo: function writeTypeInfo(buffer, parameter) {
buffer.writeUInt8(this.id);
generateTypeInfo(parameter) {
const buffer = Buffer.alloc(8);
buffer.writeUInt8(this.id, 0);
if (parameter.length <= this.maximumLength) {
buffer.writeUInt16LE(this.maximumLength);
buffer.writeUInt16LE(this.maximumLength, 1);
} else {
buffer.writeUInt16LE(MAX);
buffer.writeUInt16LE(MAX, 1);
}
buffer.writeBuffer(Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00]));
return buffer;
},
writeParameterData: function writeParameterData(buffer, parameter, options, cb) {
*generateParameterData(parameter, options) {
if (parameter.value != null) {
let value = parameter.value;
const length = Buffer.byteLength(value, 'ascii');
if (!Buffer.isBuffer(value)) {
value = value.toString();
}
if (parameter.length <= this.maximumLength) {
buffer.writeUsVarbyte(parameter.value, 'ascii');
const buffer = Buffer.alloc(2);
buffer.writeUInt16LE(length, 0);
yield buffer;
if (Buffer.isBuffer(value)) {
yield value;
} else {
yield Buffer.from(value, 'ascii');
}
} else {
buffer.writePLPBody(parameter.value, 'ascii');
yield UNKNOWN_PLP_LEN;
if (length > 0) {
const buffer = Buffer.alloc(4);
buffer.writeUInt32LE(length, 0);
yield buffer;
if (Buffer.isBuffer(value)) {
yield value;
} else {
yield Buffer.from(value, 'ascii');
}
}
yield PLP_TERMINATOR;
}
} else if (parameter.length <= this.maximumLength) {
const buffer = new _writableTrackingBuffer.default(2);
buffer.writeUInt16LE(NULL);
yield buffer.data;
} else {
const buffer = new _writableTrackingBuffer.default(8);
buffer.writeUInt32LE(0xFFFFFFFF);
buffer.writeUInt32LE(0xFFFFFFFF);
yield buffer.data;
}
},
cb();
},
validate: function validate(value) {

@@ -80,0 +122,0 @@ if (value == null) {

@@ -16,7 +16,7 @@ "use strict";

writeTypeInfo() {
generateTypeInfo() {
throw new Error('not implemented');
},
writeParameterData() {
generateParameterData() {
throw new Error('not implemented');

@@ -23,0 +23,0 @@ },

@@ -26,2 +26,3 @@ "use strict";

// eslint-disable-next-line @typescript-eslint/no-var-requires
const DuplexPair = require('native-duplexpair');

@@ -28,0 +29,0 @@

@@ -12,2 +12,4 @@ "use strict";

let _Symbol$iterator;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,2 +30,4 @@

_Symbol$iterator = Symbol.iterator;
class RpcRequestPayload {

@@ -41,3 +45,7 @@ constructor(request, txnDescriptor, options) {

getData(cb) {
[_Symbol$iterator]() {
return this.generateData();
}
*generateData() {
const buffer = new _writableTrackingBuffer.default(500);

@@ -59,18 +67,8 @@

buffer.writeUInt16LE(optionFlags);
yield buffer.data;
const parameters = this.request.parameters;
const writeNext = i => {
if (i >= parameters.length) {
cb(buffer.data);
return;
}
this._writeParameterData(parameters[i], buffer, () => {
setImmediate(() => {
writeNext(i + 1);
});
});
};
writeNext(0);
for (let i = 0; i < parameters.length; i++) {
yield* this.generateParameterData(parameters[i], this.options);
}
}

@@ -82,3 +80,4 @@

_writeParameterData(parameter, buffer, cb) {
*generateParameterData(parameter, options) {
const buffer = new _writableTrackingBuffer.default(1 + 2 + Buffer.byteLength(parameter.name, 'ucs-2') + 1);
buffer.writeBVarchar('@' + parameter.name);

@@ -92,2 +91,3 @@ let statusFlags = 0;

buffer.writeUInt8(statusFlags);
yield buffer.data;
const param = {

@@ -118,6 +118,4 @@ value: parameter.value

type.writeTypeInfo(buffer, param, this.options);
type.writeParameterData(buffer, param, this.options, () => {
cb();
});
yield type.generateTypeInfo(param, this.options);
yield* type.generateParameterData(param, options);
}

@@ -124,0 +122,0 @@

@@ -12,4 +12,8 @@ "use strict";

let _Symbol$iterator;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_Symbol$iterator = Symbol.iterator;
/*

@@ -28,12 +32,11 @@ s2.2.6.6

getData(cb) {
const buffer = new _writableTrackingBuffer.default(100 + 2 * this.sqlText.length, 'ucs2');
*[_Symbol$iterator]() {
if (this.options.tdsVersion >= '7_2') {
const buffer = new _writableTrackingBuffer.default(18, 'ucs2');
const outstandingRequestCount = 1;
(0, _allHeaders.writeToTrackingBuffer)(buffer, this.txnDescriptor, outstandingRequestCount);
yield buffer.data;
}
buffer.writeString(this.sqlText, 'ucs2');
cb(buffer.data);
yield Buffer.from(this.sqlText, 'ucs2');
}

@@ -40,0 +43,0 @@

@@ -62,5 +62,6 @@ "use strict";

return {
getData: cb => {
cb(buffer.data);
*[Symbol.iterator]() {
yield buffer.data;
},
toString: () => {

@@ -81,6 +82,6 @@ return 'Begin Transaction: name=' + this.name + ', isolationLevel=' + isolationLevelByValue[this.isolationLevel];

return {
getData: cb => {
cb(buffer.data);
*[Symbol.iterator]() {
yield buffer.data;
},
data: buffer.data,
toString: () => {

@@ -101,5 +102,6 @@ return 'Commit Transaction: name=' + this.name;

return {
getData: cb => {
cb(buffer.data);
*[Symbol.iterator]() {
yield buffer.data;
},
toString: () => {

@@ -118,5 +120,6 @@ return 'Rollback Transaction: name=' + this.name;

return {
getData: cb => {
cb(buffer.data);
*[Symbol.iterator]() {
yield buffer.data;
},
toString: () => {

@@ -123,0 +126,0 @@ return 'Save Transaction: name=' + this.name;

@@ -30,3 +30,3 @@ {

"license": "MIT",
"version": "8.0.1",
"version": "8.1.0",
"main": "./lib/tedious.js",

@@ -45,3 +45,3 @@ "repository": {

"@azure/ms-rest-nodeauth": "2.0.2",
"@js-joda/core": "^1.12.0",
"@js-joda/core": "^2.0.0",
"bl": "^3.0.0",

@@ -53,25 +53,25 @@ "depd": "^2.0.0",

"punycode": "^2.1.0",
"readable-stream": "^3.4.0",
"readable-stream": "^3.6.0",
"sprintf-js": "^1.1.2"
},
"devDependencies": {
"@babel/cli": "^7.7.5",
"@babel/core": "^7.7.5",
"@babel/node": "^7.7.4",
"@babel/plugin-proposal-class-properties": "^7.7.4",
"@babel/preset-env": "^7.7.6",
"@babel/preset-typescript": "^7.7.4",
"@babel/register": "^7.7.4",
"@commitlint/cli": "^8.2.0",
"@commitlint/config-conventional": "^8.2.0",
"@commitlint/travis-cli": "^8.2.0",
"@babel/cli": "^7.8.4",
"@babel/core": "^7.8.6",
"@babel/node": "^7.8.4",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/preset-env": "^7.8.6",
"@babel/preset-typescript": "^7.8.3",
"@babel/register": "^7.8.6",
"@commitlint/cli": "^8.3.5",
"@commitlint/config-conventional": "^8.3.4",
"@commitlint/travis-cli": "^8.3.5",
"@types/bl": "^2.1.0",
"@types/depd": "^1.1.32",
"@types/node": "^12.12.17",
"@types/node": "^13.5.1",
"@types/readable-stream": "^2.3.5",
"@types/sprintf-js": "^1.1.2",
"@typescript-eslint/eslint-plugin": "^2.18.0",
"@typescript-eslint/parser": "^2.18.0",
"async": "^2.6.3",
"babel-eslint": "^11.0.0-beta.2",
"babel-plugin-istanbul": "^5.2.0",
"benchmark": "^2.1.0",
"chai": "^4.1.2",

@@ -84,5 +84,5 @@ "codecov": "^3.6.1",

"rimraf": "^3.0.0",
"semantic-release": "^15.13.31",
"semantic-release": "^17.0.1",
"sinon": "^7.5.0",
"typescript": "^3.7.3"
"typescript": "^3.8.3"
},

@@ -89,0 +89,0 @@ "scripts": {

@@ -57,5 +57,5 @@ # Tedious (node implementation of TDS)

<a name="license"></a>
## Licence
## License
Copyright (c) 2010-2018 Mike D Pilsbury
Copyright (c) 2010-2020 Mike D Pilsbury

@@ -62,0 +62,0 @@ The MIT License

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc