diff --git a/types/node-vault/index.d.ts b/types/node-vault/index.d.ts new file mode 100644 index 0000000000..939da2bd2a --- /dev/null +++ b/types/node-vault/index.d.ts @@ -0,0 +1,127 @@ +// Type definitions for node-vault 0.5 +// Project: https://github.com/kr1sp1n/node-vault +// Definitions by: Jianrong Yu +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import * as mustache from "mustache"; +import * as request from "request"; + +declare namespace NodeVault { + interface Option { + [p: string]: any; + } + + interface RequestOption extends Option { + path: string; + method: string; + } + + interface functionConf { + method: string; + path: string; + schema?: { + req?: Option; + query?: Option; + res?: Option; + }; + } + + interface client { + handleVaultResponse(res?: { statusCode: number, request: Option, body: any }): Promise; + apiVersion: string; + endpoint: string; + token: string; + + request(requestOptions: RequestOption): Promise; + + help(path: string, requestOptions?: Option): Promise; + write(path: string, data: any, requestOptions?: Option): Promise; + read(path: string, requestOptions?: Option): Promise; + list(path: string, requestOptions?: Option): Promise; + delete(path: string, requestOptions?: Option): Promise; + + generateFunction(name: string, conf: functionConf): void; + + status(options?: Option): Promise; + initialized(options?: Option): Promise; + init(options?: Option): Promise; + unseal(options?: Option): Promise; + seal(options?: Option): Promise; + generateRootStatus(options?: Option): Promise; + generateRootInit(options?: Option): Promise; + generateRootCancel(options?: Option): Promise; + generateRootUpdate(options?: Option): Promise; + mounts(options?: Option): Promise; + mount(options?: Option): Promise; + unmount(options?: Option): Promise; + remount(options?: Option): Promise; + policies(options?: Option): Promise; + addPolicy(options?: Option): Promise; + getPolicy(options?: Option): Promise; + removePolicy(options?: Option): Promise; + auths(options?: Option): Promise; + enableAuth(options?: Option): Promise; + disableAuth(options?: Option): Promise; + audits(options?: Option): Promise; + enableAudit(options?: Option): Promise; + disableAudit(options?: Option): Promise; + renew(options?: Option): Promise; + revoke(options?: Option): Promise; + revokePrefix(options?: Option): Promise; + rotate(options?: Option): Promise; + githubLogin(options?: Option): Promise; + userpassLogin(options?: Option): Promise; + tokenAccessors(options?: Option): Promise; + tokenCreate(options?: Option): Promise; + tokenCreateOrphan(options?: Option): Promise; + tokenCreateRole(options?: Option): Promise; + tokenLookup(options?: Option): Promise; + tokenLookupAccessor(options?: Option): Promise; + tokenLookupSelf(options?: Option): Promise; + tokenRenew(options?: Option): Promise; + tokenRenewSelf(options?: Option): Promise; + tokenRevoke(options?: Option): Promise; + tokenRevokeAccessor(options?: Option): Promise; + tokenRevokeOrphan(options?: Option): Promise; + tokenRevokeSelf(options?: Option): Promise; + tokenRoles(options?: Option): Promise; + addTokenRole(options?: Option): Promise; + getTokenRole(options?: Option): Promise; + removeTokenRole(options?: Option): Promise; + approleRoles(options?: Option): Promise; + addApproleRole(options?: Option): Promise; + getApproleRole(options?: Option): Promise; + deleteApproleRole(options?: Option): Promise; + getApproleRoleId(options?: Option): Promise; + updateApproleRoleId(options?: Option): Promise; + getApproleRoleSecret(options?: Option): Promise; + approleSecretAccessors(options?: Option): Promise; + approleSecretLookup(options?: Option): Promise; + approleSecretDestroy(options?: Option): Promise; + approleSecretAccessorLookup(options?: Option): Promise; + approleSecretAccessorDestroy(options?: Option): Promise; + approleLogin(options?: Option): Promise; + health(options?: Option): Promise; + leader(options?: Option): Promise; + stepDown(options?: Option): Promise; + } + + interface VaultOptions { + debug?(...args: any[]): any; + tv4?(...args: any[]): any; + commands?: Array<{ method: string, path: string, scheme: any }>; + mustache?: MustacheStatic; + "request-promise"?: any; + Promise?: PromiseConstructor; + + apiVersion?: string; + endpoint?: string; + token?: string; + requestOptions?: request.CoreOptions; + } +} + +type GetClient = (options?: NodeVault.VaultOptions) => NodeVault.client; + +declare const getClient: GetClient; +export = getClient; diff --git a/types/node-vault/node-vault-tests.ts b/types/node-vault/node-vault-tests.ts new file mode 100644 index 0000000000..966fe4869b --- /dev/null +++ b/types/node-vault/node-vault-tests.ts @@ -0,0 +1,28 @@ +import * as nv from "node-vault"; + +// Test code came from the sample code in README of the module. +const options = { + apiVersion: 'v1', // default + endpoint: 'http://127.0.0.1:8200', // default + token: '1234', // optional client token; can be fetched after valid initialization of the server +}; + +// get new instance of the client +let vault = nv(options); + +// init vault server +vault.init({ secret_shares: 1, secret_threshold: 1 }) +.then( (result) => { + let keys = result.keys; + // set token for all following requests + vault.token = result.root_token; + // unseal vault server + return vault.unseal({ secret_shares: 1, key: keys[0] }); +}) +.catch(console.error); + +// write, read and delete secrets +vault.write('secret/hello', { value: 'world', lease: '1s' }) +.then( () => vault.read('secret/hello')) +.then( () => vault.delete('secret/hello')) +.catch(console.error); diff --git a/types/node-vault/tsconfig.json b/types/node-vault/tsconfig.json new file mode 100644 index 0000000000..272b66070e --- /dev/null +++ b/types/node-vault/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "node-vault-tests.ts" + ] +} diff --git a/types/node-vault/tslint.json b/types/node-vault/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/node-vault/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }