// Shared record definitions, repeated explicitly in independently locked resources. external atom Document id "atom:reader:document"; external atom Highlight id "atom:reader:highlight"; external atom Comment id "atom:reader:comment"; type SourceRange = record { sourceRevision: string; start: int32; end: int32; }; type CommentContent = record { text: string; tags: list; }; type DocumentSeed = record { sourceRevision: string; content: string; }; interface DocumentData id "interface:reader:document-data" revision "interface:reader:document-data@1" { queryable value sourceRevision id "document:source-revision" : string { get id "document:source-revision:get" execution snapshot targets [browser, server]; } queryable value content id "document:content" : string { get id "document:content:get" execution snapshot targets [browser, server]; } queryable relation highlights id "document:highlights" : many-unique atom Highlight { resolve id "document:highlights:resolve" execution snapshot targets [browser, server]; connect id "document:highlights:connect" execution transaction targets [browser, server]; } }