@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
TypeScript
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;
}