File

teal-src/util/error.d.tl @ 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
child 11459:86904555bffc
line wrap: on
line source

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