mikro 0.19.0 → 0.20.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.
- package/dist/_exports/index.d.ts +17 -0
- package/dist/_exports/index.d.ts.map +1 -1
- package/dist/_exports/index.js.map +1 -1
- package/dist/_exports/ota.d.ts +1 -1
- package/dist/_exports/ota.d.ts.map +1 -1
- package/dist/_exports/ota.js.map +1 -1
- package/dist/_exports/watchdog.d.ts +2 -0
- package/dist/_exports/watchdog.d.ts.map +1 -0
- package/dist/_exports/watchdog.js +2 -0
- package/dist/_exports/watchdog.js.map +1 -0
- package/dist/cli/commands/profile.d.ts +2 -2
- package/dist/cli/commands/profile.d.ts.map +1 -1
- package/dist/cli/commands/profile.js +16 -59
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/sim/test.d.ts.map +1 -1
- package/dist/cli/commands/sim/test.js +5 -5
- package/dist/cli/commands/sim/test.js.map +1 -1
- package/dist/cli/commands/test.d.ts.map +1 -1
- package/dist/cli/commands/test.js +37 -12
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/lib/build.d.ts.map +1 -1
- package/dist/cli/lib/build.js +14 -4
- package/dist/cli/lib/build.js.map +1 -1
- package/dist/cli/lib/heapSnapshots.d.ts +65 -7
- package/dist/cli/lib/heapSnapshots.d.ts.map +1 -1
- package/dist/cli/lib/heapSnapshots.js +62 -3
- package/dist/cli/lib/heapSnapshots.js.map +1 -1
- package/dist/cli/lib/session.d.ts.map +1 -1
- package/dist/cli/lib/session.js +51 -25
- package/dist/cli/lib/session.js.map +1 -1
- package/dist/cli/lib/testRunner.d.ts +75 -1
- package/dist/cli/lib/testRunner.d.ts.map +1 -1
- package/dist/cli/lib/testRunner.js +196 -13
- package/dist/cli/lib/testRunner.js.map +1 -1
- package/dist/cli/program.d.ts +3 -3
- package/dist/simulator/builtins/ota-client.d.ts.map +1 -1
- package/dist/simulator/builtins/ota-client.js +40 -7
- package/dist/simulator/builtins/ota-client.js.map +1 -1
- package/package.json +8 -7
|
@@ -4,7 +4,7 @@ import * as pathlib from 'node:path';
|
|
|
4
4
|
import { catchError, finalize, firstValueFrom, last, lastValueFrom, merge, of, scan, Subject, takeWhile, tap, } from 'rxjs';
|
|
5
5
|
import { buildTests, entryRootDir } from './build.js';
|
|
6
6
|
import { collectFiles } from './deploy.js';
|
|
7
|
-
import { classifyHeapSnapshot, heapTolerance, readSnapshot, writeSnapshot } from './heapSnapshots.js';
|
|
7
|
+
import { applyBootSnapshot, classifyHeapSnapshot, DEFAULT_MEM_RESERVED, heapTolerance, jsBudget, readSnapshot, sysTolerance, writeSnapshot, } from './heapSnapshots.js';
|
|
8
8
|
import { resolveProjectRoot } from './projectRoot.js';
|
|
9
9
|
/**
|
|
10
10
|
* Resolve the deploy root directory for a test run.
|
|
@@ -111,6 +111,24 @@ export async function runTestManifest(session, testFiles, options, cb = {}) {
|
|
|
111
111
|
const ready = await firstValueFrom(session.ready$);
|
|
112
112
|
const chip = ready.chip ?? 'unknown';
|
|
113
113
|
const snapshotRoot = resolveProjectRoot();
|
|
114
|
+
// The same handshake carries what the device left for an app, captured at
|
|
115
|
+
// boot before the supervisor allocated anything, so it describes the app
|
|
116
|
+
// floor rather than this run. Free to read, so record it here instead of
|
|
117
|
+
// asking for a separate `mikro profile`. Absent on the host sim and on
|
|
118
|
+
// firmware predating the field.
|
|
119
|
+
if (ready.heapFree !== undefined && ready.systemFree !== undefined) {
|
|
120
|
+
const measured = {
|
|
121
|
+
heapFree: ready.heapFree,
|
|
122
|
+
systemFree: ready.systemFree,
|
|
123
|
+
memReserved: ready.memReserved ?? DEFAULT_MEM_RESERVED,
|
|
124
|
+
};
|
|
125
|
+
const outcome = applyBootSnapshot(snapshotRoot, chip, measured, {
|
|
126
|
+
seed: true,
|
|
127
|
+
update: options.updateHeapSnapshots === true,
|
|
128
|
+
tolerance: options.heapTolerance,
|
|
129
|
+
});
|
|
130
|
+
cb.onBoot?.({ chip, measured, ...outcome });
|
|
131
|
+
}
|
|
114
132
|
const wrappedCb = {
|
|
115
133
|
...cb,
|
|
116
134
|
onFileDone: (result, index, total) => {
|
|
@@ -127,7 +145,7 @@ export async function runTestManifest(session, testFiles, options, cb = {}) {
|
|
|
127
145
|
* TestFileResult so messages like "heap snapshot exceeded" can appear alongside
|
|
128
146
|
* the file's pass/fail summary.
|
|
129
147
|
*/
|
|
130
|
-
function applyHeapSnapshot(result, root, chip, options) {
|
|
148
|
+
export function applyHeapSnapshot(result, root, chip, options) {
|
|
131
149
|
result.chip = chip;
|
|
132
150
|
if (typeof result.heapDelta !== 'number')
|
|
133
151
|
return;
|
|
@@ -141,35 +159,73 @@ function applyHeapSnapshot(result, root, chip, options) {
|
|
|
141
159
|
// permanent placeholders, not a sign this environment skipped the file.
|
|
142
160
|
if (result.failed > 0 || (result.passed === 0 && result.skipped > 0)) {
|
|
143
161
|
if (stored !== undefined) {
|
|
144
|
-
result.heapSnapshotStored = stored;
|
|
162
|
+
result.heapSnapshotStored = stored.heapDelta;
|
|
163
|
+
result.sysUsedStored = stored.sysUsed;
|
|
145
164
|
result.heapSnapshotAction = 'skipped';
|
|
146
165
|
}
|
|
147
166
|
return;
|
|
148
167
|
}
|
|
168
|
+
const measured = {
|
|
169
|
+
heapDelta: result.heapDelta,
|
|
170
|
+
...(typeof result.sysUsed === 'number' ? { sysUsed: result.sysUsed } : {}),
|
|
171
|
+
};
|
|
149
172
|
// Seed a missing entry even without the flag, so a new test file or a chip
|
|
150
173
|
// seen for the first time records itself instead of going unmeasured.
|
|
151
174
|
if (stored === undefined) {
|
|
152
|
-
writeSnapshot(root, result.file, chip,
|
|
175
|
+
writeSnapshot(root, result.file, chip, measured);
|
|
153
176
|
result.heapSnapshotAction = 'created';
|
|
154
|
-
result.heapSnapshotStored =
|
|
177
|
+
result.heapSnapshotStored = measured.heapDelta;
|
|
178
|
+
result.sysUsedStored = measured.sysUsed;
|
|
155
179
|
return;
|
|
156
180
|
}
|
|
157
|
-
|
|
158
|
-
result.
|
|
181
|
+
result.heapSnapshotStored = stored.heapDelta;
|
|
182
|
+
result.sysUsedStored = stored.sysUsed;
|
|
183
|
+
// Retention and peak fail differently, so a regression in either counts,
|
|
184
|
+
// the way either boot ceiling does. Each gets the band that suits it.
|
|
185
|
+
const verdicts = [
|
|
186
|
+
{
|
|
187
|
+
figure: 'retained',
|
|
188
|
+
verdict: classifyHeapSnapshot(result.heapDelta, stored.heapDelta, heapTolerance(stored.heapDelta, options.heapTolerance)),
|
|
189
|
+
},
|
|
190
|
+
];
|
|
191
|
+
if (typeof measured.sysUsed === 'number' && typeof stored.sysUsed === 'number') {
|
|
192
|
+
verdicts.push({
|
|
193
|
+
figure: 'peak',
|
|
194
|
+
verdict: classifyHeapSnapshot(measured.sysUsed, stored.sysUsed, sysTolerance(stored.sysUsed, options.heapTolerance)),
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
else if (typeof measured.sysUsed === 'number') {
|
|
198
|
+
// Recorded before peaks were tracked. Nothing to compare against, but the
|
|
199
|
+
// entry is stale in the sense that matters: -u would add a figure.
|
|
200
|
+
verdicts.push({ figure: 'peak', verdict: 'stale' });
|
|
201
|
+
}
|
|
202
|
+
const moved = verdicts.some((v) => v.verdict !== 'ok');
|
|
203
|
+
const exceeded = verdicts.filter((v) => v.verdict === 'exceeded').map((v) => v.figure);
|
|
159
204
|
if (options.updateHeapSnapshots === true) {
|
|
160
205
|
// Leave drift under the tolerance alone: rewriting on a couple of bytes
|
|
161
206
|
// is pure diff noise.
|
|
162
|
-
if (
|
|
207
|
+
if (!moved) {
|
|
163
208
|
result.heapSnapshotAction = 'ok';
|
|
164
209
|
return;
|
|
165
210
|
}
|
|
166
|
-
writeSnapshot(root, result.file, chip,
|
|
211
|
+
writeSnapshot(root, result.file, chip, measured);
|
|
167
212
|
result.heapSnapshotAction = 'updated';
|
|
168
|
-
result.heapSnapshotPrevious = stored;
|
|
169
|
-
result.heapSnapshotStored =
|
|
213
|
+
result.heapSnapshotPrevious = stored.heapDelta;
|
|
214
|
+
result.heapSnapshotStored = measured.heapDelta;
|
|
215
|
+
result.sysUsedStored = measured.sysUsed;
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (exceeded.length > 0) {
|
|
219
|
+
result.heapSnapshotAction = 'exceeded';
|
|
220
|
+
result.heapSnapshotExceeded = exceeded;
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (moved) {
|
|
224
|
+
result.heapSnapshotAction = 'stale';
|
|
225
|
+
result.heapSnapshotStale = verdicts.filter((v) => v.verdict === 'stale').map((v) => v.figure);
|
|
170
226
|
return;
|
|
171
227
|
}
|
|
172
|
-
result.heapSnapshotAction =
|
|
228
|
+
result.heapSnapshotAction = 'ok';
|
|
173
229
|
}
|
|
174
230
|
/** Format a byte count for human-readable test output. */
|
|
175
231
|
export function formatBytes(n) {
|
|
@@ -210,6 +266,117 @@ export function formatMemorySummary(result) {
|
|
|
210
266
|
}
|
|
211
267
|
return parts;
|
|
212
268
|
}
|
|
269
|
+
const green = (t) => `\x1b[32m${t}\x1b[0m`;
|
|
270
|
+
const red = (t) => `\x1b[31m${t}\x1b[0m`;
|
|
271
|
+
const yellow = (t) => `\x1b[33m${t}\x1b[0m`;
|
|
272
|
+
const dim = (t) => `\x1b[2m${t}\x1b[0m`;
|
|
273
|
+
/** One segment per ceiling, e.g. `js 218KB → 221KB (+3KB)`. More free is the
|
|
274
|
+
* win here, so the colours invert relative to the retained-heap diff. */
|
|
275
|
+
function figure(label, now, before) {
|
|
276
|
+
const value = formatBytes(now);
|
|
277
|
+
if (before === undefined || before === now)
|
|
278
|
+
return `${label} ${value}`;
|
|
279
|
+
const change = now - before;
|
|
280
|
+
const delta = change > 0 ? green(`+${formatBytes(change)}`) : red(formatBytes(change));
|
|
281
|
+
return `${label} ${dim(`${formatBytes(before)} → ${value} (`)}${delta}${dim(')')}`;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* The boot reading as one line, shared by `mikro test` and `mikro profile` so
|
|
285
|
+
* the same figure doesn't render two ways:
|
|
286
|
+
*
|
|
287
|
+
* esp32c6 js 218KB → 221KB (+3KB) system 249.1KB → 252.4KB (+3.3KB)
|
|
288
|
+
*
|
|
289
|
+
* `updateFlag` is the option that would record the reading, which differs
|
|
290
|
+
* between the two commands.
|
|
291
|
+
*/
|
|
292
|
+
export function formatBootLine(result, updateFlag) {
|
|
293
|
+
const { measured, stored } = result;
|
|
294
|
+
// The gate compares js with the reserve added back, so show the stored
|
|
295
|
+
// figure at this run's reserve; the raw one would read as a regression
|
|
296
|
+
// whenever the two boots used different memReserved.
|
|
297
|
+
const reserveMoved = stored !== undefined && stored.memReserved !== measured.memReserved;
|
|
298
|
+
const storedJs = stored === undefined ? undefined : jsBudget(stored) - measured.memReserved;
|
|
299
|
+
const body = `${figure('js', measured.heapFree, storedJs)} ${figure('system', measured.systemFree, stored?.systemFree)}${reserveMoved
|
|
300
|
+
? dim(` (stored at memReserved ${formatBytes(stored.memReserved)}, shown at ${formatBytes(measured.memReserved)})`)
|
|
301
|
+
: ''}`;
|
|
302
|
+
const suffix = result.action === 'created'
|
|
303
|
+
? dim(' (wrote boot snapshot)')
|
|
304
|
+
: result.action === 'updated'
|
|
305
|
+
? dim(' (updated boot snapshot)')
|
|
306
|
+
: result.action === 'unrecorded'
|
|
307
|
+
? dim(` (nothing recorded yet; re-run with ${updateFlag} to record it)`)
|
|
308
|
+
: result.action === 'exceeded'
|
|
309
|
+
? yellow(` ⚠ less than the stored figure. Re-run with ${updateFlag} to accept.`)
|
|
310
|
+
: result.action === 'stale'
|
|
311
|
+
? dim(` (re-run with ${updateFlag} to record it)`)
|
|
312
|
+
: '';
|
|
313
|
+
return `${result.chip} ${body}${suffix}`;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* The "heap snapshot exceeded" line, shared by `mikro test` and `mikro sim
|
|
317
|
+
* test`. Names only the figures that cleared their tolerance: retention and
|
|
318
|
+
* peak have separate bands and either can trip the gate on its own, so listing
|
|
319
|
+
* a few bytes of retained drift next to a real peak regression would point
|
|
320
|
+
* the reader at the wrong number.
|
|
321
|
+
*/
|
|
322
|
+
export function formatHeapExceeded(result, chip) {
|
|
323
|
+
const tripped = result.heapSnapshotExceeded ?? [];
|
|
324
|
+
const moved = [];
|
|
325
|
+
if (tripped.includes('retained')) {
|
|
326
|
+
const over = (result.heapDelta ?? 0) - (result.heapSnapshotStored ?? 0);
|
|
327
|
+
moved.push(`retained +${formatBytes(over)} over ${formatBytes(result.heapSnapshotStored ?? 0)}`);
|
|
328
|
+
}
|
|
329
|
+
if (tripped.includes('peak') && result.sysUsed !== undefined) {
|
|
330
|
+
const over = result.sysUsed - (result.sysUsedStored ?? 0);
|
|
331
|
+
moved.push(`peak +${formatBytes(over)} over ${formatBytes(result.sysUsedStored ?? 0)}`);
|
|
332
|
+
}
|
|
333
|
+
const body = moved.length > 0 ? moved.join(', ') : 'moved';
|
|
334
|
+
return yellow(`⚠ heap snapshot exceeded for ${chip}: ${body}. Re-run with -u to accept.`);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* The body of the "heap snapshot stale" line, shared by `mikro test` and
|
|
338
|
+
* `mikro sim test`. Names the figures that went stale: an entry recorded
|
|
339
|
+
* before peaks were tracked has no retained delta to report, and printing one
|
|
340
|
+
* would read as "-0B".
|
|
341
|
+
*/
|
|
342
|
+
export function formatHeapStale(result) {
|
|
343
|
+
const stale = result.heapSnapshotStale ?? [];
|
|
344
|
+
const parts = [];
|
|
345
|
+
if (stale.includes('retained')) {
|
|
346
|
+
const under = (result.heapSnapshotStored ?? 0) - (result.heapDelta ?? 0);
|
|
347
|
+
parts.push(`retained -${formatBytes(under)} under ${formatBytes(result.heapSnapshotStored ?? 0)}`);
|
|
348
|
+
}
|
|
349
|
+
if (stale.includes('peak')) {
|
|
350
|
+
if (result.sysUsedStored === undefined) {
|
|
351
|
+
parts.push('no peak recorded');
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
const under = result.sysUsedStored - (result.sysUsed ?? 0);
|
|
355
|
+
parts.push(`peak -${formatBytes(under)} under ${formatBytes(result.sysUsedStored)}`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return parts.length > 0 ? parts.join(', ') : 'moved';
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* The suites behind a file-level regression, heaviest first. A file figure
|
|
362
|
+
* says a file grew; without this the reader has to bisect by hand to find out
|
|
363
|
+
* which part of it did. Ordered by the figure that tripped: when only the
|
|
364
|
+
* peak regressed, the suite that retained the most is not the one to look at.
|
|
365
|
+
*/
|
|
366
|
+
export function formatSuiteBreakdown(result) {
|
|
367
|
+
const suites = result.suites ?? [];
|
|
368
|
+
if (suites.length < 2)
|
|
369
|
+
return [];
|
|
370
|
+
const tripped = result.heapSnapshotExceeded ?? [];
|
|
371
|
+
const byPeak = tripped.includes('peak') && !tripped.includes('retained');
|
|
372
|
+
return [...suites]
|
|
373
|
+
.sort((a, b) => (byPeak ? (b.sysUsed ?? 0) - (a.sysUsed ?? 0) : b.retained - a.retained))
|
|
374
|
+
.slice(0, 3)
|
|
375
|
+
.map((s) => {
|
|
376
|
+
const peak = s.sysUsed === undefined ? '' : `, peak ${formatBytes(s.sysUsed)}`;
|
|
377
|
+
return dim(` ${s.name}: retained ${formatBytes(s.retained)}${peak}`);
|
|
378
|
+
});
|
|
379
|
+
}
|
|
213
380
|
function emptyResult(file) {
|
|
214
381
|
return {
|
|
215
382
|
file,
|
|
@@ -466,6 +633,16 @@ export async function collectManifestEvents(session, testFiles, timeoutMs, cb) {
|
|
|
466
633
|
result.skipped++;
|
|
467
634
|
else if (e === 9)
|
|
468
635
|
result.todo++;
|
|
636
|
+
else if (e === 5 && typeof d.hr === 'number') {
|
|
637
|
+
result.suites = [
|
|
638
|
+
...(result.suites ?? []),
|
|
639
|
+
{
|
|
640
|
+
name: d.s,
|
|
641
|
+
retained: d.hr,
|
|
642
|
+
...(typeof d.su === 'number' ? { sysUsed: d.su } : {}),
|
|
643
|
+
},
|
|
644
|
+
];
|
|
645
|
+
}
|
|
469
646
|
const emits = [{ kind: 'event', event, file: currentFile }];
|
|
470
647
|
if (e === 6) {
|
|
471
648
|
result.completed = true;
|
|
@@ -474,7 +651,13 @@ export async function collectManifestEvents(session, testFiles, timeoutMs, cb) {
|
|
|
474
651
|
result.skipped = d.k ?? result.skipped;
|
|
475
652
|
result.todo = d.o ?? result.todo;
|
|
476
653
|
result.duration = d.d ?? 0;
|
|
477
|
-
|
|
654
|
+
// `hr` sums each suite's retention against its own baseline. Firmware
|
|
655
|
+
// predating it reports only the endpoints, where a file with more than
|
|
656
|
+
// one beforeAll measures just the last suite.
|
|
657
|
+
if (typeof d.hr === 'number') {
|
|
658
|
+
result.heapDelta = d.hr;
|
|
659
|
+
}
|
|
660
|
+
else if (typeof d.hb === 'number' && typeof d.ha === 'number') {
|
|
478
661
|
result.heapDelta = d.ha - d.hb;
|
|
479
662
|
}
|
|
480
663
|
if (typeof d.su === 'number')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testRunner.js","sourceRoot":"","sources":["../../../src/cli/lib/testRunner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testRunner.js","sourceRoot":"","sources":["../../../src/cli/lib/testRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/program.d.ts
CHANGED
|
@@ -387,7 +387,7 @@ export declare const argsParser: import("@optique/core").Parser<"async", {
|
|
|
387
387
|
readonly command: {
|
|
388
388
|
readonly action: "profile";
|
|
389
389
|
readonly port: string | undefined;
|
|
390
|
-
readonly
|
|
390
|
+
readonly write: true | undefined;
|
|
391
391
|
readonly heapTolerance: string | undefined;
|
|
392
392
|
readonly json: true | undefined;
|
|
393
393
|
readonly agent: true | undefined;
|
|
@@ -742,7 +742,7 @@ export declare const argsParser: import("@optique/core").Parser<"async", {
|
|
|
742
742
|
readonly command: ["matched", string] | ["parsing", {
|
|
743
743
|
readonly action: "profile";
|
|
744
744
|
readonly port: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
|
|
745
|
-
readonly
|
|
745
|
+
readonly write: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
|
|
746
746
|
readonly heapTolerance: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
|
|
747
747
|
readonly json: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
|
|
748
748
|
readonly agent: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
|
|
@@ -1098,7 +1098,7 @@ export declare const prog: import("@optique/core/program").Program<"async", {
|
|
|
1098
1098
|
readonly command: {
|
|
1099
1099
|
readonly action: "profile";
|
|
1100
1100
|
readonly port: string | undefined;
|
|
1101
|
-
readonly
|
|
1101
|
+
readonly write: true | undefined;
|
|
1102
1102
|
readonly heapTolerance: string | undefined;
|
|
1103
1103
|
readonly json: true | undefined;
|
|
1104
1104
|
readonly agent: true | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ota-client.d.ts","sourceRoot":"","sources":["../../../src/simulator/builtins/ota-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAA;AAcjD,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"ota-client.d.ts","sourceRoot":"","sources":["../../../src/simulator/builtins/ota-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAA;AAcjD,eAAO,MAAM,gBAAgB,EAAE,iBA4Y9B,CAAA"}
|
|
@@ -106,7 +106,7 @@ export function registry() {
|
|
|
106
106
|
// and can be adopted here, but never burned down to a rollback: that needs the
|
|
107
107
|
// power cycles only a device has.
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
function parseConfig(raw) {
|
|
110
110
|
if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) return undefined
|
|
111
111
|
const version = raw.version
|
|
112
112
|
// Bounded by the buffers the device stores them in. A truncated rev would
|
|
@@ -126,7 +126,7 @@ export function parseConfig(raw) {
|
|
|
126
126
|
return out
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
function applyConfig(config, options) {
|
|
130
130
|
const parsed = parseConfig(config)
|
|
131
131
|
if (parsed === undefined) return 'invalid'
|
|
132
132
|
const version = manifestVersion()
|
|
@@ -172,7 +172,7 @@ export function applyConfig(config, options) {
|
|
|
172
172
|
return 'applied'
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
function configState() {
|
|
176
176
|
const out = {}
|
|
177
177
|
const report = sysGet('ota.cfgErr')
|
|
178
178
|
const hasError =
|
|
@@ -220,7 +220,7 @@ function install(checksum) {
|
|
|
220
220
|
current = {checksum, version: current.version, trial: true}
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
|
|
223
|
+
function running() {
|
|
224
224
|
// The version falls back to the manifest, the way mik__ota_policy_running
|
|
225
225
|
// falls back to read_app_version: an app needs it to stamp what it delivers.
|
|
226
226
|
const version = current.version === undefined ? manifestVersion() : current.version
|
|
@@ -262,7 +262,7 @@ export function reconcile() {
|
|
|
262
262
|
return out
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
|
|
265
|
+
function parseOffer(raw, opts) {
|
|
266
266
|
if (typeof raw !== 'object' || raw === null) return undefined
|
|
267
267
|
const url = raw.url
|
|
268
268
|
const checksum = raw.checksum
|
|
@@ -275,6 +275,32 @@ export function parseOffer(raw, opts) {
|
|
|
275
275
|
return {url, checksum, size}
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
+
// The own-transport decline record, persisted the way the device stores it in
|
|
279
|
+
// NVS: an own-transport decline lands after that wake's check-in, so it must
|
|
280
|
+
// outlive the run to make the next report(). \`current\` and \`trial-pending\`
|
|
281
|
+
// are never recorded — the policy working as intended is not a decline.
|
|
282
|
+
function noteDecline(checksum, reason, detail) {
|
|
283
|
+
// The registry rejects a whole check-in body over a malformed lastDecline,
|
|
284
|
+
// so a checksum that cannot travel is not recorded.
|
|
285
|
+
if (!/^[0-9a-f]{64}$/.test(checksum)) return
|
|
286
|
+
const record = {checksum, reason}
|
|
287
|
+
if (typeof detail === 'string' && detail !== '') record.detail = detail.slice(0, 256)
|
|
288
|
+
sysSet('ota.decl', record)
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export function decline(checksum, reason, detail) {
|
|
292
|
+
if (typeof checksum !== 'string' || !/^[0-9a-f]{64}$/.test(checksum)) {
|
|
293
|
+
throw new TypeError('decline(): checksum must be 64 lowercase hex characters')
|
|
294
|
+
}
|
|
295
|
+
if (typeof reason !== 'string' || reason === '' || reason.length > 64) {
|
|
296
|
+
throw new TypeError('decline(): reason must be 1 to 64 characters')
|
|
297
|
+
}
|
|
298
|
+
if (detail !== undefined && typeof detail !== 'string') {
|
|
299
|
+
throw new TypeError('decline(): detail must be a string')
|
|
300
|
+
}
|
|
301
|
+
noteDecline(checksum, reason, detail)
|
|
302
|
+
}
|
|
303
|
+
|
|
278
304
|
export function applyOffer(offer, download, options) {
|
|
279
305
|
if (current.checksum === offer.checksum) return Promise.resolve(ok('current'))
|
|
280
306
|
if (current.trial) return Promise.resolve(ok('trial-pending'))
|
|
@@ -293,12 +319,15 @@ export function applyOffer(offer, download, options) {
|
|
|
293
319
|
|
|
294
320
|
return download(update).then((result) => {
|
|
295
321
|
if (!result.ok) {
|
|
322
|
+
noteDecline(offer.checksum, 'download-failed', result.error.message)
|
|
296
323
|
return err({name: 'DownloadFailed', message: result.error.message})
|
|
297
324
|
}
|
|
298
325
|
if (written !== offer.size) {
|
|
326
|
+
const message = 'size mismatch: ' + written + ' != ' + offer.size
|
|
327
|
+
noteDecline(offer.checksum, 'install-failed', message)
|
|
299
328
|
return err({
|
|
300
329
|
name: 'InstallFailed',
|
|
301
|
-
message
|
|
330
|
+
message,
|
|
302
331
|
kind: 'corrupt',
|
|
303
332
|
})
|
|
304
333
|
}
|
|
@@ -333,6 +362,8 @@ export function report() {
|
|
|
333
362
|
const state = configState()
|
|
334
363
|
if (state.rev !== undefined) out.configRev = state.rev
|
|
335
364
|
if (state.error !== undefined) out.configError = state.error
|
|
365
|
+
const declined = sysGet('ota.decl')
|
|
366
|
+
if (typeof declined === 'object' && declined !== null) out.lastDecline = declined
|
|
336
367
|
return out
|
|
337
368
|
}
|
|
338
369
|
|
|
@@ -350,6 +381,8 @@ export function settle(raw, options) {
|
|
|
350
381
|
// confirm comes first so it settles the document held before this delivery,
|
|
351
382
|
// never the one about to be armed.
|
|
352
383
|
confirm()
|
|
384
|
+
// The round completed, so the stored decline record was delivered.
|
|
385
|
+
sysRemove('ota.decl')
|
|
353
386
|
if (!usable) return out
|
|
354
387
|
|
|
355
388
|
// The name pair: [rev] or [rev, name]. No key means "no change" and never
|
|
@@ -367,7 +400,7 @@ export function settle(raw, options) {
|
|
|
367
400
|
}
|
|
368
401
|
|
|
369
402
|
// The offer fields are top-level in the response, so the whole body goes to
|
|
370
|
-
// the parser
|
|
403
|
+
// the offer parser.
|
|
371
404
|
const offer = parseOffer(raw, options)
|
|
372
405
|
if (offer !== undefined) out.offer = offer
|
|
373
406
|
return out
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ota-client.js","sourceRoot":"","sources":["../../../src/simulator/builtins/ota-client.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,6DAA6D;AAC7D,4EAA4E;AAC5E,gFAAgF;AAChF,yDAAyD;AACzD,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,iDAAiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"ota-client.js","sourceRoot":"","sources":["../../../src/simulator/builtins/ota-client.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,6DAA6D;AAC7D,4EAA4E;AAC5E,gFAAgF;AAChF,yDAAyD;AACzD,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,iDAAiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0YT;CACA,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mikro",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Mikro.js: TypeScript for microcontrollers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"embedded",
|
|
@@ -74,6 +74,7 @@
|
|
|
74
74
|
"./tsconfig": "./tsconfig.base.json",
|
|
75
75
|
"./uart": "./dist/_exports/uart.js",
|
|
76
76
|
"./udp": "./dist/_exports/udp.js",
|
|
77
|
+
"./watchdog": "./dist/_exports/watchdog.js",
|
|
77
78
|
"./runtime": "./runtime.d.ts",
|
|
78
79
|
"./package.json": "./package.json"
|
|
79
80
|
},
|
|
@@ -97,12 +98,12 @@
|
|
|
97
98
|
"tar": "^7.5.13",
|
|
98
99
|
"uint8array-extras": "^1.5.0",
|
|
99
100
|
"update-notifier": "^7.3.1",
|
|
100
|
-
"@mikrojs/
|
|
101
|
-
"@mikrojs/
|
|
102
|
-
"@mikrojs/
|
|
103
|
-
"@mikrojs/
|
|
104
|
-
"@mikrojs/
|
|
105
|
-
"@mikrojs/esptool": "0.
|
|
101
|
+
"@mikrojs/analyze-imports": "0.20.0",
|
|
102
|
+
"@mikrojs/native": "0.20.0",
|
|
103
|
+
"@mikrojs/firmware": "0.20.0",
|
|
104
|
+
"@mikrojs/schema": "0.20.0",
|
|
105
|
+
"@mikrojs/quickjs": "0.20.0",
|
|
106
|
+
"@mikrojs/esptool": "0.20.0"
|
|
106
107
|
},
|
|
107
108
|
"devDependencies": {
|
|
108
109
|
"@swc/core": "^1.15.30",
|