teal-src/module.d.tl
author Kim Alvefur <zash@zash.se>
Mon, 12 Dec 2022 07:07:13 +0100
branch0.12
changeset 12803 3784a8ce0596
parent 11945 cfd37453e6b6
child 12506 5862ddf71e3c
permissions -rw-r--r--
Merge 0.11->0.12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11945
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local st = require"util.stanza"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
global record moduleapi
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
	get_name : function (moduleapi) : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
	get_host : function (moduleapi) : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
	enum host_type
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
		"global"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
		"local"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
		"component"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
	get_host_type : function (moduleapi) : host_type
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
	set_global : function (moduleapi)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
	add_feature : function (moduleapi, string)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    14
	add_identity : function (moduleapi, string, string, string) -- TODO enum?
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
	add_extension : function (moduleapi, st.stanza_t)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    16
	fire_event : function (moduleapi, string, any) : any
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
	type handler = function (any) : any
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
	record util_events
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
		-- TODO import def
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    20
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
	hook_object_event : function (moduleapi, util_events, string, handler, number)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
	unhook_object_event : function (moduleapi, util_events, string, handler)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
	hook : function (moduleapi, string, handler, number)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
	hook_global : function (moduleapi, string, handler, number)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
	hook_tag : function (moduleapi, string, string, handler, number)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
	unhook : function (moduleapi, string, handler)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    27
	wrap_object_event : function (moduleapi, util_events, string, handler)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    28
	wrap_event : function (moduleapi, string, handler)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    29
	wrap_global : function (moduleapi, string, handler)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    30
	require : function (moduleapi, string) : table
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    31
	depends : function (moduleapi, string) : table
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    32
	shared : function (moduleapi, string) : table
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    33
	type config_getter = function<A> (moduleapi, string, A) : A
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    34
	get_option : config_getter<any>
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    35
	get_option_scalar : config_getter<nil | boolean | number | string>
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    36
	get_option_string : config_getter<string>
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    37
	get_option_number : config_getter<number>
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    38
	get_option_boolean : config_getter<boolean>
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    39
	record util_array
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    40
		-- TODO import def
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    41
		{ any }
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    42
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    43
	get_option_array : config_getter<util_array>
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    44
	record util_set
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    45
		-- TODO import def
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    46
		_items : { any : boolean }
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    47
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    48
	get_option_set : function (moduleapi, string, { any }) : util_set
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    49
	get_option_inherited_set : function (moduleapi, string, { any }) : util_set
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    50
	get_option_path : function (moduleapi, string, string, string) : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    51
	context : function (moduleapi, string) : moduleapi
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    52
	add_item : function (moduleapi, string, any)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    53
	remove_item : function (moduleapi, string, any)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    54
	get_host_items : function (moduleapi, string) : { any }
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    55
	handle_items : function (moduleapi, string, handler, handler, boolean)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    56
	provides : function (moduleapi, string, table)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    57
	record util_session
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    58
		-- TODO import def
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    59
		send : function ( st.stanza_t | string )
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    60
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    61
	send : function (moduleapi, st.stanza_t, util_session)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    62
	send_iq : function (moduleapi, st.stanza_t, util_session, number)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    63
	broadcast : function (moduleapi, { string }, st.stanza_t, function)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    64
	type timer_callback = function (number, ... : any) : number
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    65
	add_timer : function (moduleapi, number, timer_callback, ... : any)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    66
	get_directory : function (moduleapi) : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    67
	enum file_mode
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    68
		"r" "w" "a" "r+" "w+" "a+"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    69
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    70
	load_resource : function (moduleapi, string, file_mode) : FILE
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    71
	enum store_type
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    72
		"keyval"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    73
		"map"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    74
		"archive"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    75
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    76
	open_store : function (moduleapi, string, store_type)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    77
	enum stat_type
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    78
		"amount"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    79
		"counter"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    80
		"rate"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    81
		"distribution"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    82
		"sizes"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    83
		"times"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    84
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    85
	record stats_conf
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    86
		initial : number
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    87
		units : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    88
		type : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    89
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    90
	measure : function (moduleapi, string, stat_type, stats_conf)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    91
	measure_object_event : function (moduleapi, util_events, string, string)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    92
	measure_event : function (moduleapi, string, string)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    93
	measure_global_event : function (moduleapi, string, string)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    94
	enum status_type
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    95
		"error"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    96
		"warn"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    97
		"info"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    98
		"core"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    99
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   100
	set_status : function (moduleapi, status_type, string, boolean)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   101
	enum log_level
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   102
		"debug"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   103
		"info"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   104
		"warn"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   105
		"error"
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   106
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   107
	log_status : function (moduleapi, log_level, string, ... : any)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   108
	get_status : function (moduleapi) : status_type, string, number
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   109
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   110
	-- added by modulemanager
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   111
	name : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   112
	host : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   113
	_log : function (log_level, string, ... : any)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   114
	log : function (moduleapi, log_level, string, ... : any)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   115
	reloading : boolean
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   116
	saved_state : any
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   117
	record module_environment
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   118
		module : moduleapi
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   119
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   120
	environment : module_environment
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   121
	path : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   122
	resource_path : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   123
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   124
	-- methods the module can add
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   125
	load : function ()
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   126
	add_host : function (moduleapi)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   127
	save : function () : any
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   128
	restore : function (any)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   129
	unload : function ()
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   130
end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   131
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   132
global module : moduleapi
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   133
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   134
global record common_event
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   135
	stanza : st.stanza_t
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   136
	record origin
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   137
		send : function (st.stanza_t)
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   138
	end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   139
end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   140
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   141
global record prosody
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   142
	version : string
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   143
end
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   144
cfd37453e6b6 teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   145
return module