@squiz/dx-common-lib 1.63.1 → 1.63.2
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 +6 -0
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/coverage/clover.xml +0 -608
- package/coverage/coverage-final.json +0 -48
- 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 -251
- 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 -196
- package/coverage/lcov-report/src/api-key-validation/CloudflareApiKeyService.ts.html +0 -382
- package/coverage/lcov-report/src/api-key-validation/DevelopmentApiKeyService.ts.html +0 -115
- package/coverage/lcov-report/src/api-key-validation/getApiKeyService.ts.html +0 -166
- package/coverage/lcov-report/src/api-key-validation/index.html +0 -146
- package/coverage/lcov-report/src/assertions/assertAssign.ts.html +0 -151
- package/coverage/lcov-report/src/assertions/assertAssignWithDefaultUndefinedValue.ts.html +0 -136
- package/coverage/lcov-report/src/assertions/assertIsBoolean.ts.html +0 -100
- package/coverage/lcov-report/src/assertions/assertIsDefined.ts.html +0 -106
- package/coverage/lcov-report/src/assertions/assertIsEnumValue.ts.html +0 -130
- package/coverage/lcov-report/src/assertions/assertIsMapOfStringString.ts.html +0 -172
- package/coverage/lcov-report/src/assertions/assertIsNotAnEmptyString.ts.html +0 -136
- package/coverage/lcov-report/src/assertions/assertIsObject.ts.html +0 -118
- package/coverage/lcov-report/src/assertions/assertIsString.ts.html +0 -118
- package/coverage/lcov-report/src/assertions/index.html +0 -251
- package/coverage/lcov-report/src/assertions/index.ts.html +0 -121
- package/coverage/lcov-report/src/cache/applyDefaultRulesToCacheControlObject.ts.html +0 -154
- package/coverage/lcov-report/src/cache/cacheControlToString.ts.html +0 -151
- package/coverage/lcov-report/src/cache/index.html +0 -176
- package/coverage/lcov-report/src/cache/index.ts.html +0 -97
- package/coverage/lcov-report/src/cache/parseAndSanitiseCacheControlHeader.ts.html +0 -169
- package/coverage/lcov-report/src/cache/parseCacheControl.ts.html +0 -307
- package/coverage/lcov-report/src/custom-types.d.ts.html +0 -112
- package/coverage/lcov-report/src/error/BadRequestError.ts.html +0 -106
- package/coverage/lcov-report/src/error/ErrorWithHttpStatusCode.ts.html +0 -100
- package/coverage/lcov-report/src/error/InternalServerError.ts.html +0 -106
- package/coverage/lcov-report/src/error/InvalidTokenError.ts.html +0 -109
- package/coverage/lcov-report/src/error/MethodNotImplementedError.ts.html +0 -106
- package/coverage/lcov-report/src/error/ResourceNotFoundError.ts.html +0 -106
- package/coverage/lcov-report/src/error/TimeoutError.ts.html +0 -109
- package/coverage/lcov-report/src/error/UnAuthenticatedRequestError.ts.html +0 -106
- package/coverage/lcov-report/src/error/UnprivilegedError.ts.html +0 -109
- package/coverage/lcov-report/src/error/index.html +0 -251
- package/coverage/lcov-report/src/error/index.ts.html +0 -115
- package/coverage/lcov-report/src/formatted-text/formattedTextToHtmlString.ts.html +0 -373
- package/coverage/lcov-report/src/formatted-text/index.html +0 -116
- package/coverage/lcov-report/src/index.html +0 -131
- package/coverage/lcov-report/src/index.ts.html +0 -127
- package/coverage/lcov-report/src/json-order/index.html +0 -161
- package/coverage/lcov-report/src/json-order/index.ts.html +0 -103
- package/coverage/lcov-report/src/json-order/order.ts.html +0 -442
- package/coverage/lcov-report/src/json-order/parse.ts.html +0 -280
- package/coverage/lcov-report/src/json-order/stringify.ts.html +0 -151
- package/coverage/lcov-report/src/server-utils/apiKeyMiddleware.ts.html +0 -154
- package/coverage/lcov-report/src/server-utils/errorMiddleware.ts.html +0 -184
- package/coverage/lcov-report/src/server-utils/index.html +0 -146
- package/coverage/lcov-report/src/server-utils/requestLogger.ts.html +0 -133
- package/coverage/lcov-report/src/util/getNodeEnv.ts.html +0 -118
- package/coverage/lcov-report/src/util/getPageInfo.ts.html +0 -169
- package/coverage/lcov-report/src/util/index.html +0 -221
- package/coverage/lcov-report/src/util/index.ts.html +0 -106
- package/coverage/lcov-report/src/util/isPathTryingToAccessOutsideOfRoot.ts.html +0 -109
- package/coverage/lcov-report/src/util/isReadable.ts.html +0 -121
- package/coverage/lcov-report/src/util/joinAbsoluteUrlPath.ts.html +0 -154
- package/coverage/lcov-report/src/util/never.ts.html +0 -97
- package/coverage/lcov-report/src/util/parseEnvVarForVar.ts.html +0 -121
- package/coverage/lcov-report/src/zip/index.html +0 -116
- package/coverage/lcov-report/src/zip/zipDirectory.ts.html +0 -178
- package/coverage/lcov.info +0 -1190
- package/squiz-dx-common-lib-1.39.1-alpha.7.tgz +0 -0
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/api-key-validation/CloudflareApiKeyService.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/api-key-validation</a> CloudflareApiKeyService.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">88.57% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>31/35</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">83.33% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>5/6</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'>6/6</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">88.57% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>31/35</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 oninput="onInput()" 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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
170
|
-
<span class="cline-any cline-yes">2x</span>
|
|
171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
172
|
-
<span class="cline-any cline-yes">2x</span>
|
|
173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
179
|
-
<span class="cline-any cline-yes">2x</span>
|
|
180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
184
|
-
<span class="cline-any cline-neutral"> </span>
|
|
185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
187
|
-
<span class="cline-any cline-yes">2x</span>
|
|
188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
189
|
-
<span class="cline-any cline-yes">2x</span>
|
|
190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
192
|
-
<span class="cline-any cline-neutral"> </span>
|
|
193
|
-
<span class="cline-any cline-yes">2x</span>
|
|
194
|
-
<span class="cline-any cline-yes">2x</span>
|
|
195
|
-
<span class="cline-any cline-neutral"> </span>
|
|
196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
198
|
-
<span class="cline-any cline-yes">2x</span>
|
|
199
|
-
<span class="cline-any cline-yes">2x</span>
|
|
200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
202
|
-
<span class="cline-any cline-yes">2x</span>
|
|
203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
206
|
-
<span class="cline-any cline-yes">6x</span>
|
|
207
|
-
<span class="cline-any cline-yes">1x</span>
|
|
208
|
-
<span class="cline-any cline-neutral"> </span>
|
|
209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
210
|
-
<span class="cline-any cline-yes">5x</span>
|
|
211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
214
|
-
<span class="cline-any cline-yes">5x</span>
|
|
215
|
-
<span class="cline-any cline-yes">1x</span>
|
|
216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
218
|
-
<span class="cline-any cline-yes">4x</span>
|
|
219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
224
|
-
<span class="cline-any cline-yes">7x</span>
|
|
225
|
-
<span class="cline-any cline-yes">7x</span>
|
|
226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
231
|
-
<span class="cline-any cline-no"> </span>
|
|
232
|
-
<span class="cline-any cline-no"> </span>
|
|
233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
235
|
-
<span class="cline-any cline-yes">7x</span>
|
|
236
|
-
<span class="cline-any cline-yes">7x</span>
|
|
237
|
-
<span class="cline-any cline-no"> </span>
|
|
238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-yes">7x</span>
|
|
240
|
-
<span class="cline-any cline-neutral"> </span>
|
|
241
|
-
<span class="cline-any cline-yes">6x</span>
|
|
242
|
-
<span class="cline-any cline-yes">6x</span>
|
|
243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
245
|
-
<span class="cline-any cline-no"> </span>
|
|
246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
247
|
-
<span class="cline-any cline-yes">1x</span>
|
|
248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
250
|
-
<span class="cline-any cline-neutral"> </span>
|
|
251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
252
|
-
<span class="cline-any cline-yes">7x</span>
|
|
253
|
-
<span class="cline-any cline-yes">7x</span>
|
|
254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
255
|
-
<span class="cline-any cline-yes">6x</span>
|
|
256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-yes">6x</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-neutral"> </span>
|
|
261
|
-
<span class="cline-any cline-neutral"> </span>
|
|
262
|
-
<span class="cline-any cline-neutral"> </span>
|
|
263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
265
|
-
GetSecretValueCommand,
|
|
266
|
-
GetSecretValueCommandOutput,
|
|
267
|
-
SecretsManagerClient,
|
|
268
|
-
} from '@aws-sdk/client-secrets-manager';
|
|
269
|
-
import { UnAuthenticatedRequestError } from '../error/UnAuthenticatedRequestError';
|
|
270
|
-
import { ApiKeyValidationService } from './ApiKeyValidationService';
|
|
271
|
-
import { getLogger, Logger } from '@squiz/dx-logger-lib';
|
|
272
|
-
|
|
273
|
-
export interface CloudFlareKeys {
|
|
274
|
-
keys: string[];
|
|
275
|
-
'matrix-keys': string[];
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
let validKeys: CloudFlareKeys = {
|
|
279
|
-
keys: [],
|
|
280
|
-
'matrix-keys': [],
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
let refreshInterval: ReturnType<typeof setInterval>;
|
|
284
|
-
// number must be smaller than 24 days.
|
|
285
|
-
// This is because the value is int32 and maxes at than 2^31-1 milliseconds
|
|
286
|
-
const REFRESH_TIMER = 7 * 24 * 3600 * 1000; // days, hours, seconds, milliseconds
|
|
287
|
-
|
|
288
|
-
export class CloudflareApiKeyService implements ApiKeyValidationService {
|
|
289
|
-
protected secretsClient: SecretsManagerClient;
|
|
290
|
-
protected logger: Logger;
|
|
291
|
-
|
|
292
|
-
constructor(protected secretName: string, logger?: Logger) {
|
|
293
|
-
this.secretsClient = new SecretsManagerClient({
|
|
294
|
-
region: 'ap-southeast-2',
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
if (!logger) {
|
|
298
|
-
logger = getLogger({ name: 'CloudflareApiKeyService' });
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
this.logger = logger;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
public keyIsValid(key: string): boolean {
|
|
305
|
-
if (validKeys.keys.length == 0) {
|
|
306
|
-
throw new UnAuthenticatedRequestError('No api keys to check against');
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
return validKeys.keys.includes(key);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
public matrixKeyIsValid(key: string): boolean {
|
|
313
|
-
if (validKeys['matrix-keys'].length == 0) {
|
|
314
|
-
throw new UnAuthenticatedRequestError('No api keys to check against');
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
return validKeys['matrix-keys'].includes(key);
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
protected async getValidApiKeys(): Promise<CloudFlareKeys> {
|
|
321
|
-
let secretValue: GetSecretValueCommandOutput;
|
|
322
|
-
|
|
323
|
-
try {
|
|
324
|
-
secretValue = await this.secretsClient.send(
|
|
325
|
-
new GetSecretValueCommand({
|
|
326
|
-
SecretId: this.secretName,
|
|
327
|
-
}),
|
|
328
|
-
);
|
|
329
|
-
} catch (e: any) {
|
|
330
|
-
<span class="cstat-no" title="statement not covered" > console.error(e);</span>
|
|
331
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('Failed to request api key from aws' + e.message);</span>
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
try {
|
|
335
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!secretValue.SecretString) {
|
|
336
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('cloudflare api key SecretString undefined');</span>
|
|
337
|
-
}
|
|
338
|
-
const secret = JSON.parse(secretValue.SecretString);
|
|
339
|
-
|
|
340
|
-
if (secret.keys) {
|
|
341
|
-
return secret;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('api keys retrieved and decoded successfully but contained no values');</span>
|
|
345
|
-
} catch (e) {
|
|
346
|
-
throw new Error('failed to decode cloudflare api key values');
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
public async refreshApiKeys() {
|
|
351
|
-
this.logger.info('refreshing keys');
|
|
352
|
-
validKeys = await this.getValidApiKeys();
|
|
353
|
-
|
|
354
|
-
this.logger.info(`number of valid keys found: ${validKeys.keys.length}`);
|
|
355
|
-
|
|
356
|
-
if (!refreshInterval) {
|
|
357
|
-
refreshInterval = setInterval(async () => {
|
|
358
|
-
await this.refreshApiKeys();
|
|
359
|
-
}, REFRESH_TIMER);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
</pre></td></tr></table></pre>
|
|
364
|
-
|
|
365
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
366
|
-
</div><!-- /wrapper -->
|
|
367
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
368
|
-
Code coverage generated by
|
|
369
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
370
|
-
at 2023-03-21T04:59:30.046Z
|
|
371
|
-
</div>
|
|
372
|
-
<script src="../../prettify.js"></script>
|
|
373
|
-
<script>
|
|
374
|
-
window.onload = function () {
|
|
375
|
-
prettyPrint();
|
|
376
|
-
};
|
|
377
|
-
</script>
|
|
378
|
-
<script src="../../sorter.js"></script>
|
|
379
|
-
<script src="../../block-navigation.js"></script>
|
|
380
|
-
</body>
|
|
381
|
-
</html>
|
|
382
|
-
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/api-key-validation/DevelopmentApiKeyService.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/api-key-validation</a> DevelopmentApiKeyService.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'>3/3</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'>0/0</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'>2/2</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'>3/3</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 oninput="onInput()" 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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
77
|
-
<span class="cline-any cline-neutral"> </span>
|
|
78
|
-
<span class="cline-any cline-yes">2x</span>
|
|
79
|
-
<span class="cline-any cline-neutral"> </span>
|
|
80
|
-
<span class="cline-any cline-yes">1x</span>
|
|
81
|
-
<span class="cline-any cline-neutral"> </span>
|
|
82
|
-
<span class="cline-any cline-neutral"> </span>
|
|
83
|
-
<span class="cline-any cline-yes">1x</span>
|
|
84
|
-
<span class="cline-any cline-neutral"> </span>
|
|
85
|
-
<span class="cline-any cline-neutral"> </span>
|
|
86
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { ApiKeyValidationService } from './ApiKeyValidationService';
|
|
87
|
-
|
|
88
|
-
export class DevelopmentApiKeyService implements ApiKeyValidationService {
|
|
89
|
-
public keyIsValid(): boolean {
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
public matrixKeyIsValid(): boolean {
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
</pre></td></tr></table></pre>
|
|
97
|
-
|
|
98
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
99
|
-
</div><!-- /wrapper -->
|
|
100
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
101
|
-
Code coverage generated by
|
|
102
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
103
|
-
at 2023-03-21T04:59:30.046Z
|
|
104
|
-
</div>
|
|
105
|
-
<script src="../../prettify.js"></script>
|
|
106
|
-
<script>
|
|
107
|
-
window.onload = function () {
|
|
108
|
-
prettyPrint();
|
|
109
|
-
};
|
|
110
|
-
</script>
|
|
111
|
-
<script src="../../sorter.js"></script>
|
|
112
|
-
<script src="../../block-navigation.js"></script>
|
|
113
|
-
</body>
|
|
114
|
-
</html>
|
|
115
|
-
|