@northflare/runner 0.0.12 → 0.0.13
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/package.json +2 -3
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/coverage-final.json +0 -12
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -176
- package/coverage/lib/index.html +0 -116
- package/coverage/lib/preload-script.js.html +0 -964
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/coverage/src/collections/index.html +0 -116
- package/coverage/src/collections/runner-messages.ts.html +0 -312
- package/coverage/src/components/claude-manager.ts.html +0 -1290
- package/coverage/src/components/index.html +0 -146
- package/coverage/src/components/message-handler.ts.html +0 -730
- package/coverage/src/components/repository-manager.ts.html +0 -841
- package/coverage/src/index.html +0 -131
- package/coverage/src/index.ts.html +0 -448
- package/coverage/src/runner.ts.html +0 -1239
- package/coverage/src/utils/config.ts.html +0 -780
- package/coverage/src/utils/console.ts.html +0 -121
- package/coverage/src/utils/index.html +0 -161
- package/coverage/src/utils/logger.ts.html +0 -475
- package/coverage/src/utils/status-line.ts.html +0 -445
- package/exceptions.log +0 -24
- package/lib/codex-sdk/src/codex.ts +0 -38
- package/lib/codex-sdk/src/codexOptions.ts +0 -10
- package/lib/codex-sdk/src/events.ts +0 -80
- package/lib/codex-sdk/src/exec.ts +0 -336
- package/lib/codex-sdk/src/index.ts +0 -39
- package/lib/codex-sdk/src/items.ts +0 -127
- package/lib/codex-sdk/src/outputSchemaFile.ts +0 -40
- package/lib/codex-sdk/src/thread.ts +0 -155
- package/lib/codex-sdk/src/threadOptions.ts +0 -18
- package/lib/codex-sdk/src/turnOptions.ts +0 -6
- package/lib/codex-sdk/tests/abort.test.ts +0 -165
- package/lib/codex-sdk/tests/codexExecSpy.ts +0 -37
- package/lib/codex-sdk/tests/responsesProxy.ts +0 -225
- package/lib/codex-sdk/tests/run.test.ts +0 -687
- package/lib/codex-sdk/tests/runStreamed.test.ts +0 -211
- package/lib/codex-sdk/tsconfig.json +0 -24
- package/rejections.log +0 -68
- package/runner.log +0 -488
- package/src/components/claude-sdk-manager.ts +0 -1425
- package/src/components/codex-sdk-manager.ts +0 -1358
- package/src/components/enhanced-repository-manager.ts +0 -823
- package/src/components/message-handler-sse.ts +0 -1097
- package/src/components/repository-manager.ts +0 -337
- package/src/index.ts +0 -168
- package/src/runner-sse.ts +0 -917
- package/src/services/RunnerAPIClient.ts +0 -175
- package/src/services/SSEClient.ts +0 -258
- package/src/types/claude.ts +0 -66
- package/src/types/computer-name.d.ts +0 -4
- package/src/types/index.ts +0 -64
- package/src/types/messages.ts +0 -39
- package/src/types/runner-interface.ts +0 -36
- package/src/utils/StateManager.ts +0 -187
- package/src/utils/config.ts +0 -327
- package/src/utils/console.ts +0 -15
- package/src/utils/debug.ts +0 -18
- package/src/utils/expand-env.ts +0 -22
- package/src/utils/logger.ts +0 -134
- package/src/utils/model.ts +0 -29
- package/src/utils/status-line.ts +0 -122
- package/src/utils/tool-response-sanitizer.ts +0 -160
- package/test-debug.sh +0 -26
- package/tests/retry-strategies.test.ts +0 -410
- package/tests/sdk-integration.test.ts +0 -329
- package/tests/sdk-streaming.test.ts +0 -1180
- package/tests/setup.ts +0 -5
- package/tests/test-claude-manager.ts +0 -120
- package/tests/tool-response-sanitizer.test.ts +0 -63
- package/tsconfig.json +0 -36
- package/vitest.config.ts +0 -27
|
@@ -1,964 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for lib/preload-script.js</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">lib</a> preload-script.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">0% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/293</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">0% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/1</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">0% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/1</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">0% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/293</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
360
|
-
<span class="cline-any cline-no"> </span>
|
|
361
|
-
<span class="cline-any cline-no"> </span>
|
|
362
|
-
<span class="cline-any cline-no"> </span>
|
|
363
|
-
<span class="cline-any cline-no"> </span>
|
|
364
|
-
<span class="cline-any cline-no"> </span>
|
|
365
|
-
<span class="cline-any cline-no"> </span>
|
|
366
|
-
<span class="cline-any cline-no"> </span>
|
|
367
|
-
<span class="cline-any cline-no"> </span>
|
|
368
|
-
<span class="cline-any cline-no"> </span>
|
|
369
|
-
<span class="cline-any cline-no"> </span>
|
|
370
|
-
<span class="cline-any cline-no"> </span>
|
|
371
|
-
<span class="cline-any cline-no"> </span>
|
|
372
|
-
<span class="cline-any cline-no"> </span>
|
|
373
|
-
<span class="cline-any cline-no"> </span>
|
|
374
|
-
<span class="cline-any cline-no"> </span>
|
|
375
|
-
<span class="cline-any cline-no"> </span>
|
|
376
|
-
<span class="cline-any cline-no"> </span>
|
|
377
|
-
<span class="cline-any cline-no"> </span>
|
|
378
|
-
<span class="cline-any cline-no"> </span>
|
|
379
|
-
<span class="cline-any cline-no"> </span>
|
|
380
|
-
<span class="cline-any cline-no"> </span>
|
|
381
|
-
<span class="cline-any cline-no"> </span>
|
|
382
|
-
<span class="cline-any cline-no"> </span>
|
|
383
|
-
<span class="cline-any cline-no"> </span>
|
|
384
|
-
<span class="cline-any cline-no"> </span>
|
|
385
|
-
<span class="cline-any cline-no"> </span>
|
|
386
|
-
<span class="cline-any cline-no"> </span>
|
|
387
|
-
<span class="cline-any cline-no"> </span>
|
|
388
|
-
<span class="cline-any cline-no"> </span>
|
|
389
|
-
<span class="cline-any cline-no"> </span>
|
|
390
|
-
<span class="cline-any cline-no"> </span>
|
|
391
|
-
<span class="cline-any cline-no"> </span>
|
|
392
|
-
<span class="cline-any cline-no"> </span>
|
|
393
|
-
<span class="cline-any cline-no"> </span>
|
|
394
|
-
<span class="cline-any cline-no"> </span>
|
|
395
|
-
<span class="cline-any cline-no"> </span>
|
|
396
|
-
<span class="cline-any cline-no"> </span>
|
|
397
|
-
<span class="cline-any cline-no"> </span>
|
|
398
|
-
<span class="cline-any cline-no"> </span>
|
|
399
|
-
<span class="cline-any cline-no"> </span>
|
|
400
|
-
<span class="cline-any cline-no"> </span>
|
|
401
|
-
<span class="cline-any cline-no"> </span>
|
|
402
|
-
<span class="cline-any cline-no"> </span>
|
|
403
|
-
<span class="cline-any cline-no"> </span>
|
|
404
|
-
<span class="cline-any cline-no"> </span>
|
|
405
|
-
<span class="cline-any cline-no"> </span>
|
|
406
|
-
<span class="cline-any cline-no"> </span>
|
|
407
|
-
<span class="cline-any cline-no"> </span>
|
|
408
|
-
<span class="cline-any cline-no"> </span>
|
|
409
|
-
<span class="cline-any cline-no"> </span>
|
|
410
|
-
<span class="cline-any cline-no"> </span>
|
|
411
|
-
<span class="cline-any cline-no"> </span>
|
|
412
|
-
<span class="cline-any cline-no"> </span>
|
|
413
|
-
<span class="cline-any cline-no"> </span>
|
|
414
|
-
<span class="cline-any cline-no"> </span>
|
|
415
|
-
<span class="cline-any cline-no"> </span>
|
|
416
|
-
<span class="cline-any cline-no"> </span>
|
|
417
|
-
<span class="cline-any cline-no"> </span>
|
|
418
|
-
<span class="cline-any cline-no"> </span>
|
|
419
|
-
<span class="cline-any cline-no"> </span>
|
|
420
|
-
<span class="cline-any cline-no"> </span>
|
|
421
|
-
<span class="cline-any cline-no"> </span>
|
|
422
|
-
<span class="cline-any cline-no"> </span>
|
|
423
|
-
<span class="cline-any cline-no"> </span>
|
|
424
|
-
<span class="cline-any cline-no"> </span>
|
|
425
|
-
<span class="cline-any cline-no"> </span>
|
|
426
|
-
<span class="cline-any cline-no"> </span>
|
|
427
|
-
<span class="cline-any cline-no"> </span>
|
|
428
|
-
<span class="cline-any cline-no"> </span>
|
|
429
|
-
<span class="cline-any cline-no"> </span>
|
|
430
|
-
<span class="cline-any cline-no"> </span>
|
|
431
|
-
<span class="cline-any cline-no"> </span>
|
|
432
|
-
<span class="cline-any cline-no"> </span>
|
|
433
|
-
<span class="cline-any cline-no"> </span>
|
|
434
|
-
<span class="cline-any cline-no"> </span>
|
|
435
|
-
<span class="cline-any cline-no"> </span>
|
|
436
|
-
<span class="cline-any cline-no"> </span>
|
|
437
|
-
<span class="cline-any cline-no"> </span>
|
|
438
|
-
<span class="cline-any cline-no"> </span>
|
|
439
|
-
<span class="cline-any cline-no"> </span>
|
|
440
|
-
<span class="cline-any cline-no"> </span>
|
|
441
|
-
<span class="cline-any cline-no"> </span>
|
|
442
|
-
<span class="cline-any cline-no"> </span>
|
|
443
|
-
<span class="cline-any cline-no"> </span>
|
|
444
|
-
<span class="cline-any cline-no"> </span>
|
|
445
|
-
<span class="cline-any cline-no"> </span>
|
|
446
|
-
<span class="cline-any cline-no"> </span>
|
|
447
|
-
<span class="cline-any cline-no"> </span>
|
|
448
|
-
<span class="cline-any cline-no"> </span>
|
|
449
|
-
<span class="cline-any cline-no"> </span>
|
|
450
|
-
<span class="cline-any cline-no"> </span>
|
|
451
|
-
<span class="cline-any cline-no"> </span>
|
|
452
|
-
<span class="cline-any cline-no"> </span>
|
|
453
|
-
<span class="cline-any cline-no"> </span>
|
|
454
|
-
<span class="cline-any cline-no"> </span>
|
|
455
|
-
<span class="cline-any cline-no"> </span>
|
|
456
|
-
<span class="cline-any cline-no"> </span>
|
|
457
|
-
<span class="cline-any cline-no"> </span>
|
|
458
|
-
<span class="cline-any cline-no"> </span>
|
|
459
|
-
<span class="cline-any cline-no"> </span>
|
|
460
|
-
<span class="cline-any cline-no"> </span>
|
|
461
|
-
<span class="cline-any cline-no"> </span>
|
|
462
|
-
<span class="cline-any cline-no"> </span>
|
|
463
|
-
<span class="cline-any cline-no"> </span>
|
|
464
|
-
<span class="cline-any cline-no"> </span>
|
|
465
|
-
<span class="cline-any cline-no"> </span>
|
|
466
|
-
<span class="cline-any cline-no"> </span>
|
|
467
|
-
<span class="cline-any cline-no"> </span>
|
|
468
|
-
<span class="cline-any cline-no"> </span>
|
|
469
|
-
<span class="cline-any cline-no"> </span>
|
|
470
|
-
<span class="cline-any cline-no"> </span>
|
|
471
|
-
<span class="cline-any cline-no"> </span>
|
|
472
|
-
<span class="cline-any cline-no"> </span>
|
|
473
|
-
<span class="cline-any cline-no"> </span>
|
|
474
|
-
<span class="cline-any cline-no"> </span>
|
|
475
|
-
<span class="cline-any cline-no"> </span>
|
|
476
|
-
<span class="cline-any cline-no"> </span>
|
|
477
|
-
<span class="cline-any cline-no"> </span>
|
|
478
|
-
<span class="cline-any cline-no"> </span>
|
|
479
|
-
<span class="cline-any cline-no"> </span>
|
|
480
|
-
<span class="cline-any cline-no"> </span>
|
|
481
|
-
<span class="cline-any cline-no"> </span>
|
|
482
|
-
<span class="cline-any cline-no"> </span>
|
|
483
|
-
<span class="cline-any cline-no"> </span>
|
|
484
|
-
<span class="cline-any cline-no"> </span>
|
|
485
|
-
<span class="cline-any cline-no"> </span>
|
|
486
|
-
<span class="cline-any cline-no"> </span>
|
|
487
|
-
<span class="cline-any cline-no"> </span>
|
|
488
|
-
<span class="cline-any cline-no"> </span>
|
|
489
|
-
<span class="cline-any cline-no"> </span>
|
|
490
|
-
<span class="cline-any cline-no"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
|
-
<span class="cline-any cline-no"> </span>
|
|
493
|
-
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-no"> </span>
|
|
495
|
-
<span class="cline-any cline-no"> </span>
|
|
496
|
-
<span class="cline-any cline-no"> </span>
|
|
497
|
-
<span class="cline-any cline-no"> </span>
|
|
498
|
-
<span class="cline-any cline-no"> </span>
|
|
499
|
-
<span class="cline-any cline-no"> </span>
|
|
500
|
-
<span class="cline-any cline-no"> </span>
|
|
501
|
-
<span class="cline-any cline-no"> </span>
|
|
502
|
-
<span class="cline-any cline-no"> </span>
|
|
503
|
-
<span class="cline-any cline-no"> </span>
|
|
504
|
-
<span class="cline-any cline-no"> </span>
|
|
505
|
-
<span class="cline-any cline-no"> </span>
|
|
506
|
-
<span class="cline-any cline-no"> </span>
|
|
507
|
-
<span class="cline-any cline-no"> </span>
|
|
508
|
-
<span class="cline-any cline-no"> </span>
|
|
509
|
-
<span class="cline-any cline-no"> </span>
|
|
510
|
-
<span class="cline-any cline-no"> </span>
|
|
511
|
-
<span class="cline-any cline-no"> </span>
|
|
512
|
-
<span class="cline-any cline-no"> </span>
|
|
513
|
-
<span class="cline-any cline-no"> </span>
|
|
514
|
-
<span class="cline-any cline-no"> </span>
|
|
515
|
-
<span class="cline-any cline-no"> </span>
|
|
516
|
-
<span class="cline-any cline-no"> </span>
|
|
517
|
-
<span class="cline-any cline-no"> </span>
|
|
518
|
-
<span class="cline-any cline-no"> </span>
|
|
519
|
-
<span class="cline-any cline-no"> </span>
|
|
520
|
-
<span class="cline-any cline-no"> </span>
|
|
521
|
-
<span class="cline-any cline-no"> </span>
|
|
522
|
-
<span class="cline-any cline-no"> </span>
|
|
523
|
-
<span class="cline-any cline-no"> </span>
|
|
524
|
-
<span class="cline-any cline-no"> </span>
|
|
525
|
-
<span class="cline-any cline-no"> </span>
|
|
526
|
-
<span class="cline-any cline-no"> </span>
|
|
527
|
-
<span class="cline-any cline-no"> </span>
|
|
528
|
-
<span class="cline-any cline-no"> </span>
|
|
529
|
-
<span class="cline-any cline-no"> </span>
|
|
530
|
-
<span class="cline-any cline-no"> </span>
|
|
531
|
-
<span class="cline-any cline-no"> </span>
|
|
532
|
-
<span class="cline-any cline-no"> </span>
|
|
533
|
-
<span class="cline-any cline-no"> </span>
|
|
534
|
-
<span class="cline-any cline-no"> </span>
|
|
535
|
-
<span class="cline-any cline-no"> </span>
|
|
536
|
-
<span class="cline-any cline-no"> </span>
|
|
537
|
-
<span class="cline-any cline-no"> </span>
|
|
538
|
-
<span class="cline-any cline-no"> </span>
|
|
539
|
-
<span class="cline-any cline-no"> </span>
|
|
540
|
-
<span class="cline-any cline-no"> </span>
|
|
541
|
-
<span class="cline-any cline-no"> </span>
|
|
542
|
-
<span class="cline-any cline-no"> </span>
|
|
543
|
-
<span class="cline-any cline-no"> </span>
|
|
544
|
-
<span class="cline-any cline-no"> </span>
|
|
545
|
-
<span class="cline-any cline-no"> </span>
|
|
546
|
-
<span class="cline-any cline-no"> </span>
|
|
547
|
-
<span class="cline-any cline-no"> </span>
|
|
548
|
-
<span class="cline-any cline-no"> </span>
|
|
549
|
-
<span class="cline-any cline-no"> </span>
|
|
550
|
-
<span class="cline-any cline-no"> </span>
|
|
551
|
-
<span class="cline-any cline-no"> </span>
|
|
552
|
-
<span class="cline-any cline-no"> </span>
|
|
553
|
-
<span class="cline-any cline-no"> </span>
|
|
554
|
-
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-no"> </span>
|
|
556
|
-
<span class="cline-any cline-no"> </span>
|
|
557
|
-
<span class="cline-any cline-no"> </span>
|
|
558
|
-
<span class="cline-any cline-no"> </span>
|
|
559
|
-
<span class="cline-any cline-no"> </span>
|
|
560
|
-
<span class="cline-any cline-no"> </span>
|
|
561
|
-
<span class="cline-any cline-no"> </span>
|
|
562
|
-
<span class="cline-any cline-no"> </span>
|
|
563
|
-
<span class="cline-any cline-no"> </span>
|
|
564
|
-
<span class="cline-any cline-no"> </span>
|
|
565
|
-
<span class="cline-any cline-no"> </span>
|
|
566
|
-
<span class="cline-any cline-no"> </span>
|
|
567
|
-
<span class="cline-any cline-no"> </span>
|
|
568
|
-
<span class="cline-any cline-no"> </span>
|
|
569
|
-
<span class="cline-any cline-no"> </span>
|
|
570
|
-
<span class="cline-any cline-no"> </span>
|
|
571
|
-
<span class="cline-any cline-no"> </span>
|
|
572
|
-
<span class="cline-any cline-no"> </span>
|
|
573
|
-
<span class="cline-any cline-no"> </span>
|
|
574
|
-
<span class="cline-any cline-no"> </span>
|
|
575
|
-
<span class="cline-any cline-no"> </span>
|
|
576
|
-
<span class="cline-any cline-no"> </span>
|
|
577
|
-
<span class="cline-any cline-no"> </span>
|
|
578
|
-
<span class="cline-any cline-no"> </span>
|
|
579
|
-
<span class="cline-any cline-no"> </span>
|
|
580
|
-
<span class="cline-any cline-no"> </span>
|
|
581
|
-
<span class="cline-any cline-no"> </span>
|
|
582
|
-
<span class="cline-any cline-no"> </span>
|
|
583
|
-
<span class="cline-any cline-no"> </span>
|
|
584
|
-
<span class="cline-any cline-no"> </span>
|
|
585
|
-
<span class="cline-any cline-no"> </span>
|
|
586
|
-
<span class="cline-any cline-no"> </span>
|
|
587
|
-
<span class="cline-any cline-no"> </span>
|
|
588
|
-
<span class="cline-any cline-no"> </span>
|
|
589
|
-
<span class="cline-any cline-no"> </span>
|
|
590
|
-
<span class="cline-any cline-no"> </span>
|
|
591
|
-
<span class="cline-any cline-no"> </span>
|
|
592
|
-
<span class="cline-any cline-no"> </span>
|
|
593
|
-
<span class="cline-any cline-no"> </span>
|
|
594
|
-
<span class="cline-any cline-no"> </span>
|
|
595
|
-
<span class="cline-any cline-no"> </span>
|
|
596
|
-
<span class="cline-any cline-no"> </span>
|
|
597
|
-
<span class="cline-any cline-no"> </span>
|
|
598
|
-
<span class="cline-any cline-no"> </span>
|
|
599
|
-
<span class="cline-any cline-no"> </span>
|
|
600
|
-
<span class="cline-any cline-no"> </span>
|
|
601
|
-
<span class="cline-any cline-no"> </span>
|
|
602
|
-
<span class="cline-any cline-no"> </span>
|
|
603
|
-
<span class="cline-any cline-no"> </span>
|
|
604
|
-
<span class="cline-any cline-no"> </span>
|
|
605
|
-
<span class="cline-any cline-no"> </span>
|
|
606
|
-
<span class="cline-any cline-no"> </span>
|
|
607
|
-
<span class="cline-any cline-no"> </span>
|
|
608
|
-
<span class="cline-any cline-no"> </span>
|
|
609
|
-
<span class="cline-any cline-no"> </span>
|
|
610
|
-
<span class="cline-any cline-no"> </span>
|
|
611
|
-
<span class="cline-any cline-no"> </span>
|
|
612
|
-
<span class="cline-any cline-no"> </span>
|
|
613
|
-
<span class="cline-any cline-no"> </span>
|
|
614
|
-
<span class="cline-any cline-no"> </span>
|
|
615
|
-
<span class="cline-any cline-no"> </span>
|
|
616
|
-
<span class="cline-any cline-no"> </span>
|
|
617
|
-
<span class="cline-any cline-no"> </span>
|
|
618
|
-
<span class="cline-any cline-no"> </span>
|
|
619
|
-
<span class="cline-any cline-no"> </span>
|
|
620
|
-
<span class="cline-any cline-no"> </span>
|
|
621
|
-
<span class="cline-any cline-no"> </span>
|
|
622
|
-
<span class="cline-any cline-no"> </span>
|
|
623
|
-
<span class="cline-any cline-no"> </span>
|
|
624
|
-
<span class="cline-any cline-no"> </span>
|
|
625
|
-
<span class="cline-any cline-no"> </span>
|
|
626
|
-
<span class="cline-any cline-no"> </span>
|
|
627
|
-
<span class="cline-any cline-no"> </span>
|
|
628
|
-
<span class="cline-any cline-no"> </span>
|
|
629
|
-
<span class="cline-any cline-no"> </span>
|
|
630
|
-
<span class="cline-any cline-no"> </span>
|
|
631
|
-
<span class="cline-any cline-no"> </span>
|
|
632
|
-
<span class="cline-any cline-no"> </span>
|
|
633
|
-
<span class="cline-any cline-no"> </span>
|
|
634
|
-
<span class="cline-any cline-no"> </span>
|
|
635
|
-
<span class="cline-any cline-no"> </span>
|
|
636
|
-
<span class="cline-any cline-no"> </span>
|
|
637
|
-
<span class="cline-any cline-no"> </span>
|
|
638
|
-
<span class="cline-any cline-no"> </span>
|
|
639
|
-
<span class="cline-any cline-no"> </span>
|
|
640
|
-
<span class="cline-any cline-no"> </span>
|
|
641
|
-
<span class="cline-any cline-no"> </span>
|
|
642
|
-
<span class="cline-any cline-no"> </span>
|
|
643
|
-
<span class="cline-any cline-no"> </span>
|
|
644
|
-
<span class="cline-any cline-no"> </span>
|
|
645
|
-
<span class="cline-any cline-no"> </span>
|
|
646
|
-
<span class="cline-any cline-no"> </span>
|
|
647
|
-
<span class="cline-any cline-no"> </span>
|
|
648
|
-
<span class="cline-any cline-no"> </span>
|
|
649
|
-
<span class="cline-any cline-no"> </span>
|
|
650
|
-
<span class="cline-any cline-no"> </span>
|
|
651
|
-
<span class="cline-any cline-no"> </span>
|
|
652
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >// Check if logging is enabled via environment variable<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
653
|
-
<span class="cstat-no" title="statement not covered" >const loggingEnabled =</span>
|
|
654
|
-
<span class="cstat-no" title="statement not covered" > process.env.DEBUG_PRELOAD_SCRIPT === "1" ||</span>
|
|
655
|
-
<span class="cstat-no" title="statement not covered" > process.env.DEBUG_PRELOAD_SCRIPT === "true";</span>
|
|
656
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
657
|
-
<span class="cstat-no" title="statement not covered" >// Patch child_process to prevent security commands</span>
|
|
658
|
-
<span class="cstat-no" title="statement not covered" >const childProcess = require("child_process");</span>
|
|
659
|
-
<span class="cstat-no" title="statement not covered" >const fs = require("fs");</span>
|
|
660
|
-
<span class="cstat-no" title="statement not covered" >const path = require("path");</span>
|
|
661
|
-
<span class="cstat-no" title="statement not covered" >const os = require("os");</span>
|
|
662
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
663
|
-
<span class="cstat-no" title="statement not covered" >const originalExecSync = childProcess.execSync;</span>
|
|
664
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
665
|
-
<span class="cstat-no" title="statement not covered" >function logToFile(...args) {</span>
|
|
666
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
667
|
-
<span class="cstat-no" title="statement not covered" > const logFilePath = path.join(os.homedir(), ".preload-script.log");</span>
|
|
668
|
-
<span class="cstat-no" title="statement not covered" > const timestamp = new Date().toISOString();</span>
|
|
669
|
-
<span class="cstat-no" title="statement not covered" > const message = args</span>
|
|
670
|
-
<span class="cstat-no" title="statement not covered" > .map((arg) => {</span>
|
|
671
|
-
<span class="cstat-no" title="statement not covered" > if (typeof arg === "string") return arg;</span>
|
|
672
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
673
|
-
<span class="cstat-no" title="statement not covered" > return JSON.stringify(arg, null, 2);</span>
|
|
674
|
-
<span class="cstat-no" title="statement not covered" > } catch {</span>
|
|
675
|
-
<span class="cstat-no" title="statement not covered" > return String(arg);</span>
|
|
676
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
677
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
678
|
-
<span class="cstat-no" title="statement not covered" > .join(" ");</span>
|
|
679
|
-
<span class="cstat-no" title="statement not covered" > fs.appendFileSync(logFilePath, `[${timestamp}] ${message}\n`);</span>
|
|
680
|
-
<span class="cstat-no" title="statement not covered" > } catch (err) {</span>
|
|
681
|
-
<span class="cstat-no" title="statement not covered" > // Fallback: do nothing if logging fails</span>
|
|
682
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
683
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
684
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
685
|
-
<span class="cstat-no" title="statement not covered" >// Patch console.log and console.error to use logToFile</span>
|
|
686
|
-
<span class="cstat-no" title="statement not covered" >//console.log = (...args) => logToFile(...args);</span>
|
|
687
|
-
<span class="cstat-no" title="statement not covered" >//console.error = (...args) => logToFile("ERROR:", ...args);</span>
|
|
688
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
689
|
-
<span class="cstat-no" title="statement not covered" >// === macOS Security Commands Patching ===</span>
|
|
690
|
-
<span class="cstat-no" title="statement not covered" >childProcess.execSync = function (command, options) {</span>
|
|
691
|
-
<span class="cstat-no" title="statement not covered" > // Check if command starts with "security "</span>
|
|
692
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
693
|
-
<span class="cstat-no" title="statement not covered" > typeof command === "string" &&</span>
|
|
694
|
-
<span class="cstat-no" title="statement not covered" > command.trim().startsWith("security find-generic-password ")</span>
|
|
695
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
696
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
697
|
-
<span class="cstat-no" title="statement not covered" > console.log("🔀 Intercepted execSync call:", command);</span>
|
|
698
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
699
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
700
|
-
<span class="cstat-no" title="statement not covered" > // Check if CLAUDE_CREDENTIALS is set</span>
|
|
701
|
-
<span class="cstat-no" title="statement not covered" > const credentials = process.env.CLAUDE_CREDENTIALS;</span>
|
|
702
|
-
<span class="cstat-no" title="statement not covered" > if (credentials) {</span>
|
|
703
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
704
|
-
<span class="cstat-no" title="statement not covered" > console.log("🔐 Reading credentials from CLAUDE_CREDENTIALS env var");</span>
|
|
705
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
706
|
-
<span class="cstat-no" title="statement not covered" > // Return credentials directly as buffer</span>
|
|
707
|
-
<span class="cstat-no" title="statement not covered" > return Buffer.from(credentials);</span>
|
|
708
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
709
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
710
|
-
<span class="cstat-no" title="statement not covered" > console.log("⚠️ CLAUDE_CREDENTIALS not set, returning empty buffer");</span>
|
|
711
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
712
|
-
<span class="cstat-no" title="statement not covered" > // Return empty buffer to mimic successful execution</span>
|
|
713
|
-
<span class="cstat-no" title="statement not covered" > return Buffer.from("");</span>
|
|
714
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
715
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
716
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
717
|
-
<span class="cstat-no" title="statement not covered" > // Check if command starts with "security "</span>
|
|
718
|
-
<span class="cstat-no" title="statement not covered" > if (typeof command === "string" && command.trim().startsWith("security ")) {</span>
|
|
719
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
720
|
-
<span class="cstat-no" title="statement not covered" > console.log("🚫 Blocked execSync call:", command);</span>
|
|
721
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
722
|
-
<span class="cstat-no" title="statement not covered" > // Return empty buffer to mimic successful execution</span>
|
|
723
|
-
<span class="cstat-no" title="statement not covered" > return Buffer.from("");</span>
|
|
724
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
725
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
726
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
727
|
-
<span class="cstat-no" title="statement not covered" > console.log("🔧 Allowed execSync call:", command);</span>
|
|
728
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
729
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
730
|
-
<span class="cstat-no" title="statement not covered" > return originalExecSync.apply(this, arguments);</span>
|
|
731
|
-
<span class="cstat-no" title="statement not covered" >};</span>
|
|
732
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
733
|
-
<span class="cstat-no" title="statement not covered" >// === macOS Security Commands Patching ===</span>
|
|
734
|
-
<span class="cstat-no" title="statement not covered" >const originalSpawnSync = childProcess.spawnSync;</span>
|
|
735
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
736
|
-
<span class="cstat-no" title="statement not covered" >// Helper function to create spawnSync return format</span>
|
|
737
|
-
<span class="cstat-no" title="statement not covered" >function createSpawnSyncResult(stdout = "", stderr = "", status = 0) {</span>
|
|
738
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
739
|
-
<span class="cstat-no" title="statement not covered" > pid: 0,</span>
|
|
740
|
-
<span class="cstat-no" title="statement not covered" > output: [null, stdout, stderr],</span>
|
|
741
|
-
<span class="cstat-no" title="statement not covered" > stdout: stdout,</span>
|
|
742
|
-
<span class="cstat-no" title="statement not covered" > stderr: stderr,</span>
|
|
743
|
-
<span class="cstat-no" title="statement not covered" > status: status,</span>
|
|
744
|
-
<span class="cstat-no" title="statement not covered" > signal: null,</span>
|
|
745
|
-
<span class="cstat-no" title="statement not covered" > error: null,</span>
|
|
746
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
747
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
748
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
749
|
-
<span class="cstat-no" title="statement not covered" >childProcess.spawnSync = function (command) {</span>
|
|
750
|
-
<span class="cstat-no" title="statement not covered" > // Check if command starts with "security "</span>
|
|
751
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
752
|
-
<span class="cstat-no" title="statement not covered" > typeof command === "string" &&</span>
|
|
753
|
-
<span class="cstat-no" title="statement not covered" > command.trim().startsWith("security find-generic-password ")</span>
|
|
754
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
755
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
756
|
-
<span class="cstat-no" title="statement not covered" > console.log("🔀 Intercepted spawnSync call:", command);</span>
|
|
757
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
758
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
759
|
-
<span class="cstat-no" title="statement not covered" > // Check if CLAUDE_CREDENTIALS is set</span>
|
|
760
|
-
<span class="cstat-no" title="statement not covered" > const credentials = process.env.CLAUDE_CREDENTIALS;</span>
|
|
761
|
-
<span class="cstat-no" title="statement not covered" > if (credentials) {</span>
|
|
762
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
763
|
-
<span class="cstat-no" title="statement not covered" > console.log("🔐 Reading credentials from CLAUDE_CREDENTIALS env var");</span>
|
|
764
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
765
|
-
<span class="cstat-no" title="statement not covered" > // Return credentials directly in spawnSync format</span>
|
|
766
|
-
<span class="cstat-no" title="statement not covered" > return createSpawnSyncResult(credentials);</span>
|
|
767
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
768
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
769
|
-
<span class="cstat-no" title="statement not covered" > console.log("⚠️ CLAUDE_CREDENTIALS not set, returning empty result");</span>
|
|
770
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
771
|
-
<span class="cstat-no" title="statement not covered" > // Return empty result to mimic successful execution</span>
|
|
772
|
-
<span class="cstat-no" title="statement not covered" > return createSpawnSyncResult();</span>
|
|
773
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
774
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
775
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
776
|
-
<span class="cstat-no" title="statement not covered" > // Check if command starts with "security "</span>
|
|
777
|
-
<span class="cstat-no" title="statement not covered" > if (typeof command === "string" && command.trim().startsWith("security ")) {</span>
|
|
778
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
779
|
-
<span class="cstat-no" title="statement not covered" > console.log("🚫 Blocked spawnSync call:", command);</span>
|
|
780
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
781
|
-
<span class="cstat-no" title="statement not covered" > // Return empty result to mimic successful execution</span>
|
|
782
|
-
<span class="cstat-no" title="statement not covered" > return createSpawnSyncResult();</span>
|
|
783
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
784
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
785
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
786
|
-
<span class="cstat-no" title="statement not covered" > console.log("🔧 Allowed spawnSync call:", command);</span>
|
|
787
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
788
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
789
|
-
<span class="cstat-no" title="statement not covered" > return originalSpawnSync.apply(this, arguments);</span>
|
|
790
|
-
<span class="cstat-no" title="statement not covered" >};</span>
|
|
791
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
792
|
-
<span class="cstat-no" title="statement not covered" >// === Windows/Linux Credential File Support ===</span>
|
|
793
|
-
<span class="cstat-no" title="statement not covered" >if (process.platform !== "darwin") {</span>
|
|
794
|
-
<span class="cstat-no" title="statement not covered" > const originalExistsSync = fs.existsSync;</span>
|
|
795
|
-
<span class="cstat-no" title="statement not covered" > const originalReadFileSync = fs.readFileSync;</span>
|
|
796
|
-
<span class="cstat-no" title="statement not covered" > const originalWriteFileSync = fs.writeFileSync;</span>
|
|
797
|
-
<span class="cstat-no" title="statement not covered" > const originalUnlinkSync = fs.unlinkSync;</span>
|
|
798
|
-
<span class="cstat-no" title="statement not covered" > const originalChmodSync = fs.chmodSync;</span>
|
|
799
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
800
|
-
<span class="cstat-no" title="statement not covered" > // Hook fs.existsSync to handle credential files</span>
|
|
801
|
-
<span class="cstat-no" title="statement not covered" > fs.existsSync = function (filePath) {</span>
|
|
802
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
803
|
-
<span class="cstat-no" title="statement not covered" > typeof filePath === "string" &&</span>
|
|
804
|
-
<span class="cstat-no" title="statement not covered" > filePath.endsWith(".credentials.json")</span>
|
|
805
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
806
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
807
|
-
<span class="cstat-no" title="statement not covered" > console.log("✅ Mocking existsSync for credentials file:", filePath);</span>
|
|
808
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
809
|
-
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
810
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
811
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
812
|
-
<span class="cstat-no" title="statement not covered" > return originalExistsSync.apply(this, arguments);</span>
|
|
813
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
814
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
815
|
-
<span class="cstat-no" title="statement not covered" > // Hook fs.readFileSync to handle credential files</span>
|
|
816
|
-
<span class="cstat-no" title="statement not covered" > fs.readFileSync = function (filePath, options) {</span>
|
|
817
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
818
|
-
<span class="cstat-no" title="statement not covered" > typeof filePath === "string" &&</span>
|
|
819
|
-
<span class="cstat-no" title="statement not covered" > filePath.endsWith(".credentials.json")</span>
|
|
820
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
821
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
822
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
823
|
-
<span class="cstat-no" title="statement not covered" > "🔀 Intercepted readFileSync for credentials file:",</span>
|
|
824
|
-
<span class="cstat-no" title="statement not covered" > filePath</span>
|
|
825
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
826
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
827
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
828
|
-
<span class="cstat-no" title="statement not covered" > // Check if CLAUDE_CREDENTIALS is set</span>
|
|
829
|
-
<span class="cstat-no" title="statement not covered" > const credentialsData = process.env.CLAUDE_CREDENTIALS;</span>
|
|
830
|
-
<span class="cstat-no" title="statement not covered" > if (credentialsData) {</span>
|
|
831
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
832
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
833
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
834
|
-
<span class="cstat-no" title="statement not covered" > "🔐 Reading credentials from CLAUDE_CREDENTIALS env var"</span>
|
|
835
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
836
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
837
|
-
<span class="cstat-no" title="statement not covered" > // Parse credentials as JSON</span>
|
|
838
|
-
<span class="cstat-no" title="statement not covered" > const credentials = JSON.parse(credentialsData);</span>
|
|
839
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
840
|
-
<span class="cstat-no" title="statement not covered" > // Replace refreshToken with empty string</span>
|
|
841
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
842
|
-
<span class="cstat-no" title="statement not covered" > credentials.claudeAiOauth &&</span>
|
|
843
|
-
<span class="cstat-no" title="statement not covered" > credentials.claudeAiOauth.refreshToken</span>
|
|
844
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
845
|
-
<span class="cstat-no" title="statement not covered" > credentials.claudeAiOauth.refreshToken = "";</span>
|
|
846
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
847
|
-
<span class="cstat-no" title="statement not covered" > console.log("🔐 Replaced refreshToken with empty string");</span>
|
|
848
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
849
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
850
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
851
|
-
<span class="cstat-no" title="statement not covered" > // Return as string or buffer depending on options</span>
|
|
852
|
-
<span class="cstat-no" title="statement not covered" > const result = JSON.stringify(credentials);</span>
|
|
853
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
854
|
-
<span class="cstat-no" title="statement not covered" > // TEMPORARY DEBUG: Log full credentials string being returned</span>
|
|
855
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
856
|
-
<span class="cstat-no" title="statement not covered" > "🔍 TEMP DEBUG - Full credentials string being returned:"</span>
|
|
857
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
858
|
-
<span class="cstat-no" title="statement not covered" > console.log(result);</span>
|
|
859
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
860
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
861
|
-
<span class="cstat-no" title="statement not covered" > options &&</span>
|
|
862
|
-
<span class="cstat-no" title="statement not covered" > typeof options === "object" &&</span>
|
|
863
|
-
<span class="cstat-no" title="statement not covered" > options.encoding === null</span>
|
|
864
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
865
|
-
<span class="cstat-no" title="statement not covered" > return Buffer.from(result);</span>
|
|
866
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
867
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
868
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
869
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
870
|
-
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
871
|
-
<span class="cstat-no" title="statement not covered" > "❌ Error parsing credentials from env var:",</span>
|
|
872
|
-
<span class="cstat-no" title="statement not covered" > error.message</span>
|
|
873
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
874
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
875
|
-
<span class="cstat-no" title="statement not covered" > // Fall back to empty string if credentials can't be parsed</span>
|
|
876
|
-
<span class="cstat-no" title="statement not covered" > return "";</span>
|
|
877
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
878
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
879
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
880
|
-
<span class="cstat-no" title="statement not covered" > console.log("⚠️ CLAUDE_CREDENTIALS not set, returning empty string");</span>
|
|
881
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
882
|
-
<span class="cstat-no" title="statement not covered" > // Return empty string to mimic file not found</span>
|
|
883
|
-
<span class="cstat-no" title="statement not covered" > return "";</span>
|
|
884
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
885
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
886
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
887
|
-
<span class="cstat-no" title="statement not covered" > return originalReadFileSync.apply(this, arguments);</span>
|
|
888
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
889
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
890
|
-
<span class="cstat-no" title="statement not covered" > // Hook fs.writeFileSync to be a no-op for credential files</span>
|
|
891
|
-
<span class="cstat-no" title="statement not covered" > fs.writeFileSync = function (filePath, data, options) {</span>
|
|
892
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
893
|
-
<span class="cstat-no" title="statement not covered" > typeof filePath === "string" &&</span>
|
|
894
|
-
<span class="cstat-no" title="statement not covered" > filePath.endsWith(".credentials.json")</span>
|
|
895
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
896
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
897
|
-
<span class="cstat-no" title="statement not covered" > console.log("🚫 Blocked writeFileSync for credentials file:", filePath);</span>
|
|
898
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
899
|
-
<span class="cstat-no" title="statement not covered" > // No-op - do nothing</span>
|
|
900
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
901
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
902
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
903
|
-
<span class="cstat-no" title="statement not covered" > return originalWriteFileSync.apply(this, arguments);</span>
|
|
904
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
905
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
906
|
-
<span class="cstat-no" title="statement not covered" > // Hook fs.unlinkSync to be a no-op for credential files</span>
|
|
907
|
-
<span class="cstat-no" title="statement not covered" > fs.unlinkSync = function (filePath) {</span>
|
|
908
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
909
|
-
<span class="cstat-no" title="statement not covered" > typeof filePath === "string" &&</span>
|
|
910
|
-
<span class="cstat-no" title="statement not covered" > filePath.endsWith(".credentials.json")</span>
|
|
911
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
912
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
913
|
-
<span class="cstat-no" title="statement not covered" > console.log("🚫 Blocked unlinkSync for credentials file:", filePath);</span>
|
|
914
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
915
|
-
<span class="cstat-no" title="statement not covered" > // No-op - do nothing</span>
|
|
916
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
917
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
918
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
919
|
-
<span class="cstat-no" title="statement not covered" > return originalUnlinkSync.apply(this, arguments);</span>
|
|
920
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
921
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
922
|
-
<span class="cstat-no" title="statement not covered" > // Hook fs.chmodSync to be a no-op for credential files</span>
|
|
923
|
-
<span class="cstat-no" title="statement not covered" > fs.chmodSync = function (filePath, mode) {</span>
|
|
924
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
925
|
-
<span class="cstat-no" title="statement not covered" > typeof filePath === "string" &&</span>
|
|
926
|
-
<span class="cstat-no" title="statement not covered" > filePath.endsWith(".credentials.json")</span>
|
|
927
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
928
|
-
<span class="cstat-no" title="statement not covered" > if (loggingEnabled) {</span>
|
|
929
|
-
<span class="cstat-no" title="statement not covered" > console.log("🚫 Blocked chmodSync for credentials file:", filePath);</span>
|
|
930
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
931
|
-
<span class="cstat-no" title="statement not covered" > // No-op - do nothing</span>
|
|
932
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
933
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
934
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
935
|
-
<span class="cstat-no" title="statement not covered" > return originalChmodSync.apply(this, arguments);</span>
|
|
936
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
937
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
938
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
939
|
-
<span class="cstat-no" title="statement not covered" >if (loggingEnabled) {</span>
|
|
940
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
941
|
-
<span class="cstat-no" title="statement not covered" > "✅ Preload script loaded with platform support:",</span>
|
|
942
|
-
<span class="cstat-no" title="statement not covered" > process.platform</span>
|
|
943
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
944
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
945
|
-
</pre></td></tr></table></pre>
|
|
946
|
-
|
|
947
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
948
|
-
</div><!-- /wrapper -->
|
|
949
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
950
|
-
Code coverage generated by
|
|
951
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
952
|
-
at 2025-08-14T21:15:54.473Z
|
|
953
|
-
</div>
|
|
954
|
-
<script src="../prettify.js"></script>
|
|
955
|
-
<script>
|
|
956
|
-
window.onload = function () {
|
|
957
|
-
prettyPrint();
|
|
958
|
-
};
|
|
959
|
-
</script>
|
|
960
|
-
<script src="../sorter.js"></script>
|
|
961
|
-
<script src="../block-navigation.js"></script>
|
|
962
|
-
</body>
|
|
963
|
-
</html>
|
|
964
|
-
|