feat: typechecking tests
This commit is contained in:
@@ -11,6 +11,7 @@ node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
tests/generated
|
||||
coverage/
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
|
||||
+219
-216
@@ -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
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -137,19 +137,19 @@
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">9x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-yes">251x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-yes">251x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">10x</span>
|
||||
<span class="cline-any cline-yes">416x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-yes">251x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">9x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </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<const Reg extends Registry>(
|
||||
<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>
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">5x</span>
|
||||
<span class="cline-any cline-yes">22x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -244,7 +244,7 @@ export type Instansiate<
|
||||
<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
@@ -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>
|
||||
|
||||
@@ -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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </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"> </span></td><td class="text"><pre class="prettyprint lang-js">import { makeFluent } from "./base";
|
||||
import { DEFAULT_REGISTRY } from "./registry";
|
||||
|
||||
@@ -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,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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">9x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -144,10 +144,10 @@
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">57x</span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">4x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -193,20 +193,20 @@ export const never = undefined as never;
|
||||
export type MaxDepth = 20;
|
||||
|
||||
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";
|
||||
}
|
||||
}
|
||||
|
||||
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>) => <span class="cstat-no" title="statement not covered" >v !== undefined)</span>
|
||||
.filter((v) => 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>
|
||||
|
||||
+506
-458
File diff suppressed because it is too large
Load Diff
@@ -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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">4x</span>
|
||||
<span class="cline-any cline-yes">45x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">3x</span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">3x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -383,58 +383,58 @@ interface BaseFluent<T> {
|
||||
}
|
||||
|
||||
export const AsyncMixin = Mixin<AsyncMixin>((value, $, fluent) => {
|
||||
<span class="missing-if-branch" title="else path not taken" >E</span>if (!(value instanceof Promise)) return;
|
||||
if (!(value instanceof Promise)) return;
|
||||
|
||||
<span class="cstat-no" title="statement not covered" > $.<span class="fstat-no" title="function not covered" >then = (c</span>allback: (value: unknown) => unknown) => {</span>
|
||||
<span class="cstat-no" title="statement not covered" > return fluent(value.then(callback));</span>
|
||||
$.then = (callback: (value: unknown) => unknown) => {
|
||||
return fluent(value.then(callback));
|
||||
};
|
||||
|
||||
<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<BaseFluent<unknown>> = <span class="cstat-no" title="statement not covered" >value.<span class="fstat-no" title="function not covered" >then((v</span>) =></span>
|
||||
<span class="cstat-no" title="statement not covered" > fluent(v),</span>
|
||||
get() {
|
||||
let v: Promise<BaseFluent<unknown>> = value.then((v) =>
|
||||
fluent(v),
|
||||
);
|
||||
|
||||
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[]) => <span class="cstat-no" title="statement not covered" >proxy, {</span></span>
|
||||
<span class="fstat-no" title="function not covered" > get: (_</span>, key) => {
|
||||
<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>) => <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[]) => proxy, {
|
||||
get: (_, key) => {
|
||||
if (key === "value")
|
||||
return v.then((v) => v.value);
|
||||
path.push(key);
|
||||
return proxy;
|
||||
},
|
||||
<span class="fstat-no" title="function not covered" > apply: (t</span>arget, thisArg, args: unknown[]) => {
|
||||
<span class="cstat-no" title="statement not covered" > v = v.<span class="fstat-no" title="function not covered" >then((v</span>) => {</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[]) => {
|
||||
v = v.then((v) => {
|
||||
let obj: unknown = v;
|
||||
for (const node of path) {
|
||||
assert(
|
||||
typeof obj === "object" &&
|
||||
obj !== null &&
|
||||
node in obj,
|
||||
);
|
||||
<span class="cstat-no" title="statement not covered" > assertType<Record<PropertyKey, unknown>>(</span>
|
||||
assertType<Record<PropertyKey, unknown>>(
|
||||
obj,
|
||||
);
|
||||
|
||||
<span class="cstat-no" title="statement not covered" > obj = obj[node];</span>
|
||||
obj = obj[node];
|
||||
}
|
||||
|
||||
<span class="cstat-no" title="statement not covered" > assert(typeof obj === "function");</span>
|
||||
<span class="cstat-no" title="statement not covered" > assertType<</span>
|
||||
assert(typeof obj === "function");
|
||||
assertType<
|
||||
(
|
||||
...args: unknown[]
|
||||
) => BaseFluent<unknown>
|
||||
>(obj);
|
||||
|
||||
<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);
|
||||
},
|
||||
});
|
||||
|
||||
<span class="cstat-no" title="statement not covered" > return proxy;</span>
|
||||
return proxy;
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -446,7 +446,7 @@ if (import.meta.vitest) {
|
||||
const $ = makeFluent(registry);
|
||||
|
||||
test(".awaited", async () => {
|
||||
const value = 10;
|
||||
const value = 10 as const;
|
||||
const promise = new Promise<number>((r) => {
|
||||
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>
|
||||
|
||||
@@ -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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </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"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2x</span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-yes">52x</span>
|
||||
<span class="cline-any cline-yes">5x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -282,13 +282,13 @@ export interface Base extends Mixin.HKT {
|
||||
}
|
||||
|
||||
export const Base = Mixin<Base>((value, $, fluent) => {
|
||||
$.<span class="fstat-no" title="function not covered" >tap = (c</span>allback: (value: unknown) => void) => {
|
||||
<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) => void) => {
|
||||
callback(value);
|
||||
return fluent(value);
|
||||
};
|
||||
|
||||
$.<span class="fstat-no" title="function not covered" >transform = (c</span>allback: (value: unknown) => unknown) => {
|
||||
<span class="cstat-no" title="statement not covered" > return fluent(callback(value));</span>
|
||||
$.transform = (callback: (value: unknown) => unknown) => {
|
||||
return fluent(callback(value));
|
||||
};
|
||||
});
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
+297
-123
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||
|
||||
@@ -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"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -490,6 +541,65 @@
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">5x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">31x</span>
|
||||
<span class="cline-any cline-yes">31x</span>
|
||||
<span class="cline-any cline-neutral"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </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"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">8x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">13706x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">31x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">31x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">31x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">31x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -497,59 +607,51 @@
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </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"> </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"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">2396744x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-no"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -769,7 +871,7 @@ export function applySwizzle(
|
||||
$: object,
|
||||
fluent: (value: unknown) => never,
|
||||
) {
|
||||
const length = value.length;
|
||||
const length = globalThis.Math.min(value.length, axis.length);
|
||||
const state = new Array<number>(length).fill(-1);
|
||||
|
||||
main: do {
|
||||
@@ -797,37 +899,37 @@ export function applySwizzle(
|
||||
.filter((x) => x !== -1)
|
||||
.map((x) => value[x]);
|
||||
Object.defineProperty($, key, {
|
||||
<span class="fstat-no" title="function not covered" > get: () => {</span>
|
||||
get: () => {
|
||||
// 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) => x !== -1));
|
||||
|
||||
Object.defineProperty($, "x", {
|
||||
<span class="fstat-no" title="function not covered" > get: () => {</span>
|
||||
<span class="cstat-no" title="statement not covered" > return fluent(value[0]);</span>
|
||||
get: () => {
|
||||
return fluent(value[0]);
|
||||
},
|
||||
});
|
||||
Object.defineProperty($, "y", {
|
||||
<span class="fstat-no" title="function not covered" > get: () => {</span>
|
||||
<span class="cstat-no" title="statement not covered" > return fluent(value[1]);</span>
|
||||
get: () => {
|
||||
return fluent(value[1]);
|
||||
},
|
||||
});
|
||||
Object.defineProperty($, "z", {
|
||||
<span class="fstat-no" title="function not covered" > get: () => {</span>
|
||||
<span class="cstat-no" title="statement not covered" > return fluent(value[2]);</span>
|
||||
get: () => {
|
||||
return fluent(value[2]);
|
||||
},
|
||||
});
|
||||
Object.defineProperty($, "w", {
|
||||
<span class="fstat-no" title="function not covered" > get: () => {</span>
|
||||
<span class="cstat-no" title="statement not covered" > return fluent(value[3]);</span>
|
||||
get: () => {
|
||||
return fluent(value[3]);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (import.meta.vitest) {
|
||||
const { test, expect } = import.meta.vitest;
|
||||
const { test, expect, expectTypeOf } = import.meta.vitest;
|
||||
|
||||
const registry = [Math] as const;
|
||||
const $ = makeFluent(registry);
|
||||
@@ -839,8 +941,11 @@ if (import.meta.vitest) {
|
||||
const vec = [x, y] as const;
|
||||
|
||||
expect($(vec).xx.value).toMatchObject([x, x]);
|
||||
expect($(vec).yx.value).toMatchObject([y, x]);
|
||||
expect($(vec).yy.value).toMatchObject([y, y]);
|
||||
|
||||
const yx = $(vec).yx.value;
|
||||
expect(yx).toMatchObject([y, x]);
|
||||
expectTypeOf(yx).toEqualTypeOf<[typeof y, typeof x]>();
|
||||
|
||||
const large = [x, y, x, y] as const;
|
||||
|
||||
@@ -855,28 +960,76 @@ if (import.meta.vitest) {
|
||||
const x = 5 as const;
|
||||
const arr = [x] as const;
|
||||
|
||||
expect($(arr).x.value).toBe(x);
|
||||
const v = $(arr).x.value;
|
||||
expect(v).toBe(x);
|
||||
expectTypeOf(v).toEqualTypeOf(x);
|
||||
});
|
||||
|
||||
test(".y", () => {
|
||||
const y = 2 as const;
|
||||
const arr = [y, y] as const;
|
||||
|
||||
expect($(arr).y.value).toBe(y);
|
||||
const v = $(arr).y.value;
|
||||
expect(v).toBe(y);
|
||||
expectTypeOf(v).toEqualTypeOf(y);
|
||||
});
|
||||
|
||||
test(".z", () => {
|
||||
const z = 9 as const;
|
||||
const arr = [z, z, z] as const;
|
||||
|
||||
expect($(arr).z.value).toBe(z);
|
||||
const v = $(arr).z.value;
|
||||
expect(v).toBe(z);
|
||||
expectTypeOf(v).toEqualTypeOf(z);
|
||||
});
|
||||
|
||||
test(".w", () => {
|
||||
const w = 0 as const;
|
||||
const arr = [w, w, w, w] as const;
|
||||
|
||||
expect($(arr).w.value).toBe(w);
|
||||
const v = $(arr).w.value;
|
||||
expect(v).toBe(w);
|
||||
expectTypeOf(v).toEqualTypeOf(w);
|
||||
});
|
||||
|
||||
test("Next", () => {
|
||||
type N = 3;
|
||||
|
||||
expectTypeOf<
|
||||
Next<N, [undefined, undefined, undefined]>
|
||||
>().toEqualTypeOf<[0, undefined, undefined]>();
|
||||
|
||||
expectTypeOf<
|
||||
Next<N, [2, undefined, undefined]>
|
||||
>().toEqualTypeOf<[undefined, 0, undefined]>();
|
||||
|
||||
expectTypeOf<Next<N, [2, 2, 2]>>().toEqualTypeOf<null>();
|
||||
});
|
||||
|
||||
test("Key", () => {
|
||||
expectTypeOf<Key<[1, 2, undefined]>>().toEqualTypeOf<"yz">();
|
||||
expectTypeOf<Key<[1, 1, 1]>>().toEqualTypeOf<"yyy">();
|
||||
});
|
||||
|
||||
test("Sequence", () => {
|
||||
type In = [1, 2, 3, 4, 5];
|
||||
type Out = [5, 4, 3, 2, 1];
|
||||
type Reverse = [4, 3, 2, 1, 0];
|
||||
|
||||
expectTypeOf<Sequence<In, Reverse>>().toEqualTypeOf<Out>();
|
||||
});
|
||||
|
||||
test("Primative", () => {
|
||||
interface Props {
|
||||
value: [number, number];
|
||||
meta: { registry: [] };
|
||||
}
|
||||
|
||||
type V = Primative<[number, number], Props>[1];
|
||||
|
||||
expectTypeOf<V>().toHaveProperty("x");
|
||||
expectTypeOf<V>().toHaveProperty("y");
|
||||
expectTypeOf<V>().not.toHaveProperty("z");
|
||||
});
|
||||
}
|
||||
</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>
|
||||
|
||||
+291
-246
File diff suppressed because it is too large
Load Diff
@@ -101,7 +101,7 @@
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-yes">1x</span>
|
||||
<span class="cline-any cline-yes">3x</span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
<span class="cline-any cline-neutral"> </span>
|
||||
@@ -157,7 +157,7 @@ export type Methods<
|
||||
<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
-1
@@ -3,7 +3,7 @@ import tseslint from "typescript-eslint";
|
||||
import { defineConfig, globalIgnores } from "eslint/config";
|
||||
|
||||
export default defineConfig([
|
||||
globalIgnores(["dist", "tests/generated"]),
|
||||
globalIgnores(["dist", "tests/generated", "coverage"]),
|
||||
{
|
||||
files: ["**/*.{ts,tsx}"],
|
||||
extends: [
|
||||
@@ -53,4 +53,21 @@ export default defineConfig([
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
ignores: ["tests"],
|
||||
extends: [tseslint.configs.base],
|
||||
rules: {
|
||||
"@typescript-eslint/no-restricted-imports": [
|
||||
"error",
|
||||
{
|
||||
paths: [
|
||||
{
|
||||
name: "vitest",
|
||||
message: "Use import.meta.vitest instead",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
]);
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "gen-jet src/ --test-file-extension .doc.test --header 'import { test, expect, vi } from \"vitest\"; import { $ } from \"../../src\"' && mkdir -p ./tests/generated && mv ./src/**/*.doc.test.ts tests/generated && vitest --run --reporter=tree --coverage",
|
||||
"test": "gen-jet src/ --test-file-extension .doc.test --header 'import { test, expect, vi } from \"vitest\"; import { $ } from \"../../src\"' && mkdir -p ./tests/generated && mv ./src/**/*.doc.test.ts tests/generated && vitest --run --reporter=tree --coverage --typecheck",
|
||||
"build": "tsc -b && esbuild --minify --bundle src/index.ts --outdir=dist --define:import.meta.vitest=undefined",
|
||||
"fmt": "prettier --write .",
|
||||
"lint": "eslint .",
|
||||
|
||||
@@ -18,3 +18,32 @@ export namespace HKT {
|
||||
(T & { _t: t })["new"]
|
||||
>;
|
||||
}
|
||||
|
||||
if (import.meta.vitest) {
|
||||
const { test, expectTypeOf } = import.meta.vitest;
|
||||
|
||||
interface Identity extends HKT {
|
||||
new: (t: HKT.T<this>) => typeof t;
|
||||
}
|
||||
|
||||
interface ReplaceWith<T extends number> extends HKT<number, T> {
|
||||
new: () => T;
|
||||
}
|
||||
|
||||
test("Identity <T> = T", () => {
|
||||
type V = 10;
|
||||
expectTypeOf<HKT.Apply<Identity, V>>().toEqualTypeOf<V>();
|
||||
|
||||
expectTypeOf<
|
||||
HKT.Apply<Identity, Identity>
|
||||
>().toEqualTypeOf<Identity>();
|
||||
});
|
||||
|
||||
test("Generic <T><U> = T", () => {
|
||||
type V = 10;
|
||||
|
||||
expectTypeOf<
|
||||
HKT.Apply<ReplaceWith<V>, 14>
|
||||
>().toEqualTypeOf<V>();
|
||||
});
|
||||
}
|
||||
|
||||
+43
-27
@@ -336,6 +336,10 @@ export interface Array extends Mixin.HKT {
|
||||
* @param index The index of the current element in the array
|
||||
* @param array The array being iterated
|
||||
*/
|
||||
callback: (
|
||||
value: U,
|
||||
...args: IterArgs<T>
|
||||
) => U,
|
||||
) => Return<U, typeof t>;
|
||||
} & HidePrototype;
|
||||
/**
|
||||
@@ -565,7 +569,7 @@ export const Array = Mixin<Array>((value, $, fluent) => {
|
||||
});
|
||||
|
||||
if (import.meta.vitest) {
|
||||
const { test, expect, vi } = import.meta.vitest;
|
||||
const { test, expect, expectTypeOf, vi } = import.meta.vitest;
|
||||
|
||||
const registry = [Array] as const;
|
||||
const $ = makeFluent(registry);
|
||||
@@ -573,10 +577,20 @@ if (import.meta.vitest) {
|
||||
test("at()", () => {
|
||||
const arr = [1, 2, 3] as const;
|
||||
|
||||
expect($(arr).at(0).value).toBe(arr[0]);
|
||||
const first = $(arr).at(0).value;
|
||||
expect(first).toBe(arr[0]);
|
||||
expectTypeOf(first).toEqualTypeOf(arr[0]);
|
||||
|
||||
expect($(arr).at(5).value).toBe(undefined);
|
||||
|
||||
expect($(arr).at(-1).value).toBe(arr[arr.length - 1]);
|
||||
const last = $(arr).at(-1).value;
|
||||
expect(last).toBe(arr[arr.length - 1]);
|
||||
expectTypeOf(last).toEqualTypeOf<
|
||||
typeof arr extends readonly [...unknown[], infer Last]
|
||||
? Last
|
||||
: never
|
||||
>();
|
||||
|
||||
expect($(arr).at(-5).value).toBe(undefined);
|
||||
});
|
||||
|
||||
@@ -598,13 +612,13 @@ if (import.meta.vitest) {
|
||||
});
|
||||
|
||||
test("extend()", () => {
|
||||
const arr = [1, 2];
|
||||
const arr = [1, 2] as const;
|
||||
|
||||
const copies = 2;
|
||||
const copies = 2 as const;
|
||||
const expected: number[] = new globalThis.Array<number[]>(
|
||||
copies + 1,
|
||||
)
|
||||
.fill(arr)
|
||||
.fill([...arr])
|
||||
.flat(1);
|
||||
|
||||
expect($(arr).extend(copies).value).toMatchObject(expected);
|
||||
@@ -615,9 +629,10 @@ if (import.meta.vitest) {
|
||||
const arr = [1, 2, 3, 4, 5] as const;
|
||||
const isEven = vi.fn((v: number) => v % 2 === 0);
|
||||
|
||||
expect($(arr).map(isEven).value).toMatchObject(
|
||||
arr.map(isEven),
|
||||
);
|
||||
const v = $(arr).map(isEven).value;
|
||||
expect(v).toMatchObject(arr.map(isEven));
|
||||
expectTypeOf(v).toExtend<boolean[]>();
|
||||
expectTypeOf(v).not.toEqualTypeOf<boolean[]>();
|
||||
|
||||
for (let i = 0; i < arr.length; i++)
|
||||
expect(isEven).toHaveBeenNthCalledWith(
|
||||
@@ -632,9 +647,10 @@ if (import.meta.vitest) {
|
||||
const arr = [5, 4, 3, 2, 1] as const;
|
||||
const isEven = vi.fn((v: number) => v % 2 === 0);
|
||||
|
||||
expect($(arr).filter(isEven).value).toMatchObject(
|
||||
arr.filter(isEven),
|
||||
);
|
||||
const v = $(arr).filter(isEven).value;
|
||||
expect(v).toMatchObject(arr.filter(isEven));
|
||||
expectTypeOf(v).toExtend<readonly number[]>();
|
||||
expectTypeOf(v).not.toEqualTypeOf<readonly number[]>();
|
||||
|
||||
for (let i = 0; i < arr.length; i++)
|
||||
expect(isEven).toHaveBeenNthCalledWith(
|
||||
@@ -645,9 +661,12 @@ if (import.meta.vitest) {
|
||||
);
|
||||
|
||||
const dirty = [1, null, 6, undefined, 2] as const;
|
||||
expect($(dirty).filter.some().value).toMatchObject(
|
||||
const clean = $(dirty).filter.some().value;
|
||||
expect(clean).toMatchObject(
|
||||
dirty.filter((v) => v !== null && v !== undefined),
|
||||
);
|
||||
expectTypeOf(clean).toExtend<readonly number[]>();
|
||||
expectTypeOf(clean).not.toEqualTypeOf<readonly number[]>();
|
||||
});
|
||||
|
||||
test("reduce()", () => {
|
||||
@@ -693,7 +712,9 @@ if (import.meta.vitest) {
|
||||
test("length()", () => {
|
||||
const arr = [3, 3, 3] as const;
|
||||
|
||||
expect($(arr).length().value).toBe(arr.length);
|
||||
const v = $(arr).length().value;
|
||||
expect(v).toBe(arr.length);
|
||||
expectTypeOf(v).toEqualTypeOf(arr.length);
|
||||
});
|
||||
|
||||
test("sort()", () => {
|
||||
@@ -701,9 +722,10 @@ if (import.meta.vitest) {
|
||||
|
||||
const callback = (a: number) => (a % 2 === 0 ? -1 : 1);
|
||||
|
||||
expect($(numbers).sort(callback).value).toMatchObject(
|
||||
numbers.toSorted(callback),
|
||||
);
|
||||
const v = $(numbers).sort(callback).value;
|
||||
expect(v).toMatchObject(numbers.toSorted(callback));
|
||||
expectTypeOf(v).toExtend<readonly number[]>();
|
||||
expectTypeOf(v).not.toEqualTypeOf<readonly number[]>();
|
||||
|
||||
expect($(numbers).sort.ascending().value).toMatchObject(
|
||||
numbers.toSorted((a, b) => a - b),
|
||||
@@ -736,15 +758,9 @@ if (import.meta.vitest) {
|
||||
test("reverse()", () => {
|
||||
const array = [1, 2, 3, 4, 5] as const;
|
||||
|
||||
expect($(array).reverse().value).toMatchObject(
|
||||
array.toReversed(),
|
||||
);
|
||||
});
|
||||
|
||||
test("length()", () => {
|
||||
const length = 3;
|
||||
const array = new globalThis.Array<number>(length).fill(5);
|
||||
|
||||
expect($(array).length().value).toBe(length);
|
||||
const v = $(array).reverse().value;
|
||||
expect(v).toMatchObject(array.toReversed());
|
||||
expectTypeOf(v).toExtend<readonly number[]>();
|
||||
expectTypeOf(v).not.toEqualTypeOf<readonly number[]>();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ if (import.meta.vitest) {
|
||||
const $ = makeFluent(registry);
|
||||
|
||||
test(".awaited", async () => {
|
||||
const value = 10;
|
||||
const value = 10 as const;
|
||||
const promise = new Promise<number>((r) => {
|
||||
r(value);
|
||||
});
|
||||
|
||||
+77
-19
@@ -6,15 +6,44 @@ import {
|
||||
type Props,
|
||||
type Return,
|
||||
} from "../base/mixin";
|
||||
import { assertType } from "../internal";
|
||||
import { assertType, type MaxDepth } from "../internal";
|
||||
import { applySwizzle, type Swizzle } from "./math/swizzle";
|
||||
|
||||
type Vec<
|
||||
T,
|
||||
N extends number,
|
||||
TOut extends T[] = [],
|
||||
> = TOut["length"] extends N
|
||||
? TOut
|
||||
: TOut["length"] extends MaxDepth
|
||||
? T[]
|
||||
: Vec<T, N, [...TOut, T]>;
|
||||
|
||||
type Inc<N extends number> = [...Vec<null, N>, null]["length"];
|
||||
|
||||
type Sign<T extends number> = T extends 0
|
||||
? 0
|
||||
: `${T}` extends `-${number}`
|
||||
? -1
|
||||
: 1;
|
||||
|
||||
type Negate<T extends number> = T extends 0
|
||||
? 0
|
||||
: `${T}` extends `-${infer N extends number}`
|
||||
? N
|
||||
: `-${T}` extends `${infer N extends number}`
|
||||
? N
|
||||
: number;
|
||||
|
||||
type Floor<T extends number> =
|
||||
`${T}` extends `${infer N extends number}.${number}` ? N : T;
|
||||
type Ceil<T extends number> =
|
||||
`${T}` extends `${infer N extends number}.${number}` ? Inc<N> : T;
|
||||
type Round<T extends number> =
|
||||
`${T}` extends `${infer N extends number}.${0 | 1 | 2 | 3 | 4}${number | ""}`
|
||||
? N
|
||||
: Ceil<T>;
|
||||
|
||||
export interface Math extends Mixin.HKT {
|
||||
new: (t: HKT.T<this>) => Input<typeof t> extends infer T
|
||||
? T extends number
|
||||
@@ -38,18 +67,23 @@ export interface Math extends Mixin.HKT {
|
||||
) => Return<number, typeof t>;
|
||||
log: (base?: number) => Return<number, typeof t>;
|
||||
|
||||
isEqualApprox: (
|
||||
comparesTo: (
|
||||
other: number,
|
||||
delta?: number,
|
||||
) => Return<boolean, typeof t>;
|
||||
|
||||
floor: () => Return<number, typeof t>;
|
||||
ceil: () => Return<number, typeof t>;
|
||||
round: () => Return<number, typeof t>;
|
||||
floor: () => Return<Floor<T>, typeof t>;
|
||||
ceil: () => Return<Ceil<T>, typeof t>;
|
||||
round: () => Return<Round<T>, typeof t>;
|
||||
fround: () => Return<number, typeof t>;
|
||||
|
||||
abs: () => Return<number, typeof t>;
|
||||
negate: () => Return<number, typeof t>;
|
||||
abs: () => Return<
|
||||
`${T}` extends `-${infer N extends number}`
|
||||
? N
|
||||
: T,
|
||||
typeof t
|
||||
>;
|
||||
negate: () => Return<Negate<T>, typeof t>;
|
||||
sign: () => Return<Sign<T>, typeof t>;
|
||||
|
||||
min: (
|
||||
@@ -118,7 +152,7 @@ export const Math = Mixin<Math>((value, $, fluent) => {
|
||||
return fluent(M.log(value));
|
||||
};
|
||||
|
||||
$.isEqualApprox = (
|
||||
$.comparesTo = (
|
||||
other: number,
|
||||
delta: number = Number.EPSILON,
|
||||
) => {
|
||||
@@ -179,7 +213,7 @@ export const Math = Mixin<Math>((value, $, fluent) => {
|
||||
});
|
||||
|
||||
if (import.meta.vitest) {
|
||||
const { test, expect } = import.meta.vitest;
|
||||
const { test, expect, expectTypeOf } = import.meta.vitest;
|
||||
|
||||
const registry = [Math] as const;
|
||||
const $ = makeFluent(registry);
|
||||
@@ -204,38 +238,62 @@ if (import.meta.vitest) {
|
||||
expect($(1000).log(10).value).toBeCloseTo(M.log10(1000));
|
||||
});
|
||||
|
||||
test("equalApprox()", () => {
|
||||
test("comparesTo()", () => {
|
||||
const a = 0.1 + 0.2;
|
||||
const target = 0.3;
|
||||
|
||||
expect($(a).isEqualApprox(target).value).toBe(true);
|
||||
expect($(a).comparesTo(target).value).toBe(true);
|
||||
|
||||
expect($(a).isEqualApprox(1, 1).value).toBe(true);
|
||||
expect($(a).comparesTo(1, 1).value).toBe(true);
|
||||
|
||||
expect(
|
||||
$(a).isEqualApprox(target + Number.EPSILON * 2).value,
|
||||
$(a).comparesTo(target + Number.EPSILON * 2).value,
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
t("floor", 1.7, 1);
|
||||
t("ceil", 1.7, 2);
|
||||
test("floor()", () => {
|
||||
expect($(1).floor().value).toBe(1);
|
||||
expect($(1.7).floor().value).toBe(1);
|
||||
|
||||
expectTypeOf($(5.8).floor().value).toEqualTypeOf<5>();
|
||||
expectTypeOf($(5).floor().value).toEqualTypeOf<5>();
|
||||
});
|
||||
test("ceil()", () => {
|
||||
expect($(1).ceil().value).toBe(1);
|
||||
expect($(1.7).ceil().value).toBe(2);
|
||||
|
||||
expectTypeOf($(5).ceil().value).toEqualTypeOf<5>();
|
||||
expectTypeOf($(5.8).ceil().value).toEqualTypeOf<6>();
|
||||
});
|
||||
test("round()", () => {
|
||||
expect($(1.3).round().value).toBe(1);
|
||||
expect($(4.5).round().value).toBe(5);
|
||||
|
||||
expectTypeOf($(1.3).round().value).toEqualTypeOf<1>();
|
||||
expectTypeOf($(4.5).round().value).toEqualTypeOf<5>();
|
||||
});
|
||||
t("fround", 6.45, M.fround(6.45));
|
||||
|
||||
test("abs()", () => {
|
||||
const v = 4;
|
||||
const positive = 4 as const;
|
||||
const negative = -4 as const;
|
||||
|
||||
expect($(v).abs().value).toBe(v);
|
||||
expect($(-v).abs().value).toBe(v);
|
||||
const a = $(positive).abs().value;
|
||||
expect(a).toBe(positive);
|
||||
expectTypeOf(a).toEqualTypeOf(positive);
|
||||
|
||||
const b = $(negative).abs().value;
|
||||
expect(b).toBe(positive);
|
||||
expectTypeOf(b).toEqualTypeOf(positive);
|
||||
});
|
||||
test("negate()", () => {
|
||||
const v = 7;
|
||||
const v = 7 as const;
|
||||
|
||||
expect($(v).negate().value).toBe(-v);
|
||||
expect($(v).negate().negate().value).toBe(v);
|
||||
|
||||
expectTypeOf($(4).negate().value).toEqualTypeOf<-4>();
|
||||
expectTypeOf($(-4).negate().value).toEqualTypeOf<4>();
|
||||
});
|
||||
test("sign()", () => {
|
||||
expect($(-4).sign().value).toBe(-1);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user