@sebbo2002/node-pyatv 6.0.0-develop.2 → 6.0.0

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.
Files changed (120) hide show
  1. package/dist/bin/check.cjs +10 -0
  2. package/dist/bin/check.cjs.map +1 -0
  3. package/dist/bin/check.d.ts +2 -1
  4. package/dist/bin/check.js +4 -45
  5. package/dist/bin/check.js.map +1 -1
  6. package/dist/chunk-TZSWUAOB.js +7 -0
  7. package/dist/chunk-TZSWUAOB.js.map +1 -0
  8. package/dist/lib/index.cjs +7 -0
  9. package/dist/lib/index.cjs.map +1 -0
  10. package/dist/lib/{device.d.ts → index.d.cts} +340 -4
  11. package/dist/lib/index.d.ts +806 -6
  12. package/dist/lib/index.js +1 -7
  13. package/dist/lib/index.js.map +1 -1
  14. package/package.json +18 -9
  15. package/.editorconfig +0 -12
  16. package/.eslintignore +0 -4
  17. package/.eslintrc +0 -60
  18. package/.mocharc.yml +0 -7
  19. package/.nycrc +0 -32
  20. package/CHANGELOG.md +0 -295
  21. package/check.sh +0 -5
  22. package/dist/examples/push.d.ts +0 -1
  23. package/dist/examples/push.js +0 -51
  24. package/dist/examples/push.js.map +0 -1
  25. package/dist/lib/device-event.d.ts +0 -44
  26. package/dist/lib/device-event.js +0 -47
  27. package/dist/lib/device-event.js.map +0 -1
  28. package/dist/lib/device-events.d.ts +0 -30
  29. package/dist/lib/device-events.js +0 -237
  30. package/dist/lib/device-events.js.map +0 -1
  31. package/dist/lib/device.js +0 -793
  32. package/dist/lib/device.js.map +0 -1
  33. package/dist/lib/fake-spawn.d.ts +0 -43
  34. package/dist/lib/fake-spawn.js +0 -85
  35. package/dist/lib/fake-spawn.js.map +0 -1
  36. package/dist/lib/instance.d.ts +0 -97
  37. package/dist/lib/instance.js +0 -208
  38. package/dist/lib/instance.js.map +0 -1
  39. package/dist/lib/tools.d.ts +0 -12
  40. package/dist/lib/tools.js +0 -319
  41. package/dist/lib/tools.js.map +0 -1
  42. package/dist/lib/types.d.ts +0 -204
  43. package/dist/lib/types.js +0 -108
  44. package/dist/lib/types.js.map +0 -1
  45. package/docs/coverage/base.css +0 -224
  46. package/docs/coverage/block-navigation.js +0 -87
  47. package/docs/coverage/cobertura-coverage.xml +0 -2889
  48. package/docs/coverage/device-event.ts.html +0 -256
  49. package/docs/coverage/device-events.ts.html +0 -970
  50. package/docs/coverage/device.ts.html +0 -2518
  51. package/docs/coverage/fake-spawn.ts.html +0 -448
  52. package/docs/coverage/favicon.png +0 -0
  53. package/docs/coverage/index.html +0 -221
  54. package/docs/coverage/index.ts.html +0 -172
  55. package/docs/coverage/instance.ts.html +0 -718
  56. package/docs/coverage/prettify.css +0 -1
  57. package/docs/coverage/prettify.js +0 -2
  58. package/docs/coverage/sort-arrow-sprite.png +0 -0
  59. package/docs/coverage/sorter.js +0 -196
  60. package/docs/coverage/tools.ts.html +0 -1222
  61. package/docs/coverage/types.ts.html +0 -775
  62. package/docs/reference/.nojekyll +0 -1
  63. package/docs/reference/assets/highlight.css +0 -99
  64. package/docs/reference/assets/main.js +0 -58
  65. package/docs/reference/assets/search.js +0 -1
  66. package/docs/reference/assets/style.css +0 -1280
  67. package/docs/reference/classes/NodePyATVDevice.html +0 -1266
  68. package/docs/reference/classes/NodePyATVDeviceEvent.html +0 -123
  69. package/docs/reference/classes/NodePyATVInstance.html +0 -240
  70. package/docs/reference/enums/NodePyATVDeviceState.html +0 -97
  71. package/docs/reference/enums/NodePyATVExecutableType.html +0 -69
  72. package/docs/reference/enums/NodePyATVKeys.html +0 -216
  73. package/docs/reference/enums/NodePyATVListenerState.html +0 -83
  74. package/docs/reference/enums/NodePyATVMediaType.html +0 -83
  75. package/docs/reference/enums/NodePyATVPowerState.html +0 -69
  76. package/docs/reference/enums/NodePyATVProtocol.html +0 -83
  77. package/docs/reference/enums/NodePyATVRepeatState.html +0 -76
  78. package/docs/reference/enums/NodePyATVShuffleState.html +0 -76
  79. package/docs/reference/index.html +0 -139
  80. package/docs/reference/interfaces/NodePyATVDeviceOptions.html +0 -232
  81. package/docs/reference/interfaces/NodePyATVFindAndInstanceOptions.html +0 -193
  82. package/docs/reference/interfaces/NodePyATVFindOptions.html +0 -124
  83. package/docs/reference/interfaces/NodePyATVGetStateOptions.html +0 -66
  84. package/docs/reference/interfaces/NodePyATVInstanceOptions.html +0 -113
  85. package/docs/reference/interfaces/NodePyATVService.html +0 -73
  86. package/docs/reference/interfaces/NodePyATVState.html +0 -164
  87. package/docs/reference/interfaces/NodePyATVVersionResponse.html +0 -73
  88. package/docs/reference/modules.html +0 -106
  89. package/docs/reference/types/NodePyATVEventValueType.html +0 -66
  90. package/docs/tests/assets/MaterialIcons-Regular.woff +0 -0
  91. package/docs/tests/assets/MaterialIcons-Regular.woff2 +0 -0
  92. package/docs/tests/assets/app.css +0 -14
  93. package/docs/tests/assets/app.js +0 -2
  94. package/docs/tests/assets/app.js.LICENSE.txt +0 -55
  95. package/docs/tests/assets/roboto-light-webfont.woff +0 -0
  96. package/docs/tests/assets/roboto-light-webfont.woff2 +0 -0
  97. package/docs/tests/assets/roboto-medium-webfont.woff +0 -0
  98. package/docs/tests/assets/roboto-medium-webfont.woff2 +0 -0
  99. package/docs/tests/assets/roboto-regular-webfont.woff +0 -0
  100. package/docs/tests/assets/roboto-regular-webfont.woff2 +0 -0
  101. package/docs/tests/index.html +0 -2
  102. package/docs/tests/mochawesome.json +0 -4823
  103. package/release.config.cjs +0 -51
  104. package/src/bin/check.ts +0 -41
  105. package/src/examples/push.ts +0 -46
  106. package/src/lib/device-event.ts +0 -57
  107. package/src/lib/device-events.ts +0 -295
  108. package/src/lib/device.ts +0 -811
  109. package/src/lib/fake-spawn.ts +0 -121
  110. package/src/lib/index.ts +0 -29
  111. package/src/lib/instance.ts +0 -211
  112. package/src/lib/tools.ts +0 -379
  113. package/src/lib/types.ts +0 -230
  114. package/test/device-event.ts +0 -88
  115. package/test/device-events.ts +0 -502
  116. package/test/device.ts +0 -826
  117. package/test/instance.ts +0 -428
  118. package/test/tools.ts +0 -301
  119. package/tsconfig.json +0 -19
  120. package/typedoc.json +0 -15
@@ -1,970 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for device-events.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> device-events.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">93.89% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>277/295</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">90.16% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>55/61</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'>19/19</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">93.89% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>277/295</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>
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>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
362
- <span class="cline-any cline-yes">1x</span>
363
- <span class="cline-any cline-yes">1x</span>
364
- <span class="cline-any cline-yes">1x</span>
365
- <span class="cline-any cline-yes">1x</span>
366
- <span class="cline-any cline-yes">1x</span>
367
- <span class="cline-any cline-yes">1x</span>
368
- <span class="cline-any cline-yes">1x</span>
369
- <span class="cline-any cline-yes">1x</span>
370
- <span class="cline-any cline-yes">1x</span>
371
- <span class="cline-any cline-yes">1x</span>
372
- <span class="cline-any cline-yes">1x</span>
373
- <span class="cline-any cline-yes">1x</span>
374
- <span class="cline-any cline-yes">1x</span>
375
- <span class="cline-any cline-yes">1x</span>
376
- <span class="cline-any cline-yes">1x</span>
377
- <span class="cline-any cline-yes">1x</span>
378
- <span class="cline-any cline-yes">1x</span>
379
- <span class="cline-any cline-yes">1x</span>
380
- <span class="cline-any cline-yes">1x</span>
381
- <span class="cline-any cline-yes">1x</span>
382
- <span class="cline-any cline-yes">1x</span>
383
- <span class="cline-any cline-yes">1x</span>
384
- <span class="cline-any cline-yes">1x</span>
385
- <span class="cline-any cline-yes">1x</span>
386
- <span class="cline-any cline-yes">1x</span>
387
- <span class="cline-any cline-yes">1x</span>
388
- <span class="cline-any cline-yes">1x</span>
389
- <span class="cline-any cline-yes">1x</span>
390
- <span class="cline-any cline-yes">101x</span>
391
- <span class="cline-any cline-yes">101x</span>
392
- <span class="cline-any cline-yes">101x</span>
393
- <span class="cline-any cline-yes">101x</span>
394
- <span class="cline-any cline-yes">101x</span>
395
- <span class="cline-any cline-yes">101x</span>
396
- <span class="cline-any cline-yes">101x</span>
397
- <span class="cline-any cline-yes">1x</span>
398
- <span class="cline-any cline-yes">1x</span>
399
- <span class="cline-any cline-yes">31x</span>
400
- <span class="cline-any cline-yes">465x</span>
401
- <span class="cline-any cline-yes">465x</span>
402
- <span class="cline-any cline-yes">465x</span>
403
- <span class="cline-any cline-yes">465x</span>
404
- <span class="cline-any cline-yes">465x</span>
405
- <span class="cline-any cline-yes">465x</span>
406
- <span class="cline-any cline-yes">465x</span>
407
- <span class="cline-any cline-yes">465x</span>
408
- <span class="cline-any cline-yes">401x</span>
409
- <span class="cline-any cline-yes">401x</span>
410
- <span class="cline-any cline-yes">64x</span>
411
- <span class="cline-any cline-yes">64x</span>
412
- <span class="cline-any cline-yes">64x</span>
413
- <span class="cline-any cline-yes">64x</span>
414
- <span class="cline-any cline-yes">64x</span>
415
- <span class="cline-any cline-yes">64x</span>
416
- <span class="cline-any cline-yes">64x</span>
417
- <span class="cline-any cline-yes">64x</span>
418
- <span class="cline-any cline-yes">64x</span>
419
- <span class="cline-any cline-yes">64x</span>
420
- <span class="cline-any cline-yes">64x</span>
421
- <span class="cline-any cline-yes">64x</span>
422
- <span class="cline-any cline-yes">64x</span>
423
- <span class="cline-any cline-yes">64x</span>
424
- <span class="cline-any cline-yes">64x</span>
425
- <span class="cline-any cline-yes">465x</span>
426
- <span class="cline-any cline-yes">1x</span>
427
- <span class="cline-any cline-yes">1x</span>
428
- <span class="cline-any cline-yes">31x</span>
429
- <span class="cline-any cline-yes">31x</span>
430
- <span class="cline-any cline-yes">1x</span>
431
- <span class="cline-any cline-yes">1x</span>
432
- <span class="cline-any cline-yes">12x</span>
433
- <span class="cline-any cline-yes">12x</span>
434
- <span class="cline-any cline-yes">12x</span>
435
- <span class="cline-any cline-yes">12x</span>
436
- <span class="cline-any cline-yes">12x</span>
437
- <span class="cline-any cline-yes">12x</span>
438
- <span class="cline-any cline-yes">1x</span>
439
- <span class="cline-any cline-yes">1x</span>
440
- <span class="cline-any cline-yes">1x</span>
441
- <span class="cline-any cline-yes">1x</span>
442
- <span class="cline-any cline-yes">1x</span>
443
- <span class="cline-any cline-yes">11x</span>
444
- <span class="cline-any cline-yes">11x</span>
445
- <span class="cline-any cline-yes">11x</span>
446
- <span class="cline-any cline-yes">12x</span>
447
- <span class="cline-any cline-yes">2x</span>
448
- <span class="cline-any cline-yes">2x</span>
449
- <span class="cline-any cline-yes">2x</span>
450
- <span class="cline-any cline-yes">12x</span>
451
- <span class="cline-any cline-yes">1x</span>
452
- <span class="cline-any cline-yes">1x</span>
453
- <span class="cline-any cline-yes">11x</span>
454
- <span class="cline-any cline-yes">11x</span>
455
- <span class="cline-any cline-yes">11x</span>
456
- <span class="cline-any cline-yes">11x</span>
457
- <span class="cline-any cline-yes">11x</span>
458
- <span class="cline-any cline-yes">1x</span>
459
- <span class="cline-any cline-yes">1x</span>
460
- <span class="cline-any cline-yes">11x</span>
461
- <span class="cline-any cline-yes">1x</span>
462
- <span class="cline-any cline-yes">1x</span>
463
- <span class="cline-any cline-yes">72x</span>
464
- <span class="cline-any cline-yes">9x</span>
465
- <span class="cline-any cline-yes">9x</span>
466
- <span class="cline-any cline-yes">9x</span>
467
- <span class="cline-any cline-yes">63x</span>
468
- <span class="cline-any cline-yes">19x</span>
469
- <span class="cline-any cline-yes">19x</span>
470
- <span class="cline-any cline-yes">19x</span>
471
- <span class="cline-any cline-yes">19x</span>
472
- <span class="cline-any cline-yes">19x</span>
473
- <span class="cline-any cline-yes">19x</span>
474
- <span class="cline-any cline-yes">44x</span>
475
- <span class="cline-any cline-yes">44x</span>
476
- <span class="cline-any cline-yes">39x</span>
477
- <span class="cline-any cline-yes">44x</span>
478
- <span class="cline-any cline-yes">16x</span>
479
- <span class="cline-any cline-yes">16x</span>
480
- <span class="cline-any cline-yes">16x</span>
481
- <span class="cline-any cline-yes">16x</span>
482
- <span class="cline-any cline-yes">16x</span>
483
- <span class="cline-any cline-yes">16x</span>
484
- <span class="cline-any cline-yes">16x</span>
485
- <span class="cline-any cline-yes">72x</span>
486
- <span class="cline-any cline-yes">1x</span>
487
- <span class="cline-any cline-yes">1x</span>
488
- <span class="cline-any cline-yes">19x</span>
489
- <span class="cline-any cline-no">&nbsp;</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-yes">19x</span>
492
- <span class="cline-any cline-yes">19x</span>
493
- <span class="cline-any cline-yes">19x</span>
494
- <span class="cline-any cline-yes">19x</span>
495
- <span class="cline-any cline-yes">19x</span>
496
- <span class="cline-any cline-yes">19x</span>
497
- <span class="cline-any cline-yes">19x</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
499
- <span class="cline-any cline-no">&nbsp;</span>
500
- <span class="cline-any cline-yes">19x</span>
501
- <span class="cline-any cline-yes">19x</span>
502
- <span class="cline-any cline-yes">1x</span>
503
- <span class="cline-any cline-yes">1x</span>
504
- <span class="cline-any cline-yes">19x</span>
505
- <span class="cline-any cline-yes">19x</span>
506
- <span class="cline-any cline-yes">19x</span>
507
- <span class="cline-any cline-yes">19x</span>
508
- <span class="cline-any cline-yes">1x</span>
509
- <span class="cline-any cline-yes">1x</span>
510
- <span class="cline-any cline-yes">1x</span>
511
- <span class="cline-any cline-yes">19x</span>
512
- <span class="cline-any cline-yes">19x</span>
513
- <span class="cline-any cline-yes">19x</span>
514
- <span class="cline-any cline-yes">19x</span>
515
- <span class="cline-any cline-yes">12x</span>
516
- <span class="cline-any cline-yes">12x</span>
517
- <span class="cline-any cline-yes">12x</span>
518
- <span class="cline-any cline-yes">12x</span>
519
- <span class="cline-any cline-yes">12x</span>
520
- <span class="cline-any cline-yes">19x</span>
521
- <span class="cline-any cline-yes">19x</span>
522
- <span class="cline-any cline-yes">19x</span>
523
- <span class="cline-any cline-no">&nbsp;</span>
524
- <span class="cline-any cline-no">&nbsp;</span>
525
- <span class="cline-any cline-no">&nbsp;</span>
526
- <span class="cline-any cline-yes">19x</span>
527
- <span class="cline-any cline-yes">19x</span>
528
- <span class="cline-any cline-yes">19x</span>
529
- <span class="cline-any cline-yes">19x</span>
530
- <span class="cline-any cline-yes">7x</span>
531
- <span class="cline-any cline-yes">7x</span>
532
- <span class="cline-any cline-yes">7x</span>
533
- <span class="cline-any cline-yes">19x</span>
534
- <span class="cline-any cline-yes">19x</span>
535
- <span class="cline-any cline-yes">19x</span>
536
- <span class="cline-any cline-yes">19x</span>
537
- <span class="cline-any cline-yes">19x</span>
538
- <span class="cline-any cline-yes">19x</span>
539
- <span class="cline-any cline-yes">19x</span>
540
- <span class="cline-any cline-yes">19x</span>
541
- <span class="cline-any cline-yes">19x</span>
542
- <span class="cline-any cline-yes">19x</span>
543
- <span class="cline-any cline-yes">19x</span>
544
- <span class="cline-any cline-yes">19x</span>
545
- <span class="cline-any cline-yes">3x</span>
546
- <span class="cline-any cline-yes">3x</span>
547
- <span class="cline-any cline-yes">3x</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-yes">3x</span>
550
- <span class="cline-any cline-yes">3x</span>
551
- <span class="cline-any cline-yes">16x</span>
552
- <span class="cline-any cline-no">&nbsp;</span>
553
- <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-no">&nbsp;</span>
555
- <span class="cline-any cline-yes">19x</span>
556
- <span class="cline-any cline-yes">19x</span>
557
- <span class="cline-any cline-yes">19x</span>
558
- <span class="cline-any cline-yes">19x</span>
559
- <span class="cline-any cline-yes">19x</span>
560
- <span class="cline-any cline-yes">19x</span>
561
- <span class="cline-any cline-yes">19x</span>
562
- <span class="cline-any cline-yes">19x</span>
563
- <span class="cline-any cline-yes">19x</span>
564
- <span class="cline-any cline-yes">19x</span>
565
- <span class="cline-any cline-yes">19x</span>
566
- <span class="cline-any cline-yes">19x</span>
567
- <span class="cline-any cline-yes">19x</span>
568
- <span class="cline-any cline-yes">19x</span>
569
- <span class="cline-any cline-yes">1x</span>
570
- <span class="cline-any cline-yes">1x</span>
571
- <span class="cline-any cline-yes">16x</span>
572
- <span class="cline-any cline-yes">16x</span>
573
- <span class="cline-any cline-yes">2x</span>
574
- <span class="cline-any cline-yes">16x</span>
575
- <span class="cline-any cline-no">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-yes">16x</span>
578
- <span class="cline-any cline-yes">16x</span>
579
- <span class="cline-any cline-yes">16x</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-yes">16x</span>
586
- <span class="cline-any cline-yes">16x</span>
587
- <span class="cline-any cline-yes">16x</span>
588
- <span class="cline-any cline-yes">16x</span>
589
- <span class="cline-any cline-yes">16x</span>
590
- <span class="cline-any cline-yes">16x</span>
591
- <span class="cline-any cline-yes">10x</span>
592
- <span class="cline-any cline-yes">10x</span>
593
- <span class="cline-any cline-yes">16x</span>
594
- <span class="cline-any cline-yes">7x</span>
595
- <span class="cline-any cline-yes">7x</span>
596
- <span class="cline-any cline-yes">10x</span>
597
- <span class="cline-any cline-yes">10x</span>
598
- <span class="cline-any cline-yes">10x</span>
599
- <span class="cline-any cline-yes">10x</span>
600
- <span class="cline-any cline-yes">1x</span>
601
- <span class="cline-any cline-yes">1x</span>
602
- <span class="cline-any cline-yes">2x</span>
603
- <span class="cline-any cline-yes">2x</span>
604
- <span class="cline-any cline-yes">2x</span>
605
- <span class="cline-any cline-yes">2x</span>
606
- <span class="cline-any cline-yes">1x</span>
607
- <span class="cline-any cline-yes">1x</span>
608
- <span class="cline-any cline-yes">20x</span>
609
- <span class="cline-any cline-yes">20x</span>
610
- <span class="cline-any cline-yes">20x</span>
611
- <span class="cline-any cline-yes">20x</span>
612
- <span class="cline-any cline-yes">1x</span>
613
- <span class="cline-any cline-yes">1x</span>
614
- <span class="cline-any cline-yes">11x</span>
615
- <span class="cline-any cline-yes">11x</span>
616
- <span class="cline-any cline-yes">11x</span>
617
- <span class="cline-any cline-yes">11x</span>
618
- <span class="cline-any cline-yes">11x</span>
619
- <span class="cline-any cline-yes">11x</span>
620
- <span class="cline-any cline-yes">11x</span>
621
- <span class="cline-any cline-yes">1x</span>
622
- <span class="cline-any cline-yes">1x</span>
623
- <span class="cline-any cline-yes">2x</span>
624
- <span class="cline-any cline-yes">2x</span>
625
- <span class="cline-any cline-yes">2x</span>
626
- <span class="cline-any cline-yes">2x</span>
627
- <span class="cline-any cline-yes">1x</span>
628
- <span class="cline-any cline-yes">1x</span>
629
- <span class="cline-any cline-yes">9x</span>
630
- <span class="cline-any cline-yes">9x</span>
631
- <span class="cline-any cline-yes">9x</span>
632
- <span class="cline-any cline-yes">9x</span>
633
- <span class="cline-any cline-yes">1x</span>
634
- <span class="cline-any cline-yes">1x</span>
635
- <span class="cline-any cline-yes">2x</span>
636
- <span class="cline-any cline-yes">2x</span>
637
- <span class="cline-any cline-yes">2x</span>
638
- <span class="cline-any cline-yes">2x</span>
639
- <span class="cline-any cline-yes">1x</span>
640
- <span class="cline-any cline-yes">1x</span>
641
- <span class="cline-any cline-yes">13x</span>
642
- <span class="cline-any cline-yes">13x</span>
643
- <span class="cline-any cline-yes">13x</span>
644
- <span class="cline-any cline-yes">13x</span>
645
- <span class="cline-any cline-yes">1x</span>
646
- <span class="cline-any cline-yes">1x</span>
647
- <span class="cline-any cline-yes">211x</span>
648
- <span class="cline-any cline-yes">82x</span>
649
- <span class="cline-any cline-yes">82x</span>
650
- <span class="cline-any cline-yes">129x</span>
651
- <span class="cline-any cline-yes">129x</span>
652
- <span class="cline-any cline-yes">129x</span>
653
- <span class="cline-any cline-yes">129x</span>
654
- <span class="cline-any cline-yes">129x</span>
655
- <span class="cline-any cline-yes">1x</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
657
- &nbsp;
658
- import {
659
- NodePyATVDeviceOptions,
660
- NodePyATVExecutableType,
661
- NodePyATVInternalState,
662
- NodePyATVListenerState,
663
- NodePyATVState,
664
- NodePyATVStateIndex
665
- } from './types.js';
666
- import {ChildProcess} from 'child_process';
667
- &nbsp;
668
- import {EventEmitter} from 'events';
669
- import {NodePyATVDevice, NodePyATVDeviceEvent} from '../lib/index.js';
670
- import {addRequestId, debug, execute, getParamters, parseState, removeRequestId} from './tools.js';
671
- import {FakeChildProcess} from './fake-spawn.js';
672
- &nbsp;
673
- /**
674
- * @internal
675
- */
676
- export default class NodePyATVDeviceEvents extends EventEmitter {
677
- private readonly options: NodePyATVDeviceOptions;
678
- private readonly state: NodePyATVState;
679
- private readonly device: NodePyATVDevice;
680
- private pyatv: ChildProcess | FakeChildProcess | undefined;
681
- private timeout: NodeJS.Timeout | undefined;
682
- private listenerState: NodePyATVListenerState;
683
- &nbsp;
684
- constructor(state: NodePyATVState, device: NodePyATVDevice, options: NodePyATVDeviceOptions) {
685
- super();
686
- &nbsp;
687
- this.state = state;
688
- this.device = device;
689
- this.options = Object.assign({}, options);
690
- this.listenerState = NodePyATVListenerState.stopped;
691
- }
692
- &nbsp;
693
- applyStateAndEmitEvents(newState: NodePyATVState): void {
694
- Object.keys(this.state).forEach((key: string) =&gt; {
695
- &nbsp;
696
- // @ts-ignore
697
- const oldValue = this.state[key];
698
- &nbsp;
699
- // @ts-ignore
700
- const newValue = newState[key];
701
- &nbsp;
702
- if(oldValue === undefined || newValue === undefined || oldValue === newValue) {
703
- return;
704
- }
705
- &nbsp;
706
- const event = new NodePyATVDeviceEvent({
707
- key: key as NodePyATVStateIndex,
708
- old: oldValue,
709
- new: newValue,
710
- device: this.device
711
- });
712
- &nbsp;
713
- // @ts-ignore
714
- this.state[key] = newState[key];
715
- &nbsp;
716
- try {
717
- this.emit('update:' + key, event);
718
- this.emit('update', event);
719
- }
720
- catch(error) {
721
- this.emit('error', error);
722
- }
723
- });
724
- }
725
- &nbsp;
726
- private parsePushUpdate(reqId: string, data: string): void {
727
- let json: NodePyATVInternalState;
728
- &nbsp;
729
- try {
730
- json = JSON.parse(data);
731
- }
732
- catch(error) {
733
- const msg = `Unable to parse stdout json: ${error}`;
734
- debug(reqId, msg, this.options);
735
- this.emit('error', new Error(msg));
736
- return;
737
- }
738
- &nbsp;
739
- this.applyPushUpdate(json, reqId);
740
- &nbsp;
741
- if(this.listenerState === NodePyATVListenerState.starting) {
742
- this.listenerState = NodePyATVListenerState.started;
743
- this.checkListener();
744
- }
745
- }
746
- &nbsp;
747
- private applyPushUpdate(update: NodePyATVInternalState, reqId: string): void {
748
- try {
749
- const newState = parseState(update, reqId, this.options);
750
- this.applyStateAndEmitEvents(newState);
751
- }
752
- catch(error) {
753
- this.emit('error', error);
754
- }
755
- }
756
- &nbsp;
757
- private checkListener(): void {
758
- if(this.listenerState === NodePyATVListenerState.stopped &amp;&amp; this.listenerCount() === 0 &amp;&amp; this.timeout) {
759
- clearTimeout(this.timeout);
760
- this.timeout = undefined;
761
- }
762
- else if(this.listenerState === NodePyATVListenerState.stopped &amp;&amp; this.listenerCount() &gt; 0) {
763
- const id = addRequestId();
764
- debug(id, `Start listeing to events from device ${this.options.name}`, this.options);
765
- &nbsp;
766
- this.startListening(id);
767
- removeRequestId(id);
768
- }
769
- else if(
770
- [NodePyATVListenerState.starting, NodePyATVListenerState.started].includes(this.listenerState) &amp;&amp;
771
- this.listenerCount() === 0
772
- ) {
773
- const id = addRequestId();
774
- debug(id, `Stop listening to events from device ${this.options.name}`, this.options);
775
- &nbsp;
776
- this.stopListening(id)
777
- .catch(error =&gt; debug(id, `Unable to stop listeing: ${error}`, this.options))
778
- .finally(() =&gt; removeRequestId(id));
779
- }
780
- }
781
- &nbsp;
782
- private startListening(reqId: string): void {
783
- if(this.listenerState !== NodePyATVListenerState.stopped) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
784
- <span class="cstat-no" title="statement not covered" > return;</span>
785
- <span class="cstat-no" title="statement not covered" > }</span>
786
- &nbsp;
787
- this.listenerState = NodePyATVListenerState.starting;
788
- &nbsp;
789
- const listenStart = new Date().getTime();
790
- const parameters = getParamters(this.options);
791
- this.pyatv = execute(reqId, NodePyATVExecutableType.atvscript, [...parameters, 'push_updates'], this.options);
792
- if(!this.pyatv) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
793
- <span class="cstat-no" title="statement not covered" > throw new Error('Unable to start listener: Unable to start atvscript');</span>
794
- <span class="cstat-no" title="statement not covered" > }</span>
795
- &nbsp;
796
- const onError = (error: Error) =&gt; {
797
- debug(reqId, `Got error from child process: ${error}`, this.options);
798
- this.emit('error', error);
799
- };
800
- &nbsp;
801
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
802
- const onStdErr = (data: any) =&gt; {
803
- const error = new Error(`Got stderr output from pyatv: ${data}`);
804
- debug(reqId, data.toString(), this.options);
805
- this.emit('error', error);
806
- };
807
- &nbsp;
808
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
809
- const onStdOut = (data: any) =&gt; {
810
- String(data)
811
- .split('\n')
812
- .map(s =&gt; s.trim())
813
- .filter(Boolean)
814
- .forEach(s =&gt; this.parsePushUpdate(reqId, s));
815
- };
816
- const onClose = (code: number) =&gt; {
817
- if(this.pyatv === undefined) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
818
- <span class="cstat-no" title="statement not covered" > // this should never happen… :/</span>
819
- <span class="cstat-no" title="statement not covered" > return;</span>
820
- <span class="cstat-no" title="statement not covered" > }</span>
821
- &nbsp;
822
- this.listenerState = NodePyATVListenerState.stopped;
823
- debug(reqId, `Listening with atvscript exited with code ${code}`, this.options);
824
- if(this.timeout !== undefined) {
825
- clearTimeout(this.timeout);
826
- this.timeout = undefined;
827
- }
828
- &nbsp;
829
- if (this.pyatv.stdout) {
830
- this.pyatv.stdout.off('data', onStdOut);
831
- }
832
- if (this.pyatv.stderr) {
833
- this.pyatv.stderr.off('data', onStdErr);
834
- }
835
- this.pyatv.off('error', onError);
836
- this.pyatv.off('close', onClose);
837
- &nbsp;
838
- &nbsp;
839
- if(this.listenerCount() &gt; 0 &amp;&amp; new Date().getTime() - listenStart &lt; 30000) {
840
- debug(reqId, `Wait 15s and restart listeing to events from device ${this.options.name}`, this.options);
841
- &nbsp;
842
- this.timeout = setTimeout(() =&gt; {
843
- <span class="cstat-no" title="statement not covered" > this.checkListener();</span>
844
- }, 15000);
845
- }
846
- else if(this.listenerCount() &gt; 0) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
847
- <span class="cstat-no" title="statement not covered" > debug(reqId, `Restart listeing to events from device ${this.options.name}`, this.options);</span>
848
- <span class="cstat-no" title="statement not covered" > this.checkListener();</span>
849
- <span class="cstat-no" title="statement not covered" > }</span>
850
- &nbsp;
851
- removeRequestId(reqId);
852
- };
853
- &nbsp;
854
- this.pyatv.on('error', onError);
855
- this.pyatv.on('close', onClose);
856
- &nbsp;
857
- if (this.pyatv.stdout) {
858
- this.pyatv.stdout.on('data', onStdOut);
859
- }
860
- if (this.pyatv.stderr) {
861
- this.pyatv.stderr.on('data', onStdErr);
862
- }
863
- }
864
- &nbsp;
865
- protected async stopListening(reqId: string): Promise&lt;void&gt; {
866
- if(
867
- this.listenerState !== NodePyATVListenerState.starting &amp;&amp;
868
- this.listenerState !== NodePyATVListenerState.started
869
- ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
870
- <span class="cstat-no" title="statement not covered" > return;</span>
871
- <span class="cstat-no" title="statement not covered" > }</span>
872
- &nbsp;
873
- this.listenerState = NodePyATVListenerState.stopping;
874
- if(this.pyatv === undefined) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
875
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
876
- <span class="cstat-no" title="statement not covered" > 'Unable to stop listening due to internal error: state is stopping, but there\'s no child process. ' +</span>
877
- <span class="cstat-no" title="statement not covered" > 'This should never happen, please report this.'</span>
878
- <span class="cstat-no" title="statement not covered" > );</span>
879
- <span class="cstat-no" title="statement not covered" > }</span>
880
- &nbsp;
881
- if(this.pyatv.stdin) {
882
- debug(reqId, 'Pressing enter to close atvscript…', this.options);
883
- this.pyatv.stdin.write('\n');
884
- &nbsp;
885
- await new Promise(cb =&gt; this.timeout = setTimeout(cb, 250));
886
- }
887
- &nbsp;
888
- if(this.listenerState === NodePyATVListenerState.stopping &amp;&amp; this.pyatv) {
889
- this.pyatv.kill();
890
- }
891
- &nbsp;
892
- this.listenerState = NodePyATVListenerState.stopped;
893
- return;
894
- }
895
- &nbsp;
896
- addListener(event: string | symbol, listener: (event: NodePyATVDeviceEvent) =&gt; void): this {
897
- super.addListener(event, listener);
898
- this.checkListener();
899
- return this;
900
- }
901
- &nbsp;
902
- on(event: string | symbol, listener: (event: NodePyATVDeviceEvent) =&gt; void): this {
903
- super.on(event, listener);
904
- this.checkListener();
905
- return this;
906
- }
907
- &nbsp;
908
- once(event: string | symbol, listener: (event: NodePyATVDeviceEvent) =&gt; void): this {
909
- super.once(event, (event: NodePyATVDeviceEvent) =&gt; {
910
- listener(event);
911
- setTimeout(() =&gt; this.checkListener(), 0);
912
- });
913
- this.checkListener();
914
- return this;
915
- }
916
- &nbsp;
917
- prependListener(event: string | symbol, listener: (event: NodePyATVDeviceEvent) =&gt; void): this {
918
- super.prependListener(event, listener);
919
- this.checkListener();
920
- return this;
921
- }
922
- &nbsp;
923
- off(event: string | symbol, listener: (event: NodePyATVDeviceEvent) =&gt; void): this {
924
- super.off(event, listener);
925
- this.checkListener();
926
- return this;
927
- }
928
- &nbsp;
929
- removeAllListeners(event?: string | symbol): this {
930
- super.removeAllListeners(event);
931
- this.checkListener();
932
- return this;
933
- }
934
- &nbsp;
935
- removeListener(event: string | symbol, listener: (event: NodePyATVDeviceEvent) =&gt; void): this {
936
- super.removeListener(event, listener);
937
- this.checkListener();
938
- return this;
939
- }
940
- &nbsp;
941
- listenerCount(event?: string | symbol): number {
942
- if(event !== undefined) {
943
- return super.listenerCount(event);
944
- }
945
- &nbsp;
946
- return this.eventNames()
947
- .map(event =&gt; this.listenerCount(event))
948
- .reduce((a, b) =&gt; a + b, 0);
949
- }
950
- }
951
- &nbsp;</pre></td></tr></table></pre>
952
-
953
- <div class='push'></div><!-- for sticky footer -->
954
- </div><!-- /wrapper -->
955
- <div class='footer quiet pad2 space-top1 center small'>
956
- Code coverage generated by
957
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
958
- at 2023-03-21T19:06:29.919Z
959
- </div>
960
- <script src="prettify.js"></script>
961
- <script>
962
- window.onload = function () {
963
- prettyPrint();
964
- };
965
- </script>
966
- <script src="sorter.js"></script>
967
- <script src="block-navigation.js"></script>
968
- </body>
969
- </html>
970
-