@camunda8/cli 2.7.0-alpha.5 → 2.7.0-alpha.6

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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AA2EH;;GAEG;AACH,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,GAAG,SAAS,CAMpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AA4EH;;GAEG;AACH,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,GAAG,SAAS,CAMpB"}
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ import { loadSessionState, resolveTenantId } from "./config.js";
17
17
  import { getLogger } from "./logger.js";
18
18
  import { executePluginCommand, loadInstalledPlugins } from "./plugin-loader.js";
19
19
  import { c8ctl } from "./runtime.js";
20
+ import { printUpdateNotification, startUpdateCheck } from "./update-check.js";
20
21
  /**
21
22
  * Type guard: extract a string value from parseArgs values, or undefined.
22
23
  * parseArgs with strict:false returns values typed as string | boolean | (string|boolean)[] | undefined.
@@ -89,6 +90,8 @@ Object.entries(COMMAND_REGISTRY)
89
90
  async function main() {
90
91
  // Load session state from disk at startup
91
92
  loadSessionState();
93
+ // Fire-and-forget: check for CLI updates in the background
94
+ startUpdateCheck(c8ctl.version);
92
95
  const { values, positionals } = parseCliArgs();
93
96
  // Initialize logger with current output mode from c8ctl runtime
94
97
  const logger = getLogger(c8ctl.outputMode);
@@ -254,7 +257,9 @@ async function main() {
254
257
  // Use realpathSync to resolve symlinks (e.g. when installed globally via npm link)
255
258
  try {
256
259
  if (realpathSync(process.argv[1]) === fileURLToPath(import.meta.url)) {
257
- main().catch((error) => {
260
+ main()
261
+ .then(() => printUpdateNotification())
262
+ .catch((error) => {
258
263
  if (c8ctl.verbose) {
259
264
  throw error;
260
265
  }
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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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Non-blocking CLI self-update notification.
3
+ *
4
+ * On every invocation a fire-and-forget fetch checks the npm registry for a
5
+ * newer version on the appropriate channel (latest or alpha, based on the
6
+ * running version). If one is found and hasn't been notified yet, an update
7
+ * notification is printed after the command completes.
8
+ *
9
+ * Timing strategy — "patient once per day":
10
+ * - Every invocation fires a background fetch immediately.
11
+ * - When the command finishes, if the fetch already resolved, use it (zero delay).
12
+ * - If the fetch is still pending:
13
+ * - Once per day ("patient" check): wait up to 5 seconds for it to complete.
14
+ * - All other times: abort immediately — zero post-command delay.
15
+ * - This means an offline user on an airplane sees at most one 5-second delay
16
+ * per day, and usually zero.
17
+ *
18
+ * Design constraints:
19
+ * - Zero extra dependencies (uses global fetch + node:fs)
20
+ * - Never delays command execution (fire-and-forget with AbortController)
21
+ * - Once-per-version notification (cache in the user data dir)
22
+ * - Notification output suppressed in JSON output mode; skipped entirely
23
+ * in CI environments (no fetch, no cache write)
24
+ */
25
+ /**
26
+ * Detect the npm dist-tag channel from the running version.
27
+ * Versions like "1.2.0-alpha.5" → "alpha", everything else → "latest".
28
+ */
29
+ export declare function detectChannel(version: string): string;
30
+ /**
31
+ * Naive semver comparison: returns true if `remote` is newer than `local`.
32
+ * Handles prerelease tags (alpha.N) by comparing the numeric suffix.
33
+ *
34
+ * Split on "." and "-" to get [major, minor, patch, preTag?, preNum?].
35
+ * Compare major.minor.patch first; if equal and both are prereleases,
36
+ * compare prerelease numbers. A stable release is always "newer" than
37
+ * a prerelease of the same major.minor.patch.
38
+ */
39
+ export declare function isNewer(local: string, remote: string): boolean;
40
+ /**
41
+ * Fetch the latest version for a given dist-tag from the npm registry.
42
+ * Returns undefined on any failure (offline, timeout, etc.).
43
+ */
44
+ export declare function fetchRemoteVersion(channel: string, signal?: AbortSignal): Promise<string | undefined>;
45
+ /**
46
+ * Start the non-blocking update check. Call this once at CLI startup.
47
+ * The result is stored internally and printed by `printUpdateNotification()`.
48
+ *
49
+ * The function is sync — it fires a background fetch and returns immediately.
50
+ */
51
+ export declare function startUpdateCheck(currentVersion: string): void;
52
+ /**
53
+ * Print the update notification if one was resolved.
54
+ * Call this after the main command has completed.
55
+ *
56
+ * Timing: if the fetch already resolved during command execution, use it
57
+ * immediately. If it's still pending, wait only if the last "patient" check
58
+ * was more than 24 hours ago. Otherwise, abort and return instantly.
59
+ *
60
+ * Suppressed in JSON output mode (returns immediately with no wait).
61
+ */
62
+ export declare function printUpdateNotification(): Promise<void>;
63
+ /**
64
+ * Reset internal state (for testing only).
65
+ */
66
+ export declare function _resetForTesting(): void;
67
+ //# sourceMappingURL=update-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA2BH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAqC9D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;AAoBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CA+C7D;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC7D;AAqBD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Non-blocking CLI self-update notification.
3
+ *
4
+ * On every invocation a fire-and-forget fetch checks the npm registry for a
5
+ * newer version on the appropriate channel (latest or alpha, based on the
6
+ * running version). If one is found and hasn't been notified yet, an update
7
+ * notification is printed after the command completes.
8
+ *
9
+ * Timing strategy — "patient once per day":
10
+ * - Every invocation fires a background fetch immediately.
11
+ * - When the command finishes, if the fetch already resolved, use it (zero delay).
12
+ * - If the fetch is still pending:
13
+ * - Once per day ("patient" check): wait up to 5 seconds for it to complete.
14
+ * - All other times: abort immediately — zero post-command delay.
15
+ * - This means an offline user on an airplane sees at most one 5-second delay
16
+ * per day, and usually zero.
17
+ *
18
+ * Design constraints:
19
+ * - Zero extra dependencies (uses global fetch + node:fs)
20
+ * - Never delays command execution (fire-and-forget with AbortController)
21
+ * - Once-per-version notification (cache in the user data dir)
22
+ * - Notification output suppressed in JSON output mode; skipped entirely
23
+ * in CI environments (no fetch, no cache write)
24
+ */
25
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
26
+ import { join } from "node:path";
27
+ import { getUserDataDir } from "./config.js";
28
+ import { isRecord } from "./logger.js";
29
+ import { c8ctl } from "./runtime.js";
30
+ /** npm registry metadata endpoint (returns JSON with dist-tags). */
31
+ const REGISTRY_URL = "https://registry.npmjs.org/@camunda8/cli";
32
+ /** Maximum time to wait for the registry fetch on a "patient" check (ms). */
33
+ const PATIENT_TIMEOUT_MS = 5000;
34
+ /** Interval between "patient" checks — once per day (ms). */
35
+ const PATIENT_INTERVAL_MS = 24 * 60 * 60 * 1000;
36
+ /** Cache file name inside the user data dir. */
37
+ const CACHE_FILE = "last-update-notification.json";
38
+ /**
39
+ * Detect the npm dist-tag channel from the running version.
40
+ * Versions like "1.2.0-alpha.5" → "alpha", everything else → "latest".
41
+ */
42
+ export function detectChannel(version) {
43
+ return version.includes("-alpha.") ? "alpha" : "latest";
44
+ }
45
+ /**
46
+ * Read the notification cache. Returns undefined if missing or corrupt.
47
+ */
48
+ function readCache() {
49
+ try {
50
+ const dir = getUserDataDir();
51
+ const filePath = join(dir, CACHE_FILE);
52
+ if (!existsSync(filePath))
53
+ return undefined;
54
+ const raw = JSON.parse(readFileSync(filePath, "utf-8"));
55
+ if (!isRecord(raw))
56
+ return undefined;
57
+ const cache = {};
58
+ if (typeof raw.notifiedVersion === "string")
59
+ cache.notifiedVersion = raw.notifiedVersion;
60
+ if (typeof raw.lastPatientCheck === "number")
61
+ cache.lastPatientCheck = raw.lastPatientCheck;
62
+ return cache;
63
+ }
64
+ catch {
65
+ return undefined;
66
+ }
67
+ }
68
+ /**
69
+ * Write the notification cache (records which version we last notified about).
70
+ */
71
+ function writeCache(cache) {
72
+ try {
73
+ const dir = getUserDataDir();
74
+ mkdirSync(dir, { recursive: true });
75
+ writeFileSync(join(dir, CACHE_FILE), JSON.stringify(cache), "utf-8");
76
+ }
77
+ catch {
78
+ // Best-effort — don't crash if the write fails
79
+ }
80
+ }
81
+ /**
82
+ * Naive semver comparison: returns true if `remote` is newer than `local`.
83
+ * Handles prerelease tags (alpha.N) by comparing the numeric suffix.
84
+ *
85
+ * Split on "." and "-" to get [major, minor, patch, preTag?, preNum?].
86
+ * Compare major.minor.patch first; if equal and both are prereleases,
87
+ * compare prerelease numbers. A stable release is always "newer" than
88
+ * a prerelease of the same major.minor.patch.
89
+ */
90
+ export function isNewer(local, remote) {
91
+ const parse = (v) => {
92
+ const [core, pre] = v.split("-", 2);
93
+ const parts = core.split(".").map(Number);
94
+ // Extract numeric suffix from prerelease tag like "alpha.5"
95
+ // Normalize NaN to undefined so comparisons don't silently break
96
+ const rawPreNum = pre ? Number(pre.split(".").pop()) : undefined;
97
+ const preNum = rawPreNum !== undefined && Number.isFinite(rawPreNum)
98
+ ? rawPreNum
99
+ : undefined;
100
+ return { major: parts[0], minor: parts[1], patch: parts[2], pre, preNum };
101
+ };
102
+ const l = parse(local);
103
+ const r = parse(remote);
104
+ // Compare major.minor.patch
105
+ if (r.major !== l.major)
106
+ return r.major > l.major;
107
+ if (r.minor !== l.minor)
108
+ return r.minor > l.minor;
109
+ if (r.patch !== l.patch)
110
+ return r.patch > l.patch;
111
+ // Same core version — compare prerelease
112
+ // No prerelease is "newer" than any prerelease (stable > alpha)
113
+ if (!r.pre && l.pre)
114
+ return true;
115
+ if (r.pre && !l.pre)
116
+ return false;
117
+ // Both prereleases — compare numeric suffix
118
+ if (r.preNum !== undefined &&
119
+ l.preNum !== undefined &&
120
+ r.preNum !== l.preNum) {
121
+ return r.preNum > l.preNum;
122
+ }
123
+ return false;
124
+ }
125
+ /**
126
+ * Fetch the latest version for a given dist-tag from the npm registry.
127
+ * Returns undefined on any failure (offline, timeout, etc.).
128
+ */
129
+ export async function fetchRemoteVersion(channel, signal) {
130
+ try {
131
+ const res = await fetch(REGISTRY_URL, { signal });
132
+ if (!res.ok)
133
+ return undefined;
134
+ const data = await res.json();
135
+ if (!isRecord(data))
136
+ return undefined;
137
+ const distTags = data["dist-tags"];
138
+ if (!isRecord(distTags))
139
+ return undefined;
140
+ const version = distTags[channel];
141
+ return typeof version === "string" ? version : undefined;
142
+ }
143
+ catch {
144
+ return undefined;
145
+ }
146
+ }
147
+ /**
148
+ * The resolved result of an update check.
149
+ * Stored on the module so the notification can be printed after the command.
150
+ */
151
+ let pendingNotification;
152
+ /**
153
+ * A reference to the background check promise (for testing).
154
+ */
155
+ let checkPromise;
156
+ /** Resolves once the background fetch settles (used by Promise.race). */
157
+ let fetchSettled;
158
+ let resolveFetchSettled;
159
+ /** AbortController for the background fetch — exposed so printUpdateNotification can cancel. */
160
+ let fetchController;
161
+ /**
162
+ * Start the non-blocking update check. Call this once at CLI startup.
163
+ * The result is stored internally and printed by `printUpdateNotification()`.
164
+ *
165
+ * The function is sync — it fires a background fetch and returns immediately.
166
+ */
167
+ export function startUpdateCheck(currentVersion) {
168
+ // Suppress in CI environments
169
+ if (process.env.CI)
170
+ return;
171
+ // Suppress for the development placeholder version
172
+ if (currentVersion === "0.0.0-semantically-released")
173
+ return;
174
+ const channel = detectChannel(currentVersion);
175
+ fetchController = new AbortController();
176
+ const timeoutId = setTimeout(() => fetchController?.abort(), PATIENT_TIMEOUT_MS);
177
+ // Create a settlement sentinel — avoids microtask ordering issues with a boolean flag
178
+ fetchSettled = new Promise((resolve) => {
179
+ resolveFetchSettled = () => resolve("settled");
180
+ });
181
+ checkPromise = fetchRemoteVersion(channel, fetchController.signal)
182
+ .then((remoteVersion) => {
183
+ if (!remoteVersion)
184
+ return;
185
+ if (!isNewer(currentVersion, remoteVersion))
186
+ return;
187
+ // Check once-per-version cache
188
+ const cache = readCache();
189
+ if (cache?.notifiedVersion === remoteVersion)
190
+ return;
191
+ // Store the notification for later printing (cache write deferred to print time
192
+ // so JSON-mode suppression doesn't poison the cache)
193
+ const installCmd = channel === "alpha"
194
+ ? "npm install -g @camunda8/cli@alpha"
195
+ : "npm install -g @camunda8/cli";
196
+ pendingNotification = {
197
+ message: `A newer version of c8ctl is available (${currentVersion} → ${remoteVersion}). Update with: ${installCmd}`,
198
+ version: remoteVersion,
199
+ };
200
+ })
201
+ .catch(() => {
202
+ // Swallow all errors — this is best-effort
203
+ })
204
+ .finally(() => {
205
+ resolveFetchSettled?.();
206
+ clearTimeout(timeoutId);
207
+ });
208
+ }
209
+ /**
210
+ * Print the update notification if one was resolved.
211
+ * Call this after the main command has completed.
212
+ *
213
+ * Timing: if the fetch already resolved during command execution, use it
214
+ * immediately. If it's still pending, wait only if the last "patient" check
215
+ * was more than 24 hours ago. Otherwise, abort and return instantly.
216
+ *
217
+ * Suppressed in JSON output mode (returns immediately with no wait).
218
+ */
219
+ export async function printUpdateNotification() {
220
+ // Suppress in JSON mode — don't wait or print, avoid delaying piped/automated usage
221
+ if (c8ctl.outputMode === "json") {
222
+ fetchController?.abort();
223
+ return;
224
+ }
225
+ if (checkPromise && fetchSettled) {
226
+ // Race the fetch settlement against an immediately-resolved sentinel.
227
+ // This avoids microtask ordering issues with a boolean flag.
228
+ const alreadyDone = (await Promise.race([fetchSettled, Promise.resolve("pending")])) ===
229
+ "settled";
230
+ if (alreadyDone) {
231
+ // Already done — no delay
232
+ await checkPromise;
233
+ }
234
+ else if (isPatientCheck()) {
235
+ // Patient check — wait up to PATIENT_TIMEOUT_MS for the fetch
236
+ await checkPromise;
237
+ persistPatientTimestamp();
238
+ }
239
+ else {
240
+ // Impatient — abort immediately, no post-command delay
241
+ fetchController?.abort();
242
+ return;
243
+ }
244
+ }
245
+ if (!pendingNotification)
246
+ return;
247
+ // Persist so we don't nag about this version again (deferred from background
248
+ // check so JSON-mode suppression doesn't write the cache prematurely)
249
+ const cache = readCache() ?? {};
250
+ writeCache({
251
+ ...cache,
252
+ notifiedVersion: pendingNotification.version,
253
+ });
254
+ console.log(`\n${pendingNotification.message}`);
255
+ }
256
+ /**
257
+ * Whether this invocation should be a "patient" check (wait for the fetch).
258
+ * Returns true if the last patient check was more than 24 hours ago.
259
+ */
260
+ function isPatientCheck() {
261
+ const cache = readCache();
262
+ const last = cache?.lastPatientCheck;
263
+ if (!last)
264
+ return true; // Never checked — be patient
265
+ return Date.now() - last >= PATIENT_INTERVAL_MS;
266
+ }
267
+ /**
268
+ * Record that a patient check happened now.
269
+ */
270
+ function persistPatientTimestamp() {
271
+ const cache = readCache() ?? {};
272
+ writeCache({ ...cache, lastPatientCheck: Date.now() });
273
+ }
274
+ /**
275
+ * Reset internal state (for testing only).
276
+ */
277
+ export function _resetForTesting() {
278
+ pendingNotification = undefined;
279
+ checkPromise = undefined;
280
+ fetchSettled = undefined;
281
+ resolveFetchSettled = undefined;
282
+ fetchController = undefined;
283
+ }
284
+ //# sourceMappingURL=update-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda8/cli",
3
- "version": "2.7.0-alpha.5",
3
+ "version": "2.7.0-alpha.6",
4
4
  "description": "Camunda 8 CLI - minimal-dependency CLI for Camunda 8 operations",
5
5
  "type": "module",
6
6
  "engines": {