// Type definitions for mssql 4.3.0 // Project: https://www.npmjs.com/package/mssql // Definitions by: COLSA Corporation // Ben Farr // Vitor Buzinaro // Matt Richardson // Jørgen Elgaard Larsen // Peter Keuter // David Gasperoni // Jeff Wooden // Cahil Foley // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.9 /// import events = require('events'); import tds = require('tedious'); export interface ISqlType { type: ISqlTypeFactory; } export interface ISqlTypeWithNoParams extends ISqlType { type: ISqlTypeFactoryWithNoParams } export interface ISqlTypeWithLength extends ISqlType { type: ISqlTypeFactoryWithLength; length: number } export interface ISqlTypeWithScale extends ISqlType { type: ISqlTypeFactoryWithScale; scale: number } export interface ISqlTypeWithPrecisionScale extends ISqlType { type: ISqlTypeFactoryWithPrecisionScale; precision: number, scale: number } export interface ISqlTypeWithTvpType extends ISqlType { type: ISqlTypeFactoryWithTvpType; tvpType: any } export interface ISqlTypeFactory { } export interface ISqlTypeFactoryWithNoParams extends ISqlTypeFactory { (): ISqlTypeWithNoParams; } export interface ISqlTypeFactoryWithLength extends ISqlTypeFactory { (length?: number): ISqlTypeWithLength } export interface ISqlTypeFactoryWithScale extends ISqlTypeFactory { (scale?: number): ISqlTypeWithScale } export interface ISqlTypeFactoryWithPrecisionScale extends ISqlTypeFactory { (precision?: number, scale?: number): ISqlTypeWithPrecisionScale; } export interface ISqlTypeFactoryWithTvpType extends ISqlTypeFactory { (tvpType: any): ISqlTypeWithTvpType } export declare var VarChar: ISqlTypeFactoryWithLength; export declare var NVarChar: ISqlTypeFactoryWithLength; export declare var Text: ISqlTypeFactoryWithNoParams; export declare var Int: ISqlTypeFactoryWithNoParams; export declare var BigInt: ISqlTypeFactoryWithNoParams; export declare var TinyInt: ISqlTypeFactoryWithNoParams; export declare var SmallInt: ISqlTypeFactoryWithNoParams; export declare var Bit: ISqlTypeFactoryWithNoParams; export declare var Float: ISqlTypeFactoryWithNoParams; export declare var Numeric: ISqlTypeFactoryWithPrecisionScale; export declare var Decimal: ISqlTypeFactoryWithPrecisionScale; export declare var Real: ISqlTypeFactoryWithNoParams; export declare var Date: ISqlTypeFactoryWithNoParams; export declare var DateTime: ISqlTypeFactoryWithNoParams; export declare var DateTime2: ISqlTypeFactoryWithScale; export declare var DateTimeOffset: ISqlTypeFactoryWithScale; export declare var SmallDateTime: ISqlTypeFactoryWithNoParams; export declare var Time: ISqlTypeFactoryWithScale; export declare var UniqueIdentifier: ISqlTypeFactoryWithNoParams; export declare var SmallMoney: ISqlTypeFactoryWithNoParams; export declare var Money: ISqlTypeFactoryWithNoParams; export declare var Binary: ISqlTypeFactoryWithNoParams; export declare var VarBinary: ISqlTypeFactoryWithLength; export declare var Image: ISqlTypeFactoryWithNoParams; export declare var Xml: ISqlTypeFactoryWithNoParams; export declare var Char: ISqlTypeFactoryWithLength; export declare var NChar: ISqlTypeFactoryWithLength; export declare var NText: ISqlTypeFactoryWithNoParams; export declare var TVP: ISqlTypeFactoryWithTvpType; export declare var UDT: ISqlTypeFactoryWithNoParams; export declare var Geography: ISqlTypeFactoryWithNoParams; export declare var Geometry: ISqlTypeFactoryWithNoParams; export declare var Variant: ISqlTypeFactoryWithNoParams; export declare var TYPES: { VarChar: ISqlTypeFactoryWithLength; NVarChar: ISqlTypeFactoryWithLength; Text: ISqlTypeFactoryWithNoParams; Int: ISqlTypeFactoryWithNoParams; BigInt: ISqlTypeFactoryWithNoParams; TinyInt: ISqlTypeFactoryWithNoParams; SmallInt: ISqlTypeFactoryWithNoParams; Bit: ISqlTypeFactoryWithNoParams; Float: ISqlTypeFactoryWithNoParams; Numeric: ISqlTypeFactoryWithPrecisionScale; Decimal: ISqlTypeFactoryWithPrecisionScale; Real: ISqlTypeFactoryWithNoParams; Date: ISqlTypeFactoryWithNoParams; DateTime: ISqlTypeFactoryWithNoParams; DateTime2: ISqlTypeFactoryWithScale; DateTimeOffset: ISqlTypeFactoryWithScale; SmallDateTime: ISqlTypeFactoryWithNoParams; Time: ISqlTypeFactoryWithScale; UniqueIdentifier: ISqlTypeFactoryWithNoParams; SmallMoney: ISqlTypeFactoryWithNoParams; Money: ISqlTypeFactoryWithNoParams; Binary: ISqlTypeFactoryWithNoParams; VarBinary: ISqlTypeFactoryWithLength; Image: ISqlTypeFactoryWithNoParams; Xml: ISqlTypeFactoryWithNoParams; Char: ISqlTypeFactoryWithLength; NChar: ISqlTypeFactoryWithLength; NText: ISqlTypeFactoryWithNoParams; TVP: ISqlTypeFactoryWithTvpType; UDT: ISqlTypeFactoryWithNoParams; Geography: ISqlTypeFactoryWithNoParams; Geometry: ISqlTypeFactoryWithNoParams; Variant: ISqlTypeFactoryWithNoParams; }; export declare var MAX: number; export declare var fix: boolean; export declare var Promise: any; interface IMap extends Array<{ js: any, sql: any }> { register(jstype: any, sql: any): void; } export declare var map: IMap; export declare var DRIVERS: string[]; export interface IColumnMetadata { [name: string]: { index: number; name: string; length: number; type: (() => ISqlType) | ISqlType; udt?: any; scale?: number; precision?: number; nullable: boolean; caseSensitive: boolean; identity: boolean; readOnly: boolean; } } export interface IResult { recordsets: IRecordSet[]; recordset: IRecordSet; rowsAffected: number[], output: { [key: string]: any }; } export interface IBulkResult { rowsAffected: number; } export interface IProcedureResult extends IResult { returnValue: any; } export interface IRecordSet extends Array { columns: IColumnMetadata; toTable(name?: string): Table; } type IIsolationLevel = number; export declare var ISOLATION_LEVEL: { READ_UNCOMMITTED: IIsolationLevel READ_COMMITTED: IIsolationLevel REPEATABLE_READ: IIsolationLevel SERIALIZABLE: IIsolationLevel SNAPSHOT: IIsolationLevel } export interface IOptions { encrypt?: boolean; instanceName?: string; useUTC?: boolean; tdsVersion?: string; appName?: string; abortTransactionOnError?: boolean; trustedConnection?: boolean; } export interface IPool { min?: number; max?: number; idleTimeoutMillis?: number; maxWaitingClients?: number; testOnBorrow?: boolean; acquireTimeoutMillis?: number; fifo?: boolean; priorityRange?: number; autostart?: boolean; evictionRunIntervalMillis?: number; numTestsPerRun?: number; softIdleTimeoutMillis?: number; Promise?: any; } export declare var pool: IPool; export interface config { driver?: string; user?: string; password?: string; server: string; port?: number; domain?: string; database: string; connectionTimeout?: number; requestTimeout?: number; stream?: boolean; parseJSON?: boolean; options?: IOptions; pool?: IPool; /** * Invoked before opening the connection. The parameter conn is the configured * tedious Connection. It can be used for attaching event handlers. */ beforeConnect?: (conn: tds.Connection) => void } export declare class ConnectionPool extends events.EventEmitter { public connected: boolean; public connecting: boolean; public driver: string; public constructor(config: config, callback?: (err?: any) => void); public constructor(connectionString: string, callback?: (err?: any) => void); public query(command: string): Promise>; public query(strings: TemplateStringsArray, ...interpolations: any[]): Promise>; public query(command: string): Promise>; public query(strings: TemplateStringsArray, ...interpolations: any[]): Promise>; public query(command: string, callback: (err?: Error, recordset?: IResult) => void): void; public batch(batch: string): Promise>; public batch(strings: TemplateStringsArray, ...interpolations: any[]): Promise>; public batch(batch: string, callback: (err?: Error, recordset?: IResult) => void): void; public batch(batch: string): Promise>; public batch(strings: TemplateStringsArray, ...interpolations: any[]): Promise>; public connect(): Promise; public connect(callback: (err: any) => void): void; public close(): Promise; public close(callback: (err: any) => void): void; public request(): Request; public transaction(): Transaction; } export declare class ConnectionError implements Error { constructor(message: string, code?: any) public name: string; public message: string; public code: string; } export interface IColumnOptions { nullable?: boolean; primary?: boolean; } export interface IColumn extends ISqlType { name: string; nullable: boolean; primary: boolean; } declare class columns extends Array { public add(name: string, type: (() => ISqlType) | ISqlType, options?: IColumnOptions): number; } type IRow = (string | number | boolean | Date | Buffer | undefined)[]; declare class rows extends Array { public add(...row: IRow): number; } export declare class Table { public create: boolean; public columns: columns; public rows: rows; public constructor(tableName?: string); public schema?: string; public database?: string; public name?: string; public path?: string; public temporary?: boolean; } interface IRequestParameters { [name: string]: { name: string; type: (() => ISqlType) | ISqlType; io: number; value: any; length: number; scale: number; precision: number; tvpType: any; } } /** * Options object to be passed through to driver (currently tedious only) */ export interface IBulkOptions { /** Honors constraints during bulk load, using T-SQL CHECK_CONSTRAINTS. (default: false) */ checkConstraints?: boolean; /** Honors insert triggers during bulk load, using the T-SQL FIRE_TRIGGERS. (default: false) */ fireTriggers?: boolean; /** Honors null value passed, ignores the default values set on table, using T-SQL KEEP_NULLS. (default: false) */ keepNulls?: boolean; /** Places a bulk update(BU) lock on table while performing bulk load, using T-SQL TABLOCK. (default: false) */ tableLock?: boolean; } export declare class Request extends events.EventEmitter { public transaction: Transaction; public pstatement: PreparedStatement; public parameters: IRequestParameters; public verbose: boolean; public canceled: boolean; public multiple: boolean; public stream: any; public constructor(connection?: ConnectionPool); public constructor(transaction: Transaction); public constructor(preparedStatement: PreparedStatement); public execute(procedure: string): Promise>; public execute(procedure: string): Promise>; public execute(procedure: string, callback: (err?: any, recordsets?: IProcedureResult, returnValue?: any) => void): void; public input(name: string, value: any): Request; public input(name: string, type: (() => ISqlType) | ISqlType, value: any): Request; public output(name: string, type: (() => ISqlType) | ISqlType, value?: any): Request; public pipe(stream: NodeJS.WritableStream): NodeJS.WritableStream; public query(command: string): Promise>; public query(command: TemplateStringsArray, ...interpolations: any[]): Promise>; public query(command: string): Promise>; public query(command: TemplateStringsArray, ...interpolations: any[]): Promise>; public query(command: string, callback: (err?: Error, recordset?: IResult) => void): void; public batch(batch: string): Promise>; public batch(strings: TemplateStringsArray, ...interpolations: any[]): Promise>; public batch(batch: string, callback: (err?: Error, recordset?: IResult) => void): void; public batch(batch: string): Promise>; public batch(strings: TemplateStringsArray, ...interpolations: any[]): Promise>; public batch(batch: string, callback: (err?: any, recordset?: IResult) => void): void; public bulk(table: Table): Promise; public bulk(table: Table, options: IBulkOptions): Promise; public bulk(table: Table, callback: (err: Error, result: IBulkResult) => void): void; public bulk(table: Table, options: IBulkOptions, callback: (err: Error, result: IBulkResult) => void): void; public cancel(): void; public pause(): boolean; public resume(): boolean; } export declare class RequestError implements Error { constructor(message: string, code?: any) public name: string; public message: string; public code: string; public number?: number; public state?: number; public class?: number; public lineNumber?: number; public serverName?: string; public procName?: string; } export declare class Transaction extends events.EventEmitter { public isolationLevel: IIsolationLevel; public constructor(connection?: ConnectionPool); public begin(isolationLevel?: IIsolationLevel): Promise; public begin(isolationLevel?: IIsolationLevel, callback?: (err?: any) => void): void; public commit(): Promise; public commit(callback: (err?: any) => void): void; public rollback(): Promise; public rollback(callback: (err?: any) => void): void; public request(): Request; } export declare class TransactionError implements Error { constructor(message: string, code?: any) public name: string; public message: string; public code: string; } export declare class PreparedStatement extends events.EventEmitter { public transaction: Transaction; public prepared: boolean; public statement: string; public parameters: IRequestParameters; public stream: any; public constructor(connection?: ConnectionPool); public constructor(transaction: Transaction); public input(name: string, type: (() => ISqlType) | ISqlType): PreparedStatement; public output(name: string, type: (() => ISqlType) | ISqlType): PreparedStatement; public prepare(statement?: string): Promise; public prepare(statement?: string, callback?: (err?: Error) => void): PreparedStatement; public execute(values: Object): Promise>; public execute(values: Object): Promise>; public execute(values: Object, callback: (err?: Error, result?: IProcedureResult) => void): Request; public execute(values: Object, callback: (err?: Error, result?: IProcedureResult) => void): Request; public unprepare(): Promise; public unprepare(callback: (err?: Error) => void): PreparedStatement; } export declare class PreparedStatementError implements Error { constructor(message: string, code?: any) public name: string; public message: string; public code: string; }