@balena/open-balena-api 46.0.22 → 46.0.23

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.
@@ -1,2 +1,43 @@
1
- import type { RequestHandler } from 'express';
2
- export declare const downloadImageConfig: RequestHandler;
1
+ export declare const downloadImageConfig: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, {
2
+ [x: string]: unknown;
3
+ version?: string | null | undefined;
4
+ fileType?: string | null | undefined;
5
+ appId?: string | number | null | undefined;
6
+ releaseId?: string | number | null | undefined;
7
+ hostname?: string | null | undefined;
8
+ deviceType?: string | null | undefined;
9
+ imageType?: string | null | undefined;
10
+ developmentMode?: string | boolean | undefined;
11
+ appUpdatePollInterval?: string | number | undefined;
12
+ network?: string | undefined;
13
+ wifiSsid?: string | undefined;
14
+ wifiKey?: string | undefined;
15
+ ip?: string | undefined;
16
+ gateway?: string | undefined;
17
+ netmask?: string | undefined;
18
+ secureboot?: string | boolean | undefined;
19
+ provisioningKeyName?: string | null | undefined;
20
+ provisioningKeyDescription?: string | null | undefined;
21
+ provisioningKeyExpiryDate?: string | null | undefined;
22
+ }, {
23
+ [x: string]: unknown;
24
+ version?: string | undefined;
25
+ fileType?: string | undefined;
26
+ appId?: string | undefined;
27
+ releaseId?: string | undefined;
28
+ hostname?: string | undefined;
29
+ deviceType?: string | undefined;
30
+ imageType?: string | undefined;
31
+ developmentMode?: string | undefined;
32
+ appUpdatePollInterval?: string | undefined;
33
+ network?: string | undefined;
34
+ wifiSsid?: string | undefined;
35
+ wifiKey?: string | undefined;
36
+ ip?: string | undefined;
37
+ gateway?: string | undefined;
38
+ netmask?: string | undefined;
39
+ secureboot?: string | undefined;
40
+ provisioningKeyName?: string | undefined;
41
+ provisioningKeyDescription?: string | undefined;
42
+ provisioningKeyExpiryDate?: string | undefined;
43
+ }, Record<string, any>>;
@@ -4,6 +4,7 @@ import { generateConfig } from './device-config.js';
4
4
  import { getDeviceTypeJsonBySlug } from '../device-types/device-types.js';
5
5
  import { checkInt } from '../../lib/utils.js';
6
6
  import { getApiKeyOptsFromRequest } from '../api-keys/lib.js';
7
+ import { createValidatedRequestHandler, z, } from '../../infra/validation/index.js';
7
8
  const { UnauthorizedError, NotFoundError, BadRequestError } = errors;
8
9
  const { api } = sbvrUtils;
9
10
  const getApp = async (appId, req) => {
@@ -26,7 +27,54 @@ const getApp = async (appId, req) => {
26
27
  }
27
28
  return app;
28
29
  };
29
- export const downloadImageConfig = async (req, res) => {
30
+ export const downloadImageConfig = createValidatedRequestHandler({
31
+ // TODO: this should be stricter with which properties are required/not actually optional
32
+ // The `looseObject` is because different device types can have options specific to them and so we cannot provide a complete set here..
33
+ query: z.looseObject({
34
+ version: z.string().optional(),
35
+ fileType: z.string().optional(),
36
+ appId: z.string().optional(),
37
+ releaseId: z.string().optional(),
38
+ hostname: z.string().optional(),
39
+ deviceType: z.string().optional(),
40
+ imageType: z.string().optional(),
41
+ developmentMode: z.string().optional(),
42
+ appUpdatePollInterval: z.string().optional(),
43
+ network: z.string().optional(),
44
+ wifiSsid: z.string().optional(),
45
+ wifiKey: z.string().optional(),
46
+ ip: z.string().optional(),
47
+ gateway: z.string().optional(),
48
+ netmask: z.string().optional(),
49
+ secureboot: z.string().optional(),
50
+ provisioningKeyName: z.string().optional(),
51
+ provisioningKeyDescription: z.string().optional(),
52
+ provisioningKeyExpiryDate: z.string().optional(),
53
+ }),
54
+ // TODO: this should be stricter with which properties are required/not actually optional
55
+ // The `looseObject` is because different device types can have options specific to them and so we cannot provide a complete set here..
56
+ body: z.looseObject({
57
+ version: z.string().nullish(),
58
+ fileType: z.string().nullish(),
59
+ appId: z.string().or(z.number()).nullish(),
60
+ releaseId: z.string().or(z.number()).nullish(),
61
+ hostname: z.string().nullish(),
62
+ deviceType: z.string().nullish(),
63
+ imageType: z.string().nullish(),
64
+ developmentMode: z.string().or(z.boolean()).optional(),
65
+ appUpdatePollInterval: z.string().or(z.number()).optional(),
66
+ network: z.string().optional(),
67
+ wifiSsid: z.string().optional(),
68
+ wifiKey: z.string().optional(),
69
+ ip: z.string().optional(),
70
+ gateway: z.string().optional(),
71
+ netmask: z.string().optional(),
72
+ secureboot: z.string().or(z.boolean()).optional(),
73
+ provisioningKeyName: z.string().nullish(),
74
+ provisioningKeyDescription: z.string().nullish(),
75
+ provisioningKeyExpiryDate: z.string().nullish(),
76
+ }),
77
+ }, async (req, res) => {
30
78
  try {
31
79
  // Combining both req.body and req.query given both GET and POST support
32
80
  // Ref: https://github.com/balena-io/balena-api/blob/master/src/routes/applications.ts#L95
@@ -48,13 +96,16 @@ export const downloadImageConfig = async (req, res) => {
48
96
  throw new BadRequestError('Device type must be a string if provided');
49
97
  }
50
98
  const provisioningKeyOptions = getApiKeyOptsFromRequest(req.body, 'provisioningKey');
51
- provisioningKeyOptions.name ??= 'Automatically generated provisioning key';
99
+ provisioningKeyOptions.name ??=
100
+ 'Automatically generated provisioning key';
52
101
  provisioningKeyOptions.description ??=
53
102
  'Automatically generated for a config file generation';
54
103
  const resinApi = api.resin.clone({ passthrough: { req } });
55
104
  const app = await getApp(appId, req);
56
105
  const deviceTypeJson = await getDeviceTypeJsonBySlug(resinApi, deviceTypeSlug ?? app.is_for__device_type[0].slug);
57
- const config = await generateConfig(req, app, provisioningKeyOptions, deviceTypeJson, osVersion);
106
+ const config = await generateConfig(
107
+ // TODO: This can be removed when `generateConfig` no longer checks both body/query on the req
108
+ req, app, provisioningKeyOptions, deviceTypeJson, osVersion);
58
109
  res.json(config);
59
110
  }
60
111
  catch (err) {
@@ -62,11 +113,12 @@ export const downloadImageConfig = async (req, res) => {
62
113
  if (errorToReturn instanceof UnauthorizedError) {
63
114
  errorToReturn = new NotFoundError(errorToReturn);
64
115
  }
116
+ // We need to cast here because the `req.query` typing has `unknown` as keys which is incompatible
65
117
  if (handleHttpErrors(req, res, errorToReturn)) {
66
118
  return;
67
119
  }
68
120
  captureException(errorToReturn, 'Error generating config');
69
121
  res.status(500).send(translateError(errorToReturn));
70
122
  }
71
- };
123
+ });
72
124
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/features/device-config/download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/features/device-config/download.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/device-config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAgB,EAAE,EAAE;IACzC,GAAG,CAAC,GAAG,CACN,kBAAkB,EAClB,UAAU,CAAC,sBAAsB,EACjC,mBAAmB,CACnB,CAAC;IACF,GAAG,CAAC,IAAI,CACP,kBAAkB,EAClB,UAAU,CAAC,sBAAsB,EACjC,mBAAmB,CACnB,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/device-config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAgB,EAAE,EAAE;IACzC,GAAG,CAAC,GAAG,CACN,kBAAkB,EAClB,UAAU,CAAC,sBAAwC,EACnD,mBAAmB,CACnB,CAAC;IACF,GAAG,CAAC,IAAI,CACP,kBAAkB,EAClB,UAAU,CAAC,sBAAwC,EACnD,mBAAmB,CACnB,CAAC;AACH,CAAC,CAAC"}
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": "46.0.22",
4
+ "version": "46.0.23",
5
5
  "license": "AGPL-3.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -185,6 +185,6 @@
185
185
  "import": "@swc-node/register/esm-register"
186
186
  },
187
187
  "versionist": {
188
- "publishedAt": "2026-05-19T19:08:44.149Z"
188
+ "publishedAt": "2026-05-19T19:26:38.742Z"
189
189
  }
190
190
  }