@mikrojs/firmware 0.21.1-next.20260928214050 → 0.22.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/components/mikrojs/CMakeLists.txt +1 -0
- package/components/mikrojs/mik_main.cpp +77 -88
- package/components/mikrojs/platform_esp32.cpp +12 -0
- package/dist/boards.d.ts +71 -6
- package/dist/boards.d.ts.map +1 -1
- package/dist/boards.js +135 -50
- package/dist/boards.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -73,6 +73,7 @@ idf_component_register(
|
|
|
73
73
|
"${MIK_SRC_DIR}/mik_text_encoding.cpp"
|
|
74
74
|
"${MIK_SRC_DIR}/mik_cbor.cpp"
|
|
75
75
|
"${MIK_SRC_DIR}/mik_schema.cpp"
|
|
76
|
+
"${MIK_SRC_DIR}/mik_test.cpp"
|
|
76
77
|
"${MIK_SRC_DIR}/mik_sys_codec.cpp"
|
|
77
78
|
"${MIK_SRC_DIR}/mik_result.cpp"
|
|
78
79
|
"${MIK_SRC_DIR}/mik_udp.cpp"
|
|
@@ -120,26 +120,13 @@ static void mik__apply_nvs_log_level(void) {
|
|
|
120
120
|
esp_log_level_set("mik_app_config", level);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
/*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* Kept off the stack because the main task stack is ~24 KB and cannot
|
|
127
|
-
* accommodate 1-2 KB of local buffers on top of the nested eval/module
|
|
128
|
-
* normalizer call chain (observed as a stack-protection fault in
|
|
129
|
-
* mik_module_normalizer on the first test file). Fixed sizes instead of
|
|
130
|
-
* PATH_MAX scaling — on newlib PATH_MAX can be 4096, which is absurd for
|
|
131
|
-
* our purposes. These sizes fit any realistic on-device test path. Only
|
|
132
|
-
* one test manifest runs per boot, so single-ownership is safe. */
|
|
123
|
+
/* Fixed sizes instead of PATH_MAX scaling — on newlib PATH_MAX can be 4096,
|
|
124
|
+
* which is absurd for our purposes. These fit any realistic on-device test
|
|
125
|
+
* path. */
|
|
133
126
|
#define MIK_SUP_PATH_MAX 384
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
char buf[MIK_SUP_PATH_MAX * 2 + 512];
|
|
138
|
-
/* Exception text captured by MIK_RunEntryErr when a test file fails to
|
|
139
|
-
* evaluate, and its JSON-escaped form for the synthesized test event. */
|
|
140
|
-
char err[192];
|
|
141
|
-
char err_esc[sizeof(err) * 2 + 8];
|
|
142
|
-
};
|
|
127
|
+
/* Exception text captured by MIK_RunEntryErr when a test file fails to
|
|
128
|
+
* evaluate. */
|
|
129
|
+
#define MIK_SUP_ERR_MAX 192
|
|
143
130
|
|
|
144
131
|
/* Minimal JSON string-escape into a bounded buffer. Handles `"`, `\`, and
|
|
145
132
|
* control characters; everything else copies verbatim. Returns bytes
|
|
@@ -170,6 +157,68 @@ static int mik__json_escape(char* dst, size_t dst_size, const char* src) {
|
|
|
170
157
|
return (int)w;
|
|
171
158
|
}
|
|
172
159
|
|
|
160
|
+
/* Supervisor frame buffers live on these noinline helpers' stacks, called
|
|
161
|
+
* only while no JS runs. Not in MIK_Main's frame: it stays live under the
|
|
162
|
+
* eval chain, and 1-2 KB of locals there faulted in mik_module_normalizer.
|
|
163
|
+
* Not on the heap: that held ~3 KB through every test file's network calls. */
|
|
164
|
+
|
|
165
|
+
/* Announce the file about to run so the CLI can confirm the supervisor's
|
|
166
|
+
* iteration matches its own testFiles order. The MSG_DEBUG frame is
|
|
167
|
+
* rendered as a dim log line. */
|
|
168
|
+
[[gnu::noinline]] static void mik__sup_announce(MIKReplTransport* transport, size_t i, size_t count,
|
|
169
|
+
const char* path) {
|
|
170
|
+
char dbg[MIK_SUP_PATH_MAX + 64];
|
|
171
|
+
int n = snprintf(dbg, sizeof(dbg), "[supervisor] running %zu/%zu: %s", i + 1, count, path);
|
|
172
|
+
if (n > 0 && n < (int)sizeof(dbg)) {
|
|
173
|
+
mik__proto_send(transport, MIK_MSG_DEBUG, dbg, n);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* Synthesize a failing test + run_done so the CLI accounts for this file
|
|
178
|
+
* instead of stalling waiting for a run_done the runtime will never emit.
|
|
179
|
+
* `err` is the captured exception text, or null. */
|
|
180
|
+
[[gnu::noinline]] static void mik__sup_report_failure(MIKReplTransport* transport,
|
|
181
|
+
const char* path, const char* reason,
|
|
182
|
+
const char* err) {
|
|
183
|
+
char esc[MIK_SUP_PATH_MAX * 2 + 8];
|
|
184
|
+
char err_esc[MIK_SUP_ERR_MAX * 2 + 8];
|
|
185
|
+
char buf[MIK_SUP_PATH_MAX * 2 + 512];
|
|
186
|
+
|
|
187
|
+
ESP_LOGE(TAG, "%s: %s", reason, path);
|
|
188
|
+
/* Escape the path so any `"` or `\` in it doesn't corrupt the JSON frame. */
|
|
189
|
+
if (mik__json_escape(esc, sizeof(esc), path) < 0) {
|
|
190
|
+
/* Path too long to fit even escaped — fall back to basename so the
|
|
191
|
+
* frame at least identifies something. */
|
|
192
|
+
const char* base = strrchr(path, '/');
|
|
193
|
+
if (!base || mik__json_escape(esc, sizeof(esc), base + 1) < 0) {
|
|
194
|
+
esc[0] = '?';
|
|
195
|
+
esc[1] = '\0';
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/* Append the captured exception text (escaped) so the CLI shows the
|
|
199
|
+
* actual error, not just "Evaluation threw". */
|
|
200
|
+
err_esc[0] = '\0';
|
|
201
|
+
if (err && err[0] != '\0') {
|
|
202
|
+
if (mik__json_escape(err_esc, sizeof(err_esc), err) < 0) {
|
|
203
|
+
err_esc[0] = '\0';
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
int n;
|
|
207
|
+
if (err_esc[0] != '\0') {
|
|
208
|
+
n = snprintf(buf, sizeof(buf),
|
|
209
|
+
"{\"e\":3,\"s\":\"<load>\",\"t\":\"%s\",\"d\":0,\"m\":\"%s: %s\"}", esc,
|
|
210
|
+
reason, err_esc);
|
|
211
|
+
} else {
|
|
212
|
+
n = snprintf(buf, sizeof(buf),
|
|
213
|
+
"{\"e\":3,\"s\":\"<load>\",\"t\":\"%s\",\"d\":0,\"m\":\"%s\"}", esc, reason);
|
|
214
|
+
}
|
|
215
|
+
if (n > 0 && n < (int)sizeof(buf)) {
|
|
216
|
+
mik__proto_send(transport, MIK_MSG_TEST, buf, n);
|
|
217
|
+
}
|
|
218
|
+
static const char kRunDone[] = "{\"e\":6,\"p\":0,\"f\":1,\"k\":0,\"o\":0,\"d\":0}";
|
|
219
|
+
mik__proto_send(transport, MIK_MSG_TEST, kRunDone, sizeof(kRunDone) - 1);
|
|
220
|
+
}
|
|
221
|
+
|
|
173
222
|
/* ── Serial transport ───────────────────────────────────────────── */
|
|
174
223
|
|
|
175
224
|
static int serial_transport_read(uint8_t* buf, size_t size, void* ctx) {
|
|
@@ -721,47 +770,27 @@ void MIK_Main(void) {
|
|
|
721
770
|
MIK_ProtocolOpen(&transport);
|
|
722
771
|
|
|
723
772
|
if (test_mode) {
|
|
724
|
-
auto* sup = static_cast<MIKSupScratch*>(malloc(sizeof(MIKSupScratch)));
|
|
725
|
-
if (!sup) {
|
|
726
|
-
ESP_LOGE(TAG, "Not enough memory for the test supervisor");
|
|
727
|
-
/* Fail loud: a synthesized failing run-done plus end-of-manifest
|
|
728
|
-
* lets the CLI report the failure instead of hanging on a stream
|
|
729
|
-
* that will never produce results. */
|
|
730
|
-
static const char kOomRunDone[] = "{\"e\":6,\"p\":0,\"f\":1,\"k\":0,\"o\":0,\"d\":0}";
|
|
731
|
-
mik__proto_send(&transport, MIK_MSG_TEST, kOomRunDone, sizeof(kOomRunDone) - 1);
|
|
732
|
-
mik__proto_send(&transport, MIK_MSG_MANIFEST_DONE, nullptr, 0);
|
|
733
|
-
return;
|
|
734
|
-
}
|
|
735
|
-
|
|
736
773
|
/* Discard the primary runtime — each test gets a fresh one. */
|
|
737
774
|
MIK_FreeRuntime(mik_rt);
|
|
738
775
|
mik_rt = nullptr;
|
|
739
776
|
|
|
740
777
|
for (size_t i = 0; i < test_count; i++) {
|
|
741
|
-
|
|
742
|
-
* confirm the supervisor's iteration matches its own testFiles
|
|
743
|
-
* order. The MSG_DEBUG frame is rendered as a dim log line.
|
|
744
|
-
* Uses heap scratch to avoid bloating the main task stack —
|
|
745
|
-
* the normalizer call chain during module resolution already
|
|
746
|
-
* sits a few KB deep. */
|
|
747
|
-
{
|
|
748
|
-
int n = snprintf(sup->dbg, sizeof(sup->dbg),
|
|
749
|
-
"[supervisor] running %zu/%zu: %s", i + 1, test_count,
|
|
750
|
-
test_paths[i]);
|
|
751
|
-
if (n > 0 && n < (int)sizeof(sup->dbg)) {
|
|
752
|
-
mik__proto_send(&transport, MIK_MSG_DEBUG, sup->dbg, n);
|
|
753
|
-
}
|
|
754
|
-
}
|
|
778
|
+
mik__sup_announce(&transport, i, test_count, test_paths[i]);
|
|
755
779
|
MIKRuntime* rt = create_runtime();
|
|
756
780
|
MIK_EnableTestHelpers(rt);
|
|
757
781
|
MIK_ProtocolAttach(rt);
|
|
758
|
-
|
|
782
|
+
/* Held only across the entry eval; a null buffer just drops the
|
|
783
|
+
* exception text. */
|
|
784
|
+
auto* err = static_cast<char*>(malloc(MIK_SUP_ERR_MAX));
|
|
785
|
+
int rc = MIK_RunEntryErr(rt, test_paths[i], err, err ? MIK_SUP_ERR_MAX : 0);
|
|
759
786
|
const char* fail_reason = nullptr;
|
|
760
787
|
if (rc == -ENOENT) {
|
|
761
788
|
fail_reason = "Test file not found";
|
|
762
789
|
} else if (rc == -EFAULT) {
|
|
763
790
|
fail_reason = "Evaluation threw";
|
|
764
791
|
} else {
|
|
792
|
+
free(err);
|
|
793
|
+
err = nullptr;
|
|
765
794
|
/* Entry eval returned successfully (rc == 0). The test module
|
|
766
795
|
* may still asynchronously reject (e.g. top-level throw in a
|
|
767
796
|
* module eval'd as a Promise) — that's caught after ServeLoop
|
|
@@ -772,52 +801,12 @@ void MIK_Main(void) {
|
|
|
772
801
|
}
|
|
773
802
|
}
|
|
774
803
|
if (fail_reason) {
|
|
775
|
-
|
|
776
|
-
* for this file instead of stalling waiting for a run_done
|
|
777
|
-
* the runtime will never emit. Escape the path so any `"`
|
|
778
|
-
* or `\` in it doesn't corrupt the JSON frame. */
|
|
779
|
-
ESP_LOGE(TAG, "%s: %s", fail_reason, test_paths[i]);
|
|
780
|
-
if (mik__json_escape(sup->esc, sizeof(sup->esc), test_paths[i]) < 0) {
|
|
781
|
-
/* Path too long to fit even escaped — fall back to
|
|
782
|
-
* basename so the frame at least identifies something. */
|
|
783
|
-
const char* base = strrchr(test_paths[i], '/');
|
|
784
|
-
if (!base ||
|
|
785
|
-
mik__json_escape(sup->esc, sizeof(sup->esc), base + 1) < 0) {
|
|
786
|
-
sup->esc[0] = '?';
|
|
787
|
-
sup->esc[1] = '\0';
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
/* Append the captured exception text (escaped) so the CLI
|
|
791
|
-
* shows the actual error, not just "Evaluation threw". */
|
|
792
|
-
sup->err_esc[0] = '\0';
|
|
793
|
-
if (rc == -EFAULT && sup->err[0] != '\0') {
|
|
794
|
-
if (mik__json_escape(sup->err_esc, sizeof(sup->err_esc), sup->err) < 0) {
|
|
795
|
-
sup->err_esc[0] = '\0';
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
int n;
|
|
799
|
-
if (sup->err_esc[0] != '\0') {
|
|
800
|
-
n = snprintf(sup->buf, sizeof(sup->buf),
|
|
801
|
-
"{\"e\":3,\"s\":\"<load>\",\"t\":\"%s\",\"d\":0,"
|
|
802
|
-
"\"m\":\"%s: %s\"}",
|
|
803
|
-
sup->esc, fail_reason, sup->err_esc);
|
|
804
|
-
} else {
|
|
805
|
-
n = snprintf(sup->buf, sizeof(sup->buf),
|
|
806
|
-
"{\"e\":3,\"s\":\"<load>\",\"t\":\"%s\",\"d\":0,"
|
|
807
|
-
"\"m\":\"%s\"}",
|
|
808
|
-
sup->esc, fail_reason);
|
|
809
|
-
}
|
|
810
|
-
if (n > 0 && n < (int)sizeof(sup->buf)) {
|
|
811
|
-
mik__proto_send(&transport, MIK_MSG_TEST, sup->buf, n);
|
|
812
|
-
}
|
|
813
|
-
static const char kRunDone[] =
|
|
814
|
-
"{\"e\":6,\"p\":0,\"f\":1,\"k\":0,\"o\":0,\"d\":0}";
|
|
815
|
-
mik__proto_send(&transport, MIK_MSG_TEST, kRunDone, sizeof(kRunDone) - 1);
|
|
804
|
+
mik__sup_report_failure(&transport, test_paths[i], fail_reason, err);
|
|
816
805
|
}
|
|
806
|
+
free(err);
|
|
817
807
|
MIK_ProtocolDetach();
|
|
818
808
|
MIK_FreeRuntime(rt);
|
|
819
809
|
}
|
|
820
|
-
free(sup);
|
|
821
810
|
|
|
822
811
|
/* Signal end-of-manifest so the CLI can finalize its report
|
|
823
812
|
* without waiting on a silent stream. */
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#include <esp_log.h>
|
|
6
6
|
#include <esp_heap_caps.h>
|
|
7
7
|
#include <esp_mac.h>
|
|
8
|
+
#include <esp_netif.h>
|
|
8
9
|
#include <nanocbor/nanocbor.h>
|
|
9
10
|
#include <nvs.h>
|
|
10
11
|
#include <esp_random.h>
|
|
@@ -390,6 +391,16 @@ static void esp32_log(int level, const char* tag, const char* fmt, ...) {
|
|
|
390
391
|
mik__console_write(buf, total + 1);
|
|
391
392
|
}
|
|
392
393
|
|
|
394
|
+
/* Start lwip's tcpip thread. esp_netif_init is idempotent (INVALID_STATE
|
|
395
|
+
* on a second call); the wifi and http modules run it too and share the
|
|
396
|
+
* result. */
|
|
397
|
+
static void esp32_net_init(void) {
|
|
398
|
+
esp_err_t err = esp_netif_init();
|
|
399
|
+
if (err != ESP_OK && err != ESP_ERR_INVALID_STATE) {
|
|
400
|
+
ESP_LOGE("mikrojs", "esp_netif_init failed: %s", esp_err_to_name(err));
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
393
404
|
static const MIKPlatform esp32_platform = {
|
|
394
405
|
.get_boot_us = esp32_get_boot_us,
|
|
395
406
|
.get_rtc_us = esp32_get_rtc_us,
|
|
@@ -423,6 +434,7 @@ static const MIKPlatform esp32_platform = {
|
|
|
423
434
|
.get_device_name = esp32_get_device_name,
|
|
424
435
|
.set_device_name = esp32_set_device_name,
|
|
425
436
|
.get_reset_reason = esp32_get_reset_reason,
|
|
437
|
+
.net_init = esp32_net_init,
|
|
426
438
|
};
|
|
427
439
|
|
|
428
440
|
/*
|
package/dist/boards.d.ts
CHANGED
|
@@ -43,6 +43,18 @@ export interface FirmwareExport {
|
|
|
43
43
|
target: string;
|
|
44
44
|
file: string;
|
|
45
45
|
}
|
|
46
|
+
/** A board that runs one of the generic images, as its firmware.json says.
|
|
47
|
+
* `mikro flash` flashes that image with the board's name written into it. */
|
|
48
|
+
export interface GenericBoard {
|
|
49
|
+
name: string;
|
|
50
|
+
description?: string;
|
|
51
|
+
/** The generic board whose image it runs: `esp32-generic`. */
|
|
52
|
+
firmware: string;
|
|
53
|
+
specifier: string;
|
|
54
|
+
key: string;
|
|
55
|
+
packageName: string;
|
|
56
|
+
packageDir: string;
|
|
57
|
+
}
|
|
46
58
|
/** The full image's folder in the board's, and its name for `--features`. */
|
|
47
59
|
export declare const FULL_IMAGE = "full";
|
|
48
60
|
/** A board's name in file and artifact names: `@acme/pi` becomes `acme-pi`. */
|
|
@@ -61,18 +73,31 @@ export declare function firmwareExports(packageDir: string): {
|
|
|
61
73
|
entries: FirmwareExport[];
|
|
62
74
|
problems: BoardProblem[];
|
|
63
75
|
};
|
|
64
|
-
|
|
76
|
+
type ImageJson = Pick<BoardImage, 'name' | 'description' | 'chip' | 'version' | 'features'>;
|
|
77
|
+
type GenericJson = Pick<GenericBoard, 'name' | 'description' | 'firmware'>;
|
|
78
|
+
/** What an image's firmware.json says, or why it can't describe an image. */
|
|
65
79
|
export declare function readFirmwareJson(file: string): {
|
|
66
80
|
ok: true;
|
|
67
|
-
value:
|
|
81
|
+
value: ImageJson;
|
|
68
82
|
} | {
|
|
69
83
|
ok: false;
|
|
70
84
|
message: string;
|
|
71
85
|
};
|
|
72
|
-
/**
|
|
73
|
-
*
|
|
86
|
+
/** What the firmware.json of a board that runs a generic image says, or why
|
|
87
|
+
* it isn't one. */
|
|
88
|
+
export declare function readGenericBoardJson(file: string): {
|
|
89
|
+
ok: true;
|
|
90
|
+
value: GenericJson;
|
|
91
|
+
} | {
|
|
92
|
+
ok: false;
|
|
93
|
+
message: string;
|
|
94
|
+
};
|
|
95
|
+
/** The boards a package declares: those with an image of their own in
|
|
96
|
+
* `boards`, those that run a generic image in `generic`, and the `firmware`
|
|
97
|
+
* exports that are neither (not built, or not a Mikro.js firmware.json). */
|
|
74
98
|
export declare function loadBoards(packageDir: string): {
|
|
75
99
|
boards: BoardImage[];
|
|
100
|
+
generic: GenericBoard[];
|
|
76
101
|
problems: BoardProblem[];
|
|
77
102
|
};
|
|
78
103
|
/**
|
|
@@ -126,6 +151,31 @@ export interface BoardConfig {
|
|
|
126
151
|
/** Images to build besides the full one, each with features switched off
|
|
127
152
|
* or on: `[{ble: false}, {ble: false, wifi: false}]`. */
|
|
128
153
|
images?: readonly ImageFeatures[];
|
|
154
|
+
/** Only for a board on the generic firmware (GenericBoardConfig). */
|
|
155
|
+
firmware?: never;
|
|
156
|
+
}
|
|
157
|
+
/** The generic boards, one per chip: the firmware a board on the generic
|
|
158
|
+
* firmware runs. */
|
|
159
|
+
declare const GENERIC_FIRMWARE: ("esp32-generic" | "esp32c3-generic" | "esp32c5-generic" | "esp32c6-generic" | "esp32s3-generic")[];
|
|
160
|
+
export type GenericFirmware = (typeof GENERIC_FIRMWARE)[number];
|
|
161
|
+
/** A board in boards.config.ts that runs one of the generic images, such as a
|
|
162
|
+
* board whose drivers are all JavaScript. `mikro flash` writes its name into
|
|
163
|
+
* the image. */
|
|
164
|
+
export interface GenericBoardConfig {
|
|
165
|
+
/** The generic board whose image it runs: `esp32-generic`. */
|
|
166
|
+
firmware: GenericFirmware;
|
|
167
|
+
/** The name the device reports as sys.board.name. Default: the specifier of
|
|
168
|
+
* the board's export. */
|
|
169
|
+
name?: string;
|
|
170
|
+
/** Shown when `mikro flash` asks which board to flash. Default: the
|
|
171
|
+
* package's description. */
|
|
172
|
+
description?: string;
|
|
173
|
+
chip?: never;
|
|
174
|
+
sdkconfig?: never;
|
|
175
|
+
partitions?: never;
|
|
176
|
+
nativeModules?: never;
|
|
177
|
+
project?: never;
|
|
178
|
+
images?: never;
|
|
129
179
|
}
|
|
130
180
|
/** boards.config.ts: the boards a package builds, keyed by the export that
|
|
131
181
|
* declares each, `.` or `./<board>`. */
|
|
@@ -134,7 +184,7 @@ export interface BoardsConfig {
|
|
|
134
184
|
* board at `.`, `<dist>/<board>/full/` for the others, and each other image
|
|
135
185
|
* in a folder beside `full/`. Default: `dist-fw`. */
|
|
136
186
|
dist?: string;
|
|
137
|
-
boards: Record<string, BoardConfig>;
|
|
187
|
+
boards: Record<string, BoardConfig | GenericBoardConfig>;
|
|
138
188
|
}
|
|
139
189
|
/** A board from boards.config.ts, with defaults filled in and paths resolved. */
|
|
140
190
|
export interface ConfiguredBoard {
|
|
@@ -157,6 +207,19 @@ export interface ConfiguredBoard {
|
|
|
157
207
|
/** The images besides the full one. */
|
|
158
208
|
images: ConfiguredImage[];
|
|
159
209
|
}
|
|
210
|
+
/** A board from boards.config.ts that runs a generic image. `mikro fw build`
|
|
211
|
+
* writes its firmware.json to `target`, which names the generic board. */
|
|
212
|
+
export interface ConfiguredGenericBoard {
|
|
213
|
+
key: string;
|
|
214
|
+
specifier: string;
|
|
215
|
+
name: string;
|
|
216
|
+
description?: string;
|
|
217
|
+
firmware: GenericFirmware;
|
|
218
|
+
/** The generic board's chip. */
|
|
219
|
+
chip: Chip;
|
|
220
|
+
target: string;
|
|
221
|
+
boardDir: string;
|
|
222
|
+
}
|
|
160
223
|
/** An image from `images` in boards.config.ts. */
|
|
161
224
|
export interface ConfiguredImage {
|
|
162
225
|
/** `no-ble`: the image's folder in the board's, and its name everywhere else. */
|
|
@@ -171,10 +234,12 @@ export interface ConfiguredImage {
|
|
|
171
234
|
* and everything wrong with it: fields that don't check out, files it names
|
|
172
235
|
* that don't exist, names a device can't take, and `exports` that don't match
|
|
173
236
|
* (a board without its `firmware` export, one pointing elsewhere, or a
|
|
174
|
-
* `firmware` export the config doesn't have).
|
|
237
|
+
* `firmware` export the config doesn't have). Boards with an image of their own
|
|
238
|
+
* are in `boards`, boards that run a generic image in `generic`.
|
|
175
239
|
*/
|
|
176
240
|
export declare function checkBoardsConfig(packageDir: string, config: unknown): {
|
|
177
241
|
boards: ConfiguredBoard[];
|
|
242
|
+
generic: ConfiguredGenericBoard[];
|
|
178
243
|
problems: BoardProblem[];
|
|
179
244
|
};
|
|
180
245
|
//# sourceMappingURL=boards.d.ts.map
|
package/dist/boards.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boards.d.ts","sourceRoot":"","sources":["../src/boards.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAC,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"boards.d.ts","sourceRoot":"","sources":["../src/boards.ts"],"names":[],"mappings":"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"}
|
package/dist/boards.js
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
22
22
|
import { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
23
23
|
import { array, enumOf, object, optional, string, validate } from '@mikrojs/schema';
|
|
24
|
-
import { chips } from "./index.js";
|
|
24
|
+
import { CHIPS, chips } from "./index.js";
|
|
25
25
|
/** The form of a board name: a package name, optionally with /<board>. The
|
|
26
26
|
* device keeps it in a 64-byte buffer, and a registry checks the same form
|
|
27
27
|
* (docs/registry-spec.md, "Board names"). */
|
|
@@ -34,6 +34,13 @@ const FirmwareJson = object({
|
|
|
34
34
|
version: string(),
|
|
35
35
|
features: optional(array(string())),
|
|
36
36
|
});
|
|
37
|
+
/** The firmware.json of a board that runs a generic image: no image of its
|
|
38
|
+
* own, the generic board's name in `firmware`. */
|
|
39
|
+
const GenericFirmwareJson = object({
|
|
40
|
+
name: string(),
|
|
41
|
+
description: optional(string()),
|
|
42
|
+
firmware: string(),
|
|
43
|
+
});
|
|
37
44
|
/** An image name: what it leaves out (`no-ble`) or adds, joined with `+`. */
|
|
38
45
|
const IMAGE_NAME_RE = /^(no-)?[a-z0-9]+(\+(no-)?[a-z0-9]+)*$/;
|
|
39
46
|
/** The full image's folder in the board's, and its name for `--features`. */
|
|
@@ -112,18 +119,24 @@ export function firmwareExports(packageDir) {
|
|
|
112
119
|
}
|
|
113
120
|
return { entries, problems };
|
|
114
121
|
}
|
|
115
|
-
/**
|
|
116
|
-
|
|
122
|
+
/** A firmware.json's content, or why it can't be read. */
|
|
123
|
+
function readJson(file) {
|
|
117
124
|
if (!existsSync(file))
|
|
118
125
|
return { ok: false, message: `not built: ${file} does not exist` };
|
|
119
|
-
let json;
|
|
120
126
|
try {
|
|
121
|
-
|
|
127
|
+
return { ok: true, value: JSON.parse(readFileSync(file, 'utf8')) };
|
|
122
128
|
}
|
|
123
129
|
catch (e) {
|
|
124
130
|
return { ok: false, message: `${file} is not valid JSON: ${e.message}` };
|
|
125
131
|
}
|
|
126
|
-
|
|
132
|
+
}
|
|
133
|
+
/** Whether a firmware.json is a generic board's: no image, a `firmware` instead. */
|
|
134
|
+
function isGenericJson(json) {
|
|
135
|
+
return isObject(json) && Object.hasOwn(json, 'firmware');
|
|
136
|
+
}
|
|
137
|
+
/** `json` checked against `schema` and the board-name form, or why it isn't. */
|
|
138
|
+
function checkedJson(schema, json, file) {
|
|
139
|
+
const invalid = validate(schema, json, '');
|
|
127
140
|
if (invalid) {
|
|
128
141
|
const { message, path } = invalid.error;
|
|
129
142
|
return { ok: false, message: `${file}${path ? ` (${path.slice(1)})` : ''}: ${message}` };
|
|
@@ -135,16 +148,35 @@ export function readFirmwareJson(file) {
|
|
|
135
148
|
message: `${file}: "${value.name}" is not a board name (at most ${MAX_BOARD_NAME_LENGTH} characters, the form of a package name with an optional /<board>)`,
|
|
136
149
|
};
|
|
137
150
|
}
|
|
138
|
-
return {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
};
|
|
151
|
+
return { ok: true, value };
|
|
152
|
+
}
|
|
153
|
+
function imageJson(json, file) {
|
|
154
|
+
if (isGenericJson(json)) {
|
|
155
|
+
return { ok: false, message: `${file} is a board that runs a generic image, not an image` };
|
|
156
|
+
}
|
|
157
|
+
const read = checkedJson(FirmwareJson, json, file);
|
|
158
|
+
if (!read.ok)
|
|
159
|
+
return read;
|
|
160
|
+
const { name, description, chip, version, features } = read.value;
|
|
161
|
+
return { ok: true, value: { name, description, chip, version, features } };
|
|
162
|
+
}
|
|
163
|
+
function genericJson(json, file) {
|
|
164
|
+
const read = checkedJson(GenericFirmwareJson, json, file);
|
|
165
|
+
if (!read.ok)
|
|
166
|
+
return read;
|
|
167
|
+
const { name, description, firmware } = read.value;
|
|
168
|
+
return { ok: true, value: { name, description, firmware } };
|
|
169
|
+
}
|
|
170
|
+
/** What an image's firmware.json says, or why it can't describe an image. */
|
|
171
|
+
export function readFirmwareJson(file) {
|
|
172
|
+
const json = readJson(file);
|
|
173
|
+
return json.ok ? imageJson(json.value, file) : json;
|
|
174
|
+
}
|
|
175
|
+
/** What the firmware.json of a board that runs a generic image says, or why
|
|
176
|
+
* it isn't one. */
|
|
177
|
+
export function readGenericBoardJson(file) {
|
|
178
|
+
const json = readJson(file);
|
|
179
|
+
return json.ok ? genericJson(json.value, file) : json;
|
|
148
180
|
}
|
|
149
181
|
/** A board's other images: the folders beside its full image's `full/`
|
|
150
182
|
* folder, named like an image, that hold an image of the same board. */
|
|
@@ -168,25 +200,40 @@ function siblingImages(dir, name, chip) {
|
|
|
168
200
|
}
|
|
169
201
|
return images.sort((a, b) => a.name.localeCompare(b.name));
|
|
170
202
|
}
|
|
171
|
-
/** The boards a package declares
|
|
172
|
-
*
|
|
203
|
+
/** The boards a package declares: those with an image of their own in
|
|
204
|
+
* `boards`, those that run a generic image in `generic`, and the `firmware`
|
|
205
|
+
* exports that are neither (not built, or not a Mikro.js firmware.json). */
|
|
173
206
|
export function loadBoards(packageDir) {
|
|
174
207
|
const { entries, problems } = firmwareExports(packageDir);
|
|
175
|
-
const
|
|
176
|
-
const packageName = (
|
|
208
|
+
const pkg = readPackageJson(packageDir);
|
|
209
|
+
const packageName = (pkg.ok ? pkg.value.name : undefined) ?? packageDir;
|
|
177
210
|
const boards = [];
|
|
211
|
+
const generic = [];
|
|
178
212
|
for (const { key, specifier, file } of entries) {
|
|
179
|
-
const
|
|
180
|
-
if (
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
213
|
+
const json = readJson(file);
|
|
214
|
+
if (!json.ok) {
|
|
215
|
+
problems.push({ specifier, message: json.message });
|
|
216
|
+
}
|
|
217
|
+
else if (isGenericJson(json.value)) {
|
|
218
|
+
const read = genericJson(json.value, file);
|
|
219
|
+
if (read.ok)
|
|
220
|
+
generic.push({ ...read.value, specifier, key, packageName, packageDir });
|
|
221
|
+
else
|
|
222
|
+
problems.push({ specifier, message: read.message });
|
|
184
223
|
}
|
|
185
224
|
else {
|
|
186
|
-
|
|
225
|
+
const read = imageJson(json.value, file);
|
|
226
|
+
if (read.ok) {
|
|
227
|
+
const dir = dirname(file);
|
|
228
|
+
const images = siblingImages(dir, read.value.name, read.value.chip);
|
|
229
|
+
boards.push({ ...read.value, images, specifier, key, packageName, packageDir, dir });
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
problems.push({ specifier, message: read.message });
|
|
233
|
+
}
|
|
187
234
|
}
|
|
188
235
|
}
|
|
189
|
-
return { boards, problems };
|
|
236
|
+
return { boards, generic, problems };
|
|
190
237
|
}
|
|
191
238
|
/** Whether npm publishes `path` (relative to the package) under this `files`
|
|
192
239
|
* list. Glob entries are taken as covering it: they need npm's matcher. */
|
|
@@ -216,7 +263,7 @@ export function checkBoardPackage(packageDir) {
|
|
|
216
263
|
return [{ specifier: packageDir, message: read.message }];
|
|
217
264
|
const pkg = read.value;
|
|
218
265
|
const { entries } = firmwareExports(packageDir);
|
|
219
|
-
const { boards, problems } = loadBoards(packageDir);
|
|
266
|
+
const { boards, generic, problems } = loadBoards(packageDir);
|
|
220
267
|
const packageName = pkg.name ?? packageDir;
|
|
221
268
|
for (const { specifier, target, file } of entries) {
|
|
222
269
|
const inPackage = relative(packageDir, dirname(file));
|
|
@@ -257,7 +304,7 @@ export function checkBoardPackage(packageDir) {
|
|
|
257
304
|
}
|
|
258
305
|
}
|
|
259
306
|
const byName = new Map();
|
|
260
|
-
for (const board of boards) {
|
|
307
|
+
for (const board of [...boards, ...generic]) {
|
|
261
308
|
const other = byName.get(board.name);
|
|
262
309
|
if (other) {
|
|
263
310
|
problems.push({
|
|
@@ -301,6 +348,12 @@ export function sortImageName(name) {
|
|
|
301
348
|
.sort((a, b) => feature(a).localeCompare(feature(b)))
|
|
302
349
|
.join('+');
|
|
303
350
|
}
|
|
351
|
+
/** The generic boards, one per chip: the firmware a board on the generic
|
|
352
|
+
* firmware runs. */
|
|
353
|
+
const GENERIC_FIRMWARE = CHIPS.map((chip) => `${chip}-generic`);
|
|
354
|
+
function isGenericFirmware(name) {
|
|
355
|
+
return GENERIC_FIRMWARE.includes(name);
|
|
356
|
+
}
|
|
304
357
|
const DEFAULT_DIST = 'dist-fw';
|
|
305
358
|
const BOARD_KEYS = [
|
|
306
359
|
'chip',
|
|
@@ -312,6 +365,7 @@ const BOARD_KEYS = [
|
|
|
312
365
|
'project',
|
|
313
366
|
'images',
|
|
314
367
|
];
|
|
368
|
+
const GENERIC_BOARD_KEYS = ['firmware', 'name', 'description'];
|
|
315
369
|
/** `./<board>`: one segment, in the form of a board name's last part. */
|
|
316
370
|
const SUBPATH_RE = /^\.\/[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/;
|
|
317
371
|
function isStringArray(value) {
|
|
@@ -326,18 +380,21 @@ function exportsSnippet(boards) {
|
|
|
326
380
|
* and everything wrong with it: fields that don't check out, files it names
|
|
327
381
|
* that don't exist, names a device can't take, and `exports` that don't match
|
|
328
382
|
* (a board without its `firmware` export, one pointing elsewhere, or a
|
|
329
|
-
* `firmware` export the config doesn't have).
|
|
383
|
+
* `firmware` export the config doesn't have). Boards with an image of their own
|
|
384
|
+
* are in `boards`, boards that run a generic image in `generic`.
|
|
330
385
|
*/
|
|
331
386
|
export function checkBoardsConfig(packageDir, config) {
|
|
332
387
|
const read = readPackageJson(packageDir);
|
|
333
|
-
if (!read.ok)
|
|
334
|
-
return { boards: [], problems: [{ specifier: packageDir, message: read.message }] };
|
|
388
|
+
if (!read.ok) {
|
|
389
|
+
return { boards: [], generic: [], problems: [{ specifier: packageDir, message: read.message }] };
|
|
390
|
+
}
|
|
335
391
|
const pkg = read.value;
|
|
336
392
|
const packageName = pkg.name ?? packageDir;
|
|
337
393
|
const problems = [];
|
|
338
394
|
// Stops at a problem that leaves nothing to check, keeping the ones found so far
|
|
339
395
|
const fail = (message) => ({
|
|
340
396
|
boards: [],
|
|
397
|
+
generic: [],
|
|
341
398
|
problems: [...problems, { specifier: packageName, message }],
|
|
342
399
|
});
|
|
343
400
|
if (pkg.name === undefined)
|
|
@@ -367,6 +424,7 @@ export function checkBoardsConfig(packageDir, config) {
|
|
|
367
424
|
return fail('boards.config.ts: a package has one board at "." or boards at "./<board>", not both');
|
|
368
425
|
}
|
|
369
426
|
const boards = [];
|
|
427
|
+
const generic = [];
|
|
370
428
|
for (const [key, board] of Object.entries(config.boards)) {
|
|
371
429
|
const sub = key.slice(2);
|
|
372
430
|
const specifier = key === '.' ? packageName : `${packageName}/${sub}`;
|
|
@@ -380,20 +438,55 @@ export function checkBoardsConfig(packageDir, config) {
|
|
|
380
438
|
problem('expected an object');
|
|
381
439
|
continue;
|
|
382
440
|
}
|
|
441
|
+
const { name, description } = board;
|
|
442
|
+
if (name !== undefined && typeof name !== 'string')
|
|
443
|
+
problem('"name" must be a string');
|
|
444
|
+
if (description !== undefined && typeof description !== 'string') {
|
|
445
|
+
problem('"description" must be a string');
|
|
446
|
+
}
|
|
447
|
+
const boardName = typeof name === 'string' ? name : specifier;
|
|
448
|
+
if (!BOARD_NAME_RE.test(boardName) || boardName.length > MAX_BOARD_NAME_LENGTH) {
|
|
449
|
+
problem(`"${boardName}" is not a board name (at most ${MAX_BOARD_NAME_LENGTH} characters, the ` +
|
|
450
|
+
'form of a package name with an optional /<board>)' +
|
|
451
|
+
(typeof name === 'string' ? '' : '; set "name"'));
|
|
452
|
+
}
|
|
453
|
+
const target = `./${distPath}/${key === '.' ? '' : `${sub}/`}${FULL_IMAGE}/firmware.json`;
|
|
454
|
+
const boardDir = key === '.' ? distDir : join(distDir, sub);
|
|
455
|
+
const boardDescription = typeof description === 'string' ? description : pkg.description;
|
|
456
|
+
if (Object.hasOwn(board, 'firmware')) {
|
|
457
|
+
const { firmware } = board;
|
|
458
|
+
for (const field of Object.keys(board)) {
|
|
459
|
+
if (GENERIC_BOARD_KEYS.includes(field))
|
|
460
|
+
continue;
|
|
461
|
+
problem(BOARD_KEYS.includes(field)
|
|
462
|
+
? `a board that runs a generic image gets "${field}" from it; leave out "${field}"`
|
|
463
|
+
: `unknown field "${field}"`);
|
|
464
|
+
}
|
|
465
|
+
if (!isGenericFirmware(firmware)) {
|
|
466
|
+
problem(`"firmware" must be one of ${GENERIC_FIRMWARE.join(', ')}`);
|
|
467
|
+
continue;
|
|
468
|
+
}
|
|
469
|
+
generic.push({
|
|
470
|
+
key,
|
|
471
|
+
specifier,
|
|
472
|
+
name: boardName,
|
|
473
|
+
description: boardDescription,
|
|
474
|
+
firmware,
|
|
475
|
+
chip: CHIPS[GENERIC_FIRMWARE.indexOf(firmware)],
|
|
476
|
+
target,
|
|
477
|
+
boardDir,
|
|
478
|
+
});
|
|
479
|
+
continue;
|
|
480
|
+
}
|
|
383
481
|
for (const field of Object.keys(board)) {
|
|
384
482
|
if (!BOARD_KEYS.includes(field))
|
|
385
483
|
problem(`unknown field "${field}"`);
|
|
386
484
|
}
|
|
387
|
-
const { chip,
|
|
485
|
+
const { chip, sdkconfig, partitions, nativeModules, project, images } = board;
|
|
388
486
|
if (typeof chip !== 'string' || !chips.includes(chip)) {
|
|
389
487
|
problem(`"chip" must be one of ${chips.join(', ')}`);
|
|
390
488
|
continue;
|
|
391
489
|
}
|
|
392
|
-
if (name !== undefined && typeof name !== 'string')
|
|
393
|
-
problem('"name" must be a string');
|
|
394
|
-
if (description !== undefined && typeof description !== 'string') {
|
|
395
|
-
problem('"description" must be a string');
|
|
396
|
-
}
|
|
397
490
|
if (sdkconfig !== undefined && typeof sdkconfig !== 'string' && !isStringArray(sdkconfig)) {
|
|
398
491
|
problem('"sdkconfig" must be a path or a list of paths');
|
|
399
492
|
}
|
|
@@ -450,19 +543,11 @@ export function checkBoardsConfig(packageDir, config) {
|
|
|
450
543
|
if (!existsSync(resolve(packageDir, file)))
|
|
451
544
|
problem(`${file} does not exist`);
|
|
452
545
|
}
|
|
453
|
-
const boardName = typeof name === 'string' ? name : specifier;
|
|
454
|
-
if (!BOARD_NAME_RE.test(boardName) || boardName.length > MAX_BOARD_NAME_LENGTH) {
|
|
455
|
-
problem(`"${boardName}" is not a board name (at most ${MAX_BOARD_NAME_LENGTH} characters, the ` +
|
|
456
|
-
'form of a package name with an optional /<board>)' +
|
|
457
|
-
(typeof name === 'string' ? '' : '; set "name"'));
|
|
458
|
-
}
|
|
459
|
-
const target = `./${distPath}/${key === '.' ? '' : `${sub}/`}${FULL_IMAGE}/firmware.json`;
|
|
460
|
-
const boardDir = key === '.' ? distDir : join(distDir, sub);
|
|
461
546
|
boards.push({
|
|
462
547
|
key,
|
|
463
548
|
specifier,
|
|
464
549
|
name: boardName,
|
|
465
|
-
description:
|
|
550
|
+
description: boardDescription,
|
|
466
551
|
chip: chip,
|
|
467
552
|
sdkconfig: (typeof sdkconfig === 'string'
|
|
468
553
|
? [sdkconfig]
|
|
@@ -478,7 +563,7 @@ export function checkBoardsConfig(packageDir, config) {
|
|
|
478
563
|
});
|
|
479
564
|
}
|
|
480
565
|
const byName = new Map();
|
|
481
|
-
for (const board of boards) {
|
|
566
|
+
for (const board of [...boards, ...generic]) {
|
|
482
567
|
const other = byName.get(board.name);
|
|
483
568
|
if (other) {
|
|
484
569
|
problems.push({
|
|
@@ -491,7 +576,7 @@ export function checkBoardsConfig(packageDir, config) {
|
|
|
491
576
|
// The exports must declare exactly the configured boards, where the config
|
|
492
577
|
// puts their images.
|
|
493
578
|
const targets = firmwareTargets(pkg.exports);
|
|
494
|
-
const missing = boards.filter((board) => {
|
|
579
|
+
const missing = [...boards, ...generic].filter((board) => {
|
|
495
580
|
const target = targets.get(board.key);
|
|
496
581
|
return (typeof target !== 'string' ||
|
|
497
582
|
resolve(packageDir, target) !== resolve(packageDir, board.target));
|
|
@@ -519,6 +604,6 @@ export function checkBoardsConfig(packageDir, config) {
|
|
|
519
604
|
message: `add these to "exports" in package.json (next to any other conditions of the same export):\n${exportsSnippet(missing)}`,
|
|
520
605
|
});
|
|
521
606
|
}
|
|
522
|
-
return { boards, problems };
|
|
607
|
+
return { boards, generic, problems };
|
|
523
608
|
}
|
|
524
609
|
//# sourceMappingURL=boards.js.map
|
package/dist/boards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boards.js","sourceRoot":"","sources":["../src/boards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"boards.js","sourceRoot":"","sources":["../src/boards.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/** Chips the firmware supports (e.g. "esp32c6"): it has settings for each. */
|
|
2
|
-
declare const CHIPS: readonly ["esp32", "esp32c3", "esp32c5", "esp32c6", "esp32s3"];
|
|
2
|
+
export declare const CHIPS: readonly ["esp32", "esp32c3", "esp32c5", "esp32c6", "esp32s3"];
|
|
3
3
|
export type Chip = (typeof CHIPS)[number];
|
|
4
4
|
/** CHIPS as a plain list, to check a string against. */
|
|
5
5
|
export declare const chips: readonly string[];
|
|
6
|
-
export {};
|
|
7
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,eAAO,MAAM,KAAK,gEAAiE,CAAA;AACnF,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzC,wDAAwD;AACxD,eAAO,MAAM,KAAK,EAAE,SAAS,MAAM,EAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Chips the firmware supports (e.g. "esp32c6"): it has settings for each. */
|
|
2
|
-
const CHIPS = ['esp32', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32s3'];
|
|
2
|
+
export const CHIPS = ['esp32', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32s3'];
|
|
3
3
|
/** CHIPS as a plain list, to check a string against. */
|
|
4
|
-
export const chips = CHIPS;
|
|
4
|
+
export const chips = [...CHIPS];
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,CAAA;AAGnF,wDAAwD;AACxD,MAAM,CAAC,MAAM,KAAK,GAAsB,CAAC,GAAG,KAAK,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikrojs/firmware",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Mikro.js ESP32 firmware: ESP-IDF component, build tools, and project template",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"esp-idf",
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
"./package.json": "./package.json"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@mikrojs/native": "0.
|
|
60
|
-
"@mikrojs/quickjs": "0.
|
|
61
|
-
"@mikrojs/schema": "0.
|
|
59
|
+
"@mikrojs/native": "0.22.0",
|
|
60
|
+
"@mikrojs/quickjs": "0.22.0",
|
|
61
|
+
"@mikrojs/schema": "0.22.0",
|
|
62
62
|
"@optique/core": "^1.2.5",
|
|
63
63
|
"@optique/run": "^1.2.5",
|
|
64
64
|
"esbuild": "^0.28.2"
|