jsm-sdk
Version:
Sdk for JSM project
42 lines (40 loc) • 1.33 kB
TypeScript
declare module Jsm {
namespace Sdk {
type TSdkEvent =
| "request"
| "response"
| "error"
| "reinit"
| "refresh-token"
| "jwt-token-expired";
type TSdkEventPayload<Event extends TSdkEvent> = Event extends "request"
? Jsm.Core.Utils.Api.Request.Request
: Event extends "response"
? {
data?: object | Array<object>;
} & Jsm.Core.Utils.Api.Response.DefaultResponse &
Jsm.Core.Utils.Api.Response.PagedResponse
: Event extends "error"
? Jsm.Core.Utils.Api.Response.Error
: Event extends "reinit"
? never
: Event extends "refresh-token"
? never
: Event extends "jwt-token-expired"
? never
: never;
type TSdkEventHandler<Event extends TSdkEvent> = Event extends "request"
? (data: TSdkEventPayload<Event>) => void | PromiseLike<void>
: Event extends "response"
? (data: TSdkEventPayload<Event>) => void | PromiseLike<void>
: Event extends "error"
? (error: TSdkEventPayload<Event>) => void | PromiseLike<void>
: Event extends "reinit"
? () => void | PromiseLike<void>
: Event extends "refresh-token"
? () => void | PromiseLike<void>
: Event extends "jwt-token-expired"
? () => void | PromiseLike<void>
: never;
}
}