@homebridge-plugins/homebridge-updater 3.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +117 -0
  3. package/config.schema.json +257 -0
  4. package/dist/Platform.HAP.d.ts +16 -0
  5. package/dist/Platform.HAP.d.ts.map +1 -0
  6. package/dist/Platform.HAP.js +77 -0
  7. package/dist/Platform.HAP.js.map +1 -0
  8. package/dist/Platform.Matter.d.ts +7 -0
  9. package/dist/Platform.Matter.d.ts.map +1 -0
  10. package/dist/Platform.Matter.js +21 -0
  11. package/dist/Platform.Matter.js.map +1 -0
  12. package/dist/configMigration.d.ts +4 -0
  13. package/dist/configMigration.d.ts.map +1 -0
  14. package/dist/configMigration.js +45 -0
  15. package/dist/configMigration.js.map +1 -0
  16. package/dist/configMigration.test.d.ts +2 -0
  17. package/dist/configMigration.test.d.ts.map +1 -0
  18. package/dist/configMigration.test.js +23 -0
  19. package/dist/configMigration.test.js.map +1 -0
  20. package/dist/configTypes.d.ts +24 -0
  21. package/dist/configTypes.d.ts.map +1 -0
  22. package/dist/configTypes.js +2 -0
  23. package/dist/configTypes.js.map +1 -0
  24. package/dist/configTypes.test.d.ts +2 -0
  25. package/dist/configTypes.test.d.ts.map +1 -0
  26. package/dist/configTypes.test.js +108 -0
  27. package/dist/configTypes.test.js.map +1 -0
  28. package/dist/failureSensor.d.ts +17 -0
  29. package/dist/failureSensor.d.ts.map +1 -0
  30. package/dist/failureSensor.js +36 -0
  31. package/dist/failureSensor.js.map +1 -0
  32. package/dist/homebridge-ui/public/index.html +230 -0
  33. package/dist/homebridge-ui/server.d.ts +2 -0
  34. package/dist/homebridge-ui/server.d.ts.map +1 -0
  35. package/dist/homebridge-ui/server.js +47 -0
  36. package/dist/homebridge-ui/server.js.map +1 -0
  37. package/dist/ignore-plugins.test.d.ts +2 -0
  38. package/dist/ignore-plugins.test.d.ts.map +1 -0
  39. package/dist/ignore-plugins.test.js +121 -0
  40. package/dist/ignore-plugins.test.js.map +1 -0
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +12 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/index.test.d.ts +2 -0
  46. package/dist/index.test.d.ts.map +1 -0
  47. package/dist/index.test.js +8 -0
  48. package/dist/index.test.js.map +1 -0
  49. package/dist/schema.test.d.ts +2 -0
  50. package/dist/schema.test.d.ts.map +1 -0
  51. package/dist/schema.test.js +109 -0
  52. package/dist/schema.test.js.map +1 -0
  53. package/dist/sensorBase.d.ts +39 -0
  54. package/dist/sensorBase.d.ts.map +1 -0
  55. package/dist/sensorBase.js +309 -0
  56. package/dist/sensorBase.js.map +1 -0
  57. package/dist/settings.d.ts +11 -0
  58. package/dist/settings.d.ts.map +1 -0
  59. package/dist/settings.js +11 -0
  60. package/dist/settings.js.map +1 -0
  61. package/dist/ui-api.d.ts +40 -0
  62. package/dist/ui-api.d.ts.map +1 -0
  63. package/dist/ui-api.js +522 -0
  64. package/dist/ui-api.js.map +1 -0
  65. package/dist/updateCheckCore.d.ts +46 -0
  66. package/dist/updateCheckCore.d.ts.map +1 -0
  67. package/dist/updateCheckCore.js +433 -0
  68. package/dist/updateCheckCore.js.map +1 -0
  69. package/dist/updateSensor.d.ts +21 -0
  70. package/dist/updateSensor.d.ts.map +1 -0
  71. package/dist/updateSensor.js +75 -0
  72. package/dist/updateSensor.js.map +1 -0
  73. package/dist/updateSensor.test.d.ts +2 -0
  74. package/dist/updateSensor.test.d.ts.map +1 -0
  75. package/dist/updateSensor.test.js +133 -0
  76. package/dist/updateSensor.test.js.map +1 -0
  77. package/dist/utils.d.ts +22 -0
  78. package/dist/utils.d.ts.map +1 -0
  79. package/dist/utils.js +75 -0
  80. package/dist/utils.js.map +1 -0
  81. package/dist/utils.test.d.ts +2 -0
  82. package/dist/utils.test.d.ts.map +1 -0
  83. package/dist/utils.test.js +126 -0
  84. package/dist/utils.test.js.map +1 -0
  85. package/package.json +96 -0
@@ -0,0 +1,433 @@
1
+ import { Cron } from 'croner';
2
+ import { spawnSync } from 'node:child_process';
3
+ import https from 'node:https';
4
+ import { UiApi } from './ui-api.js';
5
+ export class UpdateCheckCore {
6
+ checkNode;
7
+ checkNpm;
8
+ nodeUpdates = [];
9
+ npmUpdates = [];
10
+ log;
11
+ config;
12
+ uiApi;
13
+ respectDisabledPlugins;
14
+ checkHB;
15
+ checkHBUI;
16
+ checkPlugins;
17
+ checkDocker;
18
+ isDocker;
19
+ initialCheckDelay;
20
+ hbUpdates = [];
21
+ hbUIUpdates = [];
22
+ pluginUpdates = [];
23
+ dockerUpdates = [];
24
+ firstDailyRun = true;
25
+ lastAutoUpdateFailed = false;
26
+ constructor(log, config, storagePath, isDocker) {
27
+ this.log = log;
28
+ this.config = config;
29
+ this.uiApi = new UiApi(storagePath, log);
30
+ this.isDocker = isDocker;
31
+ this.respectDisabledPlugins = this.config.respectDisabledPlugins ?? true;
32
+ this.checkHB = this.config.checkHomebridgeUpdates ?? false;
33
+ this.checkHBUI = this.config.checkHomebridgeUIUpdates ?? false;
34
+ this.checkPlugins = this.config.checkPluginUpdates ?? false;
35
+ this.checkDocker = this.config.checkDockerUpdates ?? false;
36
+ this.initialCheckDelay = this.config.initialCheckDelay ?? 10;
37
+ this.checkNode = this.config.checkNodeUpdates ?? false;
38
+ this.checkNpm = this.config.checkNpmUpdates ?? false;
39
+ }
40
+ async checkUi() {
41
+ this.lastAutoUpdateFailed = false;
42
+ this.log.debug('Searching for available updates ...');
43
+ const isFirstDailyRun = this.firstDailyRun === true;
44
+ const updatesAvailable = [];
45
+ let ignoredPlugins = [];
46
+ // Node.js update check (after variable declarations)
47
+ if (this.checkNode) {
48
+ try {
49
+ const currentVersion = process.versions.node;
50
+ // Fetch latest LTS version from Node.js API
51
+ const latestLtsVersion = await new Promise((resolve, reject) => {
52
+ const req = https.get('https://nodejs.org/dist/index.json', (res) => {
53
+ let data = '';
54
+ res.on('data', (chunk) => { data += chunk; });
55
+ res.on('end', () => {
56
+ try {
57
+ const releases = JSON.parse(data);
58
+ // Find latest LTS
59
+ const ltsReleases = releases.filter((r) => r.lts);
60
+ if (ltsReleases.length === 0)
61
+ return reject('No LTS releases found');
62
+ // Sort by version descending
63
+ ltsReleases.sort((a, b) => b.version.localeCompare(a.version, undefined, { numeric: true }));
64
+ const latest = ltsReleases[0].version.replace(/^v/, '');
65
+ resolve(latest);
66
+ }
67
+ catch (e) {
68
+ reject(e);
69
+ }
70
+ });
71
+ });
72
+ req.on('error', reject);
73
+ });
74
+ // Compare versions (semver)
75
+ const semverCompare = (a, b) => {
76
+ const pa = a.split('.').map(Number), pb = b.split('.').map(Number);
77
+ for (let i = 0; i < 3; ++i) {
78
+ if (pa[i] > pb[i])
79
+ return 1;
80
+ if (pa[i] < pb[i])
81
+ return -1;
82
+ }
83
+ return 0;
84
+ };
85
+ if (semverCompare(currentVersion, latestLtsVersion) < 0) {
86
+ const isNew = this.nodeUpdates.length === 0 || !this.nodeUpdates.includes(latestLtsVersion);
87
+ const logLevel = isFirstDailyRun || isNew ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */;
88
+ this.log.log(logLevel, `Node.js update available: ${currentVersion} → ${latestLtsVersion}`);
89
+ this.nodeUpdates = [latestLtsVersion];
90
+ updatesAvailable.push({
91
+ name: 'node',
92
+ installedVersion: currentVersion,
93
+ latestVersion: latestLtsVersion,
94
+ updateAvailable: true,
95
+ });
96
+ // Auto-update Node.js if enabled and supported
97
+ if (this.config.autoUpdateNode) {
98
+ const { spawnSync } = await import('node:child_process');
99
+ // Check if hb-service supports update-node
100
+ const help = spawnSync('hb-service', ['--help'], { encoding: 'utf8' });
101
+ if (help.stdout && help.stdout.includes('update-node')) {
102
+ this.log.info('Attempting to auto-update Node.js using hb-service update-node ...');
103
+ const result = spawnSync('hb-service', ['update-node'], { encoding: 'utf8' });
104
+ if (result.status === 0) {
105
+ this.log.info('Node.js auto-update completed successfully. A system restart may be required.');
106
+ }
107
+ else {
108
+ this.lastAutoUpdateFailed = true;
109
+ this.log.error(`Node.js auto-update failed: ${result.stderr || result.stdout}`);
110
+ }
111
+ }
112
+ else {
113
+ this.lastAutoUpdateFailed = true;
114
+ this.log.warn('hb-service update-node is not supported on this system.');
115
+ }
116
+ }
117
+ }
118
+ else {
119
+ this.log.debug(`Node.js is up to date (current: ${currentVersion}, latest LTS: ${latestLtsVersion})`);
120
+ }
121
+ }
122
+ catch (err) {
123
+ this.lastAutoUpdateFailed = true;
124
+ this.log.warn(`Failed to check Node.js updates: ${err}`);
125
+ }
126
+ }
127
+ if (this.checkNpm) {
128
+ try {
129
+ const currentNpmVersion = this.getLocalNpmVersion();
130
+ if (!currentNpmVersion) {
131
+ this.log.debug('npm command is not available on this system; skipping npm update check.');
132
+ }
133
+ else {
134
+ const latestNpmVersion = await this.getLatestNpmVersion();
135
+ if (this.compareSemver(currentNpmVersion, latestNpmVersion) < 0) {
136
+ const isNew = this.npmUpdates.length === 0 || !this.npmUpdates.includes(latestNpmVersion);
137
+ const logLevel = isFirstDailyRun || isNew ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */;
138
+ this.log.log(logLevel, `npm update available: ${currentNpmVersion} -> ${latestNpmVersion}`);
139
+ this.npmUpdates = [latestNpmVersion];
140
+ updatesAvailable.push({
141
+ name: 'npm',
142
+ installedVersion: currentNpmVersion,
143
+ latestVersion: latestNpmVersion,
144
+ updateAvailable: true,
145
+ });
146
+ }
147
+ else {
148
+ this.log.debug(`npm is up to date (current: ${currentNpmVersion}, latest: ${latestNpmVersion})`);
149
+ }
150
+ }
151
+ }
152
+ catch (err) {
153
+ this.log.warn(`Failed to check npm updates: ${err}`);
154
+ }
155
+ }
156
+ // (removed duplicate declarations)
157
+ if (this.respectDisabledPlugins) {
158
+ try {
159
+ ignoredPlugins = await this.uiApi.getIgnoredPlugins();
160
+ this.log.debug(`Retrieved ${ignoredPlugins.length} ignored plugin(s) from homebridge-config-ui-x: ${ignoredPlugins.join(', ')}`);
161
+ }
162
+ catch (error) {
163
+ this.log.warn(`Failed to retrieve ignored plugins list, filtering disabled: ${error}`);
164
+ ignoredPlugins = [];
165
+ }
166
+ }
167
+ else {
168
+ this.log.debug('respectDisabledPlugins is disabled, skipping plugin filtering');
169
+ }
170
+ if (this.checkHB) {
171
+ const homebridge = await this.uiApi.getHomebridge();
172
+ if (homebridge.updateAvailable) {
173
+ const isIgnored = this.respectDisabledPlugins && ignoredPlugins.includes('homebridge');
174
+ if (!isIgnored) {
175
+ updatesAvailable.push(homebridge);
176
+ const version = homebridge.latestVersion;
177
+ const isNew = this.hbUpdates.length === 0 || !this.hbUpdates.includes(version);
178
+ const logLevel = isFirstDailyRun || isNew ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */;
179
+ this.log.log(logLevel, `Homebridge update available: ${version}`);
180
+ this.hbUpdates = [version];
181
+ }
182
+ else {
183
+ this.log.debug(`Ignoring Homebridge core update: ${homebridge.latestVersion} (update notifications disabled in homebridge-config-ui-x)`);
184
+ }
185
+ }
186
+ }
187
+ if (this.checkHBUI || this.checkPlugins) {
188
+ const plugins = await this.uiApi.getPlugins();
189
+ if (this.checkHBUI) {
190
+ const homebridgeUiPlugins = plugins.filter(plugin => plugin.name === 'homebridge-config-ui-x');
191
+ homebridgeUiPlugins.forEach((homebridgeUI) => {
192
+ if (homebridgeUI.updateAvailable) {
193
+ const isIgnored = this.respectDisabledPlugins && ignoredPlugins.includes('homebridge-config-ui-x');
194
+ if (!isIgnored) {
195
+ updatesAvailable.push(homebridgeUI);
196
+ const version = homebridgeUI.latestVersion;
197
+ const isNew = this.hbUIUpdates.length === 0 || !this.hbUIUpdates.includes(version);
198
+ const logLevel = isFirstDailyRun || isNew ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */;
199
+ this.log.log(logLevel, `Homebridge UI update available: ${version}`);
200
+ this.hbUIUpdates = [version];
201
+ }
202
+ else {
203
+ this.log.debug(`Ignoring Homebridge UI update: ${homebridgeUI.latestVersion} (update notifications disabled in homebridge-config-ui-x)`);
204
+ }
205
+ }
206
+ });
207
+ }
208
+ if (this.checkPlugins) {
209
+ this.log.debug(`Checking ${plugins.length} plugins for updates (respectDisabledPlugins: ${this.respectDisabledPlugins})`);
210
+ const filteredPlugins = plugins.filter((plugin) => {
211
+ if (plugin.name === 'homebridge-config-ui-x') {
212
+ return false;
213
+ }
214
+ if (this.respectDisabledPlugins) {
215
+ if (ignoredPlugins.includes(plugin.name)) {
216
+ this.log.debug(`Filtering out plugin ${plugin.name} (ignored in homebridge-config-ui-x)`);
217
+ return false;
218
+ }
219
+ }
220
+ return true;
221
+ });
222
+ filteredPlugins.forEach((plugin) => {
223
+ if (plugin.updateAvailable) {
224
+ updatesAvailable.push(plugin);
225
+ const version = plugin.latestVersion;
226
+ const isNew = this.pluginUpdates.length === 0 || !this.pluginUpdates.includes(version);
227
+ const logLevel = isFirstDailyRun || isNew ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */;
228
+ this.log.log(logLevel, `Homebridge plugin update available: ${plugin.name} ${plugin.latestVersion}`);
229
+ this.pluginUpdates.push(version);
230
+ }
231
+ });
232
+ if (this.respectDisabledPlugins) {
233
+ const ignoredWithUpdates = plugins.filter(plugin => plugin.name !== 'homebridge-config-ui-x'
234
+ && plugin.updateAvailable
235
+ && ignoredPlugins.includes(plugin.name));
236
+ if (ignoredWithUpdates.length > 0) {
237
+ this.log.info(`Ignoring updates for ${ignoredWithUpdates.length} plugin(s): ${ignoredWithUpdates.map(p => p.name).join(', ')}`);
238
+ }
239
+ }
240
+ }
241
+ }
242
+ if (this.isDocker && this.checkDocker) {
243
+ const docker = await this.uiApi.getDocker();
244
+ if (docker.updateAvailable) {
245
+ updatesAvailable.push(docker);
246
+ const version = docker.latestVersion;
247
+ const isNew = this.dockerUpdates.length === 0 || !this.dockerUpdates.includes(version);
248
+ const logLevel = isFirstDailyRun || isNew ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */;
249
+ this.log.log(logLevel, `Docker update available: ${version}`);
250
+ this.dockerUpdates = [version];
251
+ }
252
+ }
253
+ // Log summary: suppress or debug if no updates, info/debug if updates
254
+ if (updatesAvailable.length === 0) {
255
+ this.log.debug(`Found 0 available update(s)`);
256
+ }
257
+ else {
258
+ this.log.log(isFirstDailyRun ? "info" /* LogLevel.INFO */ : "debug" /* LogLevel.DEBUG */, `Found ${updatesAvailable.length} available update(s)`);
259
+ }
260
+ if (this.respectDisabledPlugins && ignoredPlugins.length > 0) {
261
+ this.log.debug(`Filtering enabled with ${ignoredPlugins.length} ignored plugins: ${ignoredPlugins.join(', ')}`);
262
+ }
263
+ else if (this.respectDisabledPlugins) {
264
+ this.log.debug('Filtering enabled but no ignored plugins found');
265
+ }
266
+ else {
267
+ this.log.debug('Plugin filtering is disabled (respectDisabledPlugins: false)');
268
+ }
269
+ await this.handleConfiguredAutoUpdates(updatesAvailable);
270
+ return updatesAvailable.length;
271
+ }
272
+ getLastAutoUpdateFailed() {
273
+ return this.lastAutoUpdateFailed;
274
+ }
275
+ async handleConfiguredAutoUpdates(updatesAvailable) {
276
+ const shouldAutoUpdateHomebridge = this.config.autoUpdateHomebridge === true;
277
+ const shouldAutoUpdateUi = this.config.autoUpdateHomebridgeUI === true;
278
+ const shouldAutoUpdatePlugins = this.config.autoUpdatePlugins === true;
279
+ const shouldAutoUpdateNpm = this.config.autoUpdateNpm === true;
280
+ if (!shouldAutoUpdateHomebridge && !shouldAutoUpdateUi && !shouldAutoUpdatePlugins && !shouldAutoUpdateNpm) {
281
+ return;
282
+ }
283
+ const autoUpdateTargets = updatesAvailable.filter((plugin) => {
284
+ if (plugin.name === 'npm') {
285
+ return shouldAutoUpdateNpm;
286
+ }
287
+ if (plugin.name === 'homebridge') {
288
+ return shouldAutoUpdateHomebridge;
289
+ }
290
+ if (plugin.name === 'homebridge-config-ui-x') {
291
+ return shouldAutoUpdateUi;
292
+ }
293
+ return shouldAutoUpdatePlugins && plugin.name !== 'node' && plugin.name !== 'Docker image';
294
+ });
295
+ if (autoUpdateTargets.length === 0) {
296
+ return;
297
+ }
298
+ if (shouldAutoUpdateNpm && !this.getLocalNpmVersion()) {
299
+ this.lastAutoUpdateFailed = true;
300
+ this.log.warn('autoUpdateNpm is enabled, but npm is not available on this system.');
301
+ }
302
+ const hasUiApi = this.uiApi.isConfigured();
303
+ const allowDirectNpmUpdates = this.config.allowDirectNpmUpdates === true;
304
+ const hasNonNpmTargets = autoUpdateTargets.some(target => target.name !== 'npm');
305
+ if (hasNonNpmTargets && !hasUiApi && !allowDirectNpmUpdates) {
306
+ this.lastAutoUpdateFailed = true;
307
+ this.log.warn('Auto-update is enabled, but homebridge-config-ui-x is not configured and allowDirectNpmUpdates is disabled.');
308
+ return;
309
+ }
310
+ if (hasUiApi && hasNonNpmTargets) {
311
+ await this.uiApi.createBackup();
312
+ }
313
+ let successfulUpdates = 0;
314
+ for (const target of autoUpdateTargets) {
315
+ const updated = await this.applyAutoUpdate(target);
316
+ if (updated) {
317
+ successfulUpdates++;
318
+ }
319
+ else {
320
+ this.lastAutoUpdateFailed = true;
321
+ }
322
+ }
323
+ if (successfulUpdates > 0 && this.config.autoRestartAfterUpdates === true) {
324
+ const restarted = await this.uiApi.restartHomebridge();
325
+ if (!restarted) {
326
+ this.lastAutoUpdateFailed = true;
327
+ }
328
+ }
329
+ }
330
+ async applyAutoUpdate(target) {
331
+ if (target.name === 'npm') {
332
+ return await this.uiApi.updateNpm(target.latestVersion);
333
+ }
334
+ if (target.name === 'homebridge') {
335
+ return await this.uiApi.updateHomebridge(target.latestVersion);
336
+ }
337
+ this.log.info(`Attempting to auto-update ${target.name} to ${target.latestVersion}`);
338
+ return await this.uiApi.updatePlugin(target.name, target.latestVersion);
339
+ }
340
+ getLocalNpmVersion() {
341
+ const result = spawnSync('npm', ['--version'], { encoding: 'utf8' });
342
+ if (result.error || result.status !== 0) {
343
+ return undefined;
344
+ }
345
+ const version = (result.stdout || '').trim();
346
+ return version.length > 0 ? version : undefined;
347
+ }
348
+ async getLatestNpmVersion() {
349
+ return await new Promise((resolve, reject) => {
350
+ const req = https.get('https://registry.npmjs.org/npm/latest', (res) => {
351
+ let data = '';
352
+ res.on('data', (chunk) => {
353
+ data += chunk;
354
+ });
355
+ res.on('end', () => {
356
+ try {
357
+ const body = JSON.parse(data);
358
+ if (!body.version) {
359
+ reject(new Error('npm registry response missing version field'));
360
+ return;
361
+ }
362
+ resolve(body.version);
363
+ }
364
+ catch (error) {
365
+ reject(error);
366
+ }
367
+ });
368
+ });
369
+ req.on('error', reject);
370
+ });
371
+ }
372
+ compareSemver(a, b) {
373
+ const normalize = (value) => value.split('.').map(part => Number.parseInt(part.replace(/\D.*$/, ''), 10) || 0);
374
+ const pa = normalize(a);
375
+ const pb = normalize(b);
376
+ const max = Math.max(pa.length, pb.length);
377
+ for (let i = 0; i < max; i++) {
378
+ const va = pa[i] ?? 0;
379
+ const vb = pb[i] ?? 0;
380
+ if (va > vb) {
381
+ return 1;
382
+ }
383
+ if (va < vb) {
384
+ return -1;
385
+ }
386
+ }
387
+ return 0;
388
+ }
389
+ firstDailyRunResetCronJob;
390
+ updatesCronJob;
391
+ /**
392
+ * Start scheduled update checks and daily reset using cron jobs.
393
+ * @param onCheck Callback to run after each update check (e.g., set sensor/cluster value)
394
+ * @param timezone Optional timezone string (defaults to system timezone)
395
+ */
396
+ startScheduledChecks(onCheck, timezone) {
397
+ const tz = timezone || Intl.DateTimeFormat().resolvedOptions().timeZone;
398
+ // Daily reset at midnight
399
+ this.firstDailyRunResetCronJob = new Cron('0 0 * * *', {
400
+ name: 'First Daily Run Reset Cron Job',
401
+ timezone: tz,
402
+ unref: true,
403
+ }, async () => {
404
+ this.firstDailyRun = true;
405
+ this.log.debug(`Reset "firstDailyRun" to ${this.firstDailyRun}`);
406
+ });
407
+ // Periodic update check (5 minutes after every hour)
408
+ this.updatesCronJob = new Cron('5 * * * *', {
409
+ name: 'Updates Available Cron Job',
410
+ timezone: tz,
411
+ unref: true,
412
+ }, async () => {
413
+ this.log.debug(`Is first daily run: ${this.firstDailyRun}`);
414
+ try {
415
+ const updates = await this.checkUi();
416
+ onCheck(updates);
417
+ }
418
+ catch (ex) {
419
+ this.log.error(ex);
420
+ }
421
+ this.firstDailyRun = false;
422
+ this.log.debug(`Cleared "firstDailyRun" to ${this.firstDailyRun}`);
423
+ });
424
+ }
425
+ /**
426
+ * Stop all scheduled cron jobs (if running)
427
+ */
428
+ stopScheduledChecks() {
429
+ this.firstDailyRunResetCronJob?.stop();
430
+ this.updatesCronJob?.stop();
431
+ }
432
+ }
433
+ //# sourceMappingURL=updateCheckCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateCheckCore.js","sourceRoot":"","sources":["../src/updateCheckCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,MAAM,YAAY,CAAC;AAG/B,OAAO,EAAE,KAAK,EAAmB,MAAM,aAAa,CAAC;AAGrD,MAAM,OAAO,eAAe;IACV,SAAS,CAAU;IACnB,QAAQ,CAAU;IAC3B,WAAW,GAAa,EAAE,CAAC;IAC3B,UAAU,GAAa,EAAE,CAAC;IACjB,GAAG,CAAU;IACb,MAAM,CAA6B;IACnC,KAAK,CAAQ;IACb,sBAAsB,CAAU;IAChC,OAAO,CAAU;IACjB,SAAS,CAAU;IACnB,YAAY,CAAU;IACtB,WAAW,CAAU;IACrB,QAAQ,CAAU;IAClB,iBAAiB,CAAS;IACnC,SAAS,GAAa,EAAE,CAAC;IACzB,WAAW,GAAa,EAAE,CAAC;IAC3B,aAAa,GAAa,EAAE,CAAC;IAC7B,aAAa,GAAa,EAAE,CAAC;IAC7B,aAAa,GAAY,IAAI,CAAC;IAC7B,oBAAoB,GAAG,KAAK,CAAC;IAErC,YAAY,GAAY,EAAE,MAAsB,EAAE,WAAmB,EAAE,QAAiB;QACtF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAoC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,IAAI,CAAC;QACzE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,KAAK,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,IAAI,KAAK,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,KAAK,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,KAAK,CAAC;QAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,KAAK,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC;QACpD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAC/C,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,qDAAqD;QACrD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC7C,4CAA4C;gBAC5C,MAAM,gBAAgB,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,oCAAoC,EAAE,CAAC,GAAG,EAAE,EAAE;wBAClE,IAAI,IAAI,GAAG,EAAE,CAAC;wBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;4BACjB,IAAI,CAAC;gCACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCAClC,kBAAkB;gCAClB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gCACvD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oCAAE,OAAO,MAAM,CAAC,uBAAuB,CAAC,CAAC;gCACrE,6BAA6B;gCAC7B,WAAW,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gCACvG,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCACxD,OAAO,CAAC,MAAM,CAAC,CAAC;4BAClB,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCAAC,MAAM,CAAC,CAAC,CAAC,CAAC;4BAAC,CAAC;wBAC5B,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;gBACH,4BAA4B;gBAC5B,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;oBAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAC3B,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BAAE,OAAO,CAAC,CAAC;wBAC5B,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BAAE,OAAO,CAAC,CAAC,CAAC;oBAC/B,CAAC;oBACD,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC;gBACF,IAAI,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC5F,MAAM,QAAQ,GAAG,eAAe,IAAI,KAAK,CAAC,CAAC,4BAAe,CAAC,6BAAe,CAAC;oBAC3E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,6BAA6B,cAAc,MAAM,gBAAgB,EAAE,CAAC,CAAC;oBAC5F,IAAI,CAAC,WAAW,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACtC,gBAAgB,CAAC,IAAI,CAAC;wBACpB,IAAI,EAAE,MAAM;wBACZ,gBAAgB,EAAE,cAAc;wBAChC,aAAa,EAAE,gBAAgB;wBAC/B,eAAe,EAAE,IAAI;qBACtB,CAAC,CAAC;oBACH,+CAA+C;oBAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;wBAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;wBACzD,2CAA2C;wBAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;wBACvE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;4BACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;4BACpF,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;4BAC9E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gCACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;4BACjG,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gCACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;4BAClF,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;4BACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;wBAC3E,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,cAAc,iBAAiB,gBAAgB,GAAG,CAAC,CAAC;gBACxG,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACpD,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;gBAC5F,CAAC;qBAAM,CAAC;oBACN,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC1D,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;wBAChE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;wBAC1F,MAAM,QAAQ,GAAG,eAAe,IAAI,KAAK,CAAC,CAAC,4BAAe,CAAC,6BAAe,CAAC;wBAC3E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,iBAAiB,OAAO,gBAAgB,EAAE,CAAC,CAAC;wBAC5F,IAAI,CAAC,UAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBACrC,gBAAgB,CAAC,IAAI,CAAC;4BACpB,IAAI,EAAE,KAAK;4BACX,gBAAgB,EAAE,iBAAiB;4BACnC,aAAa,EAAE,gBAAgB;4BAC/B,eAAe,EAAE,IAAI;yBACtB,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,iBAAiB,aAAa,gBAAgB,GAAG,CAAC,CAAC;oBACnG,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBACtD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,cAAc,CAAC,MAAM,mDAAmD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnI,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,KAAK,EAAE,CAAC,CAAC;gBACvF,cAAc,GAAG,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACpD,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,IAAI,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAClC,MAAM,OAAO,GAAW,UAAU,CAAC,aAAa,CAAC;oBACjD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC/E,MAAM,QAAQ,GAAG,eAAe,IAAI,KAAK,CAAC,CAAC,4BAAe,CAAC,6BAAe,CAAC;oBAC3E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAgC,OAAO,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,UAAU,CAAC,aAAa,4DAA4D,CAAC,CAAC;gBAC3I,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAC;gBAC/F,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;oBAC3C,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;wBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,IAAI,cAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;wBACnG,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BACpC,MAAM,OAAO,GAAW,YAAY,CAAC,aAAa,CAAC;4BACnD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;4BACnF,MAAM,QAAQ,GAAG,eAAe,IAAI,KAAK,CAAC,CAAC,4BAAe,CAAC,6BAAe,CAAC;4BAC3E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,mCAAmC,OAAO,EAAE,CAAC,CAAC;4BACrE,IAAI,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,CAAC;wBAC/B,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,YAAY,CAAC,aAAa,4DAA4D,CAAC,CAAC;wBAC3I,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,MAAM,iDAAiD,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;gBAC1H,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;oBAChD,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;wBAC7C,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBAChC,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;4BACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,sCAAsC,CAAC,CAAC;4BAC1F,OAAO,KAAK,CAAC;wBACf,CAAC;oBACH,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;gBACH,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBACjC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;wBAC3B,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC9B,MAAM,OAAO,GAAW,MAAM,CAAC,aAAa,CAAC;wBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBACvF,MAAM,QAAQ,GAAG,eAAe,IAAI,KAAK,CAAC,CAAC,4BAAe,CAAC,6BAAe,CAAC;wBAC3E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,uCAAuC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;wBACrG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAChC,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACjD,MAAM,CAAC,IAAI,KAAK,wBAAwB;2BACrC,MAAM,CAAC,eAAe;2BACtB,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CACxC,CAAC;oBACF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,kBAAkB,CAAC,MAAM,eAAe,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClI,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC3B,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,OAAO,GAAW,MAAM,CAAC,aAAa,CAAC;gBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvF,MAAM,QAAQ,GAAG,eAAe,IAAI,KAAK,CAAC,CAAC,4BAAe,CAAC,6BAAe,CAAC;gBAC3E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,OAAO,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,sEAAsE;QACtE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,4BAAe,CAAC,6BAAe,EAAE,SAAS,gBAAgB,CAAC,MAAM,sBAAsB,CAAC,CAAC;QACzH,CAAC;QACD,IAAI,IAAI,CAAC,sBAAsB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,cAAc,CAAC,MAAM,qBAAqB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClH,CAAC;aAAM,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;QAEzD,OAAO,gBAAgB,CAAC,MAAM,CAAC;IACjC,CAAC;IAEM,uBAAuB;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,2BAA2B,CAAC,gBAAmC;QAC3E,MAAM,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,IAAI,CAAC;QAC7E,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,IAAI,CAAC;QACvE,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,IAAI,CAAC;QACvE,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,CAAC;QAE/D,IAAI,CAAC,0BAA0B,IAAI,CAAC,kBAAkB,IAAI,CAAC,uBAAuB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3G,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC1B,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjC,OAAO,0BAA0B,CAAC;YACpC,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBAC7C,OAAO,kBAAkB,CAAC;YAC5B,CAAC;YACD,OAAO,uBAAuB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC;QAC7F,CAAC,CAAC,CAAC;QAEH,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,KAAK,IAAI,CAAC;QACzE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACjF,IAAI,gBAAgB,IAAI,CAAC,QAAQ,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC5D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6GAA6G,CAAC,CAAC;YAC7H,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,OAAO,EAAE,CAAC;gBACZ,iBAAiB,EAAE,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,KAAK,IAAI,EAAE,CAAC;YAC1E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACvD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAuB;QACnD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QACrF,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAC1E,CAAC;IAEO,kBAAkB;QACxB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACrE,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,uCAAuC,EAAE,CAAC,GAAG,EAAE,EAAE;gBACrE,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,IAAI,IAAI,KAAK,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACjB,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAyB,CAAC;wBACtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;4BAClB,MAAM,CAAC,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;4BACjE,OAAO;wBACT,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,CAAS,EAAE,CAAS;QACxC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACvH,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBACZ,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBACZ,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,yBAAyB,CAAQ;IACjC,cAAc,CAAQ;IAC9B;;;;OAIG;IACH,oBAAoB,CAAC,OAAkC,EAAE,QAAiB;QACxE,MAAM,EAAE,GAAG,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;QACxE,0BAA0B;QAC1B,IAAI,CAAC,yBAAyB,GAAG,IAAI,IAAI,CACvC,WAAW,EACX;YACE,IAAI,EAAE,gCAAgC;YACtC,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,IAAI;SACZ,EACD,KAAK,IAAI,EAAE;YACT,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACnE,CAAC,CACF,CAAC;QACF,qDAAqD;QACrD,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAC5B,WAAW,EACX;YACE,IAAI,EAAE,4BAA4B;YAClC,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,IAAI;SACZ,EACD,KAAK,IAAI,EAAE;YACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,EAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACrE,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import type { API, Logging, PlatformAccessory, PlatformConfig } from 'homebridge';
2
+ interface UpdateSensorOptions {
3
+ onFailureStateChange?: (failed: boolean) => void;
4
+ protocol?: 'hap' | 'matter';
5
+ }
6
+ export declare class UpdateSensor {
7
+ private readonly log;
8
+ private readonly config;
9
+ private readonly api;
10
+ private readonly updateCore;
11
+ private readonly sensor;
12
+ private readonly onFailureStateChange?;
13
+ private accessory?;
14
+ private registered;
15
+ constructor(log: Logging, config: PlatformConfig, api: API, options?: UpdateSensorOptions);
16
+ configureAccessory(accessory: PlatformAccessory): void;
17
+ addUpdateSensor(): void;
18
+ doCheck(): Promise<void>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=updateSensor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSensor.d.ts","sourceRoot":"","sources":["../src/updateSensor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAQjF,UAAU,mBAAmB;IAC3B,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;CAC5B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAA2B;IACjE,OAAO,CAAC,SAAS,CAAC,CAAmB;IACrC,OAAO,CAAC,UAAU,CAAQ;gBAEd,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,mBAAwB;IAiB7F,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAMtD,eAAe,IAAI,IAAI;IA4BjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAU/B"}
@@ -0,0 +1,75 @@
1
+ import { HAPSensor, MatterSensor } from './sensorBase.js';
2
+ import { PLATFORM_NAME, PLUGIN_NAME, UPDATE_SENSOR_UUID_KEY } from './settings.js';
3
+ import { UpdateCheckCore } from './updateCheckCore.js';
4
+ export class UpdateSensor {
5
+ log;
6
+ config;
7
+ api;
8
+ updateCore;
9
+ sensor;
10
+ onFailureStateChange;
11
+ accessory;
12
+ registered = false;
13
+ constructor(log, config, api, options = {}) {
14
+ this.log = log;
15
+ this.config = config;
16
+ this.api = api;
17
+ this.onFailureStateChange = options.onFailureStateChange;
18
+ const isDocker = false; // Adjust if needed
19
+ this.updateCore = new UpdateCheckCore(log, config, api.user.storagePath(), isDocker);
20
+ const protocol = options.protocol ?? (api.matter ? 'matter' : 'hap');
21
+ // Choose protocol implementation
22
+ if (protocol === 'matter') {
23
+ this.sensor = new MatterSensor({ log, api, sensorType: config.sensorType });
24
+ }
25
+ else {
26
+ this.sensor = new HAPSensor({ log, api, sensorType: config.sensorType });
27
+ }
28
+ api.on('didFinishLaunching', this.addUpdateSensor.bind(this));
29
+ }
30
+ configureAccessory(accessory) {
31
+ this.sensor.configure(accessory);
32
+ this.accessory = accessory;
33
+ this.registered = true;
34
+ }
35
+ addUpdateSensor() {
36
+ if (!this.registered) {
37
+ const deviceName = this.config.name || 'Plugin Update Check';
38
+ // Create or get accessory (for HAP) or just pass config (for Matter)
39
+ if (!this.api.matter) {
40
+ // HAP: create accessory and register
41
+ const uuid = this.api.hap.uuid.generate(UPDATE_SENSOR_UUID_KEY);
42
+ const Accessory = this.api.platformAccessory;
43
+ const accessory = new Accessory(deviceName, uuid);
44
+ this.sensor.configure(accessory);
45
+ this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
46
+ this.accessory = accessory;
47
+ }
48
+ else {
49
+ // Matter: configure with dummy accessory (not used)
50
+ this.sensor.configure({ displayName: deviceName });
51
+ }
52
+ this.registered = true;
53
+ }
54
+ // Always start checks (whether accessory was newly created or restored from cache)
55
+ setTimeout(() => {
56
+ this.doCheck();
57
+ }, this.updateCore.initialCheckDelay * 1000);
58
+ // Schedule periodic checks
59
+ this.updateCore.startScheduledChecks(() => {
60
+ this.doCheck();
61
+ });
62
+ }
63
+ async doCheck() {
64
+ try {
65
+ const updates = await this.updateCore.checkUi();
66
+ this.sensor.setState(!!updates);
67
+ this.onFailureStateChange?.(this.updateCore.getLastAutoUpdateFailed());
68
+ }
69
+ catch (e) {
70
+ this.onFailureStateChange?.(true);
71
+ this.log.error(e);
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=updateSensor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSensor.js","sourceRoot":"","sources":["../src/updateSensor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=updateSensor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSensor.test.d.ts","sourceRoot":"","sources":["../src/updateSensor.test.ts"],"names":[],"mappings":""}