aboutsummaryrefslogtreecommitdiffstats
path: root/teal-src
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2021-03-24 20:28:25 +0100
committerKim Alvefur <zash@zash.se>2021-03-24 20:28:25 +0100
commite29326533e52a8fc146ea0e58124a60d5ee306b0 (patch)
tree6aa437e97e2ef29d39bdda5b3d7fc9eb2b0e0722 /teal-src
parentb9f7f40d6e0347f5245b82a30647277a4ac55680 (diff)
downloadprosody-e29326533e52a8fc146ea0e58124a60d5ee306b0.tar.gz
prosody-e29326533e52a8fc146ea0e58124a60d5ee306b0.zip
teal: Describe the module API interface
Helps when writing modules in Teal
Diffstat (limited to 'teal-src')
-rw-r--r--teal-src/module.d.tl145
1 files changed, 145 insertions, 0 deletions
diff --git a/teal-src/module.d.tl b/teal-src/module.d.tl
new file mode 100644
index 00000000..67b2437c
--- /dev/null
+++ b/teal-src/module.d.tl
@@ -0,0 +1,145 @@
+local st = require"util.stanza"
+
+global record moduleapi
+ get_name : function (moduleapi) : string
+ get_host : function (moduleapi) : string
+ enum host_type
+ "global"
+ "local"
+ "component"
+ end
+ get_host_type : function (moduleapi) : host_type
+ set_global : function (moduleapi)
+ add_feature : function (moduleapi, string)
+ add_identity : function (moduleapi, string, string, string) -- TODO enum?
+ add_extension : function (moduleapi, st.stanza_t)
+ fire_event : function (moduleapi, string, any) : any
+ type handler = function (any) : any
+ record util_events
+ -- TODO import def
+ end
+ hook_object_event : function (moduleapi, util_events, string, handler, number)
+ unhook_object_event : function (moduleapi, util_events, string, handler)
+ hook : function (moduleapi, string, handler, number)
+ hook_global : function (moduleapi, string, handler, number)
+ hook_tag : function (moduleapi, string, string, handler, number)
+ unhook : function (moduleapi, string, handler)
+ wrap_object_event : function (moduleapi, util_events, string, handler)
+ wrap_event : function (moduleapi, string, handler)
+ wrap_global : function (moduleapi, string, handler)
+ require : function (moduleapi, string) : table
+ depends : function (moduleapi, string) : table
+ shared : function (moduleapi, string) : table
+ type config_getter = function<A> (moduleapi, string, A) : A
+ get_option : config_getter<any>
+ get_option_scalar : config_getter<nil | boolean | number | string>
+ get_option_string : config_getter<string>
+ get_option_number : config_getter<number>
+ get_option_boolean : config_getter<boolean>
+ record util_array
+ -- TODO import def
+ { any }
+ end
+ get_option_array : config_getter<util_array>
+ record util_set
+ -- TODO import def
+ _items : { any : boolean }
+ end
+ get_option_set : function (moduleapi, string, { any }) : util_set
+ get_option_inherited_set : function (moduleapi, string, { any }) : util_set
+ get_option_path : function (moduleapi, string, string, string) : string
+ context : function (moduleapi, string) : moduleapi
+ add_item : function (moduleapi, string, any)
+ remove_item : function (moduleapi, string, any)
+ get_host_items : function (moduleapi, string) : { any }
+ handle_items : function (moduleapi, string, handler, handler, boolean)
+ provides : function (moduleapi, string, table)
+ record util_session
+ -- TODO import def
+ send : function ( st.stanza_t | string )
+ end
+ send : function (moduleapi, st.stanza_t, util_session)
+ send_iq : function (moduleapi, st.stanza_t, util_session, number)
+ broadcast : function (moduleapi, { string }, st.stanza_t, function)
+ type timer_callback = function (number, ... : any) : number
+ add_timer : function (moduleapi, number, timer_callback, ... : any)
+ get_directory : function (moduleapi) : string
+ enum file_mode
+ "r" "w" "a" "r+" "w+" "a+"
+ end
+ load_resource : function (moduleapi, string, file_mode) : FILE
+ enum store_type
+ "keyval"
+ "map"
+ "archive"
+ end
+ open_store : function (moduleapi, string, store_type)
+ enum stat_type
+ "amount"
+ "counter"
+ "rate"
+ "distribution"
+ "sizes"
+ "times"
+ end
+ record stats_conf
+ initial : number
+ units : string
+ type : string
+ end
+ measure : function (moduleapi, string, stat_type, stats_conf)
+ measure_object_event : function (moduleapi, util_events, string, string)
+ measure_event : function (moduleapi, string, string)
+ measure_global_event : function (moduleapi, string, string)
+ enum status_type
+ "error"
+ "warn"
+ "info"
+ "core"
+ end
+ set_status : function (moduleapi, status_type, string, boolean)
+ enum log_level
+ "debug"
+ "info"
+ "warn"
+ "error"
+ end
+ log_status : function (moduleapi, log_level, string, ... : any)
+ get_status : function (moduleapi) : status_type, string, number
+
+ -- added by modulemanager
+ name : string
+ host : string
+ _log : function (log_level, string, ... : any)
+ log : function (moduleapi, log_level, string, ... : any)
+ reloading : boolean
+ saved_state : any
+ record module_environment
+ module : moduleapi
+ end
+ environment : module_environment
+ path : string
+ resource_path : string
+
+ -- methods the module can add
+ load : function ()
+ add_host : function (moduleapi)
+ save : function () : any
+ restore : function (any)
+ unload : function ()
+end
+
+global module : moduleapi
+
+global record common_event
+ stanza : st.stanza_t
+ record origin
+ send : function (st.stanza_t)
+ end
+end
+
+global record prosody
+ version : string
+end
+
+return module