@sebbo2002/node-pyatv 4.3.4-develop.3 → 5.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.
- package/.mocharc.yml +3 -3
- package/.nycrc +1 -0
- package/CHANGELOG.md +26 -0
- package/dist/bin/check.js +2 -6
- package/dist/bin/check.js.map +1 -1
- package/dist/examples/push.js +2 -6
- package/dist/examples/push.js.map +1 -1
- package/dist/lib/device-event.d.ts +2 -2
- package/dist/lib/device-event.js +1 -3
- package/dist/lib/device-event.js.map +1 -1
- package/dist/lib/device-events.d.ts +2 -2
- package/dist/lib/device-events.js +38 -40
- package/dist/lib/device-events.js.map +1 -1
- package/dist/lib/device.d.ts +2 -2
- package/dist/lib/device.js +44 -46
- package/dist/lib/device.js.map +1 -1
- package/dist/lib/fake-spawn.js +7 -14
- package/dist/lib/fake-spawn.js.map +1 -1
- package/dist/lib/index.d.ts +5 -5
- package/dist/lib/index.js +5 -22
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/instance.d.ts +2 -2
- package/dist/lib/instance.js +27 -27
- package/dist/lib/instance.js.map +1 -1
- package/dist/lib/tools.d.ts +1 -1
- package/dist/lib/tools.js +24 -34
- package/dist/lib/tools.js.map +1 -1
- package/dist/lib/types.js +20 -23
- package/dist/lib/types.js.map +1 -1
- package/docs/coverage/block-navigation.js +8 -0
- package/docs/coverage/cobertura-coverage.xml +2696 -1534
- package/docs/coverage/device-event.ts.html +64 -59
- package/docs/coverage/device-events.ts.html +210 -205
- package/docs/coverage/device.ts.html +739 -734
- package/docs/coverage/fake-spawn.ts.html +126 -121
- package/docs/coverage/favicon.png +0 -0
- package/docs/coverage/index.html +73 -68
- package/docs/coverage/index.ts.html +42 -37
- package/docs/coverage/instance.ts.html +236 -222
- package/docs/coverage/sort-arrow-sprite.png +0 -0
- package/docs/coverage/sorter.js +26 -0
- package/docs/coverage/tools.ts.html +315 -310
- package/docs/coverage/types.ts.html +126 -121
- package/docs/reference/assets/highlight.css +7 -21
- package/docs/reference/assets/main.js +4 -2
- package/docs/reference/assets/search.js +1 -1
- package/docs/reference/assets/style.css +424 -538
- package/docs/reference/classes/NodePyATVDevice.html +1059 -125
- package/docs/reference/classes/NodePyATVDeviceEvent.html +111 -10
- package/docs/reference/classes/default.html +211 -34
- package/docs/reference/enums/NodePyATVDeviceState.html +93 -1
- package/docs/reference/enums/NodePyATVKeys.html +212 -1
- package/docs/reference/enums/NodePyATVListenerState.html +79 -1
- package/docs/reference/enums/NodePyATVMediaType.html +79 -1
- package/docs/reference/enums/NodePyATVPowerState.html +65 -1
- package/docs/reference/enums/NodePyATVProtocol.html +79 -1
- package/docs/reference/enums/NodePyATVRepeatState.html +72 -1
- package/docs/reference/enums/NodePyATVShuffleState.html +72 -1
- package/docs/reference/index.html +58 -53
- package/docs/reference/interfaces/NodePyATVDeviceOptions.html +194 -1
- package/docs/reference/interfaces/NodePyATVFindAndInstanceOptions.html +190 -1
- package/docs/reference/interfaces/NodePyATVFindOptions.html +120 -1
- package/docs/reference/interfaces/NodePyATVGetStateOptions.html +62 -1
- package/docs/reference/interfaces/NodePyATVInstanceOptions.html +110 -1
- package/docs/reference/interfaces/NodePyATVState.html +160 -1
- package/docs/reference/interfaces/NodePyATVVersionResponse.html +69 -1
- package/docs/reference/modules.html +89 -1
- package/docs/reference/types/NodePyATVEventValueType.html +61 -0
- package/docs/tests/index.html +1 -1
- package/docs/tests/mochawesome.json +745 -783
- package/package.json +19 -16
- package/release.config.cjs +56 -0
- package/src/bin/check.ts +1 -1
- package/src/examples/push.ts +1 -1
- package/src/lib/device-event.ts +2 -2
- package/src/lib/device-events.ts +4 -4
- package/src/lib/device.ts +3 -3
- package/src/lib/index.ts +5 -5
- package/src/lib/instance.ts +23 -20
- package/src/lib/tools.ts +1 -1
- package/test/device-event.ts +2 -2
- package/test/device-events.ts +2 -2
- package/test/device.ts +4 -4
- package/test/instance.ts +44 -37
- package/test/tools.ts +2 -2
- package/tsconfig.json +1 -1
- package/docs/reference/assets/icons.css +0 -1043
- package/docs/reference/assets/icons.png +0 -0
- package/docs/reference/assets/icons@2x.png +0 -0
package/package.json
CHANGED
|
@@ -9,32 +9,34 @@
|
|
|
9
9
|
},
|
|
10
10
|
"description": "A lightweight wrapper around pyatv…",
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@amanda-mitchell/semantic-release-npm-multiple": "^3.
|
|
13
|
-
"@qiwi/semantic-release-gh-pages-plugin": "^5.2.
|
|
12
|
+
"@amanda-mitchell/semantic-release-npm-multiple": "^3.5.0",
|
|
13
|
+
"@qiwi/semantic-release-gh-pages-plugin": "^5.2.3",
|
|
14
14
|
"@semantic-release/changelog": "^6.0.1",
|
|
15
15
|
"@semantic-release/exec": "^6.0.3",
|
|
16
16
|
"@semantic-release/git": "^10.0.1",
|
|
17
17
|
"@types/mocha": "^9.1.1",
|
|
18
|
-
"@types/node": "^
|
|
19
|
-
"@types/semver": "^7.3.
|
|
20
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
21
|
-
"@typescript-eslint/parser": "^5.
|
|
22
|
-
"
|
|
23
|
-
"eslint
|
|
18
|
+
"@types/node": "^18.0.0",
|
|
19
|
+
"@types/semver": "^7.3.10",
|
|
20
|
+
"@typescript-eslint/eslint-plugin": "^5.30.5",
|
|
21
|
+
"@typescript-eslint/parser": "^5.30.5",
|
|
22
|
+
"c8": "^7.11.3",
|
|
23
|
+
"eslint": "^8.19.0",
|
|
24
|
+
"eslint-plugin-jsonc": "^2.3.1",
|
|
25
|
+
"esm": "^3.2.25",
|
|
24
26
|
"license-checker": "^25.0.1",
|
|
25
27
|
"mocha": "^10.0.0",
|
|
26
28
|
"mochawesome": "^7.1.3",
|
|
27
|
-
"
|
|
28
|
-
"semantic-release": "^19.0.2",
|
|
29
|
+
"semantic-release": "^19.0.3",
|
|
29
30
|
"semantic-release-license": "^1.0.3",
|
|
30
31
|
"source-map-support": "^0.5.21",
|
|
31
|
-
"ts-node": "^10.8.
|
|
32
|
-
"typedoc": "^0.
|
|
33
|
-
"typescript": "^4.7.
|
|
32
|
+
"ts-node": "^10.8.2",
|
|
33
|
+
"typedoc": "^0.23.5",
|
|
34
|
+
"typescript": "^4.7.4"
|
|
34
35
|
},
|
|
35
36
|
"engines": {
|
|
36
|
-
"node": "
|
|
37
|
+
"node": "^12.20.0 || >=14.13.1"
|
|
37
38
|
},
|
|
39
|
+
"homepage": "https://github.com/sebbo2002/js-template#readme",
|
|
38
40
|
"license": "MIT",
|
|
39
41
|
"main": "./dist/lib/index.js",
|
|
40
42
|
"name": "@sebbo2002/node-pyatv",
|
|
@@ -47,7 +49,7 @@
|
|
|
47
49
|
"build": "tsc",
|
|
48
50
|
"build-all": "./.github/workflows/build.sh",
|
|
49
51
|
"check": "./check.sh",
|
|
50
|
-
"coverage": "
|
|
52
|
+
"coverage": "c8 mocha",
|
|
51
53
|
"develop": "ts-node ./src/bin/start.ts",
|
|
52
54
|
"example": "node ./dist/examples/push.js",
|
|
53
55
|
"license-check": "license-checker --production --summary",
|
|
@@ -55,5 +57,6 @@
|
|
|
55
57
|
"postinstall": "./check.sh",
|
|
56
58
|
"test": "mocha"
|
|
57
59
|
},
|
|
58
|
-
"
|
|
60
|
+
"type": "module",
|
|
61
|
+
"version": "5.0.0"
|
|
59
62
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const configuration = {
|
|
2
|
+
'branches': [
|
|
3
|
+
'main',
|
|
4
|
+
{
|
|
5
|
+
'name': 'develop',
|
|
6
|
+
'channel': 'next',
|
|
7
|
+
'prerelease': true
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
'plugins': []
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
configuration.plugins.push(['@semantic-release/commit-analyzer', {
|
|
14
|
+
'releaseRules': [
|
|
15
|
+
{'type': 'chore', 'scope': 'deps', 'release': 'patch'},
|
|
16
|
+
{'type': 'chore', 'scope': 'package', 'release': 'patch'},
|
|
17
|
+
{'type': 'build', 'scope': 'deps', 'release': 'patch'},
|
|
18
|
+
{'type': 'docs', 'release': 'patch'}
|
|
19
|
+
]
|
|
20
|
+
}]);
|
|
21
|
+
|
|
22
|
+
configuration.plugins.push('@semantic-release/release-notes-generator');
|
|
23
|
+
|
|
24
|
+
configuration.plugins.push('@semantic-release/changelog');
|
|
25
|
+
|
|
26
|
+
configuration.plugins.push('semantic-release-license');
|
|
27
|
+
|
|
28
|
+
configuration.plugins.push(['@amanda-mitchell/semantic-release-npm-multiple', {
|
|
29
|
+
'registries': {
|
|
30
|
+
'github': {},
|
|
31
|
+
'public': {}
|
|
32
|
+
}
|
|
33
|
+
}]);
|
|
34
|
+
|
|
35
|
+
configuration.plugins.push(['@semantic-release/exec', {
|
|
36
|
+
'prepareCmd': './.github/workflows/build.sh'
|
|
37
|
+
}]);
|
|
38
|
+
|
|
39
|
+
configuration.plugins.push(['@semantic-release/github', {
|
|
40
|
+
'labels': false,
|
|
41
|
+
'assignees': process.env.GH_OWNER
|
|
42
|
+
}]);
|
|
43
|
+
|
|
44
|
+
configuration.plugins.push(['@semantic-release/git', {
|
|
45
|
+
'assets': ['CHANGELOG.md', 'LICENSE'],
|
|
46
|
+
'message': 'chore(release): :bookmark: ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}'
|
|
47
|
+
}]);
|
|
48
|
+
|
|
49
|
+
configuration.plugins.push(['@qiwi/semantic-release-gh-pages-plugin', {
|
|
50
|
+
'msg': 'docs: Updated for <%= nextRelease.gitTag %>',
|
|
51
|
+
'src': './docs',
|
|
52
|
+
'dst': `./${process.env.BRANCH}`,
|
|
53
|
+
'pullTagsBranch': 'main'
|
|
54
|
+
}]);
|
|
55
|
+
|
|
56
|
+
module.exports = configuration;
|
package/src/bin/check.ts
CHANGED
package/src/examples/push.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// import pyatv, {NodePyATVDeviceEvent} from '@sebbo2002/node-pyatv';
|
|
4
|
-
import pyatv, {NodePyATVDeviceEvent} from '../lib/index';
|
|
4
|
+
import pyatv, {NodePyATVDeviceEvent} from '../lib/index.js';
|
|
5
5
|
|
|
6
6
|
(async () => {
|
|
7
7
|
const devices = await pyatv.find(/*{debug: true}*/);
|
package/src/lib/device-event.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
import {NodePyATVDevice} from '../lib';
|
|
4
|
-
import {NodePyATVEventValueType, NodePyATVStateIndex} from './types';
|
|
3
|
+
import {NodePyATVDevice} from '../lib/index.js';
|
|
4
|
+
import type {NodePyATVEventValueType, NodePyATVStateIndex} from './types.js';
|
|
5
5
|
|
|
6
6
|
export default class NodePyATVDeviceEvent {
|
|
7
7
|
protected readonly values: {key: NodePyATVStateIndex, old: NodePyATVEventValueType, new: NodePyATVEventValueType, device: NodePyATVDevice};
|
package/src/lib/device-events.ts
CHANGED
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
NodePyATVListenerState,
|
|
8
8
|
NodePyATVState,
|
|
9
9
|
NodePyATVStateIndex
|
|
10
|
-
} from './types';
|
|
10
|
+
} from './types.js';
|
|
11
11
|
import {ChildProcess} from 'child_process';
|
|
12
12
|
|
|
13
13
|
import {EventEmitter} from 'events';
|
|
14
|
-
import {NodePyATVDevice, NodePyATVDeviceEvent} from '../lib';
|
|
15
|
-
import {addRequestId, debug, execute, getParamters, parseState, removeRequestId} from './tools';
|
|
16
|
-
import {FakeChildProcess} from './fake-spawn';
|
|
14
|
+
import {NodePyATVDevice, NodePyATVDeviceEvent} from '../lib/index.js';
|
|
15
|
+
import {addRequestId, debug, execute, getParamters, parseState, removeRequestId} from './tools.js';
|
|
16
|
+
import {FakeChildProcess} from './fake-spawn.js';
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @internal
|
package/src/lib/device.ts
CHANGED
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
NodePyATVRepeatState,
|
|
13
13
|
NodePyATVShuffleState,
|
|
14
14
|
NodePyATVState
|
|
15
|
-
} from './types';
|
|
15
|
+
} from './types.js';
|
|
16
16
|
|
|
17
|
-
import { addRequestId, getParamters, parseState, removeRequestId, request } from './tools';
|
|
18
|
-
import { NodePyATVDeviceEvent, NodePyATVDeviceEvents } from '../lib';
|
|
17
|
+
import { addRequestId, getParamters, parseState, removeRequestId, request } from './tools.js';
|
|
18
|
+
import { NodePyATVDeviceEvent, NodePyATVDeviceEvents } from '../lib/index.js';
|
|
19
19
|
import { EventEmitter } from 'events';
|
|
20
20
|
|
|
21
21
|
/**
|
package/src/lib/index.ts
CHANGED
|
@@ -17,10 +17,10 @@ export {
|
|
|
17
17
|
NodePyATVPowerState,
|
|
18
18
|
NodePyATVListenerState,
|
|
19
19
|
NodePyATVEventValueType,
|
|
20
|
-
} from './types';
|
|
20
|
+
} from './types.js';
|
|
21
21
|
|
|
22
|
-
export {default as NodePyATVDeviceEvent} from './device-event';
|
|
23
|
-
export {default as NodePyATVDeviceEvents} from './device-events';
|
|
24
|
-
export {default as NodePyATVDevice} from './device';
|
|
22
|
+
export {default as NodePyATVDeviceEvent} from './device-event.js';
|
|
23
|
+
export {default as NodePyATVDeviceEvents} from './device-events.js';
|
|
24
|
+
export {default as NodePyATVDevice} from './device.js';
|
|
25
25
|
|
|
26
|
-
export {default} from './instance';
|
|
26
|
+
export {default} from './instance.js';
|
package/src/lib/instance.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
import semver from 'semver';
|
|
4
|
+
import { dirname } from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
import { promises as fsPromises } from 'fs';
|
|
4
7
|
|
|
5
8
|
import {
|
|
6
9
|
NodePyATVDeviceOptions,
|
|
@@ -8,10 +11,13 @@ import {
|
|
|
8
11
|
NodePyATVFindAndInstanceOptions,
|
|
9
12
|
NodePyATVInstanceOptions,
|
|
10
13
|
NodePyATVVersionResponse
|
|
11
|
-
} from './types';
|
|
14
|
+
} from './types.js';
|
|
12
15
|
|
|
13
|
-
import {addRequestId, debug, getParamters, removeRequestId, request} from './tools';
|
|
14
|
-
import {NodePyATVDevice} from '../lib';
|
|
16
|
+
import { addRequestId, debug, getParamters, removeRequestId, request } from './tools.js';
|
|
17
|
+
import { NodePyATVDevice } from '../lib/index.js';
|
|
18
|
+
|
|
19
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
+
const __dirname = dirname(__filename);
|
|
15
21
|
|
|
16
22
|
/**
|
|
17
23
|
* Default class exported by `@sebbo2002/node-pyatv`. Use [[find]] to scan for devices in your local network. Use
|
|
@@ -30,7 +36,7 @@ export default class NodePyATVInstance {
|
|
|
30
36
|
*
|
|
31
37
|
* @param options
|
|
32
38
|
*/
|
|
33
|
-
public static async check(options: NodePyATVInstanceOptions = {}): Promise<void> {
|
|
39
|
+
public static async check (options: NodePyATVInstanceOptions = {}): Promise<void> {
|
|
34
40
|
const versions = await this.version(options);
|
|
35
41
|
if (!versions.pyatv) {
|
|
36
42
|
throw new Error('Unable to find pyatv. Is it installed?');
|
|
@@ -41,8 +47,7 @@ export default class NodePyATVInstance {
|
|
|
41
47
|
|
|
42
48
|
try {
|
|
43
49
|
await this.find(options);
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
50
|
+
} catch (error) {
|
|
46
51
|
throw new Error(`Unable to scan for devices: ${String(error).replace('Error: ', '')}`);
|
|
47
52
|
}
|
|
48
53
|
}
|
|
@@ -53,15 +58,14 @@ export default class NodePyATVInstance {
|
|
|
53
58
|
*
|
|
54
59
|
* @param options
|
|
55
60
|
*/
|
|
56
|
-
public static async version(options: NodePyATVInstanceOptions = {}): Promise<NodePyATVVersionResponse> {
|
|
61
|
+
public static async version (options: NodePyATVInstanceOptions = {}): Promise<NodePyATVVersionResponse> {
|
|
57
62
|
const id = addRequestId();
|
|
58
63
|
let pyatv = null;
|
|
59
64
|
let module = null;
|
|
60
65
|
|
|
61
66
|
try {
|
|
62
67
|
pyatv = await request(id, NodePyATVExecutableType.atvremote, ['--version'], options) as string;
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
68
|
+
} catch (error) {
|
|
65
69
|
debug(id, `Unable to get pyatv version due to ${error}`, options);
|
|
66
70
|
}
|
|
67
71
|
|
|
@@ -74,10 +78,9 @@ export default class NodePyATVInstance {
|
|
|
74
78
|
}
|
|
75
79
|
|
|
76
80
|
try {
|
|
77
|
-
|
|
78
|
-
module =
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
+
const json = JSON.parse(await fsPromises.readFile(__dirname + '/../../package.json', 'utf8'));
|
|
82
|
+
module = json?.version || null;
|
|
83
|
+
} catch (error) {
|
|
81
84
|
debug(id, `Unable to get module version due to ${error}`, options);
|
|
82
85
|
}
|
|
83
86
|
if (module && !semver.valid(module)) {
|
|
@@ -105,7 +108,7 @@ export default class NodePyATVInstance {
|
|
|
105
108
|
*
|
|
106
109
|
* @param options
|
|
107
110
|
*/
|
|
108
|
-
public static async find(options: NodePyATVFindAndInstanceOptions = {}): Promise<NodePyATVDevice[]> {
|
|
111
|
+
public static async find (options: NodePyATVFindAndInstanceOptions = {}): Promise<NodePyATVDevice[]> {
|
|
109
112
|
const id = addRequestId();
|
|
110
113
|
const parameters = getParamters(options);
|
|
111
114
|
|
|
@@ -132,7 +135,7 @@ export default class NodePyATVInstance {
|
|
|
132
135
|
*
|
|
133
136
|
* @param options
|
|
134
137
|
*/
|
|
135
|
-
public static device(options: NodePyATVDeviceOptions): NodePyATVDevice {
|
|
138
|
+
public static device (options: NodePyATVDeviceOptions): NodePyATVDevice {
|
|
136
139
|
return new NodePyATVDevice(options);
|
|
137
140
|
}
|
|
138
141
|
|
|
@@ -148,7 +151,7 @@ export default class NodePyATVInstance {
|
|
|
148
151
|
* ```
|
|
149
152
|
* @param options
|
|
150
153
|
*/
|
|
151
|
-
public constructor(options: NodePyATVInstanceOptions = {}) {
|
|
154
|
+
public constructor (options: NodePyATVInstanceOptions = {}) {
|
|
152
155
|
this.options = Object.assign({}, options);
|
|
153
156
|
}
|
|
154
157
|
|
|
@@ -158,7 +161,7 @@ export default class NodePyATVInstance {
|
|
|
158
161
|
*
|
|
159
162
|
* @param options
|
|
160
163
|
*/
|
|
161
|
-
public async check(options: NodePyATVInstanceOptions = {}): Promise<void> {
|
|
164
|
+
public async check (options: NodePyATVInstanceOptions = {}): Promise<void> {
|
|
162
165
|
return NodePyATVInstance.check(Object.assign({}, this.options, options));
|
|
163
166
|
}
|
|
164
167
|
|
|
@@ -168,7 +171,7 @@ export default class NodePyATVInstance {
|
|
|
168
171
|
*
|
|
169
172
|
* @param options
|
|
170
173
|
*/
|
|
171
|
-
public async version(options: NodePyATVInstanceOptions = {}): Promise<NodePyATVVersionResponse> {
|
|
174
|
+
public async version (options: NodePyATVInstanceOptions = {}): Promise<NodePyATVVersionResponse> {
|
|
172
175
|
return NodePyATVInstance.version(Object.assign({}, this.options, options));
|
|
173
176
|
}
|
|
174
177
|
|
|
@@ -186,7 +189,7 @@ export default class NodePyATVInstance {
|
|
|
186
189
|
*
|
|
187
190
|
* @param options
|
|
188
191
|
*/
|
|
189
|
-
public async find(options: NodePyATVFindAndInstanceOptions = {}): Promise<NodePyATVDevice[]> {
|
|
192
|
+
public async find (options: NodePyATVFindAndInstanceOptions = {}): Promise<NodePyATVDevice[]> {
|
|
190
193
|
return NodePyATVInstance.find(Object.assign({}, this.options, options));
|
|
191
194
|
}
|
|
192
195
|
|
|
@@ -196,7 +199,7 @@ export default class NodePyATVInstance {
|
|
|
196
199
|
*
|
|
197
200
|
* @param options
|
|
198
201
|
*/
|
|
199
|
-
public device(options: NodePyATVDeviceOptions): NodePyATVDevice {
|
|
202
|
+
public device (options: NodePyATVDeviceOptions): NodePyATVDevice {
|
|
200
203
|
return NodePyATVInstance.device(Object.assign({}, this.options, options));
|
|
201
204
|
}
|
|
202
205
|
}
|
package/src/lib/tools.ts
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
NodePyATVInternalState,
|
|
9
9
|
NodePyATVMediaType, NodePyATVPowerState, NodePyATVRepeatState, NodePyATVShuffleState,
|
|
10
10
|
NodePyATVState
|
|
11
|
-
} from './types';
|
|
11
|
+
} from './types.js';
|
|
12
12
|
|
|
13
13
|
import {ChildProcess, spawn, SpawnOptions} from 'child_process';
|
|
14
14
|
import {FakeChildProcess} from './fake-spawn';
|
package/test/device-event.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
import assert from 'assert';
|
|
4
|
-
import NodePyATVDevice from '../src/lib/device';
|
|
5
|
-
import NodePyATVDeviceEvent from '../src/lib/device-event';
|
|
4
|
+
import NodePyATVDevice from '../src/lib/device.js';
|
|
5
|
+
import NodePyATVDeviceEvent from '../src/lib/device-event.js';
|
|
6
6
|
|
|
7
7
|
describe('NodePyATVDeviceEvent', function () {
|
|
8
8
|
describe('get key()', function () {
|
package/test/device-events.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
import assert from 'assert';
|
|
4
|
-
import {createFakeSpawn} from '../src/lib/fake-spawn';
|
|
5
|
-
import {NodePyATVDeviceEvent, NodePyATVPowerState, NodePyATVDevice} from '../src/lib';
|
|
4
|
+
import {createFakeSpawn} from '../src/lib/fake-spawn.js';
|
|
5
|
+
import {NodePyATVDeviceEvent, NodePyATVPowerState, NodePyATVDevice} from '../src/lib/index.js';
|
|
6
6
|
|
|
7
7
|
describe('NodePyATVDeviceEvents', function () {
|
|
8
8
|
describe('applyStateAndEmitEvents()', function () {
|
package/test/device.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
import assert from 'assert';
|
|
4
|
-
import NodePyATVDevice from '../src/lib/device';
|
|
4
|
+
import NodePyATVDevice from '../src/lib/device.js';
|
|
5
5
|
import {
|
|
6
6
|
NodePyATVDeviceState,
|
|
7
7
|
NodePyATVKeys,
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
NodePyATVProtocol,
|
|
10
10
|
NodePyATVRepeatState,
|
|
11
11
|
NodePyATVShuffleState
|
|
12
|
-
} from '../src/lib/types';
|
|
13
|
-
import NodePyATVInstance from '../src/lib/instance';
|
|
14
|
-
import {createFakeSpawn} from '../src/lib/fake-spawn';
|
|
12
|
+
} from '../src/lib/types.js';
|
|
13
|
+
import NodePyATVInstance from '../src/lib/instance.js';
|
|
14
|
+
import {createFakeSpawn} from '../src/lib/fake-spawn.js';
|
|
15
15
|
|
|
16
16
|
describe('NodePyATVDevice', function () {
|
|
17
17
|
describe('get name()', function () {
|
package/test/instance.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
import assert from 'assert';
|
|
4
|
-
import {
|
|
4
|
+
import { readFileSync } from 'fs';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
|
|
8
|
+
import { createFakeSpawn } from '../src/lib/fake-spawn.js';
|
|
5
9
|
import NodePyATVInstance, {
|
|
6
10
|
NodePyATVProtocol,
|
|
7
11
|
NodePyATVMediaType,
|
|
@@ -12,7 +16,11 @@ import NodePyATVInstance, {
|
|
|
12
16
|
NodePyATVKeys,
|
|
13
17
|
NodePyATVListenerState,
|
|
14
18
|
NodePyATVPowerState
|
|
15
|
-
} from '../src/lib/index';
|
|
19
|
+
} from '../src/lib/index.js';
|
|
20
|
+
|
|
21
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
22
|
+
const __dirname = path.dirname(__filename);
|
|
23
|
+
const version = JSON.parse(readFileSync(__dirname + '/../package.json', 'utf8'))?.version || null;
|
|
16
24
|
|
|
17
25
|
describe('NodePyATVInstance', function () {
|
|
18
26
|
describe('static version()', function () {
|
|
@@ -25,9 +33,7 @@ describe('NodePyATVInstance', function () {
|
|
|
25
33
|
|
|
26
34
|
assert.equal(typeof result.pyatv, 'string', 'result.pyatv is a string');
|
|
27
35
|
assert.ok(result.pyatv.length >= 5, 'result.pyatv has content');
|
|
28
|
-
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
30
|
-
assert.strictEqual(result.module, require(__dirname + '/../package.json').version || null);
|
|
36
|
+
assert.strictEqual(result.module, version);
|
|
31
37
|
});
|
|
32
38
|
it('should return the pyatv version', async function () {
|
|
33
39
|
const result = await NodePyATVInstance.version({
|
|
@@ -48,8 +54,7 @@ describe('NodePyATVInstance', function () {
|
|
|
48
54
|
)
|
|
49
55
|
});
|
|
50
56
|
|
|
51
|
-
|
|
52
|
-
assert.strictEqual(result.module, require(__dirname + '/../package.json').version || null);
|
|
57
|
+
assert.strictEqual(result.module, version);
|
|
53
58
|
});
|
|
54
59
|
it('should handle option.atvremotePath', async function () {
|
|
55
60
|
await NodePyATVInstance.version({
|
|
@@ -70,7 +75,9 @@ describe('NodePyATVInstance', function () {
|
|
|
70
75
|
});
|
|
71
76
|
it('should work with option.noColors', async function () {
|
|
72
77
|
await NodePyATVInstance.version({
|
|
73
|
-
debug: () => {
|
|
78
|
+
debug: () => {
|
|
79
|
+
// no debug log
|
|
80
|
+
},
|
|
74
81
|
noColors: true,
|
|
75
82
|
spawn: createFakeSpawn(cp =>
|
|
76
83
|
cp.code(1).end()
|
|
@@ -104,7 +111,7 @@ describe('NodePyATVInstance', function () {
|
|
|
104
111
|
|
|
105
112
|
assert.strictEqual(result.pyatv, null);
|
|
106
113
|
});
|
|
107
|
-
it('should return null on empty module version', async function () {
|
|
114
|
+
/* it('should return null on empty module version', async function () {
|
|
108
115
|
const path = require.resolve(__dirname + '/../package.json');
|
|
109
116
|
require(path);
|
|
110
117
|
|
|
@@ -119,8 +126,8 @@ describe('NodePyATVInstance', function () {
|
|
|
119
126
|
});
|
|
120
127
|
|
|
121
128
|
assert.strictEqual(result.module, null);
|
|
122
|
-
});
|
|
123
|
-
it('should return null on invalid module version', async function () {
|
|
129
|
+
}); */
|
|
130
|
+
/* it('should return null on invalid module version', async function () {
|
|
124
131
|
const path = require.resolve(__dirname + '/../package.json');
|
|
125
132
|
require(path);
|
|
126
133
|
|
|
@@ -135,7 +142,7 @@ describe('NodePyATVInstance', function () {
|
|
|
135
142
|
});
|
|
136
143
|
|
|
137
144
|
assert.strictEqual(result.module, null);
|
|
138
|
-
});
|
|
145
|
+
}); */
|
|
139
146
|
});
|
|
140
147
|
|
|
141
148
|
describe('static check()', function () {
|
|
@@ -143,7 +150,7 @@ describe('NodePyATVInstance', function () {
|
|
|
143
150
|
this.timeout(12000);
|
|
144
151
|
await NodePyATVInstance.check();
|
|
145
152
|
});
|
|
146
|
-
it('should return nice error message if pyatv was not found', async function() {
|
|
153
|
+
it('should return nice error message if pyatv was not found', async function () {
|
|
147
154
|
await assert.rejects(async () => {
|
|
148
155
|
await NodePyATVInstance.check({
|
|
149
156
|
spawn: createFakeSpawn(cp => {
|
|
@@ -161,12 +168,12 @@ describe('NodePyATVInstance', function () {
|
|
|
161
168
|
});
|
|
162
169
|
}, /Found pyatv, but unforunately it's too old. Please update pyatv./);
|
|
163
170
|
});
|
|
164
|
-
it('should return nice error message if scan failed', async function() {
|
|
171
|
+
it('should return nice error message if scan failed', async function () {
|
|
165
172
|
let i = 0;
|
|
166
173
|
await assert.rejects(async () => {
|
|
167
174
|
await NodePyATVInstance.check({
|
|
168
175
|
spawn: createFakeSpawn(cp => {
|
|
169
|
-
if(i === 0) {
|
|
176
|
+
if (i === 0) {
|
|
170
177
|
cp.stdout('atvremote 0.7.0').code(1).end();
|
|
171
178
|
i++;
|
|
172
179
|
} else {
|
|
@@ -254,15 +261,15 @@ describe('NodePyATVInstance', function () {
|
|
|
254
261
|
|
|
255
262
|
describe('static device()', function () {
|
|
256
263
|
it('should pass options to constructor', function () {
|
|
257
|
-
const device = NodePyATVInstance.device({host: '192.168.178.6', name: 'My Testdevice'});
|
|
264
|
+
const device = NodePyATVInstance.device({ host: '192.168.178.6', name: 'My Testdevice' });
|
|
258
265
|
assert.strictEqual(device.host, '192.168.178.6');
|
|
259
266
|
assert.strictEqual(device.name, 'My Testdevice');
|
|
260
267
|
});
|
|
261
268
|
});
|
|
262
269
|
|
|
263
|
-
describe('version()', function() {
|
|
264
|
-
it('should merge options from constructor', async function() {
|
|
265
|
-
const i = new NodePyATVInstance({atvremotePath: 'test'});
|
|
270
|
+
describe('version()', function () {
|
|
271
|
+
it('should merge options from constructor', async function () {
|
|
272
|
+
const i = new NodePyATVInstance({ atvremotePath: 'test' });
|
|
266
273
|
await i.version({
|
|
267
274
|
spawn: createFakeSpawn(cp => {
|
|
268
275
|
assert.strictEqual(cp.cmd(), 'test');
|
|
@@ -272,9 +279,9 @@ describe('NodePyATVInstance', function () {
|
|
|
272
279
|
});
|
|
273
280
|
});
|
|
274
281
|
|
|
275
|
-
describe('check()', function() {
|
|
276
|
-
it('should merge options from constructor', async function() {
|
|
277
|
-
const i = new NodePyATVInstance({atvremotePath: 'test'});
|
|
282
|
+
describe('check()', function () {
|
|
283
|
+
it('should merge options from constructor', async function () {
|
|
284
|
+
const i = new NodePyATVInstance({ atvremotePath: 'test' });
|
|
278
285
|
await assert.rejects(async () => {
|
|
279
286
|
await i.check({
|
|
280
287
|
spawn: createFakeSpawn(cp => {
|
|
@@ -286,9 +293,9 @@ describe('NodePyATVInstance', function () {
|
|
|
286
293
|
});
|
|
287
294
|
});
|
|
288
295
|
|
|
289
|
-
describe('find()', function() {
|
|
290
|
-
it('should merge options from constructor', async function() {
|
|
291
|
-
const i = new NodePyATVInstance({atvscriptPath: 'test'});
|
|
296
|
+
describe('find()', function () {
|
|
297
|
+
it('should merge options from constructor', async function () {
|
|
298
|
+
const i = new NodePyATVInstance({ atvscriptPath: 'test' });
|
|
292
299
|
await i.find({
|
|
293
300
|
spawn: createFakeSpawn(cp => {
|
|
294
301
|
assert.strictEqual(cp.cmd(), 'test');
|
|
@@ -303,39 +310,39 @@ describe('NodePyATVInstance', function () {
|
|
|
303
310
|
});
|
|
304
311
|
|
|
305
312
|
describe('device()', function () {
|
|
306
|
-
it('should merge options from constructor', async function() {
|
|
307
|
-
const i = new NodePyATVInstance({debug: true});
|
|
308
|
-
const d = i.device({name: 'My Testdevice', host: '192.168.178.2'});
|
|
313
|
+
it('should merge options from constructor', async function () {
|
|
314
|
+
const i = new NodePyATVInstance({ debug: true });
|
|
315
|
+
const d = i.device({ name: 'My Testdevice', host: '192.168.178.2' });
|
|
309
316
|
assert.deepStrictEqual(d.debug, true);
|
|
310
317
|
});
|
|
311
318
|
});
|
|
312
319
|
|
|
313
320
|
describe('Type Exports', function () {
|
|
314
|
-
it('Type NodePyATVProtocol should be exported', function() {
|
|
321
|
+
it('Type NodePyATVProtocol should be exported', function () {
|
|
315
322
|
assert.ok(NodePyATVProtocol);
|
|
316
323
|
});
|
|
317
|
-
it('Type NodePyATVMediaType should be exported', function() {
|
|
324
|
+
it('Type NodePyATVMediaType should be exported', function () {
|
|
318
325
|
assert.ok(NodePyATVMediaType);
|
|
319
326
|
});
|
|
320
|
-
it('Type NodePyATVDeviceEvent should be exported', function() {
|
|
327
|
+
it('Type NodePyATVDeviceEvent should be exported', function () {
|
|
321
328
|
assert.ok(NodePyATVDeviceEvent);
|
|
322
329
|
});
|
|
323
|
-
it('Type NodePyATVDeviceState should be exported', function() {
|
|
330
|
+
it('Type NodePyATVDeviceState should be exported', function () {
|
|
324
331
|
assert.ok(NodePyATVDeviceState);
|
|
325
332
|
});
|
|
326
|
-
it('Type NodePyATVRepeatState should be exported', function() {
|
|
333
|
+
it('Type NodePyATVRepeatState should be exported', function () {
|
|
327
334
|
assert.ok(NodePyATVRepeatState);
|
|
328
335
|
});
|
|
329
|
-
it('Type NodePyATVShuffleState should be exported', function() {
|
|
336
|
+
it('Type NodePyATVShuffleState should be exported', function () {
|
|
330
337
|
assert.ok(NodePyATVShuffleState);
|
|
331
338
|
});
|
|
332
|
-
it('Type NodePyATVKeys should be exported', function() {
|
|
339
|
+
it('Type NodePyATVKeys should be exported', function () {
|
|
333
340
|
assert.ok(NodePyATVKeys);
|
|
334
341
|
});
|
|
335
|
-
it('Type NodePyATVInstanceOptions should be exported', function() {
|
|
342
|
+
it('Type NodePyATVInstanceOptions should be exported', function () {
|
|
336
343
|
assert.ok(NodePyATVListenerState);
|
|
337
344
|
});
|
|
338
|
-
it('Type NodePyATVPowerState should be exported', function() {
|
|
345
|
+
it('Type NodePyATVPowerState should be exported', function () {
|
|
339
346
|
assert.ok(NodePyATVPowerState);
|
|
340
347
|
});
|
|
341
348
|
});
|
package/test/tools.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
import assert from 'assert';
|
|
4
|
-
import { addRequestId, debug, getExecutable, getParamters, parseState, removeRequestId } from '../src/lib/tools';
|
|
4
|
+
import { addRequestId, debug, getExecutable, getParamters, parseState, removeRequestId } from '../src/lib/tools.js';
|
|
5
5
|
import {
|
|
6
6
|
NodePyATVDeviceState,
|
|
7
7
|
NodePyATVExecutableType,
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
NodePyATVProtocol,
|
|
10
10
|
NodePyATVRepeatState,
|
|
11
11
|
NodePyATVShuffleState
|
|
12
|
-
} from '../src/lib/types';
|
|
12
|
+
} from '../src/lib/types.js';
|
|
13
13
|
|
|
14
14
|
describe('Tools', function () {
|
|
15
15
|
describe('addRequestId() / removeRequestId()', function () {
|