pruning #3
58 changed files with 651 additions and 640 deletions
1
build-size.final.txt
Normal file
1
build-size.final.txt
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
1.6M dist
|
||||||
18
cloc.final.txt
Normal file
18
cloc.final.txt
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
github.com/AlDanial/cloc v 2.06 T=0.09 s (1076.5 files/s, 362450.1 lines/s)
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Language files blank comment code
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
JSON 11 0 0 26727
|
||||||
|
Vuejs Component 21 342 68 2551
|
||||||
|
TypeScript 20 138 375 2293
|
||||||
|
JavaScript 18 41 19 358
|
||||||
|
Markdown 3 77 0 295
|
||||||
|
Text 3 0 0 137
|
||||||
|
SVG 19 3 5 122
|
||||||
|
YAML 1 10 0 35
|
||||||
|
Bourne Shell 2 8 0 32
|
||||||
|
HTML 1 0 1 19
|
||||||
|
INI 1 2 0 10
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
SUM: 100 621 468 32579
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
@ -4,6 +4,8 @@ Owner: Engineering
|
||||||
Document: code-removal-and-consolodation-spec.md
|
Document: code-removal-and-consolodation-spec.md
|
||||||
Revision: 2.0
|
Revision: 2.0
|
||||||
Date: 2025-10-20
|
Date: 2025-10-20
|
||||||
|
Revision: 2.1
|
||||||
|
Date: 2025-10-25
|
||||||
|
|
||||||
Purpose
|
Purpose
|
||||||
- Reduce lines of code (LOC) in this TS/Vue project (and any Python utilities) without changing behavior.
|
- Reduce lines of code (LOC) in this TS/Vue project (and any Python utilities) without changing behavior.
|
||||||
|
|
@ -49,6 +51,12 @@ Latest analysis artifacts (2025-10-21)
|
||||||
- depcheck (current): saved to depcheck.current.json; flags core-js and several dev deps as unused. These are likely required by Vue CLI/babel/coverage tooling; defer removal pending deeper validation.
|
- depcheck (current): saved to depcheck.current.json; flags core-js and several dev deps as unused. These are likely required by Vue CLI/babel/coverage tooling; defer removal pending deeper validation.
|
||||||
- Follow-up result: Verified removal of core-js, node-fetch, undici did not impact tests/typecheck/build. Retained Vue CLI/Babel/coverage deps.
|
- Follow-up result: Verified removal of core-js, node-fetch, undici did not impact tests/typecheck/build. Retained Vue CLI/Babel/coverage deps.
|
||||||
|
|
||||||
|
Final verification snapshots (2025-10-25)
|
||||||
|
- cloc.final.txt (exclude node_modules, dist, coverage): Files 100, Code 32,579; Vue SFC code 2,551; TS code 2,293.
|
||||||
|
- Build size (Vue CLI): dist total ~1.6M; key bundles: chunk-vendors ~111KB (gz 40.9KB), app ~9.5KB (gz ~3.9KB).
|
||||||
|
- Tests + coverage: 14 files, 27 tests, all PASS. Coverage stable on domain/sdk/units; SFCs not covered (unchanged behavior).
|
||||||
|
- ts-prune refreshed (ts-prune.current.txt). Continue to treat SFC-only usages as false positives.
|
||||||
|
|
||||||
Scope
|
Scope
|
||||||
- In: TS/Vue app code, tests, configs, scripts; Python utilities if present.
|
- In: TS/Vue app code, tests, configs, scripts; Python utilities if present.
|
||||||
- Out: New features, architectural rewrites.
|
- Out: New features, architectural rewrites.
|
||||||
|
|
@ -165,9 +173,9 @@ Acceptance
|
||||||
- [ ] Docs consistent; onboarding simpler.
|
- [ ] Docs consistent; onboarding simpler.
|
||||||
|
|
||||||
10) Final verification
|
10) Final verification
|
||||||
- [ ] Re-run cloc; save cloc.final.txt and LOC delta.
|
- [x] Re-run cloc; saved cloc.final.txt and noted summary.
|
||||||
- [ ] Re-run tests with coverage; compare to baseline.
|
- [x] Re-run tests with coverage; all PASS; coverage consistent with previous runs.
|
||||||
- [ ] Re-run build; record bundle size delta.
|
- [x] Re-run build; build size recorded in build-size.final.txt (dist ~1.6M).
|
||||||
- [ ] Sanity test main user flows locally.
|
- [ ] Sanity test main user flows locally.
|
||||||
|
|
||||||
Acceptance
|
Acceptance
|
||||||
|
|
@ -209,3 +217,8 @@ Next actions (clear, actionable)
|
||||||
7) Final verification
|
7) Final verification
|
||||||
- [ ] Re-run cloc/tests/build; record deltas vs. baseline; sanity test user flows
|
- [ ] Re-run cloc/tests/build; record deltas vs. baseline; sanity test user flows
|
||||||
- [x] Interim verification after dep cleanup: tests/typecheck/vue-tsc/lint/build PASS
|
- [x] Interim verification after dep cleanup: tests/typecheck/vue-tsc/lint/build PASS
|
||||||
|
|
||||||
|
Additional targeted opportunities (2025-10-25)
|
||||||
|
- Simplify env typings: removed Vite-specific triple-slash reference and duplicate ImportMeta declarations; kept a minimal optional ImportMetaEnv in `src/env.d.ts`. All checks PASS.
|
||||||
|
- Component type audit: migrated `MealCard.vue` to domain `Meal` type with null guards. Remaining spots use purposeful `Pick<>` types; can leave as-is unless standardizing is preferred.
|
||||||
|
- ts-prune: refreshed; remaining flags are either used by SFC templates or part of public SDK surface. No further safe removals identified without deeper UI refactors.
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<coverage generated="1760922875713" clover="3.2.0">
|
<coverage generated="1761357288487" clover="3.2.0">
|
||||||
<project timestamp="1760922875713" name="All files">
|
<project timestamp="1761357288487" name="All files">
|
||||||
<metrics statements="4046" coveredstatements="558" conditionals="188" coveredconditionals="101" methods="79" coveredmethods="38" elements="4313" coveredelements="697" complexity="0" loc="4046" ncloc="4046" packages="12" files="37" classes="37"/>
|
<metrics statements="4046" coveredstatements="571" conditionals="190" coveredconditionals="99" methods="78" coveredmethods="38" elements="4314" coveredelements="708" complexity="0" loc="4046" ncloc="4046" packages="12" files="37" classes="37"/>
|
||||||
<package name="munch-ease-frontend">
|
<package name="munch-ease-frontend">
|
||||||
<metrics statements="6" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="6" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
<file name="vue.config.js" path="/home/jables/source/doof/munch-ease-frontend/vue.config.js">
|
<file name="vue.config.js" path="/home/jables/source/doof/munch-ease-frontend/vue.config.js">
|
||||||
|
|
@ -331,7 +331,7 @@
|
||||||
</file>
|
</file>
|
||||||
</package>
|
</package>
|
||||||
<package name="munch-ease-frontend.src.api">
|
<package name="munch-ease-frontend.src.api">
|
||||||
<metrics statements="389" coveredstatements="297" conditionals="89" coveredconditionals="51" methods="28" coveredmethods="20"/>
|
<metrics statements="403" coveredstatements="312" conditionals="93" coveredconditionals="51" methods="28" coveredmethods="20"/>
|
||||||
<file name="auth.ts" path="/home/jables/source/doof/munch-ease-frontend/src/api/auth.ts">
|
<file name="auth.ts" path="/home/jables/source/doof/munch-ease-frontend/src/api/auth.ts">
|
||||||
<metrics statements="30" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="30" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
||||||
|
|
@ -389,7 +389,7 @@
|
||||||
<line num="20" count="1" type="stmt"/>
|
<line num="20" count="1" type="stmt"/>
|
||||||
</file>
|
</file>
|
||||||
<file name="sdk.ts" path="/home/jables/source/doof/munch-ease-frontend/src/api/sdk.ts">
|
<file name="sdk.ts" path="/home/jables/source/doof/munch-ease-frontend/src/api/sdk.ts">
|
||||||
<metrics statements="339" coveredstatements="277" conditionals="84" coveredconditionals="50" methods="26" coveredmethods="19"/>
|
<metrics statements="353" coveredstatements="292" conditionals="88" coveredconditionals="50" methods="26" coveredmethods="19"/>
|
||||||
<line num="1" count="1" type="stmt"/>
|
<line num="1" count="1" type="stmt"/>
|
||||||
<line num="2" count="1" type="stmt"/>
|
<line num="2" count="1" type="stmt"/>
|
||||||
<line num="3" count="1" type="stmt"/>
|
<line num="3" count="1" type="stmt"/>
|
||||||
|
|
@ -441,14 +441,14 @@
|
||||||
<line num="49" count="2" type="stmt"/>
|
<line num="49" count="2" type="stmt"/>
|
||||||
<line num="50" count="2" type="stmt"/>
|
<line num="50" count="2" type="stmt"/>
|
||||||
<line num="51" count="2" type="stmt"/>
|
<line num="51" count="2" type="stmt"/>
|
||||||
<line num="52" count="9" type="stmt"/>
|
<line num="52" count="2" type="stmt"/>
|
||||||
<line num="53" count="1" type="stmt"/>
|
<line num="53" count="2" type="stmt"/>
|
||||||
<line num="54" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="54" count="2" type="stmt"/>
|
||||||
<line num="55" count="3" type="cond" truecount="0" falsecount="1"/>
|
<line num="55" count="2" type="stmt"/>
|
||||||
<line num="56" count="3" type="stmt"/>
|
<line num="56" count="9" type="stmt"/>
|
||||||
<line num="57" count="3" type="stmt"/>
|
<line num="57" count="1" type="stmt"/>
|
||||||
<line num="58" count="3" type="stmt"/>
|
<line num="58" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="59" count="3" type="stmt"/>
|
<line num="59" count="3" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="60" count="3" type="stmt"/>
|
<line num="60" count="3" type="stmt"/>
|
||||||
<line num="61" count="3" type="stmt"/>
|
<line num="61" count="3" type="stmt"/>
|
||||||
<line num="62" count="3" type="stmt"/>
|
<line num="62" count="3" type="stmt"/>
|
||||||
|
|
@ -459,34 +459,34 @@
|
||||||
<line num="67" count="3" type="stmt"/>
|
<line num="67" count="3" type="stmt"/>
|
||||||
<line num="68" count="3" type="stmt"/>
|
<line num="68" count="3" type="stmt"/>
|
||||||
<line num="69" count="3" type="stmt"/>
|
<line num="69" count="3" type="stmt"/>
|
||||||
<line num="70" count="3" type="cond" truecount="0" falsecount="1"/>
|
<line num="70" count="3" type="stmt"/>
|
||||||
<line num="71" count="3" type="stmt"/>
|
<line num="71" count="3" type="stmt"/>
|
||||||
<line num="72" count="3" type="stmt"/>
|
<line num="72" count="3" type="stmt"/>
|
||||||
<line num="73" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="73" count="3" type="stmt"/>
|
||||||
<line num="74" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="74" count="3" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="75" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="75" count="3" type="stmt"/>
|
||||||
<line num="76" count="3" type="stmt"/>
|
<line num="76" count="3" type="stmt"/>
|
||||||
<line num="77" count="3" type="stmt"/>
|
<line num="77" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="78" count="3" type="stmt"/>
|
<line num="78" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="79" count="3" type="stmt"/>
|
<line num="79" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="80" count="3" type="stmt"/>
|
<line num="80" count="3" type="stmt"/>
|
||||||
<line num="81" count="3" type="stmt"/>
|
<line num="81" count="3" type="stmt"/>
|
||||||
<line num="82" count="3" type="stmt"/>
|
<line num="82" count="3" type="stmt"/>
|
||||||
<line num="83" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="83" count="3" type="stmt"/>
|
||||||
<line num="84" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="84" count="3" type="stmt"/>
|
||||||
<line num="85" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="85" count="3" type="stmt"/>
|
||||||
<line num="86" count="3" type="stmt"/>
|
<line num="86" count="3" type="stmt"/>
|
||||||
<line num="87" count="3" type="stmt"/>
|
<line num="87" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="88" count="3" type="stmt"/>
|
<line num="88" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="89" count="1" type="stmt"/>
|
<line num="89" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="90" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="90" count="3" type="stmt"/>
|
||||||
<line num="91" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="91" count="3" type="stmt"/>
|
||||||
<line num="92" count="2" type="stmt"/>
|
<line num="92" count="3" type="stmt"/>
|
||||||
<line num="93" count="2" type="stmt"/>
|
<line num="93" count="3" type="stmt"/>
|
||||||
<line num="94" count="2" type="stmt"/>
|
<line num="94" count="3" type="stmt"/>
|
||||||
<line num="95" count="2" type="stmt"/>
|
<line num="95" count="1" type="stmt"/>
|
||||||
<line num="96" count="2" type="stmt"/>
|
<line num="96" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="97" count="2" type="stmt"/>
|
<line num="97" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="98" count="2" type="stmt"/>
|
<line num="98" count="2" type="stmt"/>
|
||||||
<line num="99" count="2" type="stmt"/>
|
<line num="99" count="2" type="stmt"/>
|
||||||
<line num="100" count="2" type="stmt"/>
|
<line num="100" count="2" type="stmt"/>
|
||||||
|
|
@ -496,239 +496,253 @@
|
||||||
<line num="104" count="2" type="stmt"/>
|
<line num="104" count="2" type="stmt"/>
|
||||||
<line num="105" count="2" type="stmt"/>
|
<line num="105" count="2" type="stmt"/>
|
||||||
<line num="106" count="2" type="stmt"/>
|
<line num="106" count="2" type="stmt"/>
|
||||||
<line num="107" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="107" count="2" type="stmt"/>
|
||||||
<line num="108" count="1" type="stmt"/>
|
<line num="108" count="2" type="stmt"/>
|
||||||
<line num="109" count="1" type="stmt"/>
|
<line num="109" count="2" type="stmt"/>
|
||||||
<line num="110" count="2" type="stmt"/>
|
<line num="110" count="2" type="stmt"/>
|
||||||
<line num="111" count="2" type="stmt"/>
|
<line num="111" count="2" type="stmt"/>
|
||||||
<line num="112" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="112" count="2" type="stmt"/>
|
||||||
<line num="113" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="113" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="114" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="114" count="1" type="stmt"/>
|
||||||
<line num="115" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="115" count="1" type="stmt"/>
|
||||||
<line num="116" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="116" count="2" type="stmt"/>
|
||||||
<line num="117" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="117" count="2" type="stmt"/>
|
||||||
<line num="118" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="118" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="119" count="2" type="stmt"/>
|
<line num="119" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="120" count="2" type="stmt"/>
|
<line num="120" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="121" count="2" type="stmt"/>
|
<line num="121" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="122" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="122" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="123" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="123" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="124" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="124" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="125" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="125" count="2" type="stmt"/>
|
||||||
<line num="126" count="2" type="stmt"/>
|
<line num="126" count="2" type="stmt"/>
|
||||||
<line num="127" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="127" count="2" type="stmt"/>
|
||||||
<line num="128" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="128" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="129" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="129" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="130" count="2" type="stmt"/>
|
<line num="130" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="131" count="2" type="stmt"/>
|
<line num="131" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="132" count="2" type="stmt"/>
|
<line num="132" count="2" type="stmt"/>
|
||||||
<line num="133" count="1" type="stmt"/>
|
<line num="133" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="134" count="0" type="stmt"/>
|
<line num="134" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="135" count="0" type="stmt"/>
|
<line num="135" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="136" count="0" type="stmt"/>
|
<line num="136" count="2" type="stmt"/>
|
||||||
<line num="137" count="0" type="stmt"/>
|
<line num="137" count="2" type="stmt"/>
|
||||||
<line num="138" count="0" type="stmt"/>
|
<line num="138" count="2" type="stmt"/>
|
||||||
<line num="139" count="0" type="stmt"/>
|
<line num="139" count="1" type="stmt"/>
|
||||||
<line num="140" count="0" type="stmt"/>
|
<line num="140" count="0" type="stmt"/>
|
||||||
<line num="141" count="0" type="stmt"/>
|
<line num="141" count="0" type="stmt"/>
|
||||||
<line num="142" count="0" type="stmt"/>
|
<line num="142" count="0" type="stmt"/>
|
||||||
<line num="143" count="0" type="stmt"/>
|
<line num="143" count="0" type="stmt"/>
|
||||||
<line num="144" count="0" type="stmt"/>
|
<line num="144" count="0" type="stmt"/>
|
||||||
<line num="145" count="0" type="stmt"/>
|
<line num="145" count="0" type="stmt"/>
|
||||||
<line num="146" count="1" type="stmt"/>
|
<line num="146" count="0" type="stmt"/>
|
||||||
<line num="147" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="147" count="0" type="stmt"/>
|
||||||
<line num="148" count="2" type="stmt"/>
|
<line num="148" count="0" type="stmt"/>
|
||||||
<line num="149" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="149" count="0" type="stmt"/>
|
||||||
<line num="150" count="1" type="stmt"/>
|
<line num="150" count="0" type="stmt"/>
|
||||||
<line num="151" count="1" type="stmt"/>
|
<line num="151" count="1" type="stmt"/>
|
||||||
<line num="152" count="1" type="stmt"/>
|
<line num="152" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="153" count="0" type="stmt"/>
|
<line num="153" count="2" type="stmt"/>
|
||||||
<line num="154" count="0" type="stmt"/>
|
<line num="154" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="155" count="0" type="stmt"/>
|
<line num="155" count="1" type="stmt"/>
|
||||||
<line num="156" count="0" type="stmt"/>
|
<line num="156" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="157" count="0" type="stmt"/>
|
<line num="157" count="1" type="stmt"/>
|
||||||
<line num="158" count="1" type="stmt"/>
|
<line num="158" count="1" type="stmt"/>
|
||||||
<line num="159" count="0" type="stmt"/>
|
<line num="159" count="1" type="stmt"/>
|
||||||
<line num="160" count="0" type="stmt"/>
|
<line num="160" count="0" type="stmt"/>
|
||||||
<line num="161" count="0" type="stmt"/>
|
<line num="161" count="0" type="stmt"/>
|
||||||
<line num="162" count="0" type="stmt"/>
|
<line num="162" count="0" type="stmt"/>
|
||||||
<line num="163" count="1" type="stmt"/>
|
<line num="163" count="0" type="stmt"/>
|
||||||
<line num="164" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="164" count="0" type="stmt"/>
|
||||||
<line num="165" count="2" type="stmt"/>
|
<line num="165" count="1" type="stmt"/>
|
||||||
<line num="166" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="166" count="0" type="stmt"/>
|
||||||
<line num="167" count="1" type="stmt"/>
|
<line num="167" count="0" type="stmt"/>
|
||||||
<line num="168" count="1" type="stmt"/>
|
<line num="168" count="0" type="stmt"/>
|
||||||
<line num="169" count="1" type="stmt"/>
|
<line num="169" count="0" type="stmt"/>
|
||||||
<line num="170" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="170" count="1" type="stmt"/>
|
||||||
<line num="171" count="2" type="stmt"/>
|
<line num="171" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="172" count="2" type="stmt"/>
|
<line num="172" count="2" type="stmt"/>
|
||||||
<line num="173" count="2" type="stmt"/>
|
<line num="173" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="174" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="174" count="1" type="stmt"/>
|
||||||
<line num="175" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="175" count="1" type="stmt"/>
|
||||||
<line num="176" count="2" type="stmt"/>
|
<line num="176" count="1" type="stmt"/>
|
||||||
<line num="177" count="1" type="stmt"/>
|
<line num="177" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="178" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="178" count="2" type="stmt"/>
|
||||||
<line num="179" count="1" type="stmt"/>
|
<line num="179" count="2" type="stmt"/>
|
||||||
<line num="180" count="1" type="stmt"/>
|
<line num="180" count="2" type="stmt"/>
|
||||||
<line num="181" count="1" type="stmt"/>
|
<line num="181" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="182" count="1" type="stmt"/>
|
<line num="182" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="183" count="1" type="stmt"/>
|
<line num="183" count="2" type="stmt"/>
|
||||||
<line num="184" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="184" count="1" type="stmt"/>
|
||||||
<line num="185" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="185" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="186" count="1" type="stmt"/>
|
<line num="186" count="1" type="stmt"/>
|
||||||
<line num="187" count="1" type="stmt"/>
|
<line num="187" count="1" type="stmt"/>
|
||||||
<line num="188" count="1" type="stmt"/>
|
<line num="188" count="1" type="stmt"/>
|
||||||
<line num="189" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="189" count="1" type="stmt"/>
|
||||||
<line num="190" count="3" type="stmt"/>
|
<line num="190" count="1" type="stmt"/>
|
||||||
<line num="191" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="191" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="192" count="1" type="stmt"/>
|
<line num="192" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="193" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="193" count="1" type="stmt"/>
|
||||||
<line num="194" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="194" count="1" type="stmt"/>
|
||||||
<line num="195" count="1" type="stmt"/>
|
<line num="195" count="1" type="stmt"/>
|
||||||
<line num="196" count="3" type="stmt"/>
|
<line num="196" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="197" count="3" type="cond" truecount="2" falsecount="0"/>
|
<line num="197" count="3" type="stmt"/>
|
||||||
<line num="198" count="3" type="cond" truecount="0" falsecount="1"/>
|
<line num="198" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="199" count="3" type="cond" truecount="1" falsecount="0"/>
|
<line num="199" count="1" type="stmt"/>
|
||||||
<line num="200" count="3" type="stmt"/>
|
<line num="200" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="201" count="1" type="stmt"/>
|
<line num="201" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="202" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="202" count="1" type="stmt"/>
|
||||||
<line num="203" count="2" type="stmt"/>
|
<line num="203" count="3" type="stmt"/>
|
||||||
<line num="204" count="2" type="stmt"/>
|
<line num="204" count="3" type="cond" truecount="2" falsecount="0"/>
|
||||||
<line num="205" count="1" type="stmt"/>
|
<line num="205" count="3" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="206" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="206" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="207" count="1" type="stmt"/>
|
<line num="207" count="3" type="stmt"/>
|
||||||
<line num="208" count="1" type="stmt"/>
|
<line num="208" count="1" type="stmt"/>
|
||||||
<line num="209" count="1" type="stmt"/>
|
<line num="209" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="210" count="1" type="stmt"/>
|
<line num="210" count="2" type="stmt"/>
|
||||||
<line num="211" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="211" count="2" type="stmt"/>
|
||||||
<line num="212" count="2" type="stmt"/>
|
<line num="212" count="1" type="stmt"/>
|
||||||
<line num="213" count="2" type="stmt"/>
|
<line num="213" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="214" count="2" type="stmt"/>
|
<line num="214" count="1" type="stmt"/>
|
||||||
<line num="215" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="215" count="1" type="stmt"/>
|
||||||
<line num="216" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="216" count="1" type="stmt"/>
|
||||||
<line num="217" count="2" type="stmt"/>
|
<line num="217" count="1" type="stmt"/>
|
||||||
<line num="218" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="218" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="219" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="219" count="2" type="stmt"/>
|
||||||
<line num="220" count="2" type="cond" truecount="1" falsecount="2"/>
|
<line num="220" count="2" type="stmt"/>
|
||||||
<line num="221" count="2" type="stmt"/>
|
<line num="221" count="2" type="stmt"/>
|
||||||
<line num="222" count="1" type="stmt"/>
|
<line num="222" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="223" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="223" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="224" count="1" type="stmt"/>
|
<line num="224" count="2" type="stmt"/>
|
||||||
<line num="225" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="225" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="226" count="1" type="stmt"/>
|
<line num="226" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="227" count="1" type="stmt"/>
|
<line num="227" count="2" type="cond" truecount="1" falsecount="2"/>
|
||||||
<line num="228" count="1" type="stmt"/>
|
<line num="228" count="2" type="stmt"/>
|
||||||
<line num="229" count="0" type="stmt"/>
|
<line num="229" count="1" type="stmt"/>
|
||||||
<line num="230" count="0" type="stmt"/>
|
<line num="230" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="231" count="0" type="stmt"/>
|
<line num="231" count="1" type="stmt"/>
|
||||||
<line num="232" count="0" type="stmt"/>
|
<line num="232" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="233" count="0" type="stmt"/>
|
<line num="233" count="1" type="stmt"/>
|
||||||
<line num="234" count="0" type="stmt"/>
|
<line num="234" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="235" count="0" type="stmt"/>
|
<line num="235" count="1" type="stmt"/>
|
||||||
<line num="236" count="0" type="stmt"/>
|
<line num="236" count="1" type="stmt"/>
|
||||||
<line num="237" count="0" type="stmt"/>
|
<line num="237" count="1" type="stmt"/>
|
||||||
<line num="238" count="0" type="stmt"/>
|
<line num="238" count="0" type="stmt"/>
|
||||||
<line num="239" count="0" type="stmt"/>
|
<line num="239" count="0" type="stmt"/>
|
||||||
<line num="240" count="0" type="stmt"/>
|
<line num="240" count="0" type="stmt"/>
|
||||||
<line num="241" count="0" type="stmt"/>
|
<line num="241" count="0" type="stmt"/>
|
||||||
<line num="242" count="0" type="stmt"/>
|
<line num="242" count="0" type="stmt"/>
|
||||||
<line num="243" count="0" type="stmt"/>
|
<line num="243" count="0" type="stmt"/>
|
||||||
<line num="244" count="1" type="stmt"/>
|
<line num="244" count="0" type="stmt"/>
|
||||||
<line num="245" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="245" count="0" type="stmt"/>
|
||||||
<line num="246" count="1" type="stmt"/>
|
<line num="246" count="0" type="stmt"/>
|
||||||
<line num="247" count="1" type="stmt"/>
|
<line num="247" count="0" type="stmt"/>
|
||||||
<line num="248" count="1" type="stmt"/>
|
<line num="248" count="0" type="stmt"/>
|
||||||
<line num="249" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="249" count="0" type="stmt"/>
|
||||||
<line num="250" count="1" type="stmt"/>
|
<line num="250" count="0" type="stmt"/>
|
||||||
<line num="251" count="1" type="stmt"/>
|
<line num="251" count="0" type="stmt"/>
|
||||||
<line num="252" count="1" type="stmt"/>
|
<line num="252" count="0" type="stmt"/>
|
||||||
<line num="253" count="0" type="stmt"/>
|
<line num="253" count="1" type="stmt"/>
|
||||||
<line num="254" count="0" type="stmt"/>
|
<line num="254" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="255" count="0" type="stmt"/>
|
<line num="255" count="1" type="stmt"/>
|
||||||
<line num="256" count="0" type="stmt"/>
|
<line num="256" count="1" type="stmt"/>
|
||||||
<line num="257" count="0" type="stmt"/>
|
<line num="257" count="1" type="stmt"/>
|
||||||
<line num="258" count="0" type="stmt"/>
|
<line num="258" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="259" count="1" type="stmt"/>
|
<line num="259" count="1" type="stmt"/>
|
||||||
<line num="260" count="1" type="stmt"/>
|
<line num="260" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="261" count="0" type="stmt"/>
|
<line num="261" count="1" type="stmt"/>
|
||||||
<line num="262" count="0" type="stmt"/>
|
<line num="262" count="1" type="stmt"/>
|
||||||
<line num="263" count="0" type="stmt"/>
|
<line num="263" count="1" type="stmt"/>
|
||||||
<line num="264" count="0" type="stmt"/>
|
<line num="264" count="0" type="stmt"/>
|
||||||
<line num="265" count="0" type="stmt"/>
|
<line num="265" count="0" type="stmt"/>
|
||||||
<line num="266" count="1" type="stmt"/>
|
<line num="266" count="0" type="stmt"/>
|
||||||
<line num="267" count="0" type="stmt"/>
|
<line num="267" count="0" type="stmt"/>
|
||||||
<line num="268" count="0" type="stmt"/>
|
<line num="268" count="0" type="stmt"/>
|
||||||
<line num="269" count="0" type="stmt"/>
|
<line num="269" count="0" type="stmt"/>
|
||||||
<line num="270" count="0" type="stmt"/>
|
<line num="270" count="1" type="stmt"/>
|
||||||
<line num="271" count="0" type="stmt"/>
|
<line num="271" count="1" type="stmt"/>
|
||||||
<line num="272" count="0" type="stmt"/>
|
<line num="272" count="0" type="stmt"/>
|
||||||
<line num="273" count="0" type="stmt"/>
|
<line num="273" count="0" type="stmt"/>
|
||||||
<line num="274" count="0" type="stmt"/>
|
<line num="274" count="0" type="stmt"/>
|
||||||
<line num="275" count="1" type="stmt"/>
|
<line num="275" count="0" type="stmt"/>
|
||||||
<line num="276" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="276" count="0" type="stmt"/>
|
||||||
<line num="277" count="1" type="stmt"/>
|
<line num="277" count="1" type="stmt"/>
|
||||||
<line num="278" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="278" count="0" type="stmt"/>
|
||||||
<line num="279" count="1" type="stmt"/>
|
<line num="279" count="0" type="stmt"/>
|
||||||
<line num="280" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="280" count="0" type="stmt"/>
|
||||||
<line num="281" count="1" type="stmt"/>
|
<line num="281" count="0" type="stmt"/>
|
||||||
<line num="282" count="1" type="stmt"/>
|
<line num="282" count="0" type="stmt"/>
|
||||||
<line num="283" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="283" count="0" type="stmt"/>
|
||||||
<line num="284" count="1" type="stmt"/>
|
<line num="284" count="0" type="stmt"/>
|
||||||
<line num="285" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="285" count="0" type="stmt"/>
|
||||||
<line num="286" count="1" type="stmt"/>
|
<line num="286" count="1" type="stmt"/>
|
||||||
<line num="287" count="1" type="stmt"/>
|
<line num="287" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="288" count="1" type="stmt"/>
|
<line num="288" count="1" type="stmt"/>
|
||||||
<line num="289" count="1" type="stmt"/>
|
<line num="289" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="290" count="1" type="stmt"/>
|
<line num="290" count="1" type="stmt"/>
|
||||||
<line num="291" count="1" type="stmt"/>
|
<line num="291" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="292" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="292" count="1" type="stmt"/>
|
||||||
<line num="293" count="2" type="stmt"/>
|
<line num="293" count="1" type="stmt"/>
|
||||||
<line num="294" count="2" type="stmt"/>
|
<line num="294" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="295" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="295" count="1" type="stmt"/>
|
||||||
<line num="296" count="2" type="stmt"/>
|
<line num="296" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="297" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="297" count="1" type="stmt"/>
|
||||||
<line num="298" count="2" type="stmt"/>
|
<line num="298" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="299" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="299" count="1" type="stmt"/>
|
||||||
<line num="300" count="0" type="stmt"/>
|
<line num="300" count="1" type="stmt"/>
|
||||||
<line num="301" count="0" type="stmt"/>
|
<line num="301" count="1" type="stmt"/>
|
||||||
<line num="302" count="0" type="stmt"/>
|
<line num="302" count="1" type="stmt"/>
|
||||||
<line num="303" count="0" type="stmt"/>
|
<line num="303" count="1" type="stmt"/>
|
||||||
<line num="304" count="0" type="stmt"/>
|
<line num="304" count="1" type="stmt"/>
|
||||||
<line num="305" count="0" type="stmt"/>
|
<line num="305" count="1" type="stmt"/>
|
||||||
<line num="306" count="0" type="stmt"/>
|
<line num="306" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="307" count="2" type="stmt"/>
|
<line num="307" count="2" type="stmt"/>
|
||||||
<line num="308" count="2" type="stmt"/>
|
<line num="308" count="2" type="stmt"/>
|
||||||
<line num="309" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="309" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="310" count="2" type="stmt"/>
|
<line num="310" count="2" type="stmt"/>
|
||||||
<line num="311" count="2" type="stmt"/>
|
<line num="311" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="312" count="2" type="stmt"/>
|
<line num="312" count="2" type="stmt"/>
|
||||||
<line num="313" count="2" type="stmt"/>
|
<line num="313" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="314" count="2" type="stmt"/>
|
<line num="314" count="0" type="stmt"/>
|
||||||
<line num="315" count="2" type="stmt"/>
|
<line num="315" count="0" type="stmt"/>
|
||||||
<line num="316" count="2" type="stmt"/>
|
<line num="316" count="0" type="stmt"/>
|
||||||
<line num="317" count="2" type="stmt"/>
|
<line num="317" count="0" type="stmt"/>
|
||||||
<line num="318" count="2" type="stmt"/>
|
<line num="318" count="0" type="stmt"/>
|
||||||
<line num="319" count="2" type="stmt"/>
|
<line num="319" count="0" type="stmt"/>
|
||||||
<line num="320" count="2" type="stmt"/>
|
<line num="320" count="0" type="stmt"/>
|
||||||
<line num="321" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="321" count="2" type="stmt"/>
|
||||||
<line num="322" count="1" type="stmt"/>
|
<line num="322" count="2" type="stmt"/>
|
||||||
<line num="323" count="2" type="cond" truecount="0" falsecount="1"/>
|
<line num="323" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="324" count="2" type="stmt"/>
|
<line num="324" count="2" type="stmt"/>
|
||||||
<line num="325" count="1" type="stmt"/>
|
<line num="325" count="2" type="stmt"/>
|
||||||
<line num="326" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="326" count="2" type="stmt"/>
|
||||||
<line num="327" count="1" type="stmt"/>
|
<line num="327" count="2" type="stmt"/>
|
||||||
<line num="328" count="1" type="stmt"/>
|
<line num="328" count="2" type="stmt"/>
|
||||||
<line num="329" count="1" type="stmt"/>
|
<line num="329" count="2" type="stmt"/>
|
||||||
<line num="330" count="1" type="stmt"/>
|
<line num="330" count="2" type="stmt"/>
|
||||||
<line num="331" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="331" count="2" type="stmt"/>
|
||||||
<line num="332" count="1" type="stmt"/>
|
<line num="332" count="2" type="stmt"/>
|
||||||
<line num="333" count="1" type="stmt"/>
|
<line num="333" count="2" type="stmt"/>
|
||||||
<line num="334" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="334" count="2" type="stmt"/>
|
||||||
<line num="335" count="1" type="stmt"/>
|
<line num="335" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="336" count="1" type="stmt"/>
|
<line num="336" count="1" type="stmt"/>
|
||||||
<line num="337" count="1" type="stmt"/>
|
<line num="337" count="2" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="338" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="338" count="2" type="stmt"/>
|
||||||
<line num="339" count="1" type="stmt"/>
|
<line num="339" count="1" type="stmt"/>
|
||||||
|
<line num="340" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
|
<line num="341" count="1" type="stmt"/>
|
||||||
|
<line num="342" count="1" type="stmt"/>
|
||||||
|
<line num="343" count="1" type="stmt"/>
|
||||||
|
<line num="344" count="1" type="stmt"/>
|
||||||
|
<line num="345" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
|
<line num="346" count="1" type="stmt"/>
|
||||||
|
<line num="347" count="1" type="stmt"/>
|
||||||
|
<line num="348" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
|
<line num="349" count="1" type="stmt"/>
|
||||||
|
<line num="350" count="1" type="stmt"/>
|
||||||
|
<line num="351" count="1" type="stmt"/>
|
||||||
|
<line num="352" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
|
<line num="353" count="1" type="stmt"/>
|
||||||
</file>
|
</file>
|
||||||
</package>
|
</package>
|
||||||
<package name="munch-ease-frontend.src.components">
|
<package name="munch-ease-frontend.src.components">
|
||||||
|
|
@ -1320,7 +1334,7 @@
|
||||||
</file>
|
</file>
|
||||||
</package>
|
</package>
|
||||||
<package name="munch-ease-frontend.src.components.meals">
|
<package name="munch-ease-frontend.src.components.meals">
|
||||||
<metrics statements="945" coveredstatements="0" conditionals="5" coveredconditionals="0" methods="5" coveredmethods="0"/>
|
<metrics statements="934" coveredstatements="0" conditionals="5" coveredconditionals="0" methods="5" coveredmethods="0"/>
|
||||||
<file name="DatePicker.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/meals/DatePicker.vue">
|
<file name="DatePicker.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/meals/DatePicker.vue">
|
||||||
<metrics statements="111" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="111" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
||||||
|
|
@ -1436,7 +1450,7 @@
|
||||||
<line num="111" count="0" type="stmt"/>
|
<line num="111" count="0" type="stmt"/>
|
||||||
</file>
|
</file>
|
||||||
<file name="EditMealPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/meals/EditMealPage.vue">
|
<file name="EditMealPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/meals/EditMealPage.vue">
|
||||||
<metrics statements="389" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="386" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="2" count="0" type="stmt"/>
|
<line num="2" count="0" type="stmt"/>
|
||||||
<line num="3" count="0" type="stmt"/>
|
<line num="3" count="0" type="stmt"/>
|
||||||
|
|
@ -1823,12 +1837,9 @@
|
||||||
<line num="384" count="0" type="stmt"/>
|
<line num="384" count="0" type="stmt"/>
|
||||||
<line num="385" count="0" type="stmt"/>
|
<line num="385" count="0" type="stmt"/>
|
||||||
<line num="386" count="0" type="stmt"/>
|
<line num="386" count="0" type="stmt"/>
|
||||||
<line num="387" count="0" type="stmt"/>
|
|
||||||
<line num="388" count="0" type="stmt"/>
|
|
||||||
<line num="389" count="0" type="stmt"/>
|
|
||||||
</file>
|
</file>
|
||||||
<file name="MealCard.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/meals/MealCard.vue">
|
<file name="MealCard.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/meals/MealCard.vue">
|
||||||
<metrics statements="98" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="90" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="2" count="0" type="stmt"/>
|
<line num="2" count="0" type="stmt"/>
|
||||||
<line num="3" count="0" type="stmt"/>
|
<line num="3" count="0" type="stmt"/>
|
||||||
|
|
@ -1919,14 +1930,6 @@
|
||||||
<line num="88" count="0" type="stmt"/>
|
<line num="88" count="0" type="stmt"/>
|
||||||
<line num="89" count="0" type="stmt"/>
|
<line num="89" count="0" type="stmt"/>
|
||||||
<line num="90" count="0" type="stmt"/>
|
<line num="90" count="0" type="stmt"/>
|
||||||
<line num="91" count="0" type="stmt"/>
|
|
||||||
<line num="92" count="0" type="stmt"/>
|
|
||||||
<line num="93" count="0" type="stmt"/>
|
|
||||||
<line num="94" count="0" type="stmt"/>
|
|
||||||
<line num="95" count="0" type="stmt"/>
|
|
||||||
<line num="96" count="0" type="stmt"/>
|
|
||||||
<line num="97" count="0" type="stmt"/>
|
|
||||||
<line num="98" count="0" type="stmt"/>
|
|
||||||
</file>
|
</file>
|
||||||
<file name="MealPlanPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/meals/MealPlanPage.vue">
|
<file name="MealPlanPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/meals/MealPlanPage.vue">
|
||||||
<metrics statements="143" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="143" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
|
|
@ -2848,7 +2851,7 @@
|
||||||
</file>
|
</file>
|
||||||
</package>
|
</package>
|
||||||
<package name="munch-ease-frontend.src.components.shopping">
|
<package name="munch-ease-frontend.src.components.shopping">
|
||||||
<metrics statements="814" coveredstatements="0" conditionals="5" coveredconditionals="0" methods="5" coveredmethods="0"/>
|
<metrics statements="815" coveredstatements="0" conditionals="5" coveredconditionals="0" methods="5" coveredmethods="0"/>
|
||||||
<file name="CurrentShoppingListPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/shopping/CurrentShoppingListPage.vue">
|
<file name="CurrentShoppingListPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/shopping/CurrentShoppingListPage.vue">
|
||||||
<metrics statements="275" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="275" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
||||||
|
|
@ -3294,7 +3297,7 @@
|
||||||
<line num="163" count="0" type="stmt"/>
|
<line num="163" count="0" type="stmt"/>
|
||||||
</file>
|
</file>
|
||||||
<file name="MyShoppingPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/shopping/MyShoppingPage.vue">
|
<file name="MyShoppingPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/shopping/MyShoppingPage.vue">
|
||||||
<metrics statements="90" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="88" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="2" count="0" type="stmt"/>
|
<line num="2" count="0" type="stmt"/>
|
||||||
<line num="3" count="0" type="stmt"/>
|
<line num="3" count="0" type="stmt"/>
|
||||||
|
|
@ -3383,8 +3386,6 @@
|
||||||
<line num="86" count="0" type="stmt"/>
|
<line num="86" count="0" type="stmt"/>
|
||||||
<line num="87" count="0" type="stmt"/>
|
<line num="87" count="0" type="stmt"/>
|
||||||
<line num="88" count="0" type="stmt"/>
|
<line num="88" count="0" type="stmt"/>
|
||||||
<line num="89" count="0" type="stmt"/>
|
|
||||||
<line num="90" count="0" type="stmt"/>
|
|
||||||
</file>
|
</file>
|
||||||
<file name="PurchasedShoppingListPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/shopping/PurchasedShoppingListPage.vue">
|
<file name="PurchasedShoppingListPage.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/shopping/PurchasedShoppingListPage.vue">
|
||||||
<metrics statements="67" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="67" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
|
|
@ -3457,7 +3458,7 @@
|
||||||
<line num="67" count="0" type="stmt"/>
|
<line num="67" count="0" type="stmt"/>
|
||||||
</file>
|
</file>
|
||||||
<file name="ShoppingListItem.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/shopping/ShoppingListItem.vue">
|
<file name="ShoppingListItem.vue" path="/home/jables/source/doof/munch-ease-frontend/src/components/shopping/ShoppingListItem.vue">
|
||||||
<metrics statements="219" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
<metrics statements="222" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
|
||||||
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
<line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="2" count="0" type="stmt"/>
|
<line num="2" count="0" type="stmt"/>
|
||||||
<line num="3" count="0" type="stmt"/>
|
<line num="3" count="0" type="stmt"/>
|
||||||
|
|
@ -3677,6 +3678,9 @@
|
||||||
<line num="217" count="0" type="stmt"/>
|
<line num="217" count="0" type="stmt"/>
|
||||||
<line num="218" count="0" type="stmt"/>
|
<line num="218" count="0" type="stmt"/>
|
||||||
<line num="219" count="0" type="stmt"/>
|
<line num="219" count="0" type="stmt"/>
|
||||||
|
<line num="220" count="0" type="stmt"/>
|
||||||
|
<line num="221" count="0" type="stmt"/>
|
||||||
|
<line num="222" count="0" type="stmt"/>
|
||||||
</file>
|
</file>
|
||||||
</package>
|
</package>
|
||||||
<package name="munch-ease-frontend.src.composables">
|
<package name="munch-ease-frontend.src.composables">
|
||||||
|
|
@ -3939,9 +3943,9 @@
|
||||||
</file>
|
</file>
|
||||||
</package>
|
</package>
|
||||||
<package name="munch-ease-frontend.src.domain">
|
<package name="munch-ease-frontend.src.domain">
|
||||||
<metrics statements="133" coveredstatements="107" conditionals="44" coveredconditionals="33" methods="13" coveredmethods="10"/>
|
<metrics statements="129" coveredstatements="105" conditionals="42" coveredconditionals="31" methods="12" coveredmethods="10"/>
|
||||||
<file name="decoders.ts" path="/home/jables/source/doof/munch-ease-frontend/src/domain/decoders.ts">
|
<file name="decoders.ts" path="/home/jables/source/doof/munch-ease-frontend/src/domain/decoders.ts">
|
||||||
<metrics statements="120" coveredstatements="94" conditionals="40" coveredconditionals="31" methods="12" coveredmethods="9"/>
|
<metrics statements="116" coveredstatements="92" conditionals="38" coveredconditionals="29" methods="11" coveredmethods="9"/>
|
||||||
<line num="1" count="1" type="stmt"/>
|
<line num="1" count="1" type="stmt"/>
|
||||||
<line num="2" count="1" type="stmt"/>
|
<line num="2" count="1" type="stmt"/>
|
||||||
<line num="3" count="1" type="stmt"/>
|
<line num="3" count="1" type="stmt"/>
|
||||||
|
|
@ -3976,75 +3980,75 @@
|
||||||
<line num="32" count="4" type="stmt"/>
|
<line num="32" count="4" type="stmt"/>
|
||||||
<line num="33" count="4" type="stmt"/>
|
<line num="33" count="4" type="stmt"/>
|
||||||
<line num="34" count="1" type="stmt"/>
|
<line num="34" count="1" type="stmt"/>
|
||||||
<line num="35" count="1" type="stmt"/>
|
<line num="35" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="36" count="0" type="stmt"/>
|
<line num="36" count="9" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="37" count="0" type="stmt"/>
|
<line num="37" count="9" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="38" count="0" type="stmt"/>
|
<line num="38" count="2" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="39" count="1" type="stmt"/>
|
<line num="39" count="7" type="stmt"/>
|
||||||
<line num="40" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="40" count="9" type="stmt"/>
|
||||||
<line num="41" count="9" type="cond" truecount="0" falsecount="1"/>
|
<line num="41" count="9" type="stmt"/>
|
||||||
<line num="42" count="9" type="cond" truecount="1" falsecount="0"/>
|
<line num="42" count="9" type="stmt"/>
|
||||||
<line num="43" count="2" type="cond" truecount="1" falsecount="0"/>
|
<line num="43" count="9" type="stmt"/>
|
||||||
<line num="44" count="7" type="stmt"/>
|
<line num="44" count="9" type="stmt"/>
|
||||||
<line num="45" count="9" type="stmt"/>
|
<line num="45" count="9" type="stmt"/>
|
||||||
<line num="46" count="9" type="stmt"/>
|
<line num="46" count="9" type="stmt"/>
|
||||||
<line num="47" count="9" type="stmt"/>
|
<line num="47" count="9" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="48" count="9" type="stmt"/>
|
<line num="48" count="9" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="49" count="9" type="stmt"/>
|
<line num="49" count="9" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="50" count="9" type="stmt"/>
|
<line num="50" count="9" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="51" count="9" type="stmt"/>
|
<line num="51" count="9" type="stmt"/>
|
||||||
<line num="52" count="9" type="cond" truecount="1" falsecount="0"/>
|
<line num="52" count="9" type="stmt"/>
|
||||||
<line num="53" count="9" type="cond" truecount="1" falsecount="0"/>
|
<line num="53" count="1" type="stmt"/>
|
||||||
<line num="54" count="9" type="cond" truecount="1" falsecount="0"/>
|
<line num="54" count="0" type="stmt"/>
|
||||||
<line num="55" count="9" type="cond" truecount="1" falsecount="0"/>
|
<line num="55" count="0" type="stmt"/>
|
||||||
<line num="56" count="9" type="stmt"/>
|
<line num="56" count="0" type="stmt"/>
|
||||||
<line num="57" count="9" type="stmt"/>
|
<line num="57" count="0" type="stmt"/>
|
||||||
<line num="58" count="1" type="stmt"/>
|
<line num="58" count="0" type="stmt"/>
|
||||||
<line num="59" count="1" type="stmt"/>
|
<line num="59" count="0" type="stmt"/>
|
||||||
<line num="60" count="0" type="stmt"/>
|
<line num="60" count="0" type="stmt"/>
|
||||||
<line num="61" count="0" type="stmt"/>
|
<line num="61" count="1" type="stmt"/>
|
||||||
<line num="62" count="0" type="stmt"/>
|
<line num="62" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="63" count="0" type="stmt"/>
|
<line num="63" count="3" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="64" count="0" type="stmt"/>
|
<line num="64" count="3" type="stmt"/>
|
||||||
<line num="65" count="0" type="stmt"/>
|
<line num="65" count="3" type="stmt"/>
|
||||||
<line num="66" count="1" type="stmt"/>
|
<line num="66" count="3" type="stmt"/>
|
||||||
<line num="67" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="67" count="1" type="stmt"/>
|
||||||
<line num="68" count="3" type="cond" truecount="0" falsecount="1"/>
|
<line num="68" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="69" count="3" type="stmt"/>
|
<line num="69" count="1" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="70" count="3" type="stmt"/>
|
<line num="70" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="71" count="3" type="stmt"/>
|
<line num="71" count="1" type="stmt"/>
|
||||||
<line num="72" count="1" type="stmt"/>
|
<line num="72" count="1" type="stmt"/>
|
||||||
<line num="73" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="73" count="3" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="74" count="1" type="cond" truecount="0" falsecount="1"/>
|
<line num="74" count="3" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="75" count="1" type="cond" truecount="2" falsecount="0"/>
|
<line num="75" count="3" type="stmt"/>
|
||||||
<line num="76" count="1" type="stmt"/>
|
<line num="76" count="3" type="stmt"/>
|
||||||
<line num="77" count="1" type="stmt"/>
|
<line num="77" count="3" type="stmt"/>
|
||||||
<line num="78" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="78" count="3" type="stmt"/>
|
||||||
<line num="79" count="3" type="cond" truecount="0" falsecount="1"/>
|
<line num="79" count="3" type="stmt"/>
|
||||||
<line num="80" count="3" type="stmt"/>
|
<line num="80" count="1" type="stmt"/>
|
||||||
<line num="81" count="3" type="stmt"/>
|
<line num="81" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="82" count="3" type="stmt"/>
|
<line num="82" count="12" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="83" count="3" type="stmt"/>
|
<line num="83" count="12" type="stmt"/>
|
||||||
<line num="84" count="3" type="stmt"/>
|
<line num="84" count="12" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="85" count="1" type="stmt"/>
|
<line num="85" count="12" type="stmt"/>
|
||||||
<line num="86" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="86" count="1" type="stmt"/>
|
||||||
<line num="87" count="12" type="cond" truecount="0" falsecount="1"/>
|
<line num="87" count="1" type="cond" truecount="1" falsecount="0"/>
|
||||||
<line num="88" count="12" type="cond" truecount="2" falsecount="0"/>
|
<line num="88" count="4" type="cond" truecount="0" falsecount="1"/>
|
||||||
<line num="89" count="12" type="stmt"/>
|
<line num="89" count="4" type="stmt"/>
|
||||||
<line num="90" count="1" type="stmt"/>
|
<line num="90" count="4" type="cond" truecount="2" falsecount="0"/>
|
||||||
<line num="91" count="1" type="cond" truecount="1" falsecount="0"/>
|
<line num="91" count="4" type="stmt"/>
|
||||||
<line num="92" count="4" type="cond" truecount="0" falsecount="1"/>
|
<line num="92" count="4" type="stmt"/>
|
||||||
<line num="93" count="4" type="stmt"/>
|
<line num="93" count="4" type="stmt"/>
|
||||||
<line num="94" count="4" type="cond" truecount="2" falsecount="0"/>
|
<line num="94" count="4" type="cond" truecount="2" falsecount="0"/>
|
||||||
<line num="95" count="4" type="stmt"/>
|
<line num="95" count="4" type="stmt"/>
|
||||||
<line num="96" count="4" type="stmt"/>
|
<line num="96" count="4" type="stmt"/>
|
||||||
<line num="97" count="4" type="stmt"/>
|
<line num="97" count="1" type="stmt"/>
|
||||||
<line num="98" count="4" type="cond" truecount="2" falsecount="0"/>
|
<line num="98" count="1" type="stmt"/>
|
||||||
<line num="99" count="4" type="stmt"/>
|
<line num="99" count="1" type="stmt"/>
|
||||||
<line num="100" count="4" type="stmt"/>
|
<line num="100" count="0" type="stmt"/>
|
||||||
<line num="101" count="1" type="stmt"/>
|
<line num="101" count="0" type="stmt"/>
|
||||||
<line num="102" count="1" type="stmt"/>
|
<line num="102" count="0" type="stmt"/>
|
||||||
<line num="103" count="1" type="stmt"/>
|
<line num="103" count="0" type="stmt"/>
|
||||||
<line num="104" count="0" type="stmt"/>
|
<line num="104" count="0" type="stmt"/>
|
||||||
<line num="105" count="0" type="stmt"/>
|
<line num="105" count="0" type="stmt"/>
|
||||||
<line num="106" count="0" type="stmt"/>
|
<line num="106" count="0" type="stmt"/>
|
||||||
|
|
@ -4058,10 +4062,6 @@
|
||||||
<line num="114" count="0" type="stmt"/>
|
<line num="114" count="0" type="stmt"/>
|
||||||
<line num="115" count="0" type="stmt"/>
|
<line num="115" count="0" type="stmt"/>
|
||||||
<line num="116" count="0" type="stmt"/>
|
<line num="116" count="0" type="stmt"/>
|
||||||
<line num="117" count="0" type="stmt"/>
|
|
||||||
<line num="118" count="0" type="stmt"/>
|
|
||||||
<line num="119" count="0" type="stmt"/>
|
|
||||||
<line num="120" count="0" type="stmt"/>
|
|
||||||
</file>
|
</file>
|
||||||
<file name="pagination.ts" path="/home/jables/source/doof/munch-ease-frontend/src/domain/pagination.ts">
|
<file name="pagination.ts" path="/home/jables/source/doof/munch-ease-frontend/src/domain/pagination.ts">
|
||||||
<metrics statements="13" coveredstatements="13" conditionals="4" coveredconditionals="2" methods="1" coveredmethods="1"/>
|
<metrics statements="13" coveredstatements="13" conditionals="4" coveredconditionals="2" methods="1" coveredmethods="1"/>
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -23,30 +23,30 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">13.79% </span>
|
<span class="strong">14.11% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>558/4046</span>
|
<span class='fraction'>571/4046</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">53.72% </span>
|
<span class="strong">52.1% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>101/188</span>
|
<span class='fraction'>99/190</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">48.1% </span>
|
<span class="strong">48.71% </span>
|
||||||
<span class="quiet">Functions</span>
|
<span class="quiet">Functions</span>
|
||||||
<span class='fraction'>38/79</span>
|
<span class='fraction'>38/78</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">13.79% </span>
|
<span class="strong">14.11% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>558/4046</span>
|
<span class='fraction'>571/4046</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -125,17 +125,17 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file medium" data-value="munch-ease-frontend/src/api"><a href="munch-ease-frontend/src/api/index.html">munch-ease-frontend/src/api</a></td>
|
<td class="file medium" data-value="munch-ease-frontend/src/api"><a href="munch-ease-frontend/src/api/index.html">munch-ease-frontend/src/api</a></td>
|
||||||
<td data-value="76.34" class="pic medium">
|
<td data-value="77.41" class="pic medium">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 76%"></div><div class="cover-empty" style="width: 24%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="76.34" class="pct medium">76.34%</td>
|
<td data-value="77.41" class="pct medium">77.41%</td>
|
||||||
<td data-value="389" class="abs medium">297/389</td>
|
<td data-value="403" class="abs medium">312/403</td>
|
||||||
<td data-value="57.3" class="pct medium">57.3%</td>
|
<td data-value="54.83" class="pct medium">54.83%</td>
|
||||||
<td data-value="89" class="abs medium">51/89</td>
|
<td data-value="93" class="abs medium">51/93</td>
|
||||||
<td data-value="71.42" class="pct medium">71.42%</td>
|
<td data-value="71.42" class="pct medium">71.42%</td>
|
||||||
<td data-value="28" class="abs medium">20/28</td>
|
<td data-value="28" class="abs medium">20/28</td>
|
||||||
<td data-value="76.34" class="pct medium">76.34%</td>
|
<td data-value="77.41" class="pct medium">77.41%</td>
|
||||||
<td data-value="389" class="abs medium">297/389</td>
|
<td data-value="403" class="abs medium">312/403</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -174,13 +174,13 @@
|
||||||
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="945" class="abs low">0/945</td>
|
<td data-value="934" class="abs low">0/934</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="5" class="abs low">0/5</td>
|
<td data-value="5" class="abs low">0/5</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="5" class="abs low">0/5</td>
|
<td data-value="5" class="abs low">0/5</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="945" class="abs low">0/945</td>
|
<td data-value="934" class="abs low">0/934</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -204,13 +204,13 @@
|
||||||
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="814" class="abs low">0/814</td>
|
<td data-value="815" class="abs low">0/815</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="5" class="abs low">0/5</td>
|
<td data-value="5" class="abs low">0/5</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="5" class="abs low">0/5</td>
|
<td data-value="5" class="abs low">0/5</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="814" class="abs low">0/814</td>
|
<td data-value="815" class="abs low">0/815</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -230,17 +230,17 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file high" data-value="munch-ease-frontend/src/domain"><a href="munch-ease-frontend/src/domain/index.html">munch-ease-frontend/src/domain</a></td>
|
<td class="file high" data-value="munch-ease-frontend/src/domain"><a href="munch-ease-frontend/src/domain/index.html">munch-ease-frontend/src/domain</a></td>
|
||||||
<td data-value="80.45" class="pic high">
|
<td data-value="81.39" class="pic high">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="80.45" class="pct high">80.45%</td>
|
<td data-value="81.39" class="pct high">81.39%</td>
|
||||||
<td data-value="133" class="abs high">107/133</td>
|
<td data-value="129" class="abs high">105/129</td>
|
||||||
<td data-value="75" class="pct medium">75%</td>
|
<td data-value="73.8" class="pct medium">73.8%</td>
|
||||||
<td data-value="44" class="abs medium">33/44</td>
|
<td data-value="42" class="abs medium">31/42</td>
|
||||||
<td data-value="76.92" class="pct medium">76.92%</td>
|
<td data-value="83.33" class="pct high">83.33%</td>
|
||||||
<td data-value="13" class="abs medium">10/13</td>
|
<td data-value="12" class="abs high">10/12</td>
|
||||||
<td data-value="80.45" class="pct high">80.45%</td>
|
<td data-value="81.39" class="pct high">81.39%</td>
|
||||||
<td data-value="133" class="abs high">107/133</td>
|
<td data-value="129" class="abs high">105/129</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -266,7 +266,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="prettify.js"></script>
|
<script src="prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../prettify.js"></script>
|
<script src="../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -364,7 +364,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ export const api = createClient<paths>({
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,16 +23,16 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">76.34% </span>
|
<span class="strong">77.41% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>297/389</span>
|
<span class='fraction'>312/403</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">57.3% </span>
|
<span class="strong">54.83% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>51/89</span>
|
<span class='fraction'>51/93</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">76.34% </span>
|
<span class="strong">77.41% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>297/389</span>
|
<span class='fraction'>312/403</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -110,17 +110,17 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file high" data-value="sdk.ts"><a href="sdk.ts.html">sdk.ts</a></td>
|
<td class="file high" data-value="sdk.ts"><a href="sdk.ts.html">sdk.ts</a></td>
|
||||||
<td data-value="81.71" class="pic high">
|
<td data-value="82.71" class="pic high">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 82%"></div><div class="cover-empty" style="width: 18%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="81.71" class="pct high">81.71%</td>
|
<td data-value="82.71" class="pct high">82.71%</td>
|
||||||
<td data-value="339" class="abs high">277/339</td>
|
<td data-value="353" class="abs high">292/353</td>
|
||||||
<td data-value="59.52" class="pct medium">59.52%</td>
|
<td data-value="56.81" class="pct medium">56.81%</td>
|
||||||
<td data-value="84" class="abs medium">50/84</td>
|
<td data-value="88" class="abs medium">50/88</td>
|
||||||
<td data-value="73.07" class="pct medium">73.07%</td>
|
<td data-value="73.07" class="pct medium">73.07%</td>
|
||||||
<td data-value="26" class="abs medium">19/26</td>
|
<td data-value="26" class="abs medium">19/26</td>
|
||||||
<td data-value="81.71" class="pct high">81.71%</td>
|
<td data-value="82.71" class="pct high">82.71%</td>
|
||||||
<td data-value="339" class="abs high">277/339</td>
|
<td data-value="353" class="abs high">292/353</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
@ -131,7 +131,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,16 +23,16 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">81.71% </span>
|
<span class="strong">82.71% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>277/339</span>
|
<span class='fraction'>292/353</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">59.52% </span>
|
<span class="strong">56.81% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>50/84</span>
|
<span class='fraction'>50/88</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">81.71% </span>
|
<span class="strong">82.71% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>277/339</span>
|
<span class='fraction'>292/353</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -402,7 +402,21 @@
|
||||||
<a name='L337'></a><a href='#L337'>337</a>
|
<a name='L337'></a><a href='#L337'>337</a>
|
||||||
<a name='L338'></a><a href='#L338'>338</a>
|
<a name='L338'></a><a href='#L338'>338</a>
|
||||||
<a name='L339'></a><a href='#L339'>339</a>
|
<a name='L339'></a><a href='#L339'>339</a>
|
||||||
<a name='L340'></a><a href='#L340'>340</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
<a name='L340'></a><a href='#L340'>340</a>
|
||||||
|
<a name='L341'></a><a href='#L341'>341</a>
|
||||||
|
<a name='L342'></a><a href='#L342'>342</a>
|
||||||
|
<a name='L343'></a><a href='#L343'>343</a>
|
||||||
|
<a name='L344'></a><a href='#L344'>344</a>
|
||||||
|
<a name='L345'></a><a href='#L345'>345</a>
|
||||||
|
<a name='L346'></a><a href='#L346'>346</a>
|
||||||
|
<a name='L347'></a><a href='#L347'>347</a>
|
||||||
|
<a name='L348'></a><a href='#L348'>348</a>
|
||||||
|
<a name='L349'></a><a href='#L349'>349</a>
|
||||||
|
<a name='L350'></a><a href='#L350'>350</a>
|
||||||
|
<a name='L351'></a><a href='#L351'>351</a>
|
||||||
|
<a name='L352'></a><a href='#L352'>352</a>
|
||||||
|
<a name='L353'></a><a href='#L353'>353</a>
|
||||||
|
<a name='L354'></a><a href='#L354'>354</a></td><td class="line-coverage quiet"><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-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
|
@ -453,6 +467,10 @@
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</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>
|
||||||
|
|
@ -490,6 +508,8 @@
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</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-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
|
@ -546,7 +566,6 @@
|
||||||
<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-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">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
|
@ -554,6 +573,8 @@
|
||||||
<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-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-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-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -630,6 +651,8 @@
|
||||||
<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-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-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-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -654,6 +677,8 @@
|
||||||
<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-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-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-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -693,6 +718,9 @@
|
||||||
<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-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-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
|
@ -778,17 +806,21 @@ function attachItemRefs(
|
||||||
const listId = item.<span class="branch-0 cbranch-no" title="branch not covered" >listId ?? undefined</span>
|
const listId = item.<span class="branch-0 cbranch-no" title="branch not covered" >listId ?? undefined</span>
|
||||||
const created = item.createdDate
|
const created = item.createdDate
|
||||||
|
|
||||||
if (ingredientId !== undefined && lookups.ingredientsLookup && lookups.ingredientsLookup[String(ingredientId)] !== undefined) {
|
if (ingredientId !== undefined && lookups.ingredientsLookup) {
|
||||||
item.ingredient = lookups.ingredientsLookup[String(ingredientId)]
|
const v = lookups.ingredientsLookup[String(ingredientId)]
|
||||||
|
if (v !== undefined) item.ingredient = v
|
||||||
}
|
}
|
||||||
if (mealId !== undefined && lookups.mealsLookup && lookups.mealsLookup[String(mealId)] !== undefined) {
|
if (mealId !== undefined && lookups.mealsLookup) {
|
||||||
item.meal = lookups.mealsLookup[String(mealId)]
|
const v = lookups.mealsLookup[String(mealId)]
|
||||||
|
if (v !== undefined) item.meal = v
|
||||||
}
|
}
|
||||||
if (recipeId !== undefined && lookups.recipesLookup && lookups.recipesLookup[String(recipeId)] !== undefined) {
|
if (recipeId !== undefined && lookups.recipesLookup) {
|
||||||
item.recipe = lookups.recipesLookup[String(recipeId)]
|
const v = lookups.recipesLookup[String(recipeId)]
|
||||||
|
if (v !== undefined) item.recipe = v
|
||||||
}
|
}
|
||||||
if (listId !== undefined && lookups.shoppingListLookup && lookups.shoppingListLookup[String(listId)] !== undefined) {
|
if (listId !== undefined && lookups.shoppingListLookup) {
|
||||||
item.list = lookups.shoppingListLookup[String(listId)]
|
const v = lookups.shoppingListLookup[String(listId)]
|
||||||
|
if (v !== undefined) item.list = v
|
||||||
}
|
}
|
||||||
if (created !== undefined) item.createdDate = toDate(created)
|
if (created !== undefined) item.createdDate = toDate(created)
|
||||||
}
|
}
|
||||||
|
|
@ -816,7 +848,7 @@ export function mapPurchasedShoppingList(dto: components['schemas']['PurchasedSh
|
||||||
...(ingredientsLookup && { ingredientsLookup }),
|
...(ingredientsLookup && { ingredientsLookup }),
|
||||||
...(mealsLookup && { mealsLookup }),
|
...(mealsLookup && { mealsLookup }),
|
||||||
...(recipesLookup && { recipesLookup }),
|
...(recipesLookup && { recipesLookup }),
|
||||||
shoppingListLookup: { [String(list.id)]: list },
|
...(list && { shoppingListLookup: { [String(list.id)]: list } }),
|
||||||
}
|
}
|
||||||
attachItemRefs(list.items, lookups)
|
attachItemRefs(list.items, lookups)
|
||||||
}
|
}
|
||||||
|
|
@ -827,6 +859,8 @@ export function mapPurchasedShoppingList(dto: components['schemas']['PurchasedSh
|
||||||
...(mealsLookup && { mealsLookup }),
|
...(mealsLookup && { mealsLookup }),
|
||||||
...(recipesLookup && { recipesLookup }),
|
...(recipesLookup && { recipesLookup }),
|
||||||
...(list && { list }),
|
...(list && { list }),
|
||||||
|
// include shoppingListLookup when list exists for consistency with lookups type
|
||||||
|
...(list && { shoppingListLookup: { [String(list.id)]: list } }),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -883,14 +917,15 @@ export function mapCurrentShoppingList(dto: components['schemas']['CurrentShoppi
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const { data, error, response } = await api.GET('/api/v1/recipes', { params: { query } })</span>
|
<span class="cstat-no" title="statement not covered" > const { data, error, response } = await api.GET('/api/v1/recipes', { params: { query } })</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (!response.ok) throw httpError(response, error)</span>
|
<span class="cstat-no" title="statement not covered" > if (!response.ok) throw httpError(response, error)</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const mapped = fromOpenApiPage(data ?? null, (r) => decodeRecipe(r))</span>
|
<span class="cstat-no" title="statement not covered" > return fromOpenApiPage(data ?? null, (r) => decodeRecipe(r))</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return { ...mapped, items: mapped.items.filter((r): r is Recipe => !!r) }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
export async function getRecipe(id: number | string): Promise<Recipe | null> {
|
export async function getRecipe(id: number | string): Promise<Recipe> {
|
||||||
const { data, error, response } = await api.GET('/api/v1/recipes/{recipe_id}', { params: { path: { recipe_id: Number(id) } } })
|
const { data, error, response } = await api.GET('/api/v1/recipes/{recipe_id}', { params: { path: { recipe_id: Number(id) } } })
|
||||||
if (!response.ok) throw httpError(response, error)
|
if (!response.ok) throw httpError(response, error)
|
||||||
return decodeRecipe(data)
|
const mapped = decodeRecipe(data)
|
||||||
|
if (!mapped) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Recipe not found')</span>
|
||||||
|
return mapped
|
||||||
}
|
}
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function saveRecipe(recipe: components['schemas']['Recipe-Input']): Promise<Recipe | null> {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function saveRecipe(recipe: components['schemas']['Recipe-Input']): Promise<Recipe | null> {</span></span>
|
||||||
|
|
@ -929,7 +964,7 @@ export async function parseProduct(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Persons
|
// Persons
|
||||||
export async function listPersons(params?: { q?: string | null; cursor?: string | null; limit?: number }): Promise<Page<components['schemas']['Person']>> {
|
async function listPersons(params?: { q?: string | null; cursor?: string | null; limit?: number }): Promise<Page<components['schemas']['Person']>> {
|
||||||
const query: Record<string, unknown> = {}
|
const query: Record<string, unknown> = {}
|
||||||
if (params) {
|
if (params) {
|
||||||
if (params.q !== undefined) query.q = params.q
|
if (params.q !== undefined) query.q = params.q
|
||||||
|
|
@ -963,10 +998,12 @@ export async function getUpcomingMeals(from: Date, to: Date): Promise<Meal[]&
|
||||||
.sort((a, b) => ((a.suggestedDate?.getTime(<span class="branch-0 cbranch-no" title="branch not covered" >) ?? 0) - (b</span>.suggestedDate?.getTime(<span class="branch-0 cbranch-no" title="branch not covered" >) ?? 0)))</span>
|
.sort((a, b) => ((a.suggestedDate?.getTime(<span class="branch-0 cbranch-no" title="branch not covered" >) ?? 0) - (b</span>.suggestedDate?.getTime(<span class="branch-0 cbranch-no" title="branch not covered" >) ?? 0)))</span>
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getMeal(id: number | string): Promise<Meal | null> {
|
export async function getMeal(id: number | string): Promise<Meal> {
|
||||||
const { data, error, response } = await api.GET('/api/v1/meals/{meal_id}', { params: { path: { meal_id: Number(id) } } })
|
const { data, error, response } = await api.GET('/api/v1/meals/{meal_id}', { params: { path: { meal_id: Number(id) } } })
|
||||||
if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >throw httpError(response, error)</span>
|
if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >throw httpError(response, error)</span>
|
||||||
return decodeMeal(data)
|
const mapped = decodeMeal(data)
|
||||||
|
if (!mapped) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Meal not found')</span>
|
||||||
|
return mapped
|
||||||
}
|
}
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function saveMeal(meal: components['schemas']['Meal-Input']): Promise<Meal | null> {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function saveMeal(meal: components['schemas']['Meal-Input']): Promise<Meal | null> {</span></span>
|
||||||
|
|
@ -985,12 +1022,14 @@ export async function getMeal(id: number | string): Promise<Meal | null> {
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
export async function markMealConsumed(mealId: number | string): Promise<Meal | null> {
|
export async function markMealConsumed(mealId: number | string): Promise<Meal> {
|
||||||
const { data, error, response } = await api.POST('/api/v1/meals/{meal_id}/consumed', {
|
const { data, error, response } = await api.POST('/api/v1/meals/{meal_id}/consumed', {
|
||||||
params: { path: { meal_id: Number(mealId) }, cookie: { user_id: 0 } },
|
params: { path: { meal_id: Number(mealId) }, cookie: { user_id: 0 } },
|
||||||
})
|
})
|
||||||
if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >throw httpError(response, error)</span>
|
if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >throw httpError(response, error)</span>
|
||||||
return decodeMeal(data)
|
const mapped = decodeMeal(data)
|
||||||
|
if (!mapped) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Meal not found')</span>
|
||||||
|
return mapped
|
||||||
}
|
}
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function deleteMeal(mealId: number | string): Promise<void> {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function deleteMeal(mealId: number | string): Promise<void> {</span></span>
|
||||||
|
|
@ -1016,24 +1055,27 @@ export async function markMealConsumed(mealId: number | string): Promise<Meal
|
||||||
<span class="cstat-no" title="statement not covered" > return decodeIngredients(data ?? [])</span>
|
<span class="cstat-no" title="statement not covered" > return decodeIngredients(data ?? [])</span>
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
export async function getShoppingList(id: number | string) {
|
export async function getShoppingList(id: number | string): Promise<import('@/domain/types').ShoppingListWithRefs | null> {
|
||||||
const { data, error, response } = await api.GET('/api/v1/shopping/{list_id}', { params: { path: { list_id: Number(id) } } })
|
const { data, error, response } = await api.GET('/api/v1/shopping/{list_id}', { params: { path: { list_id: Number(id) } } })
|
||||||
if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >throw httpError(response, error)</span>
|
if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >throw httpError(response, error)</span>
|
||||||
const mapped = mapPurchasedShoppingList(data)
|
const mapped = mapPurchasedShoppingList(data)
|
||||||
return mapped?.<span class="branch-0 cbranch-no" title="branch not covered" >list ?? null</span>
|
return mapped?.<span class="branch-0 cbranch-no" title="branch not covered" >list ?? null</span>
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getCurrentShoppingList() {
|
export async function getCurrentShoppingList(): Promise<CurrentShoppingListDTO> {
|
||||||
const { data, error, response } = await api.GET('/api/v1/shopping/current')
|
const { data, error, response } = await api.GET('/api/v1/shopping/current')
|
||||||
if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >throw httpError(response, error)</span>
|
if (!response.ok) <span class="branch-0 cbranch-no" title="branch not covered" >throw httpError(response, error)</span>
|
||||||
return mapCurrentShoppingList(data)
|
const mapped = mapCurrentShoppingList(data)
|
||||||
|
if (!mapped) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Failed to map current shopping list')</span>
|
||||||
|
return mapped
|
||||||
}
|
}
|
||||||
|
|
||||||
export type PurchaseExisting = { type: 'existing'; id: number; personId: number; ingredientId?: number | null }
|
type PurchaseExisting = { type: 'existing'; id: number; personId: number; ingredientId?: number | null }
|
||||||
export type PurchaseRefs = { type: 'refs'; personId: number; ingredientId?: number | null; recipeId?: number | null; mealId?: number | null }
|
type PurchaseRefs = { type: 'refs'; personId: number; ingredientId?: number | null; recipeId?: number | null; mealId?: number | null }
|
||||||
|
export type PurchaseRequest = PurchaseExisting | PurchaseRefs
|
||||||
|
|
||||||
export async function purchaseShoppingList(
|
export async function purchaseShoppingList(
|
||||||
completedRequests: Array<PurchaseExisting | PurchaseRefs>
|
completedRequests: PurchaseRequest[]
|
||||||
): Promise<import('@/domain/types').ShoppingListWithRefs | null> {
|
): Promise<import('@/domain/types').ShoppingListWithRefs | null> {
|
||||||
if (!Array.isArray(completedRequests) || completedRequests.length === 0) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
|
if (!Array.isArray(completedRequests) || completedRequests.length === 0) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
|
||||||
// Map incoming requests: if id provided and >= 0, use it; otherwise send identifiers for ingredient/recipe/meal
|
// Map incoming requests: if id provided and >= 0, use it; otherwise send identifiers for ingredient/recipe/meal
|
||||||
|
|
@ -1087,7 +1129,7 @@ export async function unrequestMeal(mealId: number | string): Promise<void>
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -190,7 +190,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -340,7 +340,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -382,7 +382,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -454,7 +454,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -448,7 +448,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -298,7 +298,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -403,7 +403,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>0/389</span>
|
<span class='fraction'>0/386</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>0/389</span>
|
<span class='fraction'>0/386</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -449,13 +449,7 @@
|
||||||
<a name='L384'></a><a href='#L384'>384</a>
|
<a name='L384'></a><a href='#L384'>384</a>
|
||||||
<a name='L385'></a><a href='#L385'>385</a>
|
<a name='L385'></a><a href='#L385'>385</a>
|
||||||
<a name='L386'></a><a href='#L386'>386</a>
|
<a name='L386'></a><a href='#L386'>386</a>
|
||||||
<a name='L387'></a><a href='#L387'>387</a>
|
<a name='L387'></a><a href='#L387'>387</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
||||||
<a name='L388'></a><a href='#L388'>388</a>
|
|
||||||
<a name='L389'></a><a href='#L389'>389</a>
|
|
||||||
<a name='L390'></a><a href='#L390'>390</a></td><td class="line-coverage quiet"><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-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-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -1008,9 +1002,7 @@
|
||||||
<span class="cstat-no" title="statement not covered" > const id = parseRouteId(route.params.id)</span>
|
<span class="cstat-no" title="statement not covered" > const id = parseRouteId(route.params.id)</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (id !== null) {</span>
|
<span class="cstat-no" title="statement not covered" > if (id !== null) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const loaded = await getMeal(id)</span>
|
<span class="cstat-no" title="statement not covered" > const loaded = await getMeal(id)</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (loaded) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > Object.assign(meal, loaded)</span>
|
<span class="cstat-no" title="statement not covered" > Object.assign(meal, loaded)</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } else {</span>
|
<span class="cstat-no" title="statement not covered" > } else {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const self = await currentUser()</span>
|
<span class="cstat-no" title="statement not covered" > const self = await currentUser()</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (self) {</span>
|
<span class="cstat-no" title="statement not covered" > if (self) {</span>
|
||||||
|
|
@ -1058,7 +1050,6 @@
|
||||||
<span class="cstat-no" title="statement not covered" >async function selectRecipe(recipe: { id: number | string }) {</span>
|
<span class="cstat-no" title="statement not covered" >async function selectRecipe(recipe: { id: number | string }) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > // Refetch to get additional details</span>
|
<span class="cstat-no" title="statement not covered" > // Refetch to get additional details</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const r = await getRecipe(recipe.id)</span>
|
<span class="cstat-no" title="statement not covered" > const r = await getRecipe(recipe.id)</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (!r) return</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (r.createdBy) {</span>
|
<span class="cstat-no" title="statement not covered" > if (r.createdBy) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > addPersonIfNotExists(meal.chefs, r.createdBy)</span>
|
<span class="cstat-no" title="statement not covered" > addPersonIfNotExists(meal.chefs, r.createdBy)</span>
|
||||||
|
|
@ -1237,7 +1228,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>0/98</span>
|
<span class='fraction'>0/90</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>0/98</span>
|
<span class='fraction'>0/90</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -153,23 +153,7 @@
|
||||||
<a name='L88'></a><a href='#L88'>88</a>
|
<a name='L88'></a><a href='#L88'>88</a>
|
||||||
<a name='L89'></a><a href='#L89'>89</a>
|
<a name='L89'></a><a href='#L89'>89</a>
|
||||||
<a name='L90'></a><a href='#L90'>90</a>
|
<a name='L90'></a><a href='#L90'>90</a>
|
||||||
<a name='L91'></a><a href='#L91'>91</a>
|
<a name='L91'></a><a href='#L91'>91</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
||||||
<a name='L92'></a><a href='#L92'>92</a>
|
|
||||||
<a name='L93'></a><a href='#L93'>93</a>
|
|
||||||
<a name='L94'></a><a href='#L94'>94</a>
|
|
||||||
<a name='L95'></a><a href='#L95'>95</a>
|
|
||||||
<a name='L96'></a><a href='#L96'>96</a>
|
|
||||||
<a name='L97'></a><a href='#L97'>97</a>
|
|
||||||
<a name='L98'></a><a href='#L98'>98</a>
|
|
||||||
<a name='L99'></a><a href='#L99'>99</a></td><td class="line-coverage quiet"><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-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-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-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -295,18 +279,7 @@
|
||||||
<span class="cstat-no" title="statement not covered" ><script setup lang="ts"></span>
|
<span class="cstat-no" title="statement not covered" ><script setup lang="ts"></span>
|
||||||
<span class="cstat-no" title="statement not covered" >import { computed } from 'vue'</span>
|
<span class="cstat-no" title="statement not covered" >import { computed } from 'vue'</span>
|
||||||
<span class="cstat-no" title="statement not covered" >import { ago } from '@/dateformats'</span>
|
<span class="cstat-no" title="statement not covered" >import { ago } from '@/dateformats'</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" >import type { Meal } from '@/domain/types'</span>
|
||||||
<span class="cstat-no" title="statement not covered" >type Person = { id: number; name: string }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >type MealRecipe = { recipe: { name: string } }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >type Ingredient = { name: string }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >type Meal = {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > suggestedDate: Date | null</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > chefs: Person[]</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > consumers: Person[]</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > recipes?: MealRecipe[]</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > extraIngredients?: Ingredient[]</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > purchaseDate?: Date | null</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" >const props = defineProps<{ meal: Meal }>()</span>
|
<span class="cstat-no" title="statement not covered" >const props = defineProps<{ meal: Meal }>()</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
|
|
@ -347,7 +320,10 @@
|
||||||
<span class="cstat-no" title="statement not covered" >const mealTitle = computed(() => {</span>
|
<span class="cstat-no" title="statement not covered" >const mealTitle = computed(() => {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const recipes = props.meal.recipes ?? []</span>
|
<span class="cstat-no" title="statement not covered" > const recipes = props.meal.recipes ?? []</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const extras = props.meal.extraIngredients ?? []</span>
|
<span class="cstat-no" title="statement not covered" > const extras = props.meal.extraIngredients ?? []</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const recipesText = englishList(recipes.map((mr) => mr.recipe.name))</span>
|
<span class="cstat-no" title="statement not covered" > const recipeNames = recipes</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > .map((mr) => mr.recipe?.name)</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > .filter((n): n is string => typeof n === 'string' && n.length > 0)</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > const recipesText = englishList(recipeNames)</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const ingredientsText = englishList(extras.map((i) => i.name))</span>
|
<span class="cstat-no" title="statement not covered" > const ingredientsText = englishList(extras.map((i) => i.name))</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (recipesText && ingredientsText) return `${recipesText} with ${ingredientsText}`</span>
|
<span class="cstat-no" title="statement not covered" > if (recipesText && ingredientsText) return `${recipesText} with ${ingredientsText}`</span>
|
||||||
|
|
@ -364,7 +340,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -499,7 +499,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -682,7 +682,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>0/945</span>
|
<span class='fraction'>0/934</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>0/945</span>
|
<span class='fraction'>0/934</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -99,13 +99,13 @@
|
||||||
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="389" class="abs low">0/389</td>
|
<td data-value="386" class="abs low">0/386</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="1" class="abs low">0/1</td>
|
<td data-value="1" class="abs low">0/1</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="1" class="abs low">0/1</td>
|
<td data-value="1" class="abs low">0/1</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="389" class="abs low">0/389</td>
|
<td data-value="386" class="abs low">0/386</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -114,13 +114,13 @@
|
||||||
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="98" class="abs low">0/98</td>
|
<td data-value="90" class="abs low">0/90</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="1" class="abs low">0/1</td>
|
<td data-value="1" class="abs low">0/1</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="1" class="abs low">0/1</td>
|
<td data-value="1" class="abs low">0/1</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="98" class="abs low">0/98</td>
|
<td data-value="90" class="abs low">0/90</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -161,7 +161,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -653,7 +653,7 @@
|
||||||
<span class="cstat-no" title="statement not covered" > if (id !== null && id >= 0) {</span>
|
<span class="cstat-no" title="statement not covered" > if (id !== null && id >= 0) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const r = await getRecipe(id)</span>
|
<span class="cstat-no" title="statement not covered" > const r = await getRecipe(id)</span>
|
||||||
<span class="cstat-no" title="statement not covered" > recipe.value = r</span>
|
<span class="cstat-no" title="statement not covered" > recipe.value = r</span>
|
||||||
<span class="cstat-no" title="statement not covered" > link.value = r?.link ?? ''</span>
|
<span class="cstat-no" title="statement not covered" > link.value = r.link ?? ''</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return</span>
|
<span class="cstat-no" title="statement not covered" > return</span>
|
||||||
<span class="cstat-no" title="statement not covered" > } else if (link.value) {</span>
|
<span class="cstat-no" title="statement not covered" > } else if (link.value) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const r = await parseRecipe(link.value)</span>
|
<span class="cstat-no" title="statement not covered" > const r = await parseRecipe(link.value)</span>
|
||||||
|
|
@ -787,7 +787,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -229,7 +229,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -751,7 +751,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -895,7 +895,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -559,7 +559,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>0/90</span>
|
<span class='fraction'>0/88</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>0/90</span>
|
<span class='fraction'>0/88</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -151,11 +151,7 @@
|
||||||
<a name='L86'></a><a href='#L86'>86</a>
|
<a name='L86'></a><a href='#L86'>86</a>
|
||||||
<a name='L87'></a><a href='#L87'>87</a>
|
<a name='L87'></a><a href='#L87'>87</a>
|
||||||
<a name='L88'></a><a href='#L88'>88</a>
|
<a name='L88'></a><a href='#L88'>88</a>
|
||||||
<a name='L89'></a><a href='#L89'>89</a>
|
<a name='L89'></a><a href='#L89'>89</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
||||||
<a name='L90'></a><a href='#L90'>90</a>
|
|
||||||
<a name='L91'></a><a href='#L91'>91</a></td><td class="line-coverage quiet"><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-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-no"> </span>
|
||||||
|
|
@ -296,7 +292,6 @@
|
||||||
<span class="cstat-no" title="statement not covered" >const { loadUser } = useAuth()</span>
|
<span class="cstat-no" title="statement not covered" >const { loadUser } = useAuth()</span>
|
||||||
<span class="cstat-no" title="statement not covered" >const { getMyShoppingList, saveMyShoppingList } = useShopping()</span>
|
<span class="cstat-no" title="statement not covered" >const { getMyShoppingList, saveMyShoppingList } = useShopping()</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" >const person = ref<{ id?: number; name?: string } | null>(null)</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >const ingredients = ref<Ingredient[]>([])</span>
|
<span class="cstat-no" title="statement not covered" >const ingredients = ref<Ingredient[]>([])</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" >async function updateShoppingList(save = false) {</span>
|
<span class="cstat-no" title="statement not covered" >async function updateShoppingList(save = false) {</span>
|
||||||
|
|
@ -327,7 +322,6 @@
|
||||||
<span class="cstat-no" title="statement not covered" >onBeforeMount(async () => {</span>
|
<span class="cstat-no" title="statement not covered" >onBeforeMount(async () => {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const u = await loadUser()</span>
|
<span class="cstat-no" title="statement not covered" > const u = await loadUser()</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (!u) return router.push({ name: 'login' })</span>
|
<span class="cstat-no" title="statement not covered" > if (!u) return router.push({ name: 'login' })</span>
|
||||||
<span class="cstat-no" title="statement not covered" > person.value = u</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > await updateShoppingList()</span>
|
<span class="cstat-no" title="statement not covered" > await updateShoppingList()</span>
|
||||||
<span class="cstat-no" title="statement not covered" >})</span>
|
<span class="cstat-no" title="statement not covered" >})</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></script></span>
|
<span class="cstat-no" title="statement not covered" ></script></span>
|
||||||
|
|
@ -340,7 +334,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>0/219</span>
|
<span class='fraction'>0/222</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>0/219</span>
|
<span class='fraction'>0/222</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -282,7 +282,13 @@
|
||||||
<a name='L217'></a><a href='#L217'>217</a>
|
<a name='L217'></a><a href='#L217'>217</a>
|
||||||
<a name='L218'></a><a href='#L218'>218</a>
|
<a name='L218'></a><a href='#L218'>218</a>
|
||||||
<a name='L219'></a><a href='#L219'>219</a>
|
<a name='L219'></a><a href='#L219'>219</a>
|
||||||
<a name='L220'></a><a href='#L220'>220</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
<a name='L220'></a><a href='#L220'>220</a>
|
||||||
|
<a name='L221'></a><a href='#L221'>221</a>
|
||||||
|
<a name='L222'></a><a href='#L222'>222</a>
|
||||||
|
<a name='L223'></a><a href='#L223'>223</a></td><td class="line-coverage quiet"><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-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-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -540,11 +546,11 @@
|
||||||
<span class="cstat-no" title="statement not covered" > :key="source.id"</span>
|
<span class="cstat-no" title="statement not covered" > :key="source.id"</span>
|
||||||
<span class="cstat-no" title="statement not covered" > ></span>
|
<span class="cstat-no" title="statement not covered" > ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > <span v-if="index">, and </span></span>
|
<span class="cstat-no" title="statement not covered" > <span v-if="index">, and </span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > <span v-if="source.person"></span>
|
<span class="cstat-no" title="statement not covered" > <!-- Generic ingredient-only display when no recipe/meal context; person ref removed --></span>
|
||||||
<span class="cstat-no" title="statement not covered" > {{ formatQuantity(source.ingredient.quantity) }}&nbsp;{{ source.ingredient.unit }} for</span>
|
<span class="cstat-no" title="statement not covered" > <span v-if="!source.recipe && !source.meal && source.ingredient"></span>
|
||||||
<span class="cstat-no" title="statement not covered" > {{ source.person.name }}</span>
|
<span class="cstat-no" title="statement not covered" > {{ formatQuantity(source.ingredient.quantity) }}&nbsp;{{ source.ingredient.unit }}</span>
|
||||||
<span class="cstat-no" title="statement not covered" > </span></span>
|
<span class="cstat-no" title="statement not covered" > </span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > <span v-else-if="source.recipe"></span>
|
<span class="cstat-no" title="statement not covered" > <span v-else-if="source.recipe && source.ingredient"></span>
|
||||||
<span class="cstat-no" title="statement not covered" > {{ formatQuantity(source.ingredient.quantity) }}&nbsp;{{ source.ingredient.unit }} in</span>
|
<span class="cstat-no" title="statement not covered" > {{ formatQuantity(source.ingredient.quantity) }}&nbsp;{{ source.ingredient.unit }} in</span>
|
||||||
<span class="cstat-no" title="statement not covered" > <router-link :to="`/recipes/${source.recipe.id}/`">{{</span>
|
<span class="cstat-no" title="statement not covered" > <router-link :to="`/recipes/${source.recipe.id}/`">{{</span>
|
||||||
<span class="cstat-no" title="statement not covered" > source.recipe.name</span>
|
<span class="cstat-no" title="statement not covered" > source.recipe.name</span>
|
||||||
|
|
@ -560,7 +566,7 @@
|
||||||
<span class="cstat-no" title="statement not covered" > : ''</span>
|
<span class="cstat-no" title="statement not covered" > : ''</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }}</router-link></span>
|
<span class="cstat-no" title="statement not covered" > }}</router-link></span>
|
||||||
<span class="cstat-no" title="statement not covered" > </span></span>
|
<span class="cstat-no" title="statement not covered" > </span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > <span v-else-if="source.meal"></span>
|
<span class="cstat-no" title="statement not covered" > <span v-else-if="source.meal && source.ingredient"></span>
|
||||||
<span class="cstat-no" title="statement not covered" > {{ source.ingredient.line }} for</span>
|
<span class="cstat-no" title="statement not covered" > {{ source.ingredient.line }} for</span>
|
||||||
<span class="cstat-no" title="statement not covered" > <router-link :to="`/meals/${source.meal?.id}/`">{{</span>
|
<span class="cstat-no" title="statement not covered" > <router-link :to="`/meals/${source.meal?.id}/`">{{</span>
|
||||||
<span class="cstat-no" title="statement not covered" > source.meal?.suggestedDate</span>
|
<span class="cstat-no" title="statement not covered" > source.meal?.suggestedDate</span>
|
||||||
|
|
@ -581,11 +587,11 @@
|
||||||
<span class="cstat-no" title="statement not covered" > :key="source.id"</span>
|
<span class="cstat-no" title="statement not covered" > :key="source.id"</span>
|
||||||
<span class="cstat-no" title="statement not covered" > ></span>
|
<span class="cstat-no" title="statement not covered" > ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > <span v-if="index">, and </span></span>
|
<span class="cstat-no" title="statement not covered" > <span v-if="index">, and </span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > <span v-if="source.person"></span>
|
<span class="cstat-no" title="statement not covered" > <!-- Generic ingredient-only display when no recipe/meal context; person ref removed --></span>
|
||||||
<span class="cstat-no" title="statement not covered" > {{ formatQuantity(source.ingredient.quantity) }}&nbsp;{{ source.ingredient.unit }} for</span>
|
<span class="cstat-no" title="statement not covered" > <span v-if="!source.recipe && !source.meal && source.ingredient"></span>
|
||||||
<span class="cstat-no" title="statement not covered" > {{ source.person.name }}</span>
|
<span class="cstat-no" title="statement not covered" > {{ formatQuantity(source.ingredient.quantity) }}&nbsp;{{ source.ingredient.unit }}</span>
|
||||||
<span class="cstat-no" title="statement not covered" > </span></span>
|
<span class="cstat-no" title="statement not covered" > </span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > <span v-else-if="source.recipe"></span>
|
<span class="cstat-no" title="statement not covered" > <span v-else-if="source.recipe && source.ingredient"></span>
|
||||||
<span class="cstat-no" title="statement not covered" > {{ formatQuantity(source.ingredient.quantity) }}&nbsp;{{ source.ingredient.unit }} in</span>
|
<span class="cstat-no" title="statement not covered" > {{ formatQuantity(source.ingredient.quantity) }}&nbsp;{{ source.ingredient.unit }} in</span>
|
||||||
<span class="cstat-no" title="statement not covered" > <router-link :to="`/recipes/${source.recipe.id}/`">{{</span>
|
<span class="cstat-no" title="statement not covered" > <router-link :to="`/recipes/${source.recipe.id}/`">{{</span>
|
||||||
<span class="cstat-no" title="statement not covered" > source.recipe.name</span>
|
<span class="cstat-no" title="statement not covered" > source.recipe.name</span>
|
||||||
|
|
@ -601,7 +607,7 @@
|
||||||
<span class="cstat-no" title="statement not covered" > : ''</span>
|
<span class="cstat-no" title="statement not covered" > : ''</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }}</router-link></span>
|
<span class="cstat-no" title="statement not covered" > }}</router-link></span>
|
||||||
<span class="cstat-no" title="statement not covered" > </span></span>
|
<span class="cstat-no" title="statement not covered" > </span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > <span v-else-if="source.meal"></span>
|
<span class="cstat-no" title="statement not covered" > <span v-else-if="source.meal && source.ingredient"></span>
|
||||||
<span class="cstat-no" title="statement not covered" > {{ source.ingredient.line }} for</span>
|
<span class="cstat-no" title="statement not covered" > {{ source.ingredient.line }} for</span>
|
||||||
<span class="cstat-no" title="statement not covered" > <router-link :to="`/meals/${source.meal.id}/`">{{</span>
|
<span class="cstat-no" title="statement not covered" > <router-link :to="`/meals/${source.meal.id}/`">{{</span>
|
||||||
<span class="cstat-no" title="statement not covered" > source.meal.suggestedDate</span>
|
<span class="cstat-no" title="statement not covered" > source.meal.suggestedDate</span>
|
||||||
|
|
@ -637,9 +643,12 @@
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" >const remainingRequiredTotals = computed(() =></span>
|
<span class="cstat-no" title="statement not covered" >const remainingRequiredTotals = computed(() =></span>
|
||||||
<span class="cstat-no" title="statement not covered" > calculateTotals(</span>
|
<span class="cstat-no" title="statement not covered" > calculateTotals(</span>
|
||||||
<span class="cstat-no" title="statement not covered" > props.shoppingListItemGroup.shoppingListItems.map((item) => ({</span>
|
<span class="cstat-no" title="statement not covered" > props.shoppingListItemGroup.shoppingListItems</span>
|
||||||
<span class="cstat-no" title="statement not covered" > quantity: item.ingredient.quantity,</span>
|
<span class="cstat-no" title="statement not covered" > .filter((item) => !!item.ingredient)</span>
|
||||||
<span class="cstat-no" title="statement not covered" > unit: String(item.ingredient.unit || 'items'),</span>
|
<span class="cstat-no" title="statement not covered" > .map((item) => ({</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > // item.ingredient is defined due to filter above</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > quantity: item.ingredient!.quantity,</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > unit: String(item.ingredient!.unit || 'items'),</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }))</span>
|
<span class="cstat-no" title="statement not covered" > }))</span>
|
||||||
<span class="cstat-no" title="statement not covered" > )</span>
|
<span class="cstat-no" title="statement not covered" > )</span>
|
||||||
<span class="cstat-no" title="statement not covered" >)</span>
|
<span class="cstat-no" title="statement not covered" >)</span>
|
||||||
|
|
@ -727,7 +736,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>0/814</span>
|
<span class='fraction'>0/815</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">0% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>0/814</span>
|
<span class='fraction'>0/815</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -114,13 +114,13 @@
|
||||||
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="90" class="abs low">0/90</td>
|
<td data-value="88" class="abs low">0/88</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="1" class="abs low">0/1</td>
|
<td data-value="1" class="abs low">0/1</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="1" class="abs low">0/1</td>
|
<td data-value="1" class="abs low">0/1</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="90" class="abs low">0/90</td>
|
<td data-value="88" class="abs low">0/88</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -144,13 +144,13 @@
|
||||||
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="219" class="abs low">0/219</td>
|
<td data-value="222" class="abs low">0/222</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="1" class="abs low">0/1</td>
|
<td data-value="1" class="abs low">0/1</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="1" class="abs low">0/1</td>
|
<td data-value="1" class="abs low">0/1</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="219" class="abs low">0/219</td>
|
<td data-value="222" class="abs low">0/222</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
@ -161,7 +161,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../../prettify.js"></script>
|
<script src="../../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ export function useAlert() {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -391,7 +391,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -301,7 +301,7 @@
|
||||||
<span class="cstat-no" title="statement not covered" > groupsFrom,</span>
|
<span class="cstat-no" title="statement not covered" > groupsFrom,</span>
|
||||||
<span class="cstat-no" title="statement not covered" > mealsFrom,</span>
|
<span class="cstat-no" title="statement not covered" > mealsFrom,</span>
|
||||||
<span class="cstat-no" title="statement not covered" > async purchaseFromGroups(groups: Group[]) {</span>
|
<span class="cstat-no" title="statement not covered" > async purchaseFromGroups(groups: Group[]) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > const items = groupsToItems(groups).map((i): sdk.PurchaseExisting | sdk.PurchaseRefs => {</span>
|
<span class="cstat-no" title="statement not covered" > const items = groupsToItems(groups).map((i): sdk.PurchaseRequest => {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (typeof i.id === 'number' && i.id >= 0) {</span>
|
<span class="cstat-no" title="statement not covered" > if (typeof i.id === 'number' && i.id >= 0) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return { type: 'existing', id: i.id, personId: i.personId, ingredientId: i.ingredient?.id ?? null }</span>
|
<span class="cstat-no" title="statement not covered" > return { type: 'existing', id: i.id, personId: i.personId, ingredientId: i.ingredient?.id ?? null }</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
|
|
@ -325,7 +325,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,30 +23,30 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">78.33% </span>
|
<span class="strong">79.31% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>94/120</span>
|
<span class='fraction'>92/116</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">77.5% </span>
|
<span class="strong">76.31% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>31/40</span>
|
<span class='fraction'>29/38</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">75% </span>
|
<span class="strong">81.81% </span>
|
||||||
<span class="quiet">Functions</span>
|
<span class="quiet">Functions</span>
|
||||||
<span class='fraction'>9/12</span>
|
<span class='fraction'>9/11</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">78.33% </span>
|
<span class="strong">79.31% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>94/120</span>
|
<span class='fraction'>92/116</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -179,11 +179,7 @@
|
||||||
<a name='L114'></a><a href='#L114'>114</a>
|
<a name='L114'></a><a href='#L114'>114</a>
|
||||||
<a name='L115'></a><a href='#L115'>115</a>
|
<a name='L115'></a><a href='#L115'>115</a>
|
||||||
<a name='L116'></a><a href='#L116'>116</a>
|
<a name='L116'></a><a href='#L116'>116</a>
|
||||||
<a name='L117'></a><a href='#L117'>117</a>
|
<a name='L117'></a><a href='#L117'>117</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
||||||
<a name='L118'></a><a href='#L118'>118</a>
|
|
||||||
<a name='L119'></a><a href='#L119'>119</a>
|
|
||||||
<a name='L120'></a><a href='#L120'>120</a>
|
|
||||||
<a name='L121'></a><a href='#L121'>121</a></td><td class="line-coverage quiet"><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-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
|
@ -218,11 +214,6 @@
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</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-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">9x</span>
|
<span class="cline-any cline-yes">9x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
|
@ -241,7 +232,7 @@
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</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-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-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -260,7 +251,7 @@
|
||||||
<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-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">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
|
@ -272,6 +263,7 @@
|
||||||
<span class="cline-any cline-yes">12x</span>
|
<span class="cline-any cline-yes">12x</span>
|
||||||
<span class="cline-any cline-yes">12x</span>
|
<span class="cline-any cline-yes">12x</span>
|
||||||
<span class="cline-any cline-yes">12x</span>
|
<span class="cline-any cline-yes">12x</span>
|
||||||
|
<span class="cline-any cline-yes">12x</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-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
|
|
@ -303,7 +295,7 @@
|
||||||
<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-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { RecipeOut, Recipe, MealOut, Meal, MealRecipe, Ingredient as DomainIngredient, ShoppingList, ShoppingListItem, MealInput } from './types'
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { RecipeOut, Recipe, MealOut, Meal, MealRecipe, Ingredient as DomainIngredient, ShoppingList, ShoppingListItem, ShoppingListItemWithRefs, MealInput } from './types'
|
||||||
import type { components } from '@/api/types'
|
import type { components } from '@/api/types'
|
||||||
|
|
||||||
export function toDate(value: string | Date | null | undefined): Date | null {
|
export function toDate(value: string | Date | null | undefined): Date | null {
|
||||||
|
|
@ -314,7 +306,7 @@ export function toDate(value: string | Date | null | undefined): Date | null {
|
||||||
// Small helper to decode optional lookup maps without repeating loops everywhere
|
// Small helper to decode optional lookup maps without repeating loops everywhere
|
||||||
export function decodeLookup<TIn, TOut>(
|
export function decodeLookup<TIn, TOut>(
|
||||||
raw: Record<string, TIn> | null | undefined,
|
raw: Record<string, TIn> | null | undefined,
|
||||||
decode: (v: TIn) => TOut | null
|
decode: (v: TIn) => TOut
|
||||||
): Record<string, TOut> | undefined {
|
): Record<string, TOut> | undefined {
|
||||||
if (!raw) return undefined
|
if (!raw) return undefined
|
||||||
const out: Record<string, TOut> = {}
|
const out: Record<string, TOut> = {}
|
||||||
|
|
@ -323,13 +315,13 @@ export function decodeLookup<TIn, TOut>(
|
||||||
const maybe = raw[key]
|
const maybe = raw[key]
|
||||||
if (maybe === undefined) <span class="branch-0 cbranch-no" title="branch not covered" >continue</span>
|
if (maybe === undefined) <span class="branch-0 cbranch-no" title="branch not covered" >continue</span>
|
||||||
const decoded = decode(maybe)
|
const decoded = decode(maybe)
|
||||||
if (decoded) out[String(key)] = decoded
|
out[String(key)] = decoded
|
||||||
}
|
}
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
export function decodeRecipe(r: RecipeOut | null | undefined): Recipe | null {
|
export function decodeRecipe(r: RecipeOut | null | undefined): Recipe {
|
||||||
if (!r) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
|
if (!r) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Invalid recipe payload')</span>
|
||||||
return {
|
return {
|
||||||
...r,
|
...r,
|
||||||
dateCreated: toDate(r.dateCreated),
|
dateCreated: toDate(r.dateCreated),
|
||||||
|
|
@ -337,15 +329,10 @@ export function decodeRecipe(r: RecipeOut | null | undefined): Recipe | null {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export <span class="fstat-no" title="function not covered" >function decodeRecipes(list: RecipeOut[] | null | undefined): Recipe[] {</span>
|
export function decodeMeal(m: MealOut | null | undefined): Meal {
|
||||||
<span class="cstat-no" title="statement not covered" > if (!Array.isArray(list)) return []</span>
|
if (!m) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Invalid meal payload')</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return list.map((r) => decodeRecipe(r)).filter((r): r is Recipe => !!r)</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
|
||||||
|
|
||||||
export function decodeMeal(m: MealOut | null | undefined): Meal | null {
|
|
||||||
if (!m) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
|
|
||||||
const recipes = Array.isArray(m.recipes)
|
const recipes = Array.isArray(m.recipes)
|
||||||
? m.recipes.map(mr => decodeMealRecipe(mr)).filter((r): r is MealRecipe => !!r)
|
? m.recipes.map((mr) => decodeMealRecipe(mr))
|
||||||
: []
|
: []
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
@ -361,40 +348,41 @@ export function decodeMeal(m: MealOut | null | undefined): Meal | null {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export <span class="fstat-no" title="function not covered" >function decodeMealRecipe(mr: components['schemas']['MealRecipe-Output'] | null | undefined): MealRecipe | null {</span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function decodeMealRecipe(mr: components['schemas']['MealRecipe-Output'] | null | undefined): MealRecipe {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (!mr) return null</span>
|
<span class="cstat-no" title="statement not covered" > if (!mr) throw new Error('Invalid meal recipe payload')</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return {</span>
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > ...mr,</span>
|
<span class="cstat-no" title="statement not covered" > ...mr,</span>
|
||||||
<span class="cstat-no" title="statement not covered" > recipe: mr.recipe ? decodeRecipe(mr.recipe) : null,</span>
|
<span class="cstat-no" title="statement not covered" > recipe: mr.recipe ? decodeRecipe(mr.recipe) : null,</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
export function decodeIngredient(i: components['schemas']['Ingredient'] | null | undefined): DomainIngredient | null {
|
export function decodeIngredient(i: components['schemas']['Ingredient'] | null | undefined): DomainIngredient {
|
||||||
if (!i) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
|
if (!i) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Invalid ingredient payload')</span>
|
||||||
// API guarantees quantity is a number; pass through
|
// API guarantees quantity is a number; pass through
|
||||||
return { ...i }
|
return { ...i }
|
||||||
}
|
}
|
||||||
|
|
||||||
export function decodeIngredients(list: components['schemas']['Ingredient'][] | null | undefined): DomainIngredient[] {
|
export function decodeIngredients(list: components['schemas']['Ingredient'][] | null | undefined): DomainIngredient[] {
|
||||||
if (!Array.isArray(list)) <span class="branch-0 cbranch-no" title="branch not covered" >return []</span>
|
if (!Array.isArray(list)) <span class="branch-0 cbranch-no" title="branch not covered" >return []</span>
|
||||||
return list.map((i) => decodeIngredient(i)).filter((x): x is DomainIngredient => !!x)
|
return list.map((i) => decodeIngredient(i))
|
||||||
}
|
}
|
||||||
|
|
||||||
export function decodeShoppingListItem(i: components['schemas']['ShoppingListItem'] | null | undefined): ShoppingListItem | null {
|
function decodeShoppingListItem(i: components['schemas']['ShoppingListItem'] | null | undefined): ShoppingListItem {
|
||||||
if (!i) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
|
if (!i) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Invalid shopping list item payload')</span>
|
||||||
return {
|
return {
|
||||||
...i,
|
...i,
|
||||||
createdDate: toDate(i.createdDate),
|
createdDate: toDate(i.createdDate),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function decodeShoppingListItems(list: components['schemas']['ShoppingListItem'][] | null | undefined): ShoppingListItem[] {
|
export function decodeShoppingListItems(list: components['schemas']['ShoppingListItem'][] | null | undefined): ShoppingListItemWithRefs[] {
|
||||||
if (!Array.isArray(list)) <span class="branch-0 cbranch-no" title="branch not covered" >return []</span>
|
if (!Array.isArray(list)) <span class="branch-0 cbranch-no" title="branch not covered" >return []</span>
|
||||||
return list.map((i) => decodeShoppingListItem(i)).filter((x): x is ShoppingListItem => !!x)
|
// Build a new array with item clones to allow optional refs to be attached later
|
||||||
|
return list.map((raw) => ({ ...decodeShoppingListItem(raw) }))
|
||||||
}
|
}
|
||||||
|
|
||||||
export function decodeShoppingList(v: components['schemas']['ShoppingList'] | null | undefined): ShoppingList | null {
|
export function decodeShoppingList(v: components['schemas']['ShoppingList'] | null | undefined): ShoppingList {
|
||||||
if (!v) <span class="branch-0 cbranch-no" title="branch not covered" >return null</span>
|
if (!v) <span class="branch-0 cbranch-no" title="branch not covered" >throw new Error('Invalid shopping list payload')</span>
|
||||||
const { items: rawItems, ...rest } = v
|
const { items: rawItems, ...rest } = v
|
||||||
const items = Array.isArray(rawItems) ? decodeShoppingListItems(rawItems) : undefined
|
const items = Array.isArray(rawItems) ? decodeShoppingListItems(rawItems) : undefined
|
||||||
return {
|
return {
|
||||||
|
|
@ -430,7 +418,7 @@ export <span class="fstat-no" title="function not covered" >function toMealInput
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,30 +23,30 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">80.45% </span>
|
<span class="strong">81.39% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>107/133</span>
|
<span class='fraction'>105/129</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">75% </span>
|
<span class="strong">73.8% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>33/44</span>
|
<span class='fraction'>31/42</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">76.92% </span>
|
<span class="strong">83.33% </span>
|
||||||
<span class="quiet">Functions</span>
|
<span class="quiet">Functions</span>
|
||||||
<span class='fraction'>10/13</span>
|
<span class='fraction'>10/12</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">80.45% </span>
|
<span class="strong">81.39% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>107/133</span>
|
<span class='fraction'>105/129</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -80,17 +80,17 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody><tr>
|
<tbody><tr>
|
||||||
<td class="file medium" data-value="decoders.ts"><a href="decoders.ts.html">decoders.ts</a></td>
|
<td class="file medium" data-value="decoders.ts"><a href="decoders.ts.html">decoders.ts</a></td>
|
||||||
<td data-value="78.33" class="pic medium">
|
<td data-value="79.31" class="pic medium">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 78%"></div><div class="cover-empty" style="width: 22%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 79%"></div><div class="cover-empty" style="width: 21%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="78.33" class="pct medium">78.33%</td>
|
<td data-value="79.31" class="pct medium">79.31%</td>
|
||||||
<td data-value="120" class="abs medium">94/120</td>
|
<td data-value="116" class="abs medium">92/116</td>
|
||||||
<td data-value="77.5" class="pct medium">77.5%</td>
|
<td data-value="76.31" class="pct medium">76.31%</td>
|
||||||
<td data-value="40" class="abs medium">31/40</td>
|
<td data-value="38" class="abs medium">29/38</td>
|
||||||
<td data-value="75" class="pct medium">75%</td>
|
<td data-value="81.81" class="pct high">81.81%</td>
|
||||||
<td data-value="12" class="abs medium">9/12</td>
|
<td data-value="11" class="abs high">9/11</td>
|
||||||
<td data-value="78.33" class="pct medium">78.33%</td>
|
<td data-value="79.31" class="pct medium">79.31%</td>
|
||||||
<td data-value="120" class="abs medium">94/120</td>
|
<td data-value="116" class="abs medium">92/116</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -116,7 +116,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ export function fromOpenApiPage<TIn, TOut>(page: PageLike<TIn> | nul
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -307,7 +307,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../../prettify.js"></script>
|
<script src="../../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -342,9 +342,9 @@
|
||||||
<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></td><td class="text"><pre class="prettyprint lang-js">const UNIT_KEYS_ARRAY: readonly ['kg', 'litres', 'items'] = ['kg', 'litres', 'items']
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const UNIT_KEYS_ARRAY: readonly ['kg', 'litres', 'items'] = ['kg', 'litres', 'items']
|
||||||
export type UnitKey = typeof UNIT_KEYS_ARRAY[number]
|
type UnitKey = typeof UNIT_KEYS_ARRAY[number]
|
||||||
|
|
||||||
export const equivalentUnits: Record<UnitKey, Record<string, number>> = {
|
const equivalentUnits: Record<UnitKey, Record<string, number>> = {
|
||||||
kg: {
|
kg: {
|
||||||
kgs: 1,
|
kgs: 1,
|
||||||
kilograms: 1,
|
kilograms: 1,
|
||||||
|
|
@ -467,8 +467,8 @@ export function getConversionFactor(unit: string): { unit: UnitKey | string; fac
|
||||||
<span class="cstat-no" title="statement not covered" > return null</span>
|
<span class="cstat-no" title="statement not covered" > return null</span>
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
export type Quantity = { quantity: number; unit: string }
|
type Quantity = { quantity: number; unit: string }
|
||||||
export type Total = { unit: string; quantity: number }
|
type Total = { unit: string; quantity: number }
|
||||||
|
|
||||||
export function calculateTotals(quantityList: Quantity[]): Total[] {
|
export function calculateTotals(quantityList: Quantity[]): Total[] {
|
||||||
const totals: Record<string, number> = {}
|
const totals: Record<string, number> = {}
|
||||||
|
|
@ -487,7 +487,7 @@ export function calculateTotals(quantityList: Quantity[]): Total[] {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2025-10-20T01:14:35.684Z
|
at 2025-10-25T01:54:48.456Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../prettify.js"></script>
|
<script src="../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -34,18 +34,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { ago } from '@/dateformats'
|
import { ago } from '@/dateformats'
|
||||||
|
import type { Meal } from '@/domain/types'
|
||||||
type Person = { id: number; name: string }
|
|
||||||
type MealRecipe = { recipe: { name: string } }
|
|
||||||
type Ingredient = { name: string }
|
|
||||||
type Meal = {
|
|
||||||
suggestedDate: Date | null
|
|
||||||
chefs: Person[]
|
|
||||||
consumers: Person[]
|
|
||||||
recipes?: MealRecipe[]
|
|
||||||
extraIngredients?: Ingredient[]
|
|
||||||
purchaseDate?: Date | null
|
|
||||||
}
|
|
||||||
|
|
||||||
const props = defineProps<{ meal: Meal }>()
|
const props = defineProps<{ meal: Meal }>()
|
||||||
|
|
||||||
|
|
@ -86,7 +75,10 @@ const dayOfWeek = computed(() =>
|
||||||
const mealTitle = computed(() => {
|
const mealTitle = computed(() => {
|
||||||
const recipes = props.meal.recipes ?? []
|
const recipes = props.meal.recipes ?? []
|
||||||
const extras = props.meal.extraIngredients ?? []
|
const extras = props.meal.extraIngredients ?? []
|
||||||
const recipesText = englishList(recipes.map((mr) => mr.recipe.name))
|
const recipeNames = recipes
|
||||||
|
.map((mr) => mr.recipe?.name)
|
||||||
|
.filter((n): n is string => typeof n === 'string' && n.length > 0)
|
||||||
|
const recipesText = englishList(recipeNames)
|
||||||
const ingredientsText = englishList(extras.map((i) => i.name))
|
const ingredientsText = englishList(extras.map((i) => i.name))
|
||||||
|
|
||||||
if (recipesText && ingredientsText) return `${recipesText} with ${ingredientsText}`
|
if (recipesText && ingredientsText) return `${recipesText} with ${ingredientsText}`
|
||||||
|
|
|
||||||
17
src/env.d.ts
vendored
17
src/env.d.ts
vendored
|
|
@ -1,17 +1,10 @@
|
||||||
/* Ambient env typing for optional Vite-style env access */
|
/* Minimal ambient typing for optional import.meta.env usage in tooling */
|
||||||
declare interface ImportMeta {
|
|
||||||
env?: {
|
|
||||||
VITE_API_BASE_URL?: string
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export {}
|
|
||||||
/// <reference types="vite/client" />
|
|
||||||
|
|
||||||
interface ImportMetaEnv {
|
interface ImportMetaEnv {
|
||||||
readonly VITE_API_BASE_URL?: string
|
readonly VITE_API_BASE_URL?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ImportMeta {
|
declare interface ImportMeta {
|
||||||
readonly env: ImportMetaEnv
|
readonly env?: ImportMetaEnv
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export {}
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,25 @@
|
||||||
src/dateformats.ts:6 - ago
|
src/dateformats.ts:6 - ago
|
||||||
src/units.ts:104 - getConversionFactor (used in module)
|
src/units.ts:104 - getConversionFactor (used in module)
|
||||||
src/units.ts:130 - calculateTotals
|
src/units.ts:130 - calculateTotals
|
||||||
src/units.ts:2 - UnitKey (used in module)
|
|
||||||
src/units.ts:4 - equivalentUnits (used in module)
|
|
||||||
src/units.ts:127 - Quantity (used in module)
|
|
||||||
src/units.ts:128 - Total (used in module)
|
|
||||||
src/api/sdk.ts:58 - mapPurchasedShoppingList (used in module)
|
src/api/sdk.ts:58 - mapPurchasedShoppingList (used in module)
|
||||||
src/api/sdk.ts:96 - mapCurrentShoppingList (used in module)
|
src/api/sdk.ts:96 - mapCurrentShoppingList (used in module)
|
||||||
src/api/sdk.ts:140 - listRecipes
|
src/api/sdk.ts:140 - listRecipes
|
||||||
src/api/sdk.ts:153 - getRecipe
|
src/api/sdk.ts:152 - getRecipe
|
||||||
src/api/sdk.ts:161 - saveRecipe
|
src/api/sdk.ts:160 - saveRecipe
|
||||||
src/api/sdk.ts:167 - deleteRecipe
|
src/api/sdk.ts:166 - deleteRecipe
|
||||||
src/api/sdk.ts:172 - parseRecipe
|
src/api/sdk.ts:171 - parseRecipe
|
||||||
src/api/sdk.ts:178 - parseIngredients
|
src/api/sdk.ts:177 - parseIngredients
|
||||||
src/api/sdk.ts:186 - parseProduct
|
src/api/sdk.ts:185 - parseProduct
|
||||||
src/api/sdk.ts:197 - listPersons (used in module)
|
src/api/sdk.ts:209 - getPersonsInHome
|
||||||
src/api/sdk.ts:210 - getPersonsInHome
|
src/api/sdk.ts:213 - searchPersons
|
||||||
src/api/sdk.ts:214 - searchPersons
|
src/api/sdk.ts:218 - getUpcomingMeals
|
||||||
src/api/sdk.ts:219 - getUpcomingMeals
|
src/api/sdk.ts:230 - getMeal
|
||||||
src/api/sdk.ts:231 - getMeal
|
src/api/sdk.ts:238 - saveMeal
|
||||||
src/api/sdk.ts:239 - saveMeal
|
src/api/sdk.ts:254 - markMealConsumed
|
||||||
src/api/sdk.ts:255 - markMealConsumed
|
src/api/sdk.ts:264 - deleteMeal
|
||||||
src/api/sdk.ts:265 - deleteMeal
|
src/api/types.ts:337 - webhooks
|
||||||
src/api/sdk.ts:303 - PurchaseExisting (used in module)
|
src/api/types.ts:771 - $defs
|
||||||
src/api/sdk.ts:304 - PurchaseRefs (used in module)
|
src/api/types.ts:772 - operations (used in module)
|
||||||
src/composables/useAlert.ts:27 - useAlert
|
src/composables/useAlert.ts:27 - useAlert
|
||||||
src/composables/useAlert.ts:4 - AlertMessage (used in module)
|
src/composables/useAlert.ts:4 - AlertMessage (used in module)
|
||||||
src/composables/useAuth.ts:8 - loadUser (used in module)
|
src/composables/useAuth.ts:8 - loadUser (used in module)
|
||||||
|
|
@ -39,8 +35,6 @@ src/composables/useShopping.ts:54 - useShopping
|
||||||
src/composables/useShopping.ts:4 - GroupByProduct (used in module)
|
src/composables/useShopping.ts:4 - GroupByProduct (used in module)
|
||||||
src/composables/useShopping.ts:5 - GroupByName (used in module)
|
src/composables/useShopping.ts:5 - GroupByName (used in module)
|
||||||
src/composables/useShopping.ts:6 - Group (used in module)
|
src/composables/useShopping.ts:6 - Group (used in module)
|
||||||
src/domain/decoders.ts:54 - decodeMealRecipe (used in module)
|
|
||||||
src/domain/decoders.ts:73 - decodeShoppingListItem (used in module)
|
|
||||||
src/domain/decoders.ts:99 - toMealInput
|
src/domain/decoders.ts:99 - toMealInput
|
||||||
src/domain/types.ts:4 - Replace (used in module)
|
src/domain/types.ts:4 - Replace (used in module)
|
||||||
src/domain/types.ts:5 - WithDates (used in module)
|
src/domain/types.ts:5 - WithDates (used in module)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue