diff --git a/ldapjs/index.d.ts b/ldapjs/index.d.ts
index 0ba6374bac..f634a94614 100644
--- a/ldapjs/index.d.ts
+++ b/ldapjs/index.d.ts
@@ -1,57 +1,182 @@
-// Type definitions for ldapjs v0.7.1
+// Type definitions for ldapjs v1.0.1
// Project: http://ldapjs.org
-// Definitions by: Peter Kooijmans
-// Definitions: https://github.com/borisyankov/DefinitelyTyped
+// Definitions by: Charles Villemure , Updated from (0.7.1) Peter Kooijmans
+// Definitions: https://github.com/cvillemure/DefinitelyTyped/tree/types-2.0/ldapjs
///
+import { EventEmitter } from "events";
+
export interface Error {
code: number;
name: string;
message: string;
}
+export interface ErrorCallback {
+ (error: Error): void;
+}
+
+export interface CompareCallback {
+ (error: Error, matched?: boolean): void;
+}
+
+export interface ExopCallback {
+ (error: Error, value: string, result?: any): void;
+}
+
export interface CallBack {
(error: Error, result?: any): void;
}
export interface ClientOptions {
url: string;
+ tlsOptions?: Object;
socketPath?: string;
log?: any;
timeout?: number;
connectTimeout?: number;
- maxConnections?: number;
+ idleTimeout?: number;
+ reconnect?: boolean | {
+ initialDelay?: number,
+ maxDelay?: number,
+ failAfter?: number
+ };
+ strictDN?: boolean;
+ queueSize?: number;
+ queueTimeout?: number;
+ queueDisable?: boolean;
bindDN?: string;
bindCredentials?: string;
- checkInterval?: number;
- maxIdleTime?: number;
}
export interface SearchOptions {
scope?: string;
filter?: string;
attributes?: string[];
- attrsOnly?: boolean;
sizeLimit?: number;
timeLimit?: number;
+ derefAliases?: number;
+ typesOnly?: boolean;
+ paged?: boolean | {
+ pageSize?: number;
+ pagePause?: boolean;
+ }
+}
+
+export interface Change {
+ operation: string;
+ modification: {
+ [key: string]: any;
+ };
}
export interface SearchCallBack {
- (error: Error, result: NodeJS.EventEmitter): void;
+ (error: Error, result: EventEmitter): void;
}
-export interface Client {
+export type Control = any;
+
+export interface Client extends EventEmitter {
+
+ connected: boolean;
+
/**
* Performs a simple authentication against the server.
*
- * @param name the DN to bind as.
- * @param credentials the userPassword associated with name.
+ * @param dn the DN to bind as.
+ * @param password the userPassword associated with name.
* @param controls (optional) either a Control or [Control].
* @param callback callback of the form f(err, res).
* @throws {TypeError} on invalid input.
*/
bind(dn: string, password: string, callback: CallBack): void;
+ bind(dn: string, password: string, controls: Control | Array, callback: CallBack): void;
+
+ /**
+ * Adds an entry to the LDAP server.
+ *
+ * Entry can be either [Attribute] or a plain JS object where the
+ * values are either a plain value or an array of values. Any value (that's
+ * not an array) will get converted to a string, so keep that in mind.
+ *
+ * @param name the DN of the entry to add.
+ * @param entry an array of Attributes to be added or a JS object.
+ * @param controls (optional) either a Control or [Control].
+ * @param callback of the form f(err, res).
+ * @throws {TypeError} on invalid input.
+ */
+ add(name: string, entry: Object, callback: ErrorCallback): void;
+ add(name: string, entry: Object, controls: Control | Array, callback: ErrorCallback): void;
+
+ /**
+ * Compares an attribute/value pair with an entry on the LDAP server.
+ *
+ * @param name the DN of the entry to compare attributes with.
+ * @param attr name of an attribute to check.
+ * @param value value of an attribute to check.
+ * @param controls (optional) either a Control or [Control].
+ * @param callback of the form f(err, boolean, res).
+ * @throws {TypeError} on invalid input.
+ */
+ compare(name: string, attr: string, value: string, callback: CompareCallback): void;
+ compare(name: string, attr: string, value: string, controls: Control | Array, callback: CompareCallback): void;
+
+ /**
+ * Deletes an entry from the LDAP server.
+ *
+ * @param name the DN of the entry to delete.
+ * @param controls (optional) either a Control or [Control].
+ * @param callback of the form f(err, res).
+ * @throws {TypeError} on invalid input.
+ */
+ del(name: string, callback: ErrorCallback): void;
+ del(name: string, controls: Control | Array, callback: ErrorCallback): void;
+
+ /**
+ * Performs an extended operation on the LDAP server.
+ *
+ * Pretty much none of the LDAP extended operations return an OID
+ * (responseName), so I just don't bother giving it back in the callback.
+ * It's on the third param in `res` if you need it.
+ *
+ * @param name the OID of the extended operation to perform.
+ * @param value value to pass in for this operation.
+ * @param controls (optional) either a Control or [Control].
+ * @param callback of the form f(err, value, res).
+ * @throws {TypeError} on invalid input.
+ */
+ exop(name: string, value: string, callback: ExopCallback): void;
+ exop(name: string, value: string, controls: Control | Array, callback: ExopCallback): void;
+
+ /**
+ * Performs an LDAP modify against the server.
+ *
+ * @param name the DN of the entry to modify.
+ * @param change update to perform (can be [Change]).
+ * @param controls (optional) either a Control or [Control].
+ * @param callback of the form f(err, res).
+ * @throws {TypeError} on invalid input.
+ */
+ modify(name: string, change: Change | Array, callback: ErrorCallback): void;
+ modify(name: string, change: Change | Array, controls: Control | Array, callback: ErrorCallback): void;
+
+ /**
+ * Performs an LDAP modifyDN against the server.
+ *
+ * This does not allow you to keep the old DN, as while the LDAP protocol
+ * has a facility for that, it's stupid. Just Search/Add.
+ *
+ * This will automatically deal with "new superior" logic.
+ *
+ * @param {String} name the DN of the entry to modify.
+ * @param {String} newName the new DN to move this entry to.
+ * @param {Control} controls (optional) either a Control or [Control].
+ * @param {Function} callback of the form f(err, res).
+ * @throws {TypeError} on invalid input.
+ */
+ modifyDN(name: string, newName: string, callback: ErrorCallback): void;
+ modifyDN(name: string, newName: string, controls: Control | Array, callback: ErrorCallback): void;
/**
* Performs an LDAP search against the server.
@@ -67,16 +192,21 @@ export interface Client {
* back, and the latter will emit a normal LDAPResult object.
*
* @param {String} base the DN in the tree to start searching at.
- * @param {Object} options parameters:
- * - {String} scope default of 'base'.
- * - {String} filter default of '(objectclass=*)'.
- * - {Array} attributes [string] to return.
- * - {Boolean} attrsOnly whether to return values.
+ * @param {SearchOptions} options parameters
* @param {Control} controls (optional) either a Control or [Control].
* @param {Function} callback of the form f(err, res).
* @throws {TypeError} on invalid input.
*/
search(base: string, options: SearchOptions, callback: SearchCallBack): void;
+ search(base: string, options: SearchOptions, callback: SearchCallBack, _bypass: boolean): void;
+ search(base: string, options: SearchOptions, controls: Control | Array, callback: SearchCallBack): void;
+ search(base: string, options: SearchOptions, controls: Control | Array, callback: SearchCallBack, _bypass: boolean): void;
+
+ /**
+ * Attempt to secure connection with StartTLS.
+ */
+ starttls(options: Object, controls: Control | Array, callback: CallBack): void;
+ starttls(options: Object, controls: Control | Array, callback: CallBack, _bypass: boolean): void;
/**
* Unbinds this client from the LDAP server.
@@ -87,7 +217,20 @@ export interface Client {
* @param {Function} callback of the form f(err).
* @throws {TypeError} if you pass in callback as not a function.
*/
- unbind(callback: CallBack): void;
+ unbind(callback?: ErrorCallback): void;
+
+ /**
+ * Disconnect from the LDAP server and do not allow reconnection.
+ *
+ * If the client is instantiated with proper reconnection options, it's
+ * possible to initiate new requests after a call to unbind since the client
+ * will attempt to reconnect in order to fulfill the request.
+ *
+ * Calling destroy will prevent any further reconnection from occurring.
+ *
+ * @param {Object} err (Optional) error that was cause of client destruction
+ */
+ destroy(err?: any): void;
}
-export function createClient(options? : ClientOptions): Client;
+export function createClient(options?: ClientOptions): Client;