plugin-data-source-mssql 2.0.3 → 2.0.5
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/dist/client/index.js +1 -1
- package/dist/externalVersion.js +6 -6
- package/dist/server/data-source/MssqlExternalDataSource.js +114 -30
- package/dist/server/data-source/MssqlIntrospector.js +109 -24
- package/package.json +1 -1
- package/dist/node_modules/tedious/245.index.js +0 -741
- package/dist/node_modules/tedious/LICENSE +0 -21
- package/dist/node_modules/tedious/appveyor.yml +0 -67
- package/dist/node_modules/tedious/benchmarks/bulk-load/iterable.js +0 -61
- package/dist/node_modules/tedious/benchmarks/common.js +0 -287
- package/dist/node_modules/tedious/benchmarks/connection/open.js +0 -26
- package/dist/node_modules/tedious/benchmarks/package-lock.json +0 -21173
- package/dist/node_modules/tedious/benchmarks/package.json +0 -11
- package/dist/node_modules/tedious/benchmarks/query/call-tvp.js +0 -105
- package/dist/node_modules/tedious/benchmarks/query/insert-varbinary.js +0 -46
- package/dist/node_modules/tedious/benchmarks/query/select-many-rows.js +0 -63
- package/dist/node_modules/tedious/benchmarks/query/select-nvarchar.js +0 -50
- package/dist/node_modules/tedious/benchmarks/query/select-varbinary.js +0 -50
- package/dist/node_modules/tedious/benchmarks/request/rpcrequest-payload-tvp.js +0 -45
- package/dist/node_modules/tedious/benchmarks/request/rpcrequest-payload-varbinary.js +0 -37
- package/dist/node_modules/tedious/benchmarks/token-parser/colmetadata-token.js +0 -27
- package/dist/node_modules/tedious/benchmarks/token-parser/done-token.js +0 -28
- package/dist/node_modules/tedious/benchmarks/token-parser/simple-tokens.js +0 -363
- package/dist/node_modules/tedious/lib/all-headers.d.ts +0 -2
- package/dist/node_modules/tedious/lib/all-headers.js +0 -24
- package/dist/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +0 -82
- package/dist/node_modules/tedious/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +0 -55
- package/dist/node_modules/tedious/lib/always-encrypted/cek-entry.d.ts +0 -11
- package/dist/node_modules/tedious/lib/always-encrypted/cek-entry.js +0 -42
- package/dist/node_modules/tedious/lib/always-encrypted/get-parameter-encryption-metadata.js +0 -90
- package/dist/node_modules/tedious/lib/always-encrypted/key-crypto.js +0 -94
- package/dist/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.d.ts +0 -21
- package/dist/node_modules/tedious/lib/always-encrypted/keystore-provider-azure-key-vault.js +0 -247
- package/dist/node_modules/tedious/lib/always-encrypted/symmetric-key-cache.js +0 -36
- package/dist/node_modules/tedious/lib/always-encrypted/symmetric-key.js +0 -25
- package/dist/node_modules/tedious/lib/always-encrypted/types.d.ts +0 -73
- package/dist/node_modules/tedious/lib/always-encrypted/types.js +0 -48
- package/dist/node_modules/tedious/lib/always-encrypted/utils.js +0 -23
- package/dist/node_modules/tedious/lib/bulk-load-payload.d.ts +0 -8
- package/dist/node_modules/tedious/lib/bulk-load-payload.js +0 -23
- package/dist/node_modules/tedious/lib/bulk-load.d.ts +0 -275
- package/dist/node_modules/tedious/lib/bulk-load.js +0 -516
- package/dist/node_modules/tedious/lib/collation.d.ts +0 -28
- package/dist/node_modules/tedious/lib/collation.js +0 -348
- package/dist/node_modules/tedious/lib/connection.d.ts +0 -1310
- package/dist/node_modules/tedious/lib/connection.js +0 -2730
- package/dist/node_modules/tedious/lib/connector.d.ts +0 -18
- package/dist/node_modules/tedious/lib/connector.js +0 -150
- package/dist/node_modules/tedious/lib/data-type.d.ts +0 -455
- package/dist/node_modules/tedious/lib/data-type.js +0 -428
- package/dist/node_modules/tedious/lib/data-types/bigint.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/bigint.js +0 -53
- package/dist/node_modules/tedious/lib/data-types/binary.d.ts +0 -5
- package/dist/node_modules/tedious/lib/data-types/binary.js +0 -67
- package/dist/node_modules/tedious/lib/data-types/bit.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/bit.js +0 -46
- package/dist/node_modules/tedious/lib/data-types/bitn.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/bitn.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/char.d.ts +0 -5
- package/dist/node_modules/tedious/lib/data-types/char.js +0 -86
- package/dist/node_modules/tedious/lib/data-types/date.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/date.js +0 -72
- package/dist/node_modules/tedious/lib/data-types/datetime.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/datetime.js +0 -93
- package/dist/node_modules/tedious/lib/data-types/datetime2.d.ts +0 -5
- package/dist/node_modules/tedious/lib/data-types/datetime2.js +0 -118
- package/dist/node_modules/tedious/lib/data-types/datetimen.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/datetimen.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/datetimeoffset.d.ts +0 -5
- package/dist/node_modules/tedious/lib/data-types/datetimeoffset.js +0 -111
- package/dist/node_modules/tedious/lib/data-types/decimal.d.ts +0 -6
- package/dist/node_modules/tedious/lib/data-types/decimal.js +0 -107
- package/dist/node_modules/tedious/lib/data-types/decimaln.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/decimaln.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/float.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/float.js +0 -47
- package/dist/node_modules/tedious/lib/data-types/floatn.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/floatn.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/image.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/image.js +0 -56
- package/dist/node_modules/tedious/lib/data-types/int.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/int.js +0 -53
- package/dist/node_modules/tedious/lib/data-types/intn.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/intn.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/money.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/money.js +0 -59
- package/dist/node_modules/tedious/lib/data-types/moneyn.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/moneyn.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/nchar.d.ts +0 -5
- package/dist/node_modules/tedious/lib/data-types/nchar.js +0 -100
- package/dist/node_modules/tedious/lib/data-types/ntext.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/ntext.js +0 -60
- package/dist/node_modules/tedious/lib/data-types/null.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/null.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/numeric.d.ts +0 -6
- package/dist/node_modules/tedious/lib/data-types/numeric.js +0 -106
- package/dist/node_modules/tedious/lib/data-types/numericn.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/numericn.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/nvarchar.d.ts +0 -5
- package/dist/node_modules/tedious/lib/data-types/nvarchar.js +0 -133
- package/dist/node_modules/tedious/lib/data-types/real.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/real.js +0 -48
- package/dist/node_modules/tedious/lib/data-types/smalldatetime.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/smalldatetime.js +0 -83
- package/dist/node_modules/tedious/lib/data-types/smallint.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/smallint.js +0 -53
- package/dist/node_modules/tedious/lib/data-types/smallmoney.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/smallmoney.js +0 -51
- package/dist/node_modules/tedious/lib/data-types/sql-variant.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/sql-variant.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/text.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/text.js +0 -69
- package/dist/node_modules/tedious/lib/data-types/time.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/time.js +0 -96
- package/dist/node_modules/tedious/lib/data-types/tinyint.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/tinyint.js +0 -53
- package/dist/node_modules/tedious/lib/data-types/tvp.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/tvp.js +0 -117
- package/dist/node_modules/tedious/lib/data-types/udt.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/udt.js +0 -29
- package/dist/node_modules/tedious/lib/data-types/uniqueidentifier.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/uniqueidentifier.js +0 -50
- package/dist/node_modules/tedious/lib/data-types/varbinary.d.ts +0 -5
- package/dist/node_modules/tedious/lib/data-types/varbinary.js +0 -119
- package/dist/node_modules/tedious/lib/data-types/varchar.d.ts +0 -5
- package/dist/node_modules/tedious/lib/data-types/varchar.js +0 -112
- package/dist/node_modules/tedious/lib/data-types/xml.d.ts +0 -3
- package/dist/node_modules/tedious/lib/data-types/xml.js +0 -29
- package/dist/node_modules/tedious/lib/debug.d.ts +0 -25
- package/dist/node_modules/tedious/lib/debug.js +0 -67
- package/dist/node_modules/tedious/lib/errors/abort-error.d.ts +0 -4
- package/dist/node_modules/tedious/lib/errors/abort-error.js +0 -15
- package/dist/node_modules/tedious/lib/errors/timeout-error.d.ts +0 -4
- package/dist/node_modules/tedious/lib/errors/timeout-error.js +0 -15
- package/dist/node_modules/tedious/lib/errors.d.ts +0 -17
- package/dist/node_modules/tedious/lib/errors.js +0 -23
- package/dist/node_modules/tedious/lib/guid-parser.d.ts +0 -3
- package/dist/node_modules/tedious/lib/guid-parser.js +0 -30
- package/dist/node_modules/tedious/lib/incoming-message-stream.d.ts +0 -19
- package/dist/node_modules/tedious/lib/incoming-message-stream.js +0 -97
- package/dist/node_modules/tedious/lib/instance-lookup.d.ts +0 -13
- package/dist/node_modules/tedious/lib/instance-lookup.js +0 -96
- package/dist/node_modules/tedious/lib/library.d.ts +0 -1
- package/dist/node_modules/tedious/lib/library.js +0 -8
- package/dist/node_modules/tedious/lib/login7-payload.d.ts +0 -51
- package/dist/node_modules/tedious/lib/login7-payload.js +0 -402
- package/dist/node_modules/tedious/lib/message-io.d.ts +0 -28
- package/dist/node_modules/tedious/lib/message-io.js +0 -153
- package/dist/node_modules/tedious/lib/message.d.ts +0 -11
- package/dist/node_modules/tedious/lib/message.js +0 -21
- package/dist/node_modules/tedious/lib/metadata-parser.d.ts +0 -48
- package/dist/node_modules/tedious/lib/metadata-parser.js +0 -380
- package/dist/node_modules/tedious/lib/ntlm-payload.d.ts +0 -23
- package/dist/node_modules/tedious/lib/ntlm-payload.js +0 -136
- package/dist/node_modules/tedious/lib/ntlm.d.ts +0 -4
- package/dist/node_modules/tedious/lib/ntlm.js +0 -72
- package/dist/node_modules/tedious/lib/outgoing-message-stream.d.ts +0 -15
- package/dist/node_modules/tedious/lib/outgoing-message-stream.js +0 -81
- package/dist/node_modules/tedious/lib/packet.d.ts +0 -33
- package/dist/node_modules/tedious/lib/packet.js +0 -191
- package/dist/node_modules/tedious/lib/prelogin-payload.d.ts +0 -61
- package/dist/node_modules/tedious/lib/prelogin-payload.js +0 -209
- package/dist/node_modules/tedious/lib/request.d.ts +0 -370
- package/dist/node_modules/tedious/lib/request.js +0 -387
- package/dist/node_modules/tedious/lib/rpcrequest-payload.d.ts +0 -16
- package/dist/node_modules/tedious/lib/rpcrequest-payload.js +0 -109
- package/dist/node_modules/tedious/lib/sender.d.ts +0 -5
- package/dist/node_modules/tedious/lib/sender.js +0 -83
- package/dist/node_modules/tedious/lib/special-stored-procedure.d.ts +0 -18
- package/dist/node_modules/tedious/lib/special-stored-procedure.js +0 -26
- package/dist/node_modules/tedious/lib/sqlbatch-payload.d.ts +0 -13
- package/dist/node_modules/tedious/lib/sqlbatch-payload.js +0 -34
- package/dist/node_modules/tedious/lib/tds-versions.d.ts +0 -6
- package/dist/node_modules/tedious/lib/tds-versions.js +0 -19
- package/dist/node_modules/tedious/lib/tedious.d.ts +0 -13
- package/dist/node_modules/tedious/lib/tedious.js +0 -249
- package/dist/node_modules/tedious/lib/token/colmetadata-token-parser.d.ts +0 -12
- package/dist/node_modules/tedious/lib/token/colmetadata-token-parser.js +0 -124
- package/dist/node_modules/tedious/lib/token/done-token-parser.d.ts +0 -6
- package/dist/node_modules/tedious/lib/token/done-token-parser.js +0 -76
- package/dist/node_modules/tedious/lib/token/env-change-token-parser.d.ts +0 -5
- package/dist/node_modules/tedious/lib/token/env-change-token-parser.js +0 -190
- package/dist/node_modules/tedious/lib/token/feature-ext-ack-parser.d.ts +0 -5
- package/dist/node_modules/tedious/lib/token/feature-ext-ack-parser.js +0 -52
- package/dist/node_modules/tedious/lib/token/fedauth-info-parser.d.ts +0 -5
- package/dist/node_modules/tedious/lib/token/fedauth-info-parser.js +0 -62
- package/dist/node_modules/tedious/lib/token/handler.d.ts +0 -135
- package/dist/node_modules/tedious/lib/token/handler.js +0 -444
- package/dist/node_modules/tedious/lib/token/helpers.d.ts +0 -28
- package/dist/node_modules/tedious/lib/token/helpers.js +0 -205
- package/dist/node_modules/tedious/lib/token/infoerror-token-parser.d.ts +0 -5
- package/dist/node_modules/tedious/lib/token/infoerror-token-parser.js +0 -80
- package/dist/node_modules/tedious/lib/token/loginack-token-parser.d.ts +0 -5
- package/dist/node_modules/tedious/lib/token/loginack-token-parser.js +0 -75
- package/dist/node_modules/tedious/lib/token/nbcrow-token-parser.d.ts +0 -4
- package/dist/node_modules/tedious/lib/token/nbcrow-token-parser.js +0 -104
- package/dist/node_modules/tedious/lib/token/order-token-parser.d.ts +0 -5
- package/dist/node_modules/tedious/lib/token/order-token-parser.js +0 -34
- package/dist/node_modules/tedious/lib/token/returnstatus-token-parser.d.ts +0 -5
- package/dist/node_modules/tedious/lib/token/returnstatus-token-parser.js +0 -21
- package/dist/node_modules/tedious/lib/token/returnvalue-token-parser.d.ts +0 -4
- package/dist/node_modules/tedious/lib/token/returnvalue-token-parser.js +0 -94
- package/dist/node_modules/tedious/lib/token/row-token-parser.d.ts +0 -4
- package/dist/node_modules/tedious/lib/token/row-token-parser.js +0 -77
- package/dist/node_modules/tedious/lib/token/sspi-token-parser.d.ts +0 -5
- package/dist/node_modules/tedious/lib/token/sspi-token-parser.js +0 -42
- package/dist/node_modules/tedious/lib/token/stream-parser.d.ts +0 -34
- package/dist/node_modules/tedious/lib/token/stream-parser.js +0 -341
- package/dist/node_modules/tedious/lib/token/token-stream-parser.d.ts +0 -15
- package/dist/node_modules/tedious/lib/token/token-stream-parser.js +0 -36
- package/dist/node_modules/tedious/lib/token/token.d.ts +0 -312
- package/dist/node_modules/tedious/lib/token/token.js +0 -328
- package/dist/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.d.ts +0 -47
- package/dist/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js +0 -249
- package/dist/node_modules/tedious/lib/transaction.d.ts +0 -39
- package/dist/node_modules/tedious/lib/transaction.js +0 -137
- package/dist/node_modules/tedious/lib/transient-error-lookup.d.ts +0 -3
- package/dist/node_modules/tedious/lib/transient-error-lookup.js +0 -19
- package/dist/node_modules/tedious/lib/utils/with-timeout.d.ts +0 -7
- package/dist/node_modules/tedious/lib/utils/with-timeout.js +0 -36
- package/dist/node_modules/tedious/lib/value-parser.d.ts +0 -7
- package/dist/node_modules/tedious/lib/value-parser.js +0 -813
- package/dist/node_modules/tedious/node_modules/@types/node/assert/strict.d.ts +0 -105
- package/dist/node_modules/tedious/node_modules/@types/node/assert.d.ts +0 -955
- package/dist/node_modules/tedious/node_modules/@types/node/async_hooks.d.ts +0 -623
- package/dist/node_modules/tedious/node_modules/@types/node/buffer.buffer.d.ts +0 -466
- package/dist/node_modules/tedious/node_modules/@types/node/buffer.d.ts +0 -1810
- package/dist/node_modules/tedious/node_modules/@types/node/child_process.d.ts +0 -1428
- package/dist/node_modules/tedious/node_modules/@types/node/cluster.d.ts +0 -486
- package/dist/node_modules/tedious/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
- package/dist/node_modules/tedious/node_modules/@types/node/console.d.ts +0 -151
- package/dist/node_modules/tedious/node_modules/@types/node/constants.d.ts +0 -20
- package/dist/node_modules/tedious/node_modules/@types/node/crypto.d.ts +0 -4065
- package/dist/node_modules/tedious/node_modules/@types/node/dgram.d.ts +0 -564
- package/dist/node_modules/tedious/node_modules/@types/node/diagnostics_channel.d.ts +0 -576
- package/dist/node_modules/tedious/node_modules/@types/node/dns/promises.d.ts +0 -503
- package/dist/node_modules/tedious/node_modules/@types/node/dns.d.ts +0 -922
- package/dist/node_modules/tedious/node_modules/@types/node/domain.d.ts +0 -166
- package/dist/node_modules/tedious/node_modules/@types/node/events.d.ts +0 -1054
- package/dist/node_modules/tedious/node_modules/@types/node/fs/promises.d.ts +0 -1329
- package/dist/node_modules/tedious/node_modules/@types/node/fs.d.ts +0 -4676
- package/dist/node_modules/tedious/node_modules/@types/node/globals.d.ts +0 -150
- package/dist/node_modules/tedious/node_modules/@types/node/globals.typedarray.d.ts +0 -101
- package/dist/node_modules/tedious/node_modules/@types/node/http.d.ts +0 -2167
- package/dist/node_modules/tedious/node_modules/@types/node/http2.d.ts +0 -2480
- package/dist/node_modules/tedious/node_modules/@types/node/https.d.ts +0 -405
- package/dist/node_modules/tedious/node_modules/@types/node/index.d.ts +0 -115
- package/dist/node_modules/tedious/node_modules/@types/node/inspector/promises.d.ts +0 -41
- package/dist/node_modules/tedious/node_modules/@types/node/inspector.d.ts +0 -224
- package/dist/node_modules/tedious/node_modules/@types/node/inspector.generated.d.ts +0 -4226
- package/dist/node_modules/tedious/node_modules/@types/node/module.d.ts +0 -819
- package/dist/node_modules/tedious/node_modules/@types/node/net.d.ts +0 -933
- package/dist/node_modules/tedious/node_modules/@types/node/os.d.ts +0 -507
- package/dist/node_modules/tedious/node_modules/@types/node/package.json +0 -155
- package/dist/node_modules/tedious/node_modules/@types/node/path/posix.d.ts +0 -8
- package/dist/node_modules/tedious/node_modules/@types/node/path/win32.d.ts +0 -8
- package/dist/node_modules/tedious/node_modules/@types/node/path.d.ts +0 -187
- package/dist/node_modules/tedious/node_modules/@types/node/perf_hooks.d.ts +0 -643
- package/dist/node_modules/tedious/node_modules/@types/node/process.d.ts +0 -2161
- package/dist/node_modules/tedious/node_modules/@types/node/punycode.d.ts +0 -117
- package/dist/node_modules/tedious/node_modules/@types/node/querystring.d.ts +0 -152
- package/dist/node_modules/tedious/node_modules/@types/node/quic.d.ts +0 -910
- package/dist/node_modules/tedious/node_modules/@types/node/readline/promises.d.ts +0 -161
- package/dist/node_modules/tedious/node_modules/@types/node/readline.d.ts +0 -541
- package/dist/node_modules/tedious/node_modules/@types/node/repl.d.ts +0 -415
- package/dist/node_modules/tedious/node_modules/@types/node/sea.d.ts +0 -162
- package/dist/node_modules/tedious/node_modules/@types/node/sqlite.d.ts +0 -955
- package/dist/node_modules/tedious/node_modules/@types/node/stream/consumers.d.ts +0 -38
- package/dist/node_modules/tedious/node_modules/@types/node/stream/promises.d.ts +0 -211
- package/dist/node_modules/tedious/node_modules/@types/node/stream/web.d.ts +0 -296
- package/dist/node_modules/tedious/node_modules/@types/node/stream.d.ts +0 -1760
- package/dist/node_modules/tedious/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/dist/node_modules/tedious/node_modules/@types/node/test/reporters.d.ts +0 -96
- package/dist/node_modules/tedious/node_modules/@types/node/test.d.ts +0 -2240
- package/dist/node_modules/tedious/node_modules/@types/node/timers/promises.d.ts +0 -108
- package/dist/node_modules/tedious/node_modules/@types/node/timers.d.ts +0 -159
- package/dist/node_modules/tedious/node_modules/@types/node/tls.d.ts +0 -1198
- package/dist/node_modules/tedious/node_modules/@types/node/trace_events.d.ts +0 -197
- package/dist/node_modules/tedious/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -462
- package/dist/node_modules/tedious/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -71
- package/dist/node_modules/tedious/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -36
- package/dist/node_modules/tedious/node_modules/@types/node/ts5.6/index.d.ts +0 -117
- package/dist/node_modules/tedious/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -72
- package/dist/node_modules/tedious/node_modules/@types/node/ts5.7/index.d.ts +0 -117
- package/dist/node_modules/tedious/node_modules/@types/node/tty.d.ts +0 -250
- package/dist/node_modules/tedious/node_modules/@types/node/url.d.ts +0 -519
- package/dist/node_modules/tedious/node_modules/@types/node/util/types.d.ts +0 -558
- package/dist/node_modules/tedious/node_modules/@types/node/util.d.ts +0 -1662
- package/dist/node_modules/tedious/node_modules/@types/node/v8.d.ts +0 -983
- package/dist/node_modules/tedious/node_modules/@types/node/vm.d.ts +0 -1208
- package/dist/node_modules/tedious/node_modules/@types/node/wasi.d.ts +0 -202
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -59
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/blob.d.ts +0 -23
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/console.d.ts +0 -9
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/crypto.d.ts +0 -39
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/encoding.d.ts +0 -11
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/events.d.ts +0 -106
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/fetch.d.ts +0 -69
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/importmeta.d.ts +0 -13
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/messaging.d.ts +0 -23
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/navigator.d.ts +0 -25
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/performance.d.ts +0 -45
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/storage.d.ts +0 -24
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/streams.d.ts +0 -115
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/timers.d.ts +0 -44
- package/dist/node_modules/tedious/node_modules/@types/node/web-globals/url.d.ts +0 -24
- package/dist/node_modules/tedious/node_modules/@types/node/worker_threads.d.ts +0 -717
- package/dist/node_modules/tedious/node_modules/@types/node/zlib.d.ts +0 -618
- package/dist/node_modules/tedious/node_modules/bl/.github/dependabot.yml +0 -16
- package/dist/node_modules/tedious/node_modules/bl/.github/workflows/test-and-release.yml +0 -61
- package/dist/node_modules/tedious/node_modules/bl/BufferList.d.ts +0 -431
- package/dist/node_modules/tedious/node_modules/bl/BufferList.js +0 -421
- package/dist/node_modules/tedious/node_modules/bl/bl.js +0 -84
- package/dist/node_modules/tedious/node_modules/bl/index.d.ts +0 -88
- package/dist/node_modules/tedious/node_modules/bl/package.json +0 -123
- package/dist/node_modules/tedious/node_modules/bl/test/convert.js +0 -21
- package/dist/node_modules/tedious/node_modules/bl/test/indexOf.js +0 -492
- package/dist/node_modules/tedious/node_modules/bl/test/isBufferList.js +0 -32
- package/dist/node_modules/tedious/node_modules/bl/test/test.js +0 -1032
- package/dist/node_modules/tedious/node_modules/buffer/index.d.ts +0 -194
- package/dist/node_modules/tedious/node_modules/buffer/index.js +0 -2106
- package/dist/node_modules/tedious/node_modules/buffer/package.json +0 -93
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/_stream_duplex.js +0 -4
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/_stream_passthrough.js +0 -4
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/_stream_readable.js +0 -4
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/_stream_transform.js +0 -4
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/_stream_writable.js +0 -4
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js +0 -52
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -157
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/compose.js +0 -194
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -290
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/duplex.js +0 -143
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/duplexify.js +0 -378
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -286
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/from.js +0 -98
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/lazy_transform.js +0 -51
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/legacy.js +0 -89
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/operators.js +0 -457
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/passthrough.js +0 -39
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -471
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/readable.js +0 -1290
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/state.js +0 -39
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/transform.js +0 -180
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/utils.js +0 -327
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/streams/writable.js +0 -819
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/internal/validators.js +0 -530
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/ours/browser.js +0 -35
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/ours/errors.js +0 -343
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/ours/index.js +0 -65
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/ours/primordials.js +0 -124
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/ours/util/inspect.js +0 -55
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/ours/util.js +0 -148
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/stream/promises.js +0 -43
- package/dist/node_modules/tedious/node_modules/readable-stream/lib/stream.js +0 -143
- package/dist/node_modules/tedious/node_modules/readable-stream/package.json +0 -88
- package/dist/node_modules/tedious/node_modules/sprintf-js/dist/.gitattributes +0 -4
- package/dist/node_modules/tedious/node_modules/sprintf-js/dist/angular-sprintf.min.js +0 -3
- package/dist/node_modules/tedious/node_modules/sprintf-js/dist/sprintf.min.js +0 -3
- package/dist/node_modules/tedious/node_modules/sprintf-js/package.json +0 -35
- package/dist/node_modules/tedious/node_modules/sprintf-js/src/angular-sprintf.js +0 -24
- package/dist/node_modules/tedious/node_modules/sprintf-js/src/sprintf.js +0 -231
- package/dist/node_modules/tedious/node_modules/undici-types/agent.d.ts +0 -32
- package/dist/node_modules/tedious/node_modules/undici-types/api.d.ts +0 -43
- package/dist/node_modules/tedious/node_modules/undici-types/balanced-pool.d.ts +0 -29
- package/dist/node_modules/tedious/node_modules/undici-types/cache-interceptor.d.ts +0 -172
- package/dist/node_modules/tedious/node_modules/undici-types/cache.d.ts +0 -36
- package/dist/node_modules/tedious/node_modules/undici-types/client-stats.d.ts +0 -15
- package/dist/node_modules/tedious/node_modules/undici-types/client.d.ts +0 -108
- package/dist/node_modules/tedious/node_modules/undici-types/connector.d.ts +0 -34
- package/dist/node_modules/tedious/node_modules/undici-types/content-type.d.ts +0 -21
- package/dist/node_modules/tedious/node_modules/undici-types/cookies.d.ts +0 -30
- package/dist/node_modules/tedious/node_modules/undici-types/diagnostics-channel.d.ts +0 -74
- package/dist/node_modules/tedious/node_modules/undici-types/dispatcher.d.ts +0 -276
- package/dist/node_modules/tedious/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -22
- package/dist/node_modules/tedious/node_modules/undici-types/errors.d.ts +0 -161
- package/dist/node_modules/tedious/node_modules/undici-types/eventsource.d.ts +0 -66
- package/dist/node_modules/tedious/node_modules/undici-types/fetch.d.ts +0 -211
- package/dist/node_modules/tedious/node_modules/undici-types/formdata.d.ts +0 -108
- package/dist/node_modules/tedious/node_modules/undici-types/global-dispatcher.d.ts +0 -9
- package/dist/node_modules/tedious/node_modules/undici-types/global-origin.d.ts +0 -7
- package/dist/node_modules/tedious/node_modules/undici-types/h2c-client.d.ts +0 -73
- package/dist/node_modules/tedious/node_modules/undici-types/handlers.d.ts +0 -15
- package/dist/node_modules/tedious/node_modules/undici-types/header.d.ts +0 -160
- package/dist/node_modules/tedious/node_modules/undici-types/index.d.ts +0 -80
- package/dist/node_modules/tedious/node_modules/undici-types/interceptors.d.ts +0 -39
- package/dist/node_modules/tedious/node_modules/undici-types/mock-agent.d.ts +0 -68
- package/dist/node_modules/tedious/node_modules/undici-types/mock-call-history.d.ts +0 -111
- package/dist/node_modules/tedious/node_modules/undici-types/mock-client.d.ts +0 -27
- package/dist/node_modules/tedious/node_modules/undici-types/mock-errors.d.ts +0 -12
- package/dist/node_modules/tedious/node_modules/undici-types/mock-interceptor.d.ts +0 -94
- package/dist/node_modules/tedious/node_modules/undici-types/mock-pool.d.ts +0 -27
- package/dist/node_modules/tedious/node_modules/undici-types/package.json +0 -55
- package/dist/node_modules/tedious/node_modules/undici-types/patch.d.ts +0 -29
- package/dist/node_modules/tedious/node_modules/undici-types/pool-stats.d.ts +0 -19
- package/dist/node_modules/tedious/node_modules/undici-types/pool.d.ts +0 -41
- package/dist/node_modules/tedious/node_modules/undici-types/proxy-agent.d.ts +0 -29
- package/dist/node_modules/tedious/node_modules/undici-types/readable.d.ts +0 -68
- package/dist/node_modules/tedious/node_modules/undici-types/retry-agent.d.ts +0 -8
- package/dist/node_modules/tedious/node_modules/undici-types/retry-handler.d.ts +0 -125
- package/dist/node_modules/tedious/node_modules/undici-types/snapshot-agent.d.ts +0 -109
- package/dist/node_modules/tedious/node_modules/undici-types/util.d.ts +0 -18
- package/dist/node_modules/tedious/node_modules/undici-types/utility.d.ts +0 -7
- package/dist/node_modules/tedious/node_modules/undici-types/webidl.d.ts +0 -341
- package/dist/node_modules/tedious/node_modules/undici-types/websocket.d.ts +0 -186
- package/dist/node_modules/tedious/package.json +0 -1
- package/dist/node_modules/tedious/tsconfig.build-types.json +0 -15
- package/dist/node_modules/tedious/tsconfig.json +0 -29
- package/dist/node_modules/tedious/types/js-md4.d.ts +0 -7
- package/dist/node_modules/tedious/types/native-duplexpair.d.ts +0 -12
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _sprintfJs = require("sprintf-js");
|
|
8
|
-
var _tdsVersions = require("./tds-versions");
|
|
9
|
-
const FLAGS_1 = {
|
|
10
|
-
ENDIAN_LITTLE: 0x00,
|
|
11
|
-
ENDIAN_BIG: 0x01,
|
|
12
|
-
CHARSET_ASCII: 0x00,
|
|
13
|
-
CHARSET_EBCDIC: 0x02,
|
|
14
|
-
FLOAT_IEEE_754: 0x00,
|
|
15
|
-
FLOAT_VAX: 0x04,
|
|
16
|
-
FLOAT_ND5000: 0x08,
|
|
17
|
-
BCP_DUMPLOAD_ON: 0x00,
|
|
18
|
-
BCP_DUMPLOAD_OFF: 0x10,
|
|
19
|
-
USE_DB_ON: 0x00,
|
|
20
|
-
USE_DB_OFF: 0x20,
|
|
21
|
-
INIT_DB_WARN: 0x00,
|
|
22
|
-
INIT_DB_FATAL: 0x40,
|
|
23
|
-
SET_LANG_WARN_OFF: 0x00,
|
|
24
|
-
SET_LANG_WARN_ON: 0x80
|
|
25
|
-
};
|
|
26
|
-
const FLAGS_2 = {
|
|
27
|
-
INIT_LANG_WARN: 0x00,
|
|
28
|
-
INIT_LANG_FATAL: 0x01,
|
|
29
|
-
ODBC_OFF: 0x00,
|
|
30
|
-
ODBC_ON: 0x02,
|
|
31
|
-
F_TRAN_BOUNDARY: 0x04,
|
|
32
|
-
F_CACHE_CONNECT: 0x08,
|
|
33
|
-
USER_NORMAL: 0x00,
|
|
34
|
-
USER_SERVER: 0x10,
|
|
35
|
-
USER_REMUSER: 0x20,
|
|
36
|
-
USER_SQLREPL: 0x40,
|
|
37
|
-
INTEGRATED_SECURITY_OFF: 0x00,
|
|
38
|
-
INTEGRATED_SECURITY_ON: 0x80
|
|
39
|
-
};
|
|
40
|
-
const TYPE_FLAGS = {
|
|
41
|
-
SQL_DFLT: 0x00,
|
|
42
|
-
SQL_TSQL: 0x08,
|
|
43
|
-
OLEDB_OFF: 0x00,
|
|
44
|
-
OLEDB_ON: 0x10,
|
|
45
|
-
READ_WRITE_INTENT: 0x00,
|
|
46
|
-
READ_ONLY_INTENT: 0x20
|
|
47
|
-
};
|
|
48
|
-
const FLAGS_3 = {
|
|
49
|
-
CHANGE_PASSWORD_NO: 0x00,
|
|
50
|
-
CHANGE_PASSWORD_YES: 0x01,
|
|
51
|
-
BINARY_XML: 0x02,
|
|
52
|
-
SPAWN_USER_INSTANCE: 0x04,
|
|
53
|
-
UNKNOWN_COLLATION_HANDLING: 0x08,
|
|
54
|
-
EXTENSION_USED: 0x10
|
|
55
|
-
};
|
|
56
|
-
const FEDAUTH_OPTIONS = {
|
|
57
|
-
FEATURE_ID: 0x02,
|
|
58
|
-
LIBRARY_SECURITYTOKEN: 0x01,
|
|
59
|
-
LIBRARY_ADAL: 0x02,
|
|
60
|
-
FEDAUTH_YES_ECHO: 0x01,
|
|
61
|
-
FEDAUTH_NO_ECHO: 0x00,
|
|
62
|
-
ADAL_WORKFLOW_USER_PASS: 0x01,
|
|
63
|
-
ADAL_WORKFLOW_INTEGRATED: 0x02
|
|
64
|
-
};
|
|
65
|
-
const FEATURE_EXT_TERMINATOR = 0xFF;
|
|
66
|
-
/*
|
|
67
|
-
s2.2.6.3
|
|
68
|
-
*/
|
|
69
|
-
class Login7Payload {
|
|
70
|
-
constructor({
|
|
71
|
-
tdsVersion,
|
|
72
|
-
packetSize,
|
|
73
|
-
clientProgVer,
|
|
74
|
-
clientPid,
|
|
75
|
-
connectionId,
|
|
76
|
-
clientTimeZone,
|
|
77
|
-
clientLcid
|
|
78
|
-
}) {
|
|
79
|
-
this.tdsVersion = tdsVersion;
|
|
80
|
-
this.packetSize = packetSize;
|
|
81
|
-
this.clientProgVer = clientProgVer;
|
|
82
|
-
this.clientPid = clientPid;
|
|
83
|
-
this.connectionId = connectionId;
|
|
84
|
-
this.clientTimeZone = clientTimeZone;
|
|
85
|
-
this.clientLcid = clientLcid;
|
|
86
|
-
this.readOnlyIntent = false;
|
|
87
|
-
this.initDbFatal = false;
|
|
88
|
-
this.fedAuth = undefined;
|
|
89
|
-
this.userName = undefined;
|
|
90
|
-
this.password = undefined;
|
|
91
|
-
this.serverName = undefined;
|
|
92
|
-
this.appName = undefined;
|
|
93
|
-
this.hostname = undefined;
|
|
94
|
-
this.libraryName = undefined;
|
|
95
|
-
this.language = undefined;
|
|
96
|
-
this.database = undefined;
|
|
97
|
-
this.clientId = undefined;
|
|
98
|
-
this.sspi = undefined;
|
|
99
|
-
this.attachDbFile = undefined;
|
|
100
|
-
this.changePassword = undefined;
|
|
101
|
-
}
|
|
102
|
-
toBuffer() {
|
|
103
|
-
const fixedData = Buffer.alloc(94);
|
|
104
|
-
const buffers = [fixedData];
|
|
105
|
-
let offset = 0;
|
|
106
|
-
let dataOffset = fixedData.length;
|
|
107
|
-
|
|
108
|
-
// Length: 4-byte
|
|
109
|
-
offset = fixedData.writeUInt32LE(0, offset);
|
|
110
|
-
|
|
111
|
-
// TDSVersion: 4-byte
|
|
112
|
-
offset = fixedData.writeUInt32LE(this.tdsVersion, offset);
|
|
113
|
-
|
|
114
|
-
// PacketSize: 4-byte
|
|
115
|
-
offset = fixedData.writeUInt32LE(this.packetSize, offset);
|
|
116
|
-
|
|
117
|
-
// ClientProgVer: 4-byte
|
|
118
|
-
offset = fixedData.writeUInt32LE(this.clientProgVer, offset);
|
|
119
|
-
|
|
120
|
-
// ClientPID: 4-byte
|
|
121
|
-
offset = fixedData.writeUInt32LE(this.clientPid, offset);
|
|
122
|
-
|
|
123
|
-
// ConnectionID: 4-byte
|
|
124
|
-
offset = fixedData.writeUInt32LE(this.connectionId, offset);
|
|
125
|
-
|
|
126
|
-
// OptionFlags1: 1-byte
|
|
127
|
-
offset = fixedData.writeUInt8(this.buildOptionFlags1(), offset);
|
|
128
|
-
|
|
129
|
-
// OptionFlags2: 1-byte
|
|
130
|
-
offset = fixedData.writeUInt8(this.buildOptionFlags2(), offset);
|
|
131
|
-
|
|
132
|
-
// TypeFlags: 1-byte
|
|
133
|
-
offset = fixedData.writeUInt8(this.buildTypeFlags(), offset);
|
|
134
|
-
|
|
135
|
-
// OptionFlags3: 1-byte
|
|
136
|
-
offset = fixedData.writeUInt8(this.buildOptionFlags3(), offset);
|
|
137
|
-
|
|
138
|
-
// ClientTimZone: 4-byte
|
|
139
|
-
offset = fixedData.writeInt32LE(this.clientTimeZone, offset);
|
|
140
|
-
|
|
141
|
-
// ClientLCID: 4-byte
|
|
142
|
-
offset = fixedData.writeUInt32LE(this.clientLcid, offset);
|
|
143
|
-
|
|
144
|
-
// ibHostName: 2-byte
|
|
145
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
146
|
-
|
|
147
|
-
// cchHostName: 2-byte
|
|
148
|
-
if (this.hostname) {
|
|
149
|
-
const buffer = Buffer.from(this.hostname, 'ucs2');
|
|
150
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
151
|
-
dataOffset += buffer.length;
|
|
152
|
-
buffers.push(buffer);
|
|
153
|
-
} else {
|
|
154
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// ibUserName: 2-byte
|
|
158
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
159
|
-
|
|
160
|
-
// cchUserName: 2-byte
|
|
161
|
-
if (this.userName) {
|
|
162
|
-
const buffer = Buffer.from(this.userName, 'ucs2');
|
|
163
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
164
|
-
dataOffset += buffer.length;
|
|
165
|
-
buffers.push(buffer);
|
|
166
|
-
} else {
|
|
167
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// ibPassword: 2-byte
|
|
171
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
172
|
-
|
|
173
|
-
// cchPassword: 2-byte
|
|
174
|
-
if (this.password) {
|
|
175
|
-
const buffer = Buffer.from(this.password, 'ucs2');
|
|
176
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
177
|
-
dataOffset += buffer.length;
|
|
178
|
-
buffers.push(this.scramblePassword(buffer));
|
|
179
|
-
} else {
|
|
180
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// ibAppName: 2-byte
|
|
184
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
185
|
-
|
|
186
|
-
// cchAppName: 2-byte
|
|
187
|
-
if (this.appName) {
|
|
188
|
-
const buffer = Buffer.from(this.appName, 'ucs2');
|
|
189
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
190
|
-
dataOffset += buffer.length;
|
|
191
|
-
buffers.push(buffer);
|
|
192
|
-
} else {
|
|
193
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// ibServerName: 2-byte
|
|
197
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
198
|
-
|
|
199
|
-
// cchServerName: 2-byte
|
|
200
|
-
if (this.serverName) {
|
|
201
|
-
const buffer = Buffer.from(this.serverName, 'ucs2');
|
|
202
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
203
|
-
dataOffset += buffer.length;
|
|
204
|
-
buffers.push(buffer);
|
|
205
|
-
} else {
|
|
206
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// (ibUnused / ibExtension): 2-byte
|
|
210
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
211
|
-
|
|
212
|
-
// (cchUnused / cbExtension): 2-byte
|
|
213
|
-
const extensions = this.buildFeatureExt();
|
|
214
|
-
offset = fixedData.writeUInt16LE(4, offset);
|
|
215
|
-
const extensionOffset = Buffer.alloc(4);
|
|
216
|
-
extensionOffset.writeUInt32LE(dataOffset += 4, 0);
|
|
217
|
-
dataOffset += extensions.length;
|
|
218
|
-
buffers.push(extensionOffset, extensions);
|
|
219
|
-
|
|
220
|
-
// ibCltIntName: 2-byte
|
|
221
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
222
|
-
|
|
223
|
-
// cchCltIntName: 2-byte
|
|
224
|
-
if (this.libraryName) {
|
|
225
|
-
const buffer = Buffer.from(this.libraryName, 'ucs2');
|
|
226
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
227
|
-
dataOffset += buffer.length;
|
|
228
|
-
buffers.push(buffer);
|
|
229
|
-
} else {
|
|
230
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// ibLanguage: 2-byte
|
|
234
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
235
|
-
|
|
236
|
-
// cchLanguage: 2-byte
|
|
237
|
-
if (this.language) {
|
|
238
|
-
const buffer = Buffer.from(this.language, 'ucs2');
|
|
239
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
240
|
-
dataOffset += buffer.length;
|
|
241
|
-
buffers.push(buffer);
|
|
242
|
-
} else {
|
|
243
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// ibDatabase: 2-byte
|
|
247
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
248
|
-
|
|
249
|
-
// cchDatabase: 2-byte
|
|
250
|
-
if (this.database) {
|
|
251
|
-
const buffer = Buffer.from(this.database, 'ucs2');
|
|
252
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
253
|
-
dataOffset += buffer.length;
|
|
254
|
-
buffers.push(buffer);
|
|
255
|
-
} else {
|
|
256
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// ClientID: 6-byte
|
|
260
|
-
if (this.clientId) {
|
|
261
|
-
this.clientId.copy(fixedData, offset, 0, 6);
|
|
262
|
-
}
|
|
263
|
-
offset += 6;
|
|
264
|
-
|
|
265
|
-
// ibSSPI: 2-byte
|
|
266
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
267
|
-
|
|
268
|
-
// cbSSPI: 2-byte
|
|
269
|
-
if (this.sspi) {
|
|
270
|
-
if (this.sspi.length > 65535) {
|
|
271
|
-
offset = fixedData.writeUInt16LE(65535, offset);
|
|
272
|
-
} else {
|
|
273
|
-
offset = fixedData.writeUInt16LE(this.sspi.length, offset);
|
|
274
|
-
}
|
|
275
|
-
buffers.push(this.sspi);
|
|
276
|
-
} else {
|
|
277
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
// ibAtchDBFile: 2-byte
|
|
281
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
282
|
-
|
|
283
|
-
// cchAtchDBFile: 2-byte
|
|
284
|
-
if (this.attachDbFile) {
|
|
285
|
-
const buffer = Buffer.from(this.attachDbFile, 'ucs2');
|
|
286
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
287
|
-
dataOffset += buffer.length;
|
|
288
|
-
buffers.push(buffer);
|
|
289
|
-
} else {
|
|
290
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
// ibChangePassword: 2-byte
|
|
294
|
-
offset = fixedData.writeUInt16LE(dataOffset, offset);
|
|
295
|
-
|
|
296
|
-
// cchChangePassword: 2-byte
|
|
297
|
-
if (this.changePassword) {
|
|
298
|
-
const buffer = Buffer.from(this.changePassword, 'ucs2');
|
|
299
|
-
offset = fixedData.writeUInt16LE(buffer.length / 2, offset);
|
|
300
|
-
dataOffset += buffer.length;
|
|
301
|
-
buffers.push(buffer);
|
|
302
|
-
} else {
|
|
303
|
-
offset = fixedData.writeUInt16LE(0, offset);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
// cbSSPILong: 4-byte
|
|
307
|
-
if (this.sspi && this.sspi.length > 65535) {
|
|
308
|
-
fixedData.writeUInt32LE(this.sspi.length, offset);
|
|
309
|
-
} else {
|
|
310
|
-
fixedData.writeUInt32LE(0, offset);
|
|
311
|
-
}
|
|
312
|
-
const data = Buffer.concat(buffers);
|
|
313
|
-
data.writeUInt32LE(data.length, 0);
|
|
314
|
-
return data;
|
|
315
|
-
}
|
|
316
|
-
buildOptionFlags1() {
|
|
317
|
-
let flags1 = FLAGS_1.ENDIAN_LITTLE | FLAGS_1.CHARSET_ASCII | FLAGS_1.FLOAT_IEEE_754 | FLAGS_1.BCP_DUMPLOAD_OFF | FLAGS_1.USE_DB_OFF | FLAGS_1.SET_LANG_WARN_ON;
|
|
318
|
-
if (this.initDbFatal) {
|
|
319
|
-
flags1 |= FLAGS_1.INIT_DB_FATAL;
|
|
320
|
-
} else {
|
|
321
|
-
flags1 |= FLAGS_1.INIT_DB_WARN;
|
|
322
|
-
}
|
|
323
|
-
return flags1;
|
|
324
|
-
}
|
|
325
|
-
buildFeatureExt() {
|
|
326
|
-
const buffers = [];
|
|
327
|
-
const fedAuth = this.fedAuth;
|
|
328
|
-
if (fedAuth) {
|
|
329
|
-
switch (fedAuth.type) {
|
|
330
|
-
case 'ADAL':
|
|
331
|
-
const buffer = Buffer.alloc(7);
|
|
332
|
-
buffer.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, 0);
|
|
333
|
-
buffer.writeUInt32LE(2, 1);
|
|
334
|
-
buffer.writeUInt8(FEDAUTH_OPTIONS.LIBRARY_ADAL << 1 | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), 5);
|
|
335
|
-
buffer.writeUInt8(fedAuth.workflow === 'integrated' ? 0x02 : FEDAUTH_OPTIONS.ADAL_WORKFLOW_USER_PASS, 6);
|
|
336
|
-
buffers.push(buffer);
|
|
337
|
-
break;
|
|
338
|
-
case 'SECURITYTOKEN':
|
|
339
|
-
const token = Buffer.from(fedAuth.fedAuthToken, 'ucs2');
|
|
340
|
-
const buf = Buffer.alloc(10);
|
|
341
|
-
let offset = 0;
|
|
342
|
-
offset = buf.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, offset);
|
|
343
|
-
offset = buf.writeUInt32LE(token.length + 4 + 1, offset);
|
|
344
|
-
offset = buf.writeUInt8(FEDAUTH_OPTIONS.LIBRARY_SECURITYTOKEN << 1 | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), offset);
|
|
345
|
-
buf.writeInt32LE(token.length, offset);
|
|
346
|
-
buffers.push(buf);
|
|
347
|
-
buffers.push(token);
|
|
348
|
-
break;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
if (this.tdsVersion >= _tdsVersions.versions['7_4']) {
|
|
352
|
-
// Signal UTF-8 support: Value 0x0A, bit 0 must be set to 1. Added in TDS 7.4.
|
|
353
|
-
const UTF8_SUPPORT_FEATURE_ID = 0x0a;
|
|
354
|
-
const UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8 = 0x01;
|
|
355
|
-
const buf = Buffer.alloc(6);
|
|
356
|
-
buf.writeUInt8(UTF8_SUPPORT_FEATURE_ID, 0);
|
|
357
|
-
buf.writeUInt32LE(1, 1);
|
|
358
|
-
buf.writeUInt8(UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8, 5);
|
|
359
|
-
buffers.push(buf);
|
|
360
|
-
}
|
|
361
|
-
buffers.push(Buffer.from([FEATURE_EXT_TERMINATOR]));
|
|
362
|
-
return Buffer.concat(buffers);
|
|
363
|
-
}
|
|
364
|
-
buildOptionFlags2() {
|
|
365
|
-
let flags2 = FLAGS_2.INIT_LANG_WARN | FLAGS_2.ODBC_OFF | FLAGS_2.USER_NORMAL;
|
|
366
|
-
if (this.sspi) {
|
|
367
|
-
flags2 |= FLAGS_2.INTEGRATED_SECURITY_ON;
|
|
368
|
-
} else {
|
|
369
|
-
flags2 |= FLAGS_2.INTEGRATED_SECURITY_OFF;
|
|
370
|
-
}
|
|
371
|
-
return flags2;
|
|
372
|
-
}
|
|
373
|
-
buildTypeFlags() {
|
|
374
|
-
let typeFlags = TYPE_FLAGS.SQL_DFLT | TYPE_FLAGS.OLEDB_OFF;
|
|
375
|
-
if (this.readOnlyIntent) {
|
|
376
|
-
typeFlags |= TYPE_FLAGS.READ_ONLY_INTENT;
|
|
377
|
-
} else {
|
|
378
|
-
typeFlags |= TYPE_FLAGS.READ_WRITE_INTENT;
|
|
379
|
-
}
|
|
380
|
-
return typeFlags;
|
|
381
|
-
}
|
|
382
|
-
buildOptionFlags3() {
|
|
383
|
-
return FLAGS_3.CHANGE_PASSWORD_NO | FLAGS_3.UNKNOWN_COLLATION_HANDLING | FLAGS_3.EXTENSION_USED;
|
|
384
|
-
}
|
|
385
|
-
scramblePassword(password) {
|
|
386
|
-
for (let b = 0, len = password.length; b < len; b++) {
|
|
387
|
-
let byte = password[b];
|
|
388
|
-
const lowNibble = byte & 0x0f;
|
|
389
|
-
const highNibble = byte >> 4;
|
|
390
|
-
byte = lowNibble << 4 | highNibble;
|
|
391
|
-
byte = byte ^ 0xa5;
|
|
392
|
-
password[b] = byte;
|
|
393
|
-
}
|
|
394
|
-
return password;
|
|
395
|
-
}
|
|
396
|
-
toString(indent = '') {
|
|
397
|
-
return indent + 'Login7 - ' + (0, _sprintfJs.sprintf)('TDS:0x%08X, PacketSize:0x%08X, ClientProgVer:0x%08X, ClientPID:0x%08X, ConnectionID:0x%08X', this.tdsVersion, this.packetSize, this.clientProgVer, this.clientPid, this.connectionId) + '\n' + indent + ' ' + (0, _sprintfJs.sprintf)('Flags1:0x%02X, Flags2:0x%02X, TypeFlags:0x%02X, Flags3:0x%02X, ClientTimezone:%d, ClientLCID:0x%08X', this.buildOptionFlags1(), this.buildOptionFlags2(), this.buildTypeFlags(), this.buildOptionFlags3(), this.clientTimeZone, this.clientLcid) + '\n' + indent + ' ' + (0, _sprintfJs.sprintf)("Hostname:'%s', Username:'%s', Password:'%s', AppName:'%s', ServerName:'%s', LibraryName:'%s'", this.hostname, this.userName, this.password, this.appName, this.serverName, this.libraryName) + '\n' + indent + ' ' + (0, _sprintfJs.sprintf)("Language:'%s', Database:'%s', SSPI:'%s', AttachDbFile:'%s', ChangePassword:'%s'", this.language, this.database, this.sspi, this.attachDbFile, this.changePassword);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
var _default = exports.default = Login7Payload;
|
|
401
|
-
module.exports = Login7Payload;
|
|
402
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIl90ZHNWZXJzaW9ucyIsIkZMQUdTXzEiLCJFTkRJQU5fTElUVExFIiwiRU5ESUFOX0JJRyIsIkNIQVJTRVRfQVNDSUkiLCJDSEFSU0VUX0VCQ0RJQyIsIkZMT0FUX0lFRUVfNzU0IiwiRkxPQVRfVkFYIiwiRkxPQVRfTkQ1MDAwIiwiQkNQX0RVTVBMT0FEX09OIiwiQkNQX0RVTVBMT0FEX09GRiIsIlVTRV9EQl9PTiIsIlVTRV9EQl9PRkYiLCJJTklUX0RCX1dBUk4iLCJJTklUX0RCX0ZBVEFMIiwiU0VUX0xBTkdfV0FSTl9PRkYiLCJTRVRfTEFOR19XQVJOX09OIiwiRkxBR1NfMiIsIklOSVRfTEFOR19XQVJOIiwiSU5JVF9MQU5HX0ZBVEFMIiwiT0RCQ19PRkYiLCJPREJDX09OIiwiRl9UUkFOX0JPVU5EQVJZIiwiRl9DQUNIRV9DT05ORUNUIiwiVVNFUl9OT1JNQUwiLCJVU0VSX1NFUlZFUiIsIlVTRVJfUkVNVVNFUiIsIlVTRVJfU1FMUkVQTCIsIklOVEVHUkFURURfU0VDVVJJVFlfT0ZGIiwiSU5URUdSQVRFRF9TRUNVUklUWV9PTiIsIlRZUEVfRkxBR1MiLCJTUUxfREZMVCIsIlNRTF9UU1FMIiwiT0xFREJfT0ZGIiwiT0xFREJfT04iLCJSRUFEX1dSSVRFX0lOVEVOVCIsIlJFQURfT05MWV9JTlRFTlQiLCJGTEFHU18zIiwiQ0hBTkdFX1BBU1NXT1JEX05PIiwiQ0hBTkdFX1BBU1NXT1JEX1lFUyIsIkJJTkFSWV9YTUwiLCJTUEFXTl9VU0VSX0lOU1RBTkNFIiwiVU5LTk9XTl9DT0xMQVRJT05fSEFORExJTkciLCJFWFRFTlNJT05fVVNFRCIsIkZFREFVVEhfT1BUSU9OUyIsIkZFQVRVUkVfSUQiLCJMSUJSQVJZX1NFQ1VSSVRZVE9LRU4iLCJMSUJSQVJZX0FEQUwiLCJGRURBVVRIX1lFU19FQ0hPIiwiRkVEQVVUSF9OT19FQ0hPIiwiQURBTF9XT1JLRkxPV19VU0VSX1BBU1MiLCJBREFMX1dPUktGTE9XX0lOVEVHUkFURUQiLCJGRUFUVVJFX0VYVF9URVJNSU5BVE9SIiwiTG9naW43UGF5bG9hZCIsImNvbnN0cnVjdG9yIiwidGRzVmVyc2lvbiIsInBhY2tldFNpemUiLCJjbGllbnRQcm9nVmVyIiwiY2xpZW50UGlkIiwiY29ubmVjdGlvbklkIiwiY2xpZW50VGltZVpvbmUiLCJjbGllbnRMY2lkIiwicmVhZE9ubHlJbnRlbnQiLCJpbml0RGJGYXRhbCIsImZlZEF1dGgiLCJ1bmRlZmluZWQiLCJ1c2VyTmFtZSIsInBhc3N3b3JkIiwic2VydmVyTmFtZSIsImFwcE5hbWUiLCJob3N0bmFtZSIsImxpYnJhcnlOYW1lIiwibGFuZ3VhZ2UiLCJkYXRhYmFzZSIsImNsaWVudElkIiwic3NwaSIsImF0dGFjaERiRmlsZSIsImNoYW5nZVBhc3N3b3JkIiwidG9CdWZmZXIiLCJmaXhlZERhdGEiLCJCdWZmZXIiLCJhbGxvYyIsImJ1ZmZlcnMiLCJvZmZzZXQiLCJkYXRhT2Zmc2V0IiwibGVuZ3RoIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDgiLCJidWlsZE9wdGlvbkZsYWdzMSIsImJ1aWxkT3B0aW9uRmxhZ3MyIiwiYnVpbGRUeXBlRmxhZ3MiLCJidWlsZE9wdGlvbkZsYWdzMyIsIndyaXRlSW50MzJMRSIsIndyaXRlVUludDE2TEUiLCJidWZmZXIiLCJmcm9tIiwicHVzaCIsInNjcmFtYmxlUGFzc3dvcmQiLCJleHRlbnNpb25zIiwiYnVpbGRGZWF0dXJlRXh0IiwiZXh0ZW5zaW9uT2Zmc2V0IiwiY29weSIsImRhdGEiLCJjb25jYXQiLCJmbGFnczEiLCJ0eXBlIiwiZWNobyIsIndvcmtmbG93IiwidG9rZW4iLCJmZWRBdXRoVG9rZW4iLCJidWYiLCJ2ZXJzaW9ucyIsIlVURjhfU1VQUE9SVF9GRUFUVVJFX0lEIiwiVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4IiwiZmxhZ3MyIiwidHlwZUZsYWdzIiwiYiIsImxlbiIsImJ5dGUiLCJsb3dOaWJibGUiLCJoaWdoTmliYmxlIiwidG9TdHJpbmciLCJpbmRlbnQiLCJzcHJpbnRmIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dpbjctcGF5bG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5pbXBvcnQgeyB2ZXJzaW9ucyB9IGZyb20gJy4vdGRzLXZlcnNpb25zJztcblxuY29uc3QgRkxBR1NfMSA9IHtcbiAgRU5ESUFOX0xJVFRMRTogMHgwMCxcbiAgRU5ESUFOX0JJRzogMHgwMSxcbiAgQ0hBUlNFVF9BU0NJSTogMHgwMCxcbiAgQ0hBUlNFVF9FQkNESUM6IDB4MDIsXG4gIEZMT0FUX0lFRUVfNzU0OiAweDAwLFxuICBGTE9BVF9WQVg6IDB4MDQsXG4gIEZMT0FUX05ENTAwMDogMHgwOCxcbiAgQkNQX0RVTVBMT0FEX09OOiAweDAwLFxuICBCQ1BfRFVNUExPQURfT0ZGOiAweDEwLFxuICBVU0VfREJfT046IDB4MDAsXG4gIFVTRV9EQl9PRkY6IDB4MjAsXG4gIElOSVRfREJfV0FSTjogMHgwMCxcbiAgSU5JVF9EQl9GQVRBTDogMHg0MCxcbiAgU0VUX0xBTkdfV0FSTl9PRkY6IDB4MDAsXG4gIFNFVF9MQU5HX1dBUk5fT046IDB4ODBcbn07XG5cbmNvbnN0IEZMQUdTXzIgPSB7XG4gIElOSVRfTEFOR19XQVJOOiAweDAwLFxuICBJTklUX0xBTkdfRkFUQUw6IDB4MDEsXG4gIE9EQkNfT0ZGOiAweDAwLFxuICBPREJDX09OOiAweDAyLFxuICBGX1RSQU5fQk9VTkRBUlk6IDB4MDQsXG4gIEZfQ0FDSEVfQ09OTkVDVDogMHgwOCxcbiAgVVNFUl9OT1JNQUw6IDB4MDAsXG4gIFVTRVJfU0VSVkVSOiAweDEwLFxuICBVU0VSX1JFTVVTRVI6IDB4MjAsXG4gIFVTRVJfU1FMUkVQTDogMHg0MCxcbiAgSU5URUdSQVRFRF9TRUNVUklUWV9PRkY6IDB4MDAsXG4gIElOVEVHUkFURURfU0VDVVJJVFlfT046IDB4ODBcbn07XG5cbmNvbnN0IFRZUEVfRkxBR1MgPSB7XG4gIFNRTF9ERkxUOiAweDAwLFxuICBTUUxfVFNRTDogMHgwOCxcbiAgT0xFREJfT0ZGOiAweDAwLFxuICBPTEVEQl9PTjogMHgxMCxcbiAgUkVBRF9XUklURV9JTlRFTlQ6IDB4MDAsXG4gIFJFQURfT05MWV9JTlRFTlQ6IDB4MjBcbn07XG5cbmNvbnN0IEZMQUdTXzMgPSB7XG4gIENIQU5HRV9QQVNTV09SRF9OTzogMHgwMCxcbiAgQ0hBTkdFX1BBU1NXT1JEX1lFUzogMHgwMSxcbiAgQklOQVJZX1hNTDogMHgwMixcbiAgU1BBV05fVVNFUl9JTlNUQU5DRTogMHgwNCxcbiAgVU5LTk9XTl9DT0xMQVRJT05fSEFORExJTkc6IDB4MDgsXG4gIEVYVEVOU0lPTl9VU0VEOiAweDEwXG59O1xuXG5jb25zdCBGRURBVVRIX09QVElPTlMgPSB7XG4gIEZFQVRVUkVfSUQ6IDB4MDIsXG4gIExJQlJBUllfU0VDVVJJVFlUT0tFTjogMHgwMSxcbiAgTElCUkFSWV9BREFMOiAweDAyLFxuICBGRURBVVRIX1lFU19FQ0hPOiAweDAxLFxuICBGRURBVVRIX05PX0VDSE86IDB4MDAsXG4gIEFEQUxfV09SS0ZMT1dfVVNFUl9QQVNTOiAweDAxLFxuICBBREFMX1dPUktGTE9XX0lOVEVHUkFURUQ6IDB4MDJcbn07XG5cbmNvbnN0IEZFQVRVUkVfRVhUX1RFUk1JTkFUT1IgPSAweEZGO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHRkc1ZlcnNpb246IG51bWJlcjtcbiAgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBjbGllbnRQcm9nVmVyOiBudW1iZXI7XG4gIGNsaWVudFBpZDogbnVtYmVyO1xuICBjb25uZWN0aW9uSWQ6IG51bWJlcjtcbiAgY2xpZW50VGltZVpvbmU6IG51bWJlcjtcbiAgY2xpZW50TGNpZDogbnVtYmVyO1xufVxuXG4vKlxuICBzMi4yLjYuM1xuICovXG5jbGFzcyBMb2dpbjdQYXlsb2FkIHtcbiAgZGVjbGFyZSB0ZHNWZXJzaW9uOiBudW1iZXI7XG4gIGRlY2xhcmUgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsaWVudFByb2dWZXI6IG51bWJlcjtcbiAgZGVjbGFyZSBjbGllbnRQaWQ6IG51bWJlcjtcbiAgZGVjbGFyZSBjb25uZWN0aW9uSWQ6IG51bWJlcjtcbiAgZGVjbGFyZSBjbGllbnRUaW1lWm9uZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsaWVudExjaWQ6IG51bWJlcjtcblxuICBkZWNsYXJlIHJlYWRPbmx5SW50ZW50OiBib29sZWFuO1xuICBkZWNsYXJlIGluaXREYkZhdGFsOiBib29sZWFuO1xuXG4gIGRlY2xhcmUgdXNlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBwYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHNlcnZlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBhcHBOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgaG9zdG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBsaWJyYXJ5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgZGF0YWJhc2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjbGllbnRJZDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHNzcGk6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBhdHRhY2hEYkZpbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjaGFuZ2VQYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGRlY2xhcmUgZmVkQXV0aDogeyB0eXBlOiAnQURBTCcsIGVjaG86IGJvb2xlYW4sIHdvcmtmbG93OiAnZGVmYXVsdCcgfCAnaW50ZWdyYXRlZCcgfSB8IHsgdHlwZTogJ1NFQ1VSSVRZVE9LRU4nLCBlY2hvOiBib29sZWFuLCBmZWRBdXRoVG9rZW46IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHsgdGRzVmVyc2lvbiwgcGFja2V0U2l6ZSwgY2xpZW50UHJvZ1ZlciwgY2xpZW50UGlkLCBjb25uZWN0aW9uSWQsIGNsaWVudFRpbWVab25lLCBjbGllbnRMY2lkIH06IE9wdGlvbnMpIHtcbiAgICB0aGlzLnRkc1ZlcnNpb24gPSB0ZHNWZXJzaW9uO1xuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5jbGllbnRQcm9nVmVyID0gY2xpZW50UHJvZ1ZlcjtcbiAgICB0aGlzLmNsaWVudFBpZCA9IGNsaWVudFBpZDtcbiAgICB0aGlzLmNvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZDtcbiAgICB0aGlzLmNsaWVudFRpbWVab25lID0gY2xpZW50VGltZVpvbmU7XG4gICAgdGhpcy5jbGllbnRMY2lkID0gY2xpZW50TGNpZDtcblxuICAgIHRoaXMucmVhZE9ubHlJbnRlbnQgPSBmYWxzZTtcbiAgICB0aGlzLmluaXREYkZhdGFsID0gZmFsc2U7XG5cbiAgICB0aGlzLmZlZEF1dGggPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnVzZXJOYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGFzc3dvcmQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZXJ2ZXJOYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXBwTmFtZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhvc3RuYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGlicmFyeU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYW5ndWFnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRhdGFiYXNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xpZW50SWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zc3BpID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXR0YWNoRGJGaWxlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2hhbmdlUGFzc3dvcmQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0b0J1ZmZlcigpIHtcbiAgICBjb25zdCBmaXhlZERhdGEgPSBCdWZmZXIuYWxsb2MoOTQpO1xuICAgIGNvbnN0IGJ1ZmZlcnMgPSBbZml4ZWREYXRhXTtcblxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGxldCBkYXRhT2Zmc2V0ID0gZml4ZWREYXRhLmxlbmd0aDtcblxuICAgIC8vIExlbmd0aDogNC1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUoMCwgb2Zmc2V0KTtcblxuICAgIC8vIFREU1ZlcnNpb246IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMudGRzVmVyc2lvbiwgb2Zmc2V0KTtcblxuICAgIC8vIFBhY2tldFNpemU6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMucGFja2V0U2l6ZSwgb2Zmc2V0KTtcblxuICAgIC8vIENsaWVudFByb2dWZXI6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMuY2xpZW50UHJvZ1Zlciwgb2Zmc2V0KTtcblxuICAgIC8vIENsaWVudFBJRDogNC1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUodGhpcy5jbGllbnRQaWQsIG9mZnNldCk7XG5cbiAgICAvLyBDb25uZWN0aW9uSUQ6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMuY29ubmVjdGlvbklkLCBvZmZzZXQpO1xuXG4gICAgLy8gT3B0aW9uRmxhZ3MxOiAxLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCh0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MxKCksIG9mZnNldCk7XG5cbiAgICAvLyBPcHRpb25GbGFnczI6IDEtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQ4KHRoaXMuYnVpbGRPcHRpb25GbGFnczIoKSwgb2Zmc2V0KTtcblxuICAgIC8vIFR5cGVGbGFnczogMS1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgodGhpcy5idWlsZFR5cGVGbGFncygpLCBvZmZzZXQpO1xuXG4gICAgLy8gT3B0aW9uRmxhZ3MzOiAxLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCh0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MzKCksIG9mZnNldCk7XG5cbiAgICAvLyBDbGllbnRUaW1ab25lOiA0LWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVJbnQzMkxFKHRoaXMuY2xpZW50VGltZVpvbmUsIG9mZnNldCk7XG5cbiAgICAvLyBDbGllbnRMQ0lEOiA0LWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSh0aGlzLmNsaWVudExjaWQsIG9mZnNldCk7XG5cbiAgICAvLyBpYkhvc3ROYW1lOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2NoSG9zdE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmhvc3RuYW1lKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmhvc3RuYW1lLCAndWNzMicpO1xuXG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShidWZmZXIubGVuZ3RoIC8gMiwgb2Zmc2V0KTtcbiAgICAgIGRhdGFPZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDtcblxuICAgICAgYnVmZmVycy5wdXNoKGJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJVc2VyTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaFVzZXJOYW1lOiAyLWJ5dGVcbiAgICBpZiAodGhpcy51c2VyTmFtZSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy51c2VyTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliUGFzc3dvcmQ6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hQYXNzd29yZDogMi1ieXRlXG4gICAgaWYgKHRoaXMucGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMucGFzc3dvcmQsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2godGhpcy5zY3JhbWJsZVBhc3N3b3JkKGJ1ZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliQXBwTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaEFwcE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmFwcE5hbWUpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuYXBwTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliU2VydmVyTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaFNlcnZlck5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLnNlcnZlck5hbWUpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuc2VydmVyTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIChpYlVudXNlZCAvIGliRXh0ZW5zaW9uKTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIChjY2hVbnVzZWQgLyBjYkV4dGVuc2lvbik6IDItYnl0ZVxuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSB0aGlzLmJ1aWxkRmVhdHVyZUV4dCgpO1xuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDQsIG9mZnNldCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uT2Zmc2V0ID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGV4dGVuc2lvbk9mZnNldC53cml0ZVVJbnQzMkxFKGRhdGFPZmZzZXQgKz0gNCwgMCk7XG4gICAgZGF0YU9mZnNldCArPSBleHRlbnNpb25zLmxlbmd0aDtcbiAgICBidWZmZXJzLnB1c2goZXh0ZW5zaW9uT2Zmc2V0LCBleHRlbnNpb25zKTtcblxuICAgIC8vIGliQ2x0SW50TmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaENsdEludE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmxpYnJhcnlOYW1lKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmxpYnJhcnlOYW1lLCAndWNzMicpO1xuXG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShidWZmZXIubGVuZ3RoIC8gMiwgb2Zmc2V0KTtcbiAgICAgIGRhdGFPZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDtcblxuICAgICAgYnVmZmVycy5wdXNoKGJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDAsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJMYW5ndWFnZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaExhbmd1YWdlOiAyLWJ5dGVcbiAgICBpZiAodGhpcy5sYW5ndWFnZSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy5sYW5ndWFnZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliRGF0YWJhc2U6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hEYXRhYmFzZTogMi1ieXRlXG4gICAgaWYgKHRoaXMuZGF0YWJhc2UpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuZGF0YWJhc2UsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICAvLyBDbGllbnRJRDogNi1ieXRlXG4gICAgaWYgKHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIHRoaXMuY2xpZW50SWQuY29weShmaXhlZERhdGEsIG9mZnNldCwgMCwgNik7XG4gICAgfVxuICAgIG9mZnNldCArPSA2O1xuXG4gICAgLy8gaWJTU1BJOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2JTU1BJOiAyLWJ5dGVcbiAgICBpZiAodGhpcy5zc3BpKSB7XG4gICAgICBpZiAodGhpcy5zc3BpLmxlbmd0aCA+IDY1NTM1KSB7XG4gICAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDY1NTM1LCBvZmZzZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUodGhpcy5zc3BpLmxlbmd0aCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgYnVmZmVycy5wdXNoKHRoaXMuc3NwaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDAsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJBdGNoREJGaWxlOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2NoQXRjaERCRmlsZTogMi1ieXRlXG4gICAgaWYgKHRoaXMuYXR0YWNoRGJGaWxlKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmF0dGFjaERiRmlsZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliQ2hhbmdlUGFzc3dvcmQ6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hDaGFuZ2VQYXNzd29yZDogMi1ieXRlXG4gICAgaWYgKHRoaXMuY2hhbmdlUGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuY2hhbmdlUGFzc3dvcmQsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICAvLyBjYlNTUElMb25nOiA0LWJ5dGVcbiAgICBpZiAodGhpcy5zc3BpICYmIHRoaXMuc3NwaS5sZW5ndGggPiA2NTUzNSkge1xuICAgICAgZml4ZWREYXRhLndyaXRlVUludDMyTEUodGhpcy5zc3BpLmxlbmd0aCwgb2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZml4ZWREYXRhLndyaXRlVUludDMyTEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmNvbmNhdChidWZmZXJzKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoZGF0YS5sZW5ndGgsIDApO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczEoKSB7XG4gICAgbGV0IGZsYWdzMSA9IEZMQUdTXzEuRU5ESUFOX0xJVFRMRSB8IEZMQUdTXzEuQ0hBUlNFVF9BU0NJSSB8IEZMQUdTXzEuRkxPQVRfSUVFRV83NTQgfCBGTEFHU18xLkJDUF9EVU1QTE9BRF9PRkYgfCBGTEFHU18xLlVTRV9EQl9PRkYgfCBGTEFHU18xLlNFVF9MQU5HX1dBUk5fT047XG4gICAgaWYgKHRoaXMuaW5pdERiRmF0YWwpIHtcbiAgICAgIGZsYWdzMSB8PSBGTEFHU18xLklOSVRfREJfRkFUQUw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWdzMSB8PSBGTEFHU18xLklOSVRfREJfV0FSTjtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWdzMTtcbiAgfVxuXG4gIGJ1aWxkRmVhdHVyZUV4dCgpIHtcbiAgICBjb25zdCBidWZmZXJzID0gW107XG5cbiAgICBjb25zdCBmZWRBdXRoID0gdGhpcy5mZWRBdXRoO1xuICAgIGlmIChmZWRBdXRoKSB7XG4gICAgICBzd2l0Y2ggKGZlZEF1dGgudHlwZSkge1xuICAgICAgICBjYXNlICdBREFMJzpcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNyk7XG4gICAgICAgICAgYnVmZmVyLndyaXRlVUludDgoRkVEQVVUSF9PUFRJT05TLkZFQVRVUkVfSUQsIDApO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKDIsIDEpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KChGRURBVVRIX09QVElPTlMuTElCUkFSWV9BREFMIDw8IDEpIHwgKGZlZEF1dGguZWNobyA/IEZFREFVVEhfT1BUSU9OUy5GRURBVVRIX1lFU19FQ0hPIDogRkVEQVVUSF9PUFRJT05TLkZFREFVVEhfTk9fRUNITyksIDUpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KGZlZEF1dGgud29ya2Zsb3cgPT09ICdpbnRlZ3JhdGVkJyA/IDB4MDIgOiBGRURBVVRIX09QVElPTlMuQURBTF9XT1JLRkxPV19VU0VSX1BBU1MsIDYpO1xuICAgICAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1NFQ1VSSVRZVE9LRU4nOlxuICAgICAgICAgIGNvbnN0IHRva2VuID0gQnVmZmVyLmZyb20oZmVkQXV0aC5mZWRBdXRoVG9rZW4sICd1Y3MyJyk7XG4gICAgICAgICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDEwKTtcblxuICAgICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQ4KEZFREFVVEhfT1BUSU9OUy5GRUFUVVJFX0lELCBvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQzMkxFKHRva2VuLmxlbmd0aCArIDQgKyAxLCBvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQ4KChGRURBVVRIX09QVElPTlMuTElCUkFSWV9TRUNVUklUWVRPS0VOIDw8IDEpIHwgKGZlZEF1dGguZWNobyA/IEZFREFVVEhfT1BUSU9OUy5GRURBVVRIX1lFU19FQ0hPIDogRkVEQVVUSF9PUFRJT05TLkZFREFVVEhfTk9fRUNITyksIG9mZnNldCk7XG4gICAgICAgICAgYnVmLndyaXRlSW50MzJMRSh0b2tlbi5sZW5ndGgsIG9mZnNldCk7XG5cbiAgICAgICAgICBidWZmZXJzLnB1c2goYnVmKTtcbiAgICAgICAgICBidWZmZXJzLnB1c2godG9rZW4pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGRzVmVyc2lvbiA+PSB2ZXJzaW9uc1snN180J10pIHtcbiAgICAgIC8vIFNpZ25hbCBVVEYtOCBzdXBwb3J0OiBWYWx1ZSAweDBBLCBiaXQgMCBtdXN0IGJlIHNldCB0byAxLiBBZGRlZCBpbiBURFMgNy40LlxuICAgICAgY29uc3QgVVRGOF9TVVBQT1JUX0ZFQVRVUkVfSUQgPSAweDBhO1xuICAgICAgY29uc3QgVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4ID0gMHgwMTtcbiAgICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyg2KTtcbiAgICAgIGJ1Zi53cml0ZVVJbnQ4KFVURjhfU1VQUE9SVF9GRUFUVVJFX0lELCAwKTtcbiAgICAgIGJ1Zi53cml0ZVVJbnQzMkxFKDEsIDEpO1xuICAgICAgYnVmLndyaXRlVUludDgoVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4LCA1KTtcbiAgICAgIGJ1ZmZlcnMucHVzaChidWYpO1xuICAgIH1cblxuICAgIGJ1ZmZlcnMucHVzaChCdWZmZXIuZnJvbShbRkVBVFVSRV9FWFRfVEVSTUlOQVRPUl0pKTtcblxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczIoKSB7XG4gICAgbGV0IGZsYWdzMiA9IEZMQUdTXzIuSU5JVF9MQU5HX1dBUk4gfCBGTEFHU18yLk9EQkNfT0ZGIHwgRkxBR1NfMi5VU0VSX05PUk1BTDtcbiAgICBpZiAodGhpcy5zc3BpKSB7XG4gICAgICBmbGFnczIgfD0gRkxBR1NfMi5JTlRFR1JBVEVEX1NFQ1VSSVRZX09OO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGFnczIgfD0gRkxBR1NfMi5JTlRFR1JBVEVEX1NFQ1VSSVRZX09GRjtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWdzMjtcbiAgfVxuXG4gIGJ1aWxkVHlwZUZsYWdzKCkge1xuICAgIGxldCB0eXBlRmxhZ3MgPSBUWVBFX0ZMQUdTLlNRTF9ERkxUIHwgVFlQRV9GTEFHUy5PTEVEQl9PRkY7XG4gICAgaWYgKHRoaXMucmVhZE9ubHlJbnRlbnQpIHtcbiAgICAgIHR5cGVGbGFncyB8PSBUWVBFX0ZMQUdTLlJFQURfT05MWV9JTlRFTlQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGVGbGFncyB8PSBUWVBFX0ZMQUdTLlJFQURfV1JJVEVfSU5URU5UO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZUZsYWdzO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczMoKSB7XG4gICAgcmV0dXJuIEZMQUdTXzMuQ0hBTkdFX1BBU1NXT1JEX05PIHwgRkxBR1NfMy5VTktOT1dOX0NPTExBVElPTl9IQU5ETElORyB8IEZMQUdTXzMuRVhURU5TSU9OX1VTRUQ7XG4gIH1cblxuICBzY3JhbWJsZVBhc3N3b3JkKHBhc3N3b3JkOiBCdWZmZXIpIHtcbiAgICBmb3IgKGxldCBiID0gMCwgbGVuID0gcGFzc3dvcmQubGVuZ3RoOyBiIDwgbGVuOyBiKyspIHtcbiAgICAgIGxldCBieXRlID0gcGFzc3dvcmRbYl07XG4gICAgICBjb25zdCBsb3dOaWJibGUgPSBieXRlICYgMHgwZjtcbiAgICAgIGNvbnN0IGhpZ2hOaWJibGUgPSBieXRlID4+IDQ7XG4gICAgICBieXRlID0gKGxvd05pYmJsZSA8PCA0KSB8IGhpZ2hOaWJibGU7XG4gICAgICBieXRlID0gYnl0ZSBeIDB4YTU7XG4gICAgICBwYXNzd29yZFtiXSA9IGJ5dGU7XG4gICAgfVxuICAgIHJldHVybiBwYXNzd29yZDtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdMb2dpbjcgLSAnICtcbiAgICAgIHNwcmludGYoJ1REUzoweCUwOFgsIFBhY2tldFNpemU6MHglMDhYLCBDbGllbnRQcm9nVmVyOjB4JTA4WCwgQ2xpZW50UElEOjB4JTA4WCwgQ29ubmVjdGlvbklEOjB4JTA4WCcsXG4gICAgICAgICAgICAgIHRoaXMudGRzVmVyc2lvbiwgdGhpcy5wYWNrZXRTaXplLCB0aGlzLmNsaWVudFByb2dWZXIsIHRoaXMuY2xpZW50UGlkLCB0aGlzLmNvbm5lY3Rpb25JZFxuICAgICAgKSArICdcXG4nICsgaW5kZW50ICsgJyAgICAgICAgICcgK1xuICAgICAgc3ByaW50ZignRmxhZ3MxOjB4JTAyWCwgRmxhZ3MyOjB4JTAyWCwgVHlwZUZsYWdzOjB4JTAyWCwgRmxhZ3MzOjB4JTAyWCwgQ2xpZW50VGltZXpvbmU6JWQsIENsaWVudExDSUQ6MHglMDhYJyxcbiAgICAgICAgICAgICAgdGhpcy5idWlsZE9wdGlvbkZsYWdzMSgpLCB0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MyKCksIHRoaXMuYnVpbGRUeXBlRmxhZ3MoKSwgdGhpcy5idWlsZE9wdGlvbkZsYWdzMygpLCB0aGlzLmNsaWVudFRpbWVab25lLCB0aGlzLmNsaWVudExjaWRcbiAgICAgICkgKyAnXFxuJyArIGluZGVudCArICcgICAgICAgICAnICtcbiAgICAgIHNwcmludGYoXCJIb3N0bmFtZTonJXMnLCBVc2VybmFtZTonJXMnLCBQYXNzd29yZDonJXMnLCBBcHBOYW1lOiclcycsIFNlcnZlck5hbWU6JyVzJywgTGlicmFyeU5hbWU6JyVzJ1wiLFxuICAgICAgICAgICAgICB0aGlzLmhvc3RuYW1lLCB0aGlzLnVzZXJOYW1lLCB0aGlzLnBhc3N3b3JkLCB0aGlzLmFwcE5hbWUsIHRoaXMuc2VydmVyTmFtZSwgdGhpcy5saWJyYXJ5TmFtZVxuICAgICAgKSArICdcXG4nICsgaW5kZW50ICsgJyAgICAgICAgICcgK1xuICAgICAgc3ByaW50ZihcIkxhbmd1YWdlOiclcycsIERhdGFiYXNlOiclcycsIFNTUEk6JyVzJywgQXR0YWNoRGJGaWxlOiclcycsIENoYW5nZVBhc3N3b3JkOiclcydcIixcbiAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZSwgdGhpcy5kYXRhYmFzZSwgdGhpcy5zc3BpLCB0aGlzLmF0dGFjaERiRmlsZSwgdGhpcy5jaGFuZ2VQYXNzd29yZFxuICAgICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2dpbjdQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBMb2dpbjdQYXlsb2FkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFFQSxNQUFNRSxPQUFPLEdBQUc7RUFDZEMsYUFBYSxFQUFFLElBQUk7RUFDbkJDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxhQUFhLEVBQUUsSUFBSTtFQUNuQkMsY0FBYyxFQUFFLElBQUk7RUFDcEJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLGdCQUFnQixFQUFFLElBQUk7RUFDdEJDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsYUFBYSxFQUFFLElBQUk7RUFDbkJDLGlCQUFpQixFQUFFLElBQUk7RUFDdkJDLGdCQUFnQixFQUFFO0FBQ3BCLENBQUM7QUFFRCxNQUFNQyxPQUFPLEdBQUc7RUFDZEMsY0FBYyxFQUFFLElBQUk7RUFDcEJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxRQUFRLEVBQUUsSUFBSTtF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
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Duplex } from 'stream';
|
|
2
|
-
import * as tls from 'tls';
|
|
3
|
-
import { Socket } from 'net';
|
|
4
|
-
import { EventEmitter } from 'events';
|
|
5
|
-
import Debug from './debug';
|
|
6
|
-
import Message from './message';
|
|
7
|
-
import OutgoingMessageStream from './outgoing-message-stream';
|
|
8
|
-
declare class MessageIO extends EventEmitter {
|
|
9
|
-
socket: Socket;
|
|
10
|
-
debug: Debug;
|
|
11
|
-
tlsNegotiationComplete: boolean;
|
|
12
|
-
private incomingMessageStream;
|
|
13
|
-
outgoingMessageStream: OutgoingMessageStream;
|
|
14
|
-
securePair?: {
|
|
15
|
-
cleartext: tls.TLSSocket;
|
|
16
|
-
encrypted: Duplex;
|
|
17
|
-
};
|
|
18
|
-
incomingMessageIterator: AsyncIterableIterator<Message>;
|
|
19
|
-
constructor(socket: Socket, packetSize: number, debug: Debug);
|
|
20
|
-
packetSize(...args: [number]): number;
|
|
21
|
-
startTls(credentialsDetails: tls.SecureContextOptions, hostname: string, trustServerCertificate: boolean): Promise<void>;
|
|
22
|
-
sendMessage(packetType: number, data?: Buffer, resetConnection?: boolean): Message;
|
|
23
|
-
/**
|
|
24
|
-
* Read the next incoming message from the socket.
|
|
25
|
-
*/
|
|
26
|
-
readMessage(): Promise<Message>;
|
|
27
|
-
}
|
|
28
|
-
export default MessageIO;
|