@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.
- package/CHANGELOG.md +38 -0
- package/README.md +6 -6
- package/dist/index.d.mts +40 -10
- package/dist/index.d.ts +40 -10
- package/dist/index.js +59 -11
- package/dist/index.mjs +61 -12
- package/package.json +1 -1
- package/src/parser/index.ts +28 -5
- package/src/parser/patterns.ts +8 -5
- package/src/scanner/index.ts +17 -0
- package/src/types/index.ts +4 -0
- package/src/utils/dates.ts +58 -10
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/coverage-final.json +0 -10
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -206
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -206
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov-report/src/filters/index.html +0 -116
- package/coverage/lcov-report/src/filters/index.ts.html +0 -1156
- package/coverage/lcov-report/src/index.html +0 -116
- package/coverage/lcov-report/src/index.ts.html +0 -157
- package/coverage/lcov-report/src/parser/index.html +0 -131
- package/coverage/lcov-report/src/parser/index.ts.html +0 -1102
- package/coverage/lcov-report/src/parser/patterns.ts.html +0 -661
- package/coverage/lcov-report/src/scanner/index.html +0 -116
- package/coverage/lcov-report/src/scanner/index.ts.html +0 -658
- package/coverage/lcov-report/src/sorting/index.html +0 -116
- package/coverage/lcov-report/src/sorting/index.ts.html +0 -736
- package/coverage/lcov-report/src/utils/dates.ts.html +0 -499
- package/coverage/lcov-report/src/utils/id.ts.html +0 -169
- package/coverage/lcov-report/src/utils/index.html +0 -131
- package/coverage/lcov-report/src/writer/index.html +0 -116
- package/coverage/lcov-report/src/writer/index.ts.html +0 -1093
- package/coverage/lcov.info +0 -2294
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/src/filters/index.html +0 -116
- package/coverage/src/filters/index.ts.html +0 -1156
- package/coverage/src/index.html +0 -116
- package/coverage/src/index.ts.html +0 -157
- package/coverage/src/parser/index.html +0 -131
- package/coverage/src/parser/index.ts.html +0 -1102
- package/coverage/src/parser/patterns.ts.html +0 -661
- package/coverage/src/scanner/index.html +0 -116
- package/coverage/src/scanner/index.ts.html +0 -658
- package/coverage/src/sorting/index.html +0 -116
- package/coverage/src/sorting/index.ts.html +0 -736
- package/coverage/src/utils/dates.ts.html +0 -499
- package/coverage/src/utils/id.ts.html +0 -169
- package/coverage/src/utils/index.html +0 -131
- package/coverage/src/writer/index.html +0 -116
- package/coverage/src/writer/index.ts.html +0 -1093
|
@@ -1,658 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/scanner/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/scanner</a> index.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">100% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>191/191</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">100% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>23/23</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'>4/4</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">100% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>191/191</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
258
|
-
<span class="cline-any cline-yes">1x</span>
|
|
259
|
-
<span class="cline-any cline-yes">1x</span>
|
|
260
|
-
<span class="cline-any cline-yes">1x</span>
|
|
261
|
-
<span class="cline-any cline-yes">1x</span>
|
|
262
|
-
<span class="cline-any cline-yes">1x</span>
|
|
263
|
-
<span class="cline-any cline-yes">1x</span>
|
|
264
|
-
<span class="cline-any cline-yes">1x</span>
|
|
265
|
-
<span class="cline-any cline-yes">1x</span>
|
|
266
|
-
<span class="cline-any cline-yes">1x</span>
|
|
267
|
-
<span class="cline-any cline-yes">1x</span>
|
|
268
|
-
<span class="cline-any cline-yes">1x</span>
|
|
269
|
-
<span class="cline-any cline-yes">1x</span>
|
|
270
|
-
<span class="cline-any cline-yes">1x</span>
|
|
271
|
-
<span class="cline-any cline-yes">1x</span>
|
|
272
|
-
<span class="cline-any cline-yes">1x</span>
|
|
273
|
-
<span class="cline-any cline-yes">1x</span>
|
|
274
|
-
<span class="cline-any cline-yes">1x</span>
|
|
275
|
-
<span class="cline-any cline-yes">51x</span>
|
|
276
|
-
<span class="cline-any cline-yes">51x</span>
|
|
277
|
-
<span class="cline-any cline-yes">51x</span>
|
|
278
|
-
<span class="cline-any cline-yes">1x</span>
|
|
279
|
-
<span class="cline-any cline-yes">1x</span>
|
|
280
|
-
<span class="cline-any cline-yes">1x</span>
|
|
281
|
-
<span class="cline-any cline-yes">1x</span>
|
|
282
|
-
<span class="cline-any cline-yes">1x</span>
|
|
283
|
-
<span class="cline-any cline-yes">1x</span>
|
|
284
|
-
<span class="cline-any cline-yes">1x</span>
|
|
285
|
-
<span class="cline-any cline-yes">1x</span>
|
|
286
|
-
<span class="cline-any cline-yes">1x</span>
|
|
287
|
-
<span class="cline-any cline-yes">1x</span>
|
|
288
|
-
<span class="cline-any cline-yes">1x</span>
|
|
289
|
-
<span class="cline-any cline-yes">1x</span>
|
|
290
|
-
<span class="cline-any cline-yes">1x</span>
|
|
291
|
-
<span class="cline-any cline-yes">1x</span>
|
|
292
|
-
<span class="cline-any cline-yes">1x</span>
|
|
293
|
-
<span class="cline-any cline-yes">50x</span>
|
|
294
|
-
<span class="cline-any cline-yes">50x</span>
|
|
295
|
-
<span class="cline-any cline-yes">50x</span>
|
|
296
|
-
<span class="cline-any cline-yes">50x</span>
|
|
297
|
-
<span class="cline-any cline-yes">50x</span>
|
|
298
|
-
<span class="cline-any cline-yes">1x</span>
|
|
299
|
-
<span class="cline-any cline-yes">1x</span>
|
|
300
|
-
<span class="cline-any cline-yes">1x</span>
|
|
301
|
-
<span class="cline-any cline-yes">1x</span>
|
|
302
|
-
<span class="cline-any cline-yes">1x</span>
|
|
303
|
-
<span class="cline-any cline-yes">1x</span>
|
|
304
|
-
<span class="cline-any cline-yes">1x</span>
|
|
305
|
-
<span class="cline-any cline-yes">1x</span>
|
|
306
|
-
<span class="cline-any cline-yes">1x</span>
|
|
307
|
-
<span class="cline-any cline-yes">1x</span>
|
|
308
|
-
<span class="cline-any cline-yes">1x</span>
|
|
309
|
-
<span class="cline-any cline-yes">1x</span>
|
|
310
|
-
<span class="cline-any cline-yes">1x</span>
|
|
311
|
-
<span class="cline-any cline-yes">1x</span>
|
|
312
|
-
<span class="cline-any cline-yes">1x</span>
|
|
313
|
-
<span class="cline-any cline-yes">1x</span>
|
|
314
|
-
<span class="cline-any cline-yes">1x</span>
|
|
315
|
-
<span class="cline-any cline-yes">1x</span>
|
|
316
|
-
<span class="cline-any cline-yes">1x</span>
|
|
317
|
-
<span class="cline-any cline-yes">1x</span>
|
|
318
|
-
<span class="cline-any cline-yes">1x</span>
|
|
319
|
-
<span class="cline-any cline-yes">1x</span>
|
|
320
|
-
<span class="cline-any cline-yes">1x</span>
|
|
321
|
-
<span class="cline-any cline-yes">1x</span>
|
|
322
|
-
<span class="cline-any cline-yes">1x</span>
|
|
323
|
-
<span class="cline-any cline-yes">1x</span>
|
|
324
|
-
<span class="cline-any cline-yes">44x</span>
|
|
325
|
-
<span class="cline-any cline-yes">44x</span>
|
|
326
|
-
<span class="cline-any cline-yes">44x</span>
|
|
327
|
-
<span class="cline-any cline-yes">44x</span>
|
|
328
|
-
<span class="cline-any cline-yes">44x</span>
|
|
329
|
-
<span class="cline-any cline-yes">44x</span>
|
|
330
|
-
<span class="cline-any cline-yes">44x</span>
|
|
331
|
-
<span class="cline-any cline-yes">44x</span>
|
|
332
|
-
<span class="cline-any cline-yes">44x</span>
|
|
333
|
-
<span class="cline-any cline-yes">44x</span>
|
|
334
|
-
<span class="cline-any cline-yes">44x</span>
|
|
335
|
-
<span class="cline-any cline-yes">44x</span>
|
|
336
|
-
<span class="cline-any cline-yes">44x</span>
|
|
337
|
-
<span class="cline-any cline-yes">44x</span>
|
|
338
|
-
<span class="cline-any cline-yes">44x</span>
|
|
339
|
-
<span class="cline-any cline-yes">44x</span>
|
|
340
|
-
<span class="cline-any cline-yes">44x</span>
|
|
341
|
-
<span class="cline-any cline-yes">44x</span>
|
|
342
|
-
<span class="cline-any cline-yes">44x</span>
|
|
343
|
-
<span class="cline-any cline-yes">44x</span>
|
|
344
|
-
<span class="cline-any cline-yes">44x</span>
|
|
345
|
-
<span class="cline-any cline-yes">44x</span>
|
|
346
|
-
<span class="cline-any cline-yes">44x</span>
|
|
347
|
-
<span class="cline-any cline-yes">44x</span>
|
|
348
|
-
<span class="cline-any cline-yes">44x</span>
|
|
349
|
-
<span class="cline-any cline-yes">133x</span>
|
|
350
|
-
<span class="cline-any cline-yes">133x</span>
|
|
351
|
-
<span class="cline-any cline-yes">105x</span>
|
|
352
|
-
<span class="cline-any cline-yes">105x</span>
|
|
353
|
-
<span class="cline-any cline-yes">105x</span>
|
|
354
|
-
<span class="cline-any cline-yes">105x</span>
|
|
355
|
-
<span class="cline-any cline-yes">105x</span>
|
|
356
|
-
<span class="cline-any cline-yes">133x</span>
|
|
357
|
-
<span class="cline-any cline-yes">13x</span>
|
|
358
|
-
<span class="cline-any cline-yes">13x</span>
|
|
359
|
-
<span class="cline-any cline-yes">13x</span>
|
|
360
|
-
<span class="cline-any cline-yes">13x</span>
|
|
361
|
-
<span class="cline-any cline-yes">92x</span>
|
|
362
|
-
<span class="cline-any cline-yes">92x</span>
|
|
363
|
-
<span class="cline-any cline-yes">92x</span>
|
|
364
|
-
<span class="cline-any cline-yes">92x</span>
|
|
365
|
-
<span class="cline-any cline-yes">133x</span>
|
|
366
|
-
<span class="cline-any cline-yes">75x</span>
|
|
367
|
-
<span class="cline-any cline-yes">75x</span>
|
|
368
|
-
<span class="cline-any cline-yes">75x</span>
|
|
369
|
-
<span class="cline-any cline-yes">75x</span>
|
|
370
|
-
<span class="cline-any cline-yes">18x</span>
|
|
371
|
-
<span class="cline-any cline-yes">18x</span>
|
|
372
|
-
<span class="cline-any cline-yes">5x</span>
|
|
373
|
-
<span class="cline-any cline-yes">5x</span>
|
|
374
|
-
<span class="cline-any cline-yes">5x</span>
|
|
375
|
-
<span class="cline-any cline-yes">5x</span>
|
|
376
|
-
<span class="cline-any cline-yes">5x</span>
|
|
377
|
-
<span class="cline-any cline-yes">5x</span>
|
|
378
|
-
<span class="cline-any cline-yes">18x</span>
|
|
379
|
-
<span class="cline-any cline-yes">13x</span>
|
|
380
|
-
<span class="cline-any cline-yes">13x</span>
|
|
381
|
-
<span class="cline-any cline-yes">13x</span>
|
|
382
|
-
<span class="cline-any cline-yes">13x</span>
|
|
383
|
-
<span class="cline-any cline-yes">13x</span>
|
|
384
|
-
<span class="cline-any cline-yes">18x</span>
|
|
385
|
-
<span class="cline-any cline-yes">75x</span>
|
|
386
|
-
<span class="cline-any cline-yes">92x</span>
|
|
387
|
-
<span class="cline-any cline-yes">133x</span>
|
|
388
|
-
<span class="cline-any cline-yes">34x</span>
|
|
389
|
-
<span class="cline-any cline-yes">34x</span>
|
|
390
|
-
<span class="cline-any cline-yes">133x</span>
|
|
391
|
-
<span class="cline-any cline-yes">44x</span>
|
|
392
|
-
<span class="cline-any cline-yes">44x</span>
|
|
393
|
-
<span class="cline-any cline-yes">44x</span>
|
|
394
|
-
<span class="cline-any cline-yes">1x</span>
|
|
395
|
-
<span class="cline-any cline-yes">1x</span>
|
|
396
|
-
<span class="cline-any cline-yes">1x</span>
|
|
397
|
-
<span class="cline-any cline-yes">1x</span>
|
|
398
|
-
<span class="cline-any cline-yes">1x</span>
|
|
399
|
-
<span class="cline-any cline-yes">1x</span>
|
|
400
|
-
<span class="cline-any cline-yes">1x</span>
|
|
401
|
-
<span class="cline-any cline-yes">1x</span>
|
|
402
|
-
<span class="cline-any cline-yes">1x</span>
|
|
403
|
-
<span class="cline-any cline-yes">1x</span>
|
|
404
|
-
<span class="cline-any cline-yes">1x</span>
|
|
405
|
-
<span class="cline-any cline-yes">5x</span>
|
|
406
|
-
<span class="cline-any cline-yes">5x</span>
|
|
407
|
-
<span class="cline-any cline-yes">5x</span>
|
|
408
|
-
<span class="cline-any cline-yes">5x</span>
|
|
409
|
-
<span class="cline-any cline-yes">5x</span>
|
|
410
|
-
<span class="cline-any cline-yes">5x</span>
|
|
411
|
-
<span class="cline-any cline-yes">5x</span>
|
|
412
|
-
<span class="cline-any cline-yes">5x</span>
|
|
413
|
-
<span class="cline-any cline-yes">5x</span>
|
|
414
|
-
<span class="cline-any cline-yes">5x</span>
|
|
415
|
-
<span class="cline-any cline-yes">9x</span>
|
|
416
|
-
<span class="cline-any cline-yes">9x</span>
|
|
417
|
-
<span class="cline-any cline-yes">9x</span>
|
|
418
|
-
<span class="cline-any cline-yes">9x</span>
|
|
419
|
-
<span class="cline-any cline-yes">9x</span>
|
|
420
|
-
<span class="cline-any cline-yes">9x</span>
|
|
421
|
-
<span class="cline-any cline-yes">9x</span>
|
|
422
|
-
<span class="cline-any cline-yes">2x</span>
|
|
423
|
-
<span class="cline-any cline-yes">2x</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">2x</span>
|
|
439
|
-
<span class="cline-any cline-yes">9x</span>
|
|
440
|
-
<span class="cline-any cline-yes">9x</span>
|
|
441
|
-
<span class="cline-any cline-yes">5x</span>
|
|
442
|
-
<span class="cline-any cline-yes">5x</span>
|
|
443
|
-
<span class="cline-any cline-yes">5x</span>
|
|
444
|
-
<span class="cline-any cline-yes">5x</span>
|
|
445
|
-
<span class="cline-any cline-yes">5x</span>
|
|
446
|
-
<span class="cline-any cline-yes">5x</span>
|
|
447
|
-
<span class="cline-any cline-yes">1x</span>
|
|
448
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { Task, ParsingContext, Warning } from '../types/index.js';
|
|
449
|
-
import { parseTask } from '../parser/index.js';
|
|
450
|
-
import { extractDateFromHeading } from '../utils/dates.js';
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* Extract project name from file path
|
|
454
|
-
*
|
|
455
|
-
* Looks for "projects/" directory in path and returns the
|
|
456
|
-
* immediate subdirectory name.
|
|
457
|
-
*
|
|
458
|
-
* @param filePath - Relative file path
|
|
459
|
-
* @returns Project name or undefined
|
|
460
|
-
*
|
|
461
|
-
* @example
|
|
462
|
-
* extractProjectFromPath('projects/acme-app/notes.md') // => 'acme-app'
|
|
463
|
-
* extractProjectFromPath('1-1s/jane.md') // => undefined
|
|
464
|
-
*/
|
|
465
|
-
export function extractProjectFromPath(filePath: string): string | undefined {
|
|
466
|
-
const match = filePath.match(/projects\/([^/]+)/);
|
|
467
|
-
return match?.[1];
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
/**
|
|
471
|
-
* Extract person name from file path
|
|
472
|
-
*
|
|
473
|
-
* Looks for "1-1s/" directory in path and extracts the filename
|
|
474
|
-
* (without extension) as the person identifier.
|
|
475
|
-
*
|
|
476
|
-
* @param filePath - Relative file path
|
|
477
|
-
* @returns Person identifier or undefined
|
|
478
|
-
*
|
|
479
|
-
* @example
|
|
480
|
-
* extractPersonFromFilename('1-1s/jane-doe.md') // => 'jane-doe'
|
|
481
|
-
* extractPersonFromFilename('projects/acme/notes.md') // => undefined
|
|
482
|
-
*/
|
|
483
|
-
export function extractPersonFromFilename(
|
|
484
|
-
filePath: string,
|
|
485
|
-
): string | undefined {
|
|
486
|
-
const match = filePath.match(/1-1s\/([^/]+)\.md$/);
|
|
487
|
-
return match?.[1];
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
/**
|
|
491
|
-
* MarkdownScanner scans markdown file content and extracts tasks
|
|
492
|
-
*
|
|
493
|
-
* Key features:
|
|
494
|
-
* - Context tracking: Maintains project, person, and heading date context
|
|
495
|
-
* - Pure function: No I/O, just string processing
|
|
496
|
-
* - Warning collection: Reports issues like relative dates without context
|
|
497
|
-
*
|
|
498
|
-
* @example
|
|
499
|
-
* const scanner = new MarkdownScanner();
|
|
500
|
-
* const result = scanner.scanFile('projects/acme-app/notes.md', fileContent);
|
|
501
|
-
* console.log(result.tasks); // Array of Task objects
|
|
502
|
-
* console.log(result.warnings); // Array of Warning objects
|
|
503
|
-
*/
|
|
504
|
-
export class MarkdownScanner {
|
|
505
|
-
/**
|
|
506
|
-
* Scan a single markdown file's content
|
|
507
|
-
*
|
|
508
|
-
* Processes the file line-by-line, tracking context and extracting tasks.
|
|
509
|
-
*
|
|
510
|
-
* @param filePath - Relative file path (for context extraction)
|
|
511
|
-
* @param content - File content as string
|
|
512
|
-
* @returns Object containing tasks and warnings
|
|
513
|
-
*/
|
|
514
|
-
scanFile(
|
|
515
|
-
filePath: string,
|
|
516
|
-
content: string,
|
|
517
|
-
): {
|
|
518
|
-
tasks: Task[];
|
|
519
|
-
warnings: Warning[];
|
|
520
|
-
} {
|
|
521
|
-
const tasks: Task[] = [];
|
|
522
|
-
const warnings: Warning[] = [];
|
|
523
|
-
|
|
524
|
-
// Track Todoist IDs to detect duplicates
|
|
525
|
-
const todoistIds = new Map<string, { file: string; line: number }>();
|
|
526
|
-
|
|
527
|
-
// Initialize context from file path
|
|
528
|
-
const context: ParsingContext = {};
|
|
529
|
-
|
|
530
|
-
const project = extractProjectFromPath(filePath);
|
|
531
|
-
if (project !== undefined) context.project = project;
|
|
532
|
-
|
|
533
|
-
const person = extractPersonFromFilename(filePath);
|
|
534
|
-
if (person !== undefined) context.person = person;
|
|
535
|
-
|
|
536
|
-
// Process file line by line
|
|
537
|
-
const lines = content.split('\n');
|
|
538
|
-
|
|
539
|
-
for (let i = 0; i < lines.length; i++) {
|
|
540
|
-
const line = lines[i];
|
|
541
|
-
if (!line) continue; // Skip undefined lines
|
|
542
|
-
|
|
543
|
-
const lineNumber = i + 1; // 1-indexed
|
|
544
|
-
|
|
545
|
-
// Check if line is a heading with a date
|
|
546
|
-
const headingDate = extractDateFromHeading(line);
|
|
547
|
-
if (headingDate) {
|
|
548
|
-
context.currentDate = headingDate;
|
|
549
|
-
context.currentHeading = line.trim();
|
|
550
|
-
continue; // Headings are not tasks
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
// Try to parse as task
|
|
554
|
-
const result = parseTask(line, lineNumber, filePath, context);
|
|
555
|
-
|
|
556
|
-
if (result.task) {
|
|
557
|
-
tasks.push(result.task);
|
|
558
|
-
|
|
559
|
-
// Check for duplicate Todoist IDs
|
|
560
|
-
if (result.task.todoistId) {
|
|
561
|
-
const existing = todoistIds.get(result.task.todoistId);
|
|
562
|
-
if (existing) {
|
|
563
|
-
warnings.push({
|
|
564
|
-
file: filePath,
|
|
565
|
-
line: lineNumber,
|
|
566
|
-
text: result.task.text,
|
|
567
|
-
reason: `Duplicate Todoist ID [todoist:${result.task.todoistId}]. Also found at ${existing.file}:${existing.line}.`,
|
|
568
|
-
});
|
|
569
|
-
} else {
|
|
570
|
-
todoistIds.set(result.task.todoistId, {
|
|
571
|
-
file: filePath,
|
|
572
|
-
line: lineNumber,
|
|
573
|
-
});
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
if (result.warnings.length > 0) {
|
|
579
|
-
warnings.push(...result.warnings);
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
return { tasks, warnings };
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
/**
|
|
587
|
-
* Scan multiple files
|
|
588
|
-
*
|
|
589
|
-
* Note: This method expects file contents to be provided by the caller.
|
|
590
|
-
* File I/O should be handled in the CLI package using fast-glob.
|
|
591
|
-
*
|
|
592
|
-
* @param files - Array of {path, content} objects
|
|
593
|
-
* @returns Combined scan results from all files
|
|
594
|
-
*/
|
|
595
|
-
scanFiles(files: Array<{ path: string; content: string }>): {
|
|
596
|
-
tasks: Task[];
|
|
597
|
-
warnings: Warning[];
|
|
598
|
-
} {
|
|
599
|
-
const allTasks: Task[] = [];
|
|
600
|
-
const allWarnings: Warning[] = [];
|
|
601
|
-
|
|
602
|
-
// Track Todoist IDs across all files
|
|
603
|
-
const todoistIds = new Map<string, { file: string; line: number }>();
|
|
604
|
-
|
|
605
|
-
for (const file of files) {
|
|
606
|
-
const result = this.scanFile(file.path, file.content);
|
|
607
|
-
allTasks.push(...result.tasks);
|
|
608
|
-
allWarnings.push(...result.warnings);
|
|
609
|
-
|
|
610
|
-
// Check for duplicate Todoist IDs across files
|
|
611
|
-
for (const task of result.tasks) {
|
|
612
|
-
if (task.todoistId) {
|
|
613
|
-
const existing = todoistIds.get(task.todoistId);
|
|
614
|
-
if (existing && existing.file !== task.file) {
|
|
615
|
-
// Only add warning if duplicate is in a different file
|
|
616
|
-
// (same-file duplicates are already caught by scanFile)
|
|
617
|
-
allWarnings.push({
|
|
618
|
-
file: task.file,
|
|
619
|
-
line: task.line,
|
|
620
|
-
text: task.text,
|
|
621
|
-
reason: `Duplicate Todoist ID [todoist:${task.todoistId}] across files. Also found at ${existing.file}:${existing.line}.`,
|
|
622
|
-
});
|
|
623
|
-
} else if (!existing) {
|
|
624
|
-
todoistIds.set(task.todoistId, {
|
|
625
|
-
file: task.file,
|
|
626
|
-
line: task.line,
|
|
627
|
-
});
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
return {
|
|
634
|
-
tasks: allTasks,
|
|
635
|
-
warnings: allWarnings,
|
|
636
|
-
};
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
</pre></td></tr></table></pre>
|
|
640
|
-
|
|
641
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
642
|
-
</div><!-- /wrapper -->
|
|
643
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
644
|
-
Code coverage generated by
|
|
645
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
646
|
-
at 2026-01-26T03:50:53.053Z
|
|
647
|
-
</div>
|
|
648
|
-
<script src="../../prettify.js"></script>
|
|
649
|
-
<script>
|
|
650
|
-
window.onload = function () {
|
|
651
|
-
prettyPrint();
|
|
652
|
-
};
|
|
653
|
-
</script>
|
|
654
|
-
<script src="../../sorter.js"></script>
|
|
655
|
-
<script src="../../block-navigation.js"></script>
|
|
656
|
-
</body>
|
|
657
|
-
</html>
|
|
658
|
-
|