types.js

/**
 * Types is a module containing the three different types: GraphType, EntryType and
 * ResourceType shortened GT, ET and RT.
 *
 * @namespace types
 */
const types = {
  /**
   * Local entrytype implies that the resource is maintained in the repository.
   * It can be an uploaded file, a list, a group, a user etc. The nature of the resource
   * is determined by the graphtype.
   *
   * @const
   * @see Entry#isLocal
   */
  ET_LOCAL: 'Local',

  /**
   * Link EntryType implies that the resource is not maintained in the repository, rather the
   * entry only provides a link to the resource.
   * The metadata is still maintained in the repository though.
   *
   * @const
   * @see Entry#isLink
   */
  ET_LINK: 'Link',

  /**
   * Similar to link, only the metadata is also external to the repository.
   * In many cases it is possible to access a locally cached version of the external
   * metadata though.
   * @see Entry#getCachedExternalMetadata
   * @see Entry#isReference
   */
  ET_REF: 'Reference',

  /**
   * Similar to link and reference, only there is both local metadata and external metadata.
   * @see Entry#isLinkReference
   */
  ET_LINKREF: 'LinkReference',

  /**
   * No graph type specified means that no knowledge of the resources character is known.
   * Hence, no special treatment of the resource is expected.
   * This is common when handling regular files, web resources or abstract entities.
   * @see Entry#isNone
   */
  GT_NONE: 'None',

  /**
   * The resource is a context, i.e. a container for other entries.
   *
   * @see Entry#isContext
   * @see Context
   */
  GT_CONTEXT: 'Context',

  /**
   * The resource is one of the special context of this repository, e.g. _contexts or _principals.
   * @see Entry#isSystemContext
   */
  GT_SYSTEMCONTEXT: 'Systemcontext',

  /**
   * The resource is a user.
   *
   * @see Entry#isUser
   * @see User
   */
  GT_USER: 'User',

  /**
   * The resource is a group.
   *
   * @see Entry#isGroup
   * @see Group
   */
  GT_GROUP: 'Group',

  /**
   * The resource is a list.
   *
   * @see Entry#isList
   * @see List
   */
  GT_LIST: 'List',

  /**
   * @todo remains to be supported in this API
   * @see Entry#isResultList
   */
  GT_RESULTLIST: 'Resultlist',

  /**
   * The resource is a RDF graph.
   * @see Entry#isGraph
   * @see Graph
   */
  GT_GRAPH: 'Graph',

  /**
   * The resource is a string.
   * @see Entry#isString
   * @see String
   */
  GT_STRING: 'String',

  /**
   * The resource is a pipeline, e.g. an entry that can somehow be executed on the server side.
   * @see Entry#isPipeline
   * @see Pipeline
   */
  GT_PIPELINE: 'Pipeline',

  /**
   * The resource is a pipelineresult, e.g. the result of the execution of a pipeline
   * on the server side.
   * @see Entry#isPipelineResult
   * @see Pipeline
   */
  GT_PIPELINERESULT: 'PipelineResult',

  /**
   * The resource is available as a digital representation of some sort.
   * Opposite to resources that have no representation, referred to as
   * {@link types.NAMEDRESOURCE named}.
   */
  RT_INFORMATIONRESOURCE: 'Information',

  /**
   * The resource is resolvable to another address.
   * @todo the API has little support for this type currently.
   */
  RT_RESOLVABLEINFORMATIONRESOURCE: 'Resolvable',

  /**
   * The resource is not available digitally, i.e. it has now digital representation that
   * can be transferred over a network.
   */
  RT_NAMEDRESOURCE: 'Named',

  /**
   * It is unknown if the resource has a representation or not, typically this is the case when
   * large amounts of resources are harvested from another system and it is not feasible to try
   * to load them to check weather they have a digital representation or not. At least the check
   * cannot be done initially and therefore the type is set to unknown.
   */
  RT_UNKNOWN: 'Unknown',
};

export default types;