@balena/open-balena-api 43.0.16 → 43.1.0-build-should-be-operated-by--release-hook-ef0587b1d9684869dcce587072b4132cf6e0c991-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.
| 
         @@ -47,8 +47,15 @@ hooks.addPureHook('PATCH', 'resin', 'device', { 
     | 
|
| 
       47 
47 
     | 
    
         
             
                async PRERUN(args) {
         
     | 
| 
       48 
48 
     | 
    
         
             
                    if (args.request.values.os_version != null &&
         
     | 
| 
       49 
49 
     | 
    
         
             
                        args.request.values.os_variant != null) {
         
     | 
| 
      
 50 
     | 
    
         
            +
                        const parsedOsVersion = semver.parse(args.request.values.os_version);
         
     | 
| 
      
 51 
     | 
    
         
            +
                        // balena-semver is able to parse all OS versions that we support,
         
     | 
| 
      
 52 
     | 
    
         
            +
                        // so if it can't parse the given version string, then we can be sure
         
     | 
| 
      
 53 
     | 
    
         
            +
                        // that there can't be a hostApp release matching it.
         
     | 
| 
      
 54 
     | 
    
         
            +
                        if (parsedOsVersion == null) {
         
     | 
| 
      
 55 
     | 
    
         
            +
                            return;
         
     | 
| 
      
 56 
     | 
    
         
            +
                        }
         
     | 
| 
       50 
57 
     | 
    
         
             
                        const ids = await sbvrUtils.getAffectedIds(args);
         
     | 
| 
       51 
     | 
    
         
            -
                        await setOSReleaseResource(args.api, ids,  
     | 
| 
      
 58 
     | 
    
         
            +
                        await setOSReleaseResource(args.api, ids, parsedOsVersion, args.request.values.os_variant);
         
     | 
| 
       52 
59 
     | 
    
         
             
                    }
         
     | 
| 
       53 
60 
     | 
    
         
             
                },
         
     | 
| 
       54 
61 
     | 
    
         
             
            });
         
     | 
| 
         @@ -57,7 +64,14 @@ hooks.addPureHook('POST', 'resin', 'device', { 
     | 
|
| 
       57 
64 
     | 
    
         
             
                    if (request.values.os_version != null &&
         
     | 
| 
       58 
65 
     | 
    
         
             
                        request.values.os_variant != null &&
         
     | 
| 
       59 
66 
     | 
    
         
             
                        request.values.is_of__device_type != null) {
         
     | 
| 
       60 
     | 
    
         
            -
                        const  
     | 
| 
      
 67 
     | 
    
         
            +
                        const parsedOsVersion = semver.parse(request.values.os_version);
         
     | 
| 
      
 68 
     | 
    
         
            +
                        // balena-semver is able to parse all OS versions that we support,
         
     | 
| 
      
 69 
     | 
    
         
            +
                        // so if it can't parse the given version string, then we can be sure
         
     | 
| 
      
 70 
     | 
    
         
            +
                        // that there can't be a hostApp release matching it.
         
     | 
| 
      
 71 
     | 
    
         
            +
                        if (parsedOsVersion == null) {
         
     | 
| 
      
 72 
     | 
    
         
            +
                            return;
         
     | 
| 
      
 73 
     | 
    
         
            +
                        }
         
     | 
| 
      
 74 
     | 
    
         
            +
                        const hostappRelease = await getOSReleaseResource(api, parsedOsVersion, request.values.os_variant, request.values.is_of__device_type);
         
     | 
| 
       61 
75 
     | 
    
         
             
                        // since this is a POST, we _know_ the device is being created and has no current/target state, so we can
         
     | 
| 
       62 
76 
     | 
    
         
             
                        // just append the target after determining which it is (like a preloaded app)
         
     | 
| 
       63 
77 
     | 
    
         
             
                        if (hostappRelease != null) {
         
     | 
| 
         @@ -66,25 +80,43 @@ hooks.addPureHook('POST', 'resin', 'device', { 
     | 
|
| 
       66 
80 
     | 
    
         
             
                    }
         
     | 
| 
       67 
81 
     | 
    
         
             
                },
         
     | 
| 
       68 
82 
     | 
    
         
             
            });
         
     | 
| 
       69 
     | 
    
         
            -
            async function setOSReleaseResource(api, deviceIds,  
     | 
| 
      
 83 
     | 
    
         
            +
            async function setOSReleaseResource(api, deviceIds, parsedOsVersion, osVariant) {
         
     | 
| 
       70 
84 
     | 
    
         
             
                if (deviceIds.length === 0) {
         
     | 
| 
       71 
85 
     | 
    
         
             
                    return;
         
     | 
| 
       72 
86 
     | 
    
         
             
                }
         
     | 
| 
       73 
87 
     | 
    
         
             
                const devices = await api.get({
         
     | 
| 
       74 
88 
     | 
    
         
             
                    resource: 'device',
         
     | 
| 
       75 
89 
     | 
    
         
             
                    options: {
         
     | 
| 
       76 
     | 
    
         
            -
                         
     | 
| 
      
 90 
     | 
    
         
            +
                        $select: ['id', 'is_of__device_type'],
         
     | 
| 
      
 91 
     | 
    
         
            +
                        $expand: {
         
     | 
| 
      
 92 
     | 
    
         
            +
                            should_be_operated_by__release: {
         
     | 
| 
      
 93 
     | 
    
         
            +
                                $select: ['id', 'semver', 'variant'],
         
     | 
| 
      
 94 
     | 
    
         
            +
                                $expand: {
         
     | 
| 
      
 95 
     | 
    
         
            +
                                    release_tag: {
         
     | 
| 
      
 96 
     | 
    
         
            +
                                        $select: 'value',
         
     | 
| 
      
 97 
     | 
    
         
            +
                                        $filter: { tag_key: 'version' },
         
     | 
| 
      
 98 
     | 
    
         
            +
                                    },
         
     | 
| 
      
 99 
     | 
    
         
            +
                                },
         
     | 
| 
      
 100 
     | 
    
         
            +
                            },
         
     | 
| 
      
 101 
     | 
    
         
            +
                        },
         
     | 
| 
       77 
102 
     | 
    
         
             
                        $filter: {
         
     | 
| 
       78 
103 
     | 
    
         
             
                            id: { $in: deviceIds },
         
     | 
| 
       79 
     | 
    
         
            -
                            os_version: null,
         
     | 
| 
       80 
104 
     | 
    
         
             
                        },
         
     | 
| 
       81 
     | 
    
         
            -
                        $select: ['id', 'is_of__device_type'],
         
     | 
| 
       82 
105 
     | 
    
         
             
                    },
         
     | 
| 
       83 
106 
     | 
    
         
             
                });
         
     | 
| 
       84 
     | 
    
         
            -
                 
     | 
| 
      
 107 
     | 
    
         
            +
                const devicesToUpdate = devices.filter((device) => {
         
     | 
| 
      
 108 
     | 
    
         
            +
                    const currentTargetOsRelease = device.should_be_operated_by__release[1];
         
     | 
| 
      
 109 
     | 
    
         
            +
                    if (currentTargetOsRelease == null) {
         
     | 
| 
      
 110 
     | 
    
         
            +
                        return true;
         
     | 
| 
      
 111 
     | 
    
         
            +
                    }
         
     | 
| 
      
 112 
     | 
    
         
            +
                    const currentTargetOsVersion = getBaseVersionFromReleaseSemverOrTag(currentTargetOsRelease);
         
     | 
| 
      
 113 
     | 
    
         
            +
                    return (currentTargetOsVersion == null ||
         
     | 
| 
      
 114 
     | 
    
         
            +
                        semver.gt(parsedOsVersion.raw, currentTargetOsVersion));
         
     | 
| 
      
 115 
     | 
    
         
            +
                });
         
     | 
| 
      
 116 
     | 
    
         
            +
                if (devicesToUpdate.length === 0) {
         
     | 
| 
       85 
117 
     | 
    
         
             
                    return;
         
     | 
| 
       86 
118 
     | 
    
         
             
                }
         
     | 
| 
       87 
     | 
    
         
            -
                const devicesByDeviceTypeId = groupByMap( 
     | 
| 
      
 119 
     | 
    
         
            +
                const devicesByDeviceTypeId = groupByMap(devicesToUpdate, (d) => d.is_of__device_type.__id);
         
     | 
| 
       88 
120 
     | 
    
         
             
                if (devicesByDeviceTypeId.size === 0) {
         
     | 
| 
       89 
121 
     | 
    
         
             
                    return;
         
     | 
| 
       90 
122 
     | 
    
         
             
                }
         
     | 
| 
         @@ -96,7 +128,7 @@ async function setOSReleaseResource(api, deviceIds, osVersion, osVariant) { 
     | 
|
| 
       96 
128 
     | 
    
         
             
                });
         
     | 
| 
       97 
129 
     | 
    
         
             
                return Promise.all(Array.from(devicesByDeviceTypeId.entries()).map(async ([deviceTypeId, affectedDevices]) => {
         
     | 
| 
       98 
130 
     | 
    
         
             
                    const affectedDeviceIds = affectedDevices.map((d) => d.id);
         
     | 
| 
       99 
     | 
    
         
            -
                    const osRelease = await getOSReleaseResource(api,  
     | 
| 
      
 131 
     | 
    
         
            +
                    const osRelease = await getOSReleaseResource(api, parsedOsVersion, osVariant, deviceTypeId);
         
     | 
| 
       100 
132 
     | 
    
         
             
                    if (osRelease == null) {
         
     | 
| 
       101 
133 
     | 
    
         
             
                        return;
         
     | 
| 
       102 
134 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -113,14 +145,7 @@ async function setOSReleaseResource(api, deviceIds, osVersion, osVariant) { 
     | 
|
| 
       113 
145 
     | 
    
         
             
                    });
         
     | 
| 
       114 
146 
     | 
    
         
             
                }));
         
     | 
| 
       115 
147 
     | 
    
         
             
            }
         
     | 
| 
       116 
     | 
    
         
            -
            async function getOSReleaseResource(api,  
     | 
| 
       117 
     | 
    
         
            -
                const parsedOsVersion = semver.parse(osVersion);
         
     | 
| 
       118 
     | 
    
         
            -
                // balena-semver is able to parse all OS versions that we support,
         
     | 
| 
       119 
     | 
    
         
            -
                // so if it can't parse the given version string, then we can be sure
         
     | 
| 
       120 
     | 
    
         
            -
                // that there can't be a hostApp release matching it.
         
     | 
| 
       121 
     | 
    
         
            -
                if (parsedOsVersion == null) {
         
     | 
| 
       122 
     | 
    
         
            -
                    return;
         
     | 
| 
       123 
     | 
    
         
            -
                }
         
     | 
| 
      
 148 
     | 
    
         
            +
            async function getOSReleaseResource(api, parsedOsVersion, osVariant, deviceTypeId) {
         
     | 
| 
       124 
149 
     | 
    
         
             
                const releases = await api.get({
         
     | 
| 
       125 
150 
     | 
    
         
             
                    resource: 'release',
         
     | 
| 
       126 
151 
     | 
    
         
             
                    options: {
         
     | 
| 
         @@ -173,7 +198,7 @@ async function getOSReleaseResource(api, osVersion, osVariant, deviceTypeId) { 
     | 
|
| 
       173 
198 
     | 
    
         
             
                                                            // b/c balena-semver normalizes invalid semvers like
         
     | 
| 
       174 
199 
     | 
    
         
             
                                                            // 2022.01.0 to 2022.1.0 and that would no longer
         
     | 
| 
       175 
200 
     | 
    
         
             
                                                            // match the tag value.
         
     | 
| 
       176 
     | 
    
         
            -
                                                            value: normalizeOsVersion( 
     | 
| 
      
 201 
     | 
    
         
            +
                                                            value: normalizeOsVersion(parsedOsVersion.raw),
         
     | 
| 
       177 
202 
     | 
    
         
             
                                                            tag_key: 'version',
         
     | 
| 
       178 
203 
     | 
    
         
             
                                                        },
         
     | 
| 
       179 
204 
     | 
    
         
             
                                                    },
         
     | 
| 
         @@ -237,7 +262,7 @@ async function getOSReleaseResource(api, osVersion, osVariant, deviceTypeId) { 
     | 
|
| 
       237 
262 
     | 
    
         
             
                });
         
     | 
| 
       238 
263 
     | 
    
         
             
                const [release] = releases;
         
     | 
| 
       239 
264 
     | 
    
         
             
                if (releases.filter((r) => r.is_final).length > 1) {
         
     | 
| 
       240 
     | 
    
         
            -
                    ThisShouldNeverHappenError(`Found more than one finalized hostApp release matching version ${ 
     | 
| 
      
 265 
     | 
    
         
            +
                    ThisShouldNeverHappenError(`Found more than one finalized hostApp release matching version ${parsedOsVersion.raw} ${osVariant} for device type ${deviceTypeId} and returned ${release.id}.`);
         
     | 
| 
       241 
266 
     | 
    
         
             
                }
         
     | 
| 
       242 
267 
     | 
    
         
             
                return release;
         
     | 
| 
       243 
268 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"target-hostapp.js","sourceRoot":"","sources":["../../../../src/features/hostapp/hooks/target-hostapp.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,KAAK,EACL,WAAW,EACX,MAAM,IAAI,YAAY,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,MAAM,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC;AAEzC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC7C;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,8BAA8B,IAAI,IAAI,EAAE,CAAC;YAChE,kDAAkD;YAClD,iBAAiB;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,CAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,8BAA8B,EAClD,EAAE,CACF,CAAC;YACF,0CAA0C;YAC1C,0BAA0B;YAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC;YACrE,CAAC;YAED,kDAAkD;YAClD,4BAA4B;YAC5B,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,2BAA2B,CAChC,IAAI,CAAC,GAAG,EACR,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAClC,CAAC;QACH,CAAC;IACF,CAAC;CACD,CAAC,CAAC;AAEH,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC7C;;;;;;OAMG;IAEH,SAAS,CAAC,EAAE,OAAO,EAAE;QACpB,IACC,OAAO,CAAC,MAAM,CAAC,kBAAkB,IAAI,IAAI;YACzC,OAAO,CAAC,MAAM,CAAC,8BAA8B,KAAK,SAAS,EAC1D,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACtD,CAAC;IACF,CAAC;CACD,CAAC,CAAC;AAEH;;;GAGG;AACH,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC7C,KAAK,CAAC,MAAM,CAAC,IAAI;QAChB,IACC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI;YACtC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,EACrC,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,oBAAoB,CACzB,IAAI,CAAC,GAAG,EACR,GAAG,EACH, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"target-hostapp.js","sourceRoot":"","sources":["../../../../src/features/hostapp/hooks/target-hostapp.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": "43.0 
     | 
| 
      
 4 
     | 
    
         
            +
              "version": "43.1.0-build-should-be-operated-by--release-hook-ef0587b1d9684869dcce587072b4132cf6e0c991-1",
         
     | 
| 
       5 
5 
     | 
    
         
             
              "license": "AGPL-3.0",
         
     | 
| 
       6 
6 
     | 
    
         
             
              "repository": {
         
     | 
| 
       7 
7 
     | 
    
         
             
                "type": "git",
         
     | 
| 
         @@ -175,6 +175,6 @@ 
     | 
|
| 
       175 
175 
     | 
    
         
             
                "import": "@swc-node/register/esm-register"
         
     | 
| 
       176 
176 
     | 
    
         
             
              },
         
     | 
| 
       177 
177 
     | 
    
         
             
              "versionist": {
         
     | 
| 
       178 
     | 
    
         
            -
                "publishedAt": "2025-10- 
     | 
| 
      
 178 
     | 
    
         
            +
                "publishedAt": "2025-10-02T16:56:43.694Z"
         
     | 
| 
       179 
179 
     | 
    
         
             
              }
         
     | 
| 
       180 
180 
     | 
    
         
             
            }
         
     |