Comparing version 8.0.1 to 8.1.0
@@ -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; | ||
@@ -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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 4 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
396105
10770
105
8
+ Added@js-joda/core@2.0.0(transitive)
- Removed@js-joda/core@1.12.0(transitive)
Updated@js-joda/core@^2.0.0
Updatedreadable-stream@^3.6.0