tedious 16.4.1 → 16.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/benchmarks/bulk-load/iterable.js +1 -1
- package/benchmarks/common.js +2 -4
- package/benchmarks/package-lock.json +21173 -0
- package/benchmarks/package.json +11 -0
- package/benchmarks/query/call-tvp.js +1 -1
- package/benchmarks/query/insert-varbinary.js +1 -1
- package/benchmarks/query/select-many-rows.js +1 -1
- package/benchmarks/query/select-nvarchar.js +1 -1
- package/benchmarks/query/select-varbinary.js +1 -1
- package/benchmarks/request/rpcrequest-payload-tvp.js +2 -2
- package/benchmarks/request/rpcrequest-payload-varbinary.js +2 -2
- package/benchmarks/token-parser/colmetadata-token.js +4 -2
- package/benchmarks/token-parser/done-token.js +5 -2
- package/benchmarks/token-parser/simple-tokens.js +8 -2
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +1 -8
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -1
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +1 -8
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -1
- package/lib/always-encrypted/cek-entry.js +1 -7
- package/lib/always-encrypted/cek-entry.js.map +1 -1
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js +1 -8
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -1
- package/lib/always-encrypted/symmetric-key.js +1 -2
- package/lib/always-encrypted/symmetric-key.js.map +1 -1
- package/lib/bulk-load-payload.js +1 -3
- package/lib/bulk-load-payload.js.map +1 -1
- package/lib/bulk-load.js +15 -23
- package/lib/bulk-load.js.map +1 -1
- package/lib/collation.js +1 -7
- package/lib/collation.js.map +1 -1
- package/lib/connection.js +22 -28
- package/lib/connection.js.map +1 -1
- package/lib/debug.js +1 -4
- package/lib/debug.js.map +1 -1
- package/lib/errors/abort-error.js +1 -2
- package/lib/errors/abort-error.js.map +1 -1
- package/lib/errors/timeout-error.js +1 -2
- package/lib/errors/timeout-error.js.map +1 -1
- package/lib/errors.js +1 -10
- package/lib/errors.js.map +1 -1
- package/lib/incoming-message-stream.js +1 -4
- package/lib/incoming-message-stream.js.map +1 -1
- package/lib/login7-payload.js +1 -23
- package/lib/login7-payload.js.map +1 -1
- package/lib/message-io.js +1 -8
- package/lib/message-io.js.map +1 -1
- package/lib/message.js +1 -4
- package/lib/message.js.map +1 -1
- package/lib/metadata-parser.js +361 -241
- package/lib/metadata-parser.js.map +1 -1
- package/lib/ntlm-payload.js +1 -2
- package/lib/ntlm-payload.js.map +1 -1
- package/lib/outgoing-message-stream.js +1 -5
- package/lib/outgoing-message-stream.js.map +1 -1
- package/lib/packet.js +1 -2
- package/lib/packet.js.map +1 -1
- package/lib/prelogin-payload.js +1 -11
- package/lib/prelogin-payload.js.map +1 -1
- package/lib/request.js +13 -19
- package/lib/request.js.map +1 -1
- package/lib/rpcrequest-payload.js +1 -6
- package/lib/rpcrequest-payload.js.map +1 -1
- package/lib/sqlbatch-payload.js +1 -4
- package/lib/sqlbatch-payload.js.map +1 -1
- package/lib/token/colmetadata-token-parser.js +103 -74
- package/lib/token/colmetadata-token-parser.js.map +1 -1
- package/lib/token/done-token-parser.js +52 -40
- package/lib/token/done-token-parser.js.map +1 -1
- package/lib/token/env-change-token-parser.js +110 -81
- package/lib/token/env-change-token-parser.js.map +1 -1
- package/lib/token/feature-ext-ack-parser.js +30 -22
- package/lib/token/feature-ext-ack-parser.js.map +1 -1
- package/lib/token/fedauth-info-parser.js +47 -30
- package/lib/token/fedauth-info-parser.js.map +1 -1
- package/lib/token/handler.js +3 -13
- package/lib/token/handler.js.map +1 -1
- package/lib/token/helpers.js +205 -0
- package/lib/token/helpers.js.map +1 -0
- package/lib/token/infoerror-token-parser.js +69 -36
- package/lib/token/infoerror-token-parser.js.map +1 -1
- package/lib/token/loginack-token-parser.js +59 -31
- package/lib/token/loginack-token-parser.js.map +1 -1
- package/lib/token/nbcrow-token-parser.js +60 -23
- package/lib/token/nbcrow-token-parser.js.map +1 -1
- package/lib/token/order-token-parser.js +22 -20
- package/lib/token/order-token-parser.js.map +1 -1
- package/lib/token/returnstatus-token-parser.js +9 -5
- package/lib/token/returnstatus-token-parser.js.map +1 -1
- package/lib/token/returnvalue-token-parser.js +79 -22
- package/lib/token/returnvalue-token-parser.js.map +1 -1
- package/lib/token/row-token-parser.js +50 -20
- package/lib/token/row-token-parser.js.map +1 -1
- package/lib/token/sspi-token-parser.js +14 -5
- package/lib/token/sspi-token-parser.js.map +1 -1
- package/lib/token/stream-parser.js +289 -330
- package/lib/token/stream-parser.js.map +1 -1
- package/lib/token/token-stream-parser.js +1 -4
- package/lib/token/token-stream-parser.js.map +1 -1
- package/lib/token/token.js +2 -88
- package/lib/token/token.js.map +1 -1
- package/lib/tracking-buffer/writable-tracking-buffer.js +1 -7
- package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -1
- package/lib/transaction.js +1 -4
- package/lib/transaction.js.map +1 -1
- package/lib/value-parser.js +655 -438
- package/lib/value-parser.js.map +1 -1
- package/package.json +1 -1
- package/benchmarks/bulk-load/stream.js +0 -62
- package/benchmarks/bulk-load/sync.js +0 -59
package/lib/value-parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-parser.js","names":["_metadataParser","require","_dataType","_iconvLite","_interopRequireDefault","_sprintfJs","_guidParser","obj","__esModule","default","NULL","MAX","THREE_AND_A_THIRD","MONEY_DIVISOR","PLP_NULL","Buffer","from","UNKNOWN_PLP_LEN","DEFAULT_ENCODING","readTinyInt","parser","callback","readUInt8","readSmallInt","readInt16LE","readInt","readInt32LE","readBigInt","readBigInt64LE","value","toString","readReal","readFloatLE","readFloat","readDoubleLE","readSmallMoney","readMoney","high","readUInt32LE","low","readBit","valueParse","metadata","options","type","name","dataLength","Error","codepage","collation","readMaxChars","readUInt16LE","readChars","readMaxNChars","readNChars","readMaxBinary","readBinary","textPointerLength","readBuffer","_textPointer","_timestamp","readSmallDateTime","useUTC","readDateTime","readTime","scale","readDate","readDateTime2","readDateTimeOffset","readNumeric","precision","readUniqueIdentifier","sprintf","readVariant","data","lowerCaseGuids","bufferToLowerCaseGuid","bufferToUpperCaseGuid","_precision","sign","readValue","readUNumeric64LE","readUNumeric96LE","readUNumeric128LE","call","Math","pow","baseType","TYPE","propBytes","_maxLength","readCollation","_collation","iconv","decode","readMax","equals","readMaxUnknownLength","console","warn","expectedLength","readMaxKnownLength","totalLength","alloc","offset","next","done","chunkLength","chunk","copy","chunks","length","push","concat","days","minutes","Date","UTC","threeHundredthsOfSecond","milliseconds","round","readUInt24LE","readUInt40LE","i","date","Object","defineProperty","enumerable","time","getHours","getMinutes","getSeconds","getMilliseconds","nanosecondsDelta","_default","exports","module"],"sources":["../src/value-parser.ts"],"sourcesContent":["import Parser, { type ParserOptions } from './token/stream-parser';\nimport { type Metadata, readCollation } from './metadata-parser';\nimport { TYPE } from './data-type';\n\nimport iconv from 'iconv-lite';\nimport { sprintf } from 'sprintf-js';\nimport { bufferToLowerCaseGuid, bufferToUpperCaseGuid } from './guid-parser';\n\nconst NULL = (1 << 16) - 1;\nconst MAX = (1 << 16) - 1;\nconst THREE_AND_A_THIRD = 3 + (1 / 3);\nconst MONEY_DIVISOR = 10000;\nconst PLP_NULL = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\nconst UNKNOWN_PLP_LEN = Buffer.from([0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\nconst DEFAULT_ENCODING = 'utf8';\n\nfunction readTinyInt(parser: Parser, callback: (value: unknown) => void) {\n parser.readUInt8(callback);\n}\n\nfunction readSmallInt(parser: Parser, callback: (value: unknown) => void) {\n parser.readInt16LE(callback);\n}\n\nfunction readInt(parser: Parser, callback: (value: unknown) => void) {\n parser.readInt32LE(callback);\n}\n\nfunction readBigInt(parser: Parser, callback: (value: unknown) => void) {\n parser.readBigInt64LE((value) => {\n callback(value.toString());\n });\n}\n\nfunction readReal(parser: Parser, callback: (value: unknown) => void) {\n parser.readFloatLE(callback);\n}\n\nfunction readFloat(parser: Parser, callback: (value: unknown) => void) {\n parser.readDoubleLE(callback);\n}\n\nfunction readSmallMoney(parser: Parser, callback: (value: unknown) => void) {\n parser.readInt32LE((value) => {\n callback(value / MONEY_DIVISOR);\n });\n}\n\nfunction readMoney(parser: Parser, callback: (value: unknown) => void) {\n parser.readInt32LE((high) => {\n parser.readUInt32LE((low) => {\n callback((low + (0x100000000 * high)) / MONEY_DIVISOR);\n });\n });\n}\n\nfunction readBit(parser: Parser, callback: (value: unknown) => void) {\n parser.readUInt8((value) => {\n callback(!!value);\n });\n}\n\nfunction valueParse(parser: Parser, metadata: Metadata, options: ParserOptions, callback: (value: unknown) => void): void {\n const type = metadata.type;\n\n switch (type.name) {\n case 'Null':\n return callback(null);\n\n case 'TinyInt':\n return readTinyInt(parser, callback);\n\n case 'SmallInt':\n return readSmallInt(parser, callback);\n\n case 'Int':\n return readInt(parser, callback);\n\n case 'BigInt':\n return readBigInt(parser, callback);\n\n case 'IntN':\n return parser.readUInt8((dataLength) => {\n switch (dataLength) {\n case 0:\n return callback(null);\n\n case 1:\n return readTinyInt(parser, callback);\n case 2:\n return readSmallInt(parser, callback);\n case 4:\n return readInt(parser, callback);\n case 8:\n return readBigInt(parser, callback);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for IntN');\n }\n });\n\n case 'Real':\n return readReal(parser, callback);\n\n case 'Float':\n return readFloat(parser, callback);\n\n case 'FloatN':\n return parser.readUInt8((dataLength) => {\n switch (dataLength) {\n case 0:\n return callback(null);\n\n case 4:\n return readReal(parser, callback);\n case 8:\n return readFloat(parser, callback);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for FloatN');\n }\n });\n\n case 'SmallMoney':\n return readSmallMoney(parser, callback);\n\n case 'Money':\n return readMoney(parser, callback);\n\n case 'MoneyN':\n return parser.readUInt8((dataLength) => {\n switch (dataLength) {\n case 0:\n return callback(null);\n\n case 4:\n return readSmallMoney(parser, callback);\n case 8:\n return readMoney(parser, callback);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for MoneyN');\n }\n });\n\n case 'Bit':\n return readBit(parser, callback);\n\n case 'BitN':\n return parser.readUInt8((dataLength) => {\n switch (dataLength) {\n case 0:\n return callback(null);\n\n case 1:\n return readBit(parser, callback);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for BitN');\n }\n });\n\n case 'VarChar':\n case 'Char':\n const codepage = metadata.collation!.codepage!;\n if (metadata.dataLength === MAX) {\n return readMaxChars(parser, codepage, callback);\n } else {\n return parser.readUInt16LE((dataLength) => {\n if (dataLength === NULL) {\n return callback(null);\n }\n\n readChars(parser, dataLength!, codepage, callback);\n });\n }\n\n case 'NVarChar':\n case 'NChar':\n if (metadata.dataLength === MAX) {\n return readMaxNChars(parser, callback);\n } else {\n return parser.readUInt16LE((dataLength) => {\n if (dataLength === NULL) {\n return callback(null);\n }\n\n readNChars(parser, dataLength!, callback);\n });\n }\n\n case 'VarBinary':\n case 'Binary':\n if (metadata.dataLength === MAX) {\n return readMaxBinary(parser, callback);\n } else {\n return parser.readUInt16LE((dataLength) => {\n if (dataLength === NULL) {\n return callback(null);\n }\n\n readBinary(parser, dataLength!, callback);\n });\n }\n\n case 'Text':\n return parser.readUInt8((textPointerLength) => {\n if (textPointerLength === 0) {\n return callback(null);\n }\n\n parser.readBuffer(textPointerLength, (_textPointer) => {\n parser.readBuffer(8, (_timestamp) => {\n parser.readUInt32LE((dataLength) => {\n readChars(parser, dataLength!, metadata.collation!.codepage!, callback);\n });\n });\n });\n });\n\n case 'NText':\n return parser.readUInt8((textPointerLength) => {\n if (textPointerLength === 0) {\n return callback(null);\n }\n\n parser.readBuffer(textPointerLength, (_textPointer) => {\n parser.readBuffer(8, (_timestamp) => {\n parser.readUInt32LE((dataLength) => {\n readNChars(parser, dataLength!, callback);\n });\n });\n });\n });\n\n case 'Image':\n return parser.readUInt8((textPointerLength) => {\n if (textPointerLength === 0) {\n return callback(null);\n }\n\n parser.readBuffer(textPointerLength, (_textPointer) => {\n parser.readBuffer(8, (_timestamp) => {\n parser.readUInt32LE((dataLength) => {\n readBinary(parser, dataLength!, callback);\n });\n });\n });\n });\n\n case 'Xml':\n return readMaxNChars(parser, callback);\n\n case 'SmallDateTime':\n return readSmallDateTime(parser, options.useUTC, callback);\n\n case 'DateTime':\n return readDateTime(parser, options.useUTC, callback);\n\n case 'DateTimeN':\n return parser.readUInt8((dataLength) => {\n switch (dataLength) {\n case 0:\n return callback(null);\n\n case 4:\n return readSmallDateTime(parser, options.useUTC, callback);\n case 8:\n return readDateTime(parser, options.useUTC, callback);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for DateTimeN');\n }\n });\n\n case 'Time':\n return parser.readUInt8((dataLength) => {\n if (dataLength === 0) {\n return callback(null);\n } else {\n return readTime(parser, dataLength!, metadata.scale!, options.useUTC, callback);\n }\n });\n\n case 'Date':\n return parser.readUInt8((dataLength) => {\n if (dataLength === 0) {\n return callback(null);\n } else {\n return readDate(parser, options.useUTC, callback);\n }\n });\n\n case 'DateTime2':\n return parser.readUInt8((dataLength) => {\n if (dataLength === 0) {\n return callback(null);\n } else {\n return readDateTime2(parser, dataLength!, metadata.scale!, options.useUTC, callback);\n }\n });\n\n case 'DateTimeOffset':\n return parser.readUInt8((dataLength) => {\n if (dataLength === 0) {\n return callback(null);\n } else {\n return readDateTimeOffset(parser, dataLength!, metadata.scale!, callback);\n }\n });\n\n case 'NumericN':\n case 'DecimalN':\n return parser.readUInt8((dataLength) => {\n if (dataLength === 0) {\n return callback(null);\n } else {\n return readNumeric(parser, dataLength!, metadata.precision!, metadata.scale!, callback);\n }\n });\n\n case 'UniqueIdentifier':\n return parser.readUInt8((dataLength) => {\n switch (dataLength) {\n case 0:\n return callback(null);\n\n case 0x10:\n return readUniqueIdentifier(parser, options, callback);\n\n default:\n throw new Error(sprintf('Unsupported guid size %d', dataLength! - 1));\n }\n });\n\n case 'UDT':\n return readMaxBinary(parser, callback);\n\n case 'Variant':\n return parser.readUInt32LE((dataLength) => {\n if (dataLength === 0) {\n return callback(null);\n }\n\n readVariant(parser, options, dataLength!, callback);\n });\n\n default:\n throw new Error(sprintf('Unrecognised type %s', type.name));\n }\n}\n\nfunction readUniqueIdentifier(parser: Parser, options: ParserOptions, callback: (value: unknown) => void) {\n parser.readBuffer(0x10, (data) => {\n callback(options.lowerCaseGuids ? bufferToLowerCaseGuid(data) : bufferToUpperCaseGuid(data));\n });\n}\n\nfunction readNumeric(parser: Parser, dataLength: number, _precision: number, scale: number, callback: (value: unknown) => void) {\n parser.readUInt8((sign) => {\n sign = sign === 1 ? 1 : -1;\n\n let readValue;\n if (dataLength === 5) {\n readValue = parser.readUInt32LE;\n } else if (dataLength === 9) {\n readValue = parser.readUNumeric64LE;\n } else if (dataLength === 13) {\n readValue = parser.readUNumeric96LE;\n } else if (dataLength === 17) {\n readValue = parser.readUNumeric128LE;\n } else {\n throw new Error(sprintf('Unsupported numeric dataLength %d', dataLength));\n }\n\n readValue.call(parser, (value) => {\n callback((value * sign) / Math.pow(10, scale));\n });\n });\n}\n\nfunction readVariant(parser: Parser, options: ParserOptions, dataLength: number, callback: (value: unknown) => void) {\n return parser.readUInt8((baseType) => {\n const type = TYPE[baseType];\n\n return parser.readUInt8((propBytes) => {\n dataLength = dataLength - propBytes - 2;\n\n switch (type.name) {\n case 'UniqueIdentifier':\n return readUniqueIdentifier(parser, options, callback);\n\n case 'Bit':\n return readBit(parser, callback);\n\n case 'TinyInt':\n return readTinyInt(parser, callback);\n\n case 'SmallInt':\n return readSmallInt(parser, callback);\n\n case 'Int':\n return readInt(parser, callback);\n\n case 'BigInt':\n return readBigInt(parser, callback);\n\n case 'SmallDateTime':\n return readSmallDateTime(parser, options.useUTC, callback);\n\n case 'DateTime':\n return readDateTime(parser, options.useUTC, callback);\n\n case 'Real':\n return readReal(parser, callback);\n\n case 'Float':\n return readFloat(parser, callback);\n\n case 'SmallMoney':\n return readSmallMoney(parser, callback);\n\n case 'Money':\n return readMoney(parser, callback);\n\n case 'Date':\n return readDate(parser, options.useUTC, callback);\n\n case 'Time':\n return parser.readUInt8((scale) => {\n return readTime(parser, dataLength, scale, options.useUTC, callback);\n });\n\n case 'DateTime2':\n return parser.readUInt8((scale) => {\n return readDateTime2(parser, dataLength, scale, options.useUTC, callback);\n });\n\n case 'DateTimeOffset':\n return parser.readUInt8((scale) => {\n return readDateTimeOffset(parser, dataLength, scale, callback);\n });\n\n case 'VarBinary':\n case 'Binary':\n return parser.readUInt16LE((_maxLength) => {\n readBinary(parser, dataLength, callback);\n });\n\n case 'NumericN':\n case 'DecimalN':\n return parser.readUInt8((precision) => {\n parser.readUInt8((scale) => {\n readNumeric(parser, dataLength, precision, scale, callback);\n });\n });\n\n case 'VarChar':\n case 'Char':\n return parser.readUInt16LE((_maxLength) => {\n readCollation(parser, (collation) => {\n readChars(parser, dataLength, collation.codepage!, callback);\n });\n });\n\n case 'NVarChar':\n case 'NChar':\n return parser.readUInt16LE((_maxLength) => {\n readCollation(parser, (_collation) => {\n readNChars(parser, dataLength, callback);\n });\n });\n\n default:\n throw new Error('Invalid type!');\n }\n });\n });\n}\n\nfunction readBinary(parser: Parser, dataLength: number, callback: (value: unknown) => void) {\n return parser.readBuffer(dataLength, callback);\n}\n\nfunction readChars(parser: Parser, dataLength: number, codepage: string, callback: (value: unknown) => void) {\n if (codepage == null) {\n codepage = DEFAULT_ENCODING;\n }\n\n return parser.readBuffer(dataLength, (data) => {\n callback(iconv.decode(data, codepage));\n });\n}\n\nfunction readNChars(parser: Parser, dataLength: number, callback: (value: unknown) => void) {\n parser.readBuffer(dataLength, (data) => {\n callback(data.toString('ucs2'));\n });\n}\n\nfunction readMaxBinary(parser: Parser, callback: (value: unknown) => void) {\n return readMax(parser, callback);\n}\n\nfunction readMaxChars(parser: Parser, codepage: string, callback: (value: unknown) => void) {\n if (codepage == null) {\n codepage = DEFAULT_ENCODING;\n }\n\n readMax(parser, (data) => {\n if (data) {\n callback(iconv.decode(data, codepage));\n } else {\n callback(null);\n }\n });\n}\n\nfunction readMaxNChars(parser: Parser, callback: (value: string | null) => void) {\n readMax(parser, (data) => {\n if (data) {\n callback(data.toString('ucs2'));\n } else {\n callback(null);\n }\n });\n}\n\nfunction readMax(parser: Parser, callback: (value: null | Buffer) => void) {\n parser.readBuffer(8, (type) => {\n if (type.equals(PLP_NULL)) {\n return callback(null);\n } else if (type.equals(UNKNOWN_PLP_LEN)) {\n return readMaxUnknownLength(parser, callback);\n } else {\n const low = type.readUInt32LE(0);\n const high = type.readUInt32LE(4);\n\n if (high >= (2 << (53 - 32))) {\n console.warn('Read UInt64LE > 53 bits : high=' + high + ', low=' + low);\n }\n\n const expectedLength = low + (0x100000000 * high);\n return readMaxKnownLength(parser, expectedLength, callback);\n }\n });\n}\n\nfunction readMaxKnownLength(parser: Parser, totalLength: number, callback: (value: null | Buffer) => void) {\n const data = Buffer.alloc(totalLength, 0);\n\n let offset = 0;\n function next(done: any) {\n parser.readUInt32LE((chunkLength) => {\n if (!chunkLength) {\n return done();\n }\n\n parser.readBuffer(chunkLength, (chunk) => {\n chunk.copy(data, offset);\n offset += chunkLength;\n\n next(done);\n });\n });\n }\n\n next(() => {\n if (offset !== totalLength) {\n throw new Error('Partially Length-prefixed Bytes unmatched lengths : expected ' + totalLength + ', but got ' + offset + ' bytes');\n }\n\n callback(data);\n });\n}\n\nfunction readMaxUnknownLength(parser: Parser, callback: (value: null | Buffer) => void) {\n const chunks: Buffer[] = [];\n\n let length = 0;\n function next(done: any) {\n parser.readUInt32LE((chunkLength) => {\n if (!chunkLength) {\n return done();\n }\n\n parser.readBuffer(chunkLength, (chunk) => {\n chunks.push(chunk);\n length += chunkLength;\n\n next(done);\n });\n });\n }\n\n next(() => {\n callback(Buffer.concat(chunks, length));\n });\n}\n\nfunction readSmallDateTime(parser: Parser, useUTC: boolean, callback: (value: Date) => void) {\n parser.readUInt16LE((days) => {\n parser.readUInt16LE((minutes) => {\n let value;\n if (useUTC) {\n value = new Date(Date.UTC(1900, 0, 1 + days, 0, minutes));\n } else {\n value = new Date(1900, 0, 1 + days, 0, minutes);\n }\n callback(value);\n });\n });\n}\n\nfunction readDateTime(parser: Parser, useUTC: boolean, callback: (value: Date) => void) {\n parser.readInt32LE((days) => {\n parser.readUInt32LE((threeHundredthsOfSecond) => {\n const milliseconds = Math.round(threeHundredthsOfSecond * THREE_AND_A_THIRD);\n\n let value;\n if (useUTC) {\n value = new Date(Date.UTC(1900, 0, 1 + days, 0, 0, 0, milliseconds));\n } else {\n value = new Date(1900, 0, 1 + days, 0, 0, 0, milliseconds);\n }\n\n callback(value);\n });\n });\n}\n\ninterface DateWithNanosecondsDelta extends Date {\n nanosecondsDelta: number;\n}\n\nfunction readTime(parser: Parser, dataLength: number, scale: number, useUTC: boolean, callback: (value: DateWithNanosecondsDelta) => void) {\n let readValue: any;\n switch (dataLength) {\n case 3:\n readValue = parser.readUInt24LE;\n break;\n case 4:\n readValue = parser.readUInt32LE;\n break;\n case 5:\n readValue = parser.readUInt40LE;\n }\n\n readValue!.call(parser, (value: number) => {\n if (scale < 7) {\n for (let i = scale; i < 7; i++) {\n value *= 10;\n }\n }\n\n let date;\n if (useUTC) {\n date = new Date(Date.UTC(1970, 0, 1, 0, 0, 0, value / 10000)) as DateWithNanosecondsDelta;\n } else {\n date = new Date(1970, 0, 1, 0, 0, 0, value / 10000) as DateWithNanosecondsDelta;\n }\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: (value % 10000) / Math.pow(10, 7)\n });\n callback(date);\n });\n}\n\nfunction readDate(parser: Parser, useUTC: boolean, callback: (value: Date) => void) {\n parser.readUInt24LE((days) => {\n if (useUTC) {\n callback(new Date(Date.UTC(2000, 0, days - 730118)));\n } else {\n callback(new Date(2000, 0, days - 730118));\n }\n });\n}\n\nfunction readDateTime2(parser: Parser, dataLength: number, scale: number, useUTC: boolean, callback: (value: DateWithNanosecondsDelta) => void) {\n readTime(parser, dataLength - 3, scale, useUTC, (time) => { // TODO: 'input' is 'time', but TypeScript cannot find \"time.nanosecondsDelta\";\n parser.readUInt24LE((days) => {\n let date;\n if (useUTC) {\n date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time)) as DateWithNanosecondsDelta;\n } else {\n date = new Date(2000, 0, days - 730118, time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()) as DateWithNanosecondsDelta;\n }\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: time.nanosecondsDelta\n });\n callback(date);\n });\n });\n}\n\nfunction readDateTimeOffset(parser: Parser, dataLength: number, scale: number, callback: (value: DateWithNanosecondsDelta) => void) {\n readTime(parser, dataLength - 5, scale, true, (time) => {\n parser.readUInt24LE((days) => {\n // offset\n parser.readInt16LE(() => {\n const date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time)) as DateWithNanosecondsDelta;\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: time.nanosecondsDelta\n });\n callback(date);\n });\n });\n });\n}\n\nexport default valueParse;\nmodule.exports = valueParse;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"value-parser.js","names":["_metadataParser","require","_dataType","_iconvLite","_interopRequireDefault","_sprintfJs","_guidParser","_helpers","obj","__esModule","default","NULL","MAX","THREE_AND_A_THIRD","MONEY_DIVISOR","PLP_NULL","UNKNOWN_PLP_LEN","DEFAULT_ENCODING","readTinyInt","buf","offset","readUInt8","readSmallInt","readInt16LE","readInt","readInt32LE","readBigInt","value","readBigInt64LE","Result","toString","readReal","readFloatLE","readFloat","readDoubleLE","readSmallMoney","readMoney","high","low","readUInt32LE","readBit","readValue","metadata","options","type","name","dataLength","Error","codepage","collation","readUInt16LE","readChars","readNChars","readBinary","textPointerLength","readSmallDateTime","useUTC","readDateTime","readTime","scale","readDate","readDateTime2","readDateTimeOffset","readNumeric","precision","readUniqueIdentifier","sprintf","readVariant","isPLPStream","data","lowerCaseGuids","bufferToLowerCaseGuid","bufferToUpperCaseGuid","_precision","sign","readUNumeric64LE","readUNumeric96LE","readUNumeric128LE","Math","pow","baseType","TYPE","propBytes","readCollation","length","NotEnoughDataError","slice","iconv","decode","readPLPStream","parser","buffer","position","waitForChunk","expectedLength","readBigUInt64LE","chunks","currentLength","chunkLength","push","Number","days","minutes","Date","UTC","threeHundredthsOfSecond","milliseconds","round","readUInt24LE","readUInt40LE","i","date","Object","defineProperty","enumerable","time","getHours","getMinutes","getSeconds","getMilliseconds","nanosecondsDelta","module","exports"],"sources":["../src/value-parser.ts"],"sourcesContent":["import Parser, { type ParserOptions } from './token/stream-parser';\nimport { type Metadata, readCollation } from './metadata-parser';\nimport { TYPE } from './data-type';\n\nimport iconv from 'iconv-lite';\nimport { sprintf } from 'sprintf-js';\nimport { bufferToLowerCaseGuid, bufferToUpperCaseGuid } from './guid-parser';\nimport { NotEnoughDataError, Result, readBigInt64LE, readDoubleLE, readFloatLE, readInt16LE, readInt32LE, readUInt16LE, readUInt32LE, readUInt8, readUInt24LE, readUInt40LE, readUNumeric64LE, readUNumeric96LE, readUNumeric128LE } from './token/helpers';\n\nconst NULL = (1 << 16) - 1;\nconst MAX = (1 << 16) - 1;\nconst THREE_AND_A_THIRD = 3 + (1 / 3);\nconst MONEY_DIVISOR = 10000;\nconst PLP_NULL = 0xFFFFFFFFFFFFFFFFn;\nconst UNKNOWN_PLP_LEN = 0xFFFFFFFFFFFFFFFEn;\nconst DEFAULT_ENCODING = 'utf8';\n\nfunction readTinyInt(buf: Buffer, offset: number): Result<number> {\n return readUInt8(buf, offset);\n}\n\nfunction readSmallInt(buf: Buffer, offset: number): Result<number> {\n return readInt16LE(buf, offset);\n}\n\nfunction readInt(buf: Buffer, offset: number): Result<number> {\n return readInt32LE(buf, offset);\n}\n\nfunction readBigInt(buf: Buffer, offset: number): Result<string> {\n let value;\n ({ offset, value } = readBigInt64LE(buf, offset));\n\n return new Result(value.toString(), offset);\n}\n\nfunction readReal(buf: Buffer, offset: number): Result<number> {\n return readFloatLE(buf, offset);\n}\n\nfunction readFloat(buf: Buffer, offset: number): Result<number> {\n return readDoubleLE(buf, offset);\n}\n\nfunction readSmallMoney(buf: Buffer, offset: number): Result<number> {\n let value;\n ({ offset, value } = readInt32LE(buf, offset));\n\n return new Result(value / MONEY_DIVISOR, offset);\n}\n\nfunction readMoney(buf: Buffer, offset: number): Result<number> {\n let high;\n ({ offset, value: high } = readInt32LE(buf, offset));\n\n let low;\n ({ offset, value: low } = readUInt32LE(buf, offset));\n\n return new Result((low + (0x100000000 * high)) / MONEY_DIVISOR, offset);\n}\n\nfunction readBit(buf: Buffer, offset: number): Result<boolean> {\n let value;\n ({ offset, value } = readUInt8(buf, offset));\n\n return new Result(!!value, offset);\n}\n\nfunction readValue(buf: Buffer, offset: number, metadata: Metadata, options: ParserOptions): Result<unknown> {\n const type = metadata.type;\n\n switch (type.name) {\n case 'Null':\n return new Result(null, offset);\n\n case 'TinyInt': {\n return readTinyInt(buf, offset);\n }\n\n case 'SmallInt': {\n return readSmallInt(buf, offset);\n }\n\n case 'Int': {\n return readInt(buf, offset);\n }\n\n case 'BigInt': {\n return readBigInt(buf, offset);\n }\n\n case 'IntN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 1:\n return readTinyInt(buf, offset);\n case 2:\n return readSmallInt(buf, offset);\n case 4:\n return readInt(buf, offset);\n case 8:\n return readBigInt(buf, offset);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for IntN');\n }\n }\n\n case 'Real': {\n return readReal(buf, offset);\n }\n\n case 'Float': {\n return readFloat(buf, offset);\n }\n\n case 'FloatN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 4:\n return readReal(buf, offset);\n case 8:\n return readFloat(buf, offset);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for FloatN');\n }\n }\n\n case 'SmallMoney': {\n return readSmallMoney(buf, offset);\n }\n\n case 'Money':\n return readMoney(buf, offset);\n\n case 'MoneyN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 4:\n return readSmallMoney(buf, offset);\n case 8:\n return readMoney(buf, offset);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for MoneyN');\n }\n }\n\n case 'Bit': {\n return readBit(buf, offset);\n }\n\n case 'BitN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 1:\n return readBit(buf, offset);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for BitN');\n }\n }\n\n case 'VarChar':\n case 'Char': {\n const codepage = metadata.collation!.codepage!;\n\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n if (dataLength === NULL) {\n return new Result(null, offset);\n }\n\n return readChars(buf, offset, dataLength, codepage);\n }\n\n case 'NVarChar':\n case 'NChar': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n if (dataLength === NULL) {\n return new Result(null, offset);\n }\n\n return readNChars(buf, offset, dataLength);\n }\n\n case 'VarBinary':\n case 'Binary': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n if (dataLength === NULL) {\n return new Result(null, offset);\n }\n\n return readBinary(buf, offset, dataLength);\n }\n\n case 'Text': {\n let textPointerLength;\n ({ offset, value: textPointerLength } = readUInt8(buf, offset));\n\n if (textPointerLength === 0) {\n return new Result(null, offset);\n }\n\n // Textpointer\n ({ offset } = readBinary(buf, offset, textPointerLength));\n\n // Timestamp\n ({ offset } = readBinary(buf, offset, 8));\n\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return readChars(buf, offset, dataLength, metadata.collation!.codepage!);\n }\n\n case 'NText': {\n let textPointerLength;\n ({ offset, value: textPointerLength } = readUInt8(buf, offset));\n\n if (textPointerLength === 0) {\n return new Result(null, offset);\n }\n\n // Textpointer\n ({ offset } = readBinary(buf, offset, textPointerLength));\n\n // Timestamp\n ({ offset } = readBinary(buf, offset, 8));\n\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return readNChars(buf, offset, dataLength);\n }\n\n case 'Image': {\n let textPointerLength;\n ({ offset, value: textPointerLength } = readUInt8(buf, offset));\n\n if (textPointerLength === 0) {\n return new Result(null, offset);\n }\n\n // Textpointer\n ({ offset } = readBinary(buf, offset, textPointerLength));\n\n // Timestamp\n ({ offset } = readBinary(buf, offset, 8));\n\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return readBinary(buf, offset, dataLength);\n }\n\n case 'SmallDateTime': {\n return readSmallDateTime(buf, offset, options.useUTC);\n }\n\n case 'DateTime': {\n return readDateTime(buf, offset, options.useUTC);\n }\n\n case 'DateTimeN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 4:\n return readSmallDateTime(buf, offset, options.useUTC);\n case 8:\n return readDateTime(buf, offset, options.useUTC);\n\n default:\n throw new Error('Unsupported dataLength ' + dataLength + ' for DateTimeN');\n }\n }\n\n case 'Time': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readTime(buf, offset, dataLength, metadata.scale!, options.useUTC);\n }\n\n case 'Date': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readDate(buf, offset, options.useUTC);\n }\n\n case 'DateTime2': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readDateTime2(buf, offset, dataLength, metadata.scale!, options.useUTC);\n }\n\n case 'DateTimeOffset': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readDateTimeOffset(buf, offset, dataLength, metadata.scale!);\n }\n\n case 'NumericN':\n case 'DecimalN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readNumeric(buf, offset, dataLength, metadata.precision!, metadata.scale!);\n }\n\n case 'UniqueIdentifier': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n switch (dataLength) {\n case 0:\n return new Result(null, offset);\n\n case 0x10:\n return readUniqueIdentifier(buf, offset, options);\n\n default:\n throw new Error(sprintf('Unsupported guid size %d', dataLength! - 1));\n }\n }\n\n case 'Variant': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n if (dataLength === 0) {\n return new Result(null, offset);\n }\n\n return readVariant(buf, offset, options, dataLength);\n }\n\n default: {\n throw new Error('Invalid type!');\n }\n }\n}\n\nfunction isPLPStream(metadata: Metadata) {\n switch (metadata.type.name) {\n case 'VarChar':\n case 'NVarChar':\n case 'VarBinary': {\n return metadata.dataLength === MAX;\n }\n\n case 'Xml': {\n return true;\n }\n\n case 'UDT': {\n return true;\n }\n }\n}\n\nfunction readUniqueIdentifier(buf: Buffer, offset: number, options: ParserOptions): Result<string> {\n let data;\n ({ value: data, offset } = readBinary(buf, offset, 0x10));\n\n return new Result(options.lowerCaseGuids ? bufferToLowerCaseGuid(data) : bufferToUpperCaseGuid(data), offset);\n}\n\nfunction readNumeric(buf: Buffer, offset: number, dataLength: number, _precision: number, scale: number): Result<number> {\n let sign;\n ({ offset, value: sign } = readUInt8(buf, offset));\n\n sign = sign === 1 ? 1 : -1;\n\n let value;\n if (dataLength === 5) {\n ({ offset, value } = readUInt32LE(buf, offset));\n } else if (dataLength === 9) {\n ({ offset, value } = readUNumeric64LE(buf, offset));\n } else if (dataLength === 13) {\n ({ offset, value } = readUNumeric96LE(buf, offset));\n } else if (dataLength === 17) {\n ({ offset, value } = readUNumeric128LE(buf, offset));\n } else {\n throw new Error(sprintf('Unsupported numeric dataLength %d', dataLength));\n }\n\n return new Result((value * sign) / Math.pow(10, scale), offset);\n}\n\nfunction readVariant(buf: Buffer, offset: number, options: ParserOptions, dataLength: number): Result<unknown> {\n let baseType;\n ({ value: baseType, offset } = readUInt8(buf, offset));\n\n const type = TYPE[baseType];\n\n let propBytes;\n ({ value: propBytes, offset } = readUInt8(buf, offset));\n\n dataLength = dataLength - propBytes - 2;\n\n switch (type.name) {\n case 'UniqueIdentifier':\n return readUniqueIdentifier(buf, offset, options);\n\n case 'Bit':\n return readBit(buf, offset);\n\n case 'TinyInt':\n return readTinyInt(buf, offset);\n\n case 'SmallInt':\n return readSmallInt(buf, offset);\n\n case 'Int':\n return readInt(buf, offset);\n\n case 'BigInt':\n return readBigInt(buf, offset);\n\n case 'SmallDateTime':\n return readSmallDateTime(buf, offset, options.useUTC);\n\n case 'DateTime':\n return readDateTime(buf, offset, options.useUTC);\n\n case 'Real':\n return readReal(buf, offset);\n\n case 'Float':\n return readFloat(buf, offset);\n\n case 'SmallMoney':\n return readSmallMoney(buf, offset);\n\n case 'Money':\n return readMoney(buf, offset);\n\n case 'Date':\n return readDate(buf, offset, options.useUTC);\n\n case 'Time': {\n let scale;\n ({ value: scale, offset } = readUInt8(buf, offset));\n\n return readTime(buf, offset, dataLength, scale, options.useUTC);\n }\n\n case 'DateTime2': {\n let scale;\n ({ value: scale, offset } = readUInt8(buf, offset));\n\n return readDateTime2(buf, offset, dataLength, scale, options.useUTC);\n }\n\n case 'DateTimeOffset': {\n let scale;\n ({ value: scale, offset } = readUInt8(buf, offset));\n\n return readDateTimeOffset(buf, offset, dataLength, scale);\n }\n\n case 'VarBinary':\n case 'Binary': {\n // maxLength (unused?)\n ({ offset } = readUInt16LE(buf, offset));\n\n return readBinary(buf, offset, dataLength);\n }\n\n case 'NumericN':\n case 'DecimalN': {\n let precision;\n ({ value: precision, offset } = readUInt8(buf, offset));\n\n let scale;\n ({ value: scale, offset } = readUInt8(buf, offset));\n\n return readNumeric(buf, offset, dataLength, precision, scale);\n }\n\n case 'VarChar':\n case 'Char': {\n // maxLength (unused?)\n ({ offset } = readUInt16LE(buf, offset));\n\n let collation;\n ({ value: collation, offset } = readCollation(buf, offset));\n\n return readChars(buf, offset, dataLength, collation.codepage!);\n }\n\n case 'NVarChar':\n case 'NChar': {\n // maxLength (unused?)\n ({ offset } = readUInt16LE(buf, offset));\n\n // collation (unsued?)\n ({ offset } = readCollation(buf, offset));\n\n return readNChars(buf, offset, dataLength);\n }\n\n default:\n throw new Error('Invalid type!');\n }\n}\n\nfunction readBinary(buf: Buffer, offset: number, dataLength: number): Result<Buffer> {\n if (buf.length < offset + dataLength) {\n throw new NotEnoughDataError(offset + dataLength);\n }\n\n return new Result(buf.slice(offset, offset + dataLength), offset + dataLength);\n}\n\nfunction readChars(buf: Buffer, offset: number, dataLength: number, codepage: string): Result<string> {\n if (buf.length < offset + dataLength) {\n throw new NotEnoughDataError(offset + dataLength);\n }\n\n return new Result(iconv.decode(buf.slice(offset, offset + dataLength), codepage ?? DEFAULT_ENCODING), offset + dataLength);\n}\n\nfunction readNChars(buf: Buffer, offset: number, dataLength: number): Result<string> {\n if (buf.length < offset + dataLength) {\n throw new NotEnoughDataError(offset + dataLength);\n }\n\n return new Result(buf.toString('ucs2', offset, offset + dataLength), offset + dataLength);\n}\n\nasync function readPLPStream(parser: Parser): Promise<null | Buffer[]> {\n while (parser.buffer.length < parser.position + 8) {\n await parser.waitForChunk();\n }\n\n const expectedLength = parser.buffer.readBigUInt64LE(parser.position);\n parser.position += 8;\n\n if (expectedLength === PLP_NULL) {\n return null;\n }\n\n const chunks: Buffer[] = [];\n let currentLength = 0;\n\n while (true) {\n while (parser.buffer.length < parser.position + 4) {\n await parser.waitForChunk();\n }\n\n const chunkLength = parser.buffer.readUInt32LE(parser.position);\n parser.position += 4;\n\n if (!chunkLength) {\n break;\n }\n\n while (parser.buffer.length < parser.position + chunkLength) {\n await parser.waitForChunk();\n }\n\n chunks.push(parser.buffer.slice(parser.position, parser.position + chunkLength));\n parser.position += chunkLength;\n currentLength += chunkLength;\n }\n\n if (expectedLength !== UNKNOWN_PLP_LEN) {\n if (currentLength !== Number(expectedLength)) {\n throw new Error('Partially Length-prefixed Bytes unmatched lengths : expected ' + expectedLength + ', but got ' + currentLength + ' bytes');\n }\n }\n\n return chunks;\n}\n\nfunction readSmallDateTime(buf: Buffer, offset: number, useUTC: boolean): Result<Date> {\n let days;\n ({ offset, value: days } = readUInt16LE(buf, offset));\n\n let minutes;\n ({ offset, value: minutes } = readUInt16LE(buf, offset));\n\n let value;\n if (useUTC) {\n value = new Date(Date.UTC(1900, 0, 1 + days, 0, minutes));\n } else {\n value = new Date(1900, 0, 1 + days, 0, minutes);\n }\n\n return new Result(value, offset);\n}\n\nfunction readDateTime(buf: Buffer, offset: number, useUTC: boolean): Result<Date> {\n let days;\n ({ offset, value: days } = readInt32LE(buf, offset));\n\n let threeHundredthsOfSecond;\n ({ offset, value: threeHundredthsOfSecond } = readInt32LE(buf, offset));\n\n const milliseconds = Math.round(threeHundredthsOfSecond * THREE_AND_A_THIRD);\n\n let value;\n if (useUTC) {\n value = new Date(Date.UTC(1900, 0, 1 + days, 0, 0, 0, milliseconds));\n } else {\n value = new Date(1900, 0, 1 + days, 0, 0, 0, milliseconds);\n }\n\n return new Result(value, offset);\n}\n\ninterface DateWithNanosecondsDelta extends Date {\n nanosecondsDelta: number;\n}\n\nfunction readTime(buf: Buffer, offset: number, dataLength: number, scale: number, useUTC: boolean): Result<DateWithNanosecondsDelta> {\n let value;\n\n switch (dataLength) {\n case 3: {\n ({ value, offset } = readUInt24LE(buf, offset));\n break;\n }\n\n case 4: {\n ({ value, offset } = readUInt32LE(buf, offset));\n break;\n }\n\n case 5: {\n ({ value, offset } = readUInt40LE(buf, offset));\n break;\n }\n\n default: {\n throw new Error('unreachable');\n }\n }\n\n if (scale < 7) {\n for (let i = scale; i < 7; i++) {\n value *= 10;\n }\n }\n\n let date;\n if (useUTC) {\n date = new Date(Date.UTC(1970, 0, 1, 0, 0, 0, value / 10000)) as DateWithNanosecondsDelta;\n } else {\n date = new Date(1970, 0, 1, 0, 0, 0, value / 10000) as DateWithNanosecondsDelta;\n }\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: (value % 10000) / Math.pow(10, 7)\n });\n\n return new Result(date, offset);\n}\n\nfunction readDate(buf: Buffer, offset: number, useUTC: boolean): Result<Date> {\n let days;\n ({ offset, value: days } = readUInt24LE(buf, offset));\n\n if (useUTC) {\n return new Result(new Date(Date.UTC(2000, 0, days - 730118)), offset);\n } else {\n return new Result(new Date(2000, 0, days - 730118), offset);\n }\n}\n\nfunction readDateTime2(buf: Buffer, offset: number, dataLength: number, scale: number, useUTC: boolean): Result<DateWithNanosecondsDelta> {\n let time;\n ({ offset, value: time } = readTime(buf, offset, dataLength - 3, scale, useUTC));\n\n let days;\n ({ offset, value: days } = readUInt24LE(buf, offset));\n\n let date;\n if (useUTC) {\n date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time)) as DateWithNanosecondsDelta;\n } else {\n date = new Date(2000, 0, days - 730118, time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()) as DateWithNanosecondsDelta;\n }\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: time.nanosecondsDelta\n });\n\n return new Result(date, offset);\n}\n\nfunction readDateTimeOffset(buf: Buffer, offset: number, dataLength: number, scale: number): Result<DateWithNanosecondsDelta> {\n let time;\n ({ offset, value: time } = readTime(buf, offset, dataLength - 5, scale, true));\n\n let days;\n ({ offset, value: days } = readUInt24LE(buf, offset));\n\n // time offset?\n ({ offset } = readUInt16LE(buf, offset));\n\n const date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time)) as DateWithNanosecondsDelta;\n Object.defineProperty(date, 'nanosecondsDelta', {\n enumerable: false,\n value: time.nanosecondsDelta\n });\n return new Result(date, offset);\n}\n\nmodule.exports.readValue = readValue;\nmodule.exports.isPLPStream = isPLPStream;\nmodule.exports.readPLPStream = readPLPStream;\n\nexport { readValue, isPLPStream, readPLPStream };\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
const { createBenchmark, createConnection } = require('../common');
|
|
2
|
-
|
|
3
|
-
const { Request, TYPES } = require('../../src/tedious');
|
|
4
|
-
const { Readable } = require('readable-stream');
|
|
5
|
-
|
|
6
|
-
const bench = createBenchmark(main, {
|
|
7
|
-
n: [10, 100],
|
|
8
|
-
size: [
|
|
9
|
-
10,
|
|
10
|
-
100,
|
|
11
|
-
1000,
|
|
12
|
-
10000
|
|
13
|
-
]
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
function main({ n, size }) {
|
|
17
|
-
createConnection(function(connection) {
|
|
18
|
-
const request = new Request(`
|
|
19
|
-
CREATE TABLE "#tmpTestTable" (
|
|
20
|
-
"id" int NOT NULL
|
|
21
|
-
)
|
|
22
|
-
`, (err) => {
|
|
23
|
-
if (err) {
|
|
24
|
-
throw err;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
let i = 0;
|
|
28
|
-
|
|
29
|
-
bench.start();
|
|
30
|
-
|
|
31
|
-
(function cb() {
|
|
32
|
-
const bulkLoad = connection.newBulkLoad('#tmpTestTable', (err) => {
|
|
33
|
-
if (err) {
|
|
34
|
-
throw err;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (i++ === n) {
|
|
38
|
-
bench.end(n);
|
|
39
|
-
|
|
40
|
-
connection.close();
|
|
41
|
-
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
cb();
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
bulkLoad.addColumn('id', TYPES.Int, { nullable: false });
|
|
49
|
-
|
|
50
|
-
Readable.from((function*() {
|
|
51
|
-
for (let j = 0; j < size; j++) {
|
|
52
|
-
yield [j];
|
|
53
|
-
}
|
|
54
|
-
})()).pipe(bulkLoad.getRowStream());
|
|
55
|
-
|
|
56
|
-
connection.execBulkLoad(bulkLoad);
|
|
57
|
-
})();
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
connection.execSqlBatch(request);
|
|
61
|
-
});
|
|
62
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
const { createBenchmark, createConnection } = require('../common');
|
|
2
|
-
|
|
3
|
-
const { Request, TYPES } = require('../../src/tedious');
|
|
4
|
-
|
|
5
|
-
const bench = createBenchmark(main, {
|
|
6
|
-
n: [10, 100],
|
|
7
|
-
size: [
|
|
8
|
-
10,
|
|
9
|
-
100,
|
|
10
|
-
1000,
|
|
11
|
-
10000
|
|
12
|
-
]
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
function main({ n, size }) {
|
|
16
|
-
createConnection(function(connection) {
|
|
17
|
-
const request = new Request(`
|
|
18
|
-
CREATE TABLE "#tmpTestTable" (
|
|
19
|
-
"id" int NOT NULL
|
|
20
|
-
)
|
|
21
|
-
`, (err) => {
|
|
22
|
-
if (err) {
|
|
23
|
-
throw err;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
let i = 0;
|
|
27
|
-
|
|
28
|
-
bench.start();
|
|
29
|
-
|
|
30
|
-
(function cb() {
|
|
31
|
-
const bulkLoad = connection.newBulkLoad('#tmpTestTable', (err) => {
|
|
32
|
-
if (err) {
|
|
33
|
-
throw err;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (i++ === n) {
|
|
37
|
-
bench.end(n);
|
|
38
|
-
|
|
39
|
-
connection.close();
|
|
40
|
-
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
cb();
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
bulkLoad.addColumn('id', TYPES.Int, { nullable: false });
|
|
48
|
-
|
|
49
|
-
for (let j = 0; j < size; j++) {
|
|
50
|
-
bulkLoad.addRow([ j ]);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
connection.execBulkLoad(bulkLoad);
|
|
54
|
-
})();
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
connection.execSqlBatch(request);
|
|
58
|
-
});
|
|
59
|
-
}
|