util.hashring: Support associating arbitrary data with nodes
In this API, a 'node' is always a simple text string. Sometimes the caller may
have a more complex structure representing a node, but the hash ring is really
only concerned with the node's name.
This API change allows :add_nodes() to take a table of `node_name = value`
pairs, as well as the simple array of node names previously accepted.
The 'value' of the selected node is returned as a new second result from
:get_node().
If no value is passed when a node is added, it defaults to `true` (as before,
but this was never previously exposed).
-- TODO many actually return Maybe(String)
local record lib
record base64
encode : function (s : string) : string
decode : function (s : string) : string
end
record stringprep
nameprep : function (s : string, strict : boolean) : string
nodeprep : function (s : string, strict : boolean) : string
resourceprep : function (s : string, strict : boolean) : string
saslprep : function (s : string, strict : boolean) : string
end
record idna
to_ascii : function (s : string) : string
to_unicode : function (s : string) : string
end
record utf8
valid : function (s : string) : boolean
length : function (s : string) : integer
end
record confusable
skeleton : function (s : string) : string
end
version : string
end
return lib