Software /
code /
prosody
Changeset
11432:113f3912c7cb
util: Add Teal interface definition files
Enables writing code in Teal that is aware of the interfaces and
function prototypes in these other utils.
Could also be used to do type checks on Lua sources, but this tends to
have a lot of noise.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 09 Mar 2021 14:36:46 +0100 |
parents | 11431:4874b54af344 |
children | 11433:bef67691a713 |
files | teal-src/util/compat.d.tl teal-src/util/crand.d.tl teal-src/util/dataforms.d.tl teal-src/util/datetime.d.tl teal-src/util/encodings.d.tl teal-src/util/error.d.tl teal-src/util/format.d.tl teal-src/util/hashes.d.tl teal-src/util/hex.d.tl teal-src/util/http.d.tl teal-src/util/human/units.d.tl teal-src/util/id.d.tl teal-src/util/interpolation.d.tl teal-src/util/jid.d.tl teal-src/util/json.d.tl teal-src/util/net.d.tl teal-src/util/poll.d.tl teal-src/util/pposix.d.tl teal-src/util/random.d.tl teal-src/util/stanza.d.tl teal-src/util/strbitop.d.tl teal-src/util/table.d.tl teal-src/util/time.d.tl teal-src/util/uuid.d.tl |
diffstat | 24 files changed, 489 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/compat.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,4 @@ +local record lib + xpcall : function (function, function, ...:any):boolean, any +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/crand.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,6 @@ +local record lib + bytes : function (n : number) : string + enum sourceid "OpenSSL" "arc4random()" "Linux" end + _source : sourceid +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/dataforms.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,52 @@ +local stanza_t = require "util.stanza".stanza_t + +local enum form_type + "form" + "submit" + "cancel" + "result" +end + +local enum field_type + "boolean" + "fixed" + "hidden" + "jid-multi" + "jid-single" + "list-multi" + "list-single" + "text-multi" + "text-private" + "text-single" +end + +local record form_field + + type : field_type + var : string -- protocol name + name : string -- internal name + + label : string + desc : string + + datatype : string + range_min : number + range_max : number + + value : any -- depends on field_type + options : table +end + +local record dataform + title : string + instructions : string + { form_field } -- XXX https://github.com/teal-language/tl/pull/415 + + form : function ( dataform, table, form_type ) : stanza_t +end + +local record lib + new : function ( dataform ) : dataform +end + +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/datetime.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,11 @@ +-- TODO s/number/integer/ once Teal gets support for that + +local record lib + date : function (t : number) : string + datetime : function (t : number) : string + time : function (t : number) : string + legacy : function (t : number) : string + parse : function (t : string) : number +end + +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/encodings.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,27 @@ +-- 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) : number + end + record confusable + skeleteon : function (s : string) : string + end + version : string +end +return lib +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/error.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,78 @@ +local enum error_type + "auth" + "cancel" + "continue" + "modify" + "wait" +end + +local enum error_condition + "bad-request" + "conflict" + "feature-not-implemented" + "forbidden" + "gone" + "internal-server-error" + "item-not-found" + "jid-malformed" + "not-acceptable" + "not-allowed" + "not-authorized" + "policy-violation" + "recipient-unavailable" + "redirect" + "registration-required" + "remote-server-not-found" + "remote-server-timeout" + "resource-constraint" + "service-unavailable" + "subscription-required" + "undefined-condition" + "unexpected-request" +end + +local record protoerror + type : error_type + condition : error_condition + text : string + code : number +end + +local record error + type : error_type + condition : error_condition + text : string + code : number + context : { any : any } + source : string +end + +local type compact_registry_item = { string, string, string, string } +local type compact_registry = { compact_registry_item } +local type registry = { string : protoerror } +local type context = { string : any } + +local record error_registry_wrapper + source : string + registry : registry + new : function (string, context) : error + coerce : function (any, string) : any, error + wrap : function (error) : error + wrap : function (string, context) : error + is_error : function (any) : boolean +end + +local record lib + record configure_opt + auto_inject_traceback : boolean + end + new : function (protoerror, context, { string : protoerror }, string) : error + init : function (string, string, registry | compact_registry) : error_registry_wrapper + init : function (string, registry | compact_registry) : error_registry_wrapper + is_error : function (any) : boolean + coerce : function (any, string) : any, error + from_stanza : function (table, context, string) : error + configure : function +end + +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/format.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,4 @@ +local record lib + format : function (string, ... : any) : string +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/hashes.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,21 @@ +local type hash = function (msg : string, hex : boolean) : string +local type hmac = function (key : string, msg : string, hex : boolean) : string +local type kdf = function (pass : string, salt : string, i : number) : string + +local record lib + sha1 : hash + sha256 : hash + sha224 : hash + sha384 : hash + sha512 : hash + md5 : hash + hmac_sha1 : hmac + hmac_sha256 : hmac + hmac_sha512 : hmac + hmac_md5 : hmac + scram_Hi_sha1 : kdf + pbkdf2_hmac_sha1 : kdf + pbkdf2_hmac_sha256 : kdf + version : string +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/hex.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,6 @@ +local type s2s = function (s : string) : string +local record lib + to : s2s + from : s2s +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/http.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,9 @@ +local record lib + urlencode : function (s : string) : string + urldecode : function (s : string) : string + formencode : function (f : { string : string }) : string + formdecode : function (s : string) : { string : string } + contains_token : function (field : string, token : string) : boolean + normalize_path : function (path : string) : string +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/human/units.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,5 @@ +local lib = record + adjust : function (number, string) : number, string + format : function (number, string, string) : string +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/id.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,9 @@ +local record lib + short : function () : string + medium : function () : string + long : function () : string + custom : function (number) : function () : string + +end +return lib +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/interpolation.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,6 @@ +local type renderer = function (string, { string : any }) : string +local type filter = function (string, any) : string +local record lib + new : function (string, string, funcs : { string : filter }) : renderer +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/jid.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,15 @@ +local record lib + split : function (string) : string, string, string + bare : function (string) : string + prepped_split : function (string, boolean) : string, string, string + join : function (string, string, string) : string + prep : function (string, boolean) : string + compare : function (string, string) : boolean + node : function (string) : string + host : function (string) : string + resource : function (string) : string + escape : function (string) : string + unescape : function (string) : string +end + +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/json.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,5 @@ +local record lib + encode : function (any) : string + decode : function (string) : any, string +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/net.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,13 @@ + +local enum type_strings + "both" + "ipv4" + "ipv6" +end + +local record lib + local_addresses : function (type_strings, boolean) + pton : function (string):string + ntop : function (string):string +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/poll.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,24 @@ +local record state + enum waiterr + "timeout" + "signal" + end + add : function (state, number, boolean, boolean) : boolean + add : function (state, number, boolean, boolean) : nil, string, number + set : function (state, number, boolean, boolean) : boolean + set : function (state, number, boolean, boolean) : nil, string, number + del : function (state, number) : boolean + del : function (state, number) : nil, string, number + wait : function (state, number) : number, boolean, boolean + wait : function (state, number) : nil, string, number + wait : function (state, number) : nil, waiterr + getfd : function (state) : number +end + +local record lib + new : function () : state + ENOENT : number + EEXIST : number +end + +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/pposix.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,106 @@ +local record pposix + enum syslog_facility + "auth" + "authpriv" + "cron" + "daemon" + "ftp" + "kern" + "local0" + "local1" + "local2" + "local3" + "local4" + "local5" + "local6" + "local7" + "lpr" + "mail" + "syslog" + "user" + "uucp" + end + + enum syslog_level + "debug" + "info" + "notice" + "warn" + "error" + end + + enum ulimit_resource + "CORE" + "CPU" + "DATA" + "FSIZE" + "NOFILE" + "STACK" + "MEMLOCK" + "NPROC" + "RSS" + "NICE" + end + + enum ulimit_unlimited + "unlimited" + end + + type ulimit_limit = number | ulimit_unlimited + + record utsname + sysname : string + nodename : string + release : string + version : string + machine : string + domainname : string + end + + record memoryinfo + allocated : number + allocated_mmap : number + used : number + unused : number + returnable : number + end + + abort : function () + + daemonize : function () : boolean, string + + syslog_open : function (ident : string, facility : syslog_facility) + syslog_close : function () + syslog_log : function (level : syslog_level, src : string, msg : string) + syslog_setminlevel : function (level : syslog_level) + + getpid : function () : number + getuid : function () : number + getgid : function () : number + + setuid : function (uid : string) : boolean, string -- string|number + setgid : function (uid : string) : boolean, string + initgroups : function (user : string, gid : number) : boolean, string + + umask : function (umask : string) : string + + mkdir : function (dir : string) : boolean, string + + setrlimit : function (resource : ulimit_resource, soft : ulimit_limit, hard : ulimit_limit) : boolean, string + getrlimit : function (resource : ulimit_resource) : boolean, ulimit_limit, ulimit_limit + getrlimit : function (resource : ulimit_resource) : boolean, string + + uname : function () : utsname + + setenv : function (key : string, value : string) : boolean + + meminfo : function () : memoryinfo + + atomic_append : function (f : FILE, s : string) : boolean, string, number + + ENOENT : number + _NAME : string + _VESRION : string +end + +return pposix
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/random.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,4 @@ +local record lib + bytes : function (n:number):string +end +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/stanza.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,61 @@ +local record lib + + type children_iter = function ( stanza_t ) : stanza_t + type childtags_iter = function () : stanza_t + type maptags_cb = function ( stanza_t ) : stanza_t + + record stanza_t + name : string + attr : { string : string } + { stanza_t | string } + tags : { stanza_t } + + query : function ( stanza_t, string ) : stanza_t + body : function ( stanza_t, string, { string : string } ) : stanza_t + text_tag : function ( stanza_t, string, string, { string : string } ) : stanza_t + tag : function ( stanza_t, string, { string : string } ) : stanza_t + text : function ( stanza_t, string ) : stanza_t + up : function ( stanza_t ) : stanza_t + reset : function ( stanza_t ) : stanza_t + add_direct_child : function ( stanza_t, stanza_t ) + add_child : function ( stanza_t, stanza_t ) + remove_children : function ( stanza_t, string, string ) : stanza_t + + get_child : function ( stanza_t, string, string ) : stanza_t + get_text : function ( stanza_t ) : string + get_child_text : function ( stanza_t, string, string ) : string + child_with_name : function ( stanza_t, string, string ) : stanza_t + child_with_ns : function ( stanza_t, string, string ) : stanza_t + children : function ( stanza_t ) : children_iter, stanza_t, number + childtags : function ( stanza_t, string, string ) : childtags_iter + maptags : function ( stanza_t, maptags_cb ) : stanza_t + find : function ( stanza_t, string ) : stanza_t | string + + top_tag : function ( stanza_t ) : string + pretty_print : function ( stanza_t ) : string + pretty_top_tag : function ( stanza_t ) : string + + get_error : function ( stanza_t ) : string, string, string, stanza_t + indent : function ( stanza_t, number, string ) : stanza_t + end + + record serialized_stanza_t + name : string + attr : { string : string } + { serialized_stanza_t | string } + end + + stanza : function ( string, { string : string } ) : stanza_t + is_stanza : function ( any ) : boolean + preserialize : function ( stanza_t ) : serialized_stanza_t + deserialize : function ( serialized_stanza_t ) : stanza_t + clone : function ( stanza_t, boolean ) : stanza_t + message : function ( { string : string }, string ) : stanza_t + iq : function ( { string : string } ) : stanza_t + reply : function ( stanza_t ) : stanza_t + error_reply : function ( stanza_t, string, string, string, string ) + presence : function ( { string : string } ) : stanza_t + xml_escape : function ( string ) : string +end + +return lib
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/strbitop.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,6 @@ +local record mod + sand : function (string, string) : string + sor : function (string, string) : string + sxor : function (string, string) : string +end +return mod
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/teal-src/util/table.d.tl Tue Mar 09 14:36:46 2021 +0100 @@ -0,0 +1,6 @@ +local record lib + create : function (narr:number, nrec:number):table + pack : function (...:any):{any} +end +return lib +