@sebbo2002/node-pyatv 4.3.4-develop.4 → 5.1.0-develop.1

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 (94) hide show
  1. package/.mocharc.yml +3 -3
  2. package/.nycrc +1 -0
  3. package/CHANGELOG.md +31 -0
  4. package/dist/bin/check.js +2 -6
  5. package/dist/bin/check.js.map +1 -1
  6. package/dist/examples/push.js +2 -6
  7. package/dist/examples/push.js.map +1 -1
  8. package/dist/lib/device-event.d.ts +2 -2
  9. package/dist/lib/device-event.js +1 -3
  10. package/dist/lib/device-event.js.map +1 -1
  11. package/dist/lib/device-events.d.ts +2 -2
  12. package/dist/lib/device-events.js +38 -40
  13. package/dist/lib/device-events.js.map +1 -1
  14. package/dist/lib/device.d.ts +47 -2
  15. package/dist/lib/device.js +99 -46
  16. package/dist/lib/device.js.map +1 -1
  17. package/dist/lib/fake-spawn.js +7 -14
  18. package/dist/lib/fake-spawn.js.map +1 -1
  19. package/dist/lib/index.d.ts +6 -5
  20. package/dist/lib/index.js +6 -22
  21. package/dist/lib/index.js.map +1 -1
  22. package/dist/lib/instance.d.ts +2 -2
  23. package/dist/lib/instance.js +40 -32
  24. package/dist/lib/instance.js.map +1 -1
  25. package/dist/lib/tools.d.ts +1 -1
  26. package/dist/lib/tools.js +24 -34
  27. package/dist/lib/tools.js.map +1 -1
  28. package/dist/lib/types.d.ts +24 -0
  29. package/dist/lib/types.js +20 -23
  30. package/dist/lib/types.js.map +1 -1
  31. package/docs/coverage/block-navigation.js +8 -0
  32. package/docs/coverage/cobertura-coverage.xml +2818 -1534
  33. package/docs/coverage/device-event.ts.html +64 -59
  34. package/docs/coverage/device-events.ts.html +215 -210
  35. package/docs/coverage/device.ts.html +931 -740
  36. package/docs/coverage/fake-spawn.ts.html +102 -97
  37. package/docs/coverage/favicon.png +0 -0
  38. package/docs/coverage/index.html +74 -69
  39. package/docs/coverage/index.ts.html +63 -49
  40. package/docs/coverage/instance.ts.html +256 -224
  41. package/docs/coverage/sort-arrow-sprite.png +0 -0
  42. package/docs/coverage/sorter.js +26 -0
  43. package/docs/coverage/tools.ts.html +310 -305
  44. package/docs/coverage/types.ts.html +204 -121
  45. package/docs/reference/assets/highlight.css +11 -25
  46. package/docs/reference/assets/main.js +4 -2
  47. package/docs/reference/assets/search.js +1 -1
  48. package/docs/reference/assets/style.css +424 -538
  49. package/docs/reference/classes/NodePyATVDevice.html +1136 -126
  50. package/docs/reference/classes/NodePyATVDeviceEvent.html +111 -10
  51. package/docs/reference/classes/NodePyATVInstance.html +227 -0
  52. package/docs/reference/enums/NodePyATVDeviceState.html +93 -1
  53. package/docs/reference/enums/NodePyATVExecutableType.html +65 -0
  54. package/docs/reference/enums/NodePyATVKeys.html +212 -1
  55. package/docs/reference/enums/NodePyATVListenerState.html +79 -1
  56. package/docs/reference/enums/NodePyATVMediaType.html +79 -1
  57. package/docs/reference/enums/NodePyATVPowerState.html +65 -1
  58. package/docs/reference/enums/NodePyATVProtocol.html +79 -1
  59. package/docs/reference/enums/NodePyATVRepeatState.html +72 -1
  60. package/docs/reference/enums/NodePyATVShuffleState.html +72 -1
  61. package/docs/reference/index.html +61 -53
  62. package/docs/reference/interfaces/NodePyATVDeviceOptions.html +229 -1
  63. package/docs/reference/interfaces/NodePyATVFindAndInstanceOptions.html +190 -1
  64. package/docs/reference/interfaces/NodePyATVFindOptions.html +120 -1
  65. package/docs/reference/interfaces/NodePyATVGetStateOptions.html +62 -1
  66. package/docs/reference/interfaces/NodePyATVInstanceOptions.html +110 -1
  67. package/docs/reference/interfaces/NodePyATVService.html +69 -0
  68. package/docs/reference/interfaces/NodePyATVState.html +160 -1
  69. package/docs/reference/interfaces/NodePyATVVersionResponse.html +69 -1
  70. package/docs/reference/modules.html +104 -1
  71. package/docs/reference/types/NodePyATVEventValueType.html +64 -0
  72. package/docs/tests/index.html +1 -1
  73. package/docs/tests/mochawesome.json +1074 -784
  74. package/package.json +18 -15
  75. package/release.config.cjs +56 -0
  76. package/src/bin/check.ts +1 -1
  77. package/src/examples/push.ts +1 -1
  78. package/src/lib/device-event.ts +2 -2
  79. package/src/lib/device-events.ts +4 -4
  80. package/src/lib/device.ts +65 -3
  81. package/src/lib/index.ts +20 -17
  82. package/src/lib/instance.ts +31 -22
  83. package/src/lib/tools.ts +1 -1
  84. package/src/lib/types.ts +26 -0
  85. package/test/device-event.ts +2 -2
  86. package/test/device-events.ts +2 -2
  87. package/test/device.ts +127 -4
  88. package/test/instance.ts +128 -42
  89. package/test/tools.ts +2 -2
  90. package/tsconfig.json +1 -1
  91. package/docs/reference/assets/icons.css +0 -1043
  92. package/docs/reference/assets/icons.png +0 -0
  93. package/docs/reference/assets/icons@2x.png +0 -0
  94. package/docs/reference/classes/default.html +0 -50
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.83% </span>
26
+ <span class="strong">97.63% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>46/48</span>
28
+ <span class='fraction'>206/211</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">85.71% </span>
33
+ <span class="strong">88.88% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>24/28</span>
35
+ <span class='fraction'>32/36</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">90% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>9/10</span>
42
+ <span class='fraction'>9/9</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">95.83% </span>
47
+ <span class="strong">97.63% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>46/48</span>
49
+ <span class='fraction'>206/211</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,6 +54,12 @@
54
54
  <p class="quiet">
55
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
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
64
  <div class='status-line high'></div>
59
65
  <pre><table class="coverage">
@@ -259,222 +265,247 @@
259
265
  <a name='L200'></a><a href='#L200'>200</a>
260
266
  <a name='L201'></a><a href='#L201'>201</a>
261
267
  <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
263
- <span class="cline-any cline-neutral">&nbsp;</span>
264
- <span class="cline-any cline-yes">1x</span>
265
- <span class="cline-any cline-neutral">&nbsp;</span>
266
- <span class="cline-any cline-yes">1x</span>
267
- <span class="cline-any cline-neutral">&nbsp;</span>
268
- <span class="cline-any cline-neutral">&nbsp;</span>
269
- <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-neutral">&nbsp;</span>
271
- <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-neutral">&nbsp;</span>
273
- <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-yes">1x</span>
275
- <span class="cline-any cline-yes">1x</span>
276
- <span class="cline-any cline-neutral">&nbsp;</span>
277
- <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-neutral">&nbsp;</span>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
278
+ <span class="cline-any cline-yes">1x</span>
279
+ <span class="cline-any cline-yes">1x</span>
280
+ <span class="cline-any cline-yes">1x</span>
281
+ <span class="cline-any cline-yes">1x</span>
282
+ <span class="cline-any cline-yes">1x</span>
283
+ <span class="cline-any cline-yes">1x</span>
284
+ <span class="cline-any cline-yes">1x</span>
285
+ <span class="cline-any cline-yes">1x</span>
286
+ <span class="cline-any cline-yes">1x</span>
287
+ <span class="cline-any cline-yes">1x</span>
288
+ <span class="cline-any cline-yes">1x</span>
289
+ <span class="cline-any cline-yes">1x</span>
290
+ <span class="cline-any cline-yes">1x</span>
291
+ <span class="cline-any cline-yes">1x</span>
292
+ <span class="cline-any cline-yes">1x</span>
293
+ <span class="cline-any cline-yes">1x</span>
294
+ <span class="cline-any cline-yes">1x</span>
295
+ <span class="cline-any cline-yes">1x</span>
296
+ <span class="cline-any cline-yes">1x</span>
297
+ <span class="cline-any cline-yes">1x</span>
298
+ <span class="cline-any cline-yes">1x</span>
299
+ <span class="cline-any cline-yes">1x</span>
300
+ <span class="cline-any cline-yes">1x</span>
301
+ <span class="cline-any cline-yes">1x</span>
302
+ <span class="cline-any cline-yes">1x</span>
303
+ <span class="cline-any cline-yes">1x</span>
304
+ <span class="cline-any cline-yes">1x</span>
305
+ <span class="cline-any cline-yes">1x</span>
306
+ <span class="cline-any cline-yes">1x</span>
307
+ <span class="cline-any cline-yes">1x</span>
308
+ <span class="cline-any cline-yes">1x</span>
309
+ <span class="cline-any cline-yes">1x</span>
310
+ <span class="cline-any cline-yes">1x</span>
311
+ <span class="cline-any cline-yes">1x</span>
312
+ <span class="cline-any cline-yes">1x</span>
313
+ <span class="cline-any cline-yes">1x</span>
314
+ <span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-yes">1x</span>
285
316
  <span class="cline-any cline-yes">1x</span>
286
- <span class="cline-any cline-yes">4x</span>
287
- <span class="cline-any cline-neutral">&nbsp;</span>
288
- <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-neutral">&nbsp;</span>
291
- <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-neutral">&nbsp;</span>
293
- <span class="cline-any cline-neutral">&nbsp;</span>
294
- <span class="cline-any cline-neutral">&nbsp;</span>
295
317
  <span class="cline-any cline-yes">5x</span>
296
318
  <span class="cline-any cline-yes">5x</span>
297
319
  <span class="cline-any cline-yes">2x</span>
298
- <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">3x</span>
320
+ <span class="cline-any cline-yes">2x</span>
321
+ <span class="cline-any cline-yes">5x</span>
322
+ <span class="cline-any cline-yes">1x</span>
300
323
  <span class="cline-any cline-yes">1x</span>
301
- <span class="cline-any cline-neutral">&nbsp;</span>
302
- <span class="cline-any cline-neutral">&nbsp;</span>
303
324
  <span class="cline-any cline-yes">2x</span>
304
325
  <span class="cline-any cline-yes">2x</span>
305
- <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-neutral">&nbsp;</span>
307
- <span class="cline-any cline-yes">1x</span>
308
- <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-neutral">&nbsp;</span>
310
- <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-yes">17x</span>
319
- <span class="cline-any cline-yes">17x</span>
320
- <span class="cline-any cline-yes">17x</span>
321
- <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-yes">17x</span>
323
- <span class="cline-any cline-yes">17x</span>
324
- <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-yes">2x</span>
327
+ <span class="cline-any cline-yes">1x</span>
328
+ <span class="cline-any cline-yes">1x</span>
329
+ <span class="cline-any cline-yes">1x</span>
330
+ <span class="cline-any cline-yes">5x</span>
331
+ <span class="cline-any cline-yes">1x</span>
332
+ <span class="cline-any cline-yes">1x</span>
333
+ <span class="cline-any cline-yes">1x</span>
334
+ <span class="cline-any cline-yes">1x</span>
335
+ <span class="cline-any cline-yes">1x</span>
336
+ <span class="cline-any cline-yes">1x</span>
337
+ <span class="cline-any cline-yes">1x</span>
338
+ <span class="cline-any cline-yes">1x</span>
339
+ <span class="cline-any cline-yes">15x</span>
340
+ <span class="cline-any cline-yes">15x</span>
341
+ <span class="cline-any cline-yes">15x</span>
342
+ <span class="cline-any cline-yes">15x</span>
343
+ <span class="cline-any cline-yes">15x</span>
344
+ <span class="cline-any cline-yes">15x</span>
345
+ <span class="cline-any cline-yes">15x</span>
326
346
  <span class="cline-any cline-yes">4x</span>
327
- <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-yes">17x</span>
330
- <span class="cline-any cline-yes">8x</span>
331
- <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-yes">17x</span>
333
- <span class="cline-any cline-yes">10x</span>
334
- <span class="cline-any cline-yes">10x</span>
335
- <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-yes">17x</span>
338
- <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-yes">17x</span>
340
- <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-no">&nbsp;</span>
343
- <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">17x</span>
345
- <span class="cline-any cline-yes">7x</span>
346
- <span class="cline-any cline-yes">7x</span>
347
- <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-yes">17x</span>
350
- <span class="cline-any cline-yes">17x</span>
351
- <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-yes">4x</span>
348
+ <span class="cline-any cline-yes">15x</span>
349
+ <span class="cline-any cline-yes">15x</span>
350
+ <span class="cline-any cline-yes">6x</span>
351
+ <span class="cline-any cline-yes">6x</span>
352
+ <span class="cline-any cline-yes">15x</span>
370
353
  <span class="cline-any cline-yes">10x</span>
371
354
  <span class="cline-any cline-yes">10x</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
355
  <span class="cline-any cline-yes">10x</span>
356
+ <span class="cline-any cline-yes">15x</span>
357
+ <span class="cline-any cline-yes">15x</span>
358
+ <span class="cline-any cline-yes">15x</span>
359
+ <span class="cline-any cline-yes">15x</span>
360
+ <span class="cline-any cline-yes">15x</span>
361
+ <span class="cline-any cline-no">&nbsp;</span>
362
+ <span class="cline-any cline-no">&nbsp;</span>
363
+ <span class="cline-any cline-yes">15x</span>
364
+ <span class="cline-any cline-no">&nbsp;</span>
365
+ <span class="cline-any cline-no">&nbsp;</span>
366
+ <span class="cline-any cline-no">&nbsp;</span>
367
+ <span class="cline-any cline-yes">15x</span>
368
+ <span class="cline-any cline-yes">15x</span>
369
+ <span class="cline-any cline-yes">15x</span>
370
+ <span class="cline-any cline-yes">15x</span>
371
+ <span class="cline-any cline-yes">15x</span>
372
+ <span class="cline-any cline-yes">15x</span>
373
+ <span class="cline-any cline-yes">15x</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">12x</span>
390
+ <span class="cline-any cline-yes">12x</span>
391
+ <span class="cline-any cline-yes">12x</span>
392
+ <span class="cline-any cline-yes">12x</span>
393
+ <span class="cline-any cline-yes">12x</span>
394
+ <span class="cline-any cline-yes">2x</span>
395
+ <span class="cline-any cline-yes">2x</span>
396
+ <span class="cline-any cline-yes">6x</span>
374
397
  <span class="cline-any cline-yes">6x</span>
375
398
  <span class="cline-any cline-yes">2x</span>
376
- <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-yes">2x</span>
400
+ <span class="cline-any cline-yes">2x</span>
401
+ <span class="cline-any cline-yes">2x</span>
402
+ <span class="cline-any cline-yes">2x</span>
403
+ <span class="cline-any cline-yes">2x</span>
404
+ <span class="cline-any cline-yes">2x</span>
405
+ <span class="cline-any cline-yes">2x</span>
406
+ <span class="cline-any cline-yes">2x</span>
407
+ <span class="cline-any cline-yes">2x</span>
408
+ <span class="cline-any cline-yes">6x</span>
409
+ <span class="cline-any cline-yes">6x</span>
410
+ <span class="cline-any cline-yes">6x</span>
411
+ <span class="cline-any cline-yes">6x</span>
412
+ <span class="cline-any cline-yes">6x</span>
413
+ <span class="cline-any cline-yes">1x</span>
414
+ <span class="cline-any cline-yes">1x</span>
415
+ <span class="cline-any cline-yes">1x</span>
416
+ <span class="cline-any cline-yes">1x</span>
417
+ <span class="cline-any cline-yes">1x</span>
418
+ <span class="cline-any cline-yes">1x</span>
419
+ <span class="cline-any cline-yes">1x</span>
420
+ <span class="cline-any cline-yes">1x</span>
378
421
  <span class="cline-any cline-yes">4x</span>
379
- <span class="cline-any cline-no">&nbsp;</span>
380
- <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
422
  <span class="cline-any cline-yes">4x</span>
423
+ <span class="cline-any cline-yes">1x</span>
424
+ <span class="cline-any cline-yes">1x</span>
425
+ <span class="cline-any cline-yes">1x</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">1x</span>
429
+ <span class="cline-any cline-yes">1x</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">1x</span>
433
+ <span class="cline-any cline-yes">1x</span>
434
+ <span class="cline-any cline-yes">1x</span>
435
+ <span class="cline-any cline-yes">1x</span>
436
+ <span class="cline-any cline-yes">1x</span>
387
437
  <span class="cline-any cline-yes">4x</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-yes">2x</span>
398
- <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-neutral">&nbsp;</span>
413
438
  <span class="cline-any cline-yes">4x</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-neutral">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-yes">1x</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-yes">1x</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">1x</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-yes">1x</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</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">1x</span>
444
+ <span class="cline-any cline-yes">1x</span>
445
+ <span class="cline-any cline-yes">1x</span>
446
+ <span class="cline-any cline-yes">1x</span>
447
+ <span class="cline-any cline-yes">1x</span>
448
+ <span class="cline-any cline-yes">1x</span>
449
+ <span class="cline-any cline-yes">1x</span>
450
+ <span class="cline-any cline-yes">1x</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">1x</span>
454
+ <span class="cline-any cline-yes">1x</span>
455
+ <span class="cline-any cline-yes">1x</span>
456
+ <span class="cline-any cline-yes">1x</span>
457
+ <span class="cline-any cline-yes">1x</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">1x</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">1x</span>
464
+ <span class="cline-any cline-yes">1x</span>
465
+ <span class="cline-any cline-yes">1x</span>
466
+ <span class="cline-any cline-yes">1x</span>
467
+ <span class="cline-any cline-yes">1x</span>
468
+ <span class="cline-any cline-yes">1x</span>
469
+ <span class="cline-any cline-yes">1x</span>
470
+ <span class="cline-any cline-yes">1x</span>
471
+ <span class="cline-any cline-yes">1x</span>
472
+ <span class="cline-any cline-yes">1x</span>
473
+ <span class="cline-any cline-yes">1x</span>
474
+ <span class="cline-any cline-yes">1x</span>
475
+ <span class="cline-any cline-yes">1x</span>
476
+ <span class="cline-any cline-yes">1x</span>
477
+ <span class="cline-any cline-yes">1x</span>
478
+ <span class="cline-any cline-yes">1x</span>
479
+ <span class="cline-any cline-yes">1x</span>
480
+ <span class="cline-any cline-yes">1x</span>
481
+ <span class="cline-any cline-yes">1x</span>
482
+ <span class="cline-any cline-yes">1x</span>
483
+ <span class="cline-any cline-yes">1x</span>
484
+ <span class="cline-any cline-yes">1x</span>
485
+ <span class="cline-any cline-yes">1x</span>
486
+ <span class="cline-any cline-yes">1x</span>
487
+ <span class="cline-any cline-yes">1x</span>
464
488
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
465
489
  &nbsp;
466
490
  import semver from 'semver';
491
+ import { dirname } from 'path';
492
+ import { fileURLToPath } from 'url';
493
+ import { promises as fsPromises } from 'fs';
467
494
  &nbsp;
468
495
  import {
469
496
  NodePyATVDeviceOptions,
470
497
  NodePyATVExecutableType,
471
498
  NodePyATVFindAndInstanceOptions,
472
499
  NodePyATVInstanceOptions,
500
+ NodePyATVInternalScanDevice,
473
501
  NodePyATVVersionResponse
474
- } from './types';
502
+ } from './types.js';
503
+ &nbsp;
504
+ import { addRequestId, debug, getParamters, removeRequestId, request } from './tools.js';
505
+ import { NodePyATVDevice } from '../lib/index.js';
475
506
  &nbsp;
476
- import {addRequestId, debug, getParamters, removeRequestId, request} from './tools';
477
- import {NodePyATVDevice} from '../lib';
507
+ const __filename = fileURLToPath(import.meta.url);
508
+ const __dirname = dirname(__filename);
478
509
  &nbsp;
479
510
  /**
480
511
  * Default class exported by `@sebbo2002/node-pyatv`. Use [[find]] to scan for devices in your local network. Use
@@ -493,7 +524,7 @@ export default class NodePyATVInstance {
493
524
  *
494
525
  * @param options
495
526
  */
496
- public static async check(options: NodePyATVInstanceOptions = {}): Promise&lt;void&gt; {
527
+ public static async check (options: NodePyATVInstanceOptions = {}): Promise&lt;void&gt; {
497
528
  const versions = await this.version(options);
498
529
  if (!versions.pyatv) {
499
530
  throw new Error('Unable to find pyatv. Is it installed?');
@@ -504,8 +535,7 @@ export default class NodePyATVInstance {
504
535
  &nbsp;
505
536
  try {
506
537
  await this.find(options);
507
- }
508
- catch (error) {
538
+ } catch (error) {
509
539
  throw new Error(`Unable to scan for devices: ${String(error).replace('Error: ', '')}`);
510
540
  }
511
541
  }
@@ -516,15 +546,14 @@ export default class NodePyATVInstance {
516
546
  *
517
547
  * @param options
518
548
  */
519
- public static async version(options: NodePyATVInstanceOptions = {}): Promise&lt;NodePyATVVersionResponse&gt; {
549
+ public static async version (options: NodePyATVInstanceOptions = {}): Promise&lt;NodePyATVVersionResponse&gt; {
520
550
  const id = addRequestId();
521
551
  let pyatv = null;
522
552
  let module = null;
523
553
  &nbsp;
524
554
  try {
525
555
  pyatv = await request(id, NodePyATVExecutableType.atvremote, ['--version'], options) as string;
526
- }
527
- catch (error) {
556
+ } catch (error) {
528
557
  debug(id, `Unable to get pyatv version due to ${error}`, options);
529
558
  }
530
559
  &nbsp;
@@ -537,16 +566,15 @@ export default class NodePyATVInstance {
537
566
  }
538
567
  &nbsp;
539
568
  try {
540
- // eslint-disable-next-line @typescript-eslint/no-var-requires
541
- module = require(__dirname + '/../../package.json').version || null;
542
- }
543
- catch (error) {
569
+ const json = JSON.parse(await fsPromises.readFile(__dirname + '/../../package.json', 'utf8'));
570
+ module = json<span class="branch-0 cbranch-no" title="branch not covered" >?.v</span>ersion<span class="branch-0 cbranch-no" title="branch not covered" > || null;</span>
571
+ } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
544
572
  <span class="cstat-no" title="statement not covered" > debug(id, `Unable to get module version due to ${error}`, options);</span>
545
- }
546
- if (module &amp;&amp; !semver.valid(module)) {
547
- debug(id, `String "${module}" is not a valid module version, set it to null`, options);
548
- module = null;
549
- }
573
+ <span class="cstat-no" title="statement not covered" > }</span>
574
+ if (module &amp;&amp; !semver.valid(module)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
575
+ <span class="cstat-no" title="statement not covered" > debug(id, `String "${module}" is not a valid module version, set it to null`, options);</span>
576
+ <span class="cstat-no" title="statement not covered" > module = null;</span>
577
+ <span class="cstat-no" title="statement not covered" > }</span>
550
578
  &nbsp;
551
579
  removeRequestId(id);
552
580
  return {
@@ -568,7 +596,7 @@ export default class NodePyATVInstance {
568
596
  *
569
597
  * @param options
570
598
  */
571
- public static async find(options: NodePyATVFindAndInstanceOptions = {}): Promise&lt;NodePyATVDevice[]&gt; {
599
+ public static async find (options: NodePyATVFindAndInstanceOptions = {}): Promise&lt;NodePyATVDevice[]&gt; {
572
600
  const id = addRequestId();
573
601
  const parameters = getParamters(options);
574
602
  &nbsp;
@@ -577,11 +605,16 @@ export default class NodePyATVInstance {
577
605
  throw new Error(`Unable to parse pyatv response: ${JSON.stringify(result, null, ' ')}`);
578
606
  }
579
607
  &nbsp;
580
- const objects = result.devices.map(<span class="fstat-no" title="function not covered" >(d</span>evice: { address: string, identifier: string, name: string }) =&gt;
581
- <span class="cstat-no" title="statement not covered" > this.device(Object.assign({}, options, {</span>
608
+ const objects = result.devices.map((device: NodePyATVInternalScanDevice) =&gt;
609
+ this.device(Object.assign({}, options, {
582
610
  host: device.address,
583
611
  id: device.identifier,
584
- name: device.name
612
+ name: device.name,
613
+ model: device.device_info?.model,
614
+ modelName: device.device_info?.model_str,
615
+ os: device.device_info?.operating_system,
616
+ version: device.device_info?.version,
617
+ services: device.services
585
618
  }))
586
619
  );
587
620
  &nbsp;
@@ -595,7 +628,7 @@ export default class NodePyATVInstance {
595
628
  *
596
629
  * @param options
597
630
  */
598
- public static device(options: NodePyATVDeviceOptions): NodePyATVDevice {
631
+ public static device (options: NodePyATVDeviceOptions): NodePyATVDevice {
599
632
  return new NodePyATVDevice(options);
600
633
  }
601
634
  &nbsp;
@@ -611,7 +644,7 @@ export default class NodePyATVInstance {
611
644
  * ```
612
645
  * @param options
613
646
  */
614
- public constructor(options: NodePyATVInstanceOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
647
+ public constructor (options: NodePyATVInstanceOptions = {}) {
615
648
  this.options = Object.assign({}, options);
616
649
  }
617
650
  &nbsp;
@@ -621,7 +654,7 @@ export default class NodePyATVInstance {
621
654
  *
622
655
  * @param options
623
656
  */
624
- public async check(options: NodePyATVInstanceOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: Promise&lt;void&gt; {
657
+ public async check (options: NodePyATVInstanceOptions = {}): Promise&lt;void&gt; {
625
658
  return NodePyATVInstance.check(Object.assign({}, this.options, options));
626
659
  }
627
660
  &nbsp;
@@ -631,7 +664,7 @@ export default class NodePyATVInstance {
631
664
  *
632
665
  * @param options
633
666
  */
634
- public async version(options: NodePyATVInstanceOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: Promise&lt;NodePyATVVersionResponse&gt; {
667
+ public async version (options: NodePyATVInstanceOptions = {}): Promise&lt;NodePyATVVersionResponse&gt; {
635
668
  return NodePyATVInstance.version(Object.assign({}, this.options, options));
636
669
  }
637
670
  &nbsp;
@@ -649,7 +682,7 @@ export default class NodePyATVInstance {
649
682
  *
650
683
  * @param options
651
684
  */
652
- public async find(options: NodePyATVFindAndInstanceOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: Promise&lt;NodePyATVDevice[]&gt; {
685
+ public async find (options: NodePyATVFindAndInstanceOptions = {}): Promise&lt;NodePyATVDevice[]&gt; {
653
686
  return NodePyATVInstance.find(Object.assign({}, this.options, options));
654
687
  }
655
688
  &nbsp;
@@ -659,7 +692,7 @@ export default class NodePyATVInstance {
659
692
  *
660
693
  * @param options
661
694
  */
662
- public device(options: NodePyATVDeviceOptions): NodePyATVDevice {
695
+ public device (options: NodePyATVDeviceOptions): NodePyATVDevice {
663
696
  return NodePyATVInstance.device(Object.assign({}, this.options, options));
664
697
  }
665
698
  }
@@ -669,10 +702,9 @@ export default class NodePyATVInstance {
669
702
  </div><!-- /wrapper -->
670
703
  <div class='footer quiet pad2 space-top1 center small'>
671
704
  Code coverage generated by
672
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
673
- at Fri Jun 10 2022 00:13:17 GMT+0000 (Coordinated Universal Time)
705
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
706
+ at 2022-08-04T16:10:20.232Z
674
707
  </div>
675
- </div>
676
708
  <script src="prettify.js"></script>
677
709
  <script>
678
710
  window.onload = function () {