mikro 0.18.0 → 0.18.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.
Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/dist/_exports/index.d.ts +9 -0
  3. package/dist/_exports/index.d.ts.map +1 -1
  4. package/dist/_exports/index.js.map +1 -1
  5. package/dist/_exports/ota/client.d.ts +2 -2
  6. package/dist/_exports/ota/client.d.ts.map +1 -1
  7. package/dist/_exports/schema.d.ts +5 -1
  8. package/dist/_exports/schema.d.ts.map +1 -1
  9. package/dist/_exports/schema.js +13 -1
  10. package/dist/_exports/schema.js.map +1 -1
  11. package/dist/cli/commands/deploy.d.ts.map +1 -1
  12. package/dist/cli/commands/deploy.js +7 -0
  13. package/dist/cli/commands/deploy.js.map +1 -1
  14. package/dist/cli/commands/ota/pack.d.ts.map +1 -1
  15. package/dist/cli/commands/ota/pack.js +11 -1
  16. package/dist/cli/commands/ota/pack.js.map +1 -1
  17. package/dist/cli/commands/ota/push.d.ts.map +1 -1
  18. package/dist/cli/commands/ota/push.js +4 -1
  19. package/dist/cli/commands/ota/push.js.map +1 -1
  20. package/dist/cli/commands/ota/release.d.ts.map +1 -1
  21. package/dist/cli/commands/ota/release.js +11 -2
  22. package/dist/cli/commands/ota/release.js.map +1 -1
  23. package/dist/cli/commands/sim/deploy.d.ts.map +1 -1
  24. package/dist/cli/commands/sim/deploy.js +4 -0
  25. package/dist/cli/commands/sim/deploy.js.map +1 -1
  26. package/dist/cli/lib/build.d.ts.map +1 -1
  27. package/dist/cli/lib/build.js +3 -2
  28. package/dist/cli/lib/build.js.map +1 -1
  29. package/dist/cli/lib/configSchema.d.ts +41 -0
  30. package/dist/cli/lib/configSchema.d.ts.map +1 -0
  31. package/dist/cli/lib/configSchema.js +127 -0
  32. package/dist/cli/lib/configSchema.js.map +1 -0
  33. package/dist/cli/lib/loadMikroConfig.d.ts +15 -0
  34. package/dist/cli/lib/loadMikroConfig.d.ts.map +1 -1
  35. package/dist/cli/lib/loadMikroConfig.js +70 -12
  36. package/dist/cli/lib/loadMikroConfig.js.map +1 -1
  37. package/dist/cli/lib/ota.d.ts +12 -0
  38. package/dist/cli/lib/ota.d.ts.map +1 -1
  39. package/dist/cli/lib/ota.js +20 -2
  40. package/dist/cli/lib/ota.js.map +1 -1
  41. package/dist/cli/lib/otaPublish.d.ts +6 -1
  42. package/dist/cli/lib/otaPublish.d.ts.map +1 -1
  43. package/dist/cli/lib/otaPublish.js +33 -5
  44. package/dist/cli/lib/otaPublish.js.map +1 -1
  45. package/dist/cli/lib/protocol.d.ts +6 -0
  46. package/dist/cli/lib/protocol.d.ts.map +1 -1
  47. package/dist/cli/lib/protocol.js +6 -0
  48. package/dist/cli/lib/protocol.js.map +1 -1
  49. package/dist/cli/lib/serial/devSession.d.ts.map +1 -1
  50. package/dist/cli/lib/serial/devSession.js +3 -0
  51. package/dist/cli/lib/serial/devSession.js.map +1 -1
  52. package/dist/simulator/builtins/index.js +3 -3
  53. package/dist/simulator/builtins/index.js.map +1 -1
  54. package/dist/simulator/builtins/ota-client.d.ts +3 -0
  55. package/dist/simulator/builtins/ota-client.d.ts.map +1 -0
  56. package/dist/simulator/builtins/ota-client.js +174 -0
  57. package/dist/simulator/builtins/ota-client.js.map +1 -0
  58. package/dist/simulator/builtins/types.d.ts +1 -1
  59. package/dist/simulator/builtins/types.d.ts.map +1 -1
  60. package/dist/simulator/simProcess.js +12 -1
  61. package/dist/simulator/simProcess.js.map +1 -1
  62. package/package.json +6 -6
  63. package/dist/simulator/builtins/ota.d.ts +0 -3
  64. package/dist/simulator/builtins/ota.d.ts.map +0 -1
  65. package/dist/simulator/builtins/ota.js +0 -86
  66. package/dist/simulator/builtins/ota.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ import type { MikroJSConfig } from '../../_exports/index.js';
2
+ /**
3
+ * Serialize and vet the config schema declared in `mikro.config.ts`, or
4
+ * undefined when the app declares none. Rejection here, not at the registry:
5
+ * the build is where the author can still rename a field or add a default.
6
+ */
7
+ export declare function serializeConfigSchema(config: MikroJSConfig | null): unknown;
8
+ /** Config-pairing state a cable deploy resets: a staged or rollback document
9
+ * belongs to an OTA install cycle the cable deploy just replaced, and a
10
+ * trial or rollback report describes a document the deploy just replaced.
11
+ * (The delivered document itself, `ota.cfg`, is never touched by a deploy.)
12
+ */
13
+ export declare const CONFIG_STALE_KVS: readonly ["ota.cfgNext", "ota.cfgPrev", "ota.cfgTrial", "ota.cfgErr"];
14
+ /**
15
+ * Build the `configDefaults` a manifest carries, or undefined when the app
16
+ * declares no schema. The single place both `mikro ota pack` and the dev
17
+ * manifest go through, so a device reads the same defaults either way. The
18
+ * result is partial: it holds every field a default covers and omits the rest
19
+ * (defaultless leaves, units without a whole-value default).
20
+ */
21
+ export declare function buildConfigDefaults(schema: unknown): Record<string, unknown> | undefined;
22
+ /**
23
+ * The dev-session half of config: the incremental file sync does not go
24
+ * through `pack`, so the manifest `ota.config()` reads its defaults from has
25
+ * to be written into the build tree here (development-resolved config,
26
+ * matching the build). A no-op when the app declares no schema.
27
+ */
28
+ export declare function writeDevManifest(options: {
29
+ projectRoot: string;
30
+ buildDir: string;
31
+ }): Promise<void>;
32
+ interface KvWriter {
33
+ delete(key: string, namespace: 'sys'): Promise<void>;
34
+ }
35
+ /** Drop the config-pairing state a cable deploy obsoletes (see
36
+ * `CONFIG_STALE_KVS`). The delivered document itself is left alone: its
37
+ * version stamp makes it inert under a version-bumped deploy, and a registry
38
+ * that manages this device re-serves it either way. */
39
+ export declare function clearStaleConfigState(kv: KvWriter): Promise<void>;
40
+ export {};
41
+ //# sourceMappingURL=configSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/configSchema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAA;AAa1D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAmC3E;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,uEAKnB,CAAA;AAEV;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAOxF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhB;AAeD,UAAU,QAAQ;IAChB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrD;AAED;;;wDAGwD;AACxD,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE"}
@@ -0,0 +1,127 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { mkdir, writeFile } from 'node:fs/promises';
3
+ import * as pathlib from 'node:path';
4
+ import { materializeDefaults, parseConfigSchema } from '@mikrojs/native/runtime/schema/shared';
5
+ import { loadMikroConfig } from './loadMikroConfig.js';
6
+ /** Config schemas over this size are a mistake; matches the registry spec's
7
+ * publish cap. */
8
+ const CONFIG_SCHEMA_MAX_BYTES = 16 * 1024;
9
+ /** The registry spec's cap on a served config document (the device parses it
10
+ * out of a fixed check-in response buffer and stores it in NVS). Enforced at
11
+ * every authoring point so dev and fleet behavior stay in parity: a document
12
+ * that deploys over the cable must also be servable by a registry. */
13
+ const CONFIG_DOC_MAX_BYTES = 4 * 1024;
14
+ /**
15
+ * Serialize and vet the config schema declared in `mikro.config.ts`, or
16
+ * undefined when the app declares none. Rejection here, not at the registry:
17
+ * the build is where the author can still rename a field or add a default.
18
+ */
19
+ export function serializeConfigSchema(config) {
20
+ if (config?.otaConfigSchema === undefined)
21
+ return undefined;
22
+ let serialized;
23
+ try {
24
+ serialized = JSON.parse(JSON.stringify(config.otaConfigSchema));
25
+ }
26
+ catch (cause) {
27
+ // A circular structure throws from stringify; keep the file named so the
28
+ // author knows where to look.
29
+ throw new Error(`mikro.config.ts: otaConfigSchema does not serialize to JSON`, { cause });
30
+ }
31
+ const checked = parseConfigSchema(serialized);
32
+ if (!checked.ok) {
33
+ const where = checked.error.path === '' ? '' : ` at ${checked.error.path}`;
34
+ throw new Error(`mikro.config.ts: otaConfigSchema is not a valid config schema${where}: ${checked.error.message}`);
35
+ }
36
+ const bytes = Buffer.byteLength(JSON.stringify(serialized));
37
+ if (bytes > CONFIG_SCHEMA_MAX_BYTES) {
38
+ throw new Error(`mikro.config.ts: otaConfigSchema serializes to ${bytes} bytes, over the ${CONFIG_SCHEMA_MAX_BYTES}-byte cap`);
39
+ }
40
+ // Defaults alone over the document cap means no document for this schema
41
+ // could ever be served: every authored config would be rejected and rule 5
42
+ // would pause every rollout. Catch it at build time, where the schema
43
+ // author can trim.
44
+ const docBytes = Buffer.byteLength(JSON.stringify(materializeDefaults(checked.value)));
45
+ if (docBytes > CONFIG_DOC_MAX_BYTES) {
46
+ throw new Error(`mikro.config.ts: otaConfigSchema's defaults alone encode to ${docBytes} bytes, ` +
47
+ `over the ${CONFIG_DOC_MAX_BYTES}-byte config document cap`);
48
+ }
49
+ return serialized;
50
+ }
51
+ /** Config-pairing state a cable deploy resets: a staged or rollback document
52
+ * belongs to an OTA install cycle the cable deploy just replaced, and a
53
+ * trial or rollback report describes a document the deploy just replaced.
54
+ * (The delivered document itself, `ota.cfg`, is never touched by a deploy.)
55
+ */
56
+ export const CONFIG_STALE_KVS = [
57
+ 'ota.cfgNext',
58
+ 'ota.cfgPrev',
59
+ 'ota.cfgTrial',
60
+ 'ota.cfgErr',
61
+ ];
62
+ /**
63
+ * Build the `configDefaults` a manifest carries, or undefined when the app
64
+ * declares no schema. The single place both `mikro ota pack` and the dev
65
+ * manifest go through, so a device reads the same defaults either way. The
66
+ * result is partial: it holds every field a default covers and omits the rest
67
+ * (defaultless leaves, units without a whole-value default).
68
+ */
69
+ export function buildConfigDefaults(schema) {
70
+ if (schema === undefined)
71
+ return undefined;
72
+ const checked = parseConfigSchema(schema);
73
+ if (!checked.ok) {
74
+ throw new Error(`config schema is not valid: ${checked.error.message}`);
75
+ }
76
+ return materializeDefaults(checked.value);
77
+ }
78
+ /**
79
+ * The dev-session half of config: the incremental file sync does not go
80
+ * through `pack`, so the manifest `ota.config()` reads its defaults from has
81
+ * to be written into the build tree here (development-resolved config,
82
+ * matching the build). A no-op when the app declares no schema.
83
+ */
84
+ export async function writeDevManifest(options) {
85
+ const config = await loadMikroConfig(options.projectRoot, 'development');
86
+ const schema = serializeConfigSchema(config);
87
+ const pkg = readProjectPackage(options.projectRoot);
88
+ if (schema !== undefined) {
89
+ // Inside the build tree's app/ directory: the deploy commit keeps only
90
+ // the staged app/ subtree (firmware and sim alike), and the device reads
91
+ // the manifest at /app/mikro.app.json — where a packed build's installer
92
+ // also puts it. Created unconditionally, matching writeManifest, so a
93
+ // build with no app/ directory neither crashes here nor installs without
94
+ // a manifest. Only the materialized defaults ship: the device never
95
+ // reads the schema, so the dev manifest stays small.
96
+ const appDir = pathlib.join(options.buildDir, 'app');
97
+ await mkdir(appDir, { recursive: true });
98
+ await writeFile(pathlib.join(appDir, 'mikro.app.json'), JSON.stringify({
99
+ app: pkg.name ?? 'app',
100
+ version: pkg.version,
101
+ configDefaults: buildConfigDefaults(schema),
102
+ }));
103
+ }
104
+ }
105
+ function readProjectPackage(projectRoot) {
106
+ try {
107
+ const raw = readFileSync(pathlib.join(projectRoot, 'package.json'), 'utf-8');
108
+ const parsed = JSON.parse(raw);
109
+ return {
110
+ name: typeof parsed.name === 'string' ? parsed.name : undefined,
111
+ version: typeof parsed.version === 'string' ? parsed.version : '0.0.0',
112
+ };
113
+ }
114
+ catch {
115
+ return { version: '0.0.0' };
116
+ }
117
+ }
118
+ /** Drop the config-pairing state a cable deploy obsoletes (see
119
+ * `CONFIG_STALE_KVS`). The delivered document itself is left alone: its
120
+ * version stamp makes it inert under a version-bumped deploy, and a registry
121
+ * that manages this device re-serves it either way. */
122
+ export async function clearStaleConfigState(kv) {
123
+ for (const key of CONFIG_STALE_KVS) {
124
+ await kv.delete(key, 'sys');
125
+ }
126
+ }
127
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../../src/cli/lib/configSchema.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,21 @@ import type { MikroEnv, MikroJSConfig } from '../../_exports/index.js';
7
7
  * only when no config file was found.
8
8
  */
9
9
  export declare function resolveConfig(config: MikroJSConfig | null, env: MikroEnv): MikroJSConfig | null;
10
+ /**
11
+ * Prepare stripped config code for evaluation from a data: URL, which has no
12
+ * module-resolution context of its own:
13
+ *
14
+ * - The bare `mikro` import becomes a local `defineConfig` shim.
15
+ * - `mikro/schema` (the one importable device module: it has a host
16
+ * implementation, so a config can build its `configSchema`) is rewritten to
17
+ * `schemaUrl`, the CLI's resolved location of that implementation.
18
+ * - Relative imports (the app's own schema module, typically) are resolved
19
+ * against `dir`, with a `.js` specifier falling back to the `.ts` source
20
+ * when only that exists, matching how app imports are written.
21
+ * - Any other mikro/* import is rejected with a clear message: the backstop
22
+ * for the no-device-imports-in-config lint rule.
23
+ */
24
+ export declare function rewriteConfigImports(code: string, dir: string, configPath: string, schemaUrl: string): string;
10
25
  /**
11
26
  * Walk up from `startDir` looking for `mikro.config.ts`. Returns the config
12
27
  * resolved for `env` (TS types stripped, `defineConfig` shimmed) or `null` if
@@ -1 +1 @@
1
- {"version":3,"file":"loadMikroConfig.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/loadMikroConfig.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAA;AAEpE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI,CAK/F;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,QAAuB,GAC3B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA8B/B"}
1
+ {"version":3,"file":"loadMikroConfig.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/loadMikroConfig.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAA;AAEpE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI,CAK/F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAgCR;AAuBD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,QAAuB,GAC3B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAqB/B"}
@@ -1,7 +1,8 @@
1
- import { existsSync } from 'node:fs';
1
+ import { existsSync, readFileSync, statSync } from 'node:fs';
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { stripTypeScriptTypes } from 'node:module';
4
4
  import * as pathlib from 'node:path';
5
+ import { pathToFileURL } from 'node:url';
5
6
  /**
6
7
  * Resolve the config for `env`: the base config (every field except `env`)
7
8
  * shallow-merged with its `env[env]` overrides, with the `env` map stripped.
@@ -16,6 +17,72 @@ export function resolveConfig(config, env) {
16
17
  const override = overrides?.[env];
17
18
  return override ? { ...base, ...override } : base;
18
19
  }
20
+ /**
21
+ * Prepare stripped config code for evaluation from a data: URL, which has no
22
+ * module-resolution context of its own:
23
+ *
24
+ * - The bare `mikro` import becomes a local `defineConfig` shim.
25
+ * - `mikro/schema` (the one importable device module: it has a host
26
+ * implementation, so a config can build its `configSchema`) is rewritten to
27
+ * `schemaUrl`, the CLI's resolved location of that implementation.
28
+ * - Relative imports (the app's own schema module, typically) are resolved
29
+ * against `dir`, with a `.js` specifier falling back to the `.ts` source
30
+ * when only that exists, matching how app imports are written.
31
+ * - Any other mikro/* import is rejected with a clear message: the backstop
32
+ * for the no-device-imports-in-config lint rule.
33
+ */
34
+ export function rewriteConfigImports(code, dir, configPath, schemaUrl) {
35
+ const deviceImports = [...code.matchAll(/['"](mikro\/[^'"]+)['"]/g)]
36
+ .map((m) => m[1])
37
+ .filter((name) => name !== 'mikro/schema');
38
+ if (deviceImports.length > 0) {
39
+ const unique = [...new Set(deviceImports)];
40
+ throw new Error(`${configPath}: cannot import on-device modules (${unique.join(', ')}) in a build-time config file. ` +
41
+ `Only 'mikro' and 'mikro/schema' are importable here; other mikro/* subpaths are device-only.`);
42
+ }
43
+ code = code.replace(/import\s*\{[^}]*\}\s*from\s*['"]mikro['"]\s*;?/, 'const defineConfig = (c) => c;');
44
+ code = code.replaceAll("'mikro/schema'", `'${schemaUrl}'`);
45
+ code = code.replaceAll('"mikro/schema"', `'${schemaUrl}'`);
46
+ code = code.replace(/(from\s*)['"](\.\.?\/[^'"]+)['"]/g, (match, from, spec) => {
47
+ let target = pathlib.resolve(dir, spec);
48
+ if (!existsSync(target) && spec.endsWith('.js')) {
49
+ const ts = target.slice(0, -3) + '.ts';
50
+ if (existsSync(ts))
51
+ target = ts;
52
+ }
53
+ // ESM caches modules by URL for the process lifetime, and `mikro dev`
54
+ // re-loads the config on every sync: a bare file:// URL would pin the
55
+ // first version of the imported module (the app's schema, typically) for
56
+ // the whole session. The version query spans the target's transitive
57
+ // relative imports, or an edit two files down (a constants module the
58
+ // schema re-exports from) would stay stale until the session restarts.
59
+ return `${from}'${pathToFileURL(target).href}?v=${treeVersion(target)}'`;
60
+ });
61
+ return code;
62
+ }
63
+ /* Newest mtime across `target` and its transitive relative imports, with the
64
+ * same .js-to-.ts fallback the rewrite applies. Non-relative imports are
65
+ * package code the session does not edit; unreadable files count as 0 and
66
+ * fail later, at import, where the error names the module. */
67
+ function treeVersion(target, seen = new Set()) {
68
+ if (seen.has(target))
69
+ return 0;
70
+ seen.add(target);
71
+ if (!existsSync(target))
72
+ return 0;
73
+ let newest = statSync(target).mtimeMs;
74
+ const source = readFileSync(target, 'utf-8');
75
+ for (const match of source.matchAll(/from\s*['"](\.\.?\/[^'"]+)['"]/g)) {
76
+ let dep = pathlib.resolve(pathlib.dirname(target), match[1]);
77
+ if (!existsSync(dep) && dep.endsWith('.js')) {
78
+ const ts = dep.slice(0, -3) + '.ts';
79
+ if (existsSync(ts))
80
+ dep = ts;
81
+ }
82
+ newest = Math.max(newest, treeVersion(dep, seen));
83
+ }
84
+ return newest;
85
+ }
19
86
  /**
20
87
  * Walk up from `startDir` looking for `mikro.config.ts`. Returns the config
21
88
  * resolved for `env` (TS types stripped, `defineConfig` shimmed) or `null` if
@@ -29,17 +96,8 @@ export async function loadMikroConfig(startDir, env = 'production') {
29
96
  const configPath = pathlib.join(dir, 'mikro.config.ts');
30
97
  if (existsSync(configPath)) {
31
98
  const source = await readFile(configPath, 'utf-8');
32
- let code = stripTypeScriptTypes(source, { mode: 'strip' });
33
- // Backstop for the no-device-imports-in-config lint rule: device modules
34
- // (mikro/*) can't resolve from a data: URL anyway, so fail with a
35
- // clear message instead of an opaque module-not-found error.
36
- const deviceImports = [...code.matchAll(/['"](mikro\/[^'"]+)['"]/g)].map((m) => m[1]);
37
- if (deviceImports.length > 0) {
38
- const unique = [...new Set(deviceImports)];
39
- throw new Error(`${configPath}: cannot import on-device modules (${unique.join(', ')}) in a build-time config file. ` +
40
- `Only the bare 'mikro' import is allowed here; mikro/* subpaths are device-only.`);
41
- }
42
- code = code.replace(/import\s*\{[^}]*\}\s*from\s*['"]mikro['"]\s*;?/, 'const defineConfig = (c) => c;');
99
+ const stripped = stripTypeScriptTypes(source, { mode: 'strip' });
100
+ const code = rewriteConfigImports(stripped, dir, configPath, import.meta.resolve('mikro/schema'));
43
101
  const dataUrl = `data:text/javascript;base64,${Buffer.from(code).toString('base64')}`;
44
102
  const mod = await import(dataUrl);
45
103
  return resolveConfig(mod.default, env);
@@ -1 +1 @@
1
- {"version":3,"file":"loadMikroConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/loadMikroConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAA;AAClC,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AAIpC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAA4B,EAAE,GAAa;IACvE,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,MAAM,EAAC,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,EAAC,GAAG,MAAM,CAAA;IACxC,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,CAAA;IACjC,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,MAAgB,YAAY;IAE5B,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;IACpC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;QACvD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAClD,IAAI,IAAI,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;YACxD,yEAAyE;YACzE,kEAAkE;YAClE,6DAA6D;YAC7D,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;gBAC1C,MAAM,IAAI,KAAK,CACb,GAAG,UAAU,sCAAsC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;oBACnG,iFAAiF,CACpF,CAAA;YACH,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,gDAAgD,EAChD,gCAAgC,CACjC,CAAA;YACD,MAAM,OAAO,GAAG,+BAA+B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;YACrF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;YACjC,OAAO,aAAa,CAAC,GAAG,CAAC,OAAwB,EAAE,GAAG,CAAC,CAAA;QACzD,CAAC;QACD,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"loadMikroConfig.js","sourceRoot":"","sources":["../../../src/cli/lib/loadMikroConfig.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,18 @@ export interface OtaManifest {
30
30
  * repository-wide, so an edit to a file outside this app also sets it.
31
31
  * Omitted (reads as false) for a clean tree. */
32
32
  dirty?: boolean;
33
+ /** Serialized `mikro/schema` AST of the app's OTA config schema
34
+ * (`otaConfigSchema` in `mikro.config.ts`). In the manifest so the artifact is
35
+ * self-describing: a `push --tarball` sends what the pack recorded, and the
36
+ * registry validates and serves config against it. The device never reads
37
+ * it. Absent when the app declares none. */
38
+ configSchema?: unknown;
39
+ /** The defaults the schema materializes. Partial: every field a default
40
+ * covers, omitting the rest (defaultless leaves, units without a whole-value
41
+ * default). What `ota.config()` reads on a device holding no
42
+ * served document; the device reads this, never the schema. Present whenever
43
+ * the app declares a schema, even when it is empty. */
44
+ configDefaults?: unknown;
33
45
  }
34
46
  export declare const MANIFEST_NAME = "mikro.app.json";
35
47
  export declare function resolveFirmwareVersion(projectRoot: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"ota.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/ota.ts"],"names":[],"mappings":"AAYA;yEACyE;AACzE,MAAM,WAAW,WAAW;IAC1B;6EACyE;IACzE,GAAG,EAAE,MAAM,CAAA;IACX;8DAC0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf;uCACmC;IACnC,eAAe,EAAE,MAAM,CAAA;IACvB,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAA;IACvB;;4EAEwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;qDAEiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;kFAG8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;oDAGgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,eAAO,MAAM,aAAa,mBAAmB,CAAA;AAsB7C,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAajF;AAmBD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU3E;AAED,6EAA6E;AAC7E,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F;AAiBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBpF;AAED,yEAAyE;AACzE,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8BvF;AAED,mFAAmF;AACnF,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB;;sDAEkD;IAClD,KAAK,EAAE,OAAO,CAAA;CACf;AAsBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAI/D;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAU5E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GAAG;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,GAC9C,MAAM,GAAG,SAAS,CAuCpB;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GAAG;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,GACpD,MAAM,GAAG,SAAS,CAWpB;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5D;AAED,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,WAAW,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC,CAKvB"}
1
+ {"version":3,"file":"ota.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/ota.ts"],"names":[],"mappings":"AAYA;yEACyE;AACzE,MAAM,WAAW,WAAW;IAC1B;6EACyE;IACzE,GAAG,EAAE,MAAM,CAAA;IACX;8DAC0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf;uCACmC;IACnC,eAAe,EAAE,MAAM,CAAA;IACvB,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAA;IACvB;;4EAEwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;qDAEiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;kFAG8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;oDAGgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;gDAI4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;2DAIuD;IACvD,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAOD,eAAO,MAAM,aAAa,mBAAmB,CAAA;AAsB7C,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAajF;AAmBD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU3E;AAED,6EAA6E;AAC7E,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1F;AAiBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBpF;AAED,yEAAyE;AACzE,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAkCvF;AAED,mFAAmF;AACnF,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB;;sDAEkD;IAClD,KAAK,EAAE,OAAO,CAAA;CACf;AAsBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAI/D;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAU5E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GAAG;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,GAC9C,MAAM,GAAG,SAAS,CAuCpB;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GAAG;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,GACpD,MAAM,GAAG,SAAS,CAWpB;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5D;AAED,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,WAAW,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC,CAKvB"}
@@ -4,9 +4,13 @@ import { createRequire } from 'node:module';
4
4
  import * as pathlib from 'node:path';
5
5
  import { promisify } from 'node:util';
6
6
  import { createReadStream } from 'fs';
7
- import { readdir, readFile, rm, stat, writeFile } from 'fs/promises';
7
+ import { mkdir, readdir, readFile, rm, stat, writeFile } from 'fs/promises';
8
8
  import { create as tarCreate } from 'tar';
9
9
  const execFileAsync = promisify(execFile);
10
+ /** A plain object, checked before it is copied out of an untrusted manifest. */
11
+ function isPlainObject(value) {
12
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
13
+ }
10
14
  export const MANIFEST_NAME = 'mikro.app.json';
11
15
  /**
12
16
  * Resolve the concrete installed version of the project's `@mikrojs/firmware`
@@ -89,7 +93,16 @@ export async function pruneMacSidecars(dir) {
89
93
  }
90
94
  }
91
95
  export async function writeManifest(buildDir, manifest) {
92
- await writeFile(pathlib.join(buildDir, MANIFEST_NAME), JSON.stringify(manifest));
96
+ const encoded = JSON.stringify(manifest);
97
+ await writeFile(pathlib.join(buildDir, MANIFEST_NAME), encoded);
98
+ // A second copy inside app/: the installer's commit keeps only the staged
99
+ // app/ tree, so the root copy (the registry's and `push --tarball`'s
100
+ // contract) never survives an install. The app/ copy is what the device
101
+ // reads at /app/mikro.app.json. Created unconditionally — a build with no
102
+ // app/ directory would otherwise install without a manifest, silently.
103
+ const appDir = pathlib.join(buildDir, 'app');
104
+ await mkdir(appDir, { recursive: true });
105
+ await writeFile(pathlib.join(appDir, MANIFEST_NAME), encoded);
93
106
  }
94
107
  /** Every path under `root`, `root`-relative, each directory immediately before
95
108
  * its contents. Sorted by code unit rather than `localeCompare`, which varies
@@ -181,6 +194,11 @@ export async function readManifestFromTarball(tarballPath) {
181
194
  manifest.commit = parsed.commit;
182
195
  if (parsed.dirty === true)
183
196
  manifest.dirty = true;
197
+ if (typeof parsed.configSchema === 'object' && parsed.configSchema !== null) {
198
+ manifest.configSchema = parsed.configSchema;
199
+ }
200
+ if (isPlainObject(parsed.configDefaults))
201
+ manifest.configDefaults = parsed.configDefaults;
184
202
  return manifest;
185
203
  }
186
204
  /** `YYYYMMDDTHHmmssZ` in UTC. A valid semver prerelease identifier: the `T`/`Z`
@@ -1 +1 @@
1
- {"version":3,"file":"ota.js","sourceRoot":"","sources":["../../../src/cli/lib/ota.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ota.js","sourceRoot":"","sources":["../../../src/cli/lib/ota.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,8 @@ export interface UploadRequestPlan {
39
39
  commit?: string;
40
40
  /** Truthy flag: the repository was dirty at pack time; omitted when clean. */
41
41
  dirty?: string;
42
+ /** Serialized config schema JSON (from the manifest); omitted when absent. */
43
+ configSchema?: string;
42
44
  };
43
45
  }
44
46
  /** Join a base registry URL with a path, tolerating a trailing slash on the base. */
@@ -55,7 +57,9 @@ export type FetchLike = (url: string, init: RequestInit) => Promise<FetchRespons
55
57
  * Upload the build to the registry. HTTP is confined to the injected
56
58
  * `fetchImpl` (defaults to global fetch) so callers can mock it.
57
59
  */
58
- export declare function publishBuild(input: PublishInput, buildPath: string, token: string, fetchImpl?: FetchLike): Promise<void>;
60
+ export declare function publishBuild(input: PublishInput, buildPath: string, token: string, fetchImpl?: FetchLike): Promise<{
61
+ warnings: string[];
62
+ }>;
59
63
  export interface ReleaseInput {
60
64
  registry: string;
61
65
  app: string;
@@ -76,5 +80,6 @@ export declare function buildReleaseRequest(input: ReleaseInput, token: string):
76
80
  * a device count. */
77
81
  export declare function releaseBuild(input: ReleaseInput, token: string, fetchImpl?: FetchLike): Promise<{
78
82
  released: number;
83
+ warnings: string[];
79
84
  }>;
80
85
  //# sourceMappingURL=otaPublish.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"otaPublish.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/otaPublish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"otaPublish.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/otaPublish.ts"],"names":[],"mappings":"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"}
@@ -32,16 +32,38 @@ export function buildUploadRequest(input, token) {
32
32
  directory: input.manifest.directory,
33
33
  commit: input.manifest.commit,
34
34
  dirty: input.manifest.dirty === true ? '1' : undefined,
35
+ configSchema: input.manifest.configSchema !== undefined
36
+ ? JSON.stringify(input.manifest.configSchema)
37
+ : undefined,
35
38
  },
36
39
  };
37
40
  }
41
+ /** POST and return the registry's advisory `warnings`, if the body carries
42
+ * any (schema-change notes, the release compat report). */
38
43
  async function send(fetchImpl, url, init) {
39
44
  const res = await fetchImpl(url, init);
45
+ const body = await res.text().catch(() => '');
40
46
  if (!res.ok) {
41
- const body = await res.text().catch(() => '');
42
47
  const detail = body ? `: ${body}` : '';
43
48
  throw new Error(`Registry request to ${url} failed with ${res.status}${detail}`);
44
49
  }
50
+ return warningsFrom(parseBody(body));
51
+ }
52
+ function parseBody(body) {
53
+ try {
54
+ return JSON.parse(body);
55
+ }
56
+ catch {
57
+ return undefined;
58
+ }
59
+ }
60
+ function warningsFrom(parsed) {
61
+ if (typeof parsed !== 'object' || parsed === null)
62
+ return [];
63
+ const warnings = parsed.warnings;
64
+ if (!Array.isArray(warnings))
65
+ return [];
66
+ return warnings.filter((w) => typeof w === 'string');
45
67
  }
46
68
  /**
47
69
  * Upload the build to the registry. HTTP is confined to the injected
@@ -70,13 +92,16 @@ export async function publishBuild(input, buildPath, token, fetchImpl = fetch) {
70
92
  form.set('commit', upload.fields.commit);
71
93
  if (upload.fields.dirty !== undefined)
72
94
  form.set('dirty', upload.fields.dirty);
95
+ if (upload.fields.configSchema !== undefined)
96
+ form.set('configSchema', upload.fields.configSchema);
73
97
  const bytes = await readFile(buildPath);
74
98
  form.set('build', new Blob([bytes], { type: 'application/gzip' }), basename(buildPath));
75
- await send(fetchImpl, upload.url, {
99
+ const warnings = await send(fetchImpl, upload.url, {
76
100
  method: upload.method,
77
101
  headers: upload.headers,
78
102
  body: form,
79
103
  });
104
+ return { warnings };
80
105
  }
81
106
  /** Build the release request (JSON: point a channel at a published build). */
82
107
  export function buildReleaseRequest(input, token) {
@@ -97,12 +122,15 @@ export async function releaseBuild(input, token, fetchImpl = fetch) {
97
122
  headers: plan.headers,
98
123
  body: plan.body,
99
124
  });
125
+ const body = await res.text().catch(() => '');
100
126
  if (!res.ok) {
101
- const body = await res.text().catch(() => '');
102
127
  const detail = body ? `: ${body}` : '';
103
128
  throw new Error(`Registry request to ${plan.url} failed with ${res.status}${detail}`);
104
129
  }
105
- const parsed = JSON.parse(await res.text()).released;
106
- return { released: typeof parsed === 'number' ? parsed : 0 };
130
+ // An unparseable body is tolerated: `released` stays 0 and the caller
131
+ // reports that.
132
+ const parsed = parseBody(body);
133
+ const count = parsed?.released;
134
+ return { released: typeof count === 'number' ? count : 0, warnings: warningsFrom(parsed) };
107
135
  }
108
136
  //# sourceMappingURL=otaPublish.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"otaPublish.js","sourceRoot":"","sources":["../../../src/cli/lib/otaPublish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAElC,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAA;AAgDpC;6EAC6E;AAC7E,MAAM,UAAU,GAAG,QAAQ,CAAA;AAE3B,qFAAqF;AACrF,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,IAAY;IAChD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAA;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,EAAC,aAAa,EAAE,UAAU,KAAK,EAAE,EAAC,CAAA;AAC3C,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,kBAAkB,CAAC,KAAmB,EAAE,KAAa;IACnE,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,UAAU,SAAS,CAAC;QACpD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE;YACN,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG;YACvB,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;YAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACxB,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,eAAe;YAC/C,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YAC/C,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,wEAAwE;YACxE,uEAAuE;YACvE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;YACrC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS;YACnC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;YAC7B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SACvD;KACF,CAAA;AACH,CAAC;AAUD,KAAK,UAAU,IAAI,CAAC,SAAoB,EAAE,GAAW,EAAE,IAAiB;IACtE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACtC,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,gBAAgB,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;IAClF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAmB,EACnB,SAAiB,EACjB,KAAa,EACb,YAAuB,KAA6B;IAEpD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC/C,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAA;IAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACpC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAC1D,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAChF,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnF,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC5F,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAChF,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;IACrF,MAAM,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,IAAI;KACX,CAAC,CAAA;AACJ,CAAC;AAiBD,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB,CAAC,KAAmB,EAAE,KAAa;IACpE,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,UAAU,WAAW,CAAC;QACtD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAC,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAC;QACpE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAC,CAAC;KACvF,CAAA;AACH,CAAC;AAED;;sBAEsB;AACtB,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAmB,EACnB,KAAa,EACb,YAAuB,KAA6B;IAEpD,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAA;IACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACtC,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,GAAG,gBAAgB,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;IACvF,CAAC;IACD,MAAM,MAAM,GAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC,QAAQ,CAAA;IAC9E,OAAO,EAAC,QAAQ,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"otaPublish.js","sourceRoot":"","sources":["../../../src/cli/lib/otaPublish.ts"],"names":[],"mappings":"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"}
@@ -82,6 +82,12 @@ export declare const CMD_CONFIG_DELETE = 66;
82
82
  * never synced or cleared by deploys). */
83
83
  export declare const CMD_KV_SET = 67;
84
84
  export declare const CMD_KV_DELETE = 68;
85
+ /** Largest value CMD_KV_SET carries, in UTF-8 bytes. Mirrors the firmware's
86
+ * buffer in mik_config.cpp (keep the two in sync): sized for a 4 KiB config
87
+ * document plus its {version, doc} envelope, the largest value this path
88
+ * sees. The simulator enforces the same limit so a seed that deploys there
89
+ * also deploys over a real cable. */
90
+ export declare const KV_VALUE_MAX_BYTES = 4608;
85
91
  /** Namespace selector for CMD_KV_SET / CMD_KV_DELETE. */
86
92
  export type KvNamespace = 'kv' | 'sys';
87
93
  /** Env entry flags */