<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>mux.error package on StompyMUX Documentation</title><link>https://stompymux.com/docs/scripting/packages/mux/error/</link><description>Recent content in mux.error package on StompyMUX Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://stompymux.com/docs/scripting/packages/mux/error/index.xml" rel="self" type="application/rss+xml"/><item><title>mux.error.codes</title><link>https://stompymux.com/docs/scripting/packages/mux/error/codes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/codes/</guid><description>&lt;p&gt;Provides checked symbols for native &lt;code&gt;mux.*&lt;/code&gt; error codes. &lt;code&gt;btech.*&lt;/code&gt; symbols are
in &lt;a href="../../../btech/error/codes/"&gt;&lt;code&gt;btech.error.codes&lt;/code&gt;&lt;/a&gt;, and &lt;code&gt;testing.*&lt;/code&gt; symbols are
available as &lt;code&gt;testing.error.codes&lt;/code&gt; in test suites.&lt;/p&gt;
&lt;h2 id="constants"&gt;Constants&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Symbol&lt;/th&gt;
					&lt;th&gt;String value&lt;/th&gt;
					&lt;th&gt;When raised&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.arg.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.arg.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;An API argument is invalid, including unknown checked-tree fields and invalid namespace definitions. Plain code strings passed to &lt;code&gt;new&lt;/code&gt;, &lt;code&gt;raise&lt;/code&gt;, &lt;code&gt;is&lt;/code&gt;, and &lt;code&gt;wrap&lt;/code&gt; are not syntax-validated.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.unavailable.checking&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.unavailable.checking&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A runtime-only &lt;code&gt;mux&lt;/code&gt; operation is used during &lt;code&gt;@lua/check&lt;/code&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.runtime&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.runtime&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.error.pcall&lt;/code&gt; normalizes a non-error failure, or runtime error logging has no structured code.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.state.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.state.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A state namespace, key, value, or batch update is invalid.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.state.value_too_large&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.state.value_too_large&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A state write exceeds a configured per-value, entry, or object limit.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.state.unavailable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.state.unavailable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;State enumeration occurs outside an active callback or state changes during enumeration.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.object.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.object.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;An object handle or database object is invalid, stale, or unsuitable for the requested operation.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.object.unavailable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.object.unavailable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;An object operation is unavailable or native policy rejects the requested change.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.flag.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.flag.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A flag constant or lookup in &lt;code&gt;mux.world.flags&lt;/code&gt; is invalid.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.power.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.power.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A power constant or lookup in &lt;code&gt;mux.world.powers&lt;/code&gt; is invalid.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.access.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.access.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A command-access constant or lookup in &lt;code&gt;mux.world.access&lt;/code&gt; is invalid.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.connection.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.connection.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A message, descriptor, Telnet-environment kind, or flow descriptor is invalid.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.connection.unavailable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.connection.unavailable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Flow support is unavailable or the descriptor already has an active flow.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.channel.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.channel.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A channel name, membership, or Channel handle is unknown or stale.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.channel_flag.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.channel_flag.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A constant or lookup in &lt;code&gt;mux.comsys.flags&lt;/code&gt; is invalid.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.text.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.text.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Styled text, a style field, or a requested text width is invalid.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.module.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.module.invalid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A module name is invalid or a requested flow step is absent from its module.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.module.unavailable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.module.unavailable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A required module cannot be loaded or is unavailable from the current module root.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mux.error.codes.internal&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;mux.internal&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;A native invariant fails, such as a catalog being unavailable, an impossible result kind being returned, or a registry count changing while it is copied. It is also the fallback for an out-of-range native error-code enum.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; value_size &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; limit &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mux.error.raise(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mux.error.codes.state.value_too_large,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;state value exceeds the configured limit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; err:is(mux.error.codes.state) &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;-- Handles every mux.state.* failure.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;Each leaf and intermediate node has a &lt;code&gt;.code&lt;/code&gt; field, and &lt;code&gt;tostring(node)&lt;/code&gt;
returns that dotted string. The intermediate nodes are derived from the leaves,
not native enum members: &lt;code&gt;mux&lt;/code&gt;, &lt;code&gt;mux.arg&lt;/code&gt;, &lt;code&gt;mux.unavailable&lt;/code&gt;, &lt;code&gt;mux.state&lt;/code&gt;,
&lt;code&gt;mux.object&lt;/code&gt;, &lt;code&gt;mux.attribute&lt;/code&gt;, &lt;code&gt;mux.flag&lt;/code&gt;, &lt;code&gt;mux.power&lt;/code&gt;, &lt;code&gt;mux.access&lt;/code&gt;,
&lt;code&gt;mux.connection&lt;/code&gt;, &lt;code&gt;mux.channel&lt;/code&gt;, &lt;code&gt;mux.channel_flag&lt;/code&gt;, &lt;code&gt;mux.text&lt;/code&gt;, and
&lt;code&gt;mux.module&lt;/code&gt;, and &lt;code&gt;mux.config&lt;/code&gt;. They are useful with
&lt;a href="../is/"&gt;&lt;code&gt;mux.error.is&lt;/code&gt;&lt;/a&gt; for a whole-namespace check; for example,
&lt;code&gt;mux.error.codes.state&lt;/code&gt; matches every
&lt;code&gt;mux.state.*&lt;/code&gt; code.&lt;/p&gt;</description></item><item><title>Error</title><link>https://stompymux.com/docs/scripting/packages/mux/error/type-error/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/type-error/</guid><description>&lt;p&gt;An &lt;code&gt;Error&lt;/code&gt; is a Lua table that identifies a failure with a stable &lt;code&gt;code&lt;/code&gt; and a
human-readable &lt;code&gt;message&lt;/code&gt;. Native bindings raise these values, and scripts can
create them with &lt;a href="../new/"&gt;&lt;code&gt;mux.error.new&lt;/code&gt;&lt;/a&gt; or
&lt;a href="../raise/"&gt;&lt;code&gt;mux.error.raise&lt;/code&gt;&lt;/a&gt;. Use an &lt;code&gt;Error&lt;/code&gt; as the second result in the
recoverable &lt;code&gt;nil, err&lt;/code&gt; convention, or raise it when the current operation
cannot continue.&lt;/p&gt;
&lt;h2 id="fields"&gt;Fields&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string code&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The dotted error code. It can be compared as a string, but checked symbols
from &lt;a href="../codes/"&gt;&lt;code&gt;mux.error.codes&lt;/code&gt;&lt;/a&gt; catch misspellings at lookup time.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string message&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A readable description of the failure.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;any detail&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Optional structured context supplied by the producer. Native argument errors
use a table containing &lt;code&gt;argument&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;any cause&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Optional earlier error or other Lua value. &lt;a href="../wrap/"&gt;&lt;code&gt;mux.error.wrap&lt;/code&gt;&lt;/a&gt;
stores the normalized wrapped value here.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string traceback&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Optional traceback attached by &lt;a href="../pcall/"&gt;&lt;code&gt;mux.error.pcall&lt;/code&gt;&lt;/a&gt; when it catches
a failure.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="methods"&gt;Methods&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Method&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="#is"&gt;&lt;code&gt;Error:is&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Tests this error&amp;rsquo;s code against a leaf or namespace code.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a href="#root"&gt;&lt;code&gt;Error:root&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Returns the deepest table reached through &lt;code&gt;cause&lt;/code&gt;.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="is"&gt;&lt;code&gt;is&lt;/code&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;error:is(code)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string or code node code&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A comparison string or a node from &lt;a href="../codes/"&gt;&lt;code&gt;mux.error.codes&lt;/code&gt;&lt;/a&gt; or
&lt;a href="../namespace/"&gt;&lt;code&gt;mux.error.namespace&lt;/code&gt;&lt;/a&gt;. Plain strings are used verbatim and
are not syntax-validated.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Returns &lt;code&gt;true&lt;/code&gt; when this error&amp;rsquo;s code is an exact match or begins with &lt;code&gt;code&lt;/code&gt;
at a dotted segment boundary.&lt;/p&gt;</description></item><item><title>check</title><link>https://stompymux.com/docs/scripting/packages/mux/error/check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/check/</guid><description>&lt;p&gt;Returns a successful value or raises the supplied failure.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.error.check(value, err)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;any value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The result to test. Any Lua truthy value is returned unchanged.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;any err&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The Lua value to raise when &lt;code&gt;value&lt;/code&gt; is &lt;code&gt;false&lt;/code&gt; or &lt;code&gt;nil&lt;/code&gt;; normally an
&lt;a href="../type-error/"&gt;&lt;code&gt;Error&lt;/code&gt;&lt;/a&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;any value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The original truthy value.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; record &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.error.check(load_record(id), err)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;Lua considers only &lt;code&gt;false&lt;/code&gt; and &lt;code&gt;nil&lt;/code&gt; falsey. &lt;code&gt;check&lt;/code&gt; does not normalize the
raised value, so use &lt;a href="../new/"&gt;&lt;code&gt;mux.error.new&lt;/code&gt;&lt;/a&gt; when a structured error is
needed.&lt;/p&gt;</description></item><item><title>code_tree</title><link>https://stompymux.com/docs/scripting/packages/mux/error/code-tree/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/code-tree/</guid><description>&lt;p&gt;Returns the checked native code tree for a namespace root.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; btech_codes &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.error.code_tree(&lt;span style="color:#e6db74"&gt;&amp;#34;btech&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string root&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A native namespace root: &lt;code&gt;mux&lt;/code&gt;, &lt;code&gt;btech&lt;/code&gt;, or &lt;code&gt;testing&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;table codes&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The cached checked symbol tree for the root. Repeated calls for the same root
return the same table object.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Unknown roots raise &lt;code&gt;mux.arg.invalid&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="see-also"&gt;See Also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="../"&gt;&lt;code&gt;mux.error&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../codes/"&gt;&lt;code&gt;mux.error.codes&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../../../btech/error/codes/"&gt;&lt;code&gt;btech.error.codes&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>is</title><link>https://stompymux.com/docs/scripting/packages/mux/error/is/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/is/</guid><description>&lt;p&gt;Tests whether an error-like value has a matching code.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.error.is(value, code)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;any value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A value to inspect. It matches only when it is a table with a string &lt;code&gt;code&lt;/code&gt;
field.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string or code node code&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A comparison string or a node from &lt;a href="../codes/"&gt;&lt;code&gt;mux.error.codes&lt;/code&gt;&lt;/a&gt; or
&lt;a href="../namespace/"&gt;&lt;code&gt;mux.error.namespace&lt;/code&gt;&lt;/a&gt;. Plain strings are used verbatim;
this function does not validate their syntax.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;boolean matches&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;code&gt;true&lt;/code&gt; when &lt;code&gt;value.code&lt;/code&gt; equals &lt;code&gt;code&lt;/code&gt; or begins with &lt;code&gt;code&lt;/code&gt; followed by a
dotted segment; otherwise &lt;code&gt;false&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; mux.error.is(err, mux.error.codes.state) &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;-- Matches mux.state.invalid, mux.state.unavailable, and related leaves.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;&lt;a href="../type-error/"&gt;&lt;code&gt;Error:is&lt;/code&gt;&lt;/a&gt; is the equivalent method on an &lt;code&gt;Error&lt;/code&gt;. Prefix
matching stops at segment boundaries, so &lt;code&gt;mux.state&lt;/code&gt; does not match
&lt;code&gt;mux.statement.invalid&lt;/code&gt;. Prefer checked code nodes when possible; malformed
plain strings simply participate in the same exact-or-prefix comparison.&lt;/p&gt;</description></item><item><title>namespace</title><link>https://stompymux.com/docs/scripting/packages/mux/error/namespace/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/namespace/</guid><description>&lt;p&gt;Builds a checked code-symbol tree for an author-defined error namespace.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; codes &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.error.namespace(&lt;span style="color:#e6db74"&gt;&amp;#34;cargo&amp;#34;&lt;/span&gt;, { &lt;span style="color:#e6db74"&gt;&amp;#34;full&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;bay.locked&amp;#34;&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string prefix&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The first code segment, or a dotted series of lower-case segments. The
first segment must not be &lt;code&gt;mux&lt;/code&gt;, &lt;code&gt;btech&lt;/code&gt;, or &lt;code&gt;testing&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string[] names&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;An array of leaf names relative to &lt;code&gt;prefix&lt;/code&gt;. Every name uses one or more
lower-case dotted segments; later segments may also contain digits or &lt;code&gt;_&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;table codes&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A code-symbol tree whose leaf and intermediate nodes can be passed wherever
&lt;code&gt;mux.error&lt;/code&gt; accepts a code.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; codes &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.error.namespace(&lt;span style="color:#e6db74"&gt;&amp;#34;cargo&amp;#34;&lt;/span&gt;, { &lt;span style="color:#e6db74"&gt;&amp;#34;full&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;bay.locked&amp;#34;&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.error.raise(codes.bay.locked, &lt;span style="color:#e6db74"&gt;&amp;#34;the cargo bay is locked&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;The tree follows the same lookup and mutation behavior as
&lt;a href="../codes/"&gt;&lt;code&gt;mux.error.codes&lt;/code&gt;&lt;/a&gt;. &lt;code&gt;mux&lt;/code&gt;, &lt;code&gt;btech&lt;/code&gt;, and &lt;code&gt;testing&lt;/code&gt; are reserved
first segments; a prefix whose first segment is one of them is rejected.&lt;/p&gt;</description></item><item><title>new</title><link>https://stompymux.com/docs/scripting/packages/mux/error/new/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/new/</guid><description>&lt;p&gt;Creates a structured error value without raising it.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.error.new({ code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;area.missing&amp;#34;&lt;/span&gt;, message &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;area was not found&amp;#34;&lt;/span&gt;, detail &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {} })
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;table fields&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;An error definition with the required &lt;code&gt;code&lt;/code&gt; and &lt;code&gt;message&lt;/code&gt; fields, and
optional &lt;code&gt;detail&lt;/code&gt; and &lt;code&gt;cause&lt;/code&gt; fields.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string or code node fields.code&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A code string or a node from &lt;a href="../codes/"&gt;&lt;code&gt;mux.error.codes&lt;/code&gt;&lt;/a&gt; or
&lt;a href="../namespace/"&gt;&lt;code&gt;mux.error.namespace&lt;/code&gt;&lt;/a&gt;. Plain strings are accepted verbatim;
this function does not validate their syntax.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string fields.message&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A readable description of the error.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;any fields.detail&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Optional structured context for the failure.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;any fields.cause&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Optional earlier error or other Lua value.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;Error error&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The new structured error value.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt;, mux.error.new({
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; code &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.error.codes.state.unavailable,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; message &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;state cannot be read outside a callback&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;This function copies &lt;code&gt;code&lt;/code&gt;, &lt;code&gt;message&lt;/code&gt;, and non-&lt;code&gt;nil&lt;/code&gt; &lt;code&gt;detail&lt;/code&gt; and &lt;code&gt;cause&lt;/code&gt;
into a new &lt;code&gt;Error&lt;/code&gt;; it does not validate the code string or normalize the
cause.&lt;/p&gt;</description></item><item><title>pcall</title><link>https://stompymux.com/docs/scripting/packages/mux/error/pcall/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/pcall/</guid><description>&lt;p&gt;Calls a function and returns either its results or a normalized error with a
traceback.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ok, result_or_error &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.error.pcall(fn, ...)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;function fn&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The function to call.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;...&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Arguments passed to &lt;code&gt;fn&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;true, ...&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;On success, &lt;code&gt;true&lt;/code&gt; followed by every value returned by &lt;code&gt;fn&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;false, Error or caught-error table error&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;On failure, &lt;code&gt;false&lt;/code&gt; and the raised error. A raised table with a string
&lt;code&gt;code&lt;/code&gt; field is retained; another Lua value is converted to a &lt;code&gt;mux.runtime&lt;/code&gt;
&lt;code&gt;Error&lt;/code&gt;. Every returned failure has string &lt;code&gt;code&lt;/code&gt; and &lt;code&gt;traceback&lt;/code&gt; fields.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; ok, value_or_err &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.error.pcall(read_manifest, id)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;not&lt;/span&gt; ok &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt;, value_or_err
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;Unlike Lua&amp;rsquo;s &lt;code&gt;pcall&lt;/code&gt;, this helper makes unstructured failures inspectable by
code. A retained table with a string &lt;code&gt;code&lt;/code&gt; field is not copied or given the
&lt;code&gt;Error&lt;/code&gt; metatable. Such a caught-error table is guaranteed only &lt;code&gt;code&lt;/code&gt; and
&lt;code&gt;traceback&lt;/code&gt;; it can omit &lt;code&gt;message&lt;/code&gt;, &lt;code&gt;detail&lt;/code&gt;, &lt;code&gt;cause&lt;/code&gt;, and every &lt;code&gt;Error&lt;/code&gt; method,
and it can retain arbitrary caller-defined fields. The traceback is reported as
&lt;code&gt;Lua traceback unavailable&lt;/code&gt; only when the runtime cannot obtain one.&lt;/p&gt;</description></item><item><title>raise</title><link>https://stompymux.com/docs/scripting/packages/mux/error/raise/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/raise/</guid><description>&lt;p&gt;Raises a structured error.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.error.raise(code, message [, detail])
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string or code node code&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A code string or a node from &lt;a href="../codes/"&gt;&lt;code&gt;mux.error.codes&lt;/code&gt;&lt;/a&gt; or
&lt;a href="../namespace/"&gt;&lt;code&gt;mux.error.namespace&lt;/code&gt;&lt;/a&gt;. Plain strings are accepted verbatim;
this function does not validate their syntax.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string message&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A readable description of the failure.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;any detail&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Optional structured context stored on the raised &lt;code&gt;Error&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;p&gt;Nothing; this function raises an &lt;code&gt;Error&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; cargo.full &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mux.error.raise(codes.full, &lt;span style="color:#e6db74"&gt;&amp;#34;the cargo bay is full&amp;#34;&lt;/span&gt;, { capacity &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;return nil, err&lt;/code&gt; rather than raising when the caller is expected to
recover from the condition. Prefer a checked code node or a conventionally
dotted plain string even though plain strings are not syntax-checked.&lt;/p&gt;</description></item><item><title>wrap</title><link>https://stompymux.com/docs/scripting/packages/mux/error/wrap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/error/wrap/</guid><description>&lt;p&gt;Creates a structured error that preserves an earlier failure as its cause.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.error.wrap(err, code, message)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;any err&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The earlier failure. A table with a string &lt;code&gt;code&lt;/code&gt; field is retained; another
Lua value is normalized to a &lt;code&gt;mux.runtime&lt;/code&gt; error before becoming the cause.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string or code node code&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A code string or a node from &lt;a href="../codes/"&gt;&lt;code&gt;mux.error.codes&lt;/code&gt;&lt;/a&gt; or
&lt;a href="../namespace/"&gt;&lt;code&gt;mux.error.namespace&lt;/code&gt;&lt;/a&gt;. Plain strings are accepted verbatim;
this function does not validate their syntax.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;string message&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A readable description of the additional context.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;Error error&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A new error with &lt;code&gt;error.cause&lt;/code&gt; set to the retained or normalized &lt;code&gt;err&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; ok, err &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.error.pcall(write_manifest)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;not&lt;/span&gt; ok &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;nil&lt;/span&gt;, mux.error.wrap(err, &lt;span style="color:#e6db74"&gt;&amp;#34;cargo.manifest.failed&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;could not save manifest&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;Use &lt;a href="../type-error/"&gt;&lt;code&gt;Error:root&lt;/code&gt;&lt;/a&gt; to retrieve the deepest table-valued cause.
&lt;code&gt;wrap&lt;/code&gt; does not validate its code string or attach a traceback;
&lt;a href="../pcall/"&gt;&lt;code&gt;mux.error.pcall&lt;/code&gt;&lt;/a&gt; does attach a traceback when it catches a
failure.&lt;/p&gt;</description></item></channel></rss>