From 74128709f0737ced4b00428ea556dc27fd7a9d74 Mon Sep 17 00:00:00 2001 From: Eric Fredin Date: Thu, 3 Oct 2019 14:35:23 -0600 Subject: [PATCH 1/2] fix: add typings --- index.d.ts | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 144 insertions(+) create mode 100644 index.d.ts diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 00000000..f98f617a --- /dev/null +++ b/index.d.ts @@ -0,0 +1,143 @@ +import csrf from 'csrf'; + +declare class AuthResponse { + constructor(params: AuthResponse.AuthResponseParams); + getToken(): Token; + text(): string; + status(): number; + headers(): Object; + valid(): boolean; + getJson(): Object; + get_intuit_tid(): string; +} + +declare namespace AuthResponse { + export interface AuthResponseParams { + token?: Token; + response?: Response; + body?: string; + json?: Object; + intuit_tid?: string; + } +} + +declare class Token implements Token.TokenData { + latency: number; + accessToken(): string; + refreshToken(): string; + tokenType(): string; + getToken(): Token.TokenData; + setToken(tokenData: Token.TokenData): Token; + clearToken(): Token; + isAccessTokenValid(): boolean; + isRefreshTokenValid(): boolean; +} + +declare namespace Token { + export interface TokenData { + realmId: string; + token_type: string; + access_token: string; + refresh_token: string; + expires_in: number; + x_refresh_token_expires_in: number; + id_token: string; + createdAt: string; + } +} + +declare class OAuthClient { + constructor(config: OAuthClient.OAuthClientConfig); + authHeader(): string; + authorizeUri(params: OAuthClient.AuthorizeParams): string; + createError(e: Error, authResponse?: AuthResponse): OAuthClient.OAuthClientError; + createToken(uri: string): Promise; + generateOauth1Sign(params: OAuthClient.GenerateOAuth1SignParams): string; + getKeyFromJWKsURI(id_token: string, kid: string, request: Request): Promise; + getPublicKey(modulus: string, exponent: string): string; + getToken(): Token; + getTokenRequest(request: Request): Promise; + getUserInfo(params?: OAuthClient.GetUserInfoParams): Promise; + isAccessTokenValid(): boolean; + loadResponse(request: Request): Promise; + loadResponseFromJWKsURI(request: Request): Promise; + log(level: string, message: string, messageData: any): void; + makeApiCall(params?: OAuthClient.MakeApiCallParams): Promise; + migrate(params: OAuthClient.MigrateParams): Promise; + refresh(): Promise; + refreshUsingToken(refresh_token: string): Promise; + revoke(params?: OAuthClient.RevokeParams): Promise; + setToken(params: Token.TokenData): Token; + validateIdToken(params: OAuthClient.ValidateIdTokenParams): Promise; + validateToken(): void; +} + +declare namespace OAuthClient { + export interface OAuthClientConfig { + environment: string; + appSecret: string; + appKey: string; + cachePrefix?: string; + } + + export enum Environment { + sandbox = 'https://sandbox-quickbooks.api.intuit.com/', + production = 'https://quickbooks.api.intuit.com/' + } + + export enum AuthorizeScope { + Accounting = 'com.intuit.quickbooks.accounting', + Payment = 'com.intuit.quickbooks.payment', + Payroll = 'com.intuit.quickbooks.payroll', + TimeTracking = 'com.intuit.quickbooks.payroll.timetracking', + Benefits = 'com.intuit.quickbooks.payroll.benefits', + Profile = 'profile', + Email = 'email', + Phone = 'phone', + Address = 'address', + OpenId = 'openid', + Intuit_name = 'intuit_name' + } + + export interface AuthorizeParams { + scope: AuthorizeScope | AuthorizeScope[] | string; + state?: csrf; + } + + export interface RevokeParams { + access_token?: string; + refresh_token?: string; + } + + export interface GetUserInfoParams { } + + export interface MakeApiCallParams { + url: string; + } + + export interface MigrateParams extends GenerateOAuth1SignParams { + scope?: AuthorizeScope | AuthorizeScope[] | string; + } + + export interface GenerateOAuth1SignParams { + oauth_consumer_key: string; + oauth_consumer_secret: string; + access_token: string; + access_secret: string; + method: 'GET' | 'POST'; + uri: string; + } + + export interface ValidateIdTokenParams { + id_token?: string; + } + + export interface OAuthClientError extends Error { + intuit_tid: string; + authResponse: AuthResponse; + originalMessage: string; + error_description: string; + } +} + +export = OAuthClient; diff --git a/package.json b/package.json index 2f210a3b..f7a8176c 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.5.0", "description": "Intuit Node.js client for OAuth2.0 and OpenID", "main": "./src/OAuthClient.js", + "types": "./index.d.ts", "scripts": { "start": "node index.js", "karma": "karma start karma.conf.js", From 3deafd5e7dccbba33d70847e0fd4e5bbb613c4f3 Mon Sep 17 00:00:00 2001 From: Eric Fredin Date: Thu, 3 Oct 2019 14:46:12 -0600 Subject: [PATCH 2/2] fix: response type --- index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index f98f617a..0100cd73 100644 --- a/index.d.ts +++ b/index.d.ts @@ -68,7 +68,7 @@ declare class OAuthClient { refreshUsingToken(refresh_token: string): Promise; revoke(params?: OAuthClient.RevokeParams): Promise; setToken(params: Token.TokenData): Token; - validateIdToken(params: OAuthClient.ValidateIdTokenParams): Promise; + validateIdToken(params: OAuthClient.ValidateIdTokenParams): Promise; validateToken(): void; }