Compare commits

..

No commits in common. "master" and "v21.1.1" have entirely different histories.

14 changed files with 228 additions and 647 deletions

View File

@ -28,7 +28,7 @@ runs:
using: 'composite' using: 'composite'
steps: steps:
- name: Download custom source artifact - name: Download custom source artifact
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with: with:
name: custom-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ runner.os }}-${{ runner.arch }} name: custom-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ runner.os }}-${{ runner.arch }}
path: ${{ runner.temp }} path: ${{ runner.temp }}
@ -39,7 +39,7 @@ runs:
run: tar -xf ${{ runner.temp }}/custom.tgz run: tar -xf ${{ runner.temp }}/custom.tgz
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4
with: with:
node-version: ${{ inputs.NODE_VERSION }} node-version: ${{ inputs.NODE_VERSION }}
cache: npm cache: npm
@ -135,7 +135,7 @@ runs:
XCODE_APP_LOADER_TEAM_ID: ${{ inputs.XCODE_APP_LOADER_TEAM_ID }} XCODE_APP_LOADER_TEAM_ID: ${{ inputs.XCODE_APP_LOADER_TEAM_ID }}
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4
with: with:
name: gh-release-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ strategy.job-index }} name: gh-release-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ strategy.job-index }}
path: dist path: dist

View File

@ -26,7 +26,7 @@ runs:
steps: steps:
# https://github.com/actions/setup-node#caching-global-packages-data # https://github.com/actions/setup-node#caching-global-packages-data
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4
with: with:
node-version: ${{ inputs.NODE_VERSION }} node-version: ${{ inputs.NODE_VERSION }}
cache: npm cache: npm
@ -58,7 +58,7 @@ runs:
run: tar --exclude-vcs -acf ${{ runner.temp }}/custom.tgz . run: tar --exclude-vcs -acf ${{ runner.temp }}/custom.tgz .
- name: Upload custom artifact - name: Upload custom artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4
with: with:
name: custom-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ runner.os }}-${{ runner.arch }} name: custom-${{ github.event.pull_request.head.sha || github.event.head_commit.id }}-${{ runner.os }}-${{ runner.arch }}
path: ${{ runner.temp }}/custom.tgz path: ${{ runner.temp }}/custom.tgz

View File

@ -1,268 +1,3 @@
- commits:
- subject: Update balena-config-json to rely on the balena-image-fs helpers
hash: 4fcedd0607624ddbd26917e3be5fcbd39d96d2f6
body: |
Update balena-config-json from 4.2.2 to 4.2.7
Update balena-image-fs from 7.5.0 to 7.5.2
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested:
- commits:
- subject: Fix getBootPartition always warning that the boot partitions were not
found
hash: d91290d9c4b502652c50a34482ff68448eb0a4c2
body: ""
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
version: balena-config-json-4.2.7
title: ""
date: 2025-04-02T14:14:31.495Z
- commits:
- subject: "write: Allow undefined as a value for the deprecated type parameter"
hash: 9d5a44175e7f46f2f3963d794d48d3de8f49300f
body: ""
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
- subject: Use the balena-image-fs findPartition() helper to find the boot
partition
hash: 49282ed9bd121d89c8d6fee5095917876cd6f501
body: |
Update balena-image-fs from 7.4.0 to 7.5.0
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested:
- commits:
- subject: Add function to find a partition by name/label
hash: 4e9b1cfb2739b738dd12bda7d1623e08ad208b46
body: ""
footer:
Change-type: minor
change-type: minor
Signed-off-by: Ken Bannister <kb2ma@runbox.com>
signed-off-by: Ken Bannister <kb2ma@runbox.com>
author: Ken Bannister
nested: []
version: balena-image-fs-7.5.0
title: ""
date: 2025-03-26T12:35:30.365Z
- commits:
- subject: bump ext2fs to 4.2.4
hash: 300cc6d5cdd12ce0c47986efe98702511a03f4a5
body: ""
footer:
Change-type: patch
change-type: patch
Signed-off-by: Ryan Cooke<ryan@balena.io>
signed-off-by: Ryan Cooke<ryan@balena.io>
author: Ryan Cooke
nested: []
version: balena-image-fs-7.4.1
title: ""
date: 2025-02-21T10:21:04.380Z
version: balena-config-json-4.2.6
title: ""
date: 2025-04-01T01:09:16.169Z
- commits:
- subject: Update @balena/lint to 9.1.4
hash: 0ff1aa1ed8803b622948214493e1f9ec88cfe910
body: |
Update @balena/lint from 6.2.2 to 9.1.4
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
version: balena-config-json-4.2.5
title: ""
date: 2025-03-26T11:41:52.400Z
- commits:
- subject: Switch use ts-mocha instead of manually compiling the tests
hash: c6e46d393d8670781cf9f94512e8ef05a4236111
body: ""
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
- subject: Update TypeScript to 5.8.2
hash: b8a8183bc14c24a63f5bc5dd60d8906f6d97a00d
body: ""
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
version: balena-config-json-4.2.4
title: ""
date: 2025-03-26T09:09:13.516Z
- commits:
- subject: Update chai to v5
hash: 7fe83ffc781eb66ac3535749f7fdf56d458eb959
body: |
Update @types/chai from 4.3.20 to 5.2.0
footer:
Change-type: patch
change-type: patch
author: balena-renovate[bot]
nested: []
version: balena-config-json-4.2.3
title: ""
date: 2025-03-26T08:40:58.555Z
- commits:
- subject: Update dependency jsdoc-to-markdown to v9
hash: f22a0a1dae022035e5357c147f681f8b7c703fe3
body: |
Update jsdoc-to-markdown from 8.0.3 to 9.1.1
footer:
Change-type: patch
change-type: patch
author: balena-renovate[bot]
nested: []
version: balena-image-fs-7.5.2
title: ""
date: 2025-04-02T10:40:31.219Z
- commits:
- subject: Update @balena/lint to v9
hash: 4da5fa44a43047cdb4f96c37a73a0f0674c9327b
body: ""
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
- subject: Remove the no longer needed gpt detection helper
hash: 0973da43aa321e4e2dad4b83c5beb965b8da7044
body: ""
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
- subject: Update TypeScript to 5.8.2
hash: 1580e7d577e0183c2b5d4f9ce3d0b8f519e4dff3
body: ""
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
- subject: Drop the package-lock.json
hash: 400ba55caa4c4af8098e2b164cd184651c283230
body: ""
footer:
Change-type: patch
change-type: patch
author: Thodoris Greasidis
nested: []
version: balena-image-fs-7.5.1
title: ""
date: 2025-03-26T17:51:35.381Z
version: 21.1.9
title: ""
date: 2025-04-07T12:53:16.860Z
- commits:
- subject: Update actions/download-artifact action to v4.1.9
hash: a2209ffe5677388faf7b9bbccace5343265df51f
body: |
Update actions/download-artifact from 4.1.8 to 4.1.9
footer:
Change-type: patch
change-type: patch
author: balena-renovate[bot]
nested: []
version: 21.1.8
title: ""
date: 2025-04-03T16:10:02.341Z
- commits:
- subject: Update actions/upload-artifact digest to ea165f8
hash: c8ea9cfcdbaa9a8abf221132a7d1ff29a966e515
body: |
Update actions/upload-artifact
footer:
Change-type: patch
change-type: patch
author: balena-renovate[bot]
nested: []
version: 21.1.7
title: ""
date: 2025-04-03T15:12:14.222Z
- commits:
- subject: Update actions/setup-node digest to cdca736
hash: fe4243809033735a6439f39a1a33dfd00039d656
body: |
Update actions/setup-node
footer:
Change-type: patch
change-type: patch
author: balena-renovate[bot]
nested: []
version: 21.1.6
title: ""
date: 2025-04-03T14:12:06.042Z
- commits:
- subject: Update dockerode/docker-modem dependencies for fixes
hash: b650f8ff6d01d2144886253f93aa1d1867f51980
body: ""
footer:
Change-type: patch
change-type: patch
Signed-off-by: Ken Bannister <kb2ma@runbox.com>
signed-off-by: Ken Bannister <kb2ma@runbox.com>
author: Ken Bannister
nested: []
version: 21.1.5
title: ""
date: 2025-04-03T13:28:08.855Z
- commits:
- subject: Add comment with secure boot signature file example for preload
hash: 28703bb5ae13539ab4c1c597e6a53a5292a7edde
body: ""
footer:
Change-type: patch
change-type: patch
Signed-off-by: Ken Bannister <kb2ma@runbox.com>
signed-off-by: Ken Bannister <kb2ma@runbox.com>
author: Ken Bannister
nested: []
version: 21.1.4
title: ""
date: 2025-04-02T09:16:27.791Z
- commits:
- subject: Fix device detail for open balena
hash: 0d4e411777dd53d83c475da3653ab94176e07d7d
body: ""
footer:
Change-type: patch
change-type: patch
author: Otavio Jacobi
nested: []
version: 21.1.3
title: ""
date: 2025-03-28T16:57:00.250Z
- commits:
- subject: Deny preload for an image with secure boot enabled
hash: 7f2daeebb0973a59682ba4300e1b00bce6f6aead
body: ""
footer:
Change-type: patch
change-type: patch
Signed-off-by: Ken Bannister <kb2ma@runbox.com>
signed-off-by: Ken Bannister <kb2ma@runbox.com>
author: Ken Bannister
nested: []
version: 21.1.2
title: ""
date: 2025-03-27T12:20:22.883Z
- commits: - commits:
- subject: Bump balena-sdk to 21.3.0 - subject: Bump balena-sdk to 21.3.0
hash: e82906872538a7401e31bd52e662e8356a89d413 hash: e82906872538a7401e31bd52e662e8356a89d413

View File

@ -4,90 +4,6 @@ All notable changes to this project will be documented in this file
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY! automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
This project adheres to [Semantic Versioning](http://semver.org/). This project adheres to [Semantic Versioning](http://semver.org/).
## 21.1.9 - 2025-04-07
<details>
<summary> Update balena-config-json to rely on the balena-image-fs helpers [Thodoris Greasidis] </summary>
> ### balena-config-json-4.2.7 - 2025-04-02
>
> * Fix getBootPartition always warning that the boot partitions were not found [Thodoris Greasidis]
>
> ### balena-config-json-4.2.6 - 2025-04-01
>
> * write: Allow undefined as a value for the deprecated type parameter [Thodoris Greasidis]
>
> <details>
> <summary> Use the balena-image-fs findPartition() helper to find the boot partition [Thodoris Greasidis] </summary>
>
>> #### balena-image-fs-7.5.0 - 2025-03-26
>>
>> * Add function to find a partition by name/label [Ken Bannister]
>>
>> #### balena-image-fs-7.4.1 - 2025-02-21
>>
>> * bump ext2fs to 4.2.4 [Ryan Cooke]
>>
>
> </details>
>
>
> ### balena-config-json-4.2.5 - 2025-03-26
>
> * Update @balena/lint to 9.1.4 [Thodoris Greasidis]
>
> ### balena-config-json-4.2.4 - 2025-03-26
>
> * Switch use ts-mocha instead of manually compiling the tests [Thodoris Greasidis]
> * Update TypeScript to 5.8.2 [Thodoris Greasidis]
>
> ### balena-config-json-4.2.3 - 2025-03-26
>
> * Update chai to v5 [balena-renovate[bot]]
>
> ### balena-image-fs-7.5.2 - 2025-04-02
>
> * Update dependency jsdoc-to-markdown to v9 [balena-renovate[bot]]
>
> ### balena-image-fs-7.5.1 - 2025-03-26
>
> * Update @balena/lint to v9 [Thodoris Greasidis]
> * Remove the no longer needed gpt detection helper [Thodoris Greasidis]
> * Update TypeScript to 5.8.2 [Thodoris Greasidis]
> * Drop the package-lock.json [Thodoris Greasidis]
>
</details>
## 21.1.8 - 2025-04-03
* Update actions/download-artifact action to v4.1.9 [balena-renovate[bot]]
## 21.1.7 - 2025-04-03
* Update actions/upload-artifact digest to ea165f8 [balena-renovate[bot]]
## 21.1.6 - 2025-04-03
* Update actions/setup-node digest to cdca736 [balena-renovate[bot]]
## 21.1.5 - 2025-04-03
* Update dockerode/docker-modem dependencies for fixes [Ken Bannister]
## 21.1.4 - 2025-04-02
* Add comment with secure boot signature file example for preload [Ken Bannister]
## 21.1.3 - 2025-03-28
* Fix device detail for open balena [Otavio Jacobi]
## 21.1.2 - 2025-03-27
* Deny preload for an image with secure boot enabled [Ken Bannister]
## 21.1.1 - 2025-03-26 ## 21.1.1 - 2025-03-26

224
npm-shrinkwrap.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "balena-cli", "name": "balena-cli",
"version": "21.1.9", "version": "21.1.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "balena-cli", "name": "balena-cli",
"version": "21.1.9", "version": "21.1.1",
"hasInstallScript": true, "hasInstallScript": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
@ -16,10 +16,10 @@
"@balena/es-version": "^1.0.1", "@balena/es-version": "^1.0.1",
"@oclif/core": "^4.1.0", "@oclif/core": "^4.1.0",
"@sentry/node": "^6.16.1", "@sentry/node": "^6.16.1",
"balena-config-json": "^4.2.7", "balena-config-json": "^4.2.2",
"balena-device-init": "^8.1.3", "balena-device-init": "^8.1.3",
"balena-errors": "^4.7.3", "balena-errors": "^4.7.3",
"balena-image-fs": "^7.5.2", "balena-image-fs": "^7.3.0",
"balena-preload": "^18.0.1", "balena-preload": "^18.0.1",
"balena-sdk": "^21.3.0", "balena-sdk": "^21.3.0",
"balena-semver": "^2.3.0", "balena-semver": "^2.3.0",
@ -34,9 +34,9 @@
"common-tags": "^1.7.2", "common-tags": "^1.7.2",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"denymount": "^2.3.0", "denymount": "^2.3.0",
"docker-modem": "^5.0.6", "docker-modem": "5.0.5",
"docker-progress": "^5.1.3", "docker-progress": "^5.1.3",
"dockerode": "^4.0.5", "dockerode": "4.0.3",
"ejs": "^3.1.6", "ejs": "^3.1.6",
"etcher-sdk": "9.1.0", "etcher-sdk": "9.1.0",
"express": "^4.17.2", "express": "^4.17.2",
@ -2517,14 +2517,14 @@
} }
}, },
"node_modules/@inquirer/checkbox/node_modules/@inquirer/core": { "node_modules/@inquirer/checkbox/node_modules/@inquirer/core": {
"version": "10.1.10", "version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==", "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^2.0.0", "mute-stream": "^2.0.0",
@ -2545,9 +2545,9 @@
} }
}, },
"node_modules/@inquirer/checkbox/node_modules/@inquirer/type": { "node_modules/@inquirer/checkbox/node_modules/@inquirer/type": {
"version": "3.0.6", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==", "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -2682,13 +2682,13 @@
} }
}, },
"node_modules/@inquirer/core/node_modules/@types/node": { "node_modules/@inquirer/core/node_modules/@types/node": {
"version": "22.14.0", "version": "22.13.13",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz",
"integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", "integrity": "sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~6.21.0" "undici-types": "~6.20.0"
} }
}, },
"node_modules/@inquirer/core/node_modules/ansi-escapes": { "node_modules/@inquirer/core/node_modules/ansi-escapes": {
@ -2749,11 +2749,10 @@
} }
}, },
"node_modules/@inquirer/core/node_modules/undici-types": { "node_modules/@inquirer/core/node_modules/undici-types": {
"version": "6.21.0", "version": "6.20.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
"dev": true, "dev": true
"license": "MIT"
}, },
"node_modules/@inquirer/core/node_modules/wrap-ansi": { "node_modules/@inquirer/core/node_modules/wrap-ansi": {
"version": "6.2.0", "version": "6.2.0",
@ -2787,14 +2786,14 @@
} }
}, },
"node_modules/@inquirer/editor/node_modules/@inquirer/core": { "node_modules/@inquirer/editor/node_modules/@inquirer/core": {
"version": "10.1.10", "version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==", "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^2.0.0", "mute-stream": "^2.0.0",
@ -2815,9 +2814,9 @@
} }
}, },
"node_modules/@inquirer/editor/node_modules/@inquirer/type": { "node_modules/@inquirer/editor/node_modules/@inquirer/type": {
"version": "3.0.6", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==", "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -2947,14 +2946,14 @@
} }
}, },
"node_modules/@inquirer/expand/node_modules/@inquirer/core": { "node_modules/@inquirer/expand/node_modules/@inquirer/core": {
"version": "10.1.10", "version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==", "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^2.0.0", "mute-stream": "^2.0.0",
@ -2975,9 +2974,9 @@
} }
}, },
"node_modules/@inquirer/expand/node_modules/@inquirer/type": { "node_modules/@inquirer/expand/node_modules/@inquirer/type": {
"version": "3.0.6", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==", "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -3103,14 +3102,14 @@
} }
}, },
"node_modules/@inquirer/number/node_modules/@inquirer/core": { "node_modules/@inquirer/number/node_modules/@inquirer/core": {
"version": "10.1.10", "version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==", "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^2.0.0", "mute-stream": "^2.0.0",
@ -3131,9 +3130,9 @@
} }
}, },
"node_modules/@inquirer/number/node_modules/@inquirer/type": { "node_modules/@inquirer/number/node_modules/@inquirer/type": {
"version": "3.0.6", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==", "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -3237,14 +3236,14 @@
} }
}, },
"node_modules/@inquirer/password/node_modules/@inquirer/core": { "node_modules/@inquirer/password/node_modules/@inquirer/core": {
"version": "10.1.10", "version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==", "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^2.0.0", "mute-stream": "^2.0.0",
@ -3265,9 +3264,9 @@
} }
}, },
"node_modules/@inquirer/password/node_modules/@inquirer/type": { "node_modules/@inquirer/password/node_modules/@inquirer/type": {
"version": "3.0.6", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==", "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -3378,14 +3377,14 @@
} }
}, },
"node_modules/@inquirer/prompts/node_modules/@inquirer/confirm": { "node_modules/@inquirer/prompts/node_modules/@inquirer/confirm": {
"version": "5.1.9", "version": "5.1.8",
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.9.tgz", "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.8.tgz",
"integrity": "sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==", "integrity": "sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.1.10", "@inquirer/core": "^10.1.9",
"@inquirer/type": "^3.0.6" "@inquirer/type": "^3.0.5"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
@ -3400,14 +3399,14 @@
} }
}, },
"node_modules/@inquirer/prompts/node_modules/@inquirer/core": { "node_modules/@inquirer/prompts/node_modules/@inquirer/core": {
"version": "10.1.10", "version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==", "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^2.0.0", "mute-stream": "^2.0.0",
@ -3428,14 +3427,14 @@
} }
}, },
"node_modules/@inquirer/prompts/node_modules/@inquirer/input": { "node_modules/@inquirer/prompts/node_modules/@inquirer/input": {
"version": "4.1.9", "version": "4.1.8",
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.9.tgz", "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.8.tgz",
"integrity": "sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==", "integrity": "sha512-WXJI16oOZ3/LiENCAxe8joniNp8MQxF6Wi5V+EBbVA0ZIOpFcL4I9e7f7cXse0HJeIPCWO8Lcgnk98juItCi7Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.1.10", "@inquirer/core": "^10.1.9",
"@inquirer/type": "^3.0.6" "@inquirer/type": "^3.0.5"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
@ -3450,15 +3449,15 @@
} }
}, },
"node_modules/@inquirer/prompts/node_modules/@inquirer/select": { "node_modules/@inquirer/prompts/node_modules/@inquirer/select": {
"version": "4.1.1", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.1.1.tgz", "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.1.0.tgz",
"integrity": "sha512-IUXzzTKVdiVNMA+2yUvPxWsSgOG4kfX93jOM4Zb5FgujeInotv5SPIJVeXQ+fO4xu7tW8VowFhdG5JRmmCyQ1Q==", "integrity": "sha512-z0a2fmgTSRN+YBuiK1ROfJ2Nvrpij5lVN3gPDkQGhavdvIVGHGW29LwYZfM/j42Ai2hUghTI/uoBuTbrJk42bA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.1.10", "@inquirer/core": "^10.1.9",
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"yoctocolors-cjs": "^2.1.2" "yoctocolors-cjs": "^2.1.2"
}, },
@ -3475,9 +3474,9 @@
} }
}, },
"node_modules/@inquirer/prompts/node_modules/@inquirer/type": { "node_modules/@inquirer/prompts/node_modules/@inquirer/type": {
"version": "3.0.6", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==", "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -3587,14 +3586,14 @@
} }
}, },
"node_modules/@inquirer/rawlist/node_modules/@inquirer/core": { "node_modules/@inquirer/rawlist/node_modules/@inquirer/core": {
"version": "10.1.10", "version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==", "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^2.0.0", "mute-stream": "^2.0.0",
@ -3615,9 +3614,9 @@
} }
}, },
"node_modules/@inquirer/rawlist/node_modules/@inquirer/type": { "node_modules/@inquirer/rawlist/node_modules/@inquirer/type": {
"version": "3.0.6", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==", "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -3722,14 +3721,14 @@
} }
}, },
"node_modules/@inquirer/search/node_modules/@inquirer/core": { "node_modules/@inquirer/search/node_modules/@inquirer/core": {
"version": "10.1.10", "version": "10.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz",
"integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==", "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/figures": "^1.0.11", "@inquirer/figures": "^1.0.11",
"@inquirer/type": "^3.0.6", "@inquirer/type": "^3.0.5",
"ansi-escapes": "^4.3.2", "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^2.0.0", "mute-stream": "^2.0.0",
@ -3750,9 +3749,9 @@
} }
}, },
"node_modules/@inquirer/search/node_modules/@inquirer/type": { "node_modules/@inquirer/search/node_modules/@inquirer/type": {
"version": "3.0.6", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz",
"integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==", "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -5830,9 +5829,9 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "20.17.30", "version": "20.17.27",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.27.tgz",
"integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==", "integrity": "sha512-U58sbKhDrthHlxHRJw7ZLiLDZGmAUOZUbpw0S6nL27sYUdhvgBLCRu/keSd6qcTsfArd1sRFCCBxzWATGr/0UA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~6.19.2" "undici-types": "~6.19.2"
@ -7364,12 +7363,12 @@
} }
}, },
"node_modules/balena-config-json": { "node_modules/balena-config-json": {
"version": "4.2.7", "version": "4.2.2",
"resolved": "https://registry.npmjs.org/balena-config-json/-/balena-config-json-4.2.7.tgz", "resolved": "https://registry.npmjs.org/balena-config-json/-/balena-config-json-4.2.2.tgz",
"integrity": "sha512-cnRsRyKiPojETc/Xq9yN25d78ihGbFp1lJPeGzVKcuNn2PKZ6f6N3SMNuJA7BbFNMKrDhpEhGn274jCWklskaA==", "integrity": "sha512-dI/vZ+1Zgz8X/PEBEtBqGqi4eWDtD0e05LAOAIfdTtbYJK5DJhMSq7Is3IKDWgZNejDI+NpbDmRok45tqCmiag==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"balena-image-fs": "^7.5.0", "balena-image-fs": "^7.4.0",
"file-disk": "^8.0.1", "file-disk": "^8.0.1",
"partitioninfo": "^6.0.2" "partitioninfo": "^6.0.2"
} }
@ -7428,9 +7427,9 @@
} }
}, },
"node_modules/balena-image-fs": { "node_modules/balena-image-fs": {
"version": "7.5.2", "version": "7.4.1",
"resolved": "https://registry.npmjs.org/balena-image-fs/-/balena-image-fs-7.5.2.tgz", "resolved": "https://registry.npmjs.org/balena-image-fs/-/balena-image-fs-7.4.1.tgz",
"integrity": "sha512-bOxnUaJWA26wNlOMc5QScBvqGLQUWw/K0GK/VDgu5tGsZdN4rtdIPSbhXcKBw+0gcNPUumYDtdDPipaOH1kREA==", "integrity": "sha512-md41m3Jo54EOj7ASrqCD2GJ+LtF9AmMT46dABIbaPvVerY1zUEW8rGfIfrgq4Tz3tL82y73spoVhcabtkaRj5A==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"ext2fs": "^4.2.4", "ext2fs": "^4.2.4",
@ -9467,9 +9466,9 @@
"integrity": "sha512-6+VnnhZpxwWvvKwjkRnuqlTtlBRJuM+3cCSXmZoYhyXcdgxx6l/3lwYpqmJ9qmhzgWVeATkpVsTua92BsObJjw==" "integrity": "sha512-6+VnnhZpxwWvvKwjkRnuqlTtlBRJuM+3cCSXmZoYhyXcdgxx6l/3lwYpqmJ9qmhzgWVeATkpVsTua92BsObJjw=="
}, },
"node_modules/docker-modem": { "node_modules/docker-modem": {
"version": "5.0.6", "version": "5.0.5",
"resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz", "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.5.tgz",
"integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==", "integrity": "sha512-Cxw8uEcvNTRmsQuGqzzfiCnfGgf96tVJItLh8taOX0miTcIBALKH5TckCSuZbpbjP7uhAl81dOL9sxfa6HgCIg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"debug": "^4.1.1", "debug": "^4.1.1",
@ -9516,23 +9515,34 @@
} }
}, },
"node_modules/dockerode": { "node_modules/dockerode": {
"version": "4.0.5", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.5.tgz", "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.3.tgz",
"integrity": "sha512-ZPmKSr1k1571Mrh7oIBS/j0AqAccoecY2yH420ni5j1KyNMgnoTh4Nu4FWunh0HZIJmRSmSysJjBIpa/zyWUEA==", "integrity": "sha512-QSXJFcBQNaGZO6U3qWW4B7p8yRIJn/dWmvL2AQWfO/bjptBBO6QYdVkYSYFz9qoivP2jsOHZfmXMAfrK0BMKyg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@balena/dockerignore": "^1.0.2", "@balena/dockerignore": "^1.0.2",
"@grpc/grpc-js": "^1.11.1", "@grpc/grpc-js": "^1.11.1",
"@grpc/proto-loader": "^0.7.13", "@grpc/proto-loader": "^0.7.13",
"docker-modem": "^5.0.6", "docker-modem": "^5.0.5",
"protobufjs": "^7.3.2", "protobufjs": "^7.3.2",
"tar-fs": "~2.1.2", "tar-fs": "~2.0.1",
"uuid": "^10.0.0" "uuid": "^10.0.0"
}, },
"engines": { "engines": {
"node": ">= 8.0" "node": ">= 8.0"
} }
}, },
"node_modules/dockerode/node_modules/tar-fs": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz",
"integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==",
"dependencies": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2",
"pump": "^3.0.0",
"tar-stream": "^2.0.0"
}
},
"node_modules/dockerode/node_modules/uuid": { "node_modules/dockerode/node_modules/uuid": {
"version": "10.0.0", "version": "10.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
@ -16328,9 +16338,9 @@
} }
}, },
"node_modules/patch-package/node_modules/yaml": { "node_modules/patch-package/node_modules/yaml": {
"version": "2.7.1", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
"integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
"license": "ISC", "license": "ISC",
"bin": { "bin": {
"yaml": "bin.mjs" "yaml": "bin.mjs"

View File

@ -1,6 +1,6 @@
{ {
"name": "balena-cli", "name": "balena-cli",
"version": "21.1.9", "version": "21.1.1",
"description": "The official balena Command Line Interface", "description": "The official balena Command Line Interface",
"main": "./build/app.js", "main": "./build/app.js",
"homepage": "https://github.com/balena-io/balena-cli", "homepage": "https://github.com/balena-io/balena-cli",
@ -196,10 +196,10 @@
"@balena/es-version": "^1.0.1", "@balena/es-version": "^1.0.1",
"@oclif/core": "^4.1.0", "@oclif/core": "^4.1.0",
"@sentry/node": "^6.16.1", "@sentry/node": "^6.16.1",
"balena-config-json": "^4.2.7", "balena-config-json": "^4.2.2",
"balena-device-init": "^8.1.3", "balena-device-init": "^8.1.3",
"balena-errors": "^4.7.3", "balena-errors": "^4.7.3",
"balena-image-fs": "^7.5.2", "balena-image-fs": "^7.3.0",
"balena-preload": "^18.0.1", "balena-preload": "^18.0.1",
"balena-sdk": "^21.3.0", "balena-sdk": "^21.3.0",
"balena-semver": "^2.3.0", "balena-semver": "^2.3.0",
@ -214,9 +214,9 @@
"common-tags": "^1.7.2", "common-tags": "^1.7.2",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"denymount": "^2.3.0", "denymount": "^2.3.0",
"docker-modem": "^5.0.6", "docker-modem": "5.0.5",
"docker-progress": "^5.1.3", "docker-progress": "^5.1.3",
"dockerode": "^4.0.5", "dockerode": "4.0.3",
"ejs": "^3.1.6", "ejs": "^3.1.6",
"etcher-sdk": "9.1.0", "etcher-sdk": "9.1.0",
"express": "^4.17.2", "express": "^4.17.2",
@ -276,6 +276,6 @@
} }
}, },
"versionist": { "versionist": {
"publishedAt": "2025-04-07T12:53:18.732Z" "publishedAt": "2025-03-26T20:34:46.169Z"
} }
} }

View File

@ -64,12 +64,7 @@ export default class ConfigInjectCmd extends Command {
); );
const config = await import('balena-config-json'); const config = await import('balena-config-json');
await config.write( await config.write(drive, '', configJSON);
drive,
// Will be removed in the next major of balena-config-json
undefined,
configJSON,
);
console.info('Done'); console.info('Done');
} }

View File

@ -54,7 +54,7 @@ export default class ConfigReadCmd extends Command {
await safeUmount(drive); await safeUmount(drive);
const config = await import('balena-config-json'); const config = await import('balena-config-json');
const configJSON = await config.read(drive); const configJSON = await config.read(drive, '');
if (options.json) { if (options.json) {
console.log(JSON.stringify(configJSON, null, 4)); console.log(JSON.stringify(configJSON, null, 4));

View File

@ -62,7 +62,7 @@ export default class ConfigReconfigureCmd extends Command {
await safeUmount(drive); await safeUmount(drive);
const config = await import('balena-config-json'); const config = await import('balena-config-json');
const { uuid } = await config.read(drive); const { uuid } = await config.read(drive, '');
await safeUmount(drive); await safeUmount(drive);
if (!uuid) { if (!uuid) {

View File

@ -64,19 +64,14 @@ export default class ConfigWriteCmd extends Command {
await safeUmount(drive); await safeUmount(drive);
const config = await import('balena-config-json'); const config = await import('balena-config-json');
const configJSON = await config.read(drive); const configJSON = await config.read(drive, '');
console.info(`Setting ${params.key} to ${params.value}`); console.info(`Setting ${params.key} to ${params.value}`);
ConfigWriteCmd.updateConfigJson(configJSON, params.key, params.value); ConfigWriteCmd.updateConfigJson(configJSON, params.key, params.value);
await denyMount(drive, async () => { await denyMount(drive, async () => {
await safeUmount(drive); await safeUmount(drive);
await config.write( await config.write(drive, '', configJSON);
drive,
// Will be removed in the next major of balena-config-json
undefined,
configJSON,
);
}); });
console.info('Done'); console.info('Done');

View File

@ -77,59 +77,103 @@ export default class DeviceCmd extends Command {
const balena = getBalenaSdk(); const balena = getBalenaSdk();
let device: ExtendedDevice; const device = (await balena.models.device.get(
if (options.json) { params.uuid,
const [deviceBase, deviceComputed] = await Promise.all([ options.json
balena.models.device.get(params.uuid, { ? {
$expand: { $select: [
device_tag: { 'id',
$select: ['tag_key', 'value'], 'belongs_to__application',
'belongs_to__user',
'actor',
'is_pinned_on__release',
'device_name',
'is_of__device_type',
'uuid',
'is_running__release',
'note',
'local_id',
'status',
'update_status',
'last_update_status_event',
'is_online',
'last_connectivity_event',
'is_connected_to_vpn',
'last_vpn_event',
'ip_address',
'mac_address',
'public_address',
'os_version',
'os_variant',
'supervisor_version',
'should_be_managed_by__release',
'should_be_operated_by__release',
'is_managed_by__service_instance',
'provisioning_progress',
'provisioning_state',
'download_progress',
'is_web_accessible',
'longitude',
'latitude',
'location',
'custom_longitude',
'custom_latitude',
'is_locked_until__date',
'is_accessible_by_support_until__date',
'created_at',
'modified_at',
'is_active',
'api_heartbeat_state',
'changed_api_heartbeat_state_on__date',
'memory_usage',
'memory_total',
'storage_block_device',
'storage_usage',
'storage_total',
'cpu_temp',
'cpu_usage',
'cpu_id',
'is_undervolted',
// explicit read
'overall_status',
'overall_progress',
'should_be_running__release',
],
$expand: {
device_tag: {
$select: ['tag_key', 'value'],
},
...expandForAppName.$expand,
}, },
...expandForAppName.$expand, }
: {
$select: [
'device_name',
'id',
'overall_status',
'is_online',
'ip_address',
'mac_address',
'last_connectivity_event',
'uuid',
'supervisor_version',
'is_web_accessible',
'note',
'os_version',
'memory_usage',
'memory_total',
'public_address',
'storage_block_device',
'storage_usage',
'storage_total',
'cpu_usage',
'cpu_temp',
'cpu_id',
'is_undervolted',
],
...expandForAppName,
}, },
}), )) as ExtendedDevice;
balena.models.device.get(params.uuid, {
$select: [
'overall_status',
'overall_progress',
'should_be_running__release',
],
}),
]);
device = {
...deviceBase,
...deviceComputed,
} as ExtendedDevice;
} else {
device = (await balena.models.device.get(params.uuid, {
$select: [
'device_name',
'id',
'overall_status',
'is_online',
'ip_address',
'mac_address',
'last_connectivity_event',
'uuid',
'supervisor_version',
'is_web_accessible',
'note',
'os_version',
'memory_usage',
'memory_total',
'public_address',
'storage_block_device',
'storage_usage',
'storage_total',
'cpu_usage',
'cpu_temp',
'cpu_id',
'is_undervolted',
],
...expandForAppName,
})) as ExtendedDevice;
}
if (options.view) { if (options.view) {
const open = await import('open'); const open = await import('open');

View File

@ -37,7 +37,6 @@ import type {
Release, Release,
} from 'balena-sdk'; } from 'balena-sdk';
import type { Preloader } from 'balena-preload'; import type { Preloader } from 'balena-preload';
import type * as Fs from 'fs';
export default class PreloadCmd extends Command { export default class PreloadCmd extends Command {
public static description = stripIndent` public static description = stripIndent`
@ -162,42 +161,6 @@ Can be repeated to add multiple certificates.\
); );
} }
// Verify that image is not enabled for secure boot. First, confirm it is
// a secure boot image with a .sig file in the /opt directory of the rootA
// partition. For example, below are contents for generic-amd64 device type:
// $ ls -l opt
// total 864696
// -rw-r--r-- 1 root root 2378170368 Mar 26 09:14 balena-image-generic-amd64.balenaos-img
// -rw-r--r-- 1 root root 512 Mar 9 2018 balena-image-generic-amd64.balenaos-img.sig
const { explorePartition, BalenaPartition } = await import(
'../../utils/image-contents'
);
const isSecureBoot = await explorePartition<boolean>(
params.image,
BalenaPartition.ROOTA,
async (fs: typeof Fs): Promise<boolean> => {
try {
const files = await fs.promises.readdir('/opt');
return files.some((el) => el.endsWith('balenaos-img.sig'));
} catch {
// Typically one of:
// - Error: No such file or directory
// - Error: Unsupported filesystem.
// - ErrnoException: node_ext2fs_open ENOENT (44) args: [5261576,5268064,"r",0]
return false;
}
return false;
},
);
// Next verify that config.json enables secureboot.
if (isSecureBoot) {
const { read } = await import('balena-config-json');
const config = await read(params.image);
if (config.installer?.secureboot === true) {
throw new ExpectedError("Can't preload image with secure boot enabled");
}
}
// balena-preload currently does not work with numerical app IDs // balena-preload currently does not work with numerical app IDs
// Load app here, and use app slug from hereon // Load app here, and use app slug from hereon
const fleetSlug: string | undefined = options.fleet const fleetSlug: string | undefined = options.fleet

View File

@ -1,69 +0,0 @@
/**
* @license
* Copyright 2025 Balena Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Utilities to explore the contents in a balenaOS image.
import * as imagefs from 'balena-image-fs';
import * as filedisk from 'file-disk';
import { getPartitions } from 'partitioninfo';
import type * as Fs from 'fs';
/**
* @summary IDs for the standard balenaOS partitions
* @description Values are the base name for a partition on disk
*/
export enum BalenaPartition {
BOOT = 'boot',
ROOTA = 'rootA',
ROOTB = 'rootB',
STATE = 'state',
DATA = 'data',
}
/**
* @summary Allow a provided function to explore the contents of one of the well-known
* partitions of a balenaOS image
*
* @param {string} imagePath - pathname of image for search
* @param {BalenaPartition} partitionId - partition to find
* @param {(fs) => Promise<T>} - function for exploration
* @returns {T}
*/
export async function explorePartition<T>(
imagePath: string,
partitionId: BalenaPartition,
exploreFn: (fs: typeof Fs) => Promise<T>,
): Promise<T> {
return await filedisk.withOpenFile(imagePath, 'r', async (handle) => {
const disk = new filedisk.FileDisk(handle, true, false, false);
const partitionInfo = await getPartitions(disk, {
includeExtended: false,
getLogical: true,
});
const findResult = await imagefs.findPartition(disk, partitionInfo, [
`resin-${partitionId}`,
`flash-${partitionId}`,
`balena-${partitionId}`,
]);
if (findResult == null) {
throw new Error(`Can't find partition for ${partitionId}`);
}
return await imagefs.interact<T>(disk, findResult.index, exploreFn);
});
}

View File

@ -114,14 +114,6 @@ describe('balena device', function () {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}); });
api.scope
.get(
/^\/v\d+\/device\?.+&\$select=overall_status,overall_progress,should_be_running__release$/,
)
.replyWithFile(200, path.join(apiResponsePath, 'device.json'), {
'Content-Type': 'application/json',
});
const { out, err } = await runCommand('device 27fda508c --json'); const { out, err } = await runCommand('device 27fda508c --json');
expect(err).to.be.empty; expect(err).to.be.empty;
const json = JSON.parse(out.join('')); const json = JSON.parse(out.join(''));