diff --git a/dist/oidc-client.d.ts/index.d.ts b/dist/oidc-client.d.ts/index.d.ts new file mode 100644 index 00000000..fc4e8d09 --- /dev/null +++ b/dist/oidc-client.d.ts/index.d.ts @@ -0,0 +1,386 @@ +/* Provides a namespace for when the library is loaded outside a module loader environment */ +export as namespace Oidc; + +export interface Logger { + error(message?: any, ...optionalParams: any[]): void; + info(message?: any, ...optionalParams: any[]): void; + debug(message?: any, ...optionalParams: any[]): void; + warn(message?: any, ...optionalParams: any[]): void; +} + +export interface AccessTokenEvents { + + load(container: User): void; + + unload(): void; + + addAccessTokenExpiring(callback: (...ev: any[]) => void): void; + removeAccessTokenExpiring(callback: (...ev: any[]) => void): void; + + addAccessTokenExpired(callback: (...ev: any[]) => void): void; + removeAccessTokenExpired(callback: (...ev: any[]) => void): void; +} + +export class InMemoryWebStorage { + getItem(key: string): any; + + setItem(key: string, value: any): any; + + removeItem(key: string): any; + + key(index: number): any; + + length?: number; +} + +export class Log { + static readonly NONE: number; + static readonly ERROR: number; + static readonly WARN: number; + static readonly INFO: number; + static readonly DEBUG: number; + + static reset(): void; + + static level: number; + + static logger: Logger; + + static debug(message?: any, ...optionalParams: any[]): void; + static info(message?: any, ...optionalParams: any[]): void; + static warn(message?: any, ...optionalParams: any[]): void; + static error(message?: any, ...optionalParams: any[]): void; +} + +export interface MetadataService { + new (settings: OidcClientSettings): MetadataService; + + metadataUrl?: string; + + getMetadata(): Promise; + + getIssuer(): Promise; + + getAuthorizationEndpoint(): Promise; + + getUserInfoEndpoint(): Promise; + + getTokenEndpoint(): Promise; + + getCheckSessionIframe(): Promise; + + getEndSessionEndpoint(): Promise; + + getRevocationEndpoint(): Promise; + + getKeysEndpoint(): Promise; + + getSigningKeys(): Promise; +} + +export interface MetadataServiceCtor { + (settings: OidcClientSettings, jsonServiceCtor?: any): MetadataService; +} + +export interface ResponseValidator { + validateSigninResponse(state: any, response: any): Promise; + validateSignoutResponse(state: any, response: any): Promise; +} + +export interface ResponseValidatorCtor { + (settings: OidcClientSettings, metadataServiceCtor?: MetadataServiceCtor, userInfoServiceCtor?: any): ResponseValidator; +} + +export interface SigninRequest { + url: string; + state: any; +} + +export interface SignoutRequest { + url: string; + state?: any; +} + +export class OidcClient { + constructor(settings: OidcClientSettings); + + readonly settings: OidcClientSettings; + + createSigninRequest(args?: any): Promise; + processSigninResponse(url?: string, stateStore?: StateStore): Promise; + + createSignoutRequest(args?: any): Promise; + processSignoutResponse(url?: string, stateStore?: StateStore): Promise; + + clearStaleState(stateStore: StateStore): Promise; + + readonly metadataService: MetadataService; +} + +export interface OidcClientSettings { + authority?: string; + readonly metadataUrl?: string; + metadata?: any; + signingKeys?: any[]; + client_id?: string; + client_secret?: string; + readonly response_type?: string; + readonly response_mode?: string; + readonly scope?: string; + readonly redirect_uri?: string; + readonly post_logout_redirect_uri?: string; + readonly popup_post_logout_redirect_uri?: string; + readonly prompt?: string; + readonly display?: string; + readonly max_age?: number; + readonly ui_locales?: string; + readonly acr_values?: string; + readonly filterProtocolClaims?: boolean; + readonly loadUserInfo?: boolean; + readonly staleStateAge?: number; + readonly clockSkew?: number; + readonly stateStore?: StateStore; + readonly userInfoJwtIssuer?: 'ANY' | 'OP' | string; + ResponseValidatorCtor?: ResponseValidatorCtor; + MetadataServiceCtor?: MetadataServiceCtor; + extraQueryParams?: {}; +} + +export class UserManager extends OidcClient { + constructor(settings: UserManagerSettings); + + readonly settings: UserManagerSettings; + + clearStaleState(): Promise; + + getUser(): Promise; + storeUser(user:User): Promise; + removeUser(): Promise; + + signinPopup(args?: any): Promise; + signinPopupCallback(url?: string): Promise; + + signinSilent(args?: any): Promise; + signinSilentCallback(url?: string): Promise; + + signinRedirect(args?: any): Promise; + signinRedirectCallback(url?: string): Promise; + + signoutRedirect(args?: any): Promise; + signoutRedirectCallback(url?: string): Promise; + + signoutPopup(args?: any): Promise; + signoutPopupCallback(url?: string, keepOpen?: boolean): Promise; + signoutPopupCallback(keepOpen?: boolean): Promise; + + querySessionStatus(args?: any): Promise; + + revokeAccessToken(): Promise; + + startSilentRenew(): void; + stopSilentRenew(): void; + + events: UserManagerEvents; +} + +export interface UserManagerEvents extends AccessTokenEvents { + load(user: User): any; + unload(): any; + + addUserLoaded(callback: (...ev: any[]) => void): void; + removeUserLoaded(callback: (...ev: any[]) => void): void; + + addUserUnloaded(callback: (...ev: any[]) => void): void; + removeUserUnloaded(callback: (...ev: any[]) => void): void; + + addSilentRenewError(callback: (...ev: any[]) => void): void; + removeSilentRenewError(callback: (...ev: any[]) => void): void; + + addUserSignedOut(callback: (...ev: any[]) => void): void; + removeUserSignedOut(callback: (...ev: any[]) => void): void; + + addUserSessionChanged(callback: (...ev: any[]) => void): void; + removeUserSessionChanged(callback: (...ev: any[]) => void): void; +} + +export interface UserManagerSettings extends OidcClientSettings { + readonly popup_redirect_uri?: string; + readonly popupWindowFeatures?: string; + readonly popupWindowTarget?: any; + readonly silent_redirect_uri?: any; + readonly silentRequestTimeout?: any; + readonly automaticSilentRenew?: boolean; + readonly includeIdTokenInSilentRenew?: boolean; + readonly monitorSession?: boolean; + readonly checkSessionInterval?: number; + readonly query_status_response_type?: string; + readonly stopCheckSessionOnError?: boolean; + readonly revokeAccessTokenOnSignout?: any; + readonly accessTokenExpiringNotificationTime?: number; + readonly redirectNavigator?: any; + readonly popupNavigator?: any; + readonly iframeNavigator?: any; + readonly userStore?: any; +} + +export interface WebStorageStateStoreSettings { + prefix?: string; + store?: any; +} + +export interface StateStore { + set(key: string, value: any): Promise; + + get(key: string): Promise; + + remove(key: string): Promise; + + getAllKeys(): Promise; +} + +export class WebStorageStateStore implements StateStore { + constructor(settings: WebStorageStateStoreSettings); + + set(key: string, value: any): Promise; + + get(key: string): Promise; + + remove(key: string): Promise; + + getAllKeys(): Promise; +} + +export interface SigninResponse { + new (url: string, delimiter?: string): SigninResponse; + + access_token: string; + code: string; + error: string; + error_description: string; + error_uri: string; + id_token: string; + profile: any; + scope: string; + session_state: any; + state: any; + token_type: string; + + readonly expired: boolean | undefined; + readonly expires_in: number | undefined; + readonly isOpenIdConnect: boolean; + readonly scopes: string[]; +} + +export interface SignoutResponse { + new (url: string): SignoutResponse; + + error: string; + error_description: string; + error_uri: string; + state: any; +} + +export interface UserSettings { + id_token: string; + session_state: any; + access_token: string; + refresh_token: string; + token_type: string; + scope: string; + profile: any; + expires_at: number; + state: any; +} + +export class User { + constructor(settings: UserSettings); + + id_token: string; + session_state: any; + access_token: string; + refresh_token: string; + token_type: string; + scope: string; + profile: any; + expires_at: number; + state: any; + + toStorageString(): string; + + readonly expires_in: number | undefined; + readonly expired: boolean | undefined; + readonly scopes: string[]; +} + +export class CordovaPopupWindow { + constructor(params: any); + navigate(params: any): Promise; + promise: Promise; +} + +export class CordovaPopupNavigator { + prepare(params: any): Promise; +} + +export class CordovaIFrameNavigator { + prepare(params: any): Promise; +} + + +export interface OidcMetadata { + issuer: string; + authorization_endpoint:string; + token_endpoint: string; + token_endpoint_auth_methods_supported:string[]; + token_endpoint_auth_signing_alg_values_supported: string[]; + userinfo_endpoint: string; + check_session_iframe: string; + end_session_endpoint: string; + jwks_uri: string; + registration_endpoint: string; + scopes_supported: string[]; + response_types_supported: string[]; + acr_values_supported: string[]; + subject_types_supported: string[]; + userinfo_signing_alg_values_supported: string[]; + userinfo_encryption_alg_values_supported: string[]; + userinfo_encryption_enc_values_supported: string[]; + id_token_signing_alg_values_supported: string[]; + id_token_encryption_alg_values_supported: string[]; + id_token_encryption_enc_values_supported: string[]; + request_object_signing_alg_values_supported: string[]; + display_values_supported: string[]; + claim_types_supported: string[]; + claims_supported: string[]; + claims_parameter_supported: boolean; + service_documentation: string; + ui_locales_supported: string[]; + + revocation_endpoint: string; + introspection_endpoint: string; + frontchannel_logout_supported: boolean; + frontchannel_logout_session_supported: boolean; + backchannel_logout_supported: boolean; + backchannel_logout_session_supported: boolean; + grant_types_supported: string[]; + response_modes_supported: string[]; + code_challenge_methods_supported: string[]; +} + +export interface CheckSessionIFrame { + new (callback: () => void, client_id: string, url: string, interval?: number, stopOnError?: boolean): CheckSessionIFrame + + load(): Promise; + + start(session_state: string): void; + + stop(): void; +} + +export interface CheckSessionIFrameCtor { + (callback: () => void, client_id: string, url: string, interval?: number, stopOnError?: boolean): CheckSessionIFrame; +} + +export class SessionMonitor { + constructor(userManager: UserManager, CheckSessionIFrameCtor: CheckSessionIFrameCtor); +} diff --git a/gulpfile.js b/gulpfile.js index ac24ebc5..bd7b16aa 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -159,8 +159,14 @@ function build_jsrsasign(){ .pipe(gulp.dest('jsrsasign/dist/')); } +function copy_ts(){ + return gulp.src('index.d.ts') + .pipe(gulp.dest('dist/oidc-client.d.ts')); +} + // putting it all together -//gulp.task('build', ['build-lib-sourcemap','build-lib-min','build-dist-sourcemap','build-dist-min']); exports.default = gulp.series( build_jsrsasign, - gulp.parallel(build_lib_sourcemap, build_lib_min, build_dist_sourcemap, build_dist_min)); + gulp.parallel(build_lib_sourcemap, build_lib_min, build_dist_sourcemap, build_dist_min), + copy_ts +);