@codetreker/daynight 0.2.3 → 0.2.4

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.d.ts CHANGED
@@ -2,8 +2,10 @@ export { formatError } from "./diagnostics.js";
2
2
  import type { Configuration } from "./config.js";
3
3
  import type { RuntimePaths } from "./paths.js";
4
4
  import type { AddRepositoryInput, AddRepositoryOptions, AddRepositoryResult } from "./repositories.js";
5
+ import type { UpdateResult } from "./update.js";
5
6
  export type CliDependencies = {
6
7
  version: string;
8
+ update: () => Promise<UpdateResult>;
7
9
  homeDirectory: () => string;
8
10
  workingDirectory: () => string;
9
11
  addRepository: (input: AddRepositoryInput, paths: RuntimePaths, options: AddRepositoryOptions) => Promise<AddRepositoryResult>;
package/dist/cli.js CHANGED
@@ -4,15 +4,16 @@ export { formatError } from "./diagnostics.js";
4
4
  import { loadConfiguration } from "./config.js";
5
5
  import { resolveRuntimePaths } from "./paths.js";
6
6
  import { addRepository } from "./repositories.js";
7
- import { listReviews } from "./review-list.js";
8
- import { formatCoordinatorEvent, runForegroundReview } from "./runtime.js";
7
+ import { updateSelf } from "./update.js";
9
8
  const help = `Usage: daynight --daemon-review
10
9
  daynight add-repo <remote> [--path <path>]
11
10
  daynight review list|ls
11
+ daynight update
12
12
 
13
13
  Commands:
14
14
  add-repo Add a repository to configuration for the next review startup
15
15
  review list|ls List tracked ongoing PRs and recorded review status
16
+ update Update this npm global installation to the latest version
16
17
 
17
18
  Options:
18
19
  --daemon-review Run foreground PR review until interrupted
@@ -43,12 +44,29 @@ Includes Draft PRs, saved review status, attempts, retry deadlines and errors.
43
44
  Last observed identifies the latest successful repository observation.
44
45
  Running is a recorded review state and does not establish process liveness.
45
46
 
47
+ Options:
48
+ -h, --help Show this help
49
+ `;
50
+ const updateHelp = `Usage: daynight update
51
+
52
+ Update the current npm global installation to the registry's latest version.
53
+ An already-current or newer installation is kept. npm configuration and
54
+ authentication select the registry; Daynight configuration and review state are not read.
55
+ Restart any running reviewer after updating to use the new version.
56
+
46
57
  Options:
47
58
  -h, --help Show this help
48
59
  `;
49
60
  const parseCommand = (args) => {
50
61
  if (args.length === 0)
51
62
  throw new Error("Choose a command.");
63
+ if (args[0] === "update") {
64
+ if (args.length === 1)
65
+ return { kind: "update" };
66
+ if (args.length === 2 && (args[1] === "--help" || args[1] === "-h"))
67
+ return { kind: "help", text: updateHelp };
68
+ throw new Error("Expected daynight update. Run daynight update --help for usage.");
69
+ }
52
70
  if (args[0] === "review") {
53
71
  const remaining = args.slice(1);
54
72
  const isHelp = (value) => value === "--help" || value === "-h";
@@ -125,6 +143,19 @@ export const runCli = async (args, dependencies) => {
125
143
  return 0;
126
144
  }
127
145
  try {
146
+ if (command.kind === "update") {
147
+ const result = await dependencies.update();
148
+ if (result.status === "updated") {
149
+ stdout(`Updated daynight from ${result.previousVersion} to ${result.targetVersion}.\nRestart any running reviewer to use the new version.\n`);
150
+ }
151
+ else if (result.status === "current") {
152
+ stdout(`daynight ${result.previousVersion} is already up to date.\n`);
153
+ }
154
+ else {
155
+ stdout(`daynight ${result.previousVersion} is newer than latest ${result.targetVersion}.\n`);
156
+ }
157
+ return 0;
158
+ }
128
159
  const homeDirectory = dependencies.homeDirectory();
129
160
  const runtimePaths = resolveRuntimePaths(homeDirectory);
130
161
  if (command.kind === "review-list") {
@@ -150,14 +181,21 @@ export const runCli = async (args, dependencies) => {
150
181
  };
151
182
  export const defaultCliDependencies = (version) => ({
152
183
  version,
184
+ update: updateSelf,
153
185
  homeDirectory: homedir,
154
186
  workingDirectory: process.cwd,
155
187
  addRepository,
156
- listReviews,
188
+ listReviews: async (paths) => {
189
+ const { listReviews } = await import("./review-list.js");
190
+ return listReviews(paths);
191
+ },
157
192
  loadConfiguration,
158
- runReview: (configuration, paths) => runForegroundReview(configuration, paths, {
159
- log: (event) => { process.stderr.write(`${formatCoordinatorEvent(event)}\n`); },
160
- }),
193
+ runReview: async (configuration, paths) => {
194
+ const { formatCoordinatorEvent, runForegroundReview } = await import("./runtime.js");
195
+ await runForegroundReview(configuration, paths, {
196
+ log: (event) => { process.stderr.write(`${formatCoordinatorEvent(event)}\n`); },
197
+ });
198
+ },
161
199
  stdout: (text) => { process.stdout.write(text); },
162
200
  stderr: (text) => { process.stderr.write(text); },
163
201
  });
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,32 @@
1
+ export type UpdateResult = {
2
+ status: "current" | "ahead" | "updated";
3
+ previousVersion: string;
4
+ targetVersion: string;
5
+ };
6
+ export type UpdateCommand = {
7
+ executable: string;
8
+ arguments: string[];
9
+ cwd: string;
10
+ environment: NodeJS.ProcessEnv;
11
+ timeoutMs: number;
12
+ output: "capture" | "inherit";
13
+ };
14
+ type UpdateOperations = {
15
+ readFile: (filename: string) => Promise<string>;
16
+ realpath: (filename: string) => Promise<string>;
17
+ readCmdShim: (filename: string) => Promise<string>;
18
+ run: (command: UpdateCommand) => Promise<string>;
19
+ };
20
+ export type UpdateOptions = {
21
+ packageDirectory?: string;
22
+ platform?: NodeJS.Platform;
23
+ nodeExecutable?: string;
24
+ workingDirectory?: string;
25
+ environment?: NodeJS.ProcessEnv;
26
+ operations?: UpdateOperations;
27
+ };
28
+ /** Parent interruption and command limits terminate only this invocation's process tree before rejecting. */
29
+ export declare const runUpdateCommand: (command: UpdateCommand) => Promise<string>;
30
+ /** Updates only the npm global installation containing this module; no configuration or review state is opened. */
31
+ export declare const updateSelf: (options?: UpdateOptions) => Promise<UpdateResult>;
32
+ export {};
package/dist/update.js ADDED
@@ -0,0 +1,233 @@
1
+ import { spawn } from "node:child_process";
2
+ import { readFile, realpath, stat } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import readCmdShim from "read-cmd-shim";
5
+ import { SemVer, compare } from "semver";
6
+ const packageName = "@codetreker/daynight";
7
+ const recovery = "Use the original package manager, or install globally with npm install --global @codetreker/daynight@latest.";
8
+ const unsupported = () => new Error(`Self-update requires the current npm global installation and its daynight launcher. ${recovery}`);
9
+ /** Parent interruption and command limits terminate only this invocation's process tree before rejecting. */
10
+ export const runUpdateCommand = async (command) => {
11
+ let taskkill;
12
+ if (process.platform === "win32") {
13
+ const systemRoot = Object.entries(command.environment).find(([name]) => name.toLowerCase() === "systemroot")?.[1];
14
+ if (systemRoot === undefined || !path.win32.isAbsolute(systemRoot))
15
+ throw new Error("Cannot supervise the update command: SystemRoot must name the Windows installation directory.");
16
+ taskkill = path.win32.join(systemRoot, "System32", "taskkill.exe");
17
+ try {
18
+ if (!(await stat(taskkill)).isFile())
19
+ throw new Error("taskkill.exe is not a file.");
20
+ }
21
+ catch (cause) {
22
+ throw new Error("Cannot supervise the update command because Windows taskkill.exe is unavailable.", { cause });
23
+ }
24
+ }
25
+ return new Promise((resolve, reject) => {
26
+ const child = spawn(command.executable, command.arguments, {
27
+ cwd: command.cwd,
28
+ env: command.environment,
29
+ windowsHide: true,
30
+ detached: true,
31
+ stdio: ["inherit", command.output === "capture" ? "pipe" : "inherit", "inherit"],
32
+ });
33
+ let output = "";
34
+ let failure;
35
+ let termination;
36
+ const terminate = () => {
37
+ if (child.pid === undefined || termination !== undefined)
38
+ return;
39
+ if (process.platform === "win32") {
40
+ termination = new Promise((done) => {
41
+ const terminator = spawn(taskkill, ["/PID", String(child.pid), "/T", "/F"], { windowsHide: true, stdio: "inherit", timeout: 10_000, killSignal: "SIGKILL" });
42
+ terminator.once("error", (cause) => { failure = new Error(`Cannot terminate the npm process tree: ${cause.message}`, { cause: failure === undefined ? cause : failure }); child.kill("SIGKILL"); });
43
+ terminator.once("close", (code) => {
44
+ if (code !== 0) {
45
+ failure = new Error(`Cannot confirm termination of the npm process tree: taskkill exited with ${String(code)}.`, { cause: failure });
46
+ child.kill("SIGKILL");
47
+ }
48
+ done();
49
+ });
50
+ });
51
+ return;
52
+ }
53
+ const signal = (value) => {
54
+ try {
55
+ process.kill(-child.pid, value);
56
+ }
57
+ catch (cause) {
58
+ if (!(cause instanceof Error && "code" in cause && cause.code === "ESRCH"))
59
+ failure = new Error(`Cannot terminate the npm process group: ${String(cause)}`, { cause: failure === undefined ? cause : failure });
60
+ }
61
+ };
62
+ signal("SIGKILL");
63
+ termination = Promise.resolve();
64
+ };
65
+ const interrupt = (signal) => {
66
+ if (failure === undefined)
67
+ failure = new Error(`The update command was interrupted by ${signal}.`);
68
+ terminate();
69
+ };
70
+ const interruptByInt = () => { interrupt("SIGINT"); };
71
+ const interruptByTerm = () => { interrupt("SIGTERM"); };
72
+ process.on("SIGINT", interruptByInt);
73
+ process.on("SIGTERM", interruptByTerm);
74
+ child.stdout?.setEncoding("utf8");
75
+ child.stdout?.on("data", (chunk) => {
76
+ if (failure !== undefined)
77
+ return;
78
+ output += chunk;
79
+ if (Buffer.byteLength(output, "utf8") > 64 * 1024) {
80
+ failure = new Error("npm returned more than 64 KiB while checking the update version.");
81
+ terminate();
82
+ }
83
+ });
84
+ const timer = setTimeout(() => {
85
+ if (failure === undefined)
86
+ failure = new Error(`The update command timed out after ${command.timeoutMs / 1_000} seconds.`);
87
+ terminate();
88
+ }, command.timeoutMs);
89
+ child.once("error", (cause) => { if (failure === undefined)
90
+ failure = cause; });
91
+ child.once("close", async (code, signal) => {
92
+ clearTimeout(timer);
93
+ if (termination !== undefined)
94
+ await termination;
95
+ process.removeListener("SIGINT", interruptByInt);
96
+ process.removeListener("SIGTERM", interruptByTerm);
97
+ if (failure !== undefined)
98
+ reject(failure);
99
+ else if (signal !== null)
100
+ reject(new Error(`The update command was terminated by ${signal}.`));
101
+ else if (code !== 0)
102
+ reject(new Error(`The update command exited with code ${String(code)}.`));
103
+ else
104
+ resolve(output);
105
+ });
106
+ });
107
+ };
108
+ const defaultOperations = {
109
+ readFile: (filename) => readFile(filename, "utf8"),
110
+ realpath,
111
+ readCmdShim,
112
+ run: runUpdateCommand,
113
+ };
114
+ const parseVersion = (value, subject) => {
115
+ if (typeof value !== "string")
116
+ throw new Error(`${subject} must be a canonical semantic version.`);
117
+ let parsed;
118
+ try {
119
+ parsed = new SemVer(value);
120
+ }
121
+ catch (cause) {
122
+ throw new Error(`${subject} must be a canonical semantic version.`, { cause });
123
+ }
124
+ const canonical = `${parsed.version}${parsed.build.length === 0 ? "" : `+${parsed.build.join(".")}`}`;
125
+ if (value !== canonical)
126
+ throw new Error(`${subject} must be a canonical semantic version.`);
127
+ return value;
128
+ };
129
+ const isMissing = (cause) => cause instanceof Error && "code" in cause && (cause.code === "ENOENT" || cause.code === "ENOTDIR");
130
+ /** Updates only the npm global installation containing this module; no configuration or review state is opened. */
131
+ export const updateSelf = async (options = {}) => {
132
+ const operations = options.operations === undefined ? defaultOperations : options.operations;
133
+ const platform = options.platform === undefined ? process.platform : options.platform;
134
+ const paths = platform === "win32" ? path.win32 : path.posix;
135
+ const environment = options.environment === undefined ? process.env : options.environment;
136
+ const nodeExecutable = options.nodeExecutable === undefined ? process.execPath : options.nodeExecutable;
137
+ const packageDirectory = await operations.realpath(options.packageDirectory === undefined ? path.resolve(import.meta.dirname, "..") : options.packageDirectory);
138
+ const samePath = (left, right) => paths.relative(left, right) === "";
139
+ const contains = (parent, child) => {
140
+ const relative = paths.relative(parent, child);
141
+ return relative === "" || (!relative.startsWith(`..${paths.sep}`) && relative !== ".." && !paths.isAbsolute(relative));
142
+ };
143
+ const manifestAt = async (directory) => {
144
+ const manifest = JSON.parse(await operations.readFile(paths.join(directory, "package.json")));
145
+ if (typeof manifest !== "object" || manifest === null || Array.isArray(manifest))
146
+ throw new Error(`Invalid package manifest in ${directory}.`);
147
+ return manifest;
148
+ };
149
+ const initialManifest = await manifestAt(packageDirectory);
150
+ const validManifest = (manifest) => manifest.name === packageName && manifest.private !== true &&
151
+ typeof manifest.bin === "object" && manifest.bin !== null && "daynight" in manifest.bin && manifest.bin.daynight === "dist/main.js";
152
+ if (!validManifest(initialManifest))
153
+ throw unsupported();
154
+ const previousVersion = parseVersion(initialManifest.version, "The installed package version");
155
+ const prefix = platform === "win32" ? paths.resolve(packageDirectory, "../../..") : paths.resolve(packageDirectory, "../../../..");
156
+ const expectedRoot = platform === "win32" ? paths.join(prefix, "node_modules", packageName) : paths.join(prefix, "lib", "node_modules", packageName);
157
+ if (!samePath(packageDirectory, expectedRoot))
158
+ throw unsupported();
159
+ const main = paths.join(packageDirectory, "dist", "main.js");
160
+ const launcher = platform === "win32" ? paths.join(prefix, "daynight.cmd") : paths.join(prefix, "bin", "daynight");
161
+ const verifyLauncher = async () => {
162
+ try {
163
+ const target = platform === "win32" ? paths.resolve(paths.dirname(launcher), await operations.readCmdShim(launcher)) : launcher;
164
+ if (!samePath(await operations.realpath(target), main) || !samePath(await operations.realpath(main), main))
165
+ throw unsupported();
166
+ }
167
+ catch (cause) {
168
+ if (isMissing(cause) || cause instanceof Error && "code" in cause && cause.code === "ENOTASHIM")
169
+ throw new Error(unsupported().message, { cause });
170
+ throw cause;
171
+ }
172
+ };
173
+ await verifyLauncher();
174
+ const nodeDirectory = paths.dirname(await operations.realpath(nodeExecutable));
175
+ const npmCandidates = [paths.join(nodeDirectory, "node_modules", "npm", "bin", "npm-cli.js"), paths.resolve(nodeDirectory, "../lib/node_modules/npm/bin/npm-cli.js")];
176
+ const executableName = platform === "win32" ? "npm.cmd" : "npm";
177
+ const pathEntry = Object.entries(environment).find(([name]) => platform === "win32" ? name.toLowerCase() === "path" : name === "PATH");
178
+ if (pathEntry !== undefined && pathEntry[1] !== undefined)
179
+ for (const directory of pathEntry[1].split(paths.delimiter)) {
180
+ if (directory !== "")
181
+ npmCandidates.push(paths.join(directory, executableName));
182
+ }
183
+ let npmCli;
184
+ for (const candidate of npmCandidates) {
185
+ try {
186
+ const target = platform === "win32" && candidate.endsWith(".cmd") ? paths.resolve(paths.dirname(candidate), await operations.readCmdShim(candidate)) : candidate;
187
+ const resolved = await operations.realpath(target);
188
+ if (paths.basename(resolved) !== "npm-cli.js" || contains(packageDirectory, resolved))
189
+ continue;
190
+ const manifest = await manifestAt(paths.resolve(resolved, "../.."));
191
+ if (manifest.name === "npm") {
192
+ npmCli = resolved;
193
+ break;
194
+ }
195
+ }
196
+ catch (cause) {
197
+ if (isMissing(cause) || cause instanceof Error && "code" in cause && cause.code === "ENOTASHIM")
198
+ continue;
199
+ throw cause;
200
+ }
201
+ }
202
+ if (npmCli === undefined)
203
+ throw new Error(`Cannot locate npm's JavaScript CLI for the current Node.js installation. ${recovery}`);
204
+ const execute = (argumentsValue, output, timeoutMs) => operations.run({
205
+ executable: nodeExecutable, arguments: [npmCli, ...argumentsValue], cwd: prefix, environment, timeoutMs, output,
206
+ });
207
+ const metadata = await execute(["view", `${packageName}@latest`, "version", "--json", "--global", "--prefix", prefix, "--prefer-online"], "capture", 60_000);
208
+ let latest;
209
+ try {
210
+ latest = JSON.parse(metadata);
211
+ }
212
+ catch (cause) {
213
+ throw new Error("npm returned invalid JSON for the latest package version.", { cause });
214
+ }
215
+ const targetVersion = parseVersion(Array.isArray(latest) && latest.length === 1 ? latest[0] : latest, "The latest npm package version");
216
+ const order = compare(previousVersion, targetVersion);
217
+ if (order >= 0)
218
+ return { status: order === 0 ? "current" : "ahead", previousVersion, targetVersion };
219
+ const workingDirectory = await operations.realpath(options.workingDirectory === undefined ? process.cwd() : options.workingDirectory);
220
+ if (contains(packageDirectory, workingDirectory))
221
+ throw new Error("Run daynight update from a directory outside its installation so npm can replace the package.");
222
+ await execute(["install", `${packageName}@${targetVersion}`, "--global", "--prefix", prefix, "--engine-strict", "--force=false", "--no-audit", "--no-fund"], "inherit", 10 * 60_000);
223
+ const installedManifest = await manifestAt(packageDirectory);
224
+ if (!validManifest(installedManifest) || parseVersion(installedManifest.version, "The updated package version") !== targetVersion) {
225
+ throw new Error(`npm completed, but the installed package does not match ${packageName}@${targetVersion}.`);
226
+ }
227
+ await verifyLauncher();
228
+ const installedVersion = (await operations.run({ executable: nodeExecutable, arguments: [main, "--version"], cwd: prefix, environment, timeoutMs: 30_000, output: "capture" })).trim();
229
+ if (installedVersion !== targetVersion)
230
+ throw new Error(`The updated executable returned version ${JSON.stringify(installedVersion)}; expected ${targetVersion}.`);
231
+ return { status: "updated", previousVersion, targetVersion };
232
+ };
233
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codetreker/daynight",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "A foreground CLI for GitHub pull request reviews",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,6 +26,8 @@
26
26
  "dependencies": {
27
27
  "better-sqlite3": "13.0.3",
28
28
  "cross-spawn": "7.0.6",
29
+ "read-cmd-shim": "6.0.0",
30
+ "semver": "7.8.5",
29
31
  "yaml": "2.9.1"
30
32
  },
31
33
  "devDependencies": {
@@ -33,10 +35,9 @@
33
35
  "@types/cross-spawn": "6.0.6",
34
36
  "@types/node": "24.19.2",
35
37
  "@types/semver": "7.8.0",
36
- "semver": "7.8.5",
37
38
  "typescript": "7.0.2",
38
39
  "vite": "8.3.4",
39
40
  "vitest": "5.0.5"
40
41
  },
41
- "gitHead": "39bdff4bdc6e271cc69a733ecde742cc004dfdf8"
42
+ "gitHead": "98cb6a8b2366c5cab2497e29d48afe613a35b004"
42
43
  }