@balena/open-balena-api 34.9.1-build-joshbwlng-device-proxy-b66044434e2e6f7af2a63cdce60b070b3b96e643-2 → 34.9.1-build-bump-typescript-to-5-8-2-fb9b6a6a7069a96b738289c95e3d1f8c017250c0-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/api-keys/lib.d.ts +8 -1
- package/dist/features/device-proxy/device-proxy.js +1 -5
- package/dist/features/device-proxy/device-proxy.js.map +1 -1
- package/dist/infra/redis/index.d.ts +2 -9
- package/dist/infra/scheduler/index.js +4 -1
- package/dist/infra/scheduler/index.js.map +1 -1
- package/package.json +3 -3
@@ -31,5 +31,12 @@ export declare const isApiKeyWithRole: import("../../infra/cache/multi-level-mem
|
|
31
31
|
* Temporarily augments the request's api key with the specified permissions.
|
32
32
|
* This will not have any effect if the request is not using an api key
|
33
33
|
*/
|
34
|
-
export declare const augmentReqApiKeyPermissions: <T extends permissions.PermissionReq>(req: T, extraPermissions: string[],
|
34
|
+
export declare const augmentReqApiKeyPermissions: <T extends permissions.PermissionReq>(req: T, extraPermissions: string[],
|
35
|
+
/**
|
36
|
+
* When mutateRequestObject is
|
37
|
+
* false: A new request object with augmented permissions is returned to be used for specific tasks,
|
38
|
+
* while the rest of the code (eg: middleware & hooks) still runs with permissions the original request.
|
39
|
+
* true: The permissions are augmented for the whole lifetime of the request.
|
40
|
+
*/
|
41
|
+
mutateRequestObject?: boolean) => T;
|
35
42
|
export {};
|
@@ -136,15 +136,11 @@ async function requestDevices({ url, filter, data, req, wait = true, method = 'P
|
|
136
136
|
// Check for device update permission, except for
|
137
137
|
// internal operation of the platform.
|
138
138
|
if (method !== 'GET' && req !== permissions.root) {
|
139
|
-
const urlAction = url.split('/').pop() ?? '';
|
140
|
-
const action = ['purge', 'shutdown'].includes(urlAction)
|
141
|
-
? urlAction
|
142
|
-
: 'update';
|
143
139
|
await Promise.all(deviceIds.map(async (deviceId) => {
|
144
140
|
const res = (await resinApi.request({
|
145
141
|
method: 'POST',
|
146
142
|
url: `device(${deviceId})/canAccess`,
|
147
|
-
body: { action },
|
143
|
+
body: { action: 'update' },
|
148
144
|
}));
|
149
145
|
if (res?.d?.[0]?.id !== deviceId) {
|
150
146
|
throw new errors.ForbiddenError();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"device-proxy.js","sourceRoot":"","sources":["../../../src/features/device-proxy/device-proxy.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"device-proxy.js","sourceRoot":"","sources":["../../../src/features/device-proxy/device-proxy.ts"],"names":[],"mappings":"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"}
|
@@ -2,10 +2,7 @@ import { Redis } from 'ioredis';
|
|
2
2
|
import * as NodeRedis from 'redis';
|
3
3
|
import type { REDIS } from '../../lib/config.js';
|
4
4
|
import { getNodeRedisOptions, getRedisOptions } from './config.js';
|
5
|
-
export declare const createIsolatedNodeRedis: (
|
6
|
-
readOnly?: boolean;
|
7
|
-
instance?: keyof typeof REDIS;
|
8
|
-
} | undefined) => Promise<NodeRedis.RedisClusterType<{
|
5
|
+
export declare const createIsolatedNodeRedis: (...args: Parameters<typeof getNodeRedisOptions>) => Promise<NodeRedis.RedisClusterType<{
|
9
6
|
graph: {
|
10
7
|
CONFIG_GET: typeof import("@redis/graph/dist/commands/CONFIG_GET.js");
|
11
8
|
configGet: typeof import("@redis/graph/dist/commands/CONFIG_GET.js");
|
@@ -584,11 +581,7 @@ export declare const createIsolatedNodeRedis: (args_0?: {
|
|
584
581
|
reserve: typeof import("@redis/bloom/dist/commands/top-k/RESERVE.js");
|
585
582
|
};
|
586
583
|
} & NodeRedis.RedisModules, NodeRedis.RedisFunctions, NodeRedis.RedisScripts>>;
|
587
|
-
export declare const createIsolatedRedis: (
|
588
|
-
readOnly?: boolean;
|
589
|
-
instance?: keyof typeof REDIS;
|
590
|
-
enableAutoPipelining?: boolean;
|
591
|
-
} | undefined) => Redis | import("ioredis").Cluster;
|
584
|
+
export declare const createIsolatedRedis: (...args: Parameters<typeof getRedisOptions>) => Redis | import("ioredis").Cluster;
|
592
585
|
export declare const redis: Redis | import("ioredis").Cluster;
|
593
586
|
export declare const redisRO: Redis | import("ioredis").Cluster;
|
594
587
|
export declare const nodeRedis: NodeRedis.RedisClusterType<{
|
@@ -52,7 +52,10 @@ const updateJobInfoExecute = async (jobInfoKey, job) => {
|
|
52
52
|
export const jobIds = [];
|
53
53
|
export const scheduleJob = (jobId, rule, jobFunction, lockOptions) => {
|
54
54
|
jobIds.push(jobId);
|
55
|
-
|
55
|
+
// TODO: Change this to `lockOptions?.ttl ?? JOB_DEFAULT_TTL` in the next major.
|
56
|
+
const ttl = lockOptions?.ttl != null && lockOptions.ttl !== 0
|
57
|
+
? lockOptions.ttl
|
58
|
+
: JOB_DEFAULT_TTL;
|
56
59
|
const jobLockKey = JOB_LOCK_PREFIX + jobId;
|
57
60
|
const jobInfoKey = JOB_INFO_PREFIX + jobId;
|
58
61
|
const job = schedule.scheduleJob(jobId, rule, async (fireDate) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infra/scheduler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;EAiBE;AAEF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;AAe1B,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,eAAe,GAAG,IAAI,CAAC;AAY7B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE;IACnC,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,KAAK,EAClC,UAAkB,EAClB,GAAiB,EACjB,QAAc,EACK,EAAE;IACrB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAE5C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,CACN,OAAO,CAAC,cAAc,IAAI,IAAI;QAC9B,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,OAAO,EAAE;QAC5C,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,CACvD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,UAAkB,EAAE,GAAiB,EAAE,EAAE;IAC5E,MAAM,OAAO,GAAY;QACxB,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE;KAC9C,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAa,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG,CAC1B,KAAa,EACb,IAKS,EACT,WAAwB,EACxB,WAA0B,EACX,EAAE;IACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,MAAM,GAAG,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infra/scheduler/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": "34.9.1-build-
|
4
|
+
"version": "34.9.1-build-bump-typescript-to-5-8-2-fb9b6a6a7069a96b738289c95e3d1f8c017250c0-1",
|
5
5
|
"license": "AGPL-3.0",
|
6
6
|
"repository": {
|
7
7
|
"type": "git",
|
@@ -136,7 +136,7 @@
|
|
136
136
|
"tar": "^7.4.3",
|
137
137
|
"thirty-two": "^1.0.2",
|
138
138
|
"typed-error": "^3.2.2",
|
139
|
-
"typescript": "^5.
|
139
|
+
"typescript": "^5.8.2",
|
140
140
|
"uuid": "^11.0.5",
|
141
141
|
"validator": "^13.12.0",
|
142
142
|
"ws": "^8.18.0"
|
@@ -174,6 +174,6 @@
|
|
174
174
|
"import": "@swc-node/register/esm-register"
|
175
175
|
},
|
176
176
|
"versionist": {
|
177
|
-
"publishedAt": "2025-03-
|
177
|
+
"publishedAt": "2025-03-04T07:05:38.568Z"
|
178
178
|
}
|
179
179
|
}
|