@nidomiro/relation-tuple-parser
Version:
[](https://www.npmjs.com/package/@nidomiro/relation-tuple-parser)
21 lines (20 loc) • 899 B
TypeScript
import { Result } from 'defekt';
import { RelationTuple } from './relation-tuple';
import { RelationTupleSyntaxError } from './errors/relation-tuple-syntax.error';
import { UnknownError } from './errors/unknown.error';
/**
* Parses the given string to a {@link RelationTuple}.
* str syntax:
* ```
* <relation-tuple> ::= <object>'#'relation'@'<subject> | <object>'#'relation'@('<subject>')'
* <object> ::= namespace':'object_id
* <subject> ::= subject_id | <subject_set>
* <subject_set> ::= <object>'#'relation
* ```
* example: `object#relation@subject`
* The characters `:@#()` are reserved for syntax use only (=> forbidden in values)
*
* @param str
* @return The parsed {@link RelationTuple} or {@link RelationTupleSyntaxError} in case of an invalid string.
*/
export declare const parseRelationTuple: (str: string) => Result<RelationTuple, RelationTupleSyntaxError | UnknownError>;