UNPKG

@targetprocess/sync-shared-model

Version:

Shared model for Targetprocess entity sync

104 lines (103 loc) 3.03 kB
import { FieldModification } from './fields'; export * from './fields'; export * from './constants'; export declare type ToolRef = { id: string; type: string; }; export declare type EntityRef = { sourceId: string; entityType: string; }; export declare type EventType = 'EntityChanged' | 'SingleEntityChanged' | 'RelationAdded' | 'RelationRemoved'; export declare type ComputationContext = { originatorId: string; parentComputationId?: string; }; export declare type BaseEvent = { id: string; account: string; toolRef: ToolRef; type: EventType; timestamps?: EventTimestamps; author?: EntityRef | undefined; computationContext: ComputationContext; }; export declare type EventTimestamps = { generatedAt: number; receivedAt: number; convertedAt: number; }; export declare type EntityChangeEvent = BaseEvent & { entities: EntityDelta[]; type: 'EntityChanged'; }; export declare type SingleEntityChangeEvent = BaseEvent & { entityChange: EntityDelta; type: 'SingleEntityChanged'; }; export declare type Relation = { relationType: string; propertyName?: string; direction?: RelationDirection; }; export declare enum RelationDirection { Inbound = "Inbound", Outbound = "Outbound" } export declare type EntityRelation = Relation & EntityRef; export declare type RelationEvent = BaseEvent & { type: 'RelationAdded' | 'RelationRemoved'; source: EntityRef; relations: EntityRelation[]; }; export declare type EntityFields = { state?: EntityState; }; export declare type Entity = EntityRef & EntityFields; export declare type EntityState = { sourceId: string; name: string; isInitial: boolean; isPlanned: boolean; isFinal: boolean; }; export declare type EntityModification = 'Created' | 'Updated' | 'Deleted'; export declare type EntityDelta = { entity: Entity; modification?: EntityModification | undefined; changed?: any | undefined; original?: any | undefined; changedFields?: string[] | undefined; }; export declare type EntityCommandType = 'Update' | 'RelationAdded' | 'RelationRemoved'; export declare type CommandTimestamps = { createdAt: number; }; export declare type EntityChangeCommandBase = { account: string; rule: Rule; computationContext: ComputationContext; toolRef: ToolRef; name: EntityCommandType; entity: EntityRef; timestamps?: CommandTimestamps; event: { id: string; timestamps: EventTimestamps; }; }; export declare type UpdateEntityCommand = EntityChangeCommandBase & { name: 'Update'; payload?: any; fieldModifications: FieldModification[]; }; export declare type RelationCommand = EntityChangeCommandBase & { name: 'RelationAdded' | 'RelationRemoved'; relations: EntityRelation[]; }; export declare type Rule = { id: string; }; export declare function getEntityIdentity(entity: EntityRef, tool: ToolRef): string; export declare function getToolIdentity(tool: ToolRef): string;