Skip to content

nidomiro/relation-tuple-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b18a5b3 · Dec 3, 2022

History

47 Commits
Dec 3, 2022
Nov 6, 2022
Dec 3, 2022
Dec 3, 2022
Dec 3, 2022
Dec 3, 2022
Nov 29, 2022
Dec 3, 2022
Oct 26, 2022
Nov 6, 2022
Nov 29, 2022
Dec 3, 2022
Oct 26, 2022
Dec 3, 2022
Dec 3, 2022
Dec 3, 2022
Oct 26, 2022
Dec 3, 2022
Dec 3, 2022
Dec 3, 2022
Dec 3, 2022

Repository files navigation

relation-tuple-parser

This is a collection of libraries that can parse a string representation of a Relation tuple to an object structure in different languages or frameworks.

Relation tuples are used to evaluate permissions in "Zanzibar: Google's Consistent, Global Authorization System".

The BNF of a valid Relation tuple is as follows:

<relation-tuple> ::= <object>'#'relation'@'<subject> | <object>'#'relation'@('<subject>')'
<object> ::= namespace':'object_id
<subject> ::= subject_id | <subject_set>
<subject_set> ::= <object>'#'relation

Examples of valid strings:

namespace:object#relation@subjectId
namespace:object#relation@(subjectId)
namespace:object#relation@subjectNamespace:subjectObject#subjectRelation
namespace:object#relation@(subjectNamespace:subjectObject#subjectRelation)

The different parts of the Relation tuple can contain any character but :#@().

A Relation tuple can easily be verbalised: The Relation tuple sharedFiles:a.txt#access@(dirs:b#access) can be verbalised as "Anyone with access to dirs:b has access to sharedFiles:a.txt".

Repository content

Examples

Libraries

Development Info

Publish typescript versions

nx run-many --projects=typescript,typescript-ory-keto --target=publish --tag latest --ver x.x.x