diff --git a/types/cloud-config-client/cloud-config-client-tests.ts b/types/cloud-config-client/cloud-config-client-tests.ts new file mode 100644 index 0000000000..10c85efcf3 --- /dev/null +++ b/types/cloud-config-client/cloud-config-client-tests.ts @@ -0,0 +1,29 @@ +import client = require('cloud-config-client'); + +client.load({ + name: 'invoices' +}).then(config => { + const conf = config; // $ExpectType Config + const value1 = config.get('this.is.a.key'); // $ExpectType any +}); + +// Async through IFFE + +(async () => { + const config = await client.load({name: 'invoices'}); // $ExpectType Config +})(); + +// With additional options + +client.load({ + name: 'invoices', + profiles: ['profile1', 'profile2'], + label: 'label', + auth: { + pass: 'password', + user: 'admin', + } +}).then(config => { + const conf = config; // $ExpectType Config + const value1 = config.get('this.is.a.key'); // $ExpectType any +}); diff --git a/types/cloud-config-client/index.d.ts b/types/cloud-config-client/index.d.ts new file mode 100644 index 0000000000..c5ed9efe79 --- /dev/null +++ b/types/cloud-config-client/index.d.ts @@ -0,0 +1,65 @@ +// Type definitions for cloud-config-client 1.4 +// Project: https://github.com/victorherraiz/cloud-config-client#readme +// Definitions by: Jeroen Claassens +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 + +/// + +import http = require('http'); +import https = require('https'); + +export function load(options: Options, callback?: LoadCallback): Promise; + +export abstract class Config { + constructor(data: ConfigData, context: { [key: string]: any }); + + properties(): { [key: string]: any }; + raw(): { [key: string]: any }; + get(keyParts: string): any; + forEach(callback: (property: string, value: string) => void, includeOverridden?: boolean): void; + toObject(): { [key: string]: any }; + toString(spaces: number): string; +} + +export interface ConfigFile { + name: string; + source: ConfigSource; +} + +export interface ConfigSource { + [key: string]: any; +} + +export interface ConfigData { + name: string; + profiles: string[]; + label: string; + version: string; + propertySources: ConfigFile[]; +} + +export interface Auth { + user: string; + pass: string; +} + +export interface Options { + endpoint?: string; + rejectUnauthorized?: boolean; + + /** @deprecated use name */ + application?: string; + name: string; + profiles?: string | string[]; + label?: string; + auth?: Auth; + agent?: http.Agent | https.Agent; + context?: { + [key: string]: any + }; +} + +export interface LoadCallback { + (error: Error, config?: Config): void; +} diff --git a/types/cloud-config-client/tsconfig.json b/types/cloud-config-client/tsconfig.json new file mode 100644 index 0000000000..63bbf2b699 --- /dev/null +++ b/types/cloud-config-client/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "cloud-config-client-tests.ts" + ] +} diff --git a/types/cloud-config-client/tslint.json b/types/cloud-config-client/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/cloud-config-client/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }