@bernierllc/markdown-parser 1.0.0 → 1.0.4

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 ADDED
@@ -0,0 +1,15 @@
1
+ # @bernierllc/markdown-parser
2
+
3
+ ## 1.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`a314763`](https://github.com/bernierllc/tools/commit/a31476336717301e410da2b0b64c8f1ee44c0e8d)]:
8
+ - @bernierllc/crypto-utils@1.0.4
9
+
10
+ ## 1.0.3
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`a65f28c`](https://github.com/bernierllc/tools/commit/a65f28c2a1d09da8e8c7c23dcebd8f6606d9783f)]:
15
+ - @bernierllc/crypto-utils@1.0.3
package/README.md CHANGED
@@ -295,9 +295,24 @@ console.log('Speedup:', result1.metadata.parseTime / result2.metadata.parseTime,
295
295
 
296
296
  ## Integration Status
297
297
 
298
- - **Logger**: ✅ Integrated - Uses `@bernierllc/logger` for debug output
299
- - **Docs-Suite**: ✅ Ready - Complete TypeScript definitions and JSDoc
300
- - **NeverHub**: ⚠️ Optional - Core package, standalone operation
298
+ ### Logger Integration
299
+ **Status**: Integrated
300
+
301
+ **Justification**: This package uses `@bernierllc/logger` for debug output during markdown parsing operations. Logging includes parse timing, cache hits/misses, and error details to help with debugging and performance monitoring.
302
+
303
+ **Pattern**: Direct integration - logger is a required dependency for this package.
304
+
305
+ ### NeverHub Integration
306
+ **Status**: Not applicable
307
+
308
+ **Justification**: This is a core utility package that performs markdown parsing. It does not participate in service discovery, event publishing, or service mesh operations. Markdown parsing is a stateless utility operation that doesn't require service registration or discovery.
309
+
310
+ **Pattern**: Core utility - no service mesh integration needed.
311
+
312
+ ### Docs-Suite Integration
313
+ **Status**: Ready
314
+
315
+ **Format**: TypeDoc-compatible JSDoc comments are included throughout the source code. All public APIs are documented with examples and type information.
301
316
 
302
317
  ## Performance
303
318
 
@@ -674,8 +674,10 @@ describe('MarkdownParser', () => {
674
674
  const parser = new MarkdownParser();
675
675
 
676
676
  // Mock parseToAST to throw error
677
- const originalParseToAST = (parser as any).parseToAST.bind(parser);
678
- (parser as any).parseToAST = jest.fn().mockRejectedValue(new Error('Parse failed'));
677
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
678
+ const parserWithPrivate = parser as any;
679
+ const originalParseToAST = parserWithPrivate.parseToAST.bind(parser);
680
+ parserWithPrivate.parseToAST = jest.fn().mockRejectedValue(new Error('Parse failed'));
679
681
 
680
682
  const result = await parser.parse('# Test');
681
683
 
@@ -684,15 +686,17 @@ describe('MarkdownParser', () => {
684
686
  expect(result.ast).toBeUndefined();
685
687
 
686
688
  // Restore original method
687
- (parser as any).parseToAST = originalParseToAST;
689
+ parserWithPrivate.parseToAST = originalParseToAST;
688
690
  });
689
691
 
690
692
  it('should handle unknown errors', async () => {
691
693
  const parser = new MarkdownParser();
692
694
 
693
695
  // Mock parseToAST to throw non-Error
694
- const originalParseToAST = (parser as any).parseToAST.bind(parser);
695
- (parser as any).parseToAST = jest.fn().mockRejectedValue('String error');
696
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
697
+ const parserWithPrivate = parser as any;
698
+ const originalParseToAST = parserWithPrivate.parseToAST.bind(parser);
699
+ parserWithPrivate.parseToAST = jest.fn().mockRejectedValue('String error');
696
700
 
697
701
  const result = await parser.parse('# Test');
698
702
 
@@ -700,7 +704,7 @@ describe('MarkdownParser', () => {
700
704
  expect(result.error).toBe('Unknown parse error');
701
705
 
702
706
  // Restore original method
703
- (parser as any).parseToAST = originalParseToAST;
707
+ parserWithPrivate.parseToAST = originalParseToAST;
704
708
  });
705
709
  });
706
710
 
@@ -232,18 +232,18 @@ describe('AST Utilities', () => {
232
232
 
233
233
  it('should not affect original when modifying clone', () => {
234
234
  const cloned = cloneNode(sampleAST);
235
- (cloned as any).type = 'modified';
235
+ (cloned as unknown as { type: string }).type = 'modified';
236
236
 
237
237
  expect(sampleAST.type).toBe('root');
238
- expect((cloned as any).type).toBe('modified');
238
+ expect((cloned as unknown as { type: string }).type).toBe('modified');
239
239
  });
240
240
 
241
241
  it('should clone children deeply', () => {
242
242
  const cloned = cloneNode(sampleAST);
243
- (cloned.children![0] as any).type = 'modified';
243
+ (cloned.children![0] as unknown as { type: string }).type = 'modified';
244
244
 
245
245
  expect(sampleAST.children![0].type).toBe('heading');
246
- expect((cloned.children![0] as any).type).toBe('modified');
246
+ expect((cloned.children![0] as unknown as { type: string }).type).toBe('modified');
247
247
  });
248
248
 
249
249
  it('should clone attributes', () => {
package/jest.config.cjs CHANGED
@@ -8,7 +8,8 @@ Redistribution or use in other products or commercial offerings is not permitted
8
8
 
9
9
  module.exports = {
10
10
  preset: 'ts-jest',
11
- testEnvironment: 'node',
11
+ // Use fixed environment to handle Node.js v25+ localStorage issue
12
+ testEnvironment: '<rootDir>/../../../jest-environment-node-fixed.cjs',
12
13
  collectCoverageFrom: [
13
14
  'src/**/*.{ts,tsx}',
14
15
  '!src/**/*.d.ts',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bernierllc/markdown-parser",
3
- "version": "1.0.0",
3
+ "version": "1.0.4",
4
4
  "description": "High-performance markdown parser with CommonMark, GFM, and plugin support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,8 +15,8 @@
15
15
  "author": "Bernier LLC",
16
16
  "license": "SEE LICENSE IN LICENSE",
17
17
  "dependencies": {
18
- "@bernierllc/logger": "^1.0.1",
19
- "@bernierllc/crypto-utils": "^1.0.2"
18
+ "@bernierllc/logger": "1.0.3",
19
+ "@bernierllc/crypto-utils": "1.0.4"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/jest": "^29.0.0",
@@ -30,7 +30,8 @@
30
30
  "typescript": "^5.0.0"
31
31
  },
32
32
  "publishConfig": {
33
- "access": "restricted"
33
+ "access": "restricted",
34
+ "registry": "https://registry.npmjs.org/"
34
35
  },
35
36
  "scripts": {
36
37
  "build": "tsc",
@@ -1,283 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1762366231201" clover="3.2.0">
3
- <project timestamp="1762366231201" name="All files">
4
- <metrics statements="250" coveredstatements="244" conditionals="91" coveredconditionals="87" methods="31" coveredmethods="30" elements="372" coveredelements="361" complexity="0" loc="250" ncloc="250" packages="3" files="6" classes="6"/>
5
- <package name="src">
6
- <metrics statements="188" coveredstatements="185" conditionals="74" coveredconditionals="72" methods="15" coveredmethods="15"/>
7
- <file name="MarkdownParser.ts" path="/Users/mattbernier/projects/tools/packages/core/markdown-parser/src/MarkdownParser.ts">
8
- <metrics statements="188" coveredstatements="185" conditionals="74" coveredconditionals="72" methods="15" coveredmethods="15"/>
9
- <line num="11" count="3" type="stmt"/>
10
- <line num="12" count="3" type="stmt"/>
11
- <line num="17" count="3" type="stmt"/>
12
- <line num="23" count="100" type="stmt"/>
13
- <line num="35" count="100" type="cond" truecount="2" falsecount="0"/>
14
- <line num="39" count="100" type="stmt"/>
15
- <line num="46" count="222" type="stmt"/>
16
- <line num="49" count="222" type="cond" truecount="1" falsecount="0"/>
17
- <line num="50" count="144" type="stmt"/>
18
- <line num="51" count="144" type="stmt"/>
19
- <line num="53" count="144" type="cond" truecount="1" falsecount="0"/>
20
- <line num="54" count="10" type="stmt"/>
21
- <line num="55" count="10" type="stmt"/>
22
- <line num="67" count="212" type="stmt"/>
23
- <line num="69" count="212" type="stmt"/>
24
- <line num="72" count="210" type="stmt"/>
25
- <line num="73" count="11" type="stmt"/>
26
- <line num="77" count="210" type="cond" truecount="1" falsecount="0"/>
27
- <line num="78" count="134" type="stmt"/>
28
- <line num="79" count="134" type="stmt"/>
29
- <line num="82" count="210" type="stmt"/>
30
- <line num="83" count="210" type="stmt"/>
31
- <line num="88" count="210" type="stmt"/>
32
- <line num="98" count="2" type="cond" truecount="2" falsecount="0"/>
33
- <line num="99" count="2" type="stmt"/>
34
- <line num="100" count="2" type="stmt"/>
35
- <line num="111" count="214" type="stmt"/>
36
- <line num="112" count="214" type="stmt"/>
37
- <line num="114" count="214" type="stmt"/>
38
- <line num="115" count="214" type="stmt"/>
39
- <line num="117" count="214" type="stmt"/>
40
- <line num="118" count="2245" type="stmt"/>
41
- <line num="119" count="2245" type="stmt"/>
42
- <line num="122" count="2245" type="cond" truecount="1" falsecount="0"/>
43
- <line num="123" count="1014" type="stmt"/>
44
- <line num="124" count="1014" type="stmt"/>
45
- <line num="128" count="1231" type="stmt"/>
46
- <line num="129" count="1231" type="cond" truecount="1" falsecount="0"/>
47
- <line num="130" count="1160" type="stmt"/>
48
- <line num="131" count="1160" type="stmt"/>
49
- <line num="132" count="1160" type="stmt"/>
50
- <line num="138" count="1160" type="stmt"/>
51
- <line num="139" count="1160" type="stmt"/>
52
- <line num="143" count="71" type="cond" truecount="1" falsecount="0"/>
53
- <line num="144" count="4" type="stmt"/>
54
- <line num="148" count="4" type="stmt"/>
55
- <line num="149" count="4" type="stmt"/>
56
- <line num="153" count="67" type="cond" truecount="1" falsecount="0"/>
57
- <line num="154" count="6" type="stmt"/>
58
- <line num="155" count="6" type="stmt"/>
59
- <line num="156" count="6" type="stmt"/>
60
- <line num="157" count="6" type="stmt"/>
61
- <line num="159" count="6" type="cond" truecount="2" falsecount="0"/>
62
- <line num="160" count="7" type="stmt"/>
63
- <line num="161" count="7" type="stmt"/>
64
- <line num="164" count="6" type="stmt"/>
65
- <line num="170" count="6" type="stmt"/>
66
- <line num="171" count="6" type="stmt"/>
67
- <line num="175" count="61" type="cond" truecount="1" falsecount="0"/>
68
- <line num="176" count="4" type="stmt"/>
69
- <line num="177" count="4" type="stmt"/>
70
- <line num="179" count="4" type="cond" truecount="2" falsecount="0"/>
71
- <line num="180" count="6" type="stmt"/>
72
- <line num="181" count="6" type="stmt"/>
73
- <line num="184" count="4" type="stmt"/>
74
- <line num="185" count="4" type="stmt"/>
75
- <line num="187" count="4" type="stmt"/>
76
- <line num="192" count="4" type="stmt"/>
77
- <line num="196" count="57" type="cond" truecount="3" falsecount="0"/>
78
- <line num="197" count="6" type="cond" truecount="2" falsecount="0"/>
79
- <line num="198" count="6" type="stmt"/>
80
- <line num="199" count="6" type="stmt"/>
81
- <line num="205" count="6" type="stmt"/>
82
- <line num="206" count="6" type="stmt"/>
83
- <line num="210" count="51" type="cond" truecount="1" falsecount="0"/>
84
- <line num="211" count="6" type="stmt"/>
85
- <line num="212" count="6" type="stmt"/>
86
- <line num="214" count="6" type="cond" truecount="2" falsecount="0"/>
87
- <line num="215" count="11" type="stmt"/>
88
- <line num="216" count="11" type="stmt"/>
89
- <line num="220" count="11" type="stmt"/>
90
- <line num="223" count="6" type="stmt"/>
91
- <line num="229" count="6" type="stmt"/>
92
- <line num="233" count="45" type="cond" truecount="1" falsecount="0"/>
93
- <line num="234" count="1" type="stmt"/>
94
- <line num="235" count="1" type="stmt"/>
95
- <line num="237" count="1" type="cond" truecount="2" falsecount="0"/>
96
- <line num="238" count="3" type="stmt"/>
97
- <line num="239" count="3" type="stmt"/>
98
- <line num="243" count="3" type="stmt"/>
99
- <line num="246" count="1" type="stmt"/>
100
- <line num="252" count="1" type="stmt"/>
101
- <line num="256" count="44" type="cond" truecount="4" falsecount="0"/>
102
- <line num="257" count="8" type="stmt"/>
103
- <line num="258" count="8" type="stmt"/>
104
- <line num="259" count="8" type="stmt"/>
105
- <line num="260" count="8" type="stmt"/>
106
- <line num="264" count="36" type="stmt"/>
107
- <line num="265" count="36" type="stmt"/>
108
- <line num="266" count="36" type="stmt"/>
109
- <line num="269" count="36" type="stmt"/>
110
- <line num="274" count="7" type="stmt"/>
111
- <line num="275" count="7" type="stmt"/>
112
- <line num="278" count="36" type="stmt"/>
113
- <line num="279" count="36" type="stmt"/>
114
- <line num="286" count="214" type="stmt"/>
115
- <line num="293" count="1246" type="stmt"/>
116
- <line num="294" count="1246" type="stmt"/>
117
- <line num="296" count="1246" type="stmt"/>
118
- <line num="298" count="1283" type="stmt"/>
119
- <line num="299" count="1283" type="cond" truecount="1" falsecount="0"/>
120
- <line num="300" count="5" type="stmt"/>
121
- <line num="304" count="5" type="stmt"/>
122
- <line num="305" count="5" type="stmt"/>
123
- <line num="309" count="1278" type="stmt"/>
124
- <line num="310" count="1278" type="cond" truecount="1" falsecount="0"/>
125
- <line num="311" count="3" type="stmt"/>
126
- <line num="315" count="3" type="stmt"/>
127
- <line num="316" count="3" type="stmt"/>
128
- <line num="320" count="1275" type="stmt"/>
129
- <line num="321" count="1275" type="cond" truecount="1" falsecount="0"/>
130
- <line num="322" count="1" type="stmt"/>
131
- <line num="326" count="1" type="stmt"/>
132
- <line num="327" count="1" type="stmt"/>
133
- <line num="331" count="1274" type="cond" truecount="1" falsecount="0"/>
134
- <line num="332" count="1261" type="stmt"/>
135
- <line num="333" count="1261" type="cond" truecount="1" falsecount="0"/>
136
- <line num="334" count="1" type="stmt"/>
137
- <line num="338" count="1" type="stmt"/>
138
- <line num="339" count="1" type="stmt"/>
139
- <line num="344" count="1273" type="stmt"/>
140
- <line num="345" count="1273" type="cond" truecount="1" falsecount="0"/>
141
- <line num="346" count="2" type="stmt"/>
142
- <line num="353" count="2" type="stmt"/>
143
- <line num="354" count="2" type="stmt"/>
144
- <line num="358" count="1271" type="stmt"/>
145
- <line num="359" count="1271" type="cond" truecount="1" falsecount="0"/>
146
- <line num="360" count="1" type="stmt"/>
147
- <line num="367" count="1" type="stmt"/>
148
- <line num="368" count="1" type="stmt"/>
149
- <line num="372" count="1270" type="cond" truecount="1" falsecount="0"/>
150
- <line num="373" count="1257" type="stmt"/>
151
- <line num="374" count="1257" type="cond" truecount="1" falsecount="0"/>
152
- <line num="375" count="1" type="stmt"/>
153
- <line num="382" count="1" type="stmt"/>
154
- <line num="383" count="1" type="stmt"/>
155
- <line num="388" count="1269" type="cond" truecount="0" falsecount="1"/>
156
- <line num="389" count="0" type="stmt"/>
157
- <line num="390" count="0" type="stmt"/>
158
- <line num="391" count="0" type="stmt"/>
159
- <line num="395" count="1269" type="stmt"/>
160
- <line num="396" count="1269" type="cond" truecount="1" falsecount="0"/>
161
- <line num="397" count="1259" type="stmt"/>
162
- <line num="401" count="1259" type="stmt"/>
163
- <line num="402" count="1259" type="stmt"/>
164
- <line num="406" count="10" type="stmt"/>
165
- <line num="410" count="10" type="stmt"/>
166
- <line num="413" count="1246" type="stmt"/>
167
- <line num="420" count="8" type="stmt"/>
168
- <line num="421" count="8" type="stmt"/>
169
- <line num="424" count="29" type="stmt"/>
170
- <line num="425" count="8" type="stmt"/>
171
- <line num="427" count="13" type="stmt"/>
172
- <line num="435" count="8" type="stmt"/>
173
- <line num="437" count="29" type="stmt"/>
174
- <line num="439" count="13" type="stmt"/>
175
- <line num="440" count="13" type="cond" truecount="3" falsecount="0"/>
176
- <line num="441" count="12" type="cond" truecount="1" falsecount="0"/>
177
- <line num="442" count="11" type="cond" truecount="1" falsecount="0"/>
178
- <line num="443" count="9" type="stmt"/>
179
- <line num="447" count="8" type="stmt"/>
180
- <line num="448" count="8" type="stmt"/>
181
- <line num="450" count="8" type="cond" truecount="2" falsecount="0"/>
182
- <line num="451" count="37" type="stmt"/>
183
- <line num="452" count="10" type="stmt"/>
184
- <line num="454" count="17" type="stmt"/>
185
- <line num="463" count="10" type="stmt"/>
186
- <line num="466" count="8" type="stmt"/>
187
- <line num="480" count="1231" type="stmt"/>
188
- <line num="490" count="3" type="cond" truecount="1" falsecount="0"/>
189
- <line num="491" count="2" type="stmt"/>
190
- <line num="492" count="2" type="stmt"/>
191
- <line num="500" count="13" type="stmt"/>
192
- <line num="510" count="4" type="cond" truecount="1" falsecount="0"/>
193
- <line num="511" count="3" type="stmt"/>
194
- <line num="512" count="3" type="stmt"/>
195
- <line num="513" count="3" type="stmt"/>
196
- <line num="515" count="1" type="stmt"/>
197
- </file>
198
- </package>
199
- <package name="src.plugins">
200
- <metrics statements="6" coveredstatements="4" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
201
- <file name="commonmark.ts" path="/Users/mattbernier/projects/tools/packages/core/markdown-parser/src/plugins/commonmark.ts">
202
- <metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
203
- <line num="14" count="1" type="stmt"/>
204
- <line num="21" count="2" type="stmt"/>
205
- </file>
206
- <file name="gfm.ts" path="/Users/mattbernier/projects/tools/packages/core/markdown-parser/src/plugins/gfm.ts">
207
- <metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
208
- <line num="14" count="1" type="stmt"/>
209
- <line num="21" count="2" type="stmt"/>
210
- </file>
211
- <file name="index.ts" path="/Users/mattbernier/projects/tools/packages/core/markdown-parser/src/plugins/index.ts">
212
- <metrics statements="2" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
213
- <line num="9" count="0" type="stmt"/>
214
- <line num="10" count="0" type="stmt"/>
215
- </file>
216
- </package>
217
- <package name="src.utils">
218
- <metrics statements="56" coveredstatements="55" conditionals="17" coveredconditionals="15" methods="14" coveredmethods="13"/>
219
- <file name="ast-utils.ts" path="/Users/mattbernier/projects/tools/packages/core/markdown-parser/src/utils/ast-utils.ts">
220
- <metrics statements="27" coveredstatements="27" conditionals="11" coveredconditionals="11" methods="6" coveredmethods="6"/>
221
- <line num="14" count="4" type="stmt"/>
222
- <line num="15" count="7670" type="stmt"/>
223
- <line num="16" count="7670" type="cond" truecount="1" falsecount="0"/>
224
- <line num="17" count="4054" type="stmt"/>
225
- <line num="18" count="7231" type="stmt"/>
226
- <line num="21" count="7670" type="stmt"/>
227
- <line num="27" count="4" type="stmt"/>
228
- <line num="28" count="22" type="stmt"/>
229
- <line num="29" count="22" type="cond" truecount="1" falsecount="0"/>
230
- <line num="30" count="11" type="stmt"/>
231
- <line num="31" count="18" type="stmt"/>
232
- <line num="39" count="4" type="stmt"/>
233
- <line num="40" count="63" type="stmt"/>
234
- <line num="41" count="63" type="cond" truecount="1" falsecount="0"/>
235
- <line num="42" count="34" type="stmt"/>
236
- <line num="44" count="52" type="stmt"/>
237
- <line num="47" count="29" type="stmt"/>
238
- <line num="53" count="4" type="stmt"/>
239
- <line num="54" count="79" type="stmt"/>
240
- <line num="55" count="79" type="cond" truecount="1" falsecount="0"/>
241
- <line num="56" count="21" type="stmt"/>
242
- <line num="58" count="79" type="cond" truecount="1" falsecount="0"/>
243
- <line num="59" count="41" type="stmt"/>
244
- <line num="60" count="69" type="stmt"/>
245
- <line num="63" count="79" type="stmt"/>
246
- <line num="69" count="4" type="stmt"/>
247
- <line num="70" count="36" type="stmt"/>
248
- </file>
249
- <file name="cache.ts" path="/Users/mattbernier/projects/tools/packages/core/markdown-parser/src/utils/cache.ts">
250
- <metrics statements="29" coveredstatements="28" conditionals="6" coveredconditionals="4" methods="8" coveredmethods="7"/>
251
- <line num="10" count="3" type="stmt"/>
252
- <line num="15" count="3" type="stmt"/>
253
- <line num="21" count="20" type="stmt"/>
254
- <line num="22" count="20" type="stmt"/>
255
- <line num="23" count="20" type="stmt"/>
256
- <line num="30" count="278" type="stmt"/>
257
- <line num="37" count="144" type="stmt"/>
258
- <line num="38" count="144" type="cond" truecount="1" falsecount="0"/>
259
- <line num="39" count="133" type="stmt"/>
260
- <line num="43" count="11" type="stmt"/>
261
- <line num="44" count="11" type="cond" truecount="1" falsecount="0"/>
262
- <line num="45" count="1" type="stmt"/>
263
- <line num="46" count="1" type="stmt"/>
264
- <line num="49" count="10" type="stmt"/>
265
- <line num="57" count="134" type="cond" truecount="1" falsecount="0"/>
266
- <line num="58" count="2" type="stmt"/>
267
- <line num="59" count="2" type="stmt"/>
268
- <line num="62" count="134" type="stmt"/>
269
- <line num="72" count="0" type="stmt"/>
270
- <line num="79" count="2" type="stmt"/>
271
- <line num="86" count="12" type="stmt"/>
272
- <line num="93" count="3" type="stmt"/>
273
- <line num="94" count="3" type="stmt"/>
274
- <line num="96" count="3" type="stmt"/>
275
- <line num="97" count="7" type="stmt"/>
276
- <line num="98" count="7" type="cond" truecount="1" falsecount="0"/>
277
- <line num="99" count="6" type="stmt"/>
278
- <line num="100" count="6" type="stmt"/>
279
- <line num="104" count="3" type="stmt"/>
280
- </file>
281
- </package>
282
- </project>
283
- </coverage>