@ascribed/astro 0.1.0 → 0.1.2-next.2

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 (50) hide show
  1. package/README.md +6 -2
  2. package/dist/attributes.d.ts +17 -0
  3. package/dist/attributes.js +93 -5
  4. package/dist/attributes.js.map +1 -1
  5. package/dist/dev.d.ts +24 -1
  6. package/dist/dev.js +69 -9
  7. package/dist/dev.js.map +1 -1
  8. package/dist/index.d.ts +13 -0
  9. package/dist/index.js +84 -9
  10. package/dist/index.js.map +1 -1
  11. package/dist/rehype.d.ts +1 -1
  12. package/dist/rehype.js +19 -5
  13. package/dist/rehype.js.map +1 -1
  14. package/dist/review/devfile.d.ts +21 -0
  15. package/dist/review/devfile.js +39 -0
  16. package/dist/review/devfile.js.map +1 -0
  17. package/dist/review/diff.d.ts +21 -0
  18. package/dist/review/diff.js +47 -0
  19. package/dist/review/diff.js.map +1 -0
  20. package/dist/review/github.d.ts +19 -0
  21. package/dist/review/github.js +73 -0
  22. package/dist/review/github.js.map +1 -0
  23. package/dist/review/protocol.d.ts +98 -0
  24. package/dist/review/protocol.js +14 -0
  25. package/dist/review/protocol.js.map +1 -0
  26. package/dist/review/routes.d.ts +13 -0
  27. package/dist/review/routes.js +92 -0
  28. package/dist/review/routes.js.map +1 -0
  29. package/dist/review/server.d.ts +100 -0
  30. package/dist/review/server.js +336 -0
  31. package/dist/review/server.js.map +1 -0
  32. package/dist/run.d.ts +14 -1
  33. package/dist/run.js +19 -3
  34. package/dist/run.js.map +1 -1
  35. package/dist/satteri.d.ts +1 -1
  36. package/dist/satteri.js +22 -5
  37. package/dist/satteri.js.map +1 -1
  38. package/dist/toolbar/app.d.ts +2 -0
  39. package/dist/toolbar/app.js +951 -0
  40. package/dist/toolbar/app.js.map +1 -0
  41. package/dist/toolbar/page.d.ts +40 -0
  42. package/dist/toolbar/page.js +120 -0
  43. package/dist/toolbar/page.js.map +1 -0
  44. package/dist/toolbar/style.d.ts +1 -0
  45. package/dist/toolbar/style.js +250 -0
  46. package/dist/toolbar/style.js.map +1 -0
  47. package/dist/toolbar/text.d.ts +49 -0
  48. package/dist/toolbar/text.js +114 -0
  49. package/dist/toolbar/text.js.map +1 -0
  50. package/package.json +6 -3
@@ -0,0 +1,114 @@
1
+ /** "10 changes on this page", or "3 of 10 on this page" while stepping through them. */
2
+ export function position(total, at) {
3
+ if (total === 0)
4
+ return "No changes on this page";
5
+ if (at >= 0 && at < total)
6
+ return `${at + 1} of ${total} on this page`;
7
+ return total === 1 ? "1 change on this page" : `${total} changes on this page`;
8
+ }
9
+ /** "5 changed · 3 added · 1 removed · 1 moved", leaving out kinds with none. */
10
+ export function countsText(counts) {
11
+ const parts = [];
12
+ if (counts.changed > 0)
13
+ parts.push(`${counts.changed} changed`);
14
+ if (counts.added > 0)
15
+ parts.push(`${counts.added} added`);
16
+ if (counts.removed > 0)
17
+ parts.push(`${counts.removed} removed`);
18
+ if (counts.moved > 0)
19
+ parts.push(`${counts.moved} moved`);
20
+ return parts.join(" · ");
21
+ }
22
+ /** A changed page's line in the list: its counts, or what happened to it. */
23
+ export function pageDetail(page) {
24
+ if (page.status === "added")
25
+ return "new page";
26
+ if (page.status === "removed")
27
+ return "removed";
28
+ const counts = countsText(page.counts);
29
+ if (counts !== "")
30
+ return counts;
31
+ return page.page_changed.length > 0 ? `${page.page_changed.join(", ")} changed` : "changed";
32
+ }
33
+ /**
34
+ * The notice about the working tree's errors, or `undefined` with none: a
35
+ * page with an error may render oddly, which shouldn't read as the change.
36
+ */
37
+ export function errorsNotice(errors) {
38
+ if (errors <= 0)
39
+ return undefined;
40
+ const one = errors === 1;
41
+ return (`The working tree has ${one ? "1 error" : `${errors} errors`}, so a page may not show as ` +
42
+ `it will once ${one ? "it's" : "they're"} fixed. \`ascribe check\` lists ${one ? "it" : "them"}.`);
43
+ }
44
+ /** "1 unsent comment", "2 unsent comments". */
45
+ export function unsentText(count) {
46
+ return count === 1 ? "1 unsent comment" : `${count} unsent comments`;
47
+ }
48
+ /** The toolbar button's label: "Ascribe review", with the unsent count when there is one. */
49
+ export function buttonLabel(unsent) {
50
+ return unsent > 0 ? `Ascribe review · ${unsentText(unsent)}` : "Ascribe review";
51
+ }
52
+ /** The base's name and the pull request, as the panel's first words: "#128 against main". */
53
+ export function againstText(view) {
54
+ const pullRequest = view.threads.state === "on" ? `#${view.threads.pullRequest.number}` : null;
55
+ const requested = view.base?.requested ?? null;
56
+ // The pull request's base by its name ("main"), not the remote branch compared with ("origin/main").
57
+ const name = view.threads.state === "on" ? view.threads.pullRequest.baseRefName : undefined;
58
+ const base = requested !== null && name !== undefined && requested.endsWith(`/${name}`) ? name : requested;
59
+ return { pullRequest, base };
60
+ }
61
+ /** A sentence about the threads: why there are none, or how the checkout differs. */
62
+ export function threadsNotice(threads) {
63
+ if (threads.state !== "on")
64
+ return threads.message;
65
+ const { local, pullRequest } = threads;
66
+ const name = `#${pullRequest.number}`;
67
+ const commits = (n) => (n === 1 ? "1 commit" : `${n} commits`);
68
+ switch (local.state) {
69
+ case "same":
70
+ return undefined;
71
+ case "behind":
72
+ return `Your checkout is ${commits(local.behind)} behind ${name}, so some comments may be on lines you don't have. Pull to see the latest.`;
73
+ case "ahead":
74
+ return `You have ${commits(local.ahead)} that ${local.ahead === 1 ? "isn't" : "aren't"} pushed. You can comment only on lines that are on GitHub.`;
75
+ case "diverged":
76
+ return `Your checkout and ${name} have both moved on (${local.behind} behind, ${local.ahead} ahead). Some comments may be on lines you don't have, and you can comment only on lines that are on GitHub.`;
77
+ case "missing":
78
+ return `Your checkout doesn't have ${name}'s latest commit, so some comments may be on lines you don't have. Fetch to see the latest.`;
79
+ }
80
+ }
81
+ /**
82
+ * The changed page to offer after `current` (a content path): the next in
83
+ * path order, or past the last, the first (`first`). Removed pages are
84
+ * skipped. `null` when no other page changed.
85
+ */
86
+ export function nextChangedPage(pages, current) {
87
+ const open = pages.filter((p) => p.status !== "removed" && p.path !== current);
88
+ const first = open[0];
89
+ if (first === undefined)
90
+ return null;
91
+ const after = current === null ? undefined : open.find((p) => p.path > current);
92
+ return after ? { page: after, first: false } : { page: first, first: true };
93
+ }
94
+ /** The button past the last change: "Next changed page: Install Loom", by title as the page preview says it. */
95
+ export function nextPageText(next) {
96
+ return `${next.first ? "First" : "Next"} changed page: ${next.page.title ?? next.page.route}`;
97
+ }
98
+ /**
99
+ * Where a listed thread is, as the overlay's cards say it: its file's name
100
+ * and lines (`Options.md:16`), or for a thread on removed text, only the
101
+ * file's name, since its lines are the base's.
102
+ */
103
+ export function threadLocation(thread) {
104
+ const file = thread.path.slice(thread.path.lastIndexOf("/") + 1);
105
+ const removed = thread.kind === "review" && thread.side === "LEFT";
106
+ const lines = thread.lines;
107
+ if (removed || lines === undefined)
108
+ return { label: file, removed };
109
+ const range = lines.first === lines.last ? `${lines.first}` : `${lines.first}-${lines.last}`;
110
+ return { label: `${file}:${range}`, removed };
111
+ }
112
+ /** The hash that tells a page to go to a thread once it's drawn. */
113
+ export const THREAD_HASH = "#ascribe-thread=";
114
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/toolbar/text.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ascribed/astro",
3
- "version": "0.1.0",
3
+ "version": "0.1.2-next.2",
4
4
  "description": "The Astro integration for Ascribe.",
5
5
  "type": "module",
6
6
  "license": "MPL-2.0",
@@ -39,8 +39,9 @@
39
39
  "node": ">=24"
40
40
  },
41
41
  "dependencies": {
42
- "@ascribed/cli": "0.1.0",
43
- "@ascribed/elements": "0.1.0",
42
+ "@ascribed/cli": "0.1.2-next.2",
43
+ "@ascribed/elements": "0.1.2-next.2",
44
+ "@ascribed/review": "0.1.2-next.2",
44
45
  "property-information": "^7.2.0",
45
46
  "smol-toml": "^1.9.0"
46
47
  },
@@ -52,6 +53,7 @@
52
53
  "@types/node": "^24.0.0",
53
54
  "astro": "7.3.5",
54
55
  "hast-util-from-html": "^2.0.3",
56
+ "jsdom": "^30.1.1",
55
57
  "rehype-raw": "^7.0.0",
56
58
  "rehype-stringify": "^10.0.1",
57
59
  "remark-gfm": "^4.0.1",
@@ -64,6 +66,7 @@
64
66
  "publishConfig": {
65
67
  "access": "public"
66
68
  },
69
+ "gitHead": "1291a4b1db8edd88650e70f417d8037e26bceb38",
67
70
  "scripts": {
68
71
  "build": "tsc -p tsconfig.build.json",
69
72
  "typecheck": "tsc --noEmit",