xs-dev 1.8.1 → 1.9.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xs-dev",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "CLI for automating the setup and usage of Moddable XS tools",
5
5
  "type": "module",
6
6
  "types": "build/types/types.d.ts",
@@ -20,9 +20,9 @@
20
20
  },
21
21
  "scripts": {
22
22
  "xs-dev": "tsx src/cli.ts",
23
- "xs-dev:debug": "DEBUG=* tsx --trace-deprecation src/cli.ts",
24
- "format": "prettier --write **/*.{js,ts,json}",
25
- "lint": "eslint src/",
23
+ "xs-dev:debug": "NODE_DEBUG=xs-dev* tsx --trace-deprecation src/cli.ts",
24
+ "format": "vp fmt **/**/*.{js,ts,json}",
25
+ "lint": "vp lint src/",
26
26
  "clean-build": "rm -rf ./build",
27
27
  "compile": "tsc -p .",
28
28
  "build": "pnpm run format && pnpm run lint && pnpm run clean-build && pnpm run compile",
@@ -70,7 +70,7 @@
70
70
  "node-liblzma": "^4.0.1"
71
71
  },
72
72
  "devDependencies": {
73
- "@astrojs/starlight": "^0.37.7",
73
+ "@astrojs/starlight": "^0.38.2",
74
74
  "@auto-it/all-contributors": "^11.2.1",
75
75
  "@auto-it/conventional-commits": "^11.2.1",
76
76
  "@auto-it/first-time-contributor": "^11.2.1",
@@ -82,37 +82,33 @@
82
82
  "@types/serve-handler": "^6.1.1",
83
83
  "@types/tar-fs": "^2.0.1",
84
84
  "@types/unzip-stream": "^0.3.1",
85
- "@typescript-eslint/eslint-plugin": "^8.1.0",
86
- "@typescript-eslint/parser": "^8.1.0",
85
+ "@typescript-eslint/eslint-plugin": "^8.57.2",
86
+ "@typescript-eslint/parser": "^8.57.2",
87
87
  "all-contributors-cli": "^6.26.1",
88
- "astro": "5.18.0",
88
+ "astro": "6.0.8",
89
89
  "auto": "^11.2.1",
90
- "eslint": "^8.57.0",
91
- "eslint-config-love": "^62.0.0",
92
- "eslint-config-prettier": "^8.3.0",
90
+ "eslint-config-love": "^151.0.0",
91
+ "eslint-config-prettier": "^10.1.8",
93
92
  "eslint-plugin-import": "^2.29.1",
94
93
  "eslint-plugin-node": "^11.1.0",
95
94
  "eslint-plugin-prettier": "^5.2.1",
96
95
  "eslint-plugin-promise": "^7.1.0",
97
- "prettier": "^3.3.3",
98
- "rollup": "^2.78.1",
99
96
  "solid-js": "^1.4.3",
100
97
  "tailwindcss": "^3.0.24",
101
98
  "ts-node": "^10.9.2",
102
99
  "tsx": "^4.19.2",
103
100
  "typescript": "^5.5.4",
104
- "typescript-eslint": "^8.1.0"
105
- },
106
- "prettier": {
107
- "semi": false,
108
- "singleQuote": true
101
+ "typescript-eslint": "^8.57.2",
102
+ "vite-plus": "latest"
109
103
  },
110
104
  "pnpm": {
111
105
  "overrides": {
112
106
  "semver@>=7.0.0 <7.5.2": ">=7.5.2",
113
107
  "ejs@<3.1.7": ">=3.1.7",
114
108
  "axios@>=0.8.1 <1.6.0": ">=1.6.0",
115
- "minimatch@<3.0.5": ">=3.0.5"
109
+ "minimatch@<3.0.5": ">=3.0.5",
110
+ "vite": "npm:@voidzero-dev/vite-plus-core@latest",
111
+ "vitest": "npm:@voidzero-dev/vite-plus-test@latest"
116
112
  },
117
113
  "onlyBuiltDependencies": [
118
114
  "@serialport/bindings-cpp",
@@ -11,7 +11,7 @@ const command = buildCommand({
11
11
  brief: 'Build project for release to target device',
12
12
  },
13
13
  async func(flags,
14
- // eslint-disable-next-line @typescript-eslint/no-inferrable-types
14
+ // oxlint-disable-next-line @typescript-eslint/no-inferrable-types
15
15
  projectPath = '.') {
16
16
  const currentPlatform = platformType().toLowerCase();
17
17
  const { device = currentPlatform, deploy = false, example, 'list-examples': listExamples = false, 'list-devices': listDevices = false, mode = process.env.NODE_ENV ?? 'development', output, port, config = [], } = flags;
@@ -11,7 +11,7 @@ const command = buildCommand({
11
11
  brief: 'Remove build artifacts for project',
12
12
  },
13
13
  async func(flags,
14
- // eslint-disable-next-line @typescript-eslint/no-inferrable-types
14
+ // oxlint-disable-next-line @typescript-eslint/no-inferrable-types
15
15
  projectPath = '.') {
16
16
  const currentPlatform = platformType().toLowerCase();
17
17
  const { device = currentPlatform, example, 'list-examples': listExamples = false, 'list-devices': listDevices = false, mode = process.env.NODE_ENV ?? 'development', output, config = [], } = flags;
@@ -11,7 +11,7 @@ const command = buildCommand({
11
11
  brief: 'Connect to running debugging session on target device or simulator',
12
12
  },
13
13
  async func(flags,
14
- // eslint-disable-next-line @typescript-eslint/no-inferrable-types
14
+ // oxlint-disable-next-line @typescript-eslint/no-inferrable-types
15
15
  projectPath = '.') {
16
16
  const currentPlatform = platformType().toLowerCase();
17
17
  const { device = currentPlatform, port, example, 'list-examples': listExamples = false, 'list-devices': listDevices = false, log = false, mode = process.env.NODE_ENV ?? 'development', output, } = flags;
@@ -10,7 +10,7 @@ const command = buildCommand({
10
10
  docs: {
11
11
  brief: 'Build and launch project on target device or simulator',
12
12
  },
13
- // eslint-disable-next-line @typescript-eslint/no-inferrable-types
13
+ // oxlint-disable-next-line @typescript-eslint/no-inferrable-types
14
14
  async func(flags, projectPath = '.') {
15
15
  const currentPlatform = platformType().toLowerCase();
16
16
  const { device = currentPlatform, example, 'list-examples': listExamples = false, 'list-devices': listDevices = false, log = false, mode = process.env.NODE_ENV ?? 'development', output, port, config = [], } = flags;
@@ -16,7 +16,7 @@ function parseEsptoolLines(lines) {
16
16
  state = 'deviceFound';
17
17
  }
18
18
  if (line.includes('failed to connect') && currentPort !== null) {
19
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
19
+ // oxlint-disable-next-line @typescript-eslint/no-dynamic-delete
20
20
  delete result[currentPort];
21
21
  currentPort = null;
22
22
  state = 'searching';
@@ -1,4 +1,4 @@
1
- import { mkdir, readdir, rm } from 'node:fs/promises';
1
+ import { chmod, mkdir, readdir, rm, symlink } from 'node:fs/promises';
2
2
  import { resolve, join } from 'node:path';
3
3
  import { debuglog } from 'node:util';
4
4
  import { execaCommand } from 'execa';
@@ -8,6 +8,8 @@ import { sourceEnvironment, which, execWithSudo } from '../system/exec.js';
8
8
  import { ensureHomebrew, formulaeExists } from '../setup/homebrew.js';
9
9
  import { isFailure } from '../system/errors.js';
10
10
  import { exists } from '../system/filesystem.js';
11
+ import { Octokit } from '@octokit/rest';
12
+ import { downloadReleaseTools } from '../setup/moddable.js';
11
13
  const debug = debuglog('xs-dev:toolchains:pico');
12
14
  async function* installMacDeps(prompter) {
13
15
  try {
@@ -84,26 +86,41 @@ async function* installLinuxDeps(_prompter) {
84
86
  };
85
87
  }
86
88
  }
89
+ const PICO_VERSION = '2.0.0';
90
+ const repos = {
91
+ PICO_SDK: {
92
+ branch: PICO_VERSION,
93
+ url: 'https://github.com/raspberrypi/pico-sdk',
94
+ },
95
+ PICO_EXTRAS: {
96
+ branch: `sdk-${PICO_VERSION}`,
97
+ url: 'https://github.com/raspberrypi/pico-extras',
98
+ },
99
+ PICO_EXAMPLES: {
100
+ branch: `sdk-${PICO_VERSION}`,
101
+ url: 'https://github.com/raspberrypi/pico-examples',
102
+ },
103
+ PICOTOOL: {
104
+ branch: PICO_VERSION,
105
+ url: 'https://github.com/raspberrypi/picotool',
106
+ },
107
+ PICO_SDK_TOOLS: {
108
+ branch: 'v2.0.0-5',
109
+ url: 'https://github.com/raspberrypi/pico-sdk-tools',
110
+ },
111
+ };
87
112
  export const picoToolchain = {
88
113
  name: 'pico',
89
- platforms: ['mac', 'lin', 'win'],
114
+ platforms: ['mac', 'lin'],
90
115
  async *install(ctx, prompter) {
91
116
  yield { type: 'step:start', message: 'Starting pico tooling setup' };
92
- const PICO_BRANCH = '2.0.0';
93
- const PICO_SDK_REPO = 'https://github.com/raspberrypi/pico-sdk';
94
- const PICO_EXTRAS_REPO = 'https://github.com/raspberrypi/pico-extras';
95
- const PICO_EXAMPLES_REPO = 'https://github.com/raspberrypi/pico-examples';
96
- const PICOTOOL_REPO = 'https://github.com/raspberrypi/picotool';
97
117
  const PICO_ROOT = process.env.PICO_ROOT ?? resolve(INSTALL_DIR, 'pico');
98
118
  const PICO_SDK_DIR = resolve(PICO_ROOT, 'pico-sdk');
99
119
  const PICO_EXTRAS_DIR = resolve(PICO_ROOT, 'pico-extras');
100
120
  const PICO_EXAMPLES_PATH = resolve(PICO_ROOT, 'pico-examples');
101
121
  const PICOTOOL_PATH = resolve(PICO_ROOT, 'picotool');
102
122
  const PICOTOOL_BUILD_DIR = resolve(PICOTOOL_PATH, 'build');
103
- const PICO_SDK_BUILD_DIR = resolve(PICO_SDK_DIR, 'build');
104
- const PIOASM_TOOL_PATH = resolve(PICO_SDK_DIR, 'tools', 'pioasm');
105
- const PIOASM_BUILD_PATH = resolve(PICO_SDK_BUILD_DIR, 'pioasm');
106
- const PIOASM_PATH = resolve(PIOASM_BUILD_PATH, 'pioasm');
123
+ const PIOASM_PATH = resolve(PICO_ROOT, 'pioasm', 'pioasm');
107
124
  await sourceEnvironment();
108
125
  try {
109
126
  debug('Ensuring pico directory');
@@ -154,18 +171,9 @@ export const picoToolchain = {
154
171
  }
155
172
  // 2. Install the pico sdk, extras, examples, and picotool:
156
173
  const gitDeps = [
157
- { branch: PICO_BRANCH, url: PICO_SDK_REPO, dest: PICO_SDK_DIR },
158
- {
159
- branch: `sdk-${PICO_BRANCH}`,
160
- url: PICO_EXTRAS_REPO,
161
- dest: PICO_EXTRAS_DIR,
162
- },
163
- {
164
- branch: `sdk-${PICO_BRANCH}`,
165
- url: PICO_EXAMPLES_REPO,
166
- dest: PICO_EXAMPLES_PATH,
167
- },
168
- { branch: PICO_BRANCH, url: PICOTOOL_REPO, dest: PICOTOOL_PATH },
174
+ { ...repos.PICO_SDK, dest: PICO_SDK_DIR },
175
+ { ...repos.PICO_EXTRAS, dest: PICO_EXTRAS_DIR },
176
+ { ...repos.PICO_EXAMPLES, dest: PICO_EXAMPLES_PATH },
169
177
  ];
170
178
  const clone = async ({ branch, url, dest, }) => {
171
179
  if (await exists(dest))
@@ -186,6 +194,63 @@ export const picoToolchain = {
186
194
  };
187
195
  return;
188
196
  }
197
+ // download pico-sdk-tools release
198
+ const octokit = new Octokit();
199
+ const { data: taggedRelease } = await octokit.rest.repos.getReleaseByTag({
200
+ owner: 'raspberrypi',
201
+ repo: 'pico-sdk-tools',
202
+ tag: repos.PICO_SDK_TOOLS.branch,
203
+ });
204
+ const assets = [
205
+ `pico-sdk-tools-${PICO_VERSION}`,
206
+ `picotool-${PICO_VERSION}`,
207
+ ].map((asset) => {
208
+ switch (ctx.platform) {
209
+ case 'mac':
210
+ return `${asset}-mac.zip`;
211
+ case 'win':
212
+ return `${asset}-x64-win.zip`;
213
+ case 'lin': {
214
+ if (ctx.arch === 'arm64')
215
+ return `${asset}-aarch64-lin.tar.gz`;
216
+ return `${asset}-x86_64-lin.tar.gz`;
217
+ }
218
+ default:
219
+ return 'N/A';
220
+ }
221
+ });
222
+ try {
223
+ debug('Downloading pico-sdk-tools');
224
+ await Promise.all(assets.map((assetName) => downloadReleaseTools({
225
+ writePath: PICO_ROOT,
226
+ assetName,
227
+ release: taggedRelease,
228
+ })));
229
+ debug('Downloaded pico-sdk-tools to PICO_ROOT');
230
+ const toolPaths = [
231
+ resolve(PICO_ROOT, 'pioasm', 'pioasm'),
232
+ resolve(PICO_ROOT, 'picotool', 'picotool'),
233
+ ];
234
+ await Promise.all(toolPaths.map((toolPath) => chmod(toolPath, 0o751)));
235
+ debug('Set executable permissions on tool binaries');
236
+ const symlinkDir = resolve(PICO_SDK_DIR, 'build', '_deps', 'picotool');
237
+ const symlinkPath = resolve(symlinkDir, 'picotool');
238
+ await mkdir(symlinkDir, { recursive: true });
239
+ await rm(symlinkPath, { force: true });
240
+ await symlink(resolve(PICO_ROOT, 'picotool', 'picotool'), symlinkPath);
241
+ debug('Created picotool compatibility symlink for Moddable make.pico.mk');
242
+ yield {
243
+ type: 'step:done',
244
+ message: 'Ending earlier to investigate results',
245
+ };
246
+ }
247
+ catch (error) {
248
+ yield {
249
+ type: 'step:fail',
250
+ message: `Unable to download pico-sdk-tools release assets: ${error instanceof Error ? error.message : 'Unknown'}`,
251
+ };
252
+ return;
253
+ }
189
254
  // 3. Set the PICO_SDK_PATH and related environment variables
190
255
  try {
191
256
  if (process.env.PICO_SDK_DIR === undefined) {
@@ -220,41 +285,6 @@ export const picoToolchain = {
220
285
  };
221
286
  return;
222
287
  }
223
- // 4. Build some pico tools:
224
- try {
225
- const shouldBuildPico = !(await exists(PICO_SDK_BUILD_DIR)) ||
226
- (await readdir(PICO_SDK_BUILD_DIR).catch(() => [])).length === 0;
227
- if (shouldBuildPico) {
228
- debug('Build some pico tools');
229
- await mkdir(PICO_SDK_BUILD_DIR, { recursive: true });
230
- await execaCommand('cmake ..', {
231
- shell: process.env.SHELL ?? '/bin/bash',
232
- cwd: PICO_SDK_BUILD_DIR,
233
- });
234
- await execaCommand('make', {
235
- shell: process.env.SHELL ?? '/bin/bash',
236
- cwd: PICO_SDK_BUILD_DIR,
237
- });
238
- // Build pioasm
239
- await mkdir(PIOASM_BUILD_PATH, { recursive: true });
240
- await execaCommand(`cmake ${PIOASM_TOOL_PATH}`, {
241
- shell: process.env.SHELL ?? '/bin/bash',
242
- cwd: PIOASM_BUILD_PATH,
243
- });
244
- await execaCommand('make', {
245
- shell: process.env.SHELL ?? '/bin/bash',
246
- cwd: PIOASM_BUILD_PATH,
247
- });
248
- debug('Pico tools built successfully');
249
- }
250
- }
251
- catch (error) {
252
- yield {
253
- type: 'step:fail',
254
- message: `Error building pico tools: ${String(error)}`,
255
- };
256
- return;
257
- }
258
288
  // 5. Build _the_ picotool
259
289
  try {
260
290
  if (process.env.PICO_SDK_PATH === undefined) {
@@ -273,8 +303,9 @@ export const picoToolchain = {
273
303
  else {
274
304
  debug(`Using existing $PIOASM: ${process.env.PIOASM}`);
275
305
  }
276
- const shouldBuildPicotool = !(await exists(PICOTOOL_BUILD_DIR)) ||
277
- (await readdir(PICOTOOL_BUILD_DIR).catch(() => [])).length === 0;
306
+ const shouldBuildPicotool = !(await exists(PICOTOOL_PATH)) ||
307
+ (await readdir(PICOTOOL_PATH).catch(() => [])).length === 0;
308
+ await upsert(EXPORTS_FILE_PATH, `export PATH="${PICOTOOL_PATH}:$PATH"`);
278
309
  if (shouldBuildPicotool) {
279
310
  debug('Build the picotool CLI');
280
311
  await mkdir(PICOTOOL_BUILD_DIR, { recursive: true });
@@ -286,7 +317,6 @@ export const picoToolchain = {
286
317
  shell: process.env.SHELL ?? '/bin/bash',
287
318
  cwd: PICOTOOL_BUILD_DIR,
288
319
  });
289
- await upsert(EXPORTS_FILE_PATH, `export PATH="${PICOTOOL_BUILD_DIR}:$PATH"`);
290
320
  debug('picotool CLI built successfully');
291
321
  }
292
322
  }
@@ -305,14 +335,11 @@ Then run: xs-dev run --example helloworld --device pico`,
305
335
  };
306
336
  },
307
337
  async *update(ctx, prompter) {
308
- const PICO_BRANCH = '2.0.0';
309
338
  const PICO_ROOT = process.env.PICO_ROOT ?? resolve(INSTALL_DIR, 'pico');
310
339
  const PICO_SDK_DIR = resolve(PICO_ROOT, 'pico-sdk');
311
340
  const PICO_EXTRAS_DIR = resolve(PICO_ROOT, 'pico-extras');
312
341
  const PICO_EXAMPLES_PATH = resolve(PICO_ROOT, 'pico-examples');
313
342
  const PICOTOOL_PATH = resolve(PICO_ROOT, 'picotool');
314
- const PICOTOOL_BUILD_DIR = resolve(PICOTOOL_PATH, 'build');
315
- const PICO_SDK_BUILD_DIR = resolve(PICO_SDK_DIR, 'build');
316
343
  await sourceEnvironment();
317
344
  yield { type: 'step:start', message: 'Starting pico tooling update' };
318
345
  debug('Ensuring pico toolchain directory');
@@ -366,7 +393,9 @@ Then run: xs-dev run --example helloworld --device pico`,
366
393
  if (await exists(PICO_SDK_DIR)) {
367
394
  debug('Updating pico-sdk repo');
368
395
  await execaCommand('git fetch --all --tags', { cwd: PICO_SDK_DIR });
369
- await execaCommand(`git checkout ${PICO_BRANCH}`, { cwd: PICO_SDK_DIR });
396
+ await execaCommand(`git checkout ${PICO_VERSION}`, {
397
+ cwd: PICO_SDK_DIR,
398
+ });
370
399
  await execaCommand('git submodule update --init --recursive', {
371
400
  cwd: PICO_SDK_DIR,
372
401
  });
@@ -375,7 +404,7 @@ Then run: xs-dev run --example helloworld --device pico`,
375
404
  if (await exists(PICO_EXTRAS_DIR)) {
376
405
  debug('Updating pico-extras repo');
377
406
  await execaCommand('git fetch --all --tags', { cwd: PICO_EXTRAS_DIR });
378
- await execaCommand(`git checkout sdk-${PICO_BRANCH}`, {
407
+ await execaCommand(`git checkout sdk-${PICO_VERSION}`, {
379
408
  cwd: PICO_EXTRAS_DIR,
380
409
  });
381
410
  debug('pico-extras repo updates');
@@ -385,41 +414,69 @@ Then run: xs-dev run --example helloworld --device pico`,
385
414
  await execaCommand('git fetch --all --tags', {
386
415
  cwd: PICO_EXAMPLES_PATH,
387
416
  });
388
- await execaCommand(`git checkout sdk-${PICO_BRANCH}`, {
417
+ await execaCommand(`git checkout sdk-${PICO_VERSION}`, {
389
418
  cwd: PICO_EXAMPLES_PATH,
390
419
  });
391
420
  debug('pico-examples repo updated');
392
421
  }
393
- if (await exists(PICOTOOL_PATH)) {
394
- debug('Updating picotool repo');
395
- await execaCommand('git fetch --all --tags', { cwd: PICOTOOL_PATH });
396
- await execaCommand('git checkout master', { cwd: PICOTOOL_PATH });
397
- debug('picotool repo updated');
398
- }
399
- // Build some pico tools:
400
- debug('Building pico tools');
401
- await mkdir(PICO_SDK_BUILD_DIR, { recursive: true });
402
- await execaCommand('cmake ..', {
403
- shell: process.env.SHELL,
404
- cwd: PICO_SDK_BUILD_DIR,
405
- });
406
- await execaCommand('make', {
407
- shell: process.env.SHELL,
408
- cwd: PICO_SDK_BUILD_DIR,
422
+ const octokit = new Octokit();
423
+ const { data: taggedRelease } = await octokit.rest.repos.getReleaseByTag({
424
+ owner: 'raspberrypi',
425
+ repo: 'pico-sdk-tools',
426
+ tag: repos.PICO_SDK_TOOLS.branch,
409
427
  });
410
- debug('pico tools rebuilt successfully');
411
- // Build _the_ picotool
412
- debug('Building the picotool CLI');
413
- await mkdir(PICOTOOL_BUILD_DIR, { recursive: true });
414
- await execaCommand('cmake ..', {
415
- shell: process.env.SHELL,
416
- cwd: PICOTOOL_BUILD_DIR,
417
- });
418
- await execaCommand('make', {
419
- shell: process.env.SHELL,
420
- cwd: PICOTOOL_BUILD_DIR,
428
+ const assets = [
429
+ `pico-sdk-tools-${PICO_VERSION}`,
430
+ `picotool-${PICO_VERSION}`,
431
+ ].map((asset) => {
432
+ switch (ctx.platform) {
433
+ case 'mac':
434
+ return `${asset}-mac.zip`;
435
+ case 'win':
436
+ return `${asset}-x64-win.zip`;
437
+ case 'lin': {
438
+ if (ctx.arch === 'arm64')
439
+ return `${asset}-aarch64-lin.tar.gz`;
440
+ return `${asset}-x86_64-lin.tar.gz`;
441
+ }
442
+ default:
443
+ return 'N/A';
444
+ }
421
445
  });
422
- debug('picotool CLI rebuilt successfully');
446
+ try {
447
+ debug('Downloading pico-sdk-tools');
448
+ // oxlint-disable-next-line @typescript-eslint/promise-function-async
449
+ await Promise.all(assets.map((assetName) => downloadReleaseTools({
450
+ writePath: PICO_ROOT,
451
+ assetName,
452
+ release: taggedRelease,
453
+ })));
454
+ debug('Downloaded pico-sdk-tools to PICO_ROOT');
455
+ const toolPaths = [
456
+ resolve(PICO_ROOT, 'pioasm', 'pioasm'),
457
+ resolve(PICO_ROOT, 'picotool', 'picotool'),
458
+ ];
459
+ // oxlint-disable-next-line @typescript-eslint/promise-function-async
460
+ await Promise.all(toolPaths.map((toolPath) => chmod(toolPath, 0o751)));
461
+ debug('Set executable permissions on tool binaries');
462
+ const symlinkDir = resolve(PICO_SDK_DIR, 'build', '_deps', 'picotool');
463
+ const symlinkPath = resolve(symlinkDir, 'picotool');
464
+ await mkdir(symlinkDir, { recursive: true });
465
+ await rm(symlinkPath, { force: true });
466
+ await symlink(resolve(PICO_ROOT, 'picotool', 'picotool'), symlinkPath);
467
+ debug('Created picotool compatibility symlink for Moddable make.pico.mk');
468
+ yield {
469
+ type: 'step:done',
470
+ message: 'Ending earlier to investigate results',
471
+ };
472
+ }
473
+ catch (error) {
474
+ yield {
475
+ type: 'step:fail',
476
+ message: `Unable to download pico-sdk-tools release assets: ${error instanceof Error ? error.message : 'Unknown'}`,
477
+ };
478
+ return;
479
+ }
423
480
  yield {
424
481
  type: 'step:done',
425
482
  message: `Successfully updated pico platform support for Moddable!
@@ -476,9 +533,10 @@ Then run: xs-dev run --example helloworld --device pico`,
476
533
  PICO_ROOT: resolve(INSTALL_DIR, 'pico'),
477
534
  PICO_SDK_PATH: resolve(INSTALL_DIR, 'pico', 'pico-sdk'),
478
535
  PICO_SDK_DIR: resolve(INSTALL_DIR, 'pico', 'pico-sdk'),
479
- PIOASM: resolve(INSTALL_DIR, 'pico', 'pico-sdk', 'build', 'pioasm', 'pioasm'),
536
+ PIOASM: resolve(INSTALL_DIR, 'pico', 'pioasm', 'pioasm'),
537
+ UF2CONV: resolve(INSTALL_DIR, 'pico', 'picotool', 'picotool'),
480
538
  PICO_GCC_ROOT: process.env.PICO_GCC_ROOT ?? defaultGccRoot,
481
539
  };
482
540
  },
483
541
  };
484
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3Rvb2xjaGFpbnMvcGljby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3RFLE9BQU8sTUFBTSxNQUFNLHVCQUF1QixDQUFBO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBS2hELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0FBRWhELEtBQUssU0FBUyxDQUFDLENBQUMsY0FBYyxDQUM1QixRQUFrQjtJQUVsQixJQUFJLENBQUM7UUFDSCxJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxNQUFNLEtBQUssQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztRQUN4QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNO2dC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
542
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3Rvb2xjaGFpbnMvcGljby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDdEUsT0FBTyxNQUFNLE1BQU0sdUJBQXVCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFJaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUUzRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtBQUVoRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLGNBQWMsQ0FDNUIsUUFBa0I7SUFFbEIsSUFBSSxDQUFDO1FBQ0gsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbkQsTUFB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
@@ -0,0 +1,9 @@
1
+ import { defineCollection } from 'astro:content'
2
+ import { glob } from 'astro/loaders'
3
+ import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'
4
+ import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'
5
+
6
+ export const collections = {
7
+ docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),
8
+ i18n: defineCollection({ loader: i18nLoader(), schema: i18nSchema() }),
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xs-dev",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "CLI for automating the setup and usage of Moddable XS tools",
5
5
  "type": "module",
6
6
  "types": "build/types/types.d.ts",
@@ -20,9 +20,9 @@
20
20
  },
21
21
  "scripts": {
22
22
  "xs-dev": "tsx src/cli.ts",
23
- "xs-dev:debug": "DEBUG=* tsx --trace-deprecation src/cli.ts",
24
- "format": "prettier --write **/*.{js,ts,json}",
25
- "lint": "eslint src/",
23
+ "xs-dev:debug": "NODE_DEBUG=xs-dev* tsx --trace-deprecation src/cli.ts",
24
+ "format": "vp fmt **/**/*.{js,ts,json}",
25
+ "lint": "vp lint src/",
26
26
  "clean-build": "rm -rf ./build",
27
27
  "compile": "tsc -p .",
28
28
  "build": "pnpm run format && pnpm run lint && pnpm run clean-build && pnpm run compile",
@@ -70,7 +70,7 @@
70
70
  "node-liblzma": "^4.0.1"
71
71
  },
72
72
  "devDependencies": {
73
- "@astrojs/starlight": "^0.37.7",
73
+ "@astrojs/starlight": "^0.38.2",
74
74
  "@auto-it/all-contributors": "^11.2.1",
75
75
  "@auto-it/conventional-commits": "^11.2.1",
76
76
  "@auto-it/first-time-contributor": "^11.2.1",
@@ -82,37 +82,33 @@
82
82
  "@types/serve-handler": "^6.1.1",
83
83
  "@types/tar-fs": "^2.0.1",
84
84
  "@types/unzip-stream": "^0.3.1",
85
- "@typescript-eslint/eslint-plugin": "^8.1.0",
86
- "@typescript-eslint/parser": "^8.1.0",
85
+ "@typescript-eslint/eslint-plugin": "^8.57.2",
86
+ "@typescript-eslint/parser": "^8.57.2",
87
87
  "all-contributors-cli": "^6.26.1",
88
- "astro": "5.18.0",
88
+ "astro": "6.0.8",
89
89
  "auto": "^11.2.1",
90
- "eslint": "^8.57.0",
91
- "eslint-config-love": "^62.0.0",
92
- "eslint-config-prettier": "^8.3.0",
90
+ "eslint-config-love": "^151.0.0",
91
+ "eslint-config-prettier": "^10.1.8",
93
92
  "eslint-plugin-import": "^2.29.1",
94
93
  "eslint-plugin-node": "^11.1.0",
95
94
  "eslint-plugin-prettier": "^5.2.1",
96
95
  "eslint-plugin-promise": "^7.1.0",
97
- "prettier": "^3.3.3",
98
- "rollup": "^2.78.1",
99
96
  "solid-js": "^1.4.3",
100
97
  "tailwindcss": "^3.0.24",
101
98
  "ts-node": "^10.9.2",
102
99
  "tsx": "^4.19.2",
103
100
  "typescript": "^5.5.4",
104
- "typescript-eslint": "^8.1.0"
105
- },
106
- "prettier": {
107
- "semi": false,
108
- "singleQuote": true
101
+ "typescript-eslint": "^8.57.2",
102
+ "vite-plus": "latest"
109
103
  },
110
104
  "pnpm": {
111
105
  "overrides": {
112
106
  "semver@>=7.0.0 <7.5.2": ">=7.5.2",
113
107
  "ejs@<3.1.7": ">=3.1.7",
114
108
  "axios@>=0.8.1 <1.6.0": ">=1.6.0",
115
- "minimatch@<3.0.5": ">=3.0.5"
109
+ "minimatch@<3.0.5": ">=3.0.5",
110
+ "vite": "npm:@voidzero-dev/vite-plus-core@latest",
111
+ "vitest": "npm:@voidzero-dev/vite-plus-test@latest"
116
112
  },
117
113
  "onlyBuiltDependencies": [
118
114
  "@serialport/bindings-cpp",
@@ -1,7 +0,0 @@
1
- import { defineCollection } from 'astro:content'
2
- import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'
3
-
4
- export const collections = {
5
- docs: defineCollection({ schema: docsSchema() }),
6
- i18n: defineCollection({ type: 'data', schema: i18nSchema() }),
7
- }