semantic-network
Version:
A utility library for manipulating a list of links that form a semantic interface to a network of resources.
43 lines (42 loc) • 1.77 kB
TypeScript
import { Resolver } from './resolver';
import { ResourceResolver } from './resourceResolver';
import { FieldResolver } from './fieldResolver';
import { LinkedRepresentation, RelationshipType } from 'semantic-link';
export type IsTrackedResolver = <T extends LinkedRepresentation | Partial<T>>(resource: T, field: keyof T) => boolean;
export type RelNameResolver = (resource: LinkedRepresentation) => string | undefined;
/**
* Options available when merging resource via a three-way merger
*/
export interface MergeOptions {
/**
* When merging resources, these are additional fields that can be added by default from the form resource.
*
* @remarks
* The current implementation always includes the 'name' attribute
*/
readonly defaultFields?: Extract<keyof Omit<LinkedRepresentation, 'links'>, string> | string[];
readonly resolver?: Resolver;
readonly resourceResolver?: ResourceResolver;
/**
* Default strategy {@see FieldResolverUtil.resourceResolverRelNameStrategy}
*/
readonly resourceResolverRelNameStrategy?: RelNameResolver;
readonly fieldResolver?: FieldResolver;
/**
* On resource state, there are fields that are added by the cache - these are tracked fields. This overrides the
* default implementation when needed which overwrites all fields.
* @deprecated
*/
readonly isTracked?: IsTrackedResolver;
/**
* When 'true' return 'undefined' from the edit merge rather than the merged document.
*/
readonly undefinedWhenNoUpdateRequired?: boolean;
/**
* The link relation on the resource used to determine the edit form
* resource.
*
* @default: {@see LinkRelation.EditForm}
*/
readonly formRel?: RelationshipType;
}