import { ENTITY_TYPE } from './constant'; import EntityModel, { IContextData } from './entity-model'; import { IApiOptions, IRefreshTargetMessage, ISdkInitOptions } from './interfaces'; export default class PWSDK { private parentOrigin; private instanceId; private options; private _win; static init(): PWSDK; static readonly version: string; /** * store deferred queues by name */ private deferredQueues; /** * store event callbacks by event name */ private events; private _context; /** * Creates an instance of PWSDK. * @param {*} [_win=window] has to be any type to support testing * @memberof PWSDK */ constructor(parentOrigin: string, instanceId: string, options: ISdkInitOptions, _win?: any); readonly win: Window; getContext(): Promise; saveContext(context: EntityModel): Promise; setAppUI(data: {}): void; showModal(params?: {}): void; closeModal(): void; /** * Allows developer to send message to another instance of its app * e.g. Sending data from modal to sidebar, so sidebar can display some data immediately * * @param target another instance/location of the app. '*' means broadcast to all other locations. */ publishMessage(messageType: string, target: string, msg?: {}): void; logActivity(activityType: number, details: string, activityDate?: number, refreshDelay?: number): Promise; createEntity(entityType: ENTITY_TYPE, entityData: object, refreshDelay?: number): Promise; relateEntity(entityType: ENTITY_TYPE, entityId: number, relateData: { id: number; type: ENTITY_TYPE; }, refreshDelay?: number): Promise; refreshUI(target: IRefreshTargetMessage): void; on(eventName: string, cb: () => any): void; trigger(eventName: string, data: {}): void; api(url: string, options?: IApiOptions): Promise; navigateToEntityDetail(entityType: string, entityId: number): Promise; private _getCachedContext(); private _postMessage(type, message?); private _listenMessage(); private _isOriginValid(event); private _enqueueDeferred(queueName, deferred); private _resolveDeferred(queueName, data); private _createContextModel({entityType, entityData, editableFields}); private _action({url, method, data, target}, delay); private _createDeferredMethod(queueName, executor); private _subscribeContextUpdated(); }