@frontera-sdk/cli 1.53.18 → 1.53.20

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontera-sdk/cli",
3
- "version": "1.53.18",
3
+ "version": "1.53.20",
4
4
  "description": "The frontera CLI — scaffold, pull, save and deploy Frontera apps and automations.",
5
5
  "keywords": [
6
6
  "frontera",
@@ -31,7 +31,7 @@
31
31
  }
32
32
  },
33
33
  "scripts": {
34
- "test": "bun test",
34
+ "test": "bun test --parallel",
35
35
  "typecheck": "../../node_modules/typescript7/bin/tsc --noEmit",
36
36
  "sync:sdk": "bun run scripts/sync-sdk.ts",
37
37
  "sync:kit": "bun run scripts/sync-kit.ts",
@@ -40,8 +40,8 @@
40
40
  "dependencies": {
41
41
  "@anthropic-ai/claude-agent-sdk": "^0.3.251",
42
42
  "@faker-js/faker": "10.6.0",
43
- "@frontera-sdk/core": "1.53.18",
44
- "@frontera-sdk/functions": "1.53.18",
43
+ "@frontera-sdk/core": "1.53.20",
44
+ "@frontera-sdk/functions": "1.53.20",
45
45
  "ai": "^6.0.319",
46
46
  "axe-core": "4.12.1",
47
47
  "gray-matter": "^4.0.3",
@@ -49,7 +49,7 @@
49
49
  "yaml": "^2.9.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@frontera-sdk/forge-contracts": "1.53.18",
52
+ "@frontera-sdk/forge-contracts": "1.53.20",
53
53
  "@types/bun": "^1.3.14",
54
54
  "typescript": "^5.9.3"
55
55
  }
@@ -43,8 +43,9 @@ export function appPort(raw: string | undefined): number {
43
43
  async function waitForApp(origin: string, process: Bun.Subprocess): Promise<void> {
44
44
  const deadline = Date.now() + READY_TIMEOUT_MS
45
45
  while (Date.now() < deadline) {
46
- if (process.exitCode !== null) {
47
- throw new CliError(`App dev server exited with code ${process.exitCode}`, {
46
+ // A server killed by a signal (Ctrl+C, a group TERM) has a signalCode and no exitCode.
47
+ if (process.exitCode !== null || process.signalCode !== null) {
48
+ throw new CliError(`App dev server exited with ${process.signalCode ?? `code ${process.exitCode}`}`, {
48
49
  code: 'FAILURE',
49
50
  hint: 'run `bun run dev` directly to inspect the framework error',
50
51
  })
@@ -321,7 +322,8 @@ export const appDev: Command = {
321
322
  forgetDevServer(home, project.slug, process.pid)
322
323
  stop()
323
324
  // Once the framework's server has exited (or after a while, whatever it does), what it wrote goes back.
324
- await Promise.race([child.exited, Bun.sleep(STOP_WAIT_MS)])
325
+ // Unref'd: a pending wait would hold this process open for the whole STOP_WAIT_MS after the server exited.
326
+ await Promise.race([child.exited, new Promise((resolve) => setTimeout(resolve, STOP_WAIT_MS).unref())])
325
327
  const { putBack, left } = kept.atStop()
326
328
  for (const line of [putBackLine(putBack, 'stopped'), leftLine(left)]) if (line) ctx.output.note(`[dev] ${line}`)
327
329
  if (aside) ctx.output.note(`[dev] ${aside.restore()}`)