@navbook/cli 0.1.1 → 0.2.0

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 (168) hide show
  1. package/dist/commands/complete.js +124 -0
  2. package/dist/commands/complete.js.map +1 -0
  3. package/dist/{cli/commands → commands}/compose.js +5 -3
  4. package/dist/commands/compose.js.map +1 -0
  5. package/dist/commands/doctor.js +56 -0
  6. package/dist/commands/doctor.js.map +1 -0
  7. package/dist/commands/entity.js +235 -0
  8. package/dist/commands/entity.js.map +1 -0
  9. package/dist/commands/feature.js +202 -0
  10. package/dist/commands/feature.js.map +1 -0
  11. package/dist/commands/init.js +23 -0
  12. package/dist/commands/init.js.map +1 -0
  13. package/dist/{cli/commands → commands}/install.js +1 -2
  14. package/dist/commands/install.js.map +1 -0
  15. package/dist/commands/issue.js +89 -0
  16. package/dist/commands/issue.js.map +1 -0
  17. package/dist/commands/policy.js +49 -0
  18. package/dist/commands/policy.js.map +1 -0
  19. package/dist/commands/pr.js +262 -0
  20. package/dist/commands/pr.js.map +1 -0
  21. package/dist/context.js +21 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/{cli/editor.js → editor.js} +1 -1
  24. package/dist/editor.js.map +1 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/install/completions.js.map +1 -0
  27. package/dist/{cli/install → install}/hook.js +1 -1
  28. package/dist/install/hook.js.map +1 -0
  29. package/dist/{cli/main.js → main.js} +10 -0
  30. package/dist/main.js.map +1 -0
  31. package/dist/program.js +356 -0
  32. package/dist/program.js.map +1 -0
  33. package/dist/{cli/prompt.js → prompt.js} +11 -0
  34. package/dist/prompt.js.map +1 -0
  35. package/dist/render/colors.js.map +1 -0
  36. package/dist/render/detail.js +197 -0
  37. package/dist/render/detail.js.map +1 -0
  38. package/dist/render/table.js.map +1 -0
  39. package/dist/sort.js +77 -0
  40. package/dist/sort.js.map +1 -0
  41. package/package.json +15 -21
  42. package/README.md +0 -165
  43. package/dist/cli/commands/complete.d.ts +0 -9
  44. package/dist/cli/commands/complete.js +0 -72
  45. package/dist/cli/commands/complete.js.map +0 -1
  46. package/dist/cli/commands/compose.d.ts +0 -27
  47. package/dist/cli/commands/compose.js.map +0 -1
  48. package/dist/cli/commands/doctor.d.ts +0 -14
  49. package/dist/cli/commands/doctor.js +0 -127
  50. package/dist/cli/commands/doctor.js.map +0 -1
  51. package/dist/cli/commands/entity.d.ts +0 -55
  52. package/dist/cli/commands/entity.js +0 -209
  53. package/dist/cli/commands/entity.js.map +0 -1
  54. package/dist/cli/commands/init.d.ts +0 -11
  55. package/dist/cli/commands/init.js +0 -39
  56. package/dist/cli/commands/init.js.map +0 -1
  57. package/dist/cli/commands/install.d.ts +0 -17
  58. package/dist/cli/commands/install.js.map +0 -1
  59. package/dist/cli/commands/issue.d.ts +0 -12
  60. package/dist/cli/commands/issue.js +0 -42
  61. package/dist/cli/commands/issue.js.map +0 -1
  62. package/dist/cli/commands/pr.d.ts +0 -64
  63. package/dist/cli/commands/pr.js +0 -466
  64. package/dist/cli/commands/pr.js.map +0 -1
  65. package/dist/cli/commit-flow.d.ts +0 -27
  66. package/dist/cli/commit-flow.js +0 -47
  67. package/dist/cli/commit-flow.js.map +0 -1
  68. package/dist/cli/context.d.ts +0 -39
  69. package/dist/cli/context.js +0 -93
  70. package/dist/cli/context.js.map +0 -1
  71. package/dist/cli/editor.d.ts +0 -23
  72. package/dist/cli/editor.js.map +0 -1
  73. package/dist/cli/errors.d.ts +0 -17
  74. package/dist/cli/errors.js.map +0 -1
  75. package/dist/cli/history-checks.d.ts +0 -21
  76. package/dist/cli/history-checks.js +0 -134
  77. package/dist/cli/history-checks.js.map +0 -1
  78. package/dist/cli/install/completions.d.ts +0 -19
  79. package/dist/cli/install/completions.js.map +0 -1
  80. package/dist/cli/install/hook.d.ts +0 -20
  81. package/dist/cli/install/hook.js.map +0 -1
  82. package/dist/cli/main.d.ts +0 -14
  83. package/dist/cli/main.js.map +0 -1
  84. package/dist/cli/program.d.ts +0 -23
  85. package/dist/cli/program.js +0 -204
  86. package/dist/cli/program.js.map +0 -1
  87. package/dist/cli/prompt.d.ts +0 -22
  88. package/dist/cli/prompt.js.map +0 -1
  89. package/dist/cli/render/colors.d.ts +0 -13
  90. package/dist/cli/render/colors.js.map +0 -1
  91. package/dist/cli/render/detail.d.ts +0 -10
  92. package/dist/cli/render/detail.js +0 -105
  93. package/dist/cli/render/detail.js.map +0 -1
  94. package/dist/cli/render/table.d.ts +0 -19
  95. package/dist/cli/render/table.js.map +0 -1
  96. package/dist/cli/resolve.d.ts +0 -17
  97. package/dist/cli/resolve.js +0 -68
  98. package/dist/cli/resolve.js.map +0 -1
  99. package/dist/cli/workspace.d.ts +0 -52
  100. package/dist/cli/workspace.js +0 -178
  101. package/dist/cli/workspace.js.map +0 -1
  102. package/dist/core/comments.d.ts +0 -31
  103. package/dist/core/comments.js +0 -80
  104. package/dist/core/comments.js.map +0 -1
  105. package/dist/core/files.d.ts +0 -88
  106. package/dist/core/files.js +0 -441
  107. package/dist/core/files.js.map +0 -1
  108. package/dist/core/frontmatter.d.ts +0 -63
  109. package/dist/core/frontmatter.js +0 -149
  110. package/dist/core/frontmatter.js.map +0 -1
  111. package/dist/core/id.d.ts +0 -46
  112. package/dist/core/id.js +0 -66
  113. package/dist/core/id.js.map +0 -1
  114. package/dist/core/index.d.ts +0 -19
  115. package/dist/core/index.js +0 -20
  116. package/dist/core/index.js.map +0 -1
  117. package/dist/core/json.d.ts +0 -18
  118. package/dist/core/json.js +0 -51
  119. package/dist/core/json.js.map +0 -1
  120. package/dist/core/ops.d.ts +0 -92
  121. package/dist/core/ops.js +0 -173
  122. package/dist/core/ops.js.map +0 -1
  123. package/dist/core/person.d.ts +0 -20
  124. package/dist/core/person.js +0 -50
  125. package/dist/core/person.js.map +0 -1
  126. package/dist/core/query.d.ts +0 -30
  127. package/dist/core/query.js +0 -106
  128. package/dist/core/query.js.map +0 -1
  129. package/dist/core/refs.d.ts +0 -12
  130. package/dist/core/refs.js +0 -36
  131. package/dist/core/refs.js.map +0 -1
  132. package/dist/core/slug.d.ts +0 -22
  133. package/dist/core/slug.js +0 -40
  134. package/dist/core/slug.js.map +0 -1
  135. package/dist/core/time.d.ts +0 -14
  136. package/dist/core/time.js +0 -37
  137. package/dist/core/time.js.map +0 -1
  138. package/dist/core/tree.d.ts +0 -94
  139. package/dist/core/tree.js +0 -237
  140. package/dist/core/tree.js.map +0 -1
  141. package/dist/core/validate.d.ts +0 -55
  142. package/dist/core/validate.js +0 -312
  143. package/dist/core/validate.js.map +0 -1
  144. package/dist/git/config.d.ts +0 -12
  145. package/dist/git/config.js +0 -27
  146. package/dist/git/config.js.map +0 -1
  147. package/dist/git/exec.d.ts +0 -35
  148. package/dist/git/exec.js +0 -58
  149. package/dist/git/exec.js.map +0 -1
  150. package/dist/git/history.d.ts +0 -35
  151. package/dist/git/history.js +0 -82
  152. package/dist/git/history.js.map +0 -1
  153. package/dist/git/index-ops.d.ts +0 -20
  154. package/dist/git/index-ops.js +0 -45
  155. package/dist/git/index-ops.js.map +0 -1
  156. package/dist/git/merge.d.ts +0 -27
  157. package/dist/git/merge.js +0 -57
  158. package/dist/git/merge.js.map +0 -1
  159. package/dist/git/refscan.d.ts +0 -32
  160. package/dist/git/refscan.js +0 -82
  161. package/dist/git/refscan.js.map +0 -1
  162. package/dist/git/repo.d.ts +0 -45
  163. package/dist/git/repo.js +0 -95
  164. package/dist/git/repo.js.map +0 -1
  165. /package/dist/{cli/errors.js → errors.js} +0 -0
  166. /package/dist/{cli/install → install}/completions.js +0 -0
  167. /package/dist/{cli/render → render}/colors.js +0 -0
  168. /package/dist/{cli/render → render}/table.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Confirmation for commands that change files or configuration.
3
- *
4
- * Following `apt`: print the exact actions first, then ask. `--yes` skips the
5
- * question but never the printing, so a scripted run still leaves a record of
6
- * what it did.
7
- */
8
- import type { Ctx } from "./context.ts";
9
- export interface Action {
10
- /** One line describing what will happen, e.g. the exact command to be run. */
11
- description: string;
12
- perform: () => void;
13
- }
14
- export interface ConfirmOptions {
15
- title: string;
16
- actions: readonly Action[];
17
- assumeYes?: boolean;
18
- }
19
- /** Print the planned actions, ask once, then perform them. */
20
- export declare function confirmAndPerform(ctx: Ctx, opts: ConfirmOptions): boolean;
21
- /** Ask a yes/no question; anything but `y`/`yes` — including EOF — is a no. */
22
- export declare function askYesNo(ctx: Ctx, question: string): boolean;
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAenC,8DAA8D;AAC9D,MAAM,UAAU,iBAAiB,CAAC,GAAQ,EAAE,IAAoB;IAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO;QAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IAEjF,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,QAAQ,CAAC,GAAQ,EAAE,QAAgB;IACjD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;QAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM;QACR,CAAC;QACD,IAAI,IAAI,KAAK,CAAC;YAAE,MAAM;QACtB,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Terminal color, enabled only for a TTY that has not opted out.
3
- *
4
- * `--json` output and every fixture comparison therefore run uncolored.
5
- */
6
- import pc from "picocolors";
7
- export type Colors = ReturnType<typeof pc.createColors>;
8
- export declare function colorEnabled(stream: {
9
- isTTY?: boolean;
10
- }, env: NodeJS.ProcessEnv): boolean;
11
- export declare function makeColors(stream: {
12
- isTTY?: boolean;
13
- }, env: NodeJS.ProcessEnv): Colors;
@@ -1 +0,0 @@
1
- {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../src/cli/render/colors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,MAAM,UAAU,YAAY,CAAC,MAA2B,EAAE,GAAsB;IAC9E,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,EAAE,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG;QACpF,OAAO,IAAI,CAAC;IACd,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA2B,EAAE,GAAsB;IAC5E,OAAO,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACpD,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * The `show` rendering: an entity's metadata, description and comment thread.
3
- */
4
- import type { EntityRecord } from "../../core/tree.ts";
5
- import type { Colors } from "./colors.ts";
6
- export interface DetailOptions {
7
- colors: Colors;
8
- }
9
- /** Render one entity with its full comment thread. */
10
- export declare function renderDetail(entity: EntityRecord, opts: DetailOptions): string;
@@ -1,105 +0,0 @@
1
- /**
2
- * The `show` rendering: an entity's metadata, description and comment thread.
3
- */
4
- import { threadOrder } from "../../core/comments.js";
5
- import { readAssignees, readLabels, readMerged, readRevisions } from "../../core/files.js";
6
- import { NAVBOOK_ROOT } from "../../core/json.js";
7
- import { toIsoSeconds } from "../../core/time.js";
8
- /** Render one entity with its full comment thread. */
9
- export function renderDetail(entity, opts) {
10
- const c = opts.colors;
11
- const lines = [];
12
- lines.push(`${c.bold(`#${entity.id}`)} ${entity.title}`);
13
- const labelWidth = 11;
14
- for (const [label, value] of metadataRows(entity)) {
15
- // A continuation row (empty label) is indented to line up under the value.
16
- const cell = label === "" ? " ".repeat(labelWidth) : c.dim(`${label}:`.padEnd(labelWidth));
17
- lines.push(`${cell}${value}`);
18
- }
19
- const body = entity.body.trim();
20
- if (body !== "") {
21
- lines.push("");
22
- lines.push(body);
23
- }
24
- lines.push("");
25
- lines.push(c.dim(`comments (${entity.comments.length}):`));
26
- if (entity.comments.length === 0) {
27
- lines.push(c.dim(" none"));
28
- }
29
- else {
30
- for (const { comment, depth } of threadOrder(entity.comments)) {
31
- lines.push("");
32
- lines.push(...renderComment(comment, depth, c));
33
- }
34
- }
35
- return lines.join("\n");
36
- }
37
- function metadataRows(entity) {
38
- const rows = [];
39
- rows.push(["status", entity.archived ? `${entity.status} (archived)` : entity.status]);
40
- rows.push(["author", stringField(entity, "author")]);
41
- rows.push(["created", stringField(entity, "created")]);
42
- if (entity.kind === "pr") {
43
- rows.push(["target", stringField(entity, "target")]);
44
- const source = stringField(entity, "source");
45
- if (source !== "")
46
- rows.push(["source", source]);
47
- if (entity.fm.draft === true)
48
- rows.push(["draft", "yes"]);
49
- const revisions = readRevisions(entity.fm);
50
- revisions.forEach((revision, index) => {
51
- rows.push([
52
- index === 0 ? "revisions" : "",
53
- `${index + 1}. head ${revision.head.slice(0, 12)} base ${revision.base.slice(0, 12)} ${revision.date}`,
54
- ]);
55
- });
56
- const merged = readMerged(entity.fm);
57
- if (merged) {
58
- rows.push(["merged", `${merged.date ?? "?"} by ${merged.by ?? "?"}`]);
59
- if (typeof merged.commit === "string")
60
- rows.push(["", `commit ${merged.commit.slice(0, 12)}`]);
61
- }
62
- }
63
- const labels = readLabels(entity.fm);
64
- if (labels.length > 0)
65
- rows.push(["labels", labels.join(", ")]);
66
- const assignees = readAssignees(entity.fm);
67
- if (assignees.length > 0)
68
- rows.push(["assignee", assignees.join(", ")]);
69
- for (const key of ["milestone", "resolution", "duplicate-of", "superseded-by"]) {
70
- const value = stringField(entity, key);
71
- if (value !== "")
72
- rows.push([key, value]);
73
- }
74
- rows.push(["path", `${NAVBOOK_ROOT}/${entity.dirPath}/`]);
75
- return rows;
76
- }
77
- function stringField(entity, key) {
78
- const value = entity.fm[key];
79
- return typeof value === "string" ? value : "";
80
- }
81
- function renderComment(comment, depth, c) {
82
- const indent = " ".repeat(depth + 1);
83
- const head = [c.bold(`#${comment.id}`), comment.author, toIsoSeconds(comment.date)];
84
- const verdict = comment.parsed.fm.verdict;
85
- if (typeof verdict === "string") {
86
- const paint = verdict === "approve" ? c.green : c.yellow;
87
- head.push(paint(`[${verdict}]`));
88
- }
89
- const revision = comment.parsed.fm.revision;
90
- if (typeof revision === "string")
91
- head.push(c.dim(`@${revision.slice(0, 12)}`));
92
- const file = comment.parsed.fm.file;
93
- if (typeof file === "string") {
94
- const line = comment.parsed.fm.line;
95
- head.push(c.dim(`${file}${line === undefined ? "" : `:${line}`}`));
96
- }
97
- if (comment.replyTo)
98
- head.push(c.dim(`reply to #${comment.replyTo}`));
99
- const lines = [`${indent}${head.join(" ")}`];
100
- for (const line of comment.body.trim().split("\n")) {
101
- lines.push(line === "" ? "" : `${indent} ${line}`);
102
- }
103
- return lines;
104
- }
105
- //# sourceMappingURL=detail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detail.js","sourceRoot":"","sources":["../../../src/cli/render/detail.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Column-aligned listings for `nav issue list` / `nav pr list`.
3
- */
4
- import type { Colors } from "./colors.ts";
5
- export interface Column {
6
- header: string;
7
- /** Cells are truncated to this width when the terminal is narrow. */
8
- flexible?: boolean;
9
- minWidth?: number;
10
- }
11
- export interface TableOptions {
12
- colors: Colors;
13
- /** Total width available; unlimited when undefined. */
14
- width?: number;
15
- }
16
- /** Render a table, shrinking flexible columns to fit the terminal width. */
17
- export declare function renderTable(columns: readonly Column[], rows: readonly string[][], opts: TableOptions): string;
18
- /** Truncate to `width`, marking the cut with a single ellipsis character. */
19
- export declare function truncate(text: string, width: number): string;
@@ -1 +0,0 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/cli/render/table.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Turning what the user typed into the entity they meant — spec 02 §2.2
3
- * (prefixes of at least four characters) and spec 04 §4.3 (a verb given an ID
4
- * of the other kind points at the right noun).
5
- */
6
- import { type EntityKind, type EntityRecord, type Repo } from "../core/tree.ts";
7
- /**
8
- * Accept a whole entity directory name wherever an ID is expected.
9
- *
10
- * Shell completion offers `<id>-<slug>` names, and they are what a user copies
11
- * out of a path or a forge URL; the ID is simply its first eight characters.
12
- */
13
- export declare function asId(argument: string): string;
14
- /** Resolve an ID or unambiguous prefix to an entity of the expected kind. */
15
- export declare function resolveEntity(repo: Repo, prefix: string, kind: EntityKind): EntityRecord;
16
- /** Resolve a comment ID or prefix within one entity (used by `--reply-to`). */
17
- export declare function resolveComment(entity: EntityRecord, prefix: string): string;
@@ -1,68 +0,0 @@
1
- /**
2
- * Turning what the user typed into the entity they meant — spec 02 §2.2
3
- * (prefixes of at least four characters) and spec 04 §4.3 (a verb given an ID
4
- * of the other kind points at the right noun).
5
- */
6
- import { MIN_PREFIX_LENGTH, resolvePrefix } from "../core/id.js";
7
- import { allEntities } from "../core/tree.js";
8
- import { fail } from "./errors.js";
9
- const NOUN = { issue: "issue", pr: "pull request" };
10
- const COMMAND = { issue: "nav issue", pr: "nav pr" };
11
- /**
12
- * Accept a whole entity directory name wherever an ID is expected.
13
- *
14
- * Shell completion offers `<id>-<slug>` names, and they are what a user copies
15
- * out of a path or a forge URL; the ID is simply its first eight characters.
16
- */
17
- export function asId(argument) {
18
- const match = /^([a-z][a-z0-9]{7})-[a-z0-9-]+$/.exec(argument.toLowerCase());
19
- return match ? match[1] : argument;
20
- }
21
- /** Resolve an ID or unambiguous prefix to an entity of the expected kind. */
22
- export function resolveEntity(repo, prefix, kind) {
23
- const entities = allEntities(repo);
24
- const resolution = resolvePrefix(asId(prefix), entities.map((e) => e.id));
25
- if (!resolution.ok) {
26
- switch (resolution.reason) {
27
- case "too-short":
28
- fail(`'${prefix}' is too short; ID prefixes must be at least ${MIN_PREFIX_LENGTH} characters`);
29
- break;
30
- case "not-found":
31
- fail(`no ${NOUN[kind]} matches '${prefix}'`);
32
- break;
33
- default:
34
- fail(`'${prefix}' is ambiguous; ${resolution.matches.length} entities match`, resolution.matches.map((id) => describe(entities.find((e) => e.id === id))));
35
- }
36
- }
37
- const matches = entities.filter((e) => e.id === resolution.id);
38
- const wanted = matches.find((e) => e.kind === kind);
39
- if (wanted)
40
- return wanted;
41
- const other = matches[0];
42
- fail(`#${other.id} is ${other.kind === "pr" ? "a pull request" : "an issue"} — use '${COMMAND[other.kind]} ${verbHint()}'`);
43
- }
44
- function verbHint() {
45
- return "show";
46
- }
47
- function describe(entity) {
48
- if (!entity)
49
- return "";
50
- return `#${entity.id} ${entity.kind === "pr" ? "pr " : "issue"} ${entity.title}`;
51
- }
52
- /** Resolve a comment ID or prefix within one entity (used by `--reply-to`). */
53
- export function resolveComment(entity, prefix) {
54
- const resolution = resolvePrefix(prefix, entity.comments.map((c) => c.id));
55
- if (resolution.ok)
56
- return resolution.id;
57
- switch (resolution.reason) {
58
- case "too-short":
59
- fail(`'${prefix}' is too short; ID prefixes must be at least ${MIN_PREFIX_LENGTH} characters`);
60
- break;
61
- case "not-found":
62
- fail(`no comment of #${entity.id} matches '${prefix}'`);
63
- break;
64
- default:
65
- fail(`'${prefix}' is ambiguous within #${entity.id}`, resolution.matches.map((id) => `#${id}`));
66
- }
67
- }
68
- //# sourceMappingURL=resolve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Reading and mutating the `.navbook/` working tree.
3
- *
4
- * Core plans; this module executes. Every write goes through {@link applyOps}
5
- * so the set of touched paths is known exactly — which is what makes the
6
- * `--commit` guard of spec 04 §4.2 precise rather than approximate.
7
- */
8
- import type { FileOp } from "../core/ops.ts";
9
- import { type Query } from "../core/query.ts";
10
- import { type NavTree, type Repo } from "../core/tree.ts";
11
- import type { Ctx } from "./context.ts";
12
- export interface ReadTreeOptions {
13
- /** Skip `comments/` directories when the command cannot need them. */
14
- includeComments?: boolean;
15
- }
16
- /** Read `.navbook/` into a flat path→content map. */
17
- export declare function readNavTree(navRoot: string, opts?: ReadTreeOptions): NavTree;
18
- /** Load the repository model from the working tree. */
19
- export declare function loadRepo(ctx: Ctx, opts?: ReadTreeOptions): Repo;
20
- /** Load the repository, reading comment bodies only when the query needs them. */
21
- export declare function loadRepoForQuery(ctx: Ctx, query: Query): Repo;
22
- /** Fail with a helpful message when the repository has no `.navbook/` yet. */
23
- export declare function requireNavbook(ctx: Ctx): void;
24
- /** Convert a path relative to `.navbook/` into a repository-relative path. */
25
- export declare function repoPath(navRelative: string): string;
26
- /** Absolute filesystem path for a path relative to `.navbook/`. */
27
- export declare function absPath(ctx: Ctx, navRelative: string): string;
28
- export interface ApplyResult {
29
- /** Repository-relative paths the operation created, rewrote or moved. */
30
- touched: string[];
31
- }
32
- /**
33
- * Execute file operations in order, then stage exactly the paths involved.
34
- *
35
- * Renames are performed as a filesystem move followed by `git add`, which
36
- * produces the same index state as `git mv` while also working on entities that
37
- * have not been committed yet.
38
- */
39
- export declare function applyOps(ctx: Ctx, ops: readonly FileOp[]): ApplyResult;
40
- /** Stage paths, tolerating those that no longer exist and were never tracked. */
41
- export declare function stage(ctx: Ctx, paths: readonly string[]): void;
42
- /**
43
- * Every ID in the repository, read from names alone.
44
- *
45
- * Entity IDs are in directory names and comment IDs are in filenames (§2.2,
46
- * §2.6), so uniqueness can be checked without opening a single file — which
47
- * keeps `open` fast while still honouring "unique across all entity and
48
- * comment IDs".
49
- */
50
- export declare function scanAllIds(navRoot: string): Set<string>;
51
- /** Repository-relative path of an absolute path, in POSIX form. */
52
- export declare function toRepoRelative(ctx: Ctx, absolute: string): string;
@@ -1,178 +0,0 @@
1
- /**
2
- * Reading and mutating the `.navbook/` working tree.
3
- *
4
- * Core plans; this module executes. Every write goes through {@link applyOps}
5
- * so the set of touched paths is known exactly — which is what makes the
6
- * `--commit` guard of spec 04 §4.2 precise rather than approximate.
7
- */
8
- import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmdirSync, writeFileSync, } from "node:fs";
9
- import { dirname, join, posix, relative, sep } from "node:path";
10
- import { parseCommentFileName } from "../core/comments.js";
11
- import { NAVBOOK_ROOT } from "../core/json.js";
12
- import { needsComments } from "../core/query.js";
13
- import { parseDirName } from "../core/slug.js";
14
- import { parseTree } from "../core/tree.js";
15
- import { gitMaybe } from "../git/exec.js";
16
- import { add } from "../git/index-ops.js";
17
- import { fail } from "./errors.js";
18
- /** Read `.navbook/` into a flat path→content map. */
19
- export function readNavTree(navRoot, opts = {}) {
20
- const includeComments = opts.includeComments !== false;
21
- const files = new Map();
22
- if (!existsSync(navRoot))
23
- return files;
24
- walk(navRoot, "", files, includeComments);
25
- return files;
26
- }
27
- function walk(absolute, rel, files, includeComments) {
28
- let entries;
29
- try {
30
- entries = readdirSync(absolute, { withFileTypes: true, encoding: "utf8" });
31
- }
32
- catch {
33
- return;
34
- }
35
- for (const entry of entries) {
36
- const childRel = rel === "" ? entry.name : `${rel}/${entry.name}`;
37
- const childAbs = join(absolute, entry.name);
38
- if (entry.isDirectory()) {
39
- if (!includeComments && entry.name === "comments")
40
- continue;
41
- walk(childAbs, childRel, files, includeComments);
42
- }
43
- else if (entry.isFile()) {
44
- files.set(childRel, readFileSync(childAbs, "utf8"));
45
- }
46
- }
47
- }
48
- /** Load the repository model from the working tree. */
49
- export function loadRepo(ctx, opts = {}) {
50
- requireNavbook(ctx);
51
- const includeComments = opts.includeComments !== false;
52
- const files = readNavTree(ctx.navRoot, { includeComments });
53
- return parseTree(files, { commentsLoaded: includeComments });
54
- }
55
- /** Load the repository, reading comment bodies only when the query needs them. */
56
- export function loadRepoForQuery(ctx, query) {
57
- return loadRepo(ctx, { includeComments: needsComments(query) });
58
- }
59
- /** Fail with a helpful message when the repository has no `.navbook/` yet. */
60
- export function requireNavbook(ctx) {
61
- if (!ctx.hasNavbook) {
62
- fail(`not a Navbook repository: no ${NAVBOOK_ROOT}/ at the repository root`, [
63
- "run 'nav init' to create it",
64
- ]);
65
- }
66
- }
67
- /** Convert a path relative to `.navbook/` into a repository-relative path. */
68
- export function repoPath(navRelative) {
69
- return posix.join(NAVBOOK_ROOT, navRelative);
70
- }
71
- /** Absolute filesystem path for a path relative to `.navbook/`. */
72
- export function absPath(ctx, navRelative) {
73
- return join(ctx.navRoot, ...navRelative.split("/"));
74
- }
75
- /**
76
- * Execute file operations in order, then stage exactly the paths involved.
77
- *
78
- * Renames are performed as a filesystem move followed by `git add`, which
79
- * produces the same index state as `git mv` while also working on entities that
80
- * have not been committed yet.
81
- */
82
- export function applyOps(ctx, ops) {
83
- const touched = new Set();
84
- for (const op of ops) {
85
- if (op.op === "write") {
86
- const target = absPath(ctx, op.path);
87
- mkdirSync(dirname(target), { recursive: true });
88
- writeFileSync(target, op.content, "utf8");
89
- touched.add(repoPath(op.path));
90
- continue;
91
- }
92
- const from = absPath(ctx, op.from);
93
- const to = absPath(ctx, op.to);
94
- if (!existsSync(from))
95
- fail(`cannot move ${repoPath(op.from)}: it does not exist`);
96
- if (existsSync(to))
97
- fail(`cannot move ${repoPath(op.from)}: ${repoPath(op.to)} already exists`);
98
- mkdirSync(dirname(to), { recursive: true });
99
- renameSync(from, to);
100
- pruneEmptyParents(ctx, dirname(from));
101
- touched.add(repoPath(op.from));
102
- touched.add(repoPath(op.to));
103
- }
104
- stage(ctx, [...touched]);
105
- return { touched: [...touched].sort() };
106
- }
107
- /**
108
- * Remove directories left empty by a move, up to (but never including) the
109
- * `.navbook/` root. Git does not track empty directories, so leaving them
110
- * behind would make the working tree disagree with a fresh clone.
111
- */
112
- function pruneEmptyParents(ctx, startDir) {
113
- let current = startDir;
114
- while (current.startsWith(ctx.navRoot) && current !== ctx.navRoot) {
115
- try {
116
- if (readdirSync(current).length > 0)
117
- return;
118
- rmdirSync(current);
119
- }
120
- catch {
121
- return;
122
- }
123
- current = dirname(current);
124
- }
125
- }
126
- /** Stage paths, tolerating those that no longer exist and were never tracked. */
127
- export function stage(ctx, paths) {
128
- const stageable = paths.filter((path) => {
129
- if (existsSync(join(ctx.repoRoot, ...path.split("/"))))
130
- return true;
131
- const tracked = gitMaybe(["ls-files", "--", path], { cwd: ctx.repoRoot });
132
- return tracked !== null && tracked !== "";
133
- });
134
- add(ctx.repoRoot, stageable);
135
- }
136
- /**
137
- * Every ID in the repository, read from names alone.
138
- *
139
- * Entity IDs are in directory names and comment IDs are in filenames (§2.2,
140
- * §2.6), so uniqueness can be checked without opening a single file — which
141
- * keeps `open` fast while still honouring "unique across all entity and
142
- * comment IDs".
143
- */
144
- export function scanAllIds(navRoot) {
145
- const ids = new Set();
146
- if (!existsSync(navRoot))
147
- return ids;
148
- const walk = (dir, depth) => {
149
- let entries;
150
- try {
151
- entries = readdirSync(dir, { withFileTypes: true, encoding: "utf8" });
152
- }
153
- catch {
154
- return;
155
- }
156
- for (const entry of entries) {
157
- if (entry.isDirectory()) {
158
- const parsed = parseDirName(entry.name);
159
- if (parsed)
160
- ids.add(parsed.id);
161
- if (depth < 6)
162
- walk(join(dir, entry.name), depth + 1);
163
- }
164
- else if (entry.isFile()) {
165
- const comment = parseCommentFileName(entry.name);
166
- if (comment)
167
- ids.add(comment.id);
168
- }
169
- }
170
- };
171
- walk(navRoot, 0);
172
- return ids;
173
- }
174
- /** Repository-relative path of an absolute path, in POSIX form. */
175
- export function toRepoRelative(ctx, absolute) {
176
- return relative(ctx.repoRoot, absolute).split(sep).join("/");
177
- }
178
- //# sourceMappingURL=workspace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/cli/workspace.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Comment files — spec 02 §2.6. One file per comment, named with a colon-free
3
- * UTC timestamp plus the comment's own ID, so listings sort chronologically and
4
- * concurrent comments can never collide.
5
- */
6
- export declare const COMMENT_NAME_PATTERN: RegExp;
7
- export interface CommentName {
8
- stamp: string;
9
- date: Date;
10
- id: string;
11
- }
12
- /** Build the filename for a comment created at `date` with identifier `id`. */
13
- export declare function commentFileName(date: Date, id: string): string;
14
- /** Parse a comment filename, or return null when it violates the grammar. */
15
- export declare function parseCommentFileName(name: string): CommentName | null;
16
- export interface ThreadItem<T> {
17
- comment: T;
18
- depth: number;
19
- }
20
- /**
21
- * Order comments for display: chronologically by filename, with replies placed
22
- * directly under the comment they answer and indented by one level.
23
- *
24
- * Replies to unknown comments, and reply cycles, degrade to top level rather
25
- * than disappearing.
26
- */
27
- export declare function threadOrder<T extends {
28
- id: string;
29
- replyTo?: string;
30
- fileName: string;
31
- }>(comments: readonly T[]): ThreadItem<T>[];