/** * Type of a URL subject. */ export type IUrlSubject = { type: 'url'; url: string; }; /** * Type of an attribute subject. */ export type IAttributeSubject = { type: 'attribute'; attribute: string; }; /** * Type of a value subject. */ export type IValueSubject = { type: 'value'; value: any; }; export type IPointerSubject = { type: 'pointer'; pointer: string; }; /** * Type of a reference subject. */ export type IReferenceSubject = IUrlSubject | IAttributeSubject | IValueSubject | IPointerSubject; /** * A reference points to an external resource. * References can be used in middleware DSLs to refer * to a URL, or to an attribute of a document. */ export interface IReference { /** * The reference subject. */ subject: T; }