pkg util, func AppBlessingFromContext(*context.T) (string, error)
pkg util, func Decode(string) (string, error)
pkg util, func DecodeId(string) (wire.Id, error)
pkg util, func Encode(string) string
pkg util, func EncodeId(wire.Id) string
pkg util, func IsPrefix(string, string) bool
pkg util, func ListChildIds(*context.T, string) ([]wire.Id, error)
pkg util, func ParseCollectionRowPair(*context.T, string) (wire.Id, string, error)
pkg util, func PrefixRangeLimit(string) string
pkg util, func PrefixRangeStart(string) string
pkg util, func RowPrefixPattern(wire.Id, string) wire.CollectionRowPattern
pkg util, func SortIds([]wire.Id)
pkg util, func UserBlessingFromContext(*context.T) (string, error)
pkg util, func ValidateId(wire.Id) error
pkg util, func ValidateRowKey(string) error
pkg util, type AccessController interface { GetPermissions, SetPermissions }
pkg util, type AccessController interface, GetPermissions(*context.T) (access.Permissions, string, error)
pkg util, type AccessController interface, SetPermissions(*context.T, access.Permissions, string) error
