@dreamdata_io/verify-tracking 0.1.1 → 0.1.3

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/dist/cli.js CHANGED
@@ -4,6 +4,7 @@ import * as clack from "@clack/prompts";
4
4
  import { resolveCliPresetTemplate } from "./ai/cli-presets.js";
5
5
  import { DEFAULT_AI_TIMEOUT_MS, DEFAULT_TIMEOUT_MS, isPhaseName, resolveAiTimeoutMs, resolveApiKey, resolveBackendType, resolveBaseUrl, resolveCliCmd, resolveCliPreset, resolveModel, resolvePhases, resolveTrackingHosts, } from "./config/env.js";
6
6
  import { browserPreflightError, claudeAuthPreflightError, cliBackendPreflightError } from "./config/preflight.js";
7
+ import { updateNotice } from "./config/update-check.js";
7
8
  import { USER_CONFIG_PATH, loadUserConfig } from "./config/user-config.js";
8
9
  import { isValidHttpUrl, promptForUrl } from "./interactive/prompt.js";
9
10
  import { renderPhaseDetail, renderTextReport } from "./report/render.js";
@@ -117,6 +118,9 @@ Consent states
117
118
  than a hosted one for the same prompt.
118
119
  --debug Verbose logging (never logs secrets)
119
120
  --help Show this help
121
+
122
+ Checks npm once a day for a newer release and prints a notice at the end of
123
+ the run if one exists. Set VERIFY_TRACKING_NO_UPDATE_CHECK=1 to disable.
120
124
  `;
121
125
  function parsePhaseList(raw) {
122
126
  const names = (raw ?? "").split(",").map((name) => name.trim()).filter(Boolean);
@@ -265,8 +269,15 @@ async function main() {
265
269
  // answer on a machine with no browser installed — the preflight is about the
266
270
  // run, not about printing text.
267
271
  const flags = parseArgs(process.argv.slice(2));
272
+ // Started here rather than awaited here: a registry lookup can take up to
273
+ // 1.5s, and starting it before the minutes of browser and AI work means it
274
+ // is almost always already settled by the time a run finishes and this is
275
+ // printed. Started after parseArgs, not before, so --help/--version/an
276
+ // invalid flag — all of which exit inside parseArgs — never trigger it.
277
+ const updateCheck = updateNotice();
268
278
  if (flags.dashboard) {
269
279
  await refreshDashboard(flags, { announceEmpty: true });
280
+ await printUpdateNotice(updateCheck);
270
281
  process.exit(0);
271
282
  }
272
283
  const preflight = browserPreflightError();
@@ -360,8 +371,21 @@ async function main() {
360
371
  // and a dashboard that could not be written must not change the verdict.
361
372
  await refreshDashboard(flags, { announceEmpty: false });
362
373
  }
374
+ await printUpdateNotice(updateCheck);
363
375
  process.exit(result.overallPass ? 0 : 1);
364
376
  }
377
+ /**
378
+ * Prints the update notice, if any, to stderr — never stdout, which for
379
+ * `--format json`/`markdown` is a machine-readable payload a trailing line of
380
+ * prose would corrupt.
381
+ */
382
+ async function printUpdateNotice(pending) {
383
+ const notice = await pending;
384
+ if (!notice)
385
+ return;
386
+ console.error("");
387
+ console.error(notice);
388
+ }
365
389
  /**
366
390
  * Rebuild the single-file dashboard from whatever is saved, and hand it to a
367
391
  * browser unless asked not to. Both callers want the path printed; only
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import { INSTALLER_ONE_LINER } from "./preflight.js";
5
+ import { VERSION } from "../version.js";
6
+ const PACKAGE_NAME = "@dreamdata_io/verify-tracking";
7
+ const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
8
+ /**
9
+ * Where the last lookup is cached, so a run does not hit the registry every
10
+ * time — most runs are minutes apart and the published version does not
11
+ * change that often.
12
+ */
13
+ export const UPDATE_CHECK_CACHE_PATH = join(homedir(), ".config", "verify-tracking", "update-check.json");
14
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
15
+ const FETCH_TIMEOUT_MS = 1500;
16
+ function readCache(path) {
17
+ try {
18
+ if (!existsSync(path))
19
+ return null;
20
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
21
+ if (typeof parsed?.checkedAt === "number" && typeof parsed?.latest === "string")
22
+ return parsed;
23
+ return null;
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ function writeCache(path, cache) {
30
+ try {
31
+ mkdirSync(dirname(path), { recursive: true });
32
+ writeFileSync(path, JSON.stringify(cache), "utf8");
33
+ }
34
+ catch {
35
+ // Caching is an optimization, not a requirement — a read-only home
36
+ // directory must not break the check, only make it run every time.
37
+ }
38
+ }
39
+ /** Parses "1.2.3" (ignoring any pre-release/build suffix) into its numeric parts. */
40
+ function parseVersion(raw) {
41
+ const match = /^(\d+)\.(\d+)\.(\d+)/.exec(raw.trim());
42
+ if (!match)
43
+ return null;
44
+ return [Number(match[1]), Number(match[2]), Number(match[3])];
45
+ }
46
+ /** Whether `latest` is strictly newer than `current`, by major.minor.patch. */
47
+ export function isNewerVersion(current, latest) {
48
+ const a = parseVersion(current);
49
+ const b = parseVersion(latest);
50
+ if (!a || !b)
51
+ return false;
52
+ for (let i = 0; i < 3; i++) {
53
+ if (b[i] !== a[i])
54
+ return b[i] > a[i];
55
+ }
56
+ return false;
57
+ }
58
+ async function fetchLatestVersion(timeoutMs) {
59
+ const controller = new AbortController();
60
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
61
+ try {
62
+ const res = await fetch(REGISTRY_URL, { signal: controller.signal });
63
+ if (!res.ok)
64
+ return null;
65
+ const body = (await res.json());
66
+ return typeof body.version === "string" ? body.version : null;
67
+ }
68
+ catch {
69
+ // Offline, registry unreachable, or timed out — this is a courtesy
70
+ // lookup, and none of those should be able to fail or slow down a run.
71
+ return null;
72
+ }
73
+ finally {
74
+ clearTimeout(timer);
75
+ }
76
+ }
77
+ /**
78
+ * The latest published version, from a cached lookup that is at most a day
79
+ * old. Falls back to a stale cache entry (rather than null) when a fresh
80
+ * lookup fails, so a genuinely offline stretch does not read as "up to
81
+ * date" the moment the network drops.
82
+ */
83
+ export async function fetchLatestVersionCached(options = {}) {
84
+ const cachePath = options.cachePath ?? UPDATE_CHECK_CACHE_PATH;
85
+ const intervalMs = options.intervalMs ?? CHECK_INTERVAL_MS;
86
+ const cached = readCache(cachePath);
87
+ if (cached && Date.now() - cached.checkedAt < intervalMs)
88
+ return cached.latest;
89
+ const latest = await fetchLatestVersion(options.timeoutMs ?? FETCH_TIMEOUT_MS);
90
+ if (latest) {
91
+ writeCache(cachePath, { checkedAt: Date.now(), latest });
92
+ return latest;
93
+ }
94
+ return cached?.latest ?? null;
95
+ }
96
+ /**
97
+ * The notice to print when a newer version is on the registry, or null when
98
+ * there is nothing to say — up to date, opted out, or the lookup could not
99
+ * complete. Never throws.
100
+ */
101
+ export async function updateNotice(options = {}) {
102
+ if (process.env.VERIFY_TRACKING_NO_UPDATE_CHECK)
103
+ return null;
104
+ const currentVersion = options.currentVersion ?? VERSION;
105
+ let latest;
106
+ try {
107
+ latest = await fetchLatestVersionCached(options);
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ if (!latest || !isNewerVersion(currentVersion, latest))
113
+ return null;
114
+ return [
115
+ `A new version of verify-tracking is available: ${currentVersion} → ${latest}.`,
116
+ `Update with: ${INSTALLER_ONE_LINER}`,
117
+ ].join("\n");
118
+ }
119
+ //# sourceMappingURL=update-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/config/update-check.ts"],"names":[],"mappings":"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"}
package/dist/version.js CHANGED
@@ -6,5 +6,5 @@
6
6
  * breaks the moment the output layout changes. A literal that the release
7
7
  * workflow checks against the git tag is the cheaper guarantee.
8
8
  */
9
- export const VERSION = "0.1.1";
9
+ export const VERSION = "0.1.3";
10
10
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamdata_io/verify-tracking",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Scrapes a live website with Playwright and asks an AI model whether the Dreamdata Analytics Script is correctly installed.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -327,22 +327,93 @@ else
327
327
  fi
328
328
 
329
329
  # ---------------------------------------------------------------------------
330
- # Done
330
+ # 7. PATH
331
331
  # ---------------------------------------------------------------------------
332
332
 
333
- printf '\n==> Installed\n'
334
- "$BIN_DIR/verify-tracking" --version 2>/dev/null | sed 's/^/ /' || true
333
+ # Appended for the operator rather than printed for them to paste. The people
334
+ # this installer is for do not know what a shell profile is, and "now edit
335
+ # ~/.zshrc" is the second place a handover stops.
336
+ #
337
+ # Every profile that already exists gets the line, not just the one implied by
338
+ # $SHELL: a macOS login shell reads ~/.zprofile, an interactive one ~/.zshrc,
339
+ # and bash reads ~/.bash_profile rather than ~/.bashrc — guessing a single file
340
+ # is how the line lands somewhere that is never sourced. A file that does not
341
+ # exist is left uncreated, so this never conjures a profile for a shell the
342
+ # machine does not use.
343
+ #
344
+ # What it cannot do is take effect in the terminal that ran it: this script is
345
+ # a child process, and no child can alter its parent's environment. So the
346
+ # closing lines send the operator to a new terminal window rather than letting
347
+ # them discover that on a `command not found`.
348
+ PATH_LINE="export PATH=\"$BIN_DIR:\$PATH\""
349
+ # BIN_DIR is a path, and a path is not a regex: an unescaped `.` in `.local`
350
+ # would match any character, so a near-miss line could read as a hit. The class
351
+ # is the full ERE metacharacter set, not just the BRE one — grep runs with -E,
352
+ # and a home directory is free to contain a `+` or a `(`.
353
+ bin_dir_re="$(printf '%s' "$BIN_DIR" | sed 's/[].[^$*+?(){}|\/\\]/\\&/g')"
354
+
355
+ add_to_profile() {
356
+ profile="$1"
357
+ [ -f "$profile" ] || return 0
358
+ # Anchored, and only on an uncommented line: a commented-out or
359
+ # differently-worded mention must not read as "already configured". BIN_DIR
360
+ # has to end a PATH component too — as a bare substring, `~/.local/bin` is
361
+ # also inside `~/.local/bin2`, and a match there would skip a profile that
362
+ # never had the line.
363
+ if grep -Eq "^[[:space:]]*export[[:space:]]+PATH=.*${bin_dir_re}([:\"']|\$)" "$profile"; then
364
+ say "already in $profile"
365
+ return 0
366
+ fi
367
+ # A profile that cannot be written to is a PATH the operator has to set by
368
+ # hand, not a failed install — under `set -e` an unguarded append would take
369
+ # the whole run down over a read-only home.
370
+ if printf '\n# Added by the verify-tracking installer\n%s\n' "$PATH_LINE" >> "$profile" 2>/dev/null; then
371
+ say "added to $profile"
372
+ else
373
+ say "could not write $profile. Add this line to it yourself:"
374
+ printf '\n %s\n' "$PATH_LINE"
375
+ fi
376
+ }
335
377
 
378
+ step "PATH"
336
379
  case ":${PATH}:" in
337
- *":$BIN_DIR:"*) ;;
380
+ *":$BIN_DIR:"*)
381
+ say "$BIN_DIR is already on your PATH"
382
+ ;;
338
383
  *)
339
- printf '\n %s is not on your PATH. Add it, then reopen your terminal:\n\n' "$BIN_DIR"
340
- printf " echo 'export PATH=\"%s:\$PATH\"' >> ~/.zshrc\n" "$BIN_DIR"
384
+ for profile in "$HOME/.zshrc" "$HOME/.zprofile" "$HOME/.bashrc" "$HOME/.bash_profile"; do
385
+ add_to_profile "$profile"
386
+ done
387
+ # Nothing to append to means nothing was appended — print the line rather
388
+ # than claim a PATH change that did not happen.
389
+ if [ -f "$HOME/.zshrc" ] || [ -f "$HOME/.zprofile" ] \
390
+ || [ -f "$HOME/.bashrc" ] || [ -f "$HOME/.bash_profile" ]; then
391
+ :
392
+ else
393
+ say "no shell profile found. Add this line to yours:"
394
+ printf '\n %s\n' "$PATH_LINE"
395
+ fi
341
396
  ;;
342
397
  esac
343
398
 
399
+ # ---------------------------------------------------------------------------
400
+ # Done
401
+ # ---------------------------------------------------------------------------
402
+
403
+ printf '\n==> Installed\n'
404
+ "$BIN_DIR/verify-tracking" --version 2>/dev/null | sed 's/^/ /' || true
405
+
344
406
  printf '\n Reports and dashboard:\n\n %s\n' "$REPORTS_HOME"
345
- printf '\n Try it:\n\n verify-tracking --slug dreamdata_io --url https://dreamdata.io/\n'
407
+ printf '\n Try it, from a new terminal window:\n\n verify-tracking --slug dreamdata_io --url https://dreamdata.io/\n'
408
+
409
+ # Claimed only where a browser can actually appear: --dashboard skips opening
410
+ # one on a machine with nobody in front of it, and an installer that announces
411
+ # a window that never arrives sends the operator looking for it.
412
+ if [ -r /dev/tty ]; then
413
+ printf '\n A browser window is opening with your dashboard. Type an account slug\n'
414
+ printf ' and a URL there to build your command, then open a new terminal window\n'
415
+ printf ' and run it.\n'
416
+ fi
346
417
  # The reports folder is the operator's data and is deliberately left out: an
347
418
  # `rm -rf` line someone pastes without reading must not take their work with it.
348
419
  printf '\n Uninstall (your reports folder is left in place):\n\n rm -rf %s %s/verify-tracking %s/verify-tracking-mcp\n\n' "$PREFIX" "$BIN_DIR" "$BIN_DIR"