@lizard-build/cli 0.3.39 → 0.3.40

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 (44) hide show
  1. package/dist/commands/git.js +7 -6
  2. package/dist/commands/git.js.map +1 -1
  3. package/dist/commands/login.js +5 -1
  4. package/dist/commands/login.js.map +1 -1
  5. package/dist/commands/logs.js +4 -1
  6. package/dist/commands/logs.js.map +1 -1
  7. package/dist/commands/redeploy.js +8 -6
  8. package/dist/commands/redeploy.js.map +1 -1
  9. package/dist/commands/secrets.js +5 -0
  10. package/dist/commands/secrets.js.map +1 -1
  11. package/dist/commands/ssh.js +24 -18
  12. package/dist/commands/ssh.js.map +1 -1
  13. package/dist/commands/up.js +26 -16
  14. package/dist/commands/up.js.map +1 -1
  15. package/dist/commands/upgrade.js +20 -1
  16. package/dist/commands/upgrade.js.map +1 -1
  17. package/dist/index.js +10 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/lib/api.d.ts +8 -2
  20. package/dist/lib/api.js +28 -5
  21. package/dist/lib/api.js.map +1 -1
  22. package/dist/lib/auth.d.ts +8 -1
  23. package/dist/lib/auth.js +33 -3
  24. package/dist/lib/auth.js.map +1 -1
  25. package/dist/lib/config.js +14 -2
  26. package/dist/lib/config.js.map +1 -1
  27. package/dist/lib/updater.d.ts +22 -4
  28. package/dist/lib/updater.js +137 -49
  29. package/dist/lib/updater.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/commands/git.ts +11 -6
  32. package/src/commands/login.ts +5 -0
  33. package/src/commands/logs.ts +12 -5
  34. package/src/commands/redeploy.ts +12 -6
  35. package/src/commands/secrets.ts +8 -0
  36. package/src/commands/ssh.ts +24 -25
  37. package/src/commands/up.ts +26 -17
  38. package/src/commands/upgrade.ts +21 -1
  39. package/src/index.ts +12 -1
  40. package/src/lib/api.ts +25 -4
  41. package/src/lib/auth.ts +33 -3
  42. package/src/lib/config.ts +13 -2
  43. package/src/lib/updater.ts +130 -45
  44. package/test/unit/config.test.ts +29 -0
@@ -1,6 +1,6 @@
1
1
  import chalk from "chalk";
2
2
  import { info, success, isJSONMode, printJSON } from "../lib/format.js";
3
- import { CURRENT_VERSION, getLatestVersion, selfUpdate } from "../lib/updater.js";
3
+ import { CURRENT_VERSION, getLatestVersion, selfUpdate, isStandaloneBinary } from "../lib/updater.js";
4
4
  export function registerUpgrade(program) {
5
5
  program
6
6
  .command("upgrade")
@@ -57,6 +57,25 @@ export function registerUpgrade(program) {
57
57
  info(chalk.dim(`Run \`lizard upgrade\` to install`));
58
58
  return;
59
59
  }
60
+ // npm install — self-replacing process.execPath would overwrite the
61
+ // user's node binary. Point at npm instead.
62
+ if (!isStandaloneBinary()) {
63
+ if (isJSONMode()) {
64
+ printJSON({
65
+ currentVersion: CURRENT_VERSION,
66
+ latestVersion: latest,
67
+ updateAvailable: true,
68
+ upgraded: false,
69
+ method: "npm",
70
+ hint: "npm install -g @lizard-build/cli@latest",
71
+ });
72
+ return;
73
+ }
74
+ info(`Update available: v${CURRENT_VERSION} → ${chalk.green("v" + latest)}`);
75
+ info(`This copy was installed via npm. Upgrade with:`);
76
+ info(` ${chalk.cyan("npm install -g @lizard-build/cli@latest")}`);
77
+ return;
78
+ }
60
79
  info(`Upgrading v${CURRENT_VERSION} → ${chalk.green("v" + latest)}...`);
61
80
  try {
62
81
  await selfUpdate((msg) => info(chalk.dim(msg)));
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import chalk from "chalk";
4
4
  import { setJSONMode, isJSONMode, error } from "./lib/format.js";
5
5
  import { requireAuth } from "./lib/auth.js";
6
6
  import { setBaseURL, setAccessToken, APIError } from "./lib/api.js";
7
- import { checkForUpdateInBackground, CURRENT_VERSION } from "./lib/updater.js";
7
+ import { checkForUpdateInBackground, runBackgroundUpdate, CURRENT_VERSION } from "./lib/updater.js";
8
8
  const BANNER = chalk.rgb(16, 185, 129)([
9
9
  "╔═══════════════════════════════════════════════════╗",
10
10
  "║ ║",
@@ -207,6 +207,12 @@ function dumpCommand(cmd) {
207
207
  };
208
208
  }
209
209
  async function main() {
210
+ // Hidden entry point: detached child spawned by checkForUpdateInBackground.
211
+ // Handled before commander so it never shows up in help or telemetry.
212
+ if (process.argv.includes("__lizard-update")) {
213
+ await runBackgroundUpdate();
214
+ process.exit(0);
215
+ }
210
216
  // Set JSON mode from argv *before* parseAsync so the catch block below
211
217
  // honors --json even when commander rejects before our preAction hook
212
218
  // fires (e.g. unknown command, malformed global flag). Non-TTY auto-mode
@@ -256,6 +262,9 @@ async function main() {
256
262
  }
257
263
  else {
258
264
  error(msg);
265
+ if (status === 401) {
266
+ process.stderr.write("Run `lizard login` to re-authenticate.\n");
267
+ }
259
268
  }
260
269
  // Exit codes derived from APIError.status (or tagged error codes), not message text
261
270
  const isAuth = status === 401 || status === 403 || code === "NOT_AUTHENTICATED";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lib/api.d.ts CHANGED
@@ -30,5 +30,11 @@ export declare const api: {
30
30
  patch: <T = any>(path: string, body?: unknown) => Promise<T>;
31
31
  delete: <T = any>(path: string) => Promise<T>;
32
32
  };
33
- /** Stream SSE and call handler for each data line. Return false to stop. */
34
- export declare function streamSSE(path: string, handler: (event: string, data: string) => boolean | void): Promise<void>;
33
+ /** Stream SSE and call handler for each data line. Return false to stop.
34
+ *
35
+ * `opts.idleTimeoutMs` — stop (resolve) when no *event* arrives for that
36
+ * long. Heartbeat comments don't reset the timer. Used by `--tail`-style
37
+ * snapshot reads that must not follow a live stream forever. */
38
+ export declare function streamSSE(path: string, handler: (event: string, data: string) => boolean | void, opts?: {
39
+ idleTimeoutMs?: number;
40
+ }): Promise<void>;
package/dist/lib/api.js CHANGED
@@ -88,8 +88,12 @@ export const api = {
88
88
  patch: (path, body) => request("PATCH", path, body),
89
89
  delete: (path) => request("DELETE", path),
90
90
  };
91
- /** Stream SSE and call handler for each data line. Return false to stop. */
92
- export function streamSSE(path, handler) {
91
+ /** Stream SSE and call handler for each data line. Return false to stop.
92
+ *
93
+ * `opts.idleTimeoutMs` — stop (resolve) when no *event* arrives for that
94
+ * long. Heartbeat comments don't reset the timer. Used by `--tail`-style
95
+ * snapshot reads that must not follow a live stream forever. */
96
+ export function streamSSE(path, handler, opts = {}) {
93
97
  return new Promise((resolve, reject) => {
94
98
  const url = new URL(baseURL + path);
95
99
  const token = _accessToken || getToken();
@@ -108,6 +112,21 @@ export function streamSSE(path, handler) {
108
112
  res.on("end", () => reject(new APIError(res.statusCode, `SSE failed: ${body}`)));
109
113
  return;
110
114
  }
115
+ let idleTimer;
116
+ const finish = () => {
117
+ if (idleTimer)
118
+ clearTimeout(idleTimer);
119
+ req.destroy();
120
+ resolve();
121
+ };
122
+ const armIdleTimer = () => {
123
+ if (!opts.idleTimeoutMs)
124
+ return;
125
+ if (idleTimer)
126
+ clearTimeout(idleTimer);
127
+ idleTimer = setTimeout(finish, opts.idleTimeoutMs);
128
+ };
129
+ armIdleTimer();
111
130
  let buffer = "";
112
131
  let currentEvent = "";
113
132
  let currentData = "";
@@ -120,10 +139,10 @@ export function streamSSE(path, handler) {
120
139
  const trimmed = line.replace(/\r$/, "");
121
140
  if (trimmed === "") {
122
141
  if (currentData) {
142
+ armIdleTimer();
123
143
  const cont = handler(currentEvent, currentData);
124
144
  if (cont === false) {
125
- req.destroy();
126
- resolve();
145
+ finish();
127
146
  return;
128
147
  }
129
148
  }
@@ -138,7 +157,11 @@ export function streamSSE(path, handler) {
138
157
  }
139
158
  }
140
159
  });
141
- res.on("end", resolve);
160
+ res.on("end", () => {
161
+ if (idleTimer)
162
+ clearTimeout(idleTimer);
163
+ resolve();
164
+ });
142
165
  res.on("error", reject);
143
166
  });
144
167
  req.on("error", reject);
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,14 @@ export declare function saveCredentials(creds: Credentials): void;
7
7
  export declare function clearCredentials(): void;
8
8
  export declare function isLoggedIn(): boolean;
9
9
  /**
10
- * Ensure the user is authenticated. If not logged in and TTY, auto-login.
10
+ * Expiry of a JWT in epoch-ms, decoded from the `exp` claim. Returns null
11
+ * for opaque/undecodable tokens — those are treated as valid and left for
12
+ * the server to reject.
13
+ */
14
+ export declare function jwtExpiryMs(token: string): number | null;
15
+ /**
16
+ * Ensure the user is authenticated. If not logged in (or the saved token
17
+ * has expired — there is no refresh endpoint) and TTY, auto-login.
11
18
  * Returns credentials or throws.
12
19
  */
13
20
  export declare function requireAuth(): Promise<Credentials>;
package/dist/lib/auth.js CHANGED
@@ -26,7 +26,32 @@ function isTTY() {
26
26
  return Boolean(process.stdout.isTTY);
27
27
  }
28
28
  /**
29
- * Ensure the user is authenticated. If not logged in and TTY, auto-login.
29
+ * Expiry of a JWT in epoch-ms, decoded from the `exp` claim. Returns null
30
+ * for opaque/undecodable tokens — those are treated as valid and left for
31
+ * the server to reject.
32
+ */
33
+ export function jwtExpiryMs(token) {
34
+ try {
35
+ const payload = token.split(".")[1];
36
+ if (!payload)
37
+ return null;
38
+ const decoded = JSON.parse(Buffer.from(payload, "base64url").toString("utf8"));
39
+ return typeof decoded.exp === "number" ? decoded.exp * 1000 : null;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ function isExpired(creds) {
46
+ const expMs = jwtExpiryMs(creds.accessToken) ??
47
+ (creds.expiresAt ? Date.parse(creds.expiresAt) : null);
48
+ if (expMs === null || Number.isNaN(expMs))
49
+ return false;
50
+ return Date.now() > expMs - 60_000; // 60s margin
51
+ }
52
+ /**
53
+ * Ensure the user is authenticated. If not logged in (or the saved token
54
+ * has expired — there is no refresh endpoint) and TTY, auto-login.
30
55
  * Returns credentials or throws.
31
56
  */
32
57
  export async function requireAuth() {
@@ -38,13 +63,18 @@ export async function requireAuth() {
38
63
  };
39
64
  }
40
65
  const creds = loadCredentials();
41
- if (creds)
66
+ if (creds && !isExpired(creds))
42
67
  return creds;
43
68
  if (!isTTY()) {
44
- const err = new Error("Not authenticated. Set LIZARD_TOKEN or run `lizard login` first.");
69
+ const err = new Error(creds
70
+ ? "Session expired. Run `lizard login` again or set LIZARD_TOKEN."
71
+ : "Not authenticated. Set LIZARD_TOKEN or run `lizard login` first.");
45
72
  err.code = "NOT_AUTHENTICATED";
46
73
  throw err;
47
74
  }
75
+ if (creds) {
76
+ process.stderr.write("Session expired — logging in again...\n");
77
+ }
48
78
  const { performLogin } = await import("../commands/login.js");
49
79
  return performLogin();
50
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,UAAU,EACV,UAAU,GAEX,MAAM,aAAa,CAAC;AAIrB,yDAAyD;AACzD,MAAM,UAAU,QAAQ;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC9D,OAAO,eAAe,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,EAAE,CAAC,WAAW,IAAI,IAAI,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,WAAW,CAAC;IAC1B,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,EAAE,KAAK,IAAI,CAAC;AAC7B,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;YACrC,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,kEAAkE,CACvC,CAAC;QAC9B,GAAG,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAC/B,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC9D,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,OAAO,CACnB,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAC5E,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,SAAS,GACb,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC5B,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;QACpB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAE/B,IAAI,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,15 @@ export function updateProjectLink(patch, cwd = process.cwd()) {
59
59
  const existing = getProjectLink(cwd);
60
60
  if (!existing)
61
61
  return;
62
- setProjectLink({ ...existing, ...patch }, cwd);
62
+ const merged = { ...existing, ...patch };
63
+ // An explicit serviceId/serviceName in the patch (including `undefined`,
64
+ // i.e. "clear it") must override the legacy mirror too — otherwise
65
+ // setProjectLink resurrects the old value from appId/appName.
66
+ if ("serviceId" in patch)
67
+ merged.appId = patch.serviceId;
68
+ if ("serviceName" in patch)
69
+ merged.appName = patch.serviceName;
70
+ setProjectLink(merged, cwd);
63
71
  }
64
72
  export function clearProjectLink(cwd = process.cwd()) {
65
73
  const config = loadConfig();
@@ -82,7 +90,11 @@ export async function resolveProjectId(flagValue) {
82
90
  }
83
91
  const { api } = await import("./api.js");
84
92
  const projects = await api.get("/api/projects");
85
- const match = projects.find((p) => p.id === flagValue || p.slug === flagValue || p.name === flagValue);
93
+ // Case-insensitive, matching `lizard link` / `lizard init` behaviour.
94
+ const lower = flagValue.toLowerCase();
95
+ const match = projects.find((p) => p.id.toLowerCase() === lower ||
96
+ p.slug?.toLowerCase() === lower ||
97
+ p.name?.toLowerCase() === lower);
86
98
  if (!match)
87
99
  throw new Error(`Project "${flagValue}" not found.`);
88
100
  return match.id;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C,4EAA4E;AAC5E,8EAA8E;AAC9E,yEAAyE;AACzE,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW;QAC5B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC;AACD,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAgCD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAW,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC9D,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACxD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO;QACL,GAAG,GAAG;QACN,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK;QACrC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,OAAO;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAiB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAC3E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,QAAQ,KAAK,EAAE,CAAC;IACvB,wCAAwC;IACxC,MAAM,UAAU,GAAgB;QAC9B,GAAG,IAAI;QACP,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK;QACnC,OAAO,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO;QACzC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK;QACvC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO;KAC9C,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IAClC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAA2B,EAC3B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;IACzC,yEAAyE;IACzE,mEAAmE;IACnE,8DAA8D;IAC9D,IAAI,WAAW,IAAI,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;IACzD,IAAI,aAAa,IAAI,KAAK;QAAE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;IAC/D,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC1D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,UAAU,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAkB;IACvD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,IAAI,IAAI,EAAE,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAoD,eAAe,CAAC,CAAC;IACnG,sEAAsE;IACtE,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK;QAC5B,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,KAAK;QAC/B,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,KAAK,CAClC,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,SAAS,cAAc,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,EAAE,CAAC;AAClB,CAAC"}
@@ -1,4 +1,10 @@
1
- export declare const CURRENT_VERSION = "0.3.39";
1
+ export declare const CURRENT_VERSION = "0.3.40";
2
+ /**
3
+ * True only when running as the Bun-compiled standalone binary. Under
4
+ * npm/node, `process.execPath` is the *node* executable — self-update would
5
+ * overwrite the user's Node.js install with the lizard binary.
6
+ */
7
+ export declare function isStandaloneBinary(): boolean;
2
8
  export type LatestVersionResult = {
3
9
  kind: "ok";
4
10
  version: string;
@@ -9,8 +15,20 @@ export type LatestVersionResult = {
9
15
  kind: "error";
10
16
  };
11
17
  export declare function getLatestVersion(): Promise<LatestVersionResult>;
18
+ export declare function isNewerVersion(latest: string, current: string): boolean;
12
19
  export declare function selfUpdate(onProgress?: (msg: string) => void): Promise<boolean>;
13
- /** Check for a newer version and auto-install it in the background.
14
- * Prints a one-line notice on exit either "Updated to vX.Y.Z" or nothing on failure.
15
- * Never blocks or crashes the current command. */
20
+ /**
21
+ * Kick off an update check without delaying the current command.
22
+ *
23
+ * The check+download runs in a *detached child process* (`lizard
24
+ * __lizard-update`): an in-process fetch would keep the event loop alive and
25
+ * make every command linger until GitHub answers. Checks are throttled via a
26
+ * stamp file (6h), disabled with LIZARD_NO_UPDATE/CI, and only run for the
27
+ * standalone binary — npm installs upgrade through npm.
28
+ */
16
29
  export declare function checkForUpdateInBackground(): void;
30
+ /**
31
+ * Body of the hidden `__lizard-update` command: check the latest release and
32
+ * install it, leaving a notice file for the next foreground run.
33
+ */
34
+ export declare function runBackgroundUpdate(): Promise<void>;
@@ -1,11 +1,14 @@
1
- import { createWriteStream, existsSync, renameSync, chmodSync } from "node:fs";
1
+ import { createWriteStream, existsSync, renameSync, chmodSync, unlinkSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
2
2
  import { pipeline } from "node:stream/promises";
3
3
  import { Readable } from "node:stream";
4
- import { tmpdir } from "node:os";
5
- import { join } from "node:path";
6
- export const CURRENT_VERSION = "0.3.39";
4
+ import { join, dirname } from "node:path";
5
+ import os from "node:os";
6
+ import { spawn } from "node:child_process";
7
+ export const CURRENT_VERSION = "0.3.40";
7
8
  const RELEASES_API = "https://api.github.com/repos/lizard-build/lizard-cli/releases/latest";
8
9
  const RELEASE_BASE = "https://github.com/lizard-build/lizard-cli/releases/latest/download";
10
+ /** Minimum gap between background update checks. */
11
+ const CHECK_INTERVAL_MS = 6 * 60 * 60 * 1000; // 6h
9
12
  function getBinaryName() {
10
13
  const os = process.platform;
11
14
  const arch = process.arch;
@@ -19,6 +22,21 @@ function getBinaryName() {
19
22
  return "lizard-linux-arm64";
20
23
  return null;
21
24
  }
25
+ /**
26
+ * True only when running as the Bun-compiled standalone binary. Under
27
+ * npm/node, `process.execPath` is the *node* executable — self-update would
28
+ * overwrite the user's Node.js install with the lizard binary.
29
+ */
30
+ export function isStandaloneBinary() {
31
+ return typeof globalThis.Bun !== "undefined";
32
+ }
33
+ function stateDir() {
34
+ return process.env.LIZARD_HOME
35
+ ? join(process.env.LIZARD_HOME, ".lizard")
36
+ : join(os.homedir(), ".lizard");
37
+ }
38
+ const checkStampFile = () => join(stateDir(), "update-check.json");
39
+ const updateNoticeFile = () => join(stateDir(), "update-notice.json");
22
40
  export async function getLatestVersion() {
23
41
  try {
24
42
  const res = await fetch(RELEASES_API, {
@@ -39,64 +57,134 @@ export async function getLatestVersion() {
39
57
  return { kind: "error" };
40
58
  }
41
59
  }
60
+ export function isNewerVersion(latest, current) {
61
+ const [maj, min, pat] = latest.split(".").map(Number);
62
+ const [cmaj, cmin, cpat] = current.split(".").map(Number);
63
+ if (![maj, min, pat, cmaj, cmin, cpat].every(Number.isFinite))
64
+ return false;
65
+ return maj > cmaj || (maj === cmaj && min > cmin) || (maj === cmaj && min === cmin && pat > cpat);
66
+ }
42
67
  export async function selfUpdate(onProgress) {
43
68
  const binaryName = getBinaryName();
44
69
  if (!binaryName)
45
70
  return false;
46
- // Find current executable path
71
+ // Refuse to replace anything that isn't the standalone lizard binary —
72
+ // under npm the execPath is the user's node executable.
73
+ if (!isStandaloneBinary())
74
+ return false;
47
75
  const currentBin = process.execPath;
48
76
  if (!existsSync(currentBin))
49
77
  return false;
50
78
  const url = `${RELEASE_BASE}/${binaryName}`;
51
- const tmp = join(tmpdir(), `lizard-update-${Date.now()}`);
79
+ // Download next to the target binary: rename() must stay on one filesystem
80
+ // (tmpdir is often tmpfs on Linux → EXDEV).
81
+ const tmp = join(dirname(currentBin), `.lizard-update-${process.pid}`);
52
82
  onProgress?.(`Downloading ${binaryName}...`);
53
- const res = await fetch(url, { signal: AbortSignal.timeout(60000) });
54
- if (!res.ok)
55
- throw new Error(`Download failed: ${res.status}`);
56
- const writer = createWriteStream(tmp);
57
- await pipeline(Readable.fromWeb(res.body), writer);
58
- chmodSync(tmp, 0o755);
59
- onProgress?.("Installing...");
60
- renameSync(tmp, currentBin);
61
- return true;
83
+ try {
84
+ const res = await fetch(url, { signal: AbortSignal.timeout(60000) });
85
+ if (!res.ok)
86
+ throw new Error(`Download failed: ${res.status}`);
87
+ const writer = createWriteStream(tmp);
88
+ await pipeline(Readable.fromWeb(res.body), writer);
89
+ chmodSync(tmp, 0o755);
90
+ onProgress?.("Installing...");
91
+ renameSync(tmp, currentBin);
92
+ return true;
93
+ }
94
+ catch (err) {
95
+ try {
96
+ unlinkSync(tmp);
97
+ }
98
+ catch { }
99
+ throw err;
100
+ }
62
101
  }
63
- /** Check for a newer version and auto-install it in the background.
64
- * Prints a one-line notice on exit — either "Updated to vX.Y.Z" or nothing on failure.
65
- * Never blocks or crashes the current command. */
102
+ function readJSON(file) {
103
+ try {
104
+ return JSON.parse(readFileSync(file, "utf8"));
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ }
110
+ function writeJSON(file, data) {
111
+ try {
112
+ mkdirSync(stateDir(), { recursive: true });
113
+ writeFileSync(file, JSON.stringify(data));
114
+ }
115
+ catch { }
116
+ }
117
+ function autoUpdateDisabled() {
118
+ return Boolean(process.env.LIZARD_NO_UPDATE || process.env.CI);
119
+ }
120
+ /** Print (once) the notice left behind by a completed background update. */
121
+ function flushUpdateNotice() {
122
+ const notice = readJSON(updateNoticeFile());
123
+ if (!notice?.to)
124
+ return;
125
+ try {
126
+ unlinkSync(updateNoticeFile());
127
+ }
128
+ catch { }
129
+ // We are already running the replaced binary, so notice.to should match.
130
+ if (notice.to === CURRENT_VERSION && notice.from !== CURRENT_VERSION) {
131
+ process.stderr.write(` lizard auto-updated: v${notice.from} → v${notice.to}\n`);
132
+ }
133
+ }
134
+ /**
135
+ * Kick off an update check without delaying the current command.
136
+ *
137
+ * The check+download runs in a *detached child process* (`lizard
138
+ * __lizard-update`): an in-process fetch would keep the event loop alive and
139
+ * make every command linger until GitHub answers. Checks are throttled via a
140
+ * stamp file (6h), disabled with LIZARD_NO_UPDATE/CI, and only run for the
141
+ * standalone binary — npm installs upgrade through npm.
142
+ */
66
143
  export function checkForUpdateInBackground() {
67
- // Only auto-update in TTY; skip CI / piped output
68
144
  if (!process.stdout.isTTY)
69
145
  return;
70
- let updateMessage = null;
71
- const promise = getLatestVersion().then(async (r) => {
72
- if (r.kind !== "ok")
73
- return;
74
- const latest = r.version;
75
- if (latest === CURRENT_VERSION)
76
- return;
77
- const [maj, min, pat] = latest.split(".").map(Number);
78
- const [cmaj, cmin, cpat] = CURRENT_VERSION.split(".").map(Number);
79
- const isNewer = maj > cmaj || (maj === cmaj && min > cmin) || (maj === cmaj && min === cmin && pat > cpat);
80
- if (!isNewer)
81
- return;
82
- try {
83
- const ok = await selfUpdate();
84
- if (ok) {
85
- updateMessage =
86
- `\n Updating lizard v${CURRENT_VERSION} → v${latest}...\n` +
87
- ` lizard updated to v${latest}\n`;
88
- }
89
- }
90
- catch {
91
- // silent — don't interrupt the current command
146
+ if (autoUpdateDisabled())
147
+ return;
148
+ flushUpdateNotice();
149
+ if (!isStandaloneBinary())
150
+ return;
151
+ const stamp = readJSON(checkStampFile());
152
+ if (stamp?.lastCheckAt && Date.now() - stamp.lastCheckAt < CHECK_INTERVAL_MS)
153
+ return;
154
+ // Stamp before spawning so parallel commands don't pile up children.
155
+ writeJSON(checkStampFile(), { lastCheckAt: Date.now(), lastVersion: CURRENT_VERSION });
156
+ try {
157
+ const child = spawn(process.execPath, ["__lizard-update"], {
158
+ detached: true,
159
+ stdio: "ignore",
160
+ });
161
+ child.unref();
162
+ }
163
+ catch {
164
+ // never break the actual command over an update check
165
+ }
166
+ }
167
+ /**
168
+ * Body of the hidden `__lizard-update` command: check the latest release and
169
+ * install it, leaving a notice file for the next foreground run.
170
+ */
171
+ export async function runBackgroundUpdate() {
172
+ if (autoUpdateDisabled() || !isStandaloneBinary())
173
+ return;
174
+ const r = await getLatestVersion();
175
+ writeJSON(checkStampFile(), { lastCheckAt: Date.now(), lastVersion: r.kind === "ok" ? r.version : CURRENT_VERSION });
176
+ if (r.kind !== "ok")
177
+ return;
178
+ if (!isNewerVersion(r.version, CURRENT_VERSION))
179
+ return;
180
+ try {
181
+ const ok = await selfUpdate();
182
+ if (ok) {
183
+ writeJSON(updateNoticeFile(), { from: CURRENT_VERSION, to: r.version, at: Date.now() });
92
184
  }
93
- }).catch(() => { });
94
- process.on("exit", () => {
95
- if (updateMessage)
96
- process.stderr.write(updateMessage);
97
- });
98
- // Don't block process exit
99
- if (typeof promise.unref === "function")
100
- promise.unref();
185
+ }
186
+ catch {
187
+ // silent — retried after the next throttle window
188
+ }
101
189
  }
102
190
  //# sourceMappingURL=updater.js.map