diff --git a/oracledb/oracledb-1.5.0-tests.ts b/oracledb/oracledb-1.5.0-tests.ts
new file mode 100644
index 0000000000..19976034ea
--- /dev/null
+++ b/oracledb/oracledb-1.5.0-tests.ts
@@ -0,0 +1,32 @@
+///
+
+import * as OracleDB from 'oracledb'
+
+OracleDB.getConnection(
+ {
+ user: "hr",
+ password: "welcome",
+ connectString: "localhost/XE"
+ },
+ function(err, connection) {
+ if (err) {
+ console.error(err.message)
+ return
+ }
+ connection.execute(
+ "SELECT department_id, department_name " +
+ "FROM departments " +
+ "WHERE manager_id < :id",
+ [110], // bind value for :id
+ function (err, result) {
+ if (err) {
+ console.error(err.message)
+ return
+ }
+ console.log(result.rows);
+ console.log(result.rows[0].department_id); // when outFormet is OBJECT
+ console.log(result.metaData[0].name);
+ }
+ )
+ }
+)
diff --git a/oracledb/oracledb-1.5.0.d.ts b/oracledb/oracledb-1.5.0.d.ts
new file mode 100644
index 0000000000..c57a8efaae
--- /dev/null
+++ b/oracledb/oracledb-1.5.0.d.ts
@@ -0,0 +1,308 @@
+// Type definitions for oracledb v1.5.0
+// Project: https://github.com/oracle/node-oracledb
+// Definitions by: Richard Natal
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+
+declare module 'oracledb' {
+ import * as stream from "stream";
+
+ export interface ILob {
+ chunkSize: number;
+ length: number;
+ pieceSize: number;
+ offset?: number;
+ type: string;
+ /**
+ * Release method on ILob class.
+ * @remarks The cleanup() called by Release() only frees OCI error handle and Lob
+ * locator. These calls acquire mutex on OCI environment handle very briefly.
+ */
+ release?(): void;
+ /**
+ * Read method on ILob class.
+ * @param {(err : any, chunk: string | Buffer) => void} callback Callback to recive the data from lob.
+ * @remarks CLobs send strings while BLobs send Buffer object.
+ */
+ read?(callback: (err: any, chunk: string | Buffer) => void): void;
+ /**
+ * Read method on ILob class.
+ * @param {Buffer} data Data write into Lob.
+ * @param {(err: any) => void} callback Callback executed when writ is finished or when some error occured.
+ * @remarks CLobs send strings while BLobs send Buffer object.
+ */
+ write?(data: Buffer, callback: (err: any) => void): void;
+ }
+
+ export interface Lob extends stream.Duplex {
+ iLob: ILob;
+ chunkSize: number;
+ length: number;
+ pieceSize: number;
+ type: string;
+
+ /**
+ * Do not call this... used internally by node-oracledb
+ */
+ constructor(iLob: ILob, opts: stream.DuplexOptions): Lob;
+ constructor(iLob: ILob): Lob;
+
+ /**
+ * Closes the current LOB.
+ * @param {(err: any) => void} callback? When passed, is called after the release.
+ * @returns void
+ */
+ close(callback: (err: any) => void): void;
+ close(): void;
+ }
+
+ export interface IConnectionAttributes {
+ user?: string;
+ password?: string;
+ connectString: string;
+ stmtCacheSize?: number;
+ externalAuth?: boolean;
+ }
+
+ export interface IPoolAttributes extends IConnectionAttributes {
+ poolMax?: number;
+ poolMin?: number;
+ poolIncrement?: number;
+ poolTimeout?: number;
+ }
+
+ export interface IExecuteOptions {
+ /** Maximum number of rows that will be retrieved. Used when resultSet is false. */
+ maxRows?: number;
+ /** Number of rows to be fetched in advance. */
+ prefetchRows?: number;
+ /** Result format - ARRAY o OBJECT */
+ outFormat?: number;
+ /** Should use ResultSet or not. */
+ resultSet?: boolean;
+ /** Transaction should auto commit after each statement? */
+ autoCommit?: boolean;
+ }
+
+ export interface IExecuteReturn {
+ /** Number o rows affected by the statement (used for inserts / updates)*/
+ rowsAffected?: number;
+ /** When the statement has out parameters, it comes here. */
+ outBinds?: Array | Object;
+ /** Metadata information - just columns names for now. */
+ metaData?: Array;
+ /** When not using ResultSet, query results comes here. */
+ rows?: Array> | Array;
+ /** When using ResultSet, query results comes here. */
+ resultSet?: IResultSet;
+ }
+
+ export interface IMetaData {
+ /** Column name */
+ name: string;
+ }
+
+ export interface IResultSet {
+ /** Metadata information - just columns names for now. */
+ metaData?: Array;
+ /**
+ * Closes the ResultSet.
+ * @param {(err:any)=>void} callback Callback called on finish or when some error occurs
+ * @returns void
+ * @remarks After using a resultSet, it must be closed to free the resources used by the driver.
+ */
+ close(callback: (err: any) => void): void;
+ /**
+ * Fetch one row from ResultSet.
+ * @param {(err:any,row:Array|Object)=>void} callback Callback called when the row is available or when some error occurs.
+ * @returns void
+ */
+ getRow(callback: (err: any, row: Array | Object) => void): void;
+ /**
+ * Fetch some rows from ResultSet.
+ * @param {number} rowCount Number of rows to be fetched.
+ * @param {(err:any,rows:Array>|Array