@balena/open-balena-api 52.1.0 → 52.2.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.
|
@@ -19,22 +19,39 @@ export declare class DeviceOnlineStateManager extends EventEmitter<{
|
|
|
19
19
|
newState: DeviceOnlineStates;
|
|
20
20
|
}) => void;
|
|
21
21
|
stats: (args: MetricEventArgs & {
|
|
22
|
-
|
|
23
|
-
totalrecv: number;
|
|
22
|
+
/** The number of scheduled state changes */
|
|
24
23
|
msgs: number;
|
|
24
|
+
/** The number of scheduled state changes that are either not due yet or currently being processed */
|
|
25
25
|
hiddenmsgs: number;
|
|
26
26
|
}) => void;
|
|
27
27
|
}> {
|
|
28
28
|
private static readonly REDIS_NAMESPACE;
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
/**
|
|
30
|
+
* A sorted set of the scheduled state changes, with `${deviceId}:${nextState}` members scored by the
|
|
31
|
+
* timestamp they are due at, so that rescheduling a device's change replaces it rather than adding another
|
|
32
|
+
*/
|
|
33
|
+
private static readonly SCHEDULED_QUEUE;
|
|
34
|
+
/**
|
|
35
|
+
* The RSMQ queue that previous API versions scheduled the state changes in, which we keep consuming
|
|
36
|
+
* until no API instances are using it and it has been drained
|
|
37
|
+
* TODO: Remove once no API instances are scheduling changes via RSMQ and the legacy queue has been drained
|
|
38
|
+
*/
|
|
39
|
+
private static readonly LEGACY_RSMQ_QUEUE;
|
|
40
|
+
private static readonly CLAIM_TIMEOUT_MSEC;
|
|
31
41
|
private static readonly QUEUE_STATS_INTERVAL_MSEC;
|
|
42
|
+
/** The states that are scheduled as a device's next state, used to replace any change already scheduled for it */
|
|
43
|
+
private static readonly SCHEDULED_STATES;
|
|
32
44
|
private readonly featureIsEnabled;
|
|
33
45
|
private isConsuming;
|
|
34
|
-
private rsmq;
|
|
35
46
|
constructor();
|
|
36
47
|
private setupQueueStatsEmitter;
|
|
37
48
|
private updateDeviceModel;
|
|
49
|
+
private deleteLegacyChange;
|
|
50
|
+
/**
|
|
51
|
+
* Claims the next due state change, hiding it from other consumers for CLAIM_TIMEOUT_MSEC
|
|
52
|
+
* so that multiple API agents do not process it, after which it will be consumed again unless removed
|
|
53
|
+
*/
|
|
54
|
+
private claimNextChange;
|
|
38
55
|
private consume;
|
|
39
56
|
private getDeviceOnlineState;
|
|
40
57
|
private scheduleChangeOfStateForDevice;
|
|
@@ -1,14 +1,49 @@
|
|
|
1
|
+
import { stripIndent } from 'common-tags';
|
|
1
2
|
import { EventEmitter } from 'eventemitter3';
|
|
2
3
|
import _ from 'lodash';
|
|
3
|
-
import
|
|
4
|
+
import { defineScript } from 'redis';
|
|
4
5
|
import { sbvrUtils, permissions } from '@balena/pinejs';
|
|
5
6
|
import { captureException } from "../../infra/error-handling/index.js";
|
|
6
7
|
import { isApiKeyWithRole } from "../api-keys/lib.js";
|
|
7
8
|
import { events as deviceStateEvents } from "../device-state/index.js";
|
|
8
|
-
import { API_HEARTBEAT_STATE_ENABLED, API_HEARTBEAT_STATE_TIMEOUT_SECONDS, API_HEARTBEAT_STATE_ONLINE_UPDATE_CACHE_TIMEOUT, DEFAULT_SUPERVISOR_POLL_INTERVAL,
|
|
9
|
-
import { redis, redisRO } from "../../infra/redis/index.js";
|
|
9
|
+
import { API_HEARTBEAT_STATE_ENABLED, API_HEARTBEAT_STATE_TIMEOUT_SECONDS, API_HEARTBEAT_STATE_ONLINE_UPDATE_CACHE_TIMEOUT, DEFAULT_SUPERVISOR_POLL_INTERVAL, } from "../../lib/config.js";
|
|
10
|
+
import { createIsolatedRedis, redis, redisRO, } from "../../infra/redis/index.js";
|
|
10
11
|
import { setTimeout } from 'timers/promises';
|
|
11
12
|
const { api } = sbvrUtils;
|
|
13
|
+
const scripts = {
|
|
14
|
+
claimDueMember: defineScript({
|
|
15
|
+
SCRIPT: stripIndent `
|
|
16
|
+
-- Take the earliest member that is due
|
|
17
|
+
local due = redis.call("zrange", KEYS[1], "-inf", ARGV[1], "BYSCORE", "LIMIT", 0, 1)
|
|
18
|
+
if #due == 0 then
|
|
19
|
+
return false
|
|
20
|
+
end
|
|
21
|
+
-- And hide it from other consumers until the claim expires, at which point it is due again
|
|
22
|
+
redis.call("zadd", KEYS[1], ARGV[2], due[1])
|
|
23
|
+
return due[1]`,
|
|
24
|
+
NUMBER_OF_KEYS: 1,
|
|
25
|
+
parseCommand(parser, key, now, claimedUntil) {
|
|
26
|
+
parser.pushKey(key);
|
|
27
|
+
parser.push(`${now}`, `${claimedUntil}`);
|
|
28
|
+
},
|
|
29
|
+
transformReply: undefined,
|
|
30
|
+
}),
|
|
31
|
+
removeClaimedMember: defineScript({
|
|
32
|
+
SCRIPT: stripIndent `
|
|
33
|
+
-- Only remove the member if it has not been rescheduled since we claimed it
|
|
34
|
+
if tonumber(redis.call("zscore", KEYS[1], ARGV[1])) == tonumber(ARGV[2]) then
|
|
35
|
+
return redis.call("zrem", KEYS[1], ARGV[1])
|
|
36
|
+
end
|
|
37
|
+
return 0`,
|
|
38
|
+
NUMBER_OF_KEYS: 1,
|
|
39
|
+
parseCommand(parser, key, member, claimedUntil) {
|
|
40
|
+
parser.pushKey(key);
|
|
41
|
+
parser.push(member, `${claimedUntil}`);
|
|
42
|
+
},
|
|
43
|
+
transformReply: undefined,
|
|
44
|
+
}),
|
|
45
|
+
};
|
|
46
|
+
const redisWithScripts = await createIsolatedRedis({ scripts });
|
|
12
47
|
const getPollIntervalForDevice = _.once(() => api.resin.prepare({
|
|
13
48
|
resource: 'device_config_variable',
|
|
14
49
|
passthrough: { req: permissions.rootRead },
|
|
@@ -110,12 +145,26 @@ export const DeviceOnlineStates = {
|
|
|
110
145
|
};
|
|
111
146
|
export class DeviceOnlineStateManager extends EventEmitter {
|
|
112
147
|
static REDIS_NAMESPACE = 'device-online-state';
|
|
113
|
-
|
|
114
|
-
|
|
148
|
+
/**
|
|
149
|
+
* A sorted set of the scheduled state changes, with `${deviceId}:${nextState}` members scored by the
|
|
150
|
+
* timestamp they are due at, so that rescheduling a device's change replaces it rather than adding another
|
|
151
|
+
*/
|
|
152
|
+
static SCHEDULED_QUEUE = `${DeviceOnlineStateManager.REDIS_NAMESPACE}:scheduled`;
|
|
153
|
+
/**
|
|
154
|
+
* The RSMQ queue that previous API versions scheduled the state changes in, which we keep consuming
|
|
155
|
+
* until no API instances are using it and it has been drained
|
|
156
|
+
* TODO: Remove once no API instances are scheduling changes via RSMQ and the legacy queue has been drained
|
|
157
|
+
*/
|
|
158
|
+
static LEGACY_RSMQ_QUEUE = `${DeviceOnlineStateManager.REDIS_NAMESPACE}:expired`;
|
|
159
|
+
static CLAIM_TIMEOUT_MSEC = 30000;
|
|
115
160
|
static QUEUE_STATS_INTERVAL_MSEC = 10000;
|
|
161
|
+
/** The states that are scheduled as a device's next state, used to replace any change already scheduled for it */
|
|
162
|
+
static SCHEDULED_STATES = [
|
|
163
|
+
DeviceOnlineStates.Timeout,
|
|
164
|
+
DeviceOnlineStates.Offline,
|
|
165
|
+
];
|
|
116
166
|
featureIsEnabled;
|
|
117
167
|
isConsuming = false;
|
|
118
|
-
rsmq;
|
|
119
168
|
constructor() {
|
|
120
169
|
super();
|
|
121
170
|
this.featureIsEnabled = API_HEARTBEAT_STATE_ENABLED === 1;
|
|
@@ -123,43 +172,28 @@ export class DeviceOnlineStateManager extends EventEmitter {
|
|
|
123
172
|
if (!this.featureIsEnabled) {
|
|
124
173
|
return;
|
|
125
174
|
}
|
|
126
|
-
this.
|
|
127
|
-
// TODO: RSMQ does not currently support a redis cluster
|
|
128
|
-
...REDIS.general.host,
|
|
129
|
-
...REDIS.general.auth,
|
|
130
|
-
ns: DeviceOnlineStateManager.REDIS_NAMESPACE,
|
|
131
|
-
});
|
|
132
|
-
// create the RedisMQ queue and start consuming messages...
|
|
133
|
-
void this.rsmq
|
|
134
|
-
.createQueueAsync({ qname: DeviceOnlineStateManager.EXPIRED_QUEUE })
|
|
135
|
-
.catch((err) => {
|
|
136
|
-
if (err.name !== 'queueExists') {
|
|
137
|
-
throw err;
|
|
138
|
-
}
|
|
139
|
-
})
|
|
140
|
-
.then(() => {
|
|
141
|
-
this.setupQueueStatsEmitter(DeviceOnlineStateManager.QUEUE_STATS_INTERVAL_MSEC);
|
|
142
|
-
});
|
|
175
|
+
this.setupQueueStatsEmitter(DeviceOnlineStateManager.QUEUE_STATS_INTERVAL_MSEC);
|
|
143
176
|
}
|
|
144
177
|
setupQueueStatsEmitter(interval) {
|
|
145
178
|
void setTimeout(interval, undefined, { ref: false }).then(async () => {
|
|
146
179
|
try {
|
|
147
180
|
const startAt = Date.now();
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
181
|
+
const [msgs, hiddenmsgs, legacyMsgs, legacyHiddenmsgs] = await Promise.all([
|
|
182
|
+
redisRO.zCard(DeviceOnlineStateManager.SCHEDULED_QUEUE),
|
|
183
|
+
redisRO.zCount(DeviceOnlineStateManager.SCHEDULED_QUEUE, startAt, '+inf'),
|
|
184
|
+
redisRO.zCard(DeviceOnlineStateManager.LEGACY_RSMQ_QUEUE),
|
|
185
|
+
redisRO.zCount(DeviceOnlineStateManager.LEGACY_RSMQ_QUEUE, startAt, '+inf'),
|
|
186
|
+
]);
|
|
151
187
|
const endAt = Date.now();
|
|
152
188
|
this.emit('stats', {
|
|
153
189
|
startAt,
|
|
154
190
|
endAt,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
msgs: queueAttributes.msgs,
|
|
158
|
-
hiddenmsgs: queueAttributes.hiddenmsgs,
|
|
191
|
+
msgs: msgs + legacyMsgs,
|
|
192
|
+
hiddenmsgs: hiddenmsgs + legacyHiddenmsgs,
|
|
159
193
|
});
|
|
160
194
|
}
|
|
161
195
|
catch (err) {
|
|
162
|
-
captureException(err, '
|
|
196
|
+
captureException(err, 'DeviceStateManager: Unable to acquire and emit the queue stats.');
|
|
163
197
|
}
|
|
164
198
|
finally {
|
|
165
199
|
this.setupQueueStatsEmitter(interval);
|
|
@@ -208,22 +242,70 @@ export class DeviceOnlineStateManager extends EventEmitter {
|
|
|
208
242
|
});
|
|
209
243
|
}
|
|
210
244
|
}
|
|
245
|
+
async deleteLegacyChange(id) {
|
|
246
|
+
await redis
|
|
247
|
+
.multi()
|
|
248
|
+
.zRem(DeviceOnlineStateManager.LEGACY_RSMQ_QUEUE, id)
|
|
249
|
+
.hDel(`${DeviceOnlineStateManager.LEGACY_RSMQ_QUEUE}:Q`, [
|
|
250
|
+
id,
|
|
251
|
+
`${id}:rc`,
|
|
252
|
+
`${id}:fr`,
|
|
253
|
+
])
|
|
254
|
+
.exec();
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Claims the next due state change, hiding it from other consumers for CLAIM_TIMEOUT_MSEC
|
|
258
|
+
* so that multiple API agents do not process it, after which it will be consumed again unless removed
|
|
259
|
+
*/
|
|
260
|
+
async claimNextChange() {
|
|
261
|
+
const now = Date.now();
|
|
262
|
+
const claimedUntil = now + DeviceOnlineStateManager.CLAIM_TIMEOUT_MSEC;
|
|
263
|
+
const member = await redisWithScripts.claimDueMember(DeviceOnlineStateManager.SCHEDULED_QUEUE, now, claimedUntil);
|
|
264
|
+
if (member != null) {
|
|
265
|
+
const [memberDeviceId, memberNextState] = member.split(':');
|
|
266
|
+
return {
|
|
267
|
+
deviceId: parseInt(memberDeviceId, 10),
|
|
268
|
+
nextState: memberNextState,
|
|
269
|
+
remove: () => redisWithScripts.removeClaimedMember(DeviceOnlineStateManager.SCHEDULED_QUEUE, member, claimedUntil),
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
// TODO: Remove once no API instances are scheduling changes via RSMQ and the legacy queue has been drained
|
|
273
|
+
const legacyId = await redisWithScripts.claimDueMember(DeviceOnlineStateManager.LEGACY_RSMQ_QUEUE, now, claimedUntil);
|
|
274
|
+
if (legacyId == null) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const message = await redis.hGet(`${DeviceOnlineStateManager.LEGACY_RSMQ_QUEUE}:Q`, legacyId);
|
|
278
|
+
if (message == null) {
|
|
279
|
+
// it was deleted after we claimed it, so there is nothing to process
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const { deviceId, nextState } = JSON.parse(message);
|
|
283
|
+
return {
|
|
284
|
+
deviceId,
|
|
285
|
+
nextState,
|
|
286
|
+
legacyId,
|
|
287
|
+
remove: () => this.deleteLegacyChange(legacyId),
|
|
288
|
+
};
|
|
289
|
+
}
|
|
211
290
|
consume() {
|
|
212
|
-
// pull a
|
|
213
|
-
void this.
|
|
214
|
-
.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
})
|
|
218
|
-
.then(async (msg) => {
|
|
219
|
-
if (!('id' in msg)) {
|
|
220
|
-
// no messages to consume, wait a second...
|
|
291
|
+
// pull a state change from the queue...
|
|
292
|
+
void this.claimNextChange()
|
|
293
|
+
.then(async (change) => {
|
|
294
|
+
if (change == null) {
|
|
295
|
+
// no state changes to consume, wait a second...
|
|
221
296
|
await setTimeout(1000);
|
|
222
297
|
return;
|
|
223
298
|
}
|
|
224
|
-
const { id, message } = msg;
|
|
225
299
|
try {
|
|
226
|
-
const { deviceId, nextState } =
|
|
300
|
+
const { deviceId, nextState, legacyId } = change;
|
|
301
|
+
// While API versions that schedule changes via RSMQ are still running, a device's latest change might
|
|
302
|
+
// have been scheduled in the other queue, in which case this one is stale and must not be applied
|
|
303
|
+
// TODO: Remove once no API instances are scheduling changes via RSMQ and the legacy queue has been drained
|
|
304
|
+
const managerState = await this.getDeviceOnlineState(deviceId);
|
|
305
|
+
if (managerState != null && managerState.id !== legacyId) {
|
|
306
|
+
await change.remove();
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
227
309
|
// raise and event for the state change...
|
|
228
310
|
switch (nextState) {
|
|
229
311
|
case DeviceOnlineStates.Timeout:
|
|
@@ -234,7 +316,7 @@ export class DeviceOnlineStateManager extends EventEmitter {
|
|
|
234
316
|
await this.updateDeviceModel(deviceId, DeviceOnlineStates.Offline);
|
|
235
317
|
// This not only cleans-up the write cache for housekeeping reasons, but also
|
|
236
318
|
// invalidates it whenever a device goes Offline.
|
|
237
|
-
// This way, after an incident/downtime, when the
|
|
319
|
+
// This way, after an incident/downtime, when the queue resumes processing the pending heartbeat changes
|
|
238
320
|
// and new state GETs arrive, racing to update the DB & write cache's heartbeat state,
|
|
239
321
|
// the DB & write cache get back in sync (if they have drifted) as soon as each device is marked as Offline,
|
|
240
322
|
// allowing it to go back Online on the next state GET.
|
|
@@ -243,10 +325,7 @@ export class DeviceOnlineStateManager extends EventEmitter {
|
|
|
243
325
|
default:
|
|
244
326
|
throw new Error(`An unexpected value was encountered for the target device state: ${nextState}`);
|
|
245
327
|
}
|
|
246
|
-
await
|
|
247
|
-
qname: DeviceOnlineStateManager.EXPIRED_QUEUE,
|
|
248
|
-
id,
|
|
249
|
-
});
|
|
328
|
+
await change.remove();
|
|
250
329
|
}
|
|
251
330
|
catch (err) {
|
|
252
331
|
captureException(err, 'An error occurred trying to process an API heartbeat event.');
|
|
@@ -272,26 +351,25 @@ export class DeviceOnlineStateManager extends EventEmitter {
|
|
|
272
351
|
}
|
|
273
352
|
async scheduleChangeOfStateForDevice(deviceId, previousManagerState, currentState, nextState, delay, // in seconds
|
|
274
353
|
updatedAt) {
|
|
354
|
+
// TODO: Remove once no API instances are scheduling changes via RSMQ and the legacy queue has been drained
|
|
275
355
|
if (previousManagerState?.id != null) {
|
|
276
356
|
try {
|
|
277
357
|
// remove the old queued state...
|
|
278
|
-
await this.
|
|
279
|
-
qname: DeviceOnlineStateManager.EXPIRED_QUEUE,
|
|
280
|
-
id: previousManagerState.id,
|
|
281
|
-
});
|
|
358
|
+
await this.deleteLegacyChange(previousManagerState.id);
|
|
282
359
|
}
|
|
283
360
|
catch {
|
|
284
361
|
// ignore errors when deleting the old queued state, it may have already expired...
|
|
285
362
|
}
|
|
286
363
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
|
|
364
|
+
// schedule the next state, replacing any state change already scheduled for the device...
|
|
365
|
+
await redis
|
|
366
|
+
.multi()
|
|
367
|
+
.zAdd(DeviceOnlineStateManager.SCHEDULED_QUEUE, {
|
|
368
|
+
score: Date.now() + delay * 1000,
|
|
369
|
+
value: `${deviceId}:${nextState}`,
|
|
370
|
+
})
|
|
371
|
+
.zRem(DeviceOnlineStateManager.SCHEDULED_QUEUE, DeviceOnlineStateManager.SCHEDULED_STATES.filter((state) => state !== nextState).map((state) => `${deviceId}:${state}`))
|
|
372
|
+
.exec();
|
|
295
373
|
// if we didn't just update the heartbeat and are in still the same state,
|
|
296
374
|
// then carry over the original change timestamp.
|
|
297
375
|
if (API_HEARTBEAT_STATE_ONLINE_UPDATE_CACHE_TIMEOUT != null &&
|
|
@@ -299,7 +377,6 @@ export class DeviceOnlineStateManager extends EventEmitter {
|
|
|
299
377
|
updatedAt ??= previousManagerState.updatedAt;
|
|
300
378
|
}
|
|
301
379
|
await redis.set(`${DeviceOnlineStateManager.REDIS_NAMESPACE}:${deviceId}`, JSON.stringify({
|
|
302
|
-
id: newId,
|
|
303
380
|
currentState,
|
|
304
381
|
...(updatedAt != null && {
|
|
305
382
|
updatedAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/device-heartbeat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,QAAQ,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EACN,2BAA2B,EAC3B,mCAAmC,EACnC,+CAA+C,EAC/C,gCAAgC,EAChC,KAAK,GACL,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;AAE1B,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAC5C,GAAG,CAAC,KAAK,CAAC,OAAO,CAChB;IACC,QAAQ,EAAE,wBAAwB;IAClC,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE;QACR,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,IAAI,EAAE,CAAC;QACP,OAAO,EAAE;YACR,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE;YAC3B,IAAI,EAAE;gBACL,GAAG,EAAE;oBACJ,iCAAiC;oBACjC,gCAAgC;iBAChC;aACD;SACD;QACD,QAAQ,EAAE;YACT,qDAAqD;YACrD,4DAA4D;YAC5D,IAAI,EAAE,MAAM;SACZ;KACD;CACQ,EACV,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CACxB,CACD,CAAC;AAEF,MAAM,mCAAmC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACvD,GAAG,CAAC,KAAK,CAAC,OAAO,CAChB;IACC,QAAQ,EAAE,6BAA6B;IACvC,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE;QACR,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,IAAI,EAAE,CAAC;QACP,OAAO,EAAE;YACR,WAAW,EAAE;gBACZ,IAAI,EAAE;oBACL,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE;wBACN,CAAC,EAAE;4BACF,YAAY,EAAE;gCACb,IAAI,EAAE;oCACL,MAAM,EAAE,GAAG;oCACX,KAAK,EAAE;wCACN,CAAC,EAAE;4CACF,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE;yCACvB;qCACD;iCACD;6BACD;yBACD;qBACD;iBACD;aACD;YACD,IAAI,EAAE;gBACL,GAAG,EAAE;oBACJ,iCAAiC;oBACjC,gCAAgC;iBAChC;aACD;SACD;QACD,QAAQ,EAAE;YACT,qDAAqD;YACrD,4DAA4D;YAC5D,IAAI,EAAE,MAAM;SACZ;KACD;CACQ,EACV;IACC,QAAQ,EAAE,CAAC,QAAQ,CAAC;CACpB,CACD,CACD,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EACnC,QAAgB,EAChB,MAA+B,EAC9B,EAAE;IACH,IAAI,kBAAsC,CAAC;IAC3C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACpB,oEAAoE;QACpE,kBAAkB;YACjB,MAAM,CAAC,gCAAgC,CAAC;gBACxC,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACP,kBAAkB,KAAK,CACtB,MAAM,wBAAwB,EAAE,CAAC;YAChC,QAAQ;SACR,CAAC,CACF,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QAEZ,kBAAkB,KAAK,CACtB,MAAM,mCAAmC,EAAE,CAAC;YAC3C,QAAQ;SACR,CAAC,CACF,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACb,CAAC;IAED,IAAI,YAAY,CAAC;IACjB,IAAI,kBAAkB,IAAI,IAAI,EAAE,CAAC;QAChC,YAAY,GAAG,gCAAgC,CAAC;IACjD,CAAC;SAAM,CAAC;QACP,YAAY,GAAG,IAAI,CAAC,GAAG,CACtB,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,EACrC,gCAAgC,CAChC,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,OAAO,YAAY,GAAG,kBAAkB,CAAC;AAC1C,CAAC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACP,CAAC;AAiBX,MAAM,OAAO,wBAAyB,SAAQ,YAY5C;IACO,MAAM,CAAU,eAAe,GAAG,qBAAqB,CAAC;IACxD,MAAM,CAAU,aAAa,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAU,iBAAiB,GAAG,EAAE,CAAC;IACvC,MAAM,CAAU,yBAAyB,GAAG,KAAK,CAAC;IAEzC,gBAAgB,CAAU;IAEnC,WAAW,GAAG,KAAK,CAAC;IACpB,IAAI,CAAW;IAEvB;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAG,2BAA2B,KAAK,CAAC,CAAC;QAE1D,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO;QACR,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC;YACxB,wDAAwD;YACxD,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI;YACrB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI;YACrB,EAAE,EAAE,wBAAwB,CAAC,eAAe;SAC5C,CAAC,CAAC;QAEH,2DAA2D;QAC3D,KAAK,IAAI,CAAC,IAAI;aACZ,gBAAgB,CAAC,EAAE,KAAK,EAAE,wBAAwB,CAAC,aAAa,EAAE,CAAC;aACnE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAChC,MAAM,GAAG,CAAC;YACX,CAAC;QACF,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,sBAAsB,CAC1B,wBAAwB,CAAC,yBAAyB,CAClD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,QAAgB;QAC9C,KAAK,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACpE,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC3B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;oBAC/D,KAAK,EAAE,wBAAwB,CAAC,aAAa;iBAC7C,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBAClB,OAAO;oBACP,KAAK;oBACL,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,IAAI,EAAE,eAAe,CAAC,IAAI;oBAC1B,UAAU,EAAE,eAAe,CAAC,UAAU;iBACtC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,gBAAgB,CACf,GAAG,EACH,mDAAmD,CACnD,CAAC;YACH,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC9B,QAAgB,EAChB,QAA4B;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC;QAER,IAAI,CAAC;YACJ,0DAA0D;YAC1D,MAAM,QAAQ,GAAG;gBAChB,mBAAmB,EAAE,QAAQ;aAC7B,CAAC;YACF,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;gBACrB,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE;gBACtC,EAAE,EAAE,QAAQ;gBACZ,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,IAAI,EAAE,QAAQ;qBACd;iBACD;gBACD,IAAI,EAAE;oBACL,GAAG,QAAQ;oBACX,mFAAmF;oBACnF,kFAAkF;oBAClF,mFAAmF;oBACnF,6CAA6C;oBAC7C,oCAAoC,EAAE,IAAI,CAAC,GAAG,EAAE;iBAChD;aACD,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACf,GAAG,GAAG,IAAI,CAAC;YACX,gBAAgB,CACf,IAAI,EACJ,8DAA8D,QAAQ,OAAO,QAAQ,GAAG,CACxF,CAAC;YACF,MAAM,GAAG,CAAC;QACX,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACnB,QAAQ;gBACR,QAAQ;gBACR,OAAO;gBACP,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;gBACjB,GAAG;aACH,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAEO,OAAO;QACd,mCAAmC;QACnC,KAAK,IAAI,CAAC,IAAI;aACZ,mBAAmB,CAAC;YACpB,KAAK,EAAE,wBAAwB,CAAC,aAAa;YAC7C,EAAE,EAAE,wBAAwB,CAAC,iBAAiB,EAAE,gHAAgH;SAChK,CAAC;aACD,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACnB,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACpB,2CAA2C;gBAC3C,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;gBACvB,OAAO;YACR,CAAC;YAED,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;YAC5B,IAAI,CAAC;gBACJ,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAGjD,CAAC;gBAEF,0CAA0C;gBAC1C,QAAQ,SAAS,EAAE,CAAC;oBACnB,KAAK,kBAAkB,CAAC,OAAO;wBAC9B,MAAM,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,kBAAkB,CAAC,OAAO,CAC1B,CAAC;wBACF,KAAK,IAAI,CAAC,8BAA8B,CACvC,QAAQ,EACR,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EACzC,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,OAAO,EAC1B,mCAAmC,CACnC,CAAC;wBACF,MAAM;oBACP,KAAK,kBAAkB,CAAC,OAAO;wBAC9B,MAAM,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,kBAAkB,CAAC,OAAO,CAC1B,CAAC;wBACF,6EAA6E;wBAC7E,iDAAiD;wBACjD,uGAAuG;wBACvG,sFAAsF;wBACtF,4GAA4G;wBAC5G,uDAAuD;wBACvD,MAAM,KAAK,CAAC,GAAG,CACd,GAAG,wBAAwB,CAAC,eAAe,IAAI,QAAQ,EAAE,CACzD,CAAC;wBACF,MAAM;oBACP;wBACC,MAAM,IAAI,KAAK,CACd,oEAAoE,SAAS,EAAE,CAC/E,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAClC,KAAK,EAAE,wBAAwB,CAAC,aAAa;oBAC7C,EAAE;iBACF,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,gBAAgB,CACf,GAAG,EACH,6DAA6D,CAC7D,CAAC;YACH,CAAC;QACF,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACrB,gBAAgB,CACf,GAAG,EACH,6DAA6D,CAC7D,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QAClD,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,GAAG,wBAAwB,CAAC,eAAe,IAAI,QAAQ,EAAE,CACzD,CAAC;YACF,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO;YACR,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAoC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC3C,QAAgB,EAChB,oBAAiE,EACjE,YAAgC,EAChC,SAA6B,EAC7B,KAAa,EAAE,aAAa;IAC5B,SAAkB;QAElB,IAAI,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC;gBACJ,iCAAiC;gBACjC,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAClC,KAAK,EAAE,wBAAwB,CAAC,aAAa;oBAC7C,EAAE,EAAE,oBAAoB,CAAC,EAAE;iBAC3B,CAAC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACR,mFAAmF;YACpF,CAAC;QACF,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC9C,KAAK,EAAE,wBAAwB,CAAC,aAAa;YAC7C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACvB,QAAQ;gBACR,SAAS;aACT,CAAC;YACF,KAAK;SACL,CAAC,CAAC;QAEH,0EAA0E;QAC1E,iDAAiD;QACjD,IACC,+CAA+C,IAAI,IAAI;YACvD,oBAAoB,EAAE,YAAY,KAAK,YAAY,EAClD,CAAC;YACF,SAAS,KAAK,oBAAoB,CAAC,SAAS,CAAC;QAC9C,CAAC;QAED,MAAM,KAAK,CAAC,GAAG,CACd,GAAG,wBAAwB,CAAC,eAAe,IAAI,QAAQ,EAAE,EACzD,IAAI,CAAC,SAAS,CAAC;YACd,EAAE,EAAE,KAAK;YACT,YAAY;YACZ,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI;gBACxB,SAAS;aACT,CAAC;SACwC,CAAC,EAC5C,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAChD,CAAC;IACH,CAAC;IAEM,KAAK;QACX,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChD,OAAO;QACR,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;YACxE,IAAI,CAAC;gBACJ,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,CAAC;gBACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO;gBACR,CAAC;gBAED,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;gBACrE,IAAI,CAAC,cAAc,EAAE,CAAC;oBACrB,OAAO;gBACR,CAAC;gBACD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAE7D,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,gBAAgB,CACf,GAAG,EACH,yDAAyD,QAAQ,EAAE,CACnE,CAAC;YACH,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,cAAsB;QACpE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO;QACR,CAAC;QAED,IAAI,SAA6B,CAAC;QAClC,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC5E,sGAAsG;QACtG,IACC,yBAAyB,EAAE,YAAY,KAAK,kBAAkB,CAAC,MAAM;YACrE,CAAC,+CAA+C,IAAI,IAAI;gBACvD,CAAC,yBAAyB,CAAC,SAAS,IAAI,IAAI;oBAC3C,IAAI,CAAC,GAAG,EAAE;wBACT,yBAAyB,CAAC,SAAS;4BAClC,+CAA+C,CAAC,CAAC,EACpD,CAAC;YACF,uCAAuC;YACvC,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAClE,IAAI,+CAA+C,IAAI,IAAI,EAAE,CAAC;gBAC7D,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB,CAAC;QACF,CAAC;QAED,yBAAyB;QACzB,MAAM,IAAI,CAAC,8BAA8B,CACxC,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,CAAC,MAAM,EACzB,kBAAkB,CAAC,OAAO,EAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,mGAAmG;QAC9H,SAAS,CACT,CAAC;IACH,CAAC;;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/device-heartbeat/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/open-balena-api",
|
|
3
3
|
"description": "Internet of things, Made Simple",
|
|
4
|
-
"version": "52.
|
|
4
|
+
"version": "52.2.0",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -126,7 +126,6 @@
|
|
|
126
126
|
"rate-limiter-flexible": "^11.0.0",
|
|
127
127
|
"redis": "^6.3.0",
|
|
128
128
|
"request": "^2.88.2",
|
|
129
|
-
"rsmq": "^0.13.0",
|
|
130
129
|
"semver": "^7.7.4",
|
|
131
130
|
"slugify": "^1.6.9",
|
|
132
131
|
"snappy": "^7.3.3",
|
|
@@ -175,6 +174,6 @@
|
|
|
175
174
|
"_": "index.js"
|
|
176
175
|
},
|
|
177
176
|
"versionist": {
|
|
178
|
-
"publishedAt": "2026-11-
|
|
177
|
+
"publishedAt": "2026-11-02T17:00:42.535Z"
|
|
179
178
|
}
|
|
180
179
|
}
|