UNPKG

@mediarithmics/plugins-nodejs-sdk

Version:

This is the mediarithmics nodejs to help plugin developers bootstrapping their plugin without having to deal with most of the plugin boilerplate

69 lines (68 loc) 2.68 kB
import { BasePlugin } from '../common/BasePlugin'; import { ComputedFieldResource } from './ComputedFieldInterface'; export type OnUpdatePluginStatus = 'ok' | 'error'; export interface PluginResponse { status: OnUpdatePluginStatus; } export interface OnUpdatePluginResponse<S> extends PluginResponse { data: { state: S; }; } export interface OnUpdateBatchPluginResponse<S> extends PluginResponse { data: { state: S; }; } export interface BuildResultPluginResponse<R> extends PluginResponse { data: { result: R; }; } export interface BaseUserActivity { } export interface BaseUserProfile { } export interface BaseComputedField { } export type DataType = 'USER_ACTIVITY' | 'USER_PROFILE' | 'COMPUTED_FIELD'; export type Operation = 'UPSERT' | 'DELETE'; export interface Update { data_type: DataType; operation: Operation; data: BaseUserActivity | BaseUserProfile | BaseComputedField; } export interface RequestData<S> { computed_field_id: string; state: S; update: Update; } export interface RequestDataBatch<S> { computed_field_id: string; state: S; updates: Update[]; } export interface RequestResult<S> { computed_field_id: string; state: S; } export interface ComputedFieldBaseInstanceContext { computedField: ComputedFieldResource; } export declare abstract class ComputedFieldPlugin<State, Result, UserActivity extends BaseUserActivity, UserProfile extends BaseUserProfile, ComputedField extends BaseComputedField> extends BasePlugin<ComputedFieldBaseInstanceContext> { constructor(); abstract onUpdateActivity(state: State | null, userActivity: UserActivity, instanceContext: ComputedFieldBaseInstanceContext): State | null; abstract onUpdateUserProfile(state: State | null, userProfile: UserProfile, operation: Operation, instanceContext: ComputedFieldBaseInstanceContext): State | null; abstract onUpdateComputedField(state: State | null, computedField: ComputedField, instanceContext: ComputedFieldBaseInstanceContext): State | null; abstract buildResult(state: State | null, instanceContext: ComputedFieldBaseInstanceContext): Result | null; protected fetchComputedField(computedFieldId: string): Promise<ComputedFieldResource>; protected instanceContextBuilder(computedFieldId: string): Promise<ComputedFieldBaseInstanceContext>; protected getInstanceContext(computedFieldId: string): Promise<ComputedFieldBaseInstanceContext>; private getUpdateMethod; private onUpdateBatch; private formatResponse; private formatRequestData; private initUpdateRoute; private initUpdateBatchRoute; private initBuildResultRoute; }