From 70d843fd2fd329ad7e3ab49364cfa5bf437643cb Mon Sep 17 00:00:00 2001 From: Daan Boerlage Date: Mon, 26 Nov 2018 19:50:25 +0100 Subject: [PATCH 1/3] Add Typings for microservice-utilities --- types/microservice-utilities/index.d.ts | 84 +++++++++++++++++++ .../microservice-utilities-tests.ts | 13 +++ types/microservice-utilities/tsconfig.json | 23 +++++ types/microservice-utilities/tslint.json | 3 + 4 files changed, 123 insertions(+) create mode 100644 types/microservice-utilities/index.d.ts create mode 100644 types/microservice-utilities/microservice-utilities-tests.ts create mode 100644 types/microservice-utilities/tsconfig.json create mode 100644 types/microservice-utilities/tslint.json diff --git a/types/microservice-utilities/index.d.ts b/types/microservice-utilities/index.d.ts new file mode 100644 index 0000000000..e8ccb9284e --- /dev/null +++ b/types/microservice-utilities/index.d.ts @@ -0,0 +1,84 @@ +// Type definitions for microservice-utilities 0.1 +// Project: https://github.com/Cimpress-MCP/microservice-utilities.js +// Definitions by: Daan Boerlage +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +/** + * Authorizer + */ + +export interface AuthorizerConfiguration { + jwkKeyListUrl: string; + authorizerContextResolver?: string; +} + +export interface AuthorizerPolicy { + principalId: string; + policyDocument: object; +} + +export class Authorizer { + constructor(logFunction: (msg: any) => void, configuration: AuthorizerConfiguration); + getPolicy(request: object): Promise; +} + +/** + * PlatformClient + */ + +export interface PlatformClientConfiguration { + client: object; +} + +export interface PlatformClientResponse { + data?: any; + status: number; + statusText: string; + headers: any; + config: object; + request?: any; +} + +export class PlatformClient { + constructor(logFunction: (msg: any) => void, tokenResolverFunction?: Promise<() => string>, configuration?: PlatformClientConfiguration) + get(url: string, headers?: object, type?: string): Promise; + post(url: string, data: object, headers?: object): Promise; + put(url: string, data: object, headers?: object): Promise; + patch(url: string, data: object, headers?: object): Promise; + delete(url: string, headers?: object): Promise; + head(url: string, headers?: object): Promise; + options(url: string, headers?: object): Promise; +} + +/** + * RequestLogger + */ + +export interface RequestLoggerConfiguration { + logFunction?: (msg: any) => void; + extendErrorObjects?: boolean; + jsonSpace?: number; +} + +export class RequestLogger { + constructor(configuration?: RequestLoggerConfiguration); + log(msg: any): void; +} + +/** + * ServiceTokenProvider + */ + +export interface ServiceTokenProviderConfiguration { + clientId: string; + encryptedClientSecret: string; + audience: string; + tokenEndpoint: string; +} + +export class ServiceTokenProvider { + constructor(httpClient: object, kmsClient: object, configuration?: ServiceTokenProviderConfiguration); + getToken(): Promise; + getTokenWithoutCache(): Promise; +} diff --git a/types/microservice-utilities/microservice-utilities-tests.ts b/types/microservice-utilities/microservice-utilities-tests.ts new file mode 100644 index 0000000000..3563e7fa8e --- /dev/null +++ b/types/microservice-utilities/microservice-utilities-tests.ts @@ -0,0 +1,13 @@ +import { Authorizer, PlatformClient, RequestLogger, ServiceTokenProvider } from 'microservice-utilities'; + +const authorizer = new Authorizer((msg: any) => msg, {jwkKeyListUrl: 'aaa'}); +const authorizerPolicy = authorizer.getPolicy({test: true}); + +const platformClient = new PlatformClient((msg: any) => msg); +platformClient.get('https://www.typescriptlang.org/'); +platformClient.post('https://www.typescriptlang.org/', {testData: 'abc'}); + +const serviceTokenProvider = new ServiceTokenProvider(platformClient, {}); + +const requestLogger = new RequestLogger({jsonSpace: 4}); +requestLogger.log('hello world'); diff --git a/types/microservice-utilities/tsconfig.json b/types/microservice-utilities/tsconfig.json new file mode 100644 index 0000000000..1e1845c7e8 --- /dev/null +++ b/types/microservice-utilities/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": false, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "microservice-utilities-tests.ts" + ] +} diff --git a/types/microservice-utilities/tslint.json b/types/microservice-utilities/tslint.json new file mode 100644 index 0000000000..f93cf8562a --- /dev/null +++ b/types/microservice-utilities/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +} From de00f487a807ae96036e82b11a60c187f62a12ec Mon Sep 17 00:00:00 2001 From: Daan Boerlage Date: Tue, 27 Nov 2018 19:09:57 +0100 Subject: [PATCH 2/3] [microservice-utilities] Add a type for flat object with string for the header object in PlatformClient --- types/microservice-utilities/index.d.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/types/microservice-utilities/index.d.ts b/types/microservice-utilities/index.d.ts index e8ccb9284e..7b2c4be923 100644 --- a/types/microservice-utilities/index.d.ts +++ b/types/microservice-utilities/index.d.ts @@ -42,13 +42,13 @@ export interface PlatformClientResponse { export class PlatformClient { constructor(logFunction: (msg: any) => void, tokenResolverFunction?: Promise<() => string>, configuration?: PlatformClientConfiguration) - get(url: string, headers?: object, type?: string): Promise; - post(url: string, data: object, headers?: object): Promise; - put(url: string, data: object, headers?: object): Promise; - patch(url: string, data: object, headers?: object): Promise; - delete(url: string, headers?: object): Promise; - head(url: string, headers?: object): Promise; - options(url: string, headers?: object): Promise; + get(url: string, headers?: { [s: string]: string; }, type?: string): Promise; + post(url: string, data: object, headers?: { [s: string]: string; }): Promise; + put(url: string, data: object, headers?: { [s: string]: string; }): Promise; + patch(url: string, data: object, headers?: { [s: string]: string; }): Promise; + delete(url: string, headers?: { [s: string]: string; }): Promise; + head(url: string, headers?: { [s: string]: string; }): Promise; + options(url: string, headers?: { [s: string]: string; }): Promise; } /** From a4682d23b072fc58c9cf3333d3a35c5753808d41 Mon Sep 17 00:00:00 2001 From: runebaas Date: Sat, 8 Dec 2018 01:39:53 +0100 Subject: [PATCH 3/3] [microservice-utilities] Rewrite example file --- .../microservice-utilities-tests.ts | 20 +++++++++++-------- types/microservice-utilities/tsconfig.json | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/types/microservice-utilities/microservice-utilities-tests.ts b/types/microservice-utilities/microservice-utilities-tests.ts index 3563e7fa8e..969e5e44d4 100644 --- a/types/microservice-utilities/microservice-utilities-tests.ts +++ b/types/microservice-utilities/microservice-utilities-tests.ts @@ -1,13 +1,17 @@ import { Authorizer, PlatformClient, RequestLogger, ServiceTokenProvider } from 'microservice-utilities'; -const authorizer = new Authorizer((msg: any) => msg, {jwkKeyListUrl: 'aaa'}); -const authorizerPolicy = authorizer.getPolicy({test: true}); +(async (): Promise => { + const authorizer = new Authorizer((msg: any) => msg, { jwkKeyListUrl: 'aaa' }); + const authorizerPolicy = authorizer.getPolicy({ test: true }); -const platformClient = new PlatformClient((msg: any) => msg); -platformClient.get('https://www.typescriptlang.org/'); -platformClient.post('https://www.typescriptlang.org/', {testData: 'abc'}); + const platformClient = new PlatformClient((msg: any) => msg); + const result = await platformClient.get('https://www.typescriptlang.org/'); + const data = result.data as string; -const serviceTokenProvider = new ServiceTokenProvider(platformClient, {}); + platformClient.post('https://www.typescriptlang.org/', { testData: 'abc' }); -const requestLogger = new RequestLogger({jsonSpace: 4}); -requestLogger.log('hello world'); + const serviceTokenProvider = new ServiceTokenProvider(platformClient, {}); + + const requestLogger = new RequestLogger({ jsonSpace: 4 }); + requestLogger.log('hello world'); +})(); diff --git a/types/microservice-utilities/tsconfig.json b/types/microservice-utilities/tsconfig.json index 1e1845c7e8..db45fd6d19 100644 --- a/types/microservice-utilities/tsconfig.json +++ b/types/microservice-utilities/tsconfig.json @@ -7,7 +7,7 @@ "noImplicitAny": true, "noImplicitThis": true, "strictNullChecks": true, - "strictFunctionTypes": false, + "strictFunctionTypes": true, "baseUrl": "../", "typeRoots": [ "../"