@squiz/dx-common-lib 1.63.1-alpha.7 → 1.63.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. package/CHANGELOG.md +10 -84
  2. package/coverage/clover.xml +608 -0
  3. package/coverage/coverage-final.json +48 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +87 -0
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +251 -0
  8. package/coverage/lcov-report/prettify.css +1 -0
  9. package/coverage/lcov-report/prettify.js +2 -0
  10. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  11. package/coverage/lcov-report/sorter.js +196 -0
  12. package/coverage/lcov-report/src/api-key-validation/CloudflareApiKeyService.ts.html +382 -0
  13. package/coverage/lcov-report/src/api-key-validation/DevelopmentApiKeyService.ts.html +115 -0
  14. package/coverage/lcov-report/src/api-key-validation/getApiKeyService.ts.html +166 -0
  15. package/coverage/lcov-report/src/api-key-validation/index.html +146 -0
  16. package/coverage/lcov-report/src/assertions/assertAssign.ts.html +151 -0
  17. package/coverage/lcov-report/src/assertions/assertAssignWithDefaultUndefinedValue.ts.html +136 -0
  18. package/coverage/lcov-report/src/assertions/assertIsBoolean.ts.html +100 -0
  19. package/coverage/lcov-report/src/assertions/assertIsDefined.ts.html +106 -0
  20. package/coverage/lcov-report/src/assertions/assertIsEnumValue.ts.html +130 -0
  21. package/coverage/lcov-report/src/assertions/assertIsMapOfStringString.ts.html +172 -0
  22. package/coverage/lcov-report/src/assertions/assertIsNotAnEmptyString.ts.html +136 -0
  23. package/coverage/lcov-report/src/assertions/assertIsObject.ts.html +118 -0
  24. package/coverage/lcov-report/src/assertions/assertIsString.ts.html +118 -0
  25. package/coverage/lcov-report/src/assertions/index.html +251 -0
  26. package/coverage/lcov-report/src/assertions/index.ts.html +121 -0
  27. package/coverage/lcov-report/src/cache/applyDefaultRulesToCacheControlObject.ts.html +154 -0
  28. package/coverage/lcov-report/src/cache/cacheControlToString.ts.html +151 -0
  29. package/coverage/lcov-report/src/cache/index.html +176 -0
  30. package/coverage/lcov-report/src/cache/index.ts.html +97 -0
  31. package/coverage/lcov-report/src/cache/parseAndSanitiseCacheControlHeader.ts.html +169 -0
  32. package/coverage/lcov-report/src/cache/parseCacheControl.ts.html +307 -0
  33. package/coverage/lcov-report/src/custom-types.d.ts.html +112 -0
  34. package/coverage/lcov-report/src/error/BadRequestError.ts.html +106 -0
  35. package/coverage/lcov-report/src/error/ErrorWithHttpStatusCode.ts.html +100 -0
  36. package/coverage/lcov-report/src/error/InternalServerError.ts.html +106 -0
  37. package/coverage/lcov-report/src/error/InvalidTokenError.ts.html +109 -0
  38. package/coverage/lcov-report/src/error/MethodNotImplementedError.ts.html +106 -0
  39. package/coverage/lcov-report/src/error/ResourceNotFoundError.ts.html +106 -0
  40. package/coverage/lcov-report/src/error/TimeoutError.ts.html +109 -0
  41. package/coverage/lcov-report/src/error/UnAuthenticatedRequestError.ts.html +106 -0
  42. package/coverage/lcov-report/src/error/UnprivilegedError.ts.html +109 -0
  43. package/coverage/lcov-report/src/error/index.html +251 -0
  44. package/coverage/lcov-report/src/error/index.ts.html +115 -0
  45. package/coverage/lcov-report/src/formatted-text/formattedTextToHtmlString.ts.html +373 -0
  46. package/coverage/lcov-report/src/formatted-text/index.html +116 -0
  47. package/coverage/lcov-report/src/index.html +131 -0
  48. package/coverage/lcov-report/src/index.ts.html +127 -0
  49. package/coverage/lcov-report/src/json-order/index.html +161 -0
  50. package/coverage/lcov-report/src/json-order/index.ts.html +103 -0
  51. package/coverage/lcov-report/src/json-order/order.ts.html +442 -0
  52. package/coverage/lcov-report/src/json-order/parse.ts.html +280 -0
  53. package/coverage/lcov-report/src/json-order/stringify.ts.html +151 -0
  54. package/coverage/lcov-report/src/server-utils/apiKeyMiddleware.ts.html +154 -0
  55. package/coverage/lcov-report/src/server-utils/errorMiddleware.ts.html +184 -0
  56. package/coverage/lcov-report/src/server-utils/index.html +146 -0
  57. package/coverage/lcov-report/src/server-utils/requestLogger.ts.html +133 -0
  58. package/coverage/lcov-report/src/util/getNodeEnv.ts.html +118 -0
  59. package/coverage/lcov-report/src/util/getPageInfo.ts.html +169 -0
  60. package/coverage/lcov-report/src/util/index.html +221 -0
  61. package/coverage/lcov-report/src/util/index.ts.html +106 -0
  62. package/coverage/lcov-report/src/util/isPathTryingToAccessOutsideOfRoot.ts.html +109 -0
  63. package/coverage/lcov-report/src/util/isReadable.ts.html +121 -0
  64. package/coverage/lcov-report/src/util/joinAbsoluteUrlPath.ts.html +154 -0
  65. package/coverage/lcov-report/src/util/never.ts.html +97 -0
  66. package/coverage/lcov-report/src/util/parseEnvVarForVar.ts.html +121 -0
  67. package/coverage/lcov-report/src/zip/index.html +116 -0
  68. package/coverage/lcov-report/src/zip/zipDirectory.ts.html +178 -0
  69. package/coverage/lcov.info +1190 -0
  70. package/package.json +7 -4
  71. package/squiz-dx-common-lib-1.39.1-alpha.7.tgz +0 -0
  72. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,608 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <coverage generated="1679374770074" clover="3.2.0">
3
+ <project timestamp="1679374770074" name="All files">
4
+ <metrics statements="431" coveredstatements="362" conditionals="164" coveredconditionals="129" methods="86" coveredmethods="66" elements="681" coveredelements="557" complexity="0" loc="431" ncloc="431" packages="10" files="47" classes="47"/>
5
+ <package name="src">
6
+ <metrics statements="14" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
7
+ <file name="custom-types.d.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/custom-types.d.ts">
8
+ <metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
9
+ </file>
10
+ <file name="index.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/index.ts">
11
+ <metrics statements="14" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
12
+ <line num="1" count="0" type="stmt"/>
13
+ <line num="2" count="0" type="stmt"/>
14
+ <line num="3" count="0" type="stmt"/>
15
+ <line num="4" count="0" type="stmt"/>
16
+ <line num="5" count="0" type="stmt"/>
17
+ <line num="6" count="0" type="stmt"/>
18
+ <line num="7" count="0" type="stmt"/>
19
+ <line num="8" count="0" type="stmt"/>
20
+ <line num="9" count="0" type="stmt"/>
21
+ <line num="10" count="0" type="stmt"/>
22
+ <line num="11" count="0" type="stmt"/>
23
+ <line num="12" count="0" type="stmt"/>
24
+ <line num="13" count="0" type="stmt"/>
25
+ <line num="14" count="0" type="stmt"/>
26
+ </file>
27
+ </package>
28
+ <package name="src.api-key-validation">
29
+ <metrics statements="49" coveredstatements="44" conditionals="10" coveredconditionals="8" methods="9" coveredmethods="9"/>
30
+ <file name="CloudflareApiKeyService.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/api-key-validation/CloudflareApiKeyService.ts">
31
+ <metrics statements="35" coveredstatements="31" conditionals="6" coveredconditionals="5" methods="6" coveredmethods="6"/>
32
+ <line num="1" count="2" type="stmt"/>
33
+ <line num="6" count="2" type="stmt"/>
34
+ <line num="8" count="2" type="stmt"/>
35
+ <line num="15" count="2" type="stmt"/>
36
+ <line num="23" count="2" type="stmt"/>
37
+ <line num="25" count="2" type="stmt"/>
38
+ <line num="29" count="2" type="stmt"/>
39
+ <line num="30" count="2" type="stmt"/>
40
+ <line num="34" count="2" type="cond" truecount="1" falsecount="0"/>
41
+ <line num="35" count="2" type="stmt"/>
42
+ <line num="38" count="2" type="stmt"/>
43
+ <line num="42" count="6" type="cond" truecount="1" falsecount="0"/>
44
+ <line num="43" count="1" type="stmt"/>
45
+ <line num="46" count="5" type="stmt"/>
46
+ <line num="50" count="5" type="cond" truecount="1" falsecount="0"/>
47
+ <line num="51" count="1" type="stmt"/>
48
+ <line num="54" count="4" type="stmt"/>
49
+ <line num="60" count="7" type="stmt"/>
50
+ <line num="61" count="7" type="stmt"/>
51
+ <line num="67" count="0" type="stmt"/>
52
+ <line num="68" count="0" type="stmt"/>
53
+ <line num="71" count="7" type="stmt"/>
54
+ <line num="72" count="7" type="cond" truecount="0" falsecount="1"/>
55
+ <line num="73" count="0" type="stmt"/>
56
+ <line num="75" count="7" type="stmt"/>
57
+ <line num="77" count="6" type="cond" truecount="1" falsecount="0"/>
58
+ <line num="78" count="6" type="stmt"/>
59
+ <line num="81" count="0" type="stmt"/>
60
+ <line num="83" count="1" type="stmt"/>
61
+ <line num="88" count="7" type="stmt"/>
62
+ <line num="89" count="7" type="stmt"/>
63
+ <line num="91" count="6" type="stmt"/>
64
+ <line num="93" count="6" type="cond" truecount="1" falsecount="0"/>
65
+ <line num="94" count="1" type="stmt"/>
66
+ <line num="95" count="1" type="stmt"/>
67
+ </file>
68
+ <file name="DevelopmentApiKeyService.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/api-key-validation/DevelopmentApiKeyService.ts">
69
+ <metrics statements="3" coveredstatements="3" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
70
+ <line num="3" count="2" type="stmt"/>
71
+ <line num="5" count="1" type="stmt"/>
72
+ <line num="8" count="1" type="stmt"/>
73
+ </file>
74
+ <file name="getApiKeyService.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/api-key-validation/getApiKeyService.ts">
75
+ <metrics statements="11" coveredstatements="10" conditionals="4" coveredconditionals="3" methods="1" coveredmethods="1"/>
76
+ <line num="1" count="1" type="stmt"/>
77
+ <line num="2" count="1" type="stmt"/>
78
+ <line num="3" count="1" type="stmt"/>
79
+ <line num="5" count="1" type="stmt"/>
80
+ <line num="9" count="4" type="stmt"/>
81
+ <line num="11" count="3" type="cond" truecount="2" falsecount="1"/>
82
+ <line num="14" count="1" type="stmt"/>
83
+ <line num="16" count="2" type="cond" truecount="1" falsecount="0"/>
84
+ <line num="17" count="1" type="stmt"/>
85
+ <line num="20" count="1" type="stmt"/>
86
+ <line num="25" count="0" type="stmt"/>
87
+ </file>
88
+ </package>
89
+ <package name="src.assertions">
90
+ <metrics statements="57" coveredstatements="48" conditionals="16" coveredconditionals="16" methods="10" coveredmethods="10"/>
91
+ <file name="assertAssign.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertAssign.ts">
92
+ <metrics statements="8" coveredstatements="8" conditionals="2" coveredconditionals="2" methods="1" coveredmethods="1"/>
93
+ <line num="1" count="2" type="stmt"/>
94
+ <line num="6" count="2" type="stmt"/>
95
+ <line num="11" count="6" type="stmt"/>
96
+ <line num="12" count="6" type="stmt"/>
97
+ <line num="14" count="4" type="cond" truecount="2" falsecount="0"/>
98
+ <line num="15" count="2" type="stmt"/>
99
+ <line num="17" count="2" type="stmt"/>
100
+ <line num="21" count="2" type="stmt"/>
101
+ </file>
102
+ <file name="assertAssignWithDefaultUndefinedValue.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertAssignWithDefaultUndefinedValue.ts">
103
+ <metrics statements="5" coveredstatements="5" conditionals="3" coveredconditionals="3" methods="1" coveredmethods="1"/>
104
+ <line num="1" count="1" type="stmt"/>
105
+ <line num="6" count="1" type="stmt"/>
106
+ <line num="12" count="5" type="cond" truecount="3" falsecount="0"/>
107
+ <line num="13" count="2" type="stmt"/>
108
+ <line num="16" count="3" type="stmt"/>
109
+ </file>
110
+ <file name="assertIsBoolean.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertIsBoolean.ts">
111
+ <metrics statements="3" coveredstatements="3" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
112
+ <line num="1" count="1" type="stmt"/>
113
+ <line num="3" count="1" type="stmt"/>
114
+ <line num="4" count="4" type="stmt"/>
115
+ </file>
116
+ <file name="assertIsDefined.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertIsDefined.ts">
117
+ <metrics statements="4" coveredstatements="4" conditionals="3" coveredconditionals="3" methods="1" coveredmethods="1"/>
118
+ <line num="1" count="1" type="stmt"/>
119
+ <line num="3" count="1" type="stmt"/>
120
+ <line num="4" count="3" type="cond" truecount="3" falsecount="0"/>
121
+ <line num="5" count="2" type="stmt"/>
122
+ </file>
123
+ <file name="assertIsEnumValue.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertIsEnumValue.ts">
124
+ <metrics statements="5" coveredstatements="5" conditionals="1" coveredconditionals="1" methods="2" coveredmethods="2"/>
125
+ <line num="1" count="1" type="stmt"/>
126
+ <line num="3" count="1" type="stmt"/>
127
+ <line num="4" count="6" type="cond" truecount="1" falsecount="0"/>
128
+ <line num="5" count="2" type="stmt"/>
129
+ <line num="14" count="6" type="stmt"/>
130
+ </file>
131
+ <file name="assertIsMapOfStringString.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertIsMapOfStringString.ts">
132
+ <metrics statements="9" coveredstatements="9" conditionals="3" coveredconditionals="3" methods="1" coveredmethods="1"/>
133
+ <line num="1" count="1" type="stmt"/>
134
+ <line num="3" count="1" type="stmt"/>
135
+ <line num="4" count="5" type="cond" truecount="1" falsecount="0"/>
136
+ <line num="5" count="1" type="stmt"/>
137
+ <line num="12" count="4" type="cond" truecount="1" falsecount="0"/>
138
+ <line num="13" count="1" type="stmt"/>
139
+ <line num="20" count="3" type="stmt"/>
140
+ <line num="21" count="2" type="cond" truecount="1" falsecount="0"/>
141
+ <line num="22" count="1" type="stmt"/>
142
+ </file>
143
+ <file name="assertIsNotAnEmptyString.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertIsNotAnEmptyString.ts">
144
+ <metrics statements="6" coveredstatements="6" conditionals="2" coveredconditionals="2" methods="1" coveredmethods="1"/>
145
+ <line num="1" count="1" type="stmt"/>
146
+ <line num="3" count="1" type="stmt"/>
147
+ <line num="4" count="10" type="cond" truecount="1" falsecount="0"/>
148
+ <line num="5" count="5" type="stmt"/>
149
+ <line num="12" count="5" type="cond" truecount="1" falsecount="0"/>
150
+ <line num="13" count="3" type="stmt"/>
151
+ </file>
152
+ <file name="assertIsObject.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertIsObject.ts">
153
+ <metrics statements="4" coveredstatements="4" conditionals="1" coveredconditionals="1" methods="1" coveredmethods="1"/>
154
+ <line num="1" count="2" type="stmt"/>
155
+ <line num="3" count="2" type="stmt"/>
156
+ <line num="4" count="8" type="cond" truecount="1" falsecount="0"/>
157
+ <line num="5" count="7" type="stmt"/>
158
+ </file>
159
+ <file name="assertIsString.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/assertIsString.ts">
160
+ <metrics statements="4" coveredstatements="4" conditionals="1" coveredconditionals="1" methods="1" coveredmethods="1"/>
161
+ <line num="1" count="3" type="stmt"/>
162
+ <line num="3" count="3" type="stmt"/>
163
+ <line num="4" count="13" type="cond" truecount="1" falsecount="0"/>
164
+ <line num="5" count="10" type="stmt"/>
165
+ </file>
166
+ <file name="index.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/assertions/index.ts">
167
+ <metrics statements="9" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
168
+ <line num="2" count="0" type="stmt"/>
169
+ <line num="3" count="0" type="stmt"/>
170
+ <line num="4" count="0" type="stmt"/>
171
+ <line num="5" count="0" type="stmt"/>
172
+ <line num="6" count="0" type="stmt"/>
173
+ <line num="7" count="0" type="stmt"/>
174
+ <line num="8" count="0" type="stmt"/>
175
+ <line num="11" count="0" type="stmt"/>
176
+ <line num="12" count="0" type="stmt"/>
177
+ </file>
178
+ </package>
179
+ <package name="src.cache">
180
+ <metrics statements="67" coveredstatements="62" conditionals="30" coveredconditionals="26" methods="8" coveredmethods="8"/>
181
+ <file name="applyDefaultRulesToCacheControlObject.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/cache/applyDefaultRulesToCacheControlObject.ts">
182
+ <metrics statements="12" coveredstatements="12" conditionals="3" coveredconditionals="3" methods="1" coveredmethods="1"/>
183
+ <line num="2" count="2" type="stmt"/>
184
+ <line num="4" count="2" type="stmt"/>
185
+ <line num="5" count="15" type="stmt"/>
186
+ <line num="7" count="15" type="cond" truecount="1" falsecount="0"/>
187
+ <line num="8" count="10" type="stmt"/>
188
+ <line num="11" count="15" type="cond" truecount="1" falsecount="0"/>
189
+ <line num="12" count="5" type="stmt"/>
190
+ <line num="15" count="15" type="cond" truecount="1" falsecount="0"/>
191
+ <line num="16" count="4" type="stmt"/>
192
+ <line num="19" count="15" type="stmt"/>
193
+ <line num="20" count="15" type="stmt"/>
194
+ <line num="22" count="15" type="stmt"/>
195
+ </file>
196
+ <file name="cacheControlToString.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/cache/cacheControlToString.ts">
197
+ <metrics statements="12" coveredstatements="12" conditionals="7" coveredconditionals="7" methods="1" coveredmethods="1"/>
198
+ <line num="3" count="3" type="stmt"/>
199
+ <line num="4" count="12" type="stmt"/>
200
+ <line num="5" count="12" type="stmt"/>
201
+ <line num="6" count="21" type="stmt"/>
202
+ <line num="8" count="21" type="cond" truecount="4" falsecount="0"/>
203
+ <line num="9" count="4" type="stmt"/>
204
+ <line num="11" count="17" type="cond" truecount="2" falsecount="0"/>
205
+ <line num="12" count="14" type="stmt"/>
206
+ <line num="13" count="3" type="cond" truecount="1" falsecount="0"/>
207
+ <line num="14" count="3" type="stmt"/>
208
+ <line num="17" count="17" type="stmt"/>
209
+ <line num="21" count="12" type="stmt"/>
210
+ </file>
211
+ <file name="index.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/cache/index.ts">
212
+ <metrics statements="4" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
213
+ <line num="1" count="0" type="stmt"/>
214
+ <line num="2" count="0" type="stmt"/>
215
+ <line num="3" count="0" type="stmt"/>
216
+ <line num="4" count="0" type="stmt"/>
217
+ </file>
218
+ <file name="parseAndSanitiseCacheControlHeader.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/cache/parseAndSanitiseCacheControlHeader.ts">
219
+ <metrics statements="15" coveredstatements="15" conditionals="1" coveredconditionals="1" methods="3" coveredmethods="3"/>
220
+ <line num="1" count="2" type="stmt"/>
221
+ <line num="2" count="2" type="stmt"/>
222
+ <line num="3" count="2" type="stmt"/>
223
+ <line num="5" count="2" type="stmt"/>
224
+ <line num="6" count="2" type="stmt"/>
225
+ <line num="8" count="2" type="stmt"/>
226
+ <line num="10" count="2" type="stmt"/>
227
+ <line num="11" count="5" type="cond" truecount="1" falsecount="0"/>
228
+ <line num="12" count="1" type="stmt"/>
229
+ <line num="15" count="4" type="stmt"/>
230
+ <line num="17" count="4" type="stmt"/>
231
+ <line num="19" count="4" type="stmt"/>
232
+ <line num="22" count="2" type="stmt"/>
233
+ <line num="23" count="19" type="stmt"/>
234
+ <line num="27" count="4" type="stmt"/>
235
+ </file>
236
+ <file name="parseCacheControl.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/cache/parseCacheControl.ts">
237
+ <metrics statements="24" coveredstatements="23" conditionals="19" coveredconditionals="15" methods="3" coveredmethods="3"/>
238
+ <line num="23" count="3" type="stmt"/>
239
+ <line num="24" count="15" type="stmt"/>
240
+ <line num="25" count="15" type="stmt"/>
241
+ <line num="27" count="15" type="stmt"/>
242
+ <line num="28" count="35" type="stmt"/>
243
+ <line num="29" count="35" type="stmt"/>
244
+ <line num="31" count="35" type="cond" truecount="2" falsecount="0"/>
245
+ <line num="32" count="35" type="stmt"/>
246
+ <line num="33" count="35" type="stmt"/>
247
+ <line num="35" count="35" type="stmt"/>
248
+ <line num="38" count="15" type="stmt"/>
249
+ <line num="42" count="35" type="cond" truecount="1" falsecount="0"/>
250
+ <line num="43" count="19" type="stmt"/>
251
+ <line num="46" count="16" type="cond" truecount="3" falsecount="0"/>
252
+ <line num="47" count="3" type="stmt"/>
253
+ <line num="50" count="13" type="stmt"/>
254
+ <line num="54" count="35" type="cond" truecount="1" falsecount="0"/>
255
+ <line num="61" count="13" type="cond" truecount="1" falsecount="1"/>
256
+ <line num="62" count="13" type="stmt"/>
257
+ <line num="63" count="13" type="cond" truecount="1" falsecount="3"/>
258
+ <line num="65" count="0" type="stmt"/>
259
+ <line num="69" count="22" type="cond" truecount="1" falsecount="0"/>
260
+ <line num="70" count="19" type="stmt"/>
261
+ <line num="73" count="3" type="stmt"/>
262
+ </file>
263
+ </package>
264
+ <package name="src.error">
265
+ <metrics statements="39" coveredstatements="29" conditionals="5" coveredconditionals="0" methods="9" coveredmethods="2"/>
266
+ <file name="BadRequestError.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/BadRequestError.ts">
267
+ <metrics statements="3" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="0"/>
268
+ <line num="1" count="1" type="stmt"/>
269
+ <line num="3" count="1" type="stmt"/>
270
+ <line num="5" count="0" type="stmt"/>
271
+ </file>
272
+ <file name="ErrorWithHttpStatusCode.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/ErrorWithHttpStatusCode.ts">
273
+ <metrics statements="3" coveredstatements="3" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
274
+ <line num="1" count="4" type="stmt"/>
275
+ <line num="2" count="7" type="stmt"/>
276
+ <line num="3" count="7" type="stmt"/>
277
+ </file>
278
+ <file name="InternalServerError.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/InternalServerError.ts">
279
+ <metrics statements="3" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="0"/>
280
+ <line num="1" count="1" type="stmt"/>
281
+ <line num="3" count="1" type="stmt"/>
282
+ <line num="5" count="0" type="stmt"/>
283
+ </file>
284
+ <file name="InvalidTokenError.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/InvalidTokenError.ts">
285
+ <metrics statements="4" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="0"/>
286
+ <line num="1" count="1" type="stmt"/>
287
+ <line num="3" count="1" type="stmt"/>
288
+ <line num="4" count="0" type="stmt"/>
289
+ <line num="6" count="0" type="stmt"/>
290
+ </file>
291
+ <file name="MethodNotImplementedError.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/MethodNotImplementedError.ts">
292
+ <metrics statements="3" coveredstatements="2" conditionals="4" coveredconditionals="0" methods="1" coveredmethods="0"/>
293
+ <line num="1" count="1" type="stmt"/>
294
+ <line num="3" count="1" type="stmt"/>
295
+ <line num="5" count="0" type="cond" truecount="0" falsecount="4"/>
296
+ </file>
297
+ <file name="ResourceNotFoundError.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/ResourceNotFoundError.ts">
298
+ <metrics statements="3" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="0"/>
299
+ <line num="1" count="1" type="stmt"/>
300
+ <line num="3" count="1" type="stmt"/>
301
+ <line num="5" count="0" type="stmt"/>
302
+ </file>
303
+ <file name="TimeoutError.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/TimeoutError.ts">
304
+ <metrics statements="4" coveredstatements="2" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
305
+ <line num="1" count="1" type="stmt"/>
306
+ <line num="3" count="1" type="stmt"/>
307
+ <line num="4" count="0" type="stmt"/>
308
+ <line num="6" count="0" type="stmt"/>
309
+ </file>
310
+ <file name="UnAuthenticatedRequestError.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/UnAuthenticatedRequestError.ts">
311
+ <metrics statements="3" coveredstatements="3" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
312
+ <line num="1" count="4" type="stmt"/>
313
+ <line num="3" count="4" type="stmt"/>
314
+ <line num="5" count="6" type="stmt"/>
315
+ </file>
316
+ <file name="UnprivilegedError.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/UnprivilegedError.ts">
317
+ <metrics statements="4" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="0"/>
318
+ <line num="1" count="1" type="stmt"/>
319
+ <line num="3" count="1" type="stmt"/>
320
+ <line num="4" count="0" type="stmt"/>
321
+ <line num="6" count="0" type="stmt"/>
322
+ </file>
323
+ <file name="index.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/error/index.ts">
324
+ <metrics statements="9" coveredstatements="9" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
325
+ <line num="1" count="1" type="stmt"/>
326
+ <line num="2" count="1" type="stmt"/>
327
+ <line num="3" count="1" type="stmt"/>
328
+ <line num="4" count="1" type="stmt"/>
329
+ <line num="5" count="1" type="stmt"/>
330
+ <line num="6" count="1" type="stmt"/>
331
+ <line num="8" count="1" type="stmt"/>
332
+ <line num="9" count="1" type="stmt"/>
333
+ <line num="10" count="1" type="stmt"/>
334
+ </file>
335
+ </package>
336
+ <package name="src.formatted-text">
337
+ <metrics statements="44" coveredstatements="42" conditionals="33" coveredconditionals="29" methods="8" coveredmethods="8"/>
338
+ <file name="formattedTextToHtmlString.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/formatted-text/formattedTextToHtmlString.ts">
339
+ <metrics statements="44" coveredstatements="42" conditionals="33" coveredconditionals="29" methods="8" coveredmethods="8"/>
340
+ <line num="1" count="1" type="stmt"/>
341
+ <line num="12" count="1" type="stmt"/>
342
+ <line num="13" count="14" type="stmt"/>
343
+ <line num="14" count="13" type="stmt"/>
344
+ <line num="16" count="1" type="stmt"/>
345
+ <line num="20" count="1" type="stmt"/>
346
+ <line num="21" count="15" type="stmt"/>
347
+ <line num="22" count="15" type="stmt"/>
348
+ <line num="26" count="14" type="stmt"/>
349
+ <line num="28" count="14" type="cond" truecount="2" falsecount="0"/>
350
+ <line num="29" count="9" type="stmt"/>
351
+ <line num="31" count="5" type="stmt"/>
352
+ <line num="34" count="14" type="stmt"/>
353
+ <line num="36" count="14" type="stmt"/>
354
+ <line num="40" count="14" type="stmt"/>
355
+ <line num="42" count="14" type="cond" truecount="11" falsecount="1"/>
356
+ <line num="44" count="14" type="cond" truecount="8" falsecount="1"/>
357
+ <line num="45" count="6" type="stmt"/>
358
+ <line num="48" count="14" type="cond" truecount="1" falsecount="0"/>
359
+ <line num="49" count="8" type="stmt"/>
360
+ <line num="52" count="14" type="stmt"/>
361
+ <line num="56" count="14" type="cond" truecount="0" falsecount="1"/>
362
+ <line num="57" count="0" type="stmt"/>
363
+ <line num="60" count="14" type="stmt"/>
364
+ <line num="61" count="14" type="stmt"/>
365
+ <line num="62" count="17" type="cond" truecount="1" falsecount="0"/>
366
+ <line num="63" count="14" type="stmt"/>
367
+ <line num="67" count="14" type="stmt"/>
368
+ <line num="71" count="14" type="cond" truecount="1" falsecount="0"/>
369
+ <line num="72" count="11" type="stmt"/>
370
+ <line num="75" count="3" type="stmt"/>
371
+ <line num="76" count="3" type="cond" truecount="1" falsecount="0"/>
372
+ <line num="77" count="3" type="stmt"/>
373
+ <line num="79" count="3" type="cond" truecount="1" falsecount="0"/>
374
+ <line num="80" count="1" type="stmt"/>
375
+ <line num="82" count="3" type="cond" truecount="0" falsecount="1"/>
376
+ <line num="83" count="0" type="stmt"/>
377
+ <line num="85" count="3" type="cond" truecount="1" falsecount="0"/>
378
+ <line num="86" count="2" type="stmt"/>
379
+ <line num="88" count="3" type="cond" truecount="1" falsecount="0"/>
380
+ <line num="89" count="1" type="stmt"/>
381
+ <line num="91" count="3" type="cond" truecount="1" falsecount="0"/>
382
+ <line num="92" count="1" type="stmt"/>
383
+ <line num="95" count="3" type="stmt"/>
384
+ </file>
385
+ </package>
386
+ <package name="src.json-order">
387
+ <metrics statements="69" coveredstatements="65" conditionals="26" coveredconditionals="21" methods="15" coveredmethods="15"/>
388
+ <file name="index.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/json-order/index.ts">
389
+ <metrics statements="4" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
390
+ <line num="1" count="0" type="stmt"/>
391
+ <line num="2" count="0" type="stmt"/>
392
+ <line num="3" count="0" type="stmt"/>
393
+ <line num="6" count="0" type="stmt"/>
394
+ </file>
395
+ <file name="order.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/json-order/order.ts">
396
+ <metrics statements="41" coveredstatements="41" conditionals="18" coveredconditionals="16" methods="11" coveredmethods="11"/>
397
+ <line num="1" count="2" type="stmt"/>
398
+ <line num="9" count="2" type="stmt"/>
399
+ <line num="14" count="146" type="stmt"/>
400
+ <line num="16" count="146" type="stmt"/>
401
+ <line num="18" count="444" type="stmt"/>
402
+ <line num="20" count="298" type="cond" truecount="2" falsecount="0"/>
403
+ <line num="22" count="298" type="cond" truecount="1" falsecount="0"/>
404
+ <line num="23" count="2" type="stmt"/>
405
+ <line num="26" count="296" type="stmt"/>
406
+ <line num="29" count="146" type="stmt"/>
407
+ <line num="32" count="2" type="stmt"/>
408
+ <line num="38" count="144" type="stmt"/>
409
+ <line num="40" count="440" type="stmt"/>
410
+ <line num="42" count="296" type="cond" truecount="1" falsecount="0"/>
411
+ <line num="43" count="122" type="cond" truecount="2" falsecount="0"/>
412
+ <line num="44" count="32" type="cond" truecount="2" falsecount="0"/>
413
+ <line num="46" count="122" type="stmt"/>
414
+ <line num="49" count="296" type="stmt"/>
415
+ <line num="53" count="2" type="stmt"/>
416
+ <line num="59" count="94" type="stmt"/>
417
+ <line num="60" count="94" type="cond" truecount="1" falsecount="0"/>
418
+ <line num="61" count="92" type="stmt"/>
419
+ <line num="73" count="2" type="stmt"/>
420
+ <line num="78" count="28" type="cond" truecount="1" falsecount="0"/>
421
+ <line num="79" count="2" type="stmt"/>
422
+ <line num="82" count="26" type="cond" truecount="1" falsecount="0"/>
423
+ <line num="83" count="2" type="stmt"/>
424
+ <line num="86" count="24" type="stmt"/>
425
+ <line num="87" count="24" type="cond" truecount="3" falsecount="0"/>
426
+ <line num="89" count="24" type="stmt"/>
427
+ <line num="90" count="24" type="stmt"/>
428
+ <line num="91" count="52" type="stmt"/>
429
+ <line num="94" count="52" type="stmt"/>
430
+ <line num="96" count="52" type="stmt"/>
431
+ <line num="98" count="52" type="cond" truecount="1" falsecount="0"/>
432
+ <line num="100" count="52" type="cond" truecount="1" falsecount="1"/>
433
+ <line num="102" count="52" type="stmt"/>
434
+ <line num="105" count="52" type="stmt"/>
435
+ <line num="106" count="94" type="stmt"/>
436
+ <line num="116" count="24" type="stmt"/>
437
+ <line num="119" count="2" type="stmt"/>
438
+ </file>
439
+ <file name="parse.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/json-order/parse.ts">
440
+ <metrics statements="20" coveredstatements="20" conditionals="7" coveredconditionals="5" methods="3" coveredmethods="3"/>
441
+ <line num="3" count="1" type="stmt"/>
442
+ <line num="9" count="37" type="stmt"/>
443
+ <line num="11" count="37" type="cond" truecount="1" falsecount="0"/>
444
+ <line num="12" count="2" type="stmt"/>
445
+ <line num="16" count="35" type="cond" truecount="1" falsecount="0"/>
446
+ <line num="17" count="26" type="stmt"/>
447
+ <line num="20" count="35" type="stmt"/>
448
+ <line num="21" count="62" type="stmt"/>
449
+ <line num="23" count="62" type="cond" truecount="1" falsecount="0"/>
450
+ <line num="24" count="25" type="stmt"/>
451
+ <line num="42" count="1" type="stmt"/>
452
+ <line num="47" count="14" type="cond" truecount="1" falsecount="0"/>
453
+ <line num="48" count="1" type="stmt"/>
454
+ <line num="51" count="13" type="cond" truecount="1" falsecount="0"/>
455
+ <line num="52" count="1" type="stmt"/>
456
+ <line num="55" count="12" type="stmt"/>
457
+ <line num="57" count="12" type="stmt"/>
458
+ <line num="58" count="12" type="stmt"/>
459
+ <line num="59" count="12" type="stmt"/>
460
+ <line num="65" count="1" type="stmt"/>
461
+ </file>
462
+ <file name="stringify.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/json-order/stringify.ts">
463
+ <metrics statements="4" coveredstatements="4" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="1"/>
464
+ <line num="2" count="1" type="stmt"/>
465
+ <line num="13" count="1" type="stmt"/>
466
+ <line num="19" count="14" type="stmt"/>
467
+ <line num="22" count="1" type="stmt"/>
468
+ </file>
469
+ </package>
470
+ <package name="src.server-utils">
471
+ <metrics statements="28" coveredstatements="19" conditionals="30" coveredconditionals="19" methods="5" coveredmethods="3"/>
472
+ <file name="apiKeyMiddleware.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/server-utils/apiKeyMiddleware.ts">
473
+ <metrics statements="11" coveredstatements="9" conditionals="4" coveredconditionals="3" methods="2" coveredmethods="2"/>
474
+ <line num="3" count="1" type="stmt"/>
475
+ <line num="5" count="1" type="stmt"/>
476
+ <line num="8" count="1" type="stmt"/>
477
+ <line num="9" count="3" type="stmt"/>
478
+ <line num="11" count="3" type="cond" truecount="0" falsecount="1"/>
479
+ <line num="12" count="0" type="stmt"/>
480
+ <line num="13" count="0" type="stmt"/>
481
+ <line num="16" count="3" type="cond" truecount="3" falsecount="0"/>
482
+ <line num="17" count="2" type="stmt"/>
483
+ <line num="18" count="2" type="stmt"/>
484
+ <line num="21" count="1" type="stmt"/>
485
+ </file>
486
+ <file name="errorMiddleware.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/server-utils/errorMiddleware.ts">
487
+ <metrics statements="13" coveredstatements="10" conditionals="26" coveredconditionals="16" methods="1" coveredmethods="1"/>
488
+ <line num="4" count="1" type="stmt"/>
489
+ <line num="5" count="2" type="cond" truecount="2" falsecount="0"/>
490
+ <line num="6" count="2" type="cond" truecount="4" falsecount="2"/>
491
+ <line num="8" count="2" type="stmt"/>
492
+ <line num="10" count="2" type="cond" truecount="5" falsecount="1"/>
493
+ <line num="11" count="1" type="stmt"/>
494
+ <line num="20" count="1" type="cond" truecount="4" falsecount="2"/>
495
+ <line num="21" count="0" type="stmt"/>
496
+ <line num="22" count="0" type="stmt"/>
497
+ <line num="26" count="1" type="cond" truecount="1" falsecount="1"/>
498
+ <line num="27" count="1" type="stmt"/>
499
+ <line num="29" count="0" type="stmt"/>
500
+ <line num="32" count="2" type="stmt"/>
501
+ </file>
502
+ <file name="requestLogger.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/server-utils/requestLogger.ts">
503
+ <metrics statements="4" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="0"/>
504
+ <line num="3" count="0" type="stmt"/>
505
+ <line num="4" count="0" type="stmt"/>
506
+ <line num="11" count="0" type="stmt"/>
507
+ <line num="12" count="0" type="stmt"/>
508
+ </file>
509
+ </package>
510
+ <package name="src.util">
511
+ <metrics statements="47" coveredstatements="38" conditionals="14" coveredconditionals="10" methods="17" coveredmethods="8"/>
512
+ <file name="getNodeEnv.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/util/getNodeEnv.ts">
513
+ <metrics statements="6" coveredstatements="6" conditionals="5" coveredconditionals="5" methods="1" coveredmethods="1"/>
514
+ <line num="1" count="2" type="stmt"/>
515
+ <line num="2" count="8" type="cond" truecount="1" falsecount="0"/>
516
+ <line num="3" count="3" type="stmt"/>
517
+ <line num="6" count="5" type="cond" truecount="4" falsecount="0"/>
518
+ <line num="7" count="3" type="stmt"/>
519
+ <line num="10" count="2" type="stmt"/>
520
+ </file>
521
+ <file name="getPageInfo.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/util/getPageInfo.ts">
522
+ <metrics statements="5" coveredstatements="1" conditionals="4" coveredconditionals="0" methods="1" coveredmethods="0"/>
523
+ <line num="15" count="1" type="stmt"/>
524
+ <line num="16" count="0" type="stmt"/>
525
+ <line num="17" count="0" type="cond" truecount="0" falsecount="2"/>
526
+ <line num="18" count="0" type="cond" truecount="0" falsecount="2"/>
527
+ <line num="20" count="0" type="stmt"/>
528
+ </file>
529
+ <file name="index.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/util/index.ts">
530
+ <metrics statements="7" coveredstatements="7" conditionals="0" coveredconditionals="0" methods="7" coveredmethods="1"/>
531
+ <line num="1" count="5" type="stmt"/>
532
+ <line num="2" count="1" type="stmt"/>
533
+ <line num="3" count="1" type="stmt"/>
534
+ <line num="4" count="1" type="stmt"/>
535
+ <line num="5" count="1" type="stmt"/>
536
+ <line num="6" count="1" type="stmt"/>
537
+ <line num="7" count="1" type="stmt"/>
538
+ </file>
539
+ <file name="isPathTryingToAccessOutsideOfRoot.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/util/isPathTryingToAccessOutsideOfRoot.ts">
540
+ <metrics statements="5" coveredstatements="5" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
541
+ <line num="1" count="2" type="stmt"/>
542
+ <line num="3" count="2" type="stmt"/>
543
+ <line num="4" count="13" type="stmt"/>
544
+ <line num="6" count="13" type="stmt"/>
545
+ <line num="7" count="13" type="stmt"/>
546
+ </file>
547
+ <file name="isReadable.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/util/isReadable.ts">
548
+ <metrics statements="8" coveredstatements="4" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="0"/>
549
+ <line num="1" count="1" type="stmt"/>
550
+ <line num="2" count="1" type="stmt"/>
551
+ <line num="3" count="1" type="stmt"/>
552
+ <line num="5" count="1" type="stmt"/>
553
+ <line num="6" count="0" type="stmt"/>
554
+ <line num="7" count="0" type="stmt"/>
555
+ <line num="8" count="0" type="stmt"/>
556
+ <line num="10" count="0" type="stmt"/>
557
+ </file>
558
+ <file name="joinAbsoluteUrlPath.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/util/joinAbsoluteUrlPath.ts">
559
+ <metrics statements="8" coveredstatements="8" conditionals="2" coveredconditionals="2" methods="4" coveredmethods="4"/>
560
+ <line num="1" count="2" type="stmt"/>
561
+ <line num="2" count="33" type="stmt"/>
562
+ <line num="8" count="33" type="stmt"/>
563
+ <line num="10" count="33" type="cond" truecount="2" falsecount="0"/>
564
+ <line num="11" count="20" type="stmt"/>
565
+ <line num="13" count="13" type="stmt"/>
566
+ <line num="18" count="115" type="stmt"/>
567
+ <line num="22" count="33" type="stmt"/>
568
+ </file>
569
+ <file name="never.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/util/never.ts">
570
+ <metrics statements="2" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="0"/>
571
+ <line num="1" count="1" type="stmt"/>
572
+ <line num="3" count="0" type="stmt"/>
573
+ </file>
574
+ <file name="parseEnvVarForVar.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/util/parseEnvVarForVar.ts">
575
+ <metrics statements="6" coveredstatements="6" conditionals="3" coveredconditionals="3" methods="1" coveredmethods="1"/>
576
+ <line num="1" count="2" type="cond" truecount="1" falsecount="0"/>
577
+ <line num="2" count="4" type="cond" truecount="1" falsecount="0"/>
578
+ <line num="3" count="2" type="cond" truecount="1" falsecount="0"/>
579
+ <line num="4" count="1" type="stmt"/>
580
+ <line num="7" count="1" type="stmt"/>
581
+ <line num="11" count="2" type="stmt"/>
582
+ </file>
583
+ </package>
584
+ <package name="src.zip">
585
+ <metrics statements="17" coveredstatements="15" conditionals="0" coveredconditionals="0" methods="5" coveredmethods="3"/>
586
+ <file name="zipDirectory.ts" path="/Users/rainger/projects/cmp/packages/dx-common-lib/src/zip/zipDirectory.ts">
587
+ <metrics statements="17" coveredstatements="15" conditionals="0" coveredconditionals="0" methods="5" coveredmethods="3"/>
588
+ <line num="1" count="1" type="stmt"/>
589
+ <line num="2" count="1" type="stmt"/>
590
+ <line num="4" count="1" type="stmt"/>
591
+ <line num="6" count="1" type="stmt"/>
592
+ <line num="7" count="1" type="stmt"/>
593
+ <line num="8" count="1" type="stmt"/>
594
+ <line num="9" count="1" type="stmt"/>
595
+ <line num="11" count="1" type="stmt"/>
596
+ <line num="15" count="1" type="stmt"/>
597
+ <line num="16" count="1" type="stmt"/>
598
+ <line num="19" count="1" type="stmt"/>
599
+ <line num="20" count="0" type="stmt"/>
600
+ <line num="23" count="1" type="stmt"/>
601
+ <line num="24" count="0" type="stmt"/>
602
+ <line num="27" count="1" type="stmt"/>
603
+ <line num="28" count="1" type="stmt"/>
604
+ <line num="29" count="1" type="stmt"/>
605
+ </file>
606
+ </package>
607
+ </project>
608
+ </coverage>