mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-11 12:30:18 +00:00
[ldapjs-client] Basic Typings (#36243)
* initialized ldapjs-client typings * client is a Class, not a factory function * removed JSDOC, fixed linting * fix tsconfig and typescript version. lint should go green * removing unnecessary generic * unknown type is supported after TS 3.0 * enabling npm-naming and complying to it * exporting interface in commonjs style, and minor cleanup
This commit is contained in:
committed by
Daniel Rosenwasser
parent
9b1985e52f
commit
eae899753b
Vendored
+88
@@ -0,0 +1,88 @@
|
||||
// Type definitions for ldapjs-client 0.1
|
||||
// Project: https://github.com/zont/ldapjs-client#readme
|
||||
// Definitions by: Valerio Coltrè <https://github.com/colthreepv>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 3.0
|
||||
|
||||
declare namespace LdapClient {
|
||||
interface Change {
|
||||
operation: 'add' | 'delete' | 'replace';
|
||||
modification: {
|
||||
[key: string]: any;
|
||||
};
|
||||
}
|
||||
|
||||
interface SearchOptions {
|
||||
scope?: string;
|
||||
filter?: string;
|
||||
attributes?: string[];
|
||||
sizeLimit?: number;
|
||||
timeLimit?: number;
|
||||
typesOnly?: boolean;
|
||||
}
|
||||
|
||||
interface ClientOptions {
|
||||
url: string;
|
||||
tlsOptions?: object;
|
||||
timeout?: number;
|
||||
}
|
||||
}
|
||||
|
||||
declare class LdapClient {
|
||||
constructor(options: LdapClient.ClientOptions);
|
||||
|
||||
/**
|
||||
* Adds an entry to the LDAP server.
|
||||
*/
|
||||
add(dn: string, entry: object): Promise<any>;
|
||||
|
||||
/**
|
||||
* Performs a simple authentication against the server.
|
||||
*/
|
||||
bind(dn: string, password: string): Promise<any>;
|
||||
|
||||
/**
|
||||
* Deletes an entry from the LDAP server.
|
||||
*/
|
||||
del(dn: string): Promise<any>;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
destroy(): Promise<void>;
|
||||
|
||||
/**
|
||||
* Performs an LDAP modify against the server.
|
||||
*
|
||||
* @param dn the DN of the entry to modify.
|
||||
* @param change update to perform (can be [Change]).
|
||||
*/
|
||||
modify(dn: string, change: LdapClient.Change): Promise<any>;
|
||||
|
||||
/**
|
||||
* Performs an LDAP modifyDN against the server.
|
||||
*/
|
||||
modifyDN(dn: string, newName: string): Promise<any>;
|
||||
|
||||
/**
|
||||
* Performs an LDAP search against the server.
|
||||
*
|
||||
* Note that the defaults for options are a 'base' search.
|
||||
*/
|
||||
// tslint:disable-next-line: no-unnecessary-generics
|
||||
search(base: string, options: LdapClient.SearchOptions): Promise<unknown[]>;
|
||||
|
||||
/**
|
||||
* Unbinds this client from the LDAP server.
|
||||
*
|
||||
*/
|
||||
unbind(): Promise<any>;
|
||||
}
|
||||
|
||||
export = LdapClient;
|
||||
@@ -0,0 +1,44 @@
|
||||
import LdapJS = require('ldapjs-client');
|
||||
|
||||
const clientOptions: LdapJS.ClientOptions = {
|
||||
url: 'ldap://anyserver:389',
|
||||
};
|
||||
|
||||
const client = new LdapJS(clientOptions);
|
||||
|
||||
const dn = 'cn=foo, o=example';
|
||||
|
||||
interface LdapObject {
|
||||
cn: string;
|
||||
ou: string;
|
||||
}
|
||||
|
||||
(async () => {
|
||||
await client.add(dn, { cn: 'foo' });
|
||||
|
||||
await client.bind(dn, 'pazzvord');
|
||||
await client.del(dn);
|
||||
|
||||
const change: LdapJS.Change = {
|
||||
operation: 'add',
|
||||
modification: {
|
||||
pets: ['cat', 'dog'],
|
||||
},
|
||||
};
|
||||
|
||||
await client.modify(dn, change);
|
||||
await client.modifyDN(dn, 'cn=baz, o=example');
|
||||
|
||||
const options: LdapJS.SearchOptions = {
|
||||
filter: '(&(l=Seattle)(email=*@foo.com))',
|
||||
scope: 'sub',
|
||||
attributes: ['dn', 'sn', 'cn'],
|
||||
};
|
||||
|
||||
const searchResult = await client.search(dn, options) as LdapObject[];
|
||||
type resultType = typeof searchResult;
|
||||
|
||||
await client.unbind();
|
||||
|
||||
client.destroy();
|
||||
})();
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictFunctionTypes": true,
|
||||
"strictNullChecks": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"ldapjs-client-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "dtslint/dt.json"
|
||||
}
|
||||
Reference in New Issue
Block a user