homebridge-adt-pulse 3.0.0-beta.3 → 3.0.0-beta.5
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/build/config.schema.json +237 -0
- package/build/src/index.js +6 -0
- package/build/src/index.js.map +1 -0
- package/build/src/lib/accessory.js +216 -0
- package/build/src/lib/accessory.js.map +1 -0
- package/build/src/lib/api.js +1876 -0
- package/build/src/lib/api.js.map +1 -0
- package/build/src/lib/detect.js +443 -0
- package/build/src/lib/detect.js.map +1 -0
- package/build/src/lib/platform.js +419 -0
- package/build/src/lib/platform.js.map +1 -0
- package/{src/lib/regex.ts → build/src/lib/regex.js} +1 -143
- package/build/src/lib/regex.js.map +1 -0
- package/build/src/lib/schema.js +29 -0
- package/build/src/lib/schema.js.map +1 -0
- package/build/src/lib/utility.js +434 -0
- package/build/src/lib/utility.js.map +1 -0
- package/build/src/scripts/repl.js +173 -0
- package/build/src/scripts/repl.js.map +1 -0
- package/build/src/scripts/test-api.js +171 -0
- package/build/src/scripts/test-api.js.map +1 -0
- package/package.json +4 -4
- package/src/index.ts +0 -18
- package/src/lib/accessory.ts +0 -405
- package/src/lib/api.ts +0 -3483
- package/src/lib/detect.ts +0 -728
- package/src/lib/platform.ts +0 -890
- package/src/lib/schema.ts +0 -34
- package/src/lib/utility.ts +0 -933
- package/src/scripts/repl.ts +0 -300
- package/src/scripts/test-api.ts +0 -278
- package/src/types/constant.d.ts +0 -308
- package/src/types/index.d.ts +0 -1472
- package/src/types/shared.d.ts +0 -517
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { JSDOM } from 'jsdom';
|
|
3
|
+
import _ from 'lodash';
|
|
4
|
+
import { createHash } from 'node:crypto';
|
|
5
|
+
import os from 'node:os';
|
|
6
|
+
import util from 'node:util';
|
|
7
|
+
import { characterBackslashForwardSlash, characterHtmlLineBreak, characterWhitespace, functionDoSubmit, functionGoToUrl, functionSetArmState, paramSat, textOrbSensorZone, textOrbTextSummary, textSyncCode, } from './regex.js';
|
|
8
|
+
export function clearHtmlLineBreak(data) {
|
|
9
|
+
return data.replace(characterHtmlLineBreak, ' ').trim();
|
|
10
|
+
}
|
|
11
|
+
export function clearWhitespace(data) {
|
|
12
|
+
return data.replace(characterWhitespace, ' ').trim();
|
|
13
|
+
}
|
|
14
|
+
export function condenseSensorType(sensorType) {
|
|
15
|
+
let condensed;
|
|
16
|
+
switch (sensorType) {
|
|
17
|
+
case 'Door Sensor':
|
|
18
|
+
case 'Window Sensor':
|
|
19
|
+
case 'Door/Window Sensor':
|
|
20
|
+
condensed = 'doorWindow';
|
|
21
|
+
break;
|
|
22
|
+
case 'Motion Sensor':
|
|
23
|
+
case 'Motion Sensor (Notable Events Only)':
|
|
24
|
+
condensed = 'motion';
|
|
25
|
+
break;
|
|
26
|
+
case 'Glass Break Detector':
|
|
27
|
+
condensed = 'glass';
|
|
28
|
+
break;
|
|
29
|
+
case 'Fire (Smoke/Heat) Detector':
|
|
30
|
+
condensed = 'fire';
|
|
31
|
+
break;
|
|
32
|
+
case 'Carbon Monoxide Detector':
|
|
33
|
+
condensed = 'co';
|
|
34
|
+
break;
|
|
35
|
+
case 'Water/Flood Sensor':
|
|
36
|
+
condensed = 'flood';
|
|
37
|
+
break;
|
|
38
|
+
case 'Temperature Sensor':
|
|
39
|
+
condensed = 'temperature';
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
return condensed;
|
|
45
|
+
}
|
|
46
|
+
export function debugLog(logger, caller, type, message) {
|
|
47
|
+
const logMessage = chalk.reset(chalk.underline(caller), '-', message, '...');
|
|
48
|
+
switch (type) {
|
|
49
|
+
case 'error':
|
|
50
|
+
if (logger !== null) {
|
|
51
|
+
logger.error(chalk.gray('DEBUG'), chalk.redBright('ERROR:'), logMessage);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.error('[ADT Pulse]', chalk.redBright('ERROR:'), logMessage);
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
case 'warn':
|
|
58
|
+
if (logger !== null) {
|
|
59
|
+
logger.warn(chalk.gray('DEBUG'), chalk.yellowBright('WARNING:'), logMessage);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
console.warn('[ADT Pulse]', chalk.yellowBright('WARNING:'), logMessage);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case 'success':
|
|
66
|
+
if (logger !== null) {
|
|
67
|
+
logger.info(chalk.gray('DEBUG'), chalk.greenBright('SUCCESS:'), logMessage);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.info('[ADT Pulse]', chalk.greenBright('SUCCESS:'), logMessage);
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
case 'info':
|
|
74
|
+
if (logger !== null) {
|
|
75
|
+
logger.info(chalk.gray('DEBUG'), chalk.blueBright('INFO:'), logMessage);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.info('[ADT Pulse]', chalk.blueBright('INFO:'), logMessage);
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
default:
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export function fetchErrorMessage(response) {
|
|
86
|
+
if (response === undefined || typeof response.data !== 'string') {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
const jsdom = new JSDOM(response.data, {
|
|
90
|
+
url: response.config.url,
|
|
91
|
+
referrer: response.config.headers.Referer,
|
|
92
|
+
contentType: 'text/html',
|
|
93
|
+
pretendToBeVisual: true,
|
|
94
|
+
});
|
|
95
|
+
const warnMessage = jsdom.window.document.querySelector('#warnMsgContents');
|
|
96
|
+
if (warnMessage !== null) {
|
|
97
|
+
return clearWhitespace(clearHtmlLineBreak(warnMessage.innerHTML));
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
export function fetchMissingSatCode(response) {
|
|
102
|
+
if (typeof response.data !== 'string') {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
const satCode = response.data.match(paramSat);
|
|
106
|
+
if (satCode !== null && satCode.length >= 2) {
|
|
107
|
+
return satCode[1];
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
export function fetchTableCells(nodeElements, matchList, incrementFrom, incrementTo) {
|
|
112
|
+
const matched = {};
|
|
113
|
+
let newIncrementFrom = incrementFrom;
|
|
114
|
+
let newIncrementTo = incrementTo;
|
|
115
|
+
if (incrementFrom < 0) {
|
|
116
|
+
newIncrementFrom = 0;
|
|
117
|
+
}
|
|
118
|
+
if (incrementTo < incrementFrom) {
|
|
119
|
+
newIncrementTo = incrementFrom;
|
|
120
|
+
}
|
|
121
|
+
nodeElements.forEach((nodeElement, nodeElementKey) => {
|
|
122
|
+
const currentNode = nodeElement.textContent;
|
|
123
|
+
if (currentNode === null) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const currentNodeCleaned = clearWhitespace(currentNode);
|
|
127
|
+
const collectedNodes = [];
|
|
128
|
+
if (!matchList.includes(currentNodeCleaned)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
for (let i = newIncrementFrom; i <= newIncrementTo; i += 1) {
|
|
132
|
+
const incrementedNode = nodeElements[nodeElementKey + i].textContent;
|
|
133
|
+
if (incrementedNode !== null) {
|
|
134
|
+
const incrementedNodeCleaned = clearWhitespace(incrementedNode);
|
|
135
|
+
collectedNodes.push(incrementedNodeCleaned);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
matched[currentNodeCleaned] = collectedNodes;
|
|
139
|
+
});
|
|
140
|
+
return matched;
|
|
141
|
+
}
|
|
142
|
+
export function findIndexWithValue(array, condition) {
|
|
143
|
+
let index = -1;
|
|
144
|
+
let value;
|
|
145
|
+
for (let i = 0; i < array.length; i += 1) {
|
|
146
|
+
if (condition(array[i])) {
|
|
147
|
+
index = i;
|
|
148
|
+
value = array[i];
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
index,
|
|
154
|
+
value,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
export function findNullKeys(properties, parentKey = '') {
|
|
158
|
+
const found = [];
|
|
159
|
+
Object.entries(properties).forEach(([propertyKey, property]) => {
|
|
160
|
+
const currentKey = parentKey !== '' ? `${parentKey}.${propertyKey}` : propertyKey;
|
|
161
|
+
if (_.isPlainObject(property)) {
|
|
162
|
+
found.push(...findNullKeys(property, currentKey));
|
|
163
|
+
}
|
|
164
|
+
else if (property == null) {
|
|
165
|
+
found.push(currentKey);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return found;
|
|
169
|
+
}
|
|
170
|
+
export function generateDeviceId(id) {
|
|
171
|
+
return `adt-device-${id}`;
|
|
172
|
+
}
|
|
173
|
+
export function generateDynatracePCHeaderValue(mode) {
|
|
174
|
+
const serverId = _.sample([1, 3, 5, 6]);
|
|
175
|
+
const currentMillis = Date.now().toString();
|
|
176
|
+
const slicedMillis = (mode === 'keep-alive') ? currentMillis.slice(-8) : currentMillis.slice(-9);
|
|
177
|
+
const randomThreeDigit = Math.floor(Math.random() * (932 - 218 + 1)) + 218;
|
|
178
|
+
const randomTwoDigit = Math.floor(Math.random() * (29 - 11 + 1)) + 11;
|
|
179
|
+
const randomAlphabet = _.range(32).map(() => _.sample('ABCDEFGHIJKLMNOPQRSTUVW')).join('');
|
|
180
|
+
return `${serverId}$${slicedMillis}_${randomThreeDigit}h${randomTwoDigit}v${randomAlphabet}-0e0`;
|
|
181
|
+
}
|
|
182
|
+
export function generateHash(data) {
|
|
183
|
+
return createHash('sha512').update(data).digest('hex');
|
|
184
|
+
}
|
|
185
|
+
export function getAccessoryCategory(deviceCategory) {
|
|
186
|
+
switch (deviceCategory) {
|
|
187
|
+
case 'ALARM_SYSTEM':
|
|
188
|
+
return 11;
|
|
189
|
+
case 'OTHER':
|
|
190
|
+
return 1;
|
|
191
|
+
case 'SECURITY_SYSTEM':
|
|
192
|
+
return 11;
|
|
193
|
+
case 'SENSOR':
|
|
194
|
+
return 10;
|
|
195
|
+
default:
|
|
196
|
+
return 1;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
export function getPluralForm(count, singular, plural) {
|
|
200
|
+
if (count === 1) {
|
|
201
|
+
return singular;
|
|
202
|
+
}
|
|
203
|
+
return plural;
|
|
204
|
+
}
|
|
205
|
+
export function isForwardSlashOS() {
|
|
206
|
+
const currentOS = os.platform();
|
|
207
|
+
return [
|
|
208
|
+
'aix',
|
|
209
|
+
'android',
|
|
210
|
+
'darwin',
|
|
211
|
+
'freebsd',
|
|
212
|
+
'haiku',
|
|
213
|
+
'linux',
|
|
214
|
+
'openbsd',
|
|
215
|
+
'sunos',
|
|
216
|
+
'netbsd',
|
|
217
|
+
].includes(currentOS);
|
|
218
|
+
}
|
|
219
|
+
export function isPortalSyncCode(syncCode) {
|
|
220
|
+
return textSyncCode.test(syncCode);
|
|
221
|
+
}
|
|
222
|
+
export function parseArmDisarmMessage(element) {
|
|
223
|
+
if (element === null || element.textContent === null) {
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
return clearWhitespace(element.textContent);
|
|
227
|
+
}
|
|
228
|
+
export function parseDoSubmitHandlers(elements) {
|
|
229
|
+
const handlers = [];
|
|
230
|
+
elements.forEach((element) => {
|
|
231
|
+
const onClick = element.getAttribute('onclick');
|
|
232
|
+
if (onClick === null) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const relativeUrl = onClick.replace(functionDoSubmit, '$1');
|
|
236
|
+
const urlParamsSat = onClick.replace(functionDoSubmit, '$2');
|
|
237
|
+
const urlParamsHref = onClick.replace(functionDoSubmit, '$3').replace(characterBackslashForwardSlash, '/');
|
|
238
|
+
const urlParamsArmState = onClick.replace(functionDoSubmit, '$5');
|
|
239
|
+
const urlParamsArm = onClick.replace(functionDoSubmit, '$6');
|
|
240
|
+
handlers.push({
|
|
241
|
+
relativeUrl,
|
|
242
|
+
urlParams: {
|
|
243
|
+
arm: (urlParamsArm !== '') ? urlParamsArm : null,
|
|
244
|
+
armState: (urlParamsArmState !== '') ? urlParamsArmState : null,
|
|
245
|
+
href: urlParamsHref,
|
|
246
|
+
sat: urlParamsSat,
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
return handlers;
|
|
251
|
+
}
|
|
252
|
+
export function parseOrbSensors(elements) {
|
|
253
|
+
const sensors = [];
|
|
254
|
+
elements.forEach((element) => {
|
|
255
|
+
const canvas = element.querySelector('td:nth-child(1) canvas');
|
|
256
|
+
const name = element.querySelector('td:nth-child(3) a.p_deviceNameText');
|
|
257
|
+
const zone = element.querySelector('td:nth-child(3) span.p_grayNormalText, td:nth-child(3) div.p_grayNormalText');
|
|
258
|
+
const status = element.querySelector('td:nth-child(4)');
|
|
259
|
+
if (canvas !== null && name !== null && zone !== null && status !== null) {
|
|
260
|
+
const canvasIcon = canvas.getAttribute('icon');
|
|
261
|
+
const nameText = name.textContent;
|
|
262
|
+
const zoneText = zone.textContent;
|
|
263
|
+
const statusText = status.textContent;
|
|
264
|
+
if (canvasIcon !== null && nameText !== null && zoneText !== null && statusText !== null) {
|
|
265
|
+
const cleanedIcon = clearWhitespace(canvasIcon);
|
|
266
|
+
const cleanedName = clearWhitespace(nameText);
|
|
267
|
+
const cleanedZone = Number(clearWhitespace(zoneText).replace(textOrbSensorZone, '$2'));
|
|
268
|
+
const cleanedStatus = clearWhitespace(statusText);
|
|
269
|
+
sensors.push({
|
|
270
|
+
icon: cleanedIcon,
|
|
271
|
+
name: cleanedName,
|
|
272
|
+
status: cleanedStatus,
|
|
273
|
+
zone: cleanedZone,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
return sensors.sort((a, b) => a.zone - b.zone);
|
|
279
|
+
}
|
|
280
|
+
export function parseOrbTextSummary(element) {
|
|
281
|
+
if (element === null || element.textContent === null) {
|
|
282
|
+
return {
|
|
283
|
+
state: null,
|
|
284
|
+
status: null,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
const cleanedNode = clearWhitespace(element.textContent);
|
|
288
|
+
const currentState = cleanedNode.replace(textOrbTextSummary, '$1');
|
|
289
|
+
const currentStatus = cleanedNode.replace(textOrbTextSummary, '$2');
|
|
290
|
+
return {
|
|
291
|
+
state: currentState,
|
|
292
|
+
status: (currentStatus !== '') ? currentStatus : null,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
export function parseOrbSecurityButtons(elements) {
|
|
296
|
+
const buttons = [];
|
|
297
|
+
elements.forEach((element) => {
|
|
298
|
+
const disabled = element.getAttribute('disabled');
|
|
299
|
+
const id = element.getAttribute('id');
|
|
300
|
+
const value = element.getAttribute('value');
|
|
301
|
+
const onClick = element.getAttribute('onclick');
|
|
302
|
+
const buttonId = id;
|
|
303
|
+
if (disabled !== null && onClick === null) {
|
|
304
|
+
const pendingButtonText = value;
|
|
305
|
+
buttons.push({
|
|
306
|
+
buttonDisabled: true,
|
|
307
|
+
buttonId,
|
|
308
|
+
buttonText: pendingButtonText,
|
|
309
|
+
});
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
if (disabled === null && onClick !== null) {
|
|
313
|
+
const readyButtonText = value;
|
|
314
|
+
const relativeUrl = onClick.replace(functionSetArmState, '$1');
|
|
315
|
+
const loadingText = onClick.replace(functionSetArmState, '$2');
|
|
316
|
+
const buttonIndex = Number(onClick.replace(functionSetArmState, '$3'));
|
|
317
|
+
const totalButtons = Number(onClick.replace(functionSetArmState, '$4'));
|
|
318
|
+
const changeAccessCode = Boolean(onClick.replace(functionSetArmState, '$5'));
|
|
319
|
+
const urlParamsHref = onClick.replace(functionSetArmState, '$6');
|
|
320
|
+
const urlParamsArmState = onClick.replace(functionSetArmState, '$7');
|
|
321
|
+
const urlParamsArm = onClick.replace(functionSetArmState, '$8');
|
|
322
|
+
const urlParamsSat = onClick.replace(functionSetArmState, '$9');
|
|
323
|
+
buttons.push({
|
|
324
|
+
buttonDisabled: false,
|
|
325
|
+
buttonId,
|
|
326
|
+
buttonIndex,
|
|
327
|
+
buttonText: readyButtonText,
|
|
328
|
+
changeAccessCode,
|
|
329
|
+
loadingText,
|
|
330
|
+
relativeUrl,
|
|
331
|
+
totalButtons,
|
|
332
|
+
urlParams: {
|
|
333
|
+
arm: urlParamsArm,
|
|
334
|
+
armState: urlParamsArmState,
|
|
335
|
+
href: urlParamsHref,
|
|
336
|
+
sat: urlParamsSat,
|
|
337
|
+
},
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
return buttons;
|
|
342
|
+
}
|
|
343
|
+
export function parseSensorsTable(elements) {
|
|
344
|
+
const sensors = [];
|
|
345
|
+
elements.forEach((element) => {
|
|
346
|
+
const onclick = element.getAttribute('onclick');
|
|
347
|
+
const icon = element.querySelector('td:nth-child(1) canvas');
|
|
348
|
+
const name = element.querySelector('td:nth-child(2) a');
|
|
349
|
+
const zone = element.querySelector('td:nth-child(3)');
|
|
350
|
+
const deviceType = element.querySelector('td:nth-child(5)');
|
|
351
|
+
if (onclick !== null && icon !== null && name !== null && zone !== null && deviceType !== null) {
|
|
352
|
+
const deviceId = onclick.replace(functionGoToUrl, '$1');
|
|
353
|
+
const iconTitle = icon.getAttribute('title');
|
|
354
|
+
const nameText = name.textContent;
|
|
355
|
+
const zoneText = zone.textContent;
|
|
356
|
+
const deviceTypeText = deviceType.textContent;
|
|
357
|
+
if (iconTitle !== null && nameText !== null && zoneText !== null && deviceTypeText !== null) {
|
|
358
|
+
const isSensor = clearWhitespace(zoneText) !== '';
|
|
359
|
+
if (isSensor) {
|
|
360
|
+
const cleanedDeviceId = Number(clearWhitespace(deviceId));
|
|
361
|
+
const cleanedDeviceType = clearWhitespace(deviceTypeText);
|
|
362
|
+
const cleanedName = clearWhitespace(nameText);
|
|
363
|
+
const cleanedStatus = clearWhitespace(iconTitle);
|
|
364
|
+
const cleanedZone = Number(clearWhitespace(zoneText));
|
|
365
|
+
sensors.push({
|
|
366
|
+
deviceId: cleanedDeviceId,
|
|
367
|
+
deviceType: cleanedDeviceType,
|
|
368
|
+
name: cleanedName,
|
|
369
|
+
status: cleanedStatus,
|
|
370
|
+
zone: cleanedZone,
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
return sensors.sort((a, b) => a.zone - b.zone);
|
|
377
|
+
}
|
|
378
|
+
export function removePersonalIdentifiableInformation(data) {
|
|
379
|
+
const redactedKeys = [
|
|
380
|
+
'ip',
|
|
381
|
+
'lanIp',
|
|
382
|
+
'mac',
|
|
383
|
+
'masterCode',
|
|
384
|
+
'sat',
|
|
385
|
+
'serialNumber',
|
|
386
|
+
'wanIp',
|
|
387
|
+
];
|
|
388
|
+
const replaceValue = (object) => {
|
|
389
|
+
const modifiedObject = {};
|
|
390
|
+
Object.keys(object).forEach((key) => {
|
|
391
|
+
const value = object[key];
|
|
392
|
+
if (_.isPlainObject(value)) {
|
|
393
|
+
modifiedObject[key] = replaceValue(value);
|
|
394
|
+
}
|
|
395
|
+
else if (redactedKeys.includes(key)) {
|
|
396
|
+
modifiedObject[key] = '*** REDACTED FOR PRIVACY ***';
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
modifiedObject[key] = value;
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
return modifiedObject;
|
|
403
|
+
};
|
|
404
|
+
if (Array.isArray(data)) {
|
|
405
|
+
return data.map(replaceValue);
|
|
406
|
+
}
|
|
407
|
+
return replaceValue(data);
|
|
408
|
+
}
|
|
409
|
+
export async function sleep(milliseconds) {
|
|
410
|
+
return new Promise((resolve) => {
|
|
411
|
+
setTimeout(resolve, milliseconds);
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
export function stackTracer(type, error) {
|
|
415
|
+
let stringError;
|
|
416
|
+
switch (type) {
|
|
417
|
+
case 'api-response':
|
|
418
|
+
case 'detect-content':
|
|
419
|
+
case 'serialize-error':
|
|
420
|
+
stringError = util.inspect(error, {
|
|
421
|
+
showHidden: false,
|
|
422
|
+
depth: Infinity,
|
|
423
|
+
colors: false,
|
|
424
|
+
});
|
|
425
|
+
break;
|
|
426
|
+
case 'zod-error':
|
|
427
|
+
stringError = JSON.stringify(error, null, 2).replace(/\\"/g, '\'');
|
|
428
|
+
break;
|
|
429
|
+
default:
|
|
430
|
+
break;
|
|
431
|
+
}
|
|
432
|
+
console.error(chalk.yellowBright(stringError));
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../../src/lib/utility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import repl from 'node:repl';
|
|
3
|
+
import { ADTPulse } from '../lib/api.js';
|
|
4
|
+
class ADTPulseRepl {
|
|
5
|
+
#api;
|
|
6
|
+
#replServer;
|
|
7
|
+
async startRepl() {
|
|
8
|
+
ADTPulseRepl.displayStartupHeader();
|
|
9
|
+
ADTPulseRepl.displayHelpMenu();
|
|
10
|
+
this.#replServer = repl.start({
|
|
11
|
+
ignoreUndefined: true,
|
|
12
|
+
prompt: '> ',
|
|
13
|
+
});
|
|
14
|
+
this.#replServer.context.repl = this;
|
|
15
|
+
this.#replServer.defineCommand('break', {
|
|
16
|
+
help: 'Sometimes you get stuck, this gets you out',
|
|
17
|
+
action() {
|
|
18
|
+
ADTPulseRepl.colorLog('error', 'The ".break" command is not allowed.');
|
|
19
|
+
this.displayPrompt();
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
this.#replServer.defineCommand('clear', {
|
|
23
|
+
help: 'Break, and also clear the local context',
|
|
24
|
+
action() {
|
|
25
|
+
ADTPulseRepl.colorLog('error', 'The ".clear" command is not allowed.');
|
|
26
|
+
this.displayPrompt();
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
this.#replServer.defineCommand('editor', {
|
|
30
|
+
help: 'Enter editor mode',
|
|
31
|
+
action() {
|
|
32
|
+
ADTPulseRepl.colorLog('error', 'The ".editor" command is not allowed.');
|
|
33
|
+
this.displayPrompt();
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
this.#replServer.defineCommand('help', {
|
|
37
|
+
help: 'Print this help message',
|
|
38
|
+
action() {
|
|
39
|
+
ADTPulseRepl.displayHelpHeader();
|
|
40
|
+
ADTPulseRepl.displayHelpMenu();
|
|
41
|
+
this.displayPrompt();
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
this.#replServer.defineCommand('load', {
|
|
45
|
+
help: 'Load JS from a file into the REPL session',
|
|
46
|
+
action() {
|
|
47
|
+
ADTPulseRepl.colorLog('error', 'The ".load" command is not allowed.');
|
|
48
|
+
this.displayPrompt();
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
this.#replServer.defineCommand('save', {
|
|
52
|
+
help: 'Save all evaluated commands in this REPL session to a file',
|
|
53
|
+
action() {
|
|
54
|
+
ADTPulseRepl.colorLog('error', 'The ".save" command is not allowed.');
|
|
55
|
+
this.displayPrompt();
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
setInstance(subdomain, username, password, fingerprint) {
|
|
60
|
+
if (subdomain !== 'portal' && subdomain !== 'portal-ca') {
|
|
61
|
+
ADTPulseRepl.colorLog('error', 'Invalid subdomain specified. Valid values are either "portal" or "portal-ca".');
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (typeof username !== 'string' || username === '') {
|
|
65
|
+
ADTPulseRepl.colorLog('error', 'Username must be a string and cannot be empty.');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (typeof password !== 'string' || password === '') {
|
|
69
|
+
ADTPulseRepl.colorLog('error', 'Password must be a string and cannot be empty.');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (typeof fingerprint !== 'string' || fingerprint === '') {
|
|
73
|
+
ADTPulseRepl.colorLog('error', 'Fingerprint must be a string and cannot be empty.');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.#api = new ADTPulse({
|
|
77
|
+
platform: 'ADTPulse',
|
|
78
|
+
subdomain,
|
|
79
|
+
username,
|
|
80
|
+
password,
|
|
81
|
+
fingerprint,
|
|
82
|
+
sensors: [],
|
|
83
|
+
}, {
|
|
84
|
+
debug: true,
|
|
85
|
+
});
|
|
86
|
+
if (this.#replServer === undefined) {
|
|
87
|
+
ADTPulseRepl.colorLog('error', 'Failed to set context because "this.#replServer" is undefined.');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
this.#replServer.context.api = this.#api;
|
|
91
|
+
ADTPulseRepl.colorLog('info', 'Instance has been successfully set.');
|
|
92
|
+
ADTPulseRepl.colorLog('info', 'You may now use the available API methods to test the system!');
|
|
93
|
+
ADTPulseRepl.colorLog('info', '\n');
|
|
94
|
+
}
|
|
95
|
+
static colorLog(type, message) {
|
|
96
|
+
switch (type) {
|
|
97
|
+
case 'error':
|
|
98
|
+
console.error(chalk.redBright(message));
|
|
99
|
+
break;
|
|
100
|
+
case 'info':
|
|
101
|
+
console.info(chalk.greenBright(message));
|
|
102
|
+
break;
|
|
103
|
+
default:
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
static displayHelpHeader() {
|
|
108
|
+
console.info([
|
|
109
|
+
chalk.cyanBright('########################################################'),
|
|
110
|
+
chalk.cyanBright('#### ADT Pulse for Homebridge Plugin REPL Help Menu ####'),
|
|
111
|
+
chalk.cyanBright('########################################################'),
|
|
112
|
+
'',
|
|
113
|
+
'This is the help menu on how to use this REPL interface. If you have questions on how',
|
|
114
|
+
'to use this, please refer to the documentation using the link below:',
|
|
115
|
+
'',
|
|
116
|
+
'https://github.com/mrjackyliang/homebridge-adt-pulse',
|
|
117
|
+
].join('\n'));
|
|
118
|
+
}
|
|
119
|
+
static displayHelpMenu() {
|
|
120
|
+
console.info([
|
|
121
|
+
'',
|
|
122
|
+
chalk.bold('Method parameter documentation:'),
|
|
123
|
+
` {'portal' | 'portal-ca'} ${chalk.magentaBright('subdomain')} - Set the domain for either USA or Canada subscribers`,
|
|
124
|
+
` {string} ${chalk.magentaBright('username')} - The username for logging in to ADT Pulse portal`,
|
|
125
|
+
` {string} ${chalk.magentaBright('password')} - The password for logging in to ADT Pulse portal`,
|
|
126
|
+
` {string} ${chalk.magentaBright('fingerprint')} - The fingerprint for logging in to ADT Pulse portal`,
|
|
127
|
+
` {'arm' | 'night' | 'off' | 'stay'} ${chalk.magentaBright('armTo')} - Available methods to arm the system`,
|
|
128
|
+
'',
|
|
129
|
+
chalk.bold('Before you use the API, set the instance using this command:'),
|
|
130
|
+
` ${chalk.yellowBright(`repl.setInstance(${chalk.magentaBright('subdomain')}, ${chalk.magentaBright('username')}, ${chalk.magentaBright('password')}, ${chalk.magentaBright('fingerprint')});`)}`,
|
|
131
|
+
'',
|
|
132
|
+
chalk.bold('Once an instance is set, interact with the portal using these methods:'),
|
|
133
|
+
` ${chalk.yellowBright('await api.login();')}`,
|
|
134
|
+
` ${chalk.yellowBright('await api.logout();')}`,
|
|
135
|
+
` ${chalk.yellowBright('await api.getGatewayInformation();')}`,
|
|
136
|
+
` ${chalk.yellowBright('await api.getPanelInformation();')}`,
|
|
137
|
+
` ${chalk.yellowBright('await api.getPanelStatus();')}`,
|
|
138
|
+
` ${chalk.yellowBright(`await api.setPanelStatus(${chalk.magentaBright('armTo')});`)}`,
|
|
139
|
+
` ${chalk.yellowBright('await api.getSensorsInformation();')}`,
|
|
140
|
+
` ${chalk.yellowBright('await api.getSensorsStatus();')}`,
|
|
141
|
+
` ${chalk.yellowBright('await api.performSyncCheck();')}`,
|
|
142
|
+
` ${chalk.yellowBright('await api.performKeepAlive();')}`,
|
|
143
|
+
` ${chalk.yellowBright(' api.isAuthenticated();')}`,
|
|
144
|
+
'',
|
|
145
|
+
chalk.bold('You may also wrap the above methods with this to see the entire response:'),
|
|
146
|
+
` ${chalk.yellowBright(`console.log(util.inspect(${chalk.magentaBright('replace me without the ending semi-colon')}, false, null, true));`)}`,
|
|
147
|
+
chalk.bold('A small reference for REPL commands:'),
|
|
148
|
+
` ${chalk.yellowBright('.exit')}`,
|
|
149
|
+
` ${chalk.yellowBright('.help')}`,
|
|
150
|
+
'',
|
|
151
|
+
].join('\n'));
|
|
152
|
+
}
|
|
153
|
+
static displayStartupHeader() {
|
|
154
|
+
console.info([
|
|
155
|
+
chalk.cyanBright('##############################################################'),
|
|
156
|
+
chalk.cyanBright('#### ADT Pulse for Homebridge Plugin REPL ####'),
|
|
157
|
+
chalk.cyanBright('#### https://github.com/mrjackyliang/homebridge-adt-pulse ####'),
|
|
158
|
+
chalk.cyanBright('#### ####'),
|
|
159
|
+
chalk.cyanBright('#### Copyright (c) 2023 Jacky Liang. ISC License. ####'),
|
|
160
|
+
chalk.cyanBright('##############################################################'),
|
|
161
|
+
'',
|
|
162
|
+
'Welcome to the REPL interface for ADT Pulse for Homebridge. This interface',
|
|
163
|
+
'allows you to interact with the ADT Pulse portal via the included API and is designed',
|
|
164
|
+
`for advanced users only. ${chalk.redBright('PLEASE USE WITH CAUTION, NO WARRANTY IS PROVIDED.')}`,
|
|
165
|
+
'',
|
|
166
|
+
`${chalk.bold.yellowBright('NOTICE')}: The API gathers anonymous analytics to detect potential bugs or issues.`,
|
|
167
|
+
' All personally identifiable information redacted. You will see exactly what will be sent out.',
|
|
168
|
+
].join('\n'));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
const adtPulseRepl = new ADTPulseRepl();
|
|
172
|
+
await adtPulseRepl.startRepl();
|
|
173
|
+
//# sourceMappingURL=repl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../../../src/scripts/repl.ts"],"names":[],"mappings":"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"}
|