@md2do/core 0.3.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +6 -6
  3. package/dist/index.d.mts +40 -10
  4. package/dist/index.d.ts +40 -10
  5. package/dist/index.js +59 -11
  6. package/dist/index.mjs +61 -12
  7. package/package.json +1 -1
  8. package/src/parser/index.ts +28 -5
  9. package/src/parser/patterns.ts +8 -5
  10. package/src/scanner/index.ts +17 -0
  11. package/src/types/index.ts +4 -0
  12. package/src/utils/dates.ts +58 -10
  13. package/coverage/base.css +0 -224
  14. package/coverage/block-navigation.js +0 -87
  15. package/coverage/coverage-final.json +0 -10
  16. package/coverage/favicon.png +0 -0
  17. package/coverage/index.html +0 -206
  18. package/coverage/lcov-report/base.css +0 -224
  19. package/coverage/lcov-report/block-navigation.js +0 -87
  20. package/coverage/lcov-report/favicon.png +0 -0
  21. package/coverage/lcov-report/index.html +0 -206
  22. package/coverage/lcov-report/prettify.css +0 -1
  23. package/coverage/lcov-report/prettify.js +0 -2
  24. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  25. package/coverage/lcov-report/sorter.js +0 -210
  26. package/coverage/lcov-report/src/filters/index.html +0 -116
  27. package/coverage/lcov-report/src/filters/index.ts.html +0 -1156
  28. package/coverage/lcov-report/src/index.html +0 -116
  29. package/coverage/lcov-report/src/index.ts.html +0 -157
  30. package/coverage/lcov-report/src/parser/index.html +0 -131
  31. package/coverage/lcov-report/src/parser/index.ts.html +0 -1102
  32. package/coverage/lcov-report/src/parser/patterns.ts.html +0 -661
  33. package/coverage/lcov-report/src/scanner/index.html +0 -116
  34. package/coverage/lcov-report/src/scanner/index.ts.html +0 -658
  35. package/coverage/lcov-report/src/sorting/index.html +0 -116
  36. package/coverage/lcov-report/src/sorting/index.ts.html +0 -736
  37. package/coverage/lcov-report/src/utils/dates.ts.html +0 -499
  38. package/coverage/lcov-report/src/utils/id.ts.html +0 -169
  39. package/coverage/lcov-report/src/utils/index.html +0 -131
  40. package/coverage/lcov-report/src/writer/index.html +0 -116
  41. package/coverage/lcov-report/src/writer/index.ts.html +0 -1093
  42. package/coverage/lcov.info +0 -2294
  43. package/coverage/prettify.css +0 -1
  44. package/coverage/prettify.js +0 -2
  45. package/coverage/sort-arrow-sprite.png +0 -0
  46. package/coverage/sorter.js +0 -210
  47. package/coverage/src/filters/index.html +0 -116
  48. package/coverage/src/filters/index.ts.html +0 -1156
  49. package/coverage/src/index.html +0 -116
  50. package/coverage/src/index.ts.html +0 -157
  51. package/coverage/src/parser/index.html +0 -131
  52. package/coverage/src/parser/index.ts.html +0 -1102
  53. package/coverage/src/parser/patterns.ts.html +0 -661
  54. package/coverage/src/scanner/index.html +0 -116
  55. package/coverage/src/scanner/index.ts.html +0 -658
  56. package/coverage/src/sorting/index.html +0 -116
  57. package/coverage/src/sorting/index.ts.html +0 -736
  58. package/coverage/src/utils/dates.ts.html +0 -499
  59. package/coverage/src/utils/id.ts.html +0 -169
  60. package/coverage/src/utils/index.html +0 -131
  61. package/coverage/src/writer/index.html +0 -116
  62. package/coverage/src/writer/index.ts.html +0 -1093
@@ -1,1156 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/filters/index.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">src/filters</a> index.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">99.43% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>355/357</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">94.82% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>55/58</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>21/21</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">99.43% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>355/357</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
424
- <span class="cline-any cline-yes">1x</span>
425
- <span class="cline-any cline-yes">1x</span>
426
- <span class="cline-any cline-yes">1x</span>
427
- <span class="cline-any cline-yes">1x</span>
428
- <span class="cline-any cline-yes">1x</span>
429
- <span class="cline-any cline-yes">1x</span>
430
- <span class="cline-any cline-yes">1x</span>
431
- <span class="cline-any cline-yes">1x</span>
432
- <span class="cline-any cline-yes">1x</span>
433
- <span class="cline-any cline-yes">1x</span>
434
- <span class="cline-any cline-yes">1x</span>
435
- <span class="cline-any cline-yes">1x</span>
436
- <span class="cline-any cline-yes">1x</span>
437
- <span class="cline-any cline-yes">1x</span>
438
- <span class="cline-any cline-yes">1x</span>
439
- <span class="cline-any cline-yes">1x</span>
440
- <span class="cline-any cline-yes">1x</span>
441
- <span class="cline-any cline-yes">7x</span>
442
- <span class="cline-any cline-yes">7x</span>
443
- <span class="cline-any cline-yes">1x</span>
444
- <span class="cline-any cline-yes">1x</span>
445
- <span class="cline-any cline-yes">1x</span>
446
- <span class="cline-any cline-yes">1x</span>
447
- <span class="cline-any cline-yes">1x</span>
448
- <span class="cline-any cline-yes">1x</span>
449
- <span class="cline-any cline-yes">1x</span>
450
- <span class="cline-any cline-yes">1x</span>
451
- <span class="cline-any cline-yes">1x</span>
452
- <span class="cline-any cline-yes">1x</span>
453
- <span class="cline-any cline-yes">1x</span>
454
- <span class="cline-any cline-yes">4x</span>
455
- <span class="cline-any cline-yes">4x</span>
456
- <span class="cline-any cline-yes">1x</span>
457
- <span class="cline-any cline-yes">1x</span>
458
- <span class="cline-any cline-yes">1x</span>
459
- <span class="cline-any cline-yes">1x</span>
460
- <span class="cline-any cline-yes">1x</span>
461
- <span class="cline-any cline-yes">1x</span>
462
- <span class="cline-any cline-yes">1x</span>
463
- <span class="cline-any cline-yes">1x</span>
464
- <span class="cline-any cline-yes">1x</span>
465
- <span class="cline-any cline-yes">1x</span>
466
- <span class="cline-any cline-yes">1x</span>
467
- <span class="cline-any cline-yes">9x</span>
468
- <span class="cline-any cline-yes">9x</span>
469
- <span class="cline-any cline-yes">1x</span>
470
- <span class="cline-any cline-yes">1x</span>
471
- <span class="cline-any cline-yes">1x</span>
472
- <span class="cline-any cline-yes">1x</span>
473
- <span class="cline-any cline-yes">1x</span>
474
- <span class="cline-any cline-yes">1x</span>
475
- <span class="cline-any cline-yes">1x</span>
476
- <span class="cline-any cline-yes">1x</span>
477
- <span class="cline-any cline-yes">1x</span>
478
- <span class="cline-any cline-yes">1x</span>
479
- <span class="cline-any cline-yes">1x</span>
480
- <span class="cline-any cline-yes">2x</span>
481
- <span class="cline-any cline-yes">2x</span>
482
- <span class="cline-any cline-yes">1x</span>
483
- <span class="cline-any cline-yes">1x</span>
484
- <span class="cline-any cline-yes">1x</span>
485
- <span class="cline-any cline-yes">1x</span>
486
- <span class="cline-any cline-yes">1x</span>
487
- <span class="cline-any cline-yes">1x</span>
488
- <span class="cline-any cline-yes">1x</span>
489
- <span class="cline-any cline-yes">1x</span>
490
- <span class="cline-any cline-yes">1x</span>
491
- <span class="cline-any cline-yes">1x</span>
492
- <span class="cline-any cline-yes">1x</span>
493
- <span class="cline-any cline-yes">1x</span>
494
- <span class="cline-any cline-yes">1x</span>
495
- <span class="cline-any cline-yes">1x</span>
496
- <span class="cline-any cline-yes">1x</span>
497
- <span class="cline-any cline-yes">1x</span>
498
- <span class="cline-any cline-yes">1x</span>
499
- <span class="cline-any cline-yes">1x</span>
500
- <span class="cline-any cline-yes">1x</span>
501
- <span class="cline-any cline-yes">1x</span>
502
- <span class="cline-any cline-yes">1x</span>
503
- <span class="cline-any cline-yes">1x</span>
504
- <span class="cline-any cline-yes">1x</span>
505
- <span class="cline-any cline-yes">1x</span>
506
- <span class="cline-any cline-yes">5x</span>
507
- <span class="cline-any cline-yes">5x</span>
508
- <span class="cline-any cline-yes">1x</span>
509
- <span class="cline-any cline-yes">1x</span>
510
- <span class="cline-any cline-yes">1x</span>
511
- <span class="cline-any cline-yes">1x</span>
512
- <span class="cline-any cline-yes">1x</span>
513
- <span class="cline-any cline-yes">1x</span>
514
- <span class="cline-any cline-yes">1x</span>
515
- <span class="cline-any cline-yes">1x</span>
516
- <span class="cline-any cline-yes">1x</span>
517
- <span class="cline-any cline-yes">1x</span>
518
- <span class="cline-any cline-yes">1x</span>
519
- <span class="cline-any cline-yes">1x</span>
520
- <span class="cline-any cline-yes">1x</span>
521
- <span class="cline-any cline-yes">1x</span>
522
- <span class="cline-any cline-yes">1x</span>
523
- <span class="cline-any cline-yes">1x</span>
524
- <span class="cline-any cline-yes">1x</span>
525
- <span class="cline-any cline-yes">1x</span>
526
- <span class="cline-any cline-yes">1x</span>
527
- <span class="cline-any cline-yes">7x</span>
528
- <span class="cline-any cline-yes">7x</span>
529
- <span class="cline-any cline-yes">7x</span>
530
- <span class="cline-any cline-yes">7x</span>
531
- <span class="cline-any cline-yes">7x</span>
532
- <span class="cline-any cline-yes">7x</span>
533
- <span class="cline-any cline-yes">7x</span>
534
- <span class="cline-any cline-yes">16x</span>
535
- <span class="cline-any cline-yes">16x</span>
536
- <span class="cline-any cline-yes">16x</span>
537
- <span class="cline-any cline-yes">16x</span>
538
- <span class="cline-any cline-yes">4x</span>
539
- <span class="cline-any cline-yes">4x</span>
540
- <span class="cline-any cline-yes">12x</span>
541
- <span class="cline-any cline-yes">12x</span>
542
- <span class="cline-any cline-yes">16x</span>
543
- <span class="cline-any cline-yes">7x</span>
544
- <span class="cline-any cline-yes">7x</span>
545
- <span class="cline-any cline-yes">7x</span>
546
- <span class="cline-any cline-yes">7x</span>
547
- <span class="cline-any cline-yes">16x</span>
548
- <span class="cline-any cline-yes">5x</span>
549
- <span class="cline-any cline-yes">5x</span>
550
- <span class="cline-any cline-yes">5x</span>
551
- <span class="cline-any cline-no">&nbsp;</span>
552
- <span class="cline-any cline-no">&nbsp;</span>
553
- <span class="cline-any cline-yes">5x</span>
554
- <span class="cline-any cline-yes">5x</span>
555
- <span class="cline-any cline-yes">5x</span>
556
- <span class="cline-any cline-yes">5x</span>
557
- <span class="cline-any cline-yes">16x</span>
558
- <span class="cline-any cline-yes">7x</span>
559
- <span class="cline-any cline-yes">1x</span>
560
- <span class="cline-any cline-yes">1x</span>
561
- <span class="cline-any cline-yes">1x</span>
562
- <span class="cline-any cline-yes">1x</span>
563
- <span class="cline-any cline-yes">11x</span>
564
- <span class="cline-any cline-yes">11x</span>
565
- <span class="cline-any cline-yes">11x</span>
566
- <span class="cline-any cline-yes">11x</span>
567
- <span class="cline-any cline-yes">11x</span>
568
- <span class="cline-any cline-yes">11x</span>
569
- <span class="cline-any cline-yes">11x</span>
570
- <span class="cline-any cline-yes">11x</span>
571
- <span class="cline-any cline-yes">11x</span>
572
- <span class="cline-any cline-yes">11x</span>
573
- <span class="cline-any cline-yes">11x</span>
574
- <span class="cline-any cline-yes">11x</span>
575
- <span class="cline-any cline-yes">11x</span>
576
- <span class="cline-any cline-yes">1x</span>
577
- <span class="cline-any cline-yes">1x</span>
578
- <span class="cline-any cline-yes">1x</span>
579
- <span class="cline-any cline-yes">1x</span>
580
- <span class="cline-any cline-yes">7x</span>
581
- <span class="cline-any cline-yes">7x</span>
582
- <span class="cline-any cline-yes">7x</span>
583
- <span class="cline-any cline-yes">7x</span>
584
- <span class="cline-any cline-yes">7x</span>
585
- <span class="cline-any cline-yes">7x</span>
586
- <span class="cline-any cline-yes">7x</span>
587
- <span class="cline-any cline-yes">7x</span>
588
- <span class="cline-any cline-yes">7x</span>
589
- <span class="cline-any cline-yes">7x</span>
590
- <span class="cline-any cline-yes">7x</span>
591
- <span class="cline-any cline-yes">7x</span>
592
- <span class="cline-any cline-yes">7x</span>
593
- <span class="cline-any cline-yes">1x</span>
594
- <span class="cline-any cline-yes">1x</span>
595
- <span class="cline-any cline-yes">1x</span>
596
- <span class="cline-any cline-yes">1x</span>
597
- <span class="cline-any cline-yes">8x</span>
598
- <span class="cline-any cline-yes">8x</span>
599
- <span class="cline-any cline-yes">8x</span>
600
- <span class="cline-any cline-yes">8x</span>
601
- <span class="cline-any cline-yes">8x</span>
602
- <span class="cline-any cline-yes">1x</span>
603
- <span class="cline-any cline-yes">1x</span>
604
- <span class="cline-any cline-yes">1x</span>
605
- <span class="cline-any cline-yes">1x</span>
606
- <span class="cline-any cline-yes">3x</span>
607
- <span class="cline-any cline-yes">3x</span>
608
- <span class="cline-any cline-yes">3x</span>
609
- <span class="cline-any cline-yes">3x</span>
610
- <span class="cline-any cline-yes">3x</span>
611
- <span class="cline-any cline-yes">3x</span>
612
- <span class="cline-any cline-yes">1x</span>
613
- <span class="cline-any cline-yes">1x</span>
614
- <span class="cline-any cline-yes">1x</span>
615
- <span class="cline-any cline-yes">1x</span>
616
- <span class="cline-any cline-yes">3x</span>
617
- <span class="cline-any cline-yes">3x</span>
618
- <span class="cline-any cline-yes">3x</span>
619
- <span class="cline-any cline-yes">3x</span>
620
- <span class="cline-any cline-yes">3x</span>
621
- <span class="cline-any cline-yes">3x</span>
622
- <span class="cline-any cline-yes">1x</span>
623
- <span class="cline-any cline-yes">1x</span>
624
- <span class="cline-any cline-yes">1x</span>
625
- <span class="cline-any cline-yes">1x</span>
626
- <span class="cline-any cline-yes">1x</span>
627
- <span class="cline-any cline-yes">1x</span>
628
- <span class="cline-any cline-yes">1x</span>
629
- <span class="cline-any cline-yes">1x</span>
630
- <span class="cline-any cline-yes">1x</span>
631
- <span class="cline-any cline-yes">1x</span>
632
- <span class="cline-any cline-yes">1x</span>
633
- <span class="cline-any cline-yes">1x</span>
634
- <span class="cline-any cline-yes">4x</span>
635
- <span class="cline-any cline-yes">4x</span>
636
- <span class="cline-any cline-yes">4x</span>
637
- <span class="cline-any cline-yes">10x</span>
638
- <span class="cline-any cline-yes">3x</span>
639
- <span class="cline-any cline-yes">3x</span>
640
- <span class="cline-any cline-yes">7x</span>
641
- <span class="cline-any cline-yes">10x</span>
642
- <span class="cline-any cline-yes">4x</span>
643
- <span class="cline-any cline-yes">1x</span>
644
- <span class="cline-any cline-yes">1x</span>
645
- <span class="cline-any cline-yes">1x</span>
646
- <span class="cline-any cline-yes">1x</span>
647
- <span class="cline-any cline-yes">1x</span>
648
- <span class="cline-any cline-yes">1x</span>
649
- <span class="cline-any cline-yes">1x</span>
650
- <span class="cline-any cline-yes">1x</span>
651
- <span class="cline-any cline-yes">1x</span>
652
- <span class="cline-any cline-yes">1x</span>
653
- <span class="cline-any cline-yes">1x</span>
654
- <span class="cline-any cline-yes">2x</span>
655
- <span class="cline-any cline-yes">2x</span>
656
- <span class="cline-any cline-yes">2x</span>
657
- <span class="cline-any cline-yes">2x</span>
658
- <span class="cline-any cline-yes">5x</span>
659
- <span class="cline-any cline-yes">1x</span>
660
- <span class="cline-any cline-yes">1x</span>
661
- <span class="cline-any cline-yes">5x</span>
662
- <span class="cline-any cline-yes">5x</span>
663
- <span class="cline-any cline-yes">2x</span>
664
- <span class="cline-any cline-yes">1x</span>
665
- <span class="cline-any cline-yes">1x</span>
666
- <span class="cline-any cline-yes">1x</span>
667
- <span class="cline-any cline-yes">1x</span>
668
- <span class="cline-any cline-yes">1x</span>
669
- <span class="cline-any cline-yes">1x</span>
670
- <span class="cline-any cline-yes">1x</span>
671
- <span class="cline-any cline-yes">1x</span>
672
- <span class="cline-any cline-yes">1x</span>
673
- <span class="cline-any cline-yes">1x</span>
674
- <span class="cline-any cline-yes">1x</span>
675
- <span class="cline-any cline-yes">3x</span>
676
- <span class="cline-any cline-yes">3x</span>
677
- <span class="cline-any cline-yes">3x</span>
678
- <span class="cline-any cline-yes">3x</span>
679
- <span class="cline-any cline-yes">9x</span>
680
- <span class="cline-any cline-yes">2x</span>
681
- <span class="cline-any cline-yes">2x</span>
682
- <span class="cline-any cline-yes">7x</span>
683
- <span class="cline-any cline-yes">9x</span>
684
- <span class="cline-any cline-yes">3x</span>
685
- <span class="cline-any cline-yes">1x</span>
686
- <span class="cline-any cline-yes">1x</span>
687
- <span class="cline-any cline-yes">1x</span>
688
- <span class="cline-any cline-yes">1x</span>
689
- <span class="cline-any cline-yes">1x</span>
690
- <span class="cline-any cline-yes">1x</span>
691
- <span class="cline-any cline-yes">1x</span>
692
- <span class="cline-any cline-yes">1x</span>
693
- <span class="cline-any cline-yes">1x</span>
694
- <span class="cline-any cline-yes">1x</span>
695
- <span class="cline-any cline-yes">1x</span>
696
- <span class="cline-any cline-yes">1x</span>
697
- <span class="cline-any cline-yes">2x</span>
698
- <span class="cline-any cline-yes">2x</span>
699
- <span class="cline-any cline-yes">2x</span>
700
- <span class="cline-any cline-yes">2x</span>
701
- <span class="cline-any cline-yes">2x</span>
702
- <span class="cline-any cline-yes">2x</span>
703
- <span class="cline-any cline-yes">2x</span>
704
- <span class="cline-any cline-yes">6x</span>
705
- <span class="cline-any cline-yes">1x</span>
706
- <span class="cline-any cline-yes">1x</span>
707
- <span class="cline-any cline-yes">5x</span>
708
- <span class="cline-any cline-yes">6x</span>
709
- <span class="cline-any cline-yes">2x</span>
710
- <span class="cline-any cline-yes">1x</span>
711
- <span class="cline-any cline-yes">1x</span>
712
- <span class="cline-any cline-yes">1x</span>
713
- <span class="cline-any cline-yes">1x</span>
714
- <span class="cline-any cline-yes">1x</span>
715
- <span class="cline-any cline-yes">1x</span>
716
- <span class="cline-any cline-yes">1x</span>
717
- <span class="cline-any cline-yes">1x</span>
718
- <span class="cline-any cline-yes">1x</span>
719
- <span class="cline-any cline-yes">1x</span>
720
- <span class="cline-any cline-yes">1x</span>
721
- <span class="cline-any cline-yes">1x</span>
722
- <span class="cline-any cline-yes">1x</span>
723
- <span class="cline-any cline-yes">1x</span>
724
- <span class="cline-any cline-yes">1x</span>
725
- <span class="cline-any cline-yes">1x</span>
726
- <span class="cline-any cline-yes">1x</span>
727
- <span class="cline-any cline-yes">1x</span>
728
- <span class="cline-any cline-yes">1x</span>
729
- <span class="cline-any cline-yes">1x</span>
730
- <span class="cline-any cline-yes">1x</span>
731
- <span class="cline-any cline-yes">1x</span>
732
- <span class="cline-any cline-yes">1x</span>
733
- <span class="cline-any cline-yes">1x</span>
734
- <span class="cline-any cline-yes">1x</span>
735
- <span class="cline-any cline-yes">1x</span>
736
- <span class="cline-any cline-yes">1x</span>
737
- <span class="cline-any cline-yes">1x</span>
738
- <span class="cline-any cline-yes">1x</span>
739
- <span class="cline-any cline-yes">1x</span>
740
- <span class="cline-any cline-yes">1x</span>
741
- <span class="cline-any cline-yes">1x</span>
742
- <span class="cline-any cline-yes">1x</span>
743
- <span class="cline-any cline-yes">1x</span>
744
- <span class="cline-any cline-yes">1x</span>
745
- <span class="cline-any cline-yes">1x</span>
746
- <span class="cline-any cline-yes">1x</span>
747
- <span class="cline-any cline-yes">1x</span>
748
- <span class="cline-any cline-yes">1x</span>
749
- <span class="cline-any cline-yes">6x</span>
750
- <span class="cline-any cline-yes">6x</span>
751
- <span class="cline-any cline-yes">1x</span>
752
- <span class="cline-any cline-yes">1x</span>
753
- <span class="cline-any cline-yes">1x</span>
754
- <span class="cline-any cline-yes">1x</span>
755
- <span class="cline-any cline-yes">1x</span>
756
- <span class="cline-any cline-yes">1x</span>
757
- <span class="cline-any cline-yes">1x</span>
758
- <span class="cline-any cline-yes">1x</span>
759
- <span class="cline-any cline-yes">1x</span>
760
- <span class="cline-any cline-yes">1x</span>
761
- <span class="cline-any cline-yes">1x</span>
762
- <span class="cline-any cline-yes">1x</span>
763
- <span class="cline-any cline-yes">1x</span>
764
- <span class="cline-any cline-yes">1x</span>
765
- <span class="cline-any cline-yes">3x</span>
766
- <span class="cline-any cline-yes">3x</span>
767
- <span class="cline-any cline-yes">1x</span>
768
- <span class="cline-any cline-yes">1x</span>
769
- <span class="cline-any cline-yes">1x</span>
770
- <span class="cline-any cline-yes">1x</span>
771
- <span class="cline-any cline-yes">1x</span>
772
- <span class="cline-any cline-yes">1x</span>
773
- <span class="cline-any cline-yes">1x</span>
774
- <span class="cline-any cline-yes">1x</span>
775
- <span class="cline-any cline-yes">1x</span>
776
- <span class="cline-any cline-yes">1x</span>
777
- <span class="cline-any cline-yes">1x</span>
778
- <span class="cline-any cline-yes">2x</span>
779
- <span class="cline-any cline-yes">2x</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Task, Priority } from '../types/index.js';
781
- &nbsp;
782
- /**
783
- * Filter predicate function type
784
- * Returns true if task should be included in results
785
- */
786
- export type TaskFilter = (task: Task) =&gt; boolean;
787
- &nbsp;
788
- /**
789
- * Filter tasks by assignee
790
- *
791
- * @param assignee - Username to filter by (without @ symbol)
792
- * @returns Filter predicate
793
- *
794
- * @example
795
- * tasks.filter(byAssignee('nick'))
796
- */
797
- export function byAssignee(assignee: string): TaskFilter {
798
- return (task: Task) =&gt; task.assignee === assignee;
799
- }
800
- &nbsp;
801
- /**
802
- * Filter tasks by completion status
803
- *
804
- * @param completed - true for completed, false for incomplete
805
- * @returns Filter predicate
806
- *
807
- * @example
808
- * tasks.filter(byCompleted(false)) // Get incomplete tasks
809
- */
810
- export function byCompleted(completed: boolean): TaskFilter {
811
- return (task: Task) =&gt; task.completed === completed;
812
- }
813
- &nbsp;
814
- /**
815
- * Filter tasks by priority level
816
- *
817
- * @param priority - Priority level to filter by
818
- * @returns Filter predicate
819
- *
820
- * @example
821
- * tasks.filter(byPriority('urgent'))
822
- */
823
- export function byPriority(priority: Priority): TaskFilter {
824
- return (task: Task) =&gt; task.priority === priority;
825
- }
826
- &nbsp;
827
- /**
828
- * Filter tasks by project
829
- *
830
- * @param project - Project name to filter by
831
- * @returns Filter predicate
832
- *
833
- * @example
834
- * tasks.filter(byProject('acme-app'))
835
- */
836
- export function byProject(project: string): TaskFilter {
837
- return (task: Task) =&gt; task.project === project;
838
- }
839
- &nbsp;
840
- /**
841
- * Filter tasks by person (from 1-1 context)
842
- *
843
- * @param person - Person identifier to filter by
844
- * @returns Filter predicate
845
- *
846
- * @example
847
- * tasks.filter(byPerson('jane-doe'))
848
- */
849
- export function byPerson(person: string): TaskFilter {
850
- return (task: Task) =&gt; task.person === person;
851
- }
852
- &nbsp;
853
- /**
854
- * Filter tasks by tag
855
- *
856
- * @param tag - Tag to filter by (without # symbol)
857
- * @returns Filter predicate
858
- *
859
- * @example
860
- * tasks.filter(byTag('urgent'))
861
- */
862
- export function byTag(tag: string): TaskFilter {
863
- return (task: Task) =&gt; task.tags.includes(tag);
864
- }
865
- &nbsp;
866
- /**
867
- * Filter tasks by file path
868
- *
869
- * @param path - File path or directory to filter by
870
- * @param options - Filter options
871
- * @returns Filter predicate
872
- *
873
- * @example
874
- * // Match exact file
875
- * tasks.filter(byPath('projects/acme-app/sprint.md'))
876
- *
877
- * // Match directory (recursive)
878
- * tasks.filter(byPath('projects/acme-app'))
879
- *
880
- * // Match directory (non-recursive)
881
- * tasks.filter(byPath('projects/acme-app', { recursive: false }))
882
- */
883
- export function byPath(
884
- path: string,
885
- options: { recursive?: boolean } = { recursive: true },
886
- ): TaskFilter {
887
- const normalizedPath = path.replace(/\\/g, '/');
888
- const isDirectory = !normalizedPath.endsWith('.md');
889
- &nbsp;
890
- return (task: Task) =&gt; {
891
- const taskPath = task.file.replace(/\\/g, '/');
892
- &nbsp;
893
- // Exact file match
894
- if (!isDirectory) {
895
- return taskPath === normalizedPath;
896
- }
897
- &nbsp;
898
- // Directory match
899
- if (options.recursive) {
900
- // Recursive: match if task is in directory or subdirectories
901
- return (
902
- taskPath.startsWith(normalizedPath + '/') || taskPath === normalizedPath
903
- );
904
- } else {
905
- // Non-recursive: match only direct children
906
- const dirPrefix = normalizedPath + '/';
907
- if (!taskPath.startsWith(dirPrefix)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
908
- <span class="cstat-no" title="statement not covered" > return false;</span>
909
- <span class="cstat-no" title="statement not covered" > }</span>
910
- // Check that there are no additional slashes after the directory
911
- const remainder = taskPath.substring(dirPrefix.length);
912
- return !remainder.includes('/');
913
- }
914
- };
915
- }
916
- &nbsp;
917
- /**
918
- * Get start of day in UTC
919
- */
920
- function getUTCStartOfDay(date: Date): Date {
921
- return new Date(
922
- Date.UTC(
923
- date.getUTCFullYear(),
924
- date.getUTCMonth(),
925
- date.getUTCDate(),
926
- 0,
927
- 0,
928
- 0,
929
- 0,
930
- ),
931
- );
932
- }
933
- &nbsp;
934
- /**
935
- * Get end of day in UTC
936
- */
937
- function getUTCEndOfDay(date: Date): Date {
938
- return new Date(
939
- Date.UTC(
940
- date.getUTCFullYear(),
941
- date.getUTCMonth(),
942
- date.getUTCDate(),
943
- 23,
944
- 59,
945
- 59,
946
- 999,
947
- ),
948
- );
949
- }
950
- &nbsp;
951
- /**
952
- * Add days to a date in UTC
953
- */
954
- function addUTCDays(date: Date, days: number): Date {
955
- const result = new Date(date);
956
- result.setUTCDate(result.getUTCDate() + days);
957
- return result;
958
- }
959
- &nbsp;
960
- /**
961
- * Get start of week (Monday) in UTC
962
- */
963
- function getUTCStartOfWeek(date: Date): Date {
964
- const dayOfWeek = date.getUTCDay();
965
- const diff = (dayOfWeek === 0 ? <span class="branch-0 cbranch-no" title="branch not covered" >-6 : 1) - d</span>ayOfWeek; // Monday is 1, Sunday is 0
966
- const result = addUTCDays(date, diff);
967
- return getUTCStartOfDay(result);
968
- }
969
- &nbsp;
970
- /**
971
- * Get end of week (Sunday) in UTC
972
- */
973
- function getUTCEndOfWeek(date: Date): Date {
974
- const dayOfWeek = date.getUTCDay();
975
- const diff = dayOfWeek === 0 ? <span class="branch-0 cbranch-no" title="branch not covered" >0 : 7 - dayOfWeek;</span>
976
- const result = addUTCDays(date, diff);
977
- return getUTCEndOfDay(result);
978
- }
979
- &nbsp;
980
- /**
981
- * Filter tasks that are overdue
982
- * A task is overdue if it has a due date in the past
983
- *
984
- * @param referenceDate - Date to compare against (defaults to now)
985
- * @returns Filter predicate
986
- *
987
- * @example
988
- * tasks.filter(isOverdue())
989
- */
990
- export function isOverdue(referenceDate: Date = new Date()): TaskFilter {
991
- const today = getUTCStartOfDay(referenceDate);
992
- &nbsp;
993
- return (task: Task) =&gt; {
994
- if (!task.dueDate || task.completed) {
995
- return false;
996
- }
997
- return task.dueDate &lt; today;
998
- };
999
- }
1000
- &nbsp;
1001
- /**
1002
- * Filter tasks due today
1003
- *
1004
- * @param referenceDate - Date to compare against (defaults to now)
1005
- * @returns Filter predicate
1006
- *
1007
- * @example
1008
- * tasks.filter(isDueToday())
1009
- */
1010
- export function isDueToday(referenceDate: Date = new Date()): TaskFilter {
1011
- const todayStart = getUTCStartOfDay(referenceDate);
1012
- const todayEnd = getUTCEndOfDay(referenceDate);
1013
- &nbsp;
1014
- return (task: Task) =&gt; {
1015
- if (!task.dueDate || task.completed) {
1016
- return false;
1017
- }
1018
- return task.dueDate &gt;= todayStart &amp;&amp; task.dueDate &lt;= todayEnd;
1019
- };
1020
- }
1021
- &nbsp;
1022
- /**
1023
- * Filter tasks due this week
1024
- *
1025
- * @param referenceDate - Date to compare against (defaults to now)
1026
- * @returns Filter predicate
1027
- *
1028
- * @example
1029
- * tasks.filter(isDueThisWeek())
1030
- */
1031
- export function isDueThisWeek(referenceDate: Date = new Date()): TaskFilter {
1032
- const weekStart = getUTCStartOfWeek(referenceDate);
1033
- const weekEnd = getUTCEndOfWeek(referenceDate);
1034
- &nbsp;
1035
- return (task: Task) =&gt; {
1036
- if (!task.dueDate || task.completed) {
1037
- return false;
1038
- }
1039
- return task.dueDate &gt;= weekStart &amp;&amp; task.dueDate &lt;= weekEnd;
1040
- };
1041
- }
1042
- &nbsp;
1043
- /**
1044
- * Filter tasks due within a specific number of days
1045
- *
1046
- * @param days - Number of days from reference date
1047
- * @param referenceDate - Date to compare against (defaults to now)
1048
- * @returns Filter predicate
1049
- *
1050
- * @example
1051
- * tasks.filter(isDueWithinDays(7)) // Due in next 7 days
1052
- */
1053
- export function isDueWithinDays(
1054
- days: number,
1055
- referenceDate: Date = new Date(),
1056
- ): TaskFilter {
1057
- const start = getUTCStartOfDay(referenceDate);
1058
- const end = getUTCEndOfDay(addUTCDays(referenceDate, days));
1059
- &nbsp;
1060
- return (task: Task) =&gt; {
1061
- if (!task.dueDate || task.completed) {
1062
- return false;
1063
- }
1064
- return task.dueDate &gt;= start &amp;&amp; task.dueDate &lt;= end;
1065
- };
1066
- }
1067
- &nbsp;
1068
- /**
1069
- * Filter tasks that have a due date set
1070
- *
1071
- * @returns Filter predicate
1072
- *
1073
- * @example
1074
- * tasks.filter(hasDueDate())
1075
- */
1076
- export function hasDueDate(): TaskFilter {
1077
- return (task: Task) =&gt; task.dueDate !== undefined;
1078
- }
1079
- &nbsp;
1080
- /**
1081
- * Filter tasks that have no due date set
1082
- *
1083
- * @returns Filter predicate
1084
- *
1085
- * @example
1086
- * tasks.filter(hasNoDueDate())
1087
- */
1088
- export function hasNoDueDate(): TaskFilter {
1089
- return (task: Task) =&gt; task.dueDate === undefined;
1090
- }
1091
- &nbsp;
1092
- /**
1093
- * Combine multiple filters with AND logic
1094
- *
1095
- * @param filters - Array of filter predicates
1096
- * @returns Combined filter predicate
1097
- *
1098
- * @example
1099
- * tasks.filter(combineFilters([
1100
- * byAssignee('nick'),
1101
- * byPriority('urgent'),
1102
- * isOverdue()
1103
- * ]))
1104
- */
1105
- export function combineFilters(filters: TaskFilter[]): TaskFilter {
1106
- return (task: Task) =&gt; filters.every((filter) =&gt; filter(task));
1107
- }
1108
- &nbsp;
1109
- /**
1110
- * Combine multiple filters with OR logic
1111
- *
1112
- * @param filters - Array of filter predicates
1113
- * @returns Combined filter predicate
1114
- *
1115
- * @example
1116
- * tasks.filter(combineFiltersOr([
1117
- * isOverdue(),
1118
- * isDueToday()
1119
- * ]))
1120
- */
1121
- export function combineFiltersOr(filters: TaskFilter[]): TaskFilter {
1122
- return (task: Task) =&gt; filters.some((filter) =&gt; filter(task));
1123
- }
1124
- &nbsp;
1125
- /**
1126
- * Negate a filter
1127
- *
1128
- * @param filter - Filter predicate to negate
1129
- * @returns Negated filter predicate
1130
- *
1131
- * @example
1132
- * tasks.filter(not(byCompleted(true))) // Get incomplete tasks
1133
- */
1134
- export function not(filter: TaskFilter): TaskFilter {
1135
- return (task: Task) =&gt; !filter(task);
1136
- }
1137
- &nbsp;</pre></td></tr></table></pre>
1138
-
1139
- <div class='push'></div><!-- for sticky footer -->
1140
- </div><!-- /wrapper -->
1141
- <div class='footer quiet pad2 space-top1 center small'>
1142
- Code coverage generated by
1143
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1144
- at 2026-01-26T03:50:53.066Z
1145
- </div>
1146
- <script src="../../prettify.js"></script>
1147
- <script>
1148
- window.onload = function () {
1149
- prettyPrint();
1150
- };
1151
- </script>
1152
- <script src="../../sorter.js"></script>
1153
- <script src="../../block-navigation.js"></script>
1154
- </body>
1155
- </html>
1156
-