@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.
- package/dist/bin/check.cjs +10 -0
- package/dist/bin/check.cjs.map +1 -0
- package/dist/bin/check.d.ts +2 -1
- package/dist/bin/check.js +4 -45
- package/dist/bin/check.js.map +1 -1
- package/dist/chunk-TZSWUAOB.js +7 -0
- package/dist/chunk-TZSWUAOB.js.map +1 -0
- package/dist/lib/index.cjs +7 -0
- package/dist/lib/index.cjs.map +1 -0
- package/dist/lib/{device.d.ts → index.d.cts} +340 -4
- package/dist/lib/index.d.ts +806 -6
- package/dist/lib/index.js +1 -7
- package/dist/lib/index.js.map +1 -1
- package/package.json +18 -9
- package/.editorconfig +0 -12
- package/.eslintignore +0 -4
- package/.eslintrc +0 -60
- package/.mocharc.yml +0 -7
- package/.nycrc +0 -32
- package/CHANGELOG.md +0 -295
- package/check.sh +0 -5
- package/dist/examples/push.d.ts +0 -1
- package/dist/examples/push.js +0 -51
- package/dist/examples/push.js.map +0 -1
- package/dist/lib/device-event.d.ts +0 -44
- package/dist/lib/device-event.js +0 -47
- package/dist/lib/device-event.js.map +0 -1
- package/dist/lib/device-events.d.ts +0 -30
- package/dist/lib/device-events.js +0 -237
- package/dist/lib/device-events.js.map +0 -1
- package/dist/lib/device.js +0 -793
- package/dist/lib/device.js.map +0 -1
- package/dist/lib/fake-spawn.d.ts +0 -43
- package/dist/lib/fake-spawn.js +0 -85
- package/dist/lib/fake-spawn.js.map +0 -1
- package/dist/lib/instance.d.ts +0 -97
- package/dist/lib/instance.js +0 -208
- package/dist/lib/instance.js.map +0 -1
- package/dist/lib/tools.d.ts +0 -12
- package/dist/lib/tools.js +0 -319
- package/dist/lib/tools.js.map +0 -1
- package/dist/lib/types.d.ts +0 -204
- package/dist/lib/types.js +0 -108
- package/dist/lib/types.js.map +0 -1
- package/docs/coverage/base.css +0 -224
- package/docs/coverage/block-navigation.js +0 -87
- package/docs/coverage/cobertura-coverage.xml +0 -2889
- package/docs/coverage/device-event.ts.html +0 -256
- package/docs/coverage/device-events.ts.html +0 -970
- package/docs/coverage/device.ts.html +0 -2518
- package/docs/coverage/fake-spawn.ts.html +0 -448
- package/docs/coverage/favicon.png +0 -0
- package/docs/coverage/index.html +0 -221
- package/docs/coverage/index.ts.html +0 -172
- package/docs/coverage/instance.ts.html +0 -718
- package/docs/coverage/prettify.css +0 -1
- package/docs/coverage/prettify.js +0 -2
- package/docs/coverage/sort-arrow-sprite.png +0 -0
- package/docs/coverage/sorter.js +0 -196
- package/docs/coverage/tools.ts.html +0 -1222
- package/docs/coverage/types.ts.html +0 -775
- package/docs/reference/.nojekyll +0 -1
- package/docs/reference/assets/highlight.css +0 -99
- package/docs/reference/assets/main.js +0 -58
- package/docs/reference/assets/search.js +0 -1
- package/docs/reference/assets/style.css +0 -1280
- package/docs/reference/classes/NodePyATVDevice.html +0 -1266
- package/docs/reference/classes/NodePyATVDeviceEvent.html +0 -123
- package/docs/reference/classes/NodePyATVInstance.html +0 -240
- package/docs/reference/enums/NodePyATVDeviceState.html +0 -97
- package/docs/reference/enums/NodePyATVExecutableType.html +0 -69
- package/docs/reference/enums/NodePyATVKeys.html +0 -216
- package/docs/reference/enums/NodePyATVListenerState.html +0 -83
- package/docs/reference/enums/NodePyATVMediaType.html +0 -83
- package/docs/reference/enums/NodePyATVPowerState.html +0 -69
- package/docs/reference/enums/NodePyATVProtocol.html +0 -83
- package/docs/reference/enums/NodePyATVRepeatState.html +0 -76
- package/docs/reference/enums/NodePyATVShuffleState.html +0 -76
- package/docs/reference/index.html +0 -139
- package/docs/reference/interfaces/NodePyATVDeviceOptions.html +0 -232
- package/docs/reference/interfaces/NodePyATVFindAndInstanceOptions.html +0 -193
- package/docs/reference/interfaces/NodePyATVFindOptions.html +0 -124
- package/docs/reference/interfaces/NodePyATVGetStateOptions.html +0 -66
- package/docs/reference/interfaces/NodePyATVInstanceOptions.html +0 -113
- package/docs/reference/interfaces/NodePyATVService.html +0 -73
- package/docs/reference/interfaces/NodePyATVState.html +0 -164
- package/docs/reference/interfaces/NodePyATVVersionResponse.html +0 -73
- package/docs/reference/modules.html +0 -106
- package/docs/reference/types/NodePyATVEventValueType.html +0 -66
- package/docs/tests/assets/MaterialIcons-Regular.woff +0 -0
- package/docs/tests/assets/MaterialIcons-Regular.woff2 +0 -0
- package/docs/tests/assets/app.css +0 -14
- package/docs/tests/assets/app.js +0 -2
- package/docs/tests/assets/app.js.LICENSE.txt +0 -55
- package/docs/tests/assets/roboto-light-webfont.woff +0 -0
- package/docs/tests/assets/roboto-light-webfont.woff2 +0 -0
- package/docs/tests/assets/roboto-medium-webfont.woff +0 -0
- package/docs/tests/assets/roboto-medium-webfont.woff2 +0 -0
- package/docs/tests/assets/roboto-regular-webfont.woff +0 -0
- package/docs/tests/assets/roboto-regular-webfont.woff2 +0 -0
- package/docs/tests/index.html +0 -2
- package/docs/tests/mochawesome.json +0 -4823
- package/release.config.cjs +0 -51
- package/src/bin/check.ts +0 -41
- package/src/examples/push.ts +0 -46
- package/src/lib/device-event.ts +0 -57
- package/src/lib/device-events.ts +0 -295
- package/src/lib/device.ts +0 -811
- package/src/lib/fake-spawn.ts +0 -121
- package/src/lib/index.ts +0 -29
- package/src/lib/instance.ts +0 -211
- package/src/lib/tools.ts +0 -379
- package/src/lib/types.ts +0 -230
- package/test/device-event.ts +0 -88
- package/test/device-events.ts +0 -502
- package/test/device.ts +0 -826
- package/test/instance.ts +0 -428
- package/test/tools.ts +0 -301
- package/tsconfig.json +0 -19
- package/typedoc.json +0 -15
package/dist/lib/tools.js
DELETED
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
import { NodePyATVDeviceState, NodePyATVExecutableType, NodePyATVMediaType, NodePyATVPowerState, NodePyATVRepeatState, NodePyATVShuffleState } from './types.js';
|
|
12
|
-
import { spawn } from 'child_process';
|
|
13
|
-
const requestIds = [];
|
|
14
|
-
export function addRequestId() {
|
|
15
|
-
let id = '?';
|
|
16
|
-
for (let i = 0; i < 1000; i += 1) {
|
|
17
|
-
id = Math.round(Math.random() * (i + 6) * 36).toString(36).toUpperCase();
|
|
18
|
-
if (!requestIds.includes(id)) {
|
|
19
|
-
requestIds.push(id);
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return id;
|
|
24
|
-
}
|
|
25
|
-
export function removeRequestId(id) {
|
|
26
|
-
if (id && requestIds.includes(id)) {
|
|
27
|
-
requestIds.splice(requestIds.indexOf(id), 1);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
export function debug(id, message, options) {
|
|
31
|
-
if (options.debug) {
|
|
32
|
-
const log = typeof options.debug === 'function' ? options.debug : console.log;
|
|
33
|
-
const enableColors = !process.env.NO_COLOR && !options.noColors;
|
|
34
|
-
const parts = [
|
|
35
|
-
enableColors ? '\x1b[0m' : '',
|
|
36
|
-
enableColors ? '\x1b[90m' : '',
|
|
37
|
-
'[node-pyatv][',
|
|
38
|
-
enableColors ? '\x1b[37m' : '',
|
|
39
|
-
id,
|
|
40
|
-
enableColors ? '\x1b[90m' : '',
|
|
41
|
-
'] ',
|
|
42
|
-
enableColors ? '\x1b[0m' : '',
|
|
43
|
-
message
|
|
44
|
-
];
|
|
45
|
-
log.apply(null, [parts.join('')]);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export function getExecutable(executable, options) {
|
|
49
|
-
if (executable === NodePyATVExecutableType.atvremote && typeof options.atvremotePath === 'string') {
|
|
50
|
-
return options.atvremotePath;
|
|
51
|
-
}
|
|
52
|
-
else if (executable === NodePyATVExecutableType.atvscript && typeof options.atvscriptPath === 'string') {
|
|
53
|
-
return options.atvscriptPath;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
return executable;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
export function execute(requestId, executableType, parameters, options) {
|
|
60
|
-
const executable = getExecutable(executableType, options);
|
|
61
|
-
const mySpawn = typeof options.spawn === 'function' ? options.spawn : spawn;
|
|
62
|
-
debug(requestId, `${executable} ${parameters.join(' ')}`, options);
|
|
63
|
-
const child = mySpawn(executable, parameters, {
|
|
64
|
-
env: process.env
|
|
65
|
-
});
|
|
66
|
-
/* eslint-disable @typescript-eslint/no-explicit-any*/
|
|
67
|
-
const onStdOut = (data) => debug(requestId, `stdout: ${String(data).trim()}`, options);
|
|
68
|
-
const onStdErr = (data) => debug(requestId, `stderr: ${String(data).trim()}`, options);
|
|
69
|
-
const onError = (data) => debug(requestId, `error: ${String(data).trim()}`, options);
|
|
70
|
-
/* eslint-enable @typescript-eslint/no-explicit-any*/
|
|
71
|
-
const onClose = (code) => {
|
|
72
|
-
debug(requestId, `${executable} exited with code: ${code}`, options);
|
|
73
|
-
if (child.stdout) {
|
|
74
|
-
child.stdout.off('data', onStdOut);
|
|
75
|
-
}
|
|
76
|
-
if (child.stderr) {
|
|
77
|
-
child.stderr.off('data', onStdErr);
|
|
78
|
-
}
|
|
79
|
-
child.off('error', onError);
|
|
80
|
-
child.off('close', onClose);
|
|
81
|
-
};
|
|
82
|
-
if (child.stdout) {
|
|
83
|
-
child.stdout.on('data', onStdOut);
|
|
84
|
-
}
|
|
85
|
-
if (child.stderr) {
|
|
86
|
-
child.stderr.on('data', onStdErr);
|
|
87
|
-
}
|
|
88
|
-
child.on('error', onError);
|
|
89
|
-
child.on('close', onClose);
|
|
90
|
-
return child;
|
|
91
|
-
}
|
|
92
|
-
export function request(requestId, executableType, parameters, options) {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
const result = {
|
|
95
|
-
stdout: '',
|
|
96
|
-
stderr: '',
|
|
97
|
-
code: 0
|
|
98
|
-
};
|
|
99
|
-
yield new Promise((resolve, reject) => {
|
|
100
|
-
const pyatv = execute(requestId, executableType, parameters, options);
|
|
101
|
-
/* eslint-disable @typescript-eslint/no-explicit-any*/
|
|
102
|
-
const onStdOut = (data) => result.stdout += String(data).trim();
|
|
103
|
-
const onStdErr = (data) => result.stderr += String(data).trim();
|
|
104
|
-
const onError = (data) => reject(data instanceof Error ? data : new Error(String(data)));
|
|
105
|
-
/* eslint-enable @typescript-eslint/no-explicit-any*/
|
|
106
|
-
const onClose = (code) => {
|
|
107
|
-
result.code = code;
|
|
108
|
-
if (pyatv.stdout) {
|
|
109
|
-
pyatv.stdout.off('data', onStdOut);
|
|
110
|
-
}
|
|
111
|
-
if (pyatv.stderr) {
|
|
112
|
-
pyatv.stderr.off('data', onStdErr);
|
|
113
|
-
}
|
|
114
|
-
pyatv.off('error', onError);
|
|
115
|
-
pyatv.off('close', onClose);
|
|
116
|
-
resolve(undefined);
|
|
117
|
-
};
|
|
118
|
-
if (pyatv.stdout) {
|
|
119
|
-
pyatv.stdout.on('data', onStdOut);
|
|
120
|
-
}
|
|
121
|
-
if (pyatv.stderr) {
|
|
122
|
-
pyatv.stderr.on('data', onStdErr);
|
|
123
|
-
}
|
|
124
|
-
pyatv.on('error', onError);
|
|
125
|
-
pyatv.on('close', onClose);
|
|
126
|
-
});
|
|
127
|
-
if (result.stderr.length > 0) {
|
|
128
|
-
const msg = `Unable to execute request ${requestId}: ${result.stderr}`;
|
|
129
|
-
debug(requestId, msg, options);
|
|
130
|
-
throw new Error(msg);
|
|
131
|
-
}
|
|
132
|
-
if (executableType === NodePyATVExecutableType.atvscript) {
|
|
133
|
-
try {
|
|
134
|
-
return JSON.parse(result.stdout);
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
const msg = `Unable to parse result ${requestId} json: ${error}`;
|
|
138
|
-
debug(requestId, msg, options);
|
|
139
|
-
throw new Error(msg);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return result.stdout;
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
export function getParamters(options = {}) {
|
|
146
|
-
const parameters = [];
|
|
147
|
-
if (options.hosts) {
|
|
148
|
-
parameters.push('-s', options.hosts.join(','));
|
|
149
|
-
}
|
|
150
|
-
else if (options.host) {
|
|
151
|
-
parameters.push('-s', options.host);
|
|
152
|
-
}
|
|
153
|
-
if (options.id) {
|
|
154
|
-
parameters.push('-i', options.id);
|
|
155
|
-
}
|
|
156
|
-
if (options.protocol) {
|
|
157
|
-
parameters.push('--protocol', options.protocol);
|
|
158
|
-
}
|
|
159
|
-
if (options.dmapCredentials) {
|
|
160
|
-
parameters.push('--dmap-credentials', options.dmapCredentials);
|
|
161
|
-
}
|
|
162
|
-
if (options.mrpCredentials) {
|
|
163
|
-
parameters.push('--mrp-credentials', options.mrpCredentials);
|
|
164
|
-
}
|
|
165
|
-
if (options.airplayCredentials) {
|
|
166
|
-
parameters.push('--airplay-credentials', options.airplayCredentials);
|
|
167
|
-
}
|
|
168
|
-
if (options.companionCredentials) {
|
|
169
|
-
parameters.push('--companion-credentials', options.companionCredentials);
|
|
170
|
-
}
|
|
171
|
-
if (options.raopCredentials) {
|
|
172
|
-
parameters.push('--raop-credentials', options.raopCredentials);
|
|
173
|
-
}
|
|
174
|
-
return parameters;
|
|
175
|
-
}
|
|
176
|
-
function parseStateStringAttr(input, output, inputAttr, outputAttr, d) {
|
|
177
|
-
if (typeof input[inputAttr] === 'string') {
|
|
178
|
-
output[outputAttr] = input[inputAttr];
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
d(`No ${outputAttr} value found in input (${JSON.stringify(input)})`);
|
|
182
|
-
}
|
|
183
|
-
export function parseState(input, id, options) {
|
|
184
|
-
const d = (msg) => debug(id, msg, options);
|
|
185
|
-
const result = {
|
|
186
|
-
dateTime: null,
|
|
187
|
-
hash: null,
|
|
188
|
-
mediaType: null,
|
|
189
|
-
deviceState: null,
|
|
190
|
-
title: null,
|
|
191
|
-
artist: null,
|
|
192
|
-
album: null,
|
|
193
|
-
genre: null,
|
|
194
|
-
totalTime: null,
|
|
195
|
-
position: null,
|
|
196
|
-
shuffle: null,
|
|
197
|
-
repeat: null,
|
|
198
|
-
app: null,
|
|
199
|
-
appId: null,
|
|
200
|
-
powerState: null
|
|
201
|
-
};
|
|
202
|
-
if (!input || typeof input !== 'object') {
|
|
203
|
-
return result;
|
|
204
|
-
}
|
|
205
|
-
if (input.exception) {
|
|
206
|
-
let errorStr = 'Got pyatv Error: ' + input.exception;
|
|
207
|
-
if (input.stacktrace) {
|
|
208
|
-
errorStr += '\n\npyatv Stacktrace:\n' + input.stacktrace;
|
|
209
|
-
}
|
|
210
|
-
throw new Error(errorStr);
|
|
211
|
-
}
|
|
212
|
-
// datetime
|
|
213
|
-
if (typeof input.datetime === 'string') {
|
|
214
|
-
const date = new Date(input.datetime);
|
|
215
|
-
if (!isNaN(date.getTime())) {
|
|
216
|
-
result.dateTime = date;
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
d(`Invalid datetime value ${input.datetime}, ignore attribute`);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
d(`No datetime value found in input (${JSON.stringify(input)})`);
|
|
224
|
-
}
|
|
225
|
-
// hash
|
|
226
|
-
parseStateStringAttr(input, result, 'hash', 'hash', d);
|
|
227
|
-
// mediaType
|
|
228
|
-
if (typeof input.media_type === 'string') {
|
|
229
|
-
const validValues = Object.keys(NodePyATVMediaType).map(o => String(o));
|
|
230
|
-
if (validValues.includes(input.media_type)) {
|
|
231
|
-
result.mediaType = NodePyATVMediaType[input.media_type];
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
d(`Unsupported mediaType value ${input.media_type}, ignore attribute`);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
d(`No mediaType value found in input (${JSON.stringify(input)})`);
|
|
239
|
-
}
|
|
240
|
-
// deviceState
|
|
241
|
-
if (typeof input.device_state === 'string') {
|
|
242
|
-
const validValues = Object.keys(NodePyATVDeviceState).map(o => String(o));
|
|
243
|
-
if (validValues.includes(input.device_state)) {
|
|
244
|
-
result.deviceState = NodePyATVDeviceState[input.device_state];
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
d(`Unsupported deviceState value ${input.device_state}, ignore attribute`);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
d(`No deviceState value found in input (${JSON.stringify(input)})`);
|
|
252
|
-
}
|
|
253
|
-
// title
|
|
254
|
-
parseStateStringAttr(input, result, 'title', 'title', d);
|
|
255
|
-
// artist
|
|
256
|
-
parseStateStringAttr(input, result, 'artist', 'artist', d);
|
|
257
|
-
// album
|
|
258
|
-
parseStateStringAttr(input, result, 'album', 'album', d);
|
|
259
|
-
// genre
|
|
260
|
-
parseStateStringAttr(input, result, 'genre', 'genre', d);
|
|
261
|
-
// totalTime
|
|
262
|
-
if (typeof input.total_time === 'number') {
|
|
263
|
-
result.totalTime = input.total_time;
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
d(`No totalTime value found in input (${JSON.stringify(input)})`);
|
|
267
|
-
}
|
|
268
|
-
// position
|
|
269
|
-
if (typeof input.position === 'number') {
|
|
270
|
-
result.position = input.position;
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
d(`No position value found in input (${JSON.stringify(input)})`);
|
|
274
|
-
}
|
|
275
|
-
// shuffle
|
|
276
|
-
if (typeof input.shuffle === 'string') {
|
|
277
|
-
const validValues = Object.keys(NodePyATVShuffleState).map(o => String(o));
|
|
278
|
-
if (validValues.includes(input.shuffle)) {
|
|
279
|
-
result.shuffle = NodePyATVShuffleState[input.shuffle];
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
d(`Unsupported shuffle value ${input.shuffle}, ignore attribute`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
d(`No shuffle value found in input (${JSON.stringify(input)})`);
|
|
287
|
-
}
|
|
288
|
-
// repeat
|
|
289
|
-
if (typeof input.repeat === 'string') {
|
|
290
|
-
const validValues = Object.keys(NodePyATVRepeatState).map(o => String(o));
|
|
291
|
-
if (validValues.includes(input.repeat)) {
|
|
292
|
-
result.repeat = NodePyATVRepeatState[input.repeat];
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
d(`Unsupported repeat value ${input.repeat}, ignore attribute`);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
d(`No repeat value found in input (${JSON.stringify(input)})`);
|
|
300
|
-
}
|
|
301
|
-
// app
|
|
302
|
-
parseStateStringAttr(input, result, 'app', 'app', d);
|
|
303
|
-
parseStateStringAttr(input, result, 'app_id', 'appId', d);
|
|
304
|
-
// powerState
|
|
305
|
-
if (typeof input.power_state === 'string') {
|
|
306
|
-
const validValues = Object.keys(NodePyATVPowerState).map(o => String(o));
|
|
307
|
-
if (validValues.includes(input.power_state)) {
|
|
308
|
-
result.powerState = NodePyATVPowerState[input.power_state];
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
d(`Unsupported powerState value ${input.power_state}, ignore attribute`);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
else {
|
|
315
|
-
d(`No powerState value found in input (${JSON.stringify(input)})`);
|
|
316
|
-
}
|
|
317
|
-
return result;
|
|
318
|
-
}
|
|
319
|
-
//# sourceMappingURL=tools.js.map
|
package/dist/lib/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/lib/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { ChildProcess, SpawnOptions } from 'child_process';
|
|
3
|
-
import { FakeChildProcess } from './fake-spawn.js';
|
|
4
|
-
export declare enum NodePyATVExecutableType {
|
|
5
|
-
atvremote = "atvremote",
|
|
6
|
-
atvscript = "atvscript"
|
|
7
|
-
}
|
|
8
|
-
export declare enum NodePyATVProtocol {
|
|
9
|
-
dmap = "dmap",
|
|
10
|
-
mrp = "mrp",
|
|
11
|
-
airplay = "airplay",
|
|
12
|
-
mdns = "mdns"
|
|
13
|
-
}
|
|
14
|
-
export declare enum NodePyATVMediaType {
|
|
15
|
-
music = "music",
|
|
16
|
-
tv = "tv",
|
|
17
|
-
video = "video",
|
|
18
|
-
unknown = "unknown"
|
|
19
|
-
}
|
|
20
|
-
export declare enum NodePyATVDeviceState {
|
|
21
|
-
idle = "idle",
|
|
22
|
-
loading = "loading",
|
|
23
|
-
paused = "paused",
|
|
24
|
-
playing = "playing",
|
|
25
|
-
seeking = "seeking",
|
|
26
|
-
stopped = "stopped"
|
|
27
|
-
}
|
|
28
|
-
export declare enum NodePyATVRepeatState {
|
|
29
|
-
all = "all",
|
|
30
|
-
track = "track",
|
|
31
|
-
off = "off"
|
|
32
|
-
}
|
|
33
|
-
export declare enum NodePyATVShuffleState {
|
|
34
|
-
albums = "albums",
|
|
35
|
-
songs = "songs",
|
|
36
|
-
off = "off"
|
|
37
|
-
}
|
|
38
|
-
export declare enum NodePyATVPowerState {
|
|
39
|
-
on = "on",
|
|
40
|
-
off = "off"
|
|
41
|
-
}
|
|
42
|
-
export declare enum NodePyATVKeys {
|
|
43
|
-
down = "down",
|
|
44
|
-
home = "home",
|
|
45
|
-
homeHold = "homeHold",
|
|
46
|
-
left = "left",
|
|
47
|
-
menu = "menu",
|
|
48
|
-
next = "next",
|
|
49
|
-
pause = "pause",
|
|
50
|
-
play = "play",
|
|
51
|
-
playPause = "playPause",
|
|
52
|
-
previous = "previous",
|
|
53
|
-
right = "right",
|
|
54
|
-
select = "select",
|
|
55
|
-
skipBackward = "skipBackward",
|
|
56
|
-
skipForward = "skipForward",
|
|
57
|
-
stop = "stop",
|
|
58
|
-
suspend = "suspend",
|
|
59
|
-
topMenu = "topMenu",
|
|
60
|
-
up = "up",
|
|
61
|
-
volumeDown = "volumeDown",
|
|
62
|
-
volumeUp = "volumeUp",
|
|
63
|
-
wakeup = "wakeup",
|
|
64
|
-
turnOff = "turnOff",
|
|
65
|
-
turnOn = "turnOn"
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* @internal
|
|
69
|
-
*/
|
|
70
|
-
export declare enum NodePyATVInternalKeys {
|
|
71
|
-
down = "down",
|
|
72
|
-
home = "home",
|
|
73
|
-
homeHold = "home_hold",
|
|
74
|
-
left = "left",
|
|
75
|
-
menu = "menu",
|
|
76
|
-
next = "next",
|
|
77
|
-
pause = "pause",
|
|
78
|
-
play = "play",
|
|
79
|
-
playPause = "play_pause",
|
|
80
|
-
previous = "previous",
|
|
81
|
-
right = "right",
|
|
82
|
-
select = "select",
|
|
83
|
-
skipBackward = "skip_backward",
|
|
84
|
-
skipForward = "skip_forward",
|
|
85
|
-
stop = "stop",
|
|
86
|
-
suspend = "suspend",
|
|
87
|
-
topMenu = "top_menu",
|
|
88
|
-
up = "up",
|
|
89
|
-
volumeDown = "volume_down",
|
|
90
|
-
volumeUp = "volume_up",
|
|
91
|
-
wakeup = "wakeup",
|
|
92
|
-
turnOff = "turn_off",
|
|
93
|
-
turnOn = "turn_on"
|
|
94
|
-
}
|
|
95
|
-
export declare enum NodePyATVListenerState {
|
|
96
|
-
stopped = 0,
|
|
97
|
-
starting = 1,
|
|
98
|
-
started = 2,
|
|
99
|
-
stopping = 3
|
|
100
|
-
}
|
|
101
|
-
export type NodePyATVStateIndex = keyof NodePyATVState;
|
|
102
|
-
export type NodePyATVEventValueType = (string | number | NodePyATVMediaType | NodePyATVDeviceState | NodePyATVShuffleState | NodePyATVRepeatState);
|
|
103
|
-
export interface NodePyATVInstanceOptions {
|
|
104
|
-
atvremotePath?: string;
|
|
105
|
-
atvscriptPath?: string;
|
|
106
|
-
debug?: true | ((msg: string) => void);
|
|
107
|
-
noColors?: true;
|
|
108
|
-
spawn?: (command: string, args: Array<string>, options: SpawnOptions) => (ChildProcess | FakeChildProcess);
|
|
109
|
-
}
|
|
110
|
-
export interface NodePyATVVersionResponse {
|
|
111
|
-
pyatv: string | null;
|
|
112
|
-
module: string | null;
|
|
113
|
-
}
|
|
114
|
-
export interface NodePyATVFindOptions {
|
|
115
|
-
host?: string;
|
|
116
|
-
hosts?: string[];
|
|
117
|
-
id?: string;
|
|
118
|
-
protocol?: NodePyATVProtocol;
|
|
119
|
-
dmapCredentials?: string;
|
|
120
|
-
mrpCredentials?: string;
|
|
121
|
-
airplayCredentials?: string;
|
|
122
|
-
companionCredentials?: string;
|
|
123
|
-
raopCredentials?: string;
|
|
124
|
-
}
|
|
125
|
-
export interface NodePyATVFindAndInstanceOptions extends NodePyATVInstanceOptions, NodePyATVFindOptions {
|
|
126
|
-
}
|
|
127
|
-
export interface NodePyATVDeviceOptions extends NodePyATVFindAndInstanceOptions {
|
|
128
|
-
host: string;
|
|
129
|
-
name: string;
|
|
130
|
-
model?: string;
|
|
131
|
-
modelName?: string;
|
|
132
|
-
os?: string;
|
|
133
|
-
version?: string;
|
|
134
|
-
services?: NodePyATVService[];
|
|
135
|
-
}
|
|
136
|
-
export interface NodePyATVGetStateOptions {
|
|
137
|
-
maxAge?: number;
|
|
138
|
-
}
|
|
139
|
-
export interface NodePyATVService {
|
|
140
|
-
protocol: NodePyATVProtocol;
|
|
141
|
-
port: number;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* @internal
|
|
145
|
-
*/
|
|
146
|
-
export interface NodePyATVInternalScanDevice {
|
|
147
|
-
name: string;
|
|
148
|
-
address: string;
|
|
149
|
-
identifier: string;
|
|
150
|
-
device_info?: {
|
|
151
|
-
model: string;
|
|
152
|
-
model_str: string;
|
|
153
|
-
operating_system: string;
|
|
154
|
-
version: string;
|
|
155
|
-
};
|
|
156
|
-
services?: NodePyATVService[];
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* @internal
|
|
160
|
-
*/
|
|
161
|
-
export interface NodePyATVInternalState {
|
|
162
|
-
result?: string | unknown;
|
|
163
|
-
datetime?: string | unknown;
|
|
164
|
-
hash?: string | unknown;
|
|
165
|
-
media_type?: string | unknown;
|
|
166
|
-
device_state?: string | unknown;
|
|
167
|
-
title?: string | unknown;
|
|
168
|
-
artist?: string | unknown;
|
|
169
|
-
album?: string | unknown;
|
|
170
|
-
genre?: string | unknown;
|
|
171
|
-
total_time?: number | unknown;
|
|
172
|
-
position?: 1 | unknown;
|
|
173
|
-
shuffle?: string | unknown;
|
|
174
|
-
repeat?: string | unknown;
|
|
175
|
-
app?: string | unknown;
|
|
176
|
-
app_id?: string | unknown;
|
|
177
|
-
power_state?: string | unknown;
|
|
178
|
-
push_updates?: string | unknown;
|
|
179
|
-
exception?: string | unknown;
|
|
180
|
-
stacktrace?: string | unknown;
|
|
181
|
-
connection?: string | unknown;
|
|
182
|
-
}
|
|
183
|
-
export interface NodePyATVState {
|
|
184
|
-
dateTime: Date | null;
|
|
185
|
-
hash: string | null;
|
|
186
|
-
mediaType: NodePyATVMediaType | null;
|
|
187
|
-
deviceState: NodePyATVDeviceState | null;
|
|
188
|
-
title: string | null;
|
|
189
|
-
artist: string | null;
|
|
190
|
-
album: string | null;
|
|
191
|
-
genre: string | null;
|
|
192
|
-
totalTime: number | null;
|
|
193
|
-
position: number | null;
|
|
194
|
-
shuffle: NodePyATVShuffleState | null;
|
|
195
|
-
repeat: NodePyATVRepeatState | null;
|
|
196
|
-
app: string | null;
|
|
197
|
-
appId: string | null;
|
|
198
|
-
powerState: NodePyATVPowerState | null;
|
|
199
|
-
}
|
|
200
|
-
export interface NodePyATVApp {
|
|
201
|
-
id: string;
|
|
202
|
-
name: string;
|
|
203
|
-
launch: () => Promise<void>;
|
|
204
|
-
}
|
package/dist/lib/types.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
export var NodePyATVExecutableType;
|
|
2
|
-
(function (NodePyATVExecutableType) {
|
|
3
|
-
NodePyATVExecutableType["atvremote"] = "atvremote";
|
|
4
|
-
NodePyATVExecutableType["atvscript"] = "atvscript";
|
|
5
|
-
})(NodePyATVExecutableType || (NodePyATVExecutableType = {}));
|
|
6
|
-
export var NodePyATVProtocol;
|
|
7
|
-
(function (NodePyATVProtocol) {
|
|
8
|
-
NodePyATVProtocol["dmap"] = "dmap";
|
|
9
|
-
NodePyATVProtocol["mrp"] = "mrp";
|
|
10
|
-
NodePyATVProtocol["airplay"] = "airplay";
|
|
11
|
-
NodePyATVProtocol["mdns"] = "mdns";
|
|
12
|
-
})(NodePyATVProtocol || (NodePyATVProtocol = {}));
|
|
13
|
-
export var NodePyATVMediaType;
|
|
14
|
-
(function (NodePyATVMediaType) {
|
|
15
|
-
NodePyATVMediaType["music"] = "music";
|
|
16
|
-
NodePyATVMediaType["tv"] = "tv";
|
|
17
|
-
NodePyATVMediaType["video"] = "video";
|
|
18
|
-
NodePyATVMediaType["unknown"] = "unknown";
|
|
19
|
-
})(NodePyATVMediaType || (NodePyATVMediaType = {}));
|
|
20
|
-
export var NodePyATVDeviceState;
|
|
21
|
-
(function (NodePyATVDeviceState) {
|
|
22
|
-
NodePyATVDeviceState["idle"] = "idle";
|
|
23
|
-
NodePyATVDeviceState["loading"] = "loading";
|
|
24
|
-
NodePyATVDeviceState["paused"] = "paused";
|
|
25
|
-
NodePyATVDeviceState["playing"] = "playing";
|
|
26
|
-
NodePyATVDeviceState["seeking"] = "seeking";
|
|
27
|
-
NodePyATVDeviceState["stopped"] = "stopped";
|
|
28
|
-
})(NodePyATVDeviceState || (NodePyATVDeviceState = {}));
|
|
29
|
-
export var NodePyATVRepeatState;
|
|
30
|
-
(function (NodePyATVRepeatState) {
|
|
31
|
-
NodePyATVRepeatState["all"] = "all";
|
|
32
|
-
NodePyATVRepeatState["track"] = "track";
|
|
33
|
-
NodePyATVRepeatState["off"] = "off";
|
|
34
|
-
})(NodePyATVRepeatState || (NodePyATVRepeatState = {}));
|
|
35
|
-
export var NodePyATVShuffleState;
|
|
36
|
-
(function (NodePyATVShuffleState) {
|
|
37
|
-
NodePyATVShuffleState["albums"] = "albums";
|
|
38
|
-
NodePyATVShuffleState["songs"] = "songs";
|
|
39
|
-
NodePyATVShuffleState["off"] = "off";
|
|
40
|
-
})(NodePyATVShuffleState || (NodePyATVShuffleState = {}));
|
|
41
|
-
export var NodePyATVPowerState;
|
|
42
|
-
(function (NodePyATVPowerState) {
|
|
43
|
-
NodePyATVPowerState["on"] = "on";
|
|
44
|
-
NodePyATVPowerState["off"] = "off";
|
|
45
|
-
})(NodePyATVPowerState || (NodePyATVPowerState = {}));
|
|
46
|
-
export var NodePyATVKeys;
|
|
47
|
-
(function (NodePyATVKeys) {
|
|
48
|
-
NodePyATVKeys["down"] = "down";
|
|
49
|
-
NodePyATVKeys["home"] = "home";
|
|
50
|
-
NodePyATVKeys["homeHold"] = "homeHold";
|
|
51
|
-
NodePyATVKeys["left"] = "left";
|
|
52
|
-
NodePyATVKeys["menu"] = "menu";
|
|
53
|
-
NodePyATVKeys["next"] = "next";
|
|
54
|
-
NodePyATVKeys["pause"] = "pause";
|
|
55
|
-
NodePyATVKeys["play"] = "play";
|
|
56
|
-
NodePyATVKeys["playPause"] = "playPause";
|
|
57
|
-
NodePyATVKeys["previous"] = "previous";
|
|
58
|
-
NodePyATVKeys["right"] = "right";
|
|
59
|
-
NodePyATVKeys["select"] = "select";
|
|
60
|
-
NodePyATVKeys["skipBackward"] = "skipBackward";
|
|
61
|
-
NodePyATVKeys["skipForward"] = "skipForward";
|
|
62
|
-
NodePyATVKeys["stop"] = "stop";
|
|
63
|
-
NodePyATVKeys["suspend"] = "suspend";
|
|
64
|
-
NodePyATVKeys["topMenu"] = "topMenu";
|
|
65
|
-
NodePyATVKeys["up"] = "up";
|
|
66
|
-
NodePyATVKeys["volumeDown"] = "volumeDown";
|
|
67
|
-
NodePyATVKeys["volumeUp"] = "volumeUp";
|
|
68
|
-
NodePyATVKeys["wakeup"] = "wakeup";
|
|
69
|
-
NodePyATVKeys["turnOff"] = "turnOff";
|
|
70
|
-
NodePyATVKeys["turnOn"] = "turnOn";
|
|
71
|
-
})(NodePyATVKeys || (NodePyATVKeys = {}));
|
|
72
|
-
/**
|
|
73
|
-
* @internal
|
|
74
|
-
*/
|
|
75
|
-
export var NodePyATVInternalKeys;
|
|
76
|
-
(function (NodePyATVInternalKeys) {
|
|
77
|
-
NodePyATVInternalKeys["down"] = "down";
|
|
78
|
-
NodePyATVInternalKeys["home"] = "home";
|
|
79
|
-
NodePyATVInternalKeys["homeHold"] = "home_hold";
|
|
80
|
-
NodePyATVInternalKeys["left"] = "left";
|
|
81
|
-
NodePyATVInternalKeys["menu"] = "menu";
|
|
82
|
-
NodePyATVInternalKeys["next"] = "next";
|
|
83
|
-
NodePyATVInternalKeys["pause"] = "pause";
|
|
84
|
-
NodePyATVInternalKeys["play"] = "play";
|
|
85
|
-
NodePyATVInternalKeys["playPause"] = "play_pause";
|
|
86
|
-
NodePyATVInternalKeys["previous"] = "previous";
|
|
87
|
-
NodePyATVInternalKeys["right"] = "right";
|
|
88
|
-
NodePyATVInternalKeys["select"] = "select";
|
|
89
|
-
NodePyATVInternalKeys["skipBackward"] = "skip_backward";
|
|
90
|
-
NodePyATVInternalKeys["skipForward"] = "skip_forward";
|
|
91
|
-
NodePyATVInternalKeys["stop"] = "stop";
|
|
92
|
-
NodePyATVInternalKeys["suspend"] = "suspend";
|
|
93
|
-
NodePyATVInternalKeys["topMenu"] = "top_menu";
|
|
94
|
-
NodePyATVInternalKeys["up"] = "up";
|
|
95
|
-
NodePyATVInternalKeys["volumeDown"] = "volume_down";
|
|
96
|
-
NodePyATVInternalKeys["volumeUp"] = "volume_up";
|
|
97
|
-
NodePyATVInternalKeys["wakeup"] = "wakeup";
|
|
98
|
-
NodePyATVInternalKeys["turnOff"] = "turn_off";
|
|
99
|
-
NodePyATVInternalKeys["turnOn"] = "turn_on";
|
|
100
|
-
})(NodePyATVInternalKeys || (NodePyATVInternalKeys = {}));
|
|
101
|
-
export var NodePyATVListenerState;
|
|
102
|
-
(function (NodePyATVListenerState) {
|
|
103
|
-
NodePyATVListenerState[NodePyATVListenerState["stopped"] = 0] = "stopped";
|
|
104
|
-
NodePyATVListenerState[NodePyATVListenerState["starting"] = 1] = "starting";
|
|
105
|
-
NodePyATVListenerState[NodePyATVListenerState["started"] = 2] = "started";
|
|
106
|
-
NodePyATVListenerState[NodePyATVListenerState["stopping"] = 3] = "stopping";
|
|
107
|
-
})(NodePyATVListenerState || (NodePyATVListenerState = {}));
|
|
108
|
-
//# sourceMappingURL=types.js.map
|
package/dist/lib/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|