feat: typechecking tests

This commit is contained in:
2026-06-27 00:37:01 +02:00
parent a9925ac2ec
commit 408806d17b
28 changed files with 2091 additions and 1456 deletions
+219 -216
View File
@@ -1,257 +1,260 @@
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1782440391724" clover="3.2.0">
<project timestamp="1782440391724" name="All files">
<metrics statements="207" coveredstatements="118" conditionals="48" coveredconditionals="23" methods="107" coveredmethods="19" elements="362" coveredelements="160" complexity="0" loc="207" ncloc="207" packages="4" files="11" classes="11"/>
<coverage generated="1782513273134" clover="3.2.0">
<project timestamp="1782513273134" name="All files">
<metrics statements="207" coveredstatements="205" conditionals="48" coveredconditionals="48" methods="107" coveredmethods="103" elements="362" coveredelements="356" complexity="0" loc="207" ncloc="207" packages="4" files="12" classes="12"/>
<package name="src">
<metrics statements="9" coveredstatements="4" conditionals="2" coveredconditionals="0" methods="4" coveredmethods="1"/>
<metrics statements="9" coveredstatements="9" conditionals="2" coveredconditionals="2" methods="4" coveredmethods="4"/>
<file name="index.ts" path="/home/anton/Projects/fluent/src/index.ts">
<metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="1" type="stmt"/>
<line num="4" count="3" type="stmt"/>
<line num="5" count="3" type="stmt"/>
</file>
<file name="internal.ts" path="/home/anton/Projects/fluent/src/internal.ts">
<metrics statements="6" coveredstatements="1" conditionals="2" coveredconditionals="0" methods="4" coveredmethods="1"/>
<line num="8" count="1" type="stmt"/>
<line num="14" count="0" type="stmt"/>
<line num="15" count="0" type="stmt"/>
<line num="23" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="24" count="0" type="stmt"/>
<line num="26" count="0" type="stmt"/>
<metrics statements="6" coveredstatements="6" conditionals="2" coveredconditionals="2" methods="4" coveredmethods="4"/>
<line num="8" count="9" type="stmt"/>
<line num="14" count="2" type="stmt"/>
<line num="15" count="2" type="stmt"/>
<line num="23" count="57" type="cond" truecount="2" falsecount="0"/>
<line num="24" count="2" type="stmt"/>
<line num="26" count="4" type="stmt"/>
</file>
<file name="registry.ts" path="/home/anton/Projects/fluent/src/registry.ts">
<metrics statements="1" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
<line num="10" count="1" type="stmt"/>
<line num="10" count="3" type="stmt"/>
</file>
</package>
<package name="src.base">
<metrics statements="7" coveredstatements="7" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="3"/>
<file name="hkt.ts" path="/home/anton/Projects/fluent/src/base/hkt.ts">
<metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
</file>
<file name="index.ts" path="/home/anton/Projects/fluent/src/base/index.ts">
<metrics statements="6" coveredstatements="6" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
<line num="31" count="1" type="stmt"/>
<line num="33" count="2" type="stmt"/>
<line num="35" count="2" type="stmt"/>
<line num="37" count="10" type="stmt"/>
<line num="40" count="2" type="stmt"/>
<line num="43" count="1" type="stmt"/>
<line num="31" count="9" type="stmt"/>
<line num="33" count="251" type="stmt"/>
<line num="35" count="251" type="stmt"/>
<line num="37" count="416" type="stmt"/>
<line num="40" count="251" type="stmt"/>
<line num="43" count="9" type="stmt"/>
</file>
<file name="mixin.ts" path="/home/anton/Projects/fluent/src/base/mixin.ts">
<metrics statements="1" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
<line num="24" count="5" type="stmt"/>
<line num="24" count="22" type="stmt"/>
</file>
</package>
<package name="src.mixin">
<metrics statements="159" coveredstatements="80" conditionals="36" coveredconditionals="13" methods="89" coveredmethods="9"/>
<metrics statements="159" coveredstatements="157" conditionals="36" coveredconditionals="36" methods="89" coveredmethods="85"/>
<file name="array.ts" path="/home/anton/Projects/fluent/src/mixin/array.ts">
<metrics statements="41" coveredstatements="19" conditionals="13" coveredconditionals="4" methods="24" coveredmethods="3"/>
<line num="133" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="463" count="1" type="stmt"/>
<line num="464" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="466" count="1" type="stmt"/>
<line num="467" count="0" type="stmt"/>
<line num="470" count="1" type="stmt"/>
<line num="471" count="0" type="stmt"/>
<line num="472" count="0" type="stmt"/>
<line num="475" count="1" type="stmt"/>
<line num="476" count="0" type="stmt"/>
<line num="477" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="478" count="0" type="stmt"/>
<line num="485" count="1" type="stmt"/>
<line num="486" count="0" type="stmt"/>
<line num="489" count="1" type="stmt"/>
<line num="490" count="0" type="stmt"/>
<line num="492" count="1" type="stmt"/>
<line num="493" count="1" type="stmt"/>
<line num="495" count="0" type="stmt"/>
<line num="496" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="501" count="1" type="stmt"/>
<line num="505" count="1" type="stmt"/>
<line num="507" count="1" type="stmt"/>
<line num="508" count="1" type="stmt"/>
<line num="513" count="0" type="stmt"/>
<line num="517" count="1" type="stmt"/>
<line num="518" count="0" type="stmt"/>
<line num="521" count="1" type="stmt"/>
<line num="528" count="0" type="stmt"/>
<line num="529" count="0" type="stmt"/>
<line num="532" count="1" type="stmt"/>
<line num="533" count="1" type="stmt"/>
<line num="535" count="0" type="cond" truecount="0" falsecount="1"/>
<line num="540" count="0" type="stmt"/>
<line num="541" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="545" count="0" type="cond" truecount="0" falsecount="1"/>
<line num="550" count="0" type="stmt"/>
<line num="553" count="0" type="cond" truecount="0" falsecount="1"/>
<line num="558" count="0" type="stmt"/>
<line num="562" count="1" type="stmt"/>
<line num="563" count="0" type="stmt"/>
<metrics statements="41" coveredstatements="41" conditionals="13" coveredconditionals="13" methods="24" coveredmethods="24"/>
<line num="133" count="80" type="cond" truecount="2" falsecount="0"/>
<line num="467" count="4" type="stmt"/>
<line num="468" count="80" type="cond" truecount="2" falsecount="0"/>
<line num="470" count="52" type="stmt"/>
<line num="471" count="8" type="stmt"/>
<line num="474" count="52" type="stmt"/>
<line num="475" count="2" type="stmt"/>
<line num="476" count="2" type="stmt"/>
<line num="479" count="52" type="stmt"/>
<line num="480" count="3" type="stmt"/>
<line num="481" count="3" type="cond" truecount="2" falsecount="0"/>
<line num="482" count="2" type="stmt"/>
<line num="489" count="52" type="stmt"/>
<line num="490" count="2" type="stmt"/>
<line num="493" count="52" type="stmt"/>
<line num="494" count="2" type="stmt"/>
<line num="496" count="52" type="stmt"/>
<line num="497" count="52" type="stmt"/>
<line num="499" count="2" type="stmt"/>
<line num="500" count="8" type="cond" truecount="2" falsecount="0"/>
<line num="505" count="52" type="stmt"/>
<line num="509" count="2" type="stmt"/>
<line num="511" count="52" type="stmt"/>
<line num="512" count="52" type="stmt"/>
<line num="517" count="2" type="stmt"/>
<line num="521" count="52" type="stmt"/>
<line num="522" count="2" type="stmt"/>
<line num="525" count="52" type="stmt"/>
<line num="532" count="2" type="stmt"/>
<line num="533" count="23" type="stmt"/>
<line num="536" count="52" type="stmt"/>
<line num="537" count="52" type="stmt"/>
<line num="539" count="16" type="cond" truecount="1" falsecount="0"/>
<line num="544" count="1" type="stmt"/>
<line num="545" count="8" type="cond" truecount="2" falsecount="0"/>
<line num="549" count="18" type="cond" truecount="1" falsecount="0"/>
<line num="554" count="11" type="stmt"/>
<line num="557" count="16" type="cond" truecount="1" falsecount="0"/>
<line num="562" count="10" type="stmt"/>
<line num="566" count="52" type="stmt"/>
<line num="567" count="1" type="stmt"/>
</file>
<file name="awaited.ts" path="/home/anton/Projects/fluent/src/mixin/awaited.ts">
<metrics statements="26" coveredstatements="2" conditionals="7" coveredconditionals="1" methods="11" coveredmethods="1"/>
<metrics statements="26" coveredstatements="24" conditionals="7" coveredconditionals="7" methods="11" coveredmethods="9"/>
<line num="14" count="0" type="stmt"/>
<line num="18" count="0" type="stmt"/>
<line num="48" count="1" type="stmt"/>
<line num="49" count="2" type="cond" truecount="1" falsecount="1"/>
<line num="51" count="0" type="stmt"/>
<line num="52" count="0" type="stmt"/>
<line num="55" count="0" type="stmt"/>
<line num="58" count="0" type="stmt"/>
<line num="59" count="0" type="stmt"/>
<line num="62" count="0" type="stmt"/>
<line num="64" count="0" type="stmt"/>
<line num="66" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="67" count="0" type="stmt"/>
<line num="68" count="0" type="stmt"/>
<line num="69" count="0" type="stmt"/>
<line num="72" count="0" type="stmt"/>
<line num="73" count="0" type="stmt"/>
<line num="74" count="0" type="stmt"/>
<line num="75" count="0" type="stmt"/>
<line num="80" count="0" type="stmt"/>
<line num="84" count="0" type="stmt"/>
<line num="87" count="0" type="stmt"/>
<line num="88" count="0" type="stmt"/>
<line num="94" count="0" type="stmt"/>
<line num="96" count="0" type="stmt"/>
<line num="100" count="0" type="stmt"/>
<line num="48" count="4" type="stmt"/>
<line num="49" count="45" type="cond" truecount="2" falsecount="0"/>
<line num="51" count="3" type="stmt"/>
<line num="52" count="1" type="stmt"/>
<line num="55" count="3" type="stmt"/>
<line num="58" count="1" type="stmt"/>
<line num="59" count="1" type="stmt"/>
<line num="62" count="1" type="stmt"/>
<line num="64" count="1" type="stmt"/>
<line num="66" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="67" count="1" type="stmt"/>
<line num="68" count="1" type="stmt"/>
<line num="69" count="1" type="stmt"/>
<line num="72" count="1" type="stmt"/>
<line num="73" count="1" type="stmt"/>
<line num="74" count="1" type="stmt"/>
<line num="75" count="1" type="stmt"/>
<line num="80" count="1" type="stmt"/>
<line num="84" count="1" type="stmt"/>
<line num="87" count="1" type="stmt"/>
<line num="88" count="1" type="stmt"/>
<line num="94" count="1" type="stmt"/>
<line num="96" count="1" type="stmt"/>
<line num="100" count="1" type="stmt"/>
</file>
<file name="base.ts" path="/home/anton/Projects/fluent/src/mixin/base.ts">
<metrics statements="6" coveredstatements="3" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="1"/>
<line num="47" count="1" type="stmt"/>
<line num="48" count="2" type="stmt"/>
<line num="49" count="0" type="stmt"/>
<line num="50" count="0" type="stmt"/>
<line num="53" count="2" type="stmt"/>
<line num="54" count="0" type="stmt"/>
<metrics statements="6" coveredstatements="6" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="3"/>
<line num="47" count="5" type="stmt"/>
<line num="48" count="52" type="stmt"/>
<line num="49" count="2" type="stmt"/>
<line num="50" count="2" type="stmt"/>
<line num="53" count="52" type="stmt"/>
<line num="54" count="5" type="stmt"/>
</file>
<file name="math.ts" path="/home/anton/Projects/fluent/src/mixin/math.ts">
<metrics statements="56" coveredstatements="45" conditionals="9" coveredconditionals="5" methods="38" coveredmethods="2"/>
<line num="104" count="1" type="stmt"/>
<line num="106" count="1" type="stmt"/>
<line num="107" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="108" count="1" type="stmt"/>
<line num="109" count="1" type="stmt"/>
<line num="110" count="1" type="stmt"/>
<line num="111" count="1" type="stmt"/>
<line num="112" count="1" type="stmt"/>
<line num="113" count="1" type="stmt"/>
<line num="114" count="1" type="stmt"/>
<line num="115" count="1" type="stmt"/>
<line num="116" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="117" count="0" type="stmt"/>
<line num="118" count="0" type="stmt"/>
<line num="121" count="1" type="stmt"/>
<line num="125" count="0" type="stmt"/>
<line num="128" count="1" type="stmt"/>
<line num="129" count="1" type="stmt"/>
<line num="130" count="1" type="stmt"/>
<line num="131" count="1" type="stmt"/>
<line num="133" count="1" type="stmt"/>
<line num="134" count="1" type="stmt"/>
<line num="135" count="1" type="stmt"/>
<line num="137" count="1" type="stmt"/>
<line num="138" count="0" type="stmt"/>
<line num="139" count="1" type="stmt"/>
<line num="140" count="0" type="stmt"/>
<line num="141" count="1" type="stmt"/>
<line num="142" count="0" type="stmt"/>
<line num="143" count="1" type="stmt"/>
<line num="144" count="0" type="stmt"/>
<line num="146" count="1" type="stmt"/>
<line num="147" count="0" type="stmt"/>
<line num="149" count="1" type="stmt"/>
<line num="150" count="1" type="stmt"/>
<metrics statements="56" coveredstatements="56" conditionals="9" coveredconditionals="9" methods="38" coveredmethods="36"/>
<line num="138" count="5" type="stmt"/>
<line num="140" count="5" type="stmt"/>
<line num="141" count="181" type="cond" truecount="2" falsecount="0"/>
<line num="142" count="128" type="stmt"/>
<line num="143" count="128" type="stmt"/>
<line num="144" count="128" type="stmt"/>
<line num="145" count="128" type="stmt"/>
<line num="146" count="128" type="stmt"/>
<line num="147" count="128" type="stmt"/>
<line num="148" count="128" type="stmt"/>
<line num="149" count="128" type="stmt"/>
<line num="150" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="151" count="1" type="stmt"/>
<line num="152" count="1" type="stmt"/>
<line num="153" count="1" type="stmt"/>
<line num="154" count="1" type="stmt"/>
<line num="155" count="1" type="stmt"/>
<line num="157" count="1" type="stmt"/>
<line num="158" count="1" type="stmt"/>
<line num="159" count="1" type="stmt"/>
<line num="160" count="1" type="stmt"/>
<line num="161" count="1" type="stmt"/>
<line num="162" count="1" type="stmt"/>
<line num="164" count="1" type="stmt"/>
<line num="165" count="1" type="stmt"/>
<line num="167" count="1" type="stmt"/>
<line num="168" count="1" type="stmt"/>
<line num="169" count="1" type="stmt"/>
<line num="170" count="0" type="stmt"/>
<line num="171" count="0" type="stmt"/>
<line num="173" count="1" type="cond" truecount="1" falsecount="1"/>
<line num="175" count="7" type="stmt"/>
<line num="177" count="1" type="stmt"/>
<line num="155" count="128" type="stmt"/>
<line num="159" count="3" type="stmt"/>
<line num="162" count="128" type="stmt"/>
<line num="163" count="128" type="stmt"/>
<line num="164" count="128" type="stmt"/>
<line num="165" count="128" type="stmt"/>
<line num="167" count="128" type="stmt"/>
<line num="168" count="128" type="stmt"/>
<line num="169" count="128" type="stmt"/>
<line num="171" count="128" type="stmt"/>
<line num="172" count="1" type="stmt"/>
<line num="173" count="128" type="stmt"/>
<line num="174" count="1" type="stmt"/>
<line num="175" count="128" type="stmt"/>
<line num="176" count="3" type="stmt"/>
<line num="177" count="128" type="stmt"/>
<line num="178" count="1" type="stmt"/>
<line num="180" count="128" type="stmt"/>
<line num="181" count="5" type="stmt"/>
<line num="183" count="128" type="stmt"/>
<line num="184" count="128" type="stmt"/>
<line num="185" count="128" type="stmt"/>
<line num="186" count="128" type="stmt"/>
<line num="187" count="128" type="stmt"/>
<line num="188" count="128" type="stmt"/>
<line num="189" count="128" type="stmt"/>
<line num="191" count="128" type="stmt"/>
<line num="192" count="128" type="stmt"/>
<line num="193" count="128" type="stmt"/>
<line num="194" count="128" type="stmt"/>
<line num="195" count="128" type="stmt"/>
<line num="196" count="128" type="stmt"/>
<line num="198" count="128" type="stmt"/>
<line num="199" count="128" type="stmt"/>
<line num="201" count="128" type="stmt"/>
<line num="202" count="128" type="stmt"/>
<line num="203" count="128" type="stmt"/>
<line num="204" count="1" type="stmt"/>
<line num="205" count="1" type="stmt"/>
<line num="207" count="53" type="cond" truecount="2" falsecount="0"/>
<line num="209" count="118" type="stmt"/>
<line num="211" count="31" type="stmt"/>
</file>
<file name="optional.ts" path="/home/anton/Projects/fluent/src/mixin/optional.ts">
<metrics statements="30" coveredstatements="11" conditionals="7" coveredconditionals="3" methods="13" coveredmethods="2"/>
<line num="16" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="164" count="1" type="stmt"/>
<line num="165" count="2" type="cond" truecount="1" falsecount="1"/>
<line num="166" count="0" type="stmt"/>
<line num="167" count="0" type="stmt"/>
<line num="170" count="0" type="stmt"/>
<line num="171" count="0" type="stmt"/>
<line num="173" count="0" type="stmt"/>
<line num="174" count="0" type="stmt"/>
<line num="176" count="0" type="stmt"/>
<line num="180" count="0" type="stmt"/>
<line num="181" count="0" type="stmt"/>
<line num="183" count="0" type="stmt"/>
<line num="184" count="0" type="stmt"/>
<line num="186" count="0" type="stmt"/>
<line num="190" count="2" type="stmt"/>
<line num="191" count="0" type="stmt"/>
<line num="194" count="2" type="stmt"/>
<line num="195" count="0" type="stmt"/>
<line num="198" count="2" type="stmt"/>
<line num="199" count="2" type="stmt"/>
<line num="201" count="0" type="stmt"/>
<line num="205" count="2" type="stmt"/>
<line num="206" count="0" type="stmt"/>
<line num="208" count="2" type="stmt"/>
<line num="209" count="2" type="stmt"/>
<line num="211" count="0" type="stmt"/>
<line num="216" count="2" type="stmt"/>
<line num="220" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="221" count="0" type="stmt"/>
<metrics statements="30" coveredstatements="30" conditionals="7" coveredconditionals="7" methods="13" coveredmethods="13"/>
<line num="16" count="58" type="cond" truecount="2" falsecount="0"/>
<line num="164" count="4" type="stmt"/>
<line num="165" count="58" type="cond" truecount="2" falsecount="0"/>
<line num="166" count="10" type="stmt"/>
<line num="167" count="1" type="stmt"/>
<line num="170" count="10" type="stmt"/>
<line num="171" count="1" type="stmt"/>
<line num="173" count="10" type="stmt"/>
<line num="174" count="10" type="stmt"/>
<line num="176" count="2" type="stmt"/>
<line num="180" count="10" type="stmt"/>
<line num="181" count="1" type="stmt"/>
<line num="183" count="10" type="stmt"/>
<line num="184" count="10" type="stmt"/>
<line num="186" count="1" type="stmt"/>
<line num="190" count="48" type="stmt"/>
<line num="191" count="1" type="stmt"/>
<line num="194" count="48" type="stmt"/>
<line num="195" count="1" type="stmt"/>
<line num="198" count="48" type="stmt"/>
<line num="199" count="48" type="stmt"/>
<line num="201" count="2" type="stmt"/>
<line num="205" count="48" type="stmt"/>
<line num="206" count="1" type="stmt"/>
<line num="208" count="48" type="stmt"/>
<line num="209" count="48" type="stmt"/>
<line num="211" count="1" type="stmt"/>
<line num="216" count="58" type="stmt"/>
<line num="220" count="3" type="cond" truecount="2" falsecount="0"/>
<line num="221" count="2" type="stmt"/>
</file>
</package>
<package name="src.mixin.math">
<metrics statements="32" coveredstatements="27" conditionals="10" coveredconditionals="10" methods="11" coveredmethods="6"/>
<metrics statements="32" coveredstatements="32" conditionals="10" coveredconditionals="10" methods="11" coveredmethods="11"/>
<file name="swizzle.ts" path="/home/anton/Projects/fluent/src/mixin/math/swizzle.ts">
<metrics statements="32" coveredstatements="27" conditionals="10" coveredconditionals="10" methods="11" coveredmethods="6"/>
<line num="156" count="1" type="stmt"/>
<line num="163" count="1" type="stmt"/>
<line num="164" count="1" type="stmt"/>
<line num="166" count="1" type="stmt"/>
<line num="167" count="2097152" type="stmt"/>
<line num="168" count="2396744" type="stmt"/>
<line num="169" count="2396744" type="cond" truecount="2" falsecount="0"/>
<line num="170" count="2097151" type="stmt"/>
<line num="173" count="2097152" type="stmt"/>
<line num="174" count="2097152" type="stmt"/>
<line num="175" count="11487560" type="cond" truecount="2" falsecount="0"/>
<line num="176" count="1435945" type="stmt"/>
<line num="177" count="10051615" type="cond" truecount="2" falsecount="0"/>
<line num="178" count="1136352" type="stmt"/>
<line num="182" count="960800" type="stmt"/>
<line num="183" count="6725600" type="stmt"/>
<line num="184" count="6565468" type="stmt"/>
<line num="186" count="960800" type="cond" truecount="4" falsecount="0"/>
<line num="187" count="21840" type="stmt"/>
<line num="188" count="152880" type="stmt"/>
<line num="189" count="145632" type="stmt"/>
<line num="190" count="21840" type="stmt"/>
<line num="193" count="0" type="stmt"/>
<line num="196" count="2396744" type="stmt"/>
<line num="198" count="1" type="stmt"/>
<line num="200" count="0" type="stmt"/>
<line num="203" count="1" type="stmt"/>
<line num="205" count="0" type="stmt"/>
<line num="208" count="1" type="stmt"/>
<line num="210" count="0" type="stmt"/>
<line num="213" count="1" type="stmt"/>
<line num="215" count="0" type="stmt"/>
<metrics statements="32" coveredstatements="32" conditionals="10" coveredconditionals="10" methods="11" coveredmethods="11"/>
<line num="156" count="5" type="stmt"/>
<line num="163" count="31" type="stmt"/>
<line num="164" count="31" type="stmt"/>
<line num="166" count="31" type="stmt"/>
<line num="167" count="10964" type="stmt"/>
<line num="168" count="13706" type="stmt"/>
<line num="169" count="13706" type="cond" truecount="2" falsecount="0"/>
<line num="170" count="10933" type="stmt"/>
<line num="173" count="10964" type="stmt"/>
<line num="174" count="10964" type="stmt"/>
<line num="175" count="38284" type="cond" truecount="2" falsecount="0"/>
<line num="176" count="7715" type="stmt"/>
<line num="177" count="30569" type="cond" truecount="2" falsecount="0"/>
<line num="178" count="4942" type="stmt"/>
<line num="182" count="6022" type="stmt"/>
<line num="183" count="23796" type="stmt"/>
<line num="184" count="21783" type="stmt"/>
<line num="186" count="6022" type="cond" truecount="4" falsecount="0"/>
<line num="187" count="5892" type="stmt"/>
<line num="188" count="23352" type="stmt"/>
<line num="189" count="21684" type="stmt"/>
<line num="190" count="5892" type="stmt"/>
<line num="193" count="8" type="stmt"/>
<line num="196" count="13706" type="stmt"/>
<line num="198" count="31" type="stmt"/>
<line num="200" count="1" type="stmt"/>
<line num="203" count="31" type="stmt"/>
<line num="205" count="1" type="stmt"/>
<line num="208" count="31" type="stmt"/>
<line num="210" count="1" type="stmt"/>
<line num="213" count="31" type="stmt"/>
<line num="215" count="1" type="stmt"/>
</file>
</package>
</project>
File diff suppressed because one or more lines are too long
+40 -40
View File
@@ -23,30 +23,30 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">50.4% </span>
<span class="strong">98.37% </span>
<span class="quiet">Statements</span>
<span class='fraction'>124/246</span>
<span class='fraction'>242/246</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">47.91% </span>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>23/48</span>
<span class='fraction'>48/48</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">17.75% </span>
<span class="strong">96.26% </span>
<span class="quiet">Functions</span>
<span class='fraction'>19/107</span>
<span class='fraction'>103/107</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">57% </span>
<span class="strong">99.03% </span>
<span class="quiet">Lines</span>
<span class='fraction'>118/207</span>
<span class='fraction'>205/207</span>
</div>
@@ -61,7 +61,7 @@
</div>
</template>
</div>
<div class='status-line medium'></div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
@@ -79,18 +79,18 @@
</tr>
</thead>
<tbody><tr>
<td class="file low" data-value="src"><a href="src/index.html">src</a></td>
<td data-value="44.44" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 44%"></div><div class="cover-empty" style="width: 56%"></div></div>
<td class="file high" data-value="src"><a href="src/index.html">src</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="44.44" class="pct low">44.44%</td>
<td data-value="9" class="abs low">4/9</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="25" class="pct low">25%</td>
<td data-value="4" class="abs low">1/4</td>
<td data-value="44.44" class="pct low">44.44%</td>
<td data-value="9" class="abs low">4/9</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="4" class="abs high">4/4</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
</tr>
<tr>
@@ -109,33 +109,33 @@
</tr>
<tr>
<td class="file low" data-value="src/mixin"><a href="src/mixin/index.html">src/mixin</a></td>
<td data-value="42.26" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 42%"></div><div class="cover-empty" style="width: 58%"></div></div>
<td class="file high" data-value="src/mixin"><a href="src/mixin/index.html">src/mixin</a></td>
<td data-value="97.93" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
</td>
<td data-value="42.26" class="pct low">42.26%</td>
<td data-value="194" class="abs low">82/194</td>
<td data-value="36.11" class="pct low">36.11%</td>
<td data-value="36" class="abs low">13/36</td>
<td data-value="10.11" class="pct low">10.11%</td>
<td data-value="89" class="abs low">9/89</td>
<td data-value="50.31" class="pct medium">50.31%</td>
<td data-value="159" class="abs medium">80/159</td>
<td data-value="97.93" class="pct high">97.93%</td>
<td data-value="194" class="abs high">190/194</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="36" class="abs high">36/36</td>
<td data-value="95.5" class="pct high">95.5%</td>
<td data-value="89" class="abs high">85/89</td>
<td data-value="98.74" class="pct high">98.74%</td>
<td data-value="159" class="abs high">157/159</td>
</tr>
<tr>
<td class="file high" data-value="src/mixin/math"><a href="src/mixin/math/index.html">src/mixin/math</a></td>
<td data-value="86.11" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="86.11" class="pct high">86.11%</td>
<td data-value="36" class="abs high">31/36</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="36" class="abs high">36/36</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="10" class="abs high">10/10</td>
<td data-value="54.54" class="pct medium">54.54%</td>
<td data-value="11" class="abs medium">6/11</td>
<td data-value="84.37" class="pct high">84.37%</td>
<td data-value="32" class="abs high">27/32</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="11" class="abs high">11/11</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="32" class="abs high">32/32</td>
</tr>
</tbody>
@@ -146,7 +146,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="prettify.js"></script>
<script>
+16 -1
View File
@@ -79,6 +79,21 @@
</tr>
</thead>
<tbody><tr>
<td class="file empty" data-value="hkt.ts"><a href="hkt.ts.html">hkt.ts</a></td>
<td data-value="0" class="pic empty">
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
</tr>
<tr>
<td class="file high" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
@@ -116,7 +131,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../../prettify.js"></script>
<script>
+7 -7
View File
@@ -137,19 +137,19 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">251x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">251x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">10x</span>
<span class="cline-any cline-yes">416x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">251x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { DefaultRegistry, Methods, Registry } from "../registry";
import type { shim } from "./mixin";
@@ -202,7 +202,7 @@ export function makeFluent&lt;const Reg extends Registry&gt;(
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../../prettify.js"></script>
<script>
+2 -2
View File
@@ -144,7 +144,7 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">22x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -244,7 +244,7 @@ export type Instansiate&lt;
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../../prettify.js"></script>
<script>
+21 -21
View File
@@ -23,30 +23,30 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">44.44% </span>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>4/9</span>
<span class='fraction'>9/9</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/2</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">25% </span>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/4</span>
<span class='fraction'>4/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">44.44% </span>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>4/9</span>
<span class='fraction'>9/9</span>
</div>
@@ -61,7 +61,7 @@
</div>
</template>
</div>
<div class='status-line low'></div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
@@ -94,18 +94,18 @@
</tr>
<tr>
<td class="file low" data-value="internal.ts"><a href="internal.ts.html">internal.ts</a></td>
<td data-value="16.66" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 16%"></div><div class="cover-empty" style="width: 84%"></div></div>
<td class="file high" data-value="internal.ts"><a href="internal.ts.html">internal.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="16.66" class="pct low">16.66%</td>
<td data-value="6" class="abs low">1/6</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="25" class="pct low">25%</td>
<td data-value="4" class="abs low">1/4</td>
<td data-value="16.66" class="pct low">16.66%</td>
<td data-value="6" class="abs low">1/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="4" class="abs high">4/4</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
</tr>
<tr>
@@ -131,7 +131,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../prettify.js"></script>
<script>
+3 -3
View File
@@ -71,8 +71,8 @@
<a name='L6'></a><a href='#L6'>6</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { makeFluent } from "./base";
import { DEFAULT_REGISTRY } from "./registry";
&nbsp;
@@ -85,7 +85,7 @@ export const $ = fluent;
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../prettify.js"></script>
<script>
+23 -23
View File
@@ -23,30 +23,30 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">16.66% </span>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>1/6</span>
<span class='fraction'>6/6</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/2</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">25% </span>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/4</span>
<span class='fraction'>4/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">16.66% </span>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>1/6</span>
<span class='fraction'>6/6</span>
</div>
@@ -61,7 +61,7 @@
</div>
</template>
</div>
<div class='status-line low'></div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
@@ -129,14 +129,14 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -144,10 +144,10 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">57x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -193,20 +193,20 @@ export const never = undefined as never;
export type MaxDepth = 20;
&nbsp;
export class AssertionError extends Error {
<span class="fstat-no" title="function not covered" > public c</span>onstructor(msg?: string) {
<span class="cstat-no" title="statement not covered" > super(msg);</span>
<span class="cstat-no" title="statement not covered" > this.name = "AssertionError";</span>
public constructor(msg?: string) {
super(msg);
this.name = "AssertionError";
}
}
&nbsp;
export function <span class="fstat-no" title="function not covered" >assert(</span>
export function assert(
condition: unknown,
msg?: string,
): asserts condition {
<span class="cstat-no" title="statement not covered" > if (!Boolean(condition))</span>
<span class="cstat-no" title="statement not covered" > throw new AssertionError(</span>
if (!Boolean(condition))
throw new AssertionError(
["Assertion error", msg]
.<span class="fstat-no" title="function not covered" >filter((v</span>) =&gt; <span class="cstat-no" title="statement not covered" >v !== undefined)</span>
.filter((v) =&gt; v !== undefined)
.join(": "),
);
}
@@ -247,7 +247,7 @@ export interface HidePrototype {
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../prettify.js"></script>
<script>
File diff suppressed because it is too large Load Diff
+68 -68
View File
@@ -23,30 +23,30 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">10.34% </span>
<span class="strong">93.1% </span>
<span class="quiet">Statements</span>
<span class='fraction'>3/29</span>
<span class='fraction'>27/29</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">14.28% </span>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>1/7</span>
<span class='fraction'>7/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">9.09% </span>
<span class="strong">81.81% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/11</span>
<span class='fraction'>9/11</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">7.69% </span>
<span class="strong">92.3% </span>
<span class="quiet">Lines</span>
<span class='fraction'>2/26</span>
<span class='fraction'>24/26</span>
</div>
@@ -61,7 +61,7 @@
</div>
</template>
</div>
<div class='status-line low'></div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
@@ -246,59 +246,59 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">45x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -383,58 +383,58 @@ interface BaseFluent&lt;T&gt; {
}
&nbsp;
export const AsyncMixin = Mixin&lt;AsyncMixin&gt;((value, $, fluent) =&gt; {
<span class="missing-if-branch" title="else path not taken" >E</span>if (!(value instanceof Promise)) return;
if (!(value instanceof Promise)) return;
&nbsp;
<span class="cstat-no" title="statement not covered" > $.<span class="fstat-no" title="function not covered" >then = (c</span>allback: (value: unknown) =&gt; unknown) =&gt; {</span>
<span class="cstat-no" title="statement not covered" > return fluent(value.then(callback));</span>
$.then = (callback: (value: unknown) =&gt; unknown) =&gt; {
return fluent(value.then(callback));
};
&nbsp;
<span class="cstat-no" title="statement not covered" > Object.defineProperty($, "awaited", {</span>
Object.defineProperty($, "awaited", {
enumerable: true,
<span class="fstat-no" title="function not covered" > get() {</span>
let v: Promise&lt;BaseFluent&lt;unknown&gt;&gt; = <span class="cstat-no" title="statement not covered" >value.<span class="fstat-no" title="function not covered" >then((v</span>) =&gt;</span>
<span class="cstat-no" title="statement not covered" > fluent(v),</span>
get() {
let v: Promise&lt;BaseFluent&lt;unknown&gt;&gt; = value.then((v) =&gt;
fluent(v),
);
&nbsp;
const path: PropertyKey[] = <span class="cstat-no" title="statement not covered" >[];</span>
const path: PropertyKey[] = [];
// eslint-disable-next-line no-empty-pattern
const proxy = <span class="cstat-no" title="statement not covered" >new <span class="fstat-no" title="function not covered" >Proxy((.</span>..[]: unknown[]) =&gt; <span class="cstat-no" title="statement not covered" >proxy, {</span></span>
<span class="fstat-no" title="function not covered" > get: (_</span>, key) =&gt; {
<span class="cstat-no" title="statement not covered" > if (key === "value")</span>
<span class="cstat-no" title="statement not covered" > return v.<span class="fstat-no" title="function not covered" >then((v</span>) =&gt; <span class="cstat-no" title="statement not covered" >v.value)</span>;</span>
<span class="cstat-no" title="statement not covered" > path.push(key);</span>
<span class="cstat-no" title="statement not covered" > return proxy;</span>
const proxy = new Proxy((...[]: unknown[]) =&gt; proxy, {
get: (_, key) =&gt; {
if (key === "value")
return v.then((v) =&gt; v.value);
path.push(key);
return proxy;
},
<span class="fstat-no" title="function not covered" > apply: (t</span>arget, thisArg, args: unknown[]) =&gt; {
<span class="cstat-no" title="statement not covered" > v = v.<span class="fstat-no" title="function not covered" >then((v</span>) =&gt; {</span>
let obj: unknown = <span class="cstat-no" title="statement not covered" >v;</span>
<span class="cstat-no" title="statement not covered" > for (const node of path) {</span>
<span class="cstat-no" title="statement not covered" > assert(</span>
apply: (target, thisArg, args: unknown[]) =&gt; {
v = v.then((v) =&gt; {
let obj: unknown = v;
for (const node of path) {
assert(
typeof obj === "object" &amp;&amp;
obj !== null &amp;&amp;
node in obj,
);
<span class="cstat-no" title="statement not covered" > assertType&lt;Record&lt;PropertyKey, unknown&gt;&gt;(</span>
assertType&lt;Record&lt;PropertyKey, unknown&gt;&gt;(
obj,
);
&nbsp;
<span class="cstat-no" title="statement not covered" > obj = obj[node];</span>
obj = obj[node];
}
&nbsp;
<span class="cstat-no" title="statement not covered" > assert(typeof obj === "function");</span>
<span class="cstat-no" title="statement not covered" > assertType&lt;</span>
assert(typeof obj === "function");
assertType&lt;
(
...args: unknown[]
) =&gt; BaseFluent&lt;unknown&gt;
&gt;(obj);
&nbsp;
<span class="cstat-no" title="statement not covered" > return obj(...args);</span>
return obj(...args);
});
<span class="cstat-no" title="statement not covered" > return target.apply(thisArg, args);</span>
return target.apply(thisArg, args);
},
});
&nbsp;
<span class="cstat-no" title="statement not covered" > return proxy;</span>
return proxy;
},
});
});
@@ -446,7 +446,7 @@ if (import.meta.vitest) {
const $ = makeFluent(registry);
&nbsp;
test(".awaited", async () =&gt; {
const value = 10;
const value = 10 as const;
const promise = new Promise&lt;number&gt;((r) =&gt; {
r(value);
});
@@ -478,7 +478,7 @@ if (import.meta.vitest) {
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../../prettify.js"></script>
<script>
+18 -18
View File
@@ -23,9 +23,9 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">50% </span>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>3/6</span>
<span class='fraction'>6/6</span>
</div>
@@ -37,16 +37,16 @@
<div class='fl pad1y space-right2'>
<span class="strong">33.33% </span>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/3</span>
<span class='fraction'>3/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">50% </span>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>3/6</span>
<span class='fraction'>6/6</span>
</div>
@@ -61,7 +61,7 @@
</div>
</template>
</div>
<div class='status-line medium'></div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
@@ -195,14 +195,14 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">52x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">52x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -282,13 +282,13 @@ export interface Base extends Mixin.HKT {
}
&nbsp;
export const Base = Mixin&lt;Base&gt;((value, $, fluent) =&gt; {
$.<span class="fstat-no" title="function not covered" >tap = (c</span>allback: (value: unknown) =&gt; void) =&gt; {
<span class="cstat-no" title="statement not covered" > callback(value);</span>
<span class="cstat-no" title="statement not covered" > return fluent(value);</span>
$.tap = (callback: (value: unknown) =&gt; void) =&gt; {
callback(value);
return fluent(value);
};
&nbsp;
$.<span class="fstat-no" title="function not covered" >transform = (c</span>allback: (value: unknown) =&gt; unknown) =&gt; {
<span class="cstat-no" title="statement not covered" > return fluent(callback(value));</span>
$.transform = (callback: (value: unknown) =&gt; unknown) =&gt; {
return fluent(callback(value));
};
});
&nbsp;
@@ -328,7 +328,7 @@ if (import.meta.vitest) {
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../../prettify.js"></script>
<script>
+63 -63
View File
@@ -23,30 +23,30 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">42.26% </span>
<span class="strong">97.93% </span>
<span class="quiet">Statements</span>
<span class='fraction'>82/194</span>
<span class='fraction'>190/194</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">36.11% </span>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>13/36</span>
<span class='fraction'>36/36</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">10.11% </span>
<span class="strong">95.5% </span>
<span class="quiet">Functions</span>
<span class='fraction'>9/89</span>
<span class='fraction'>85/89</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">50.31% </span>
<span class="strong">98.74% </span>
<span class="quiet">Lines</span>
<span class='fraction'>80/159</span>
<span class='fraction'>157/159</span>
</div>
@@ -61,7 +61,7 @@
</div>
</template>
</div>
<div class='status-line low'></div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
@@ -79,78 +79,78 @@
</tr>
</thead>
<tbody><tr>
<td class="file low" data-value="array.ts"><a href="array.ts.html">array.ts</a></td>
<td data-value="44.44" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 44%"></div><div class="cover-empty" style="width: 56%"></div></div>
<td class="file high" data-value="array.ts"><a href="array.ts.html">array.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="44.44" class="pct low">44.44%</td>
<td data-value="45" class="abs low">20/45</td>
<td data-value="30.76" class="pct low">30.76%</td>
<td data-value="13" class="abs low">4/13</td>
<td data-value="12.5" class="pct low">12.5%</td>
<td data-value="24" class="abs low">3/24</td>
<td data-value="46.34" class="pct low">46.34%</td>
<td data-value="41" class="abs low">19/41</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="45" class="abs high">45/45</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="13" class="abs high">13/13</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="24" class="abs high">24/24</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="41" class="abs high">41/41</td>
</tr>
<tr>
<td class="file low" data-value="awaited.ts"><a href="awaited.ts.html">awaited.ts</a></td>
<td data-value="10.34" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 10%"></div><div class="cover-empty" style="width: 90%"></div></div>
<td class="file high" data-value="awaited.ts"><a href="awaited.ts.html">awaited.ts</a></td>
<td data-value="93.1" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 93%"></div><div class="cover-empty" style="width: 7%"></div></div>
</td>
<td data-value="10.34" class="pct low">10.34%</td>
<td data-value="29" class="abs low">3/29</td>
<td data-value="14.28" class="pct low">14.28%</td>
<td data-value="7" class="abs low">1/7</td>
<td data-value="9.09" class="pct low">9.09%</td>
<td data-value="11" class="abs low">1/11</td>
<td data-value="7.69" class="pct low">7.69%</td>
<td data-value="26" class="abs low">2/26</td>
<td data-value="93.1" class="pct high">93.1%</td>
<td data-value="29" class="abs high">27/29</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="7" class="abs high">7/7</td>
<td data-value="81.81" class="pct high">81.81%</td>
<td data-value="11" class="abs high">9/11</td>
<td data-value="92.3" class="pct high">92.3%</td>
<td data-value="26" class="abs high">24/26</td>
</tr>
<tr>
<td class="file medium" data-value="base.ts"><a href="base.ts.html">base.ts</a></td>
<td data-value="50" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
<td class="file high" data-value="base.ts"><a href="base.ts.html">base.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="50" class="pct medium">50%</td>
<td data-value="6" class="abs medium">3/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="3" class="abs low">1/3</td>
<td data-value="50" class="pct medium">50%</td>
<td data-value="6" class="abs medium">3/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="3" class="abs high">3/3</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
</tr>
<tr>
<td class="file medium" data-value="math.ts"><a href="math.ts.html">math.ts</a></td>
<td data-value="54.21" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 54%"></div><div class="cover-empty" style="width: 46%"></div></div>
<td class="file high" data-value="math.ts"><a href="math.ts.html">math.ts</a></td>
<td data-value="97.59" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
</td>
<td data-value="54.21" class="pct medium">54.21%</td>
<td data-value="83" class="abs medium">45/83</td>
<td data-value="55.55" class="pct medium">55.55%</td>
<td data-value="9" class="abs medium">5/9</td>
<td data-value="5.26" class="pct low">5.26%</td>
<td data-value="38" class="abs low">2/38</td>
<td data-value="80.35" class="pct high">80.35%</td>
<td data-value="56" class="abs high">45/56</td>
<td data-value="97.59" class="pct high">97.59%</td>
<td data-value="83" class="abs high">81/83</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
<td data-value="94.73" class="pct high">94.73%</td>
<td data-value="38" class="abs high">36/38</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="56" class="abs high">56/56</td>
</tr>
<tr>
<td class="file low" data-value="optional.ts"><a href="optional.ts.html">optional.ts</a></td>
<td data-value="35.48" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 35%"></div><div class="cover-empty" style="width: 65%"></div></div>
<td class="file high" data-value="optional.ts"><a href="optional.ts.html">optional.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="35.48" class="pct low">35.48%</td>
<td data-value="31" class="abs low">11/31</td>
<td data-value="42.85" class="pct low">42.85%</td>
<td data-value="7" class="abs low">3/7</td>
<td data-value="15.38" class="pct low">15.38%</td>
<td data-value="13" class="abs low">2/13</td>
<td data-value="36.66" class="pct low">36.66%</td>
<td data-value="30" class="abs low">11/30</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="31" class="abs high">31/31</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="7" class="abs high">7/7</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="13" class="abs high">13/13</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="30" class="abs high">30/30</td>
</tr>
</tbody>
@@ -161,7 +161,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../../prettify.js"></script>
<script>
File diff suppressed because it is too large Load Diff
+15 -15
View File
@@ -23,9 +23,9 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">86.11% </span>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>31/36</span>
<span class='fraction'>36/36</span>
</div>
@@ -37,16 +37,16 @@
<div class='fl pad1y space-right2'>
<span class="strong">54.54% </span>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>6/11</span>
<span class='fraction'>11/11</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">84.37% </span>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>27/32</span>
<span class='fraction'>32/32</span>
</div>
@@ -80,17 +80,17 @@
</thead>
<tbody><tr>
<td class="file high" data-value="swizzle.ts"><a href="swizzle.ts.html">swizzle.ts</a></td>
<td data-value="86.11" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="86.11" class="pct high">86.11%</td>
<td data-value="36" class="abs high">31/36</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="36" class="abs high">36/36</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="10" class="abs high">10/10</td>
<td data-value="54.54" class="pct medium">54.54%</td>
<td data-value="11" class="abs medium">6/11</td>
<td data-value="84.37" class="pct high">84.37%</td>
<td data-value="32" class="abs high">27/32</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="11" class="abs high">11/11</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="32" class="abs high">32/32</td>
</tr>
</tbody>
@@ -101,7 +101,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../../../prettify.js"></script>
<script>
+217 -64
View File
@@ -23,9 +23,9 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">86.11% </span>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>31/36</span>
<span class='fraction'>36/36</span>
</div>
@@ -37,16 +37,16 @@
<div class='fl pad1y space-right2'>
<span class="strong">54.54% </span>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>6/11</span>
<span class='fraction'>11/11</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">84.37% </span>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>27/32</span>
<span class='fraction'>32/32</span>
</div>
@@ -335,7 +335,58 @@
<a name='L270'></a><a href='#L270'>270</a>
<a name='L271'></a><a href='#L271'>271</a>
<a name='L272'></a><a href='#L272'>272</a>
<a name='L273'></a><a href='#L273'>273</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<a name='L273'></a><a href='#L273'>273</a>
<a name='L274'></a><a href='#L274'>274</a>
<a name='L275'></a><a href='#L275'>275</a>
<a name='L276'></a><a href='#L276'>276</a>
<a name='L277'></a><a href='#L277'>277</a>
<a name='L278'></a><a href='#L278'>278</a>
<a name='L279'></a><a href='#L279'>279</a>
<a name='L280'></a><a href='#L280'>280</a>
<a name='L281'></a><a href='#L281'>281</a>
<a name='L282'></a><a href='#L282'>282</a>
<a name='L283'></a><a href='#L283'>283</a>
<a name='L284'></a><a href='#L284'>284</a>
<a name='L285'></a><a href='#L285'>285</a>
<a name='L286'></a><a href='#L286'>286</a>
<a name='L287'></a><a href='#L287'>287</a>
<a name='L288'></a><a href='#L288'>288</a>
<a name='L289'></a><a href='#L289'>289</a>
<a name='L290'></a><a href='#L290'>290</a>
<a name='L291'></a><a href='#L291'>291</a>
<a name='L292'></a><a href='#L292'>292</a>
<a name='L293'></a><a href='#L293'>293</a>
<a name='L294'></a><a href='#L294'>294</a>
<a name='L295'></a><a href='#L295'>295</a>
<a name='L296'></a><a href='#L296'>296</a>
<a name='L297'></a><a href='#L297'>297</a>
<a name='L298'></a><a href='#L298'>298</a>
<a name='L299'></a><a href='#L299'>299</a>
<a name='L300'></a><a href='#L300'>300</a>
<a name='L301'></a><a href='#L301'>301</a>
<a name='L302'></a><a href='#L302'>302</a>
<a name='L303'></a><a href='#L303'>303</a>
<a name='L304'></a><a href='#L304'>304</a>
<a name='L305'></a><a href='#L305'>305</a>
<a name='L306'></a><a href='#L306'>306</a>
<a name='L307'></a><a href='#L307'>307</a>
<a name='L308'></a><a href='#L308'>308</a>
<a name='L309'></a><a href='#L309'>309</a>
<a name='L310'></a><a href='#L310'>310</a>
<a name='L311'></a><a href='#L311'>311</a>
<a name='L312'></a><a href='#L312'>312</a>
<a name='L313'></a><a href='#L313'>313</a>
<a name='L314'></a><a href='#L314'>314</a>
<a name='L315'></a><a href='#L315'>315</a>
<a name='L316'></a><a href='#L316'>316</a>
<a name='L317'></a><a href='#L317'>317</a>
<a name='L318'></a><a href='#L318'>318</a>
<a name='L319'></a><a href='#L319'>319</a>
<a name='L320'></a><a href='#L320'>320</a>
<a name='L321'></a><a href='#L321'>321</a>
<a name='L322'></a><a href='#L322'>322</a>
<a name='L323'></a><a href='#L323'>323</a>
<a name='L324'></a><a href='#L324'>324</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -490,6 +541,65 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31x</span>
<span class="cline-any cline-yes">31x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31x</span>
<span class="cline-any cline-yes">10964x</span>
<span class="cline-any cline-yes">13706x</span>
<span class="cline-any cline-yes">13706x</span>
<span class="cline-any cline-yes">10933x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">10964x</span>
<span class="cline-any cline-yes">10964x</span>
<span class="cline-any cline-yes">38284x</span>
<span class="cline-any cline-yes">7715x</span>
<span class="cline-any cline-yes">30569x</span>
<span class="cline-any cline-yes">4942x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6022x</span>
<span class="cline-any cline-yes">23796x</span>
<span class="cline-any cline-yes">21783x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6022x</span>
<span class="cline-any cline-yes">5892x</span>
<span class="cline-any cline-yes">23352x</span>
<span class="cline-any cline-yes">21684x</span>
<span class="cline-any cline-yes">5892x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">8x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">13706x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -497,59 +607,51 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">2097152x</span>
<span class="cline-any cline-yes">2396744x</span>
<span class="cline-any cline-yes">2396744x</span>
<span class="cline-any cline-yes">2097151x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2097152x</span>
<span class="cline-any cline-yes">2097152x</span>
<span class="cline-any cline-yes">11487560x</span>
<span class="cline-any cline-yes">1435945x</span>
<span class="cline-any cline-yes">10051615x</span>
<span class="cline-any cline-yes">1136352x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">960800x</span>
<span class="cline-any cline-yes">6725600x</span>
<span class="cline-any cline-yes">6565468x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">960800x</span>
<span class="cline-any cline-yes">21840x</span>
<span class="cline-any cline-yes">152880x</span>
<span class="cline-any cline-yes">145632x</span>
<span class="cline-any cline-yes">21840x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2396744x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -769,7 +871,7 @@ export function applySwizzle(
$: object,
fluent: (value: unknown) =&gt; never,
) {
const length = value.length;
const length = globalThis.Math.min(value.length, axis.length);
const state = new Array&lt;number&gt;(length).fill(-1);
&nbsp;
main: do {
@@ -797,37 +899,37 @@ export function applySwizzle(
.filter((x) =&gt; x !== -1)
.map((x) =&gt; value[x]);
Object.defineProperty($, key, {
<span class="fstat-no" title="function not covered" > get: () =&gt; {</span>
get: () =&gt; {
// OPTIMIZE? Reduce amount of arrays allocated and held for the lambda..?
<span class="cstat-no" title="statement not covered" > return fluent(permutation);</span>
return fluent(permutation);
},
});
} while (state.some((x) =&gt; x !== -1));
&nbsp;
Object.defineProperty($, "x", {
<span class="fstat-no" title="function not covered" > get: () =&gt; {</span>
<span class="cstat-no" title="statement not covered" > return fluent(value[0]);</span>
get: () =&gt; {
return fluent(value[0]);
},
});
Object.defineProperty($, "y", {
<span class="fstat-no" title="function not covered" > get: () =&gt; {</span>
<span class="cstat-no" title="statement not covered" > return fluent(value[1]);</span>
get: () =&gt; {
return fluent(value[1]);
},
});
Object.defineProperty($, "z", {
<span class="fstat-no" title="function not covered" > get: () =&gt; {</span>
<span class="cstat-no" title="statement not covered" > return fluent(value[2]);</span>
get: () =&gt; {
return fluent(value[2]);
},
});
Object.defineProperty($, "w", {
<span class="fstat-no" title="function not covered" > get: () =&gt; {</span>
<span class="cstat-no" title="statement not covered" > return fluent(value[3]);</span>
get: () =&gt; {
return fluent(value[3]);
},
});
}
&nbsp;
if (import.meta.vitest) {
const { test, expect } = import.meta.vitest;
const { test, expect, expectTypeOf } = import.meta.vitest;
&nbsp;
const registry = [Math] as const;
const $ = makeFluent(registry);
@@ -839,8 +941,11 @@ if (import.meta.vitest) {
const vec = [x, y] as const;
&nbsp;
expect($(vec).xx.value).toMatchObject([x, x]);
expect($(vec).yx.value).toMatchObject([y, x]);
expect($(vec).yy.value).toMatchObject([y, y]);
&nbsp;
const yx = $(vec).yx.value;
expect(yx).toMatchObject([y, x]);
expectTypeOf(yx).toEqualTypeOf&lt;[typeof y, typeof x]&gt;();
&nbsp;
const large = [x, y, x, y] as const;
&nbsp;
@@ -855,28 +960,76 @@ if (import.meta.vitest) {
const x = 5 as const;
const arr = [x] as const;
&nbsp;
expect($(arr).x.value).toBe(x);
const v = $(arr).x.value;
expect(v).toBe(x);
expectTypeOf(v).toEqualTypeOf(x);
});
&nbsp;
test(".y", () =&gt; {
const y = 2 as const;
const arr = [y, y] as const;
&nbsp;
expect($(arr).y.value).toBe(y);
const v = $(arr).y.value;
expect(v).toBe(y);
expectTypeOf(v).toEqualTypeOf(y);
});
&nbsp;
test(".z", () =&gt; {
const z = 9 as const;
const arr = [z, z, z] as const;
&nbsp;
expect($(arr).z.value).toBe(z);
const v = $(arr).z.value;
expect(v).toBe(z);
expectTypeOf(v).toEqualTypeOf(z);
});
&nbsp;
test(".w", () =&gt; {
const w = 0 as const;
const arr = [w, w, w, w] as const;
&nbsp;
expect($(arr).w.value).toBe(w);
const v = $(arr).w.value;
expect(v).toBe(w);
expectTypeOf(v).toEqualTypeOf(w);
});
&nbsp;
test("Next", () =&gt; {
type N = 3;
&nbsp;
expectTypeOf&lt;
Next&lt;N, [undefined, undefined, undefined]&gt;
&gt;().toEqualTypeOf&lt;[0, undefined, undefined]&gt;();
&nbsp;
expectTypeOf&lt;
Next&lt;N, [2, undefined, undefined]&gt;
&gt;().toEqualTypeOf&lt;[undefined, 0, undefined]&gt;();
&nbsp;
expectTypeOf&lt;Next&lt;N, [2, 2, 2]&gt;&gt;().toEqualTypeOf&lt;null&gt;();
});
&nbsp;
test("Key", () =&gt; {
expectTypeOf&lt;Key&lt;[1, 2, undefined]&gt;&gt;().toEqualTypeOf&lt;"yz"&gt;();
expectTypeOf&lt;Key&lt;[1, 1, 1]&gt;&gt;().toEqualTypeOf&lt;"yyy"&gt;();
});
&nbsp;
test("Sequence", () =&gt; {
type In = [1, 2, 3, 4, 5];
type Out = [5, 4, 3, 2, 1];
type Reverse = [4, 3, 2, 1, 0];
&nbsp;
expectTypeOf&lt;Sequence&lt;In, Reverse&gt;&gt;().toEqualTypeOf&lt;Out&gt;();
});
&nbsp;
test("Primative", () =&gt; {
interface Props {
value: [number, number];
meta: { registry: [] };
}
&nbsp;
type V = Primative&lt;[number, number], Props&gt;[1];
&nbsp;
expectTypeOf&lt;V&gt;().toHaveProperty("x");
expectTypeOf&lt;V&gt;().toHaveProperty("y");
expectTypeOf&lt;V&gt;().not.toHaveProperty("z");
});
}
&nbsp;</pre></td></tr></table></pre>
@@ -886,7 +1039,7 @@ if (import.meta.vitest) {
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../../../prettify.js"></script>
<script>
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -101,7 +101,7 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -157,7 +157,7 @@ export type Methods&lt;
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-06-26T02:19:51.712Z
at 2026-06-26T22:34:33.124Z
</div>
<script src="../prettify.js"></script>
<script>