@trebired/git-host 3.0.0 → 3.1.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 (261) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -1
  3. package/dist/api/forge/actions/filters.d.ts +10 -0
  4. package/dist/api/forge/actions/filters.d.ts.map +1 -0
  5. package/dist/api/forge/actions/filters.js +63 -0
  6. package/dist/api/forge/actions/filters.js.map +1 -0
  7. package/dist/api/forge/actions/run.d.ts +8 -0
  8. package/dist/api/forge/actions/run.d.ts.map +1 -0
  9. package/dist/api/forge/actions/run.js +129 -0
  10. package/dist/api/forge/actions/run.js.map +1 -0
  11. package/dist/api/forge/actions.d.ts +3 -12
  12. package/dist/api/forge/actions.d.ts.map +1 -1
  13. package/dist/api/forge/actions.js +2 -216
  14. package/dist/api/forge/actions.js.map +1 -1
  15. package/dist/api/handler/response.d.ts.map +1 -1
  16. package/dist/api/handler/response.js +55 -1
  17. package/dist/api/handler/response.js.map +1 -1
  18. package/dist/core/actions/expressions/read.d.ts +7 -0
  19. package/dist/core/actions/expressions/read.d.ts.map +1 -0
  20. package/dist/core/actions/expressions/read.js +148 -0
  21. package/dist/core/actions/expressions/read.js.map +1 -0
  22. package/dist/core/actions/expressions/tokenize.d.ts +4 -0
  23. package/dist/core/actions/expressions/tokenize.d.ts.map +1 -0
  24. package/dist/core/actions/expressions/tokenize.js +112 -0
  25. package/dist/core/actions/expressions/tokenize.js.map +1 -0
  26. package/dist/core/actions/expressions/types.d.ts +38 -0
  27. package/dist/core/actions/expressions/types.d.ts.map +1 -0
  28. package/dist/core/actions/expressions/types.js +2 -0
  29. package/dist/core/actions/expressions/types.js.map +1 -0
  30. package/dist/core/actions/expressions.d.ts +2 -9
  31. package/dist/core/actions/expressions.d.ts.map +1 -1
  32. package/dist/core/actions/expressions.js +2 -256
  33. package/dist/core/actions/expressions.js.map +1 -1
  34. package/dist/core/actions/normalize/finalize.d.ts +7 -0
  35. package/dist/core/actions/normalize/finalize.d.ts.map +1 -0
  36. package/dist/core/actions/normalize/finalize.js +70 -0
  37. package/dist/core/actions/normalize/finalize.js.map +1 -0
  38. package/dist/core/actions/normalize/shared.d.ts +19 -0
  39. package/dist/core/actions/normalize/shared.d.ts.map +1 -0
  40. package/dist/core/actions/normalize/shared.js +289 -0
  41. package/dist/core/actions/normalize/shared.js.map +1 -0
  42. package/dist/core/actions/normalize.d.ts +1 -3
  43. package/dist/core/actions/normalize.d.ts.map +1 -1
  44. package/dist/core/actions/normalize.js +2 -354
  45. package/dist/core/actions/normalize.js.map +1 -1
  46. package/dist/core/actions/release_assets.d.ts.map +1 -1
  47. package/dist/core/actions/release_assets.js.map +1 -1
  48. package/dist/core/actions/runner/launch.d.ts.map +1 -1
  49. package/dist/core/actions/runner/launch.js +12 -8
  50. package/dist/core/actions/runner/launch.js.map +1 -1
  51. package/dist/core/archive/commit.d.ts +6 -0
  52. package/dist/core/archive/commit.d.ts.map +1 -0
  53. package/dist/core/archive/commit.js +34 -0
  54. package/dist/core/archive/commit.js.map +1 -0
  55. package/dist/core/archive/context.d.ts +32 -0
  56. package/dist/core/archive/context.d.ts.map +1 -0
  57. package/dist/core/archive/context.js +61 -0
  58. package/dist/core/archive/context.js.map +1 -0
  59. package/dist/core/archive/generation.d.ts +11 -0
  60. package/dist/core/archive/generation.d.ts.map +1 -0
  61. package/dist/core/archive/generation.js +62 -0
  62. package/dist/core/archive/generation.js.map +1 -0
  63. package/dist/core/archive/links.d.ts +5 -0
  64. package/dist/core/archive/links.d.ts.map +1 -0
  65. package/dist/core/archive/links.js +62 -0
  66. package/dist/core/archive/links.js.map +1 -0
  67. package/dist/core/archive/open.d.ts +15 -0
  68. package/dist/core/archive/open.d.ts.map +1 -0
  69. package/dist/core/archive/open.js +159 -0
  70. package/dist/core/archive/open.js.map +1 -0
  71. package/dist/core/archive/read.d.ts +19 -0
  72. package/dist/core/archive/read.d.ts.map +1 -0
  73. package/dist/core/archive/read.js +62 -0
  74. package/dist/core/archive/read.js.map +1 -0
  75. package/dist/core/archive/resolve.d.ts +8 -0
  76. package/dist/core/archive/resolve.d.ts.map +1 -0
  77. package/dist/core/archive/resolve.js +67 -0
  78. package/dist/core/archive/resolve.js.map +1 -0
  79. package/dist/core/archive/shared.d.ts +50 -0
  80. package/dist/core/archive/shared.d.ts.map +1 -0
  81. package/dist/core/archive/shared.js +119 -0
  82. package/dist/core/archive/shared.js.map +1 -0
  83. package/dist/core/archive.d.ts +2 -18
  84. package/dist/core/archive.d.ts.map +1 -1
  85. package/dist/core/archive.js +16 -556
  86. package/dist/core/archive.js.map +1 -1
  87. package/dist/core/create/git/forge/base_methods.d.ts +5 -0
  88. package/dist/core/create/git/forge/base_methods.d.ts.map +1 -0
  89. package/dist/core/create/git/forge/base_methods.js +59 -0
  90. package/dist/core/create/git/forge/base_methods.js.map +1 -0
  91. package/dist/core/create/git/forge/context.d.ts +38 -0
  92. package/dist/core/create/git/forge/context.d.ts.map +1 -0
  93. package/dist/core/create/git/forge/context.js +174 -0
  94. package/dist/core/create/git/forge/context.js.map +1 -0
  95. package/dist/core/create/git/forge/fork_methods.d.ts +5 -0
  96. package/dist/core/create/git/forge/fork_methods.d.ts.map +1 -0
  97. package/dist/core/create/git/forge/fork_methods.js +133 -0
  98. package/dist/core/create/git/forge/fork_methods.js.map +1 -0
  99. package/dist/core/create/git/forge/release_methods.d.ts +5 -0
  100. package/dist/core/create/git/forge/release_methods.d.ts.map +1 -0
  101. package/dist/core/create/git/forge/release_methods.js +116 -0
  102. package/dist/core/create/git/forge/release_methods.js.map +1 -0
  103. package/dist/core/create/git/forge/shared.d.ts +9 -0
  104. package/dist/core/create/git/forge/shared.d.ts.map +1 -0
  105. package/dist/core/create/git/forge/shared.js +80 -0
  106. package/dist/core/create/git/forge/shared.js.map +1 -0
  107. package/dist/core/create/git/forge/social_methods.d.ts +5 -0
  108. package/dist/core/create/git/forge/social_methods.d.ts.map +1 -0
  109. package/dist/core/create/git/forge/social_methods.js +31 -0
  110. package/dist/core/create/git/forge/social_methods.js.map +1 -0
  111. package/dist/core/create/git/forge.d.ts.map +1 -1
  112. package/dist/core/create/git/forge.js +10 -594
  113. package/dist/core/create/git/forge.js.map +1 -1
  114. package/dist/core/create/git/host.d.ts.map +1 -1
  115. package/dist/core/create/git/host.js +139 -114
  116. package/dist/core/create/git/host.js.map +1 -1
  117. package/dist/core/create_git_host/remote_methods.d.ts.map +1 -1
  118. package/dist/core/create_git_host/remote_methods.js +92 -97
  119. package/dist/core/create_git_host/remote_methods.js.map +1 -1
  120. package/dist/core/forge_actions/job/release_asset.d.ts +17 -0
  121. package/dist/core/forge_actions/job/release_asset.d.ts.map +1 -0
  122. package/dist/core/forge_actions/job/release_asset.js +62 -0
  123. package/dist/core/forge_actions/job/release_asset.js.map +1 -0
  124. package/dist/core/forge_actions/job/steps.d.ts +37 -0
  125. package/dist/core/forge_actions/job/steps.d.ts.map +1 -0
  126. package/dist/core/forge_actions/job/steps.js +228 -0
  127. package/dist/core/forge_actions/job/steps.js.map +1 -0
  128. package/dist/core/forge_actions/runtime/api.d.ts +26 -0
  129. package/dist/core/forge_actions/runtime/api.d.ts.map +1 -0
  130. package/dist/core/forge_actions/runtime/api.js +210 -0
  131. package/dist/core/forge_actions/runtime/api.js.map +1 -0
  132. package/dist/core/forge_actions/runtime/engine.d.ts +25 -0
  133. package/dist/core/forge_actions/runtime/engine.d.ts.map +1 -0
  134. package/dist/core/forge_actions/runtime/engine.js +28 -0
  135. package/dist/core/forge_actions/runtime/engine.js.map +1 -0
  136. package/dist/core/forge_actions/runtime/job/execute.d.ts +19 -0
  137. package/dist/core/forge_actions/runtime/job/execute.d.ts.map +1 -0
  138. package/dist/core/forge_actions/runtime/job/execute.js +191 -0
  139. package/dist/core/forge_actions/runtime/job/execute.js.map +1 -0
  140. package/dist/core/forge_actions/runtime/job/step/execute.d.ts +7 -0
  141. package/dist/core/forge_actions/runtime/job/step/execute.d.ts.map +1 -0
  142. package/dist/core/forge_actions/runtime/job/step/execute.js +176 -0
  143. package/dist/core/forge_actions/runtime/job/step/execute.js.map +1 -0
  144. package/dist/core/forge_actions/runtime/queue.d.ts +11 -0
  145. package/dist/core/forge_actions/runtime/queue.d.ts.map +1 -0
  146. package/dist/core/forge_actions/runtime/queue.js +144 -0
  147. package/dist/core/forge_actions/runtime/queue.js.map +1 -0
  148. package/dist/core/forge_actions/runtime/run/execute.d.ts +9 -0
  149. package/dist/core/forge_actions/runtime/run/execute.d.ts.map +1 -0
  150. package/dist/core/forge_actions/runtime/run/execute.js +191 -0
  151. package/dist/core/forge_actions/runtime/run/execute.js.map +1 -0
  152. package/dist/core/forge_actions/runtime/types.d.ts +24 -0
  153. package/dist/core/forge_actions/runtime/types.d.ts.map +1 -0
  154. package/dist/core/forge_actions/runtime/types.js +2 -0
  155. package/dist/core/forge_actions/runtime/types.js.map +1 -0
  156. package/dist/core/forge_actions/runtime_support.d.ts +57 -0
  157. package/dist/core/forge_actions/runtime_support.d.ts.map +1 -0
  158. package/dist/core/forge_actions/runtime_support.js +276 -0
  159. package/dist/core/forge_actions/runtime_support.js.map +1 -0
  160. package/dist/core/forge_actions/shared.d.ts +92 -0
  161. package/dist/core/forge_actions/shared.d.ts.map +1 -0
  162. package/dist/core/forge_actions/shared.js +204 -0
  163. package/dist/core/forge_actions/shared.js.map +1 -0
  164. package/dist/core/forge_actions.d.ts +17 -24
  165. package/dist/core/forge_actions.d.ts.map +1 -1
  166. package/dist/core/forge_actions.js +33 -1479
  167. package/dist/core/forge_actions.js.map +1 -1
  168. package/dist/core/git_forge/storage_memory/actions.d.ts +5 -0
  169. package/dist/core/git_forge/storage_memory/actions.d.ts.map +1 -0
  170. package/dist/core/git_forge/storage_memory/actions.js +155 -0
  171. package/dist/core/git_forge/storage_memory/actions.js.map +1 -0
  172. package/dist/core/git_forge/storage_memory/adapter.d.ts +4 -0
  173. package/dist/core/git_forge/storage_memory/adapter.d.ts.map +1 -0
  174. package/dist/core/git_forge/storage_memory/adapter.js +118 -0
  175. package/dist/core/git_forge/storage_memory/adapter.js.map +1 -0
  176. package/dist/core/git_forge/storage_memory/state.d.ts +27 -0
  177. package/dist/core/git_forge/storage_memory/state.d.ts.map +1 -0
  178. package/dist/core/git_forge/storage_memory/state.js +53 -0
  179. package/dist/core/git_forge/storage_memory/state.js.map +1 -0
  180. package/dist/core/git_forge/storage_memory.d.ts +1 -3
  181. package/dist/core/git_forge/storage_memory.d.ts.map +1 -1
  182. package/dist/core/git_forge/storage_memory.js +1 -352
  183. package/dist/core/git_forge/storage_memory.js.map +1 -1
  184. package/dist/core/inspect/history.d.ts +13 -0
  185. package/dist/core/inspect/history.d.ts.map +1 -0
  186. package/dist/core/inspect/history.js +176 -0
  187. package/dist/core/inspect/history.js.map +1 -0
  188. package/dist/core/inspect/linguist.d.ts +12 -0
  189. package/dist/core/inspect/linguist.d.ts.map +1 -0
  190. package/dist/core/inspect/linguist.js +128 -0
  191. package/dist/core/inspect/linguist.js.map +1 -0
  192. package/dist/core/inspect/search_archive.d.ts +16 -0
  193. package/dist/core/inspect/search_archive.d.ts.map +1 -0
  194. package/dist/core/inspect/search_archive.js +88 -0
  195. package/dist/core/inspect/search_archive.js.map +1 -0
  196. package/dist/core/inspect/shared.d.ts +5 -0
  197. package/dist/core/inspect/shared.d.ts.map +1 -0
  198. package/dist/core/inspect/shared.js +47 -0
  199. package/dist/core/inspect/shared.js.map +1 -0
  200. package/dist/core/inspect/tree_blob.d.ts +16 -0
  201. package/dist/core/inspect/tree_blob.d.ts.map +1 -0
  202. package/dist/core/inspect/tree_blob.js +80 -0
  203. package/dist/core/inspect/tree_blob.js.map +1 -0
  204. package/dist/core/inspect.d.ts +3 -46
  205. package/dist/core/inspect.d.ts.map +1 -1
  206. package/dist/core/inspect.js +3 -546
  207. package/dist/core/inspect.js.map +1 -1
  208. package/dist/core/inspection/analysis.d.ts +4 -0
  209. package/dist/core/inspection/analysis.d.ts.map +1 -0
  210. package/dist/core/inspection/analysis.js +25 -0
  211. package/dist/core/inspection/analysis.js.map +1 -0
  212. package/dist/core/inspection/shared.d.ts +18 -0
  213. package/dist/core/inspection/shared.d.ts.map +1 -0
  214. package/dist/core/inspection/shared.js +112 -0
  215. package/dist/core/inspection/shared.js.map +1 -0
  216. package/dist/core/inspection/snapshots.d.ts +6 -0
  217. package/dist/core/inspection/snapshots.d.ts.map +1 -0
  218. package/dist/core/inspection/snapshots.js +270 -0
  219. package/dist/core/inspection/snapshots.js.map +1 -0
  220. package/dist/core/inspection/target.d.ts +4 -0
  221. package/dist/core/inspection/target.d.ts.map +1 -0
  222. package/dist/core/inspection/target.js +97 -0
  223. package/dist/core/inspection/target.js.map +1 -0
  224. package/dist/core/inspection/tree.d.ts +6 -0
  225. package/dist/core/inspection/tree.d.ts.map +1 -0
  226. package/dist/core/inspection/tree.js +103 -0
  227. package/dist/core/inspection/tree.js.map +1 -0
  228. package/dist/core/inspection.d.ts +6 -10
  229. package/dist/core/inspection.d.ts.map +1 -1
  230. package/dist/core/inspection.js +6 -592
  231. package/dist/core/inspection.js.map +1 -1
  232. package/dist/http/handler.d.ts.map +1 -1
  233. package/dist/http/handler.js +157 -133
  234. package/dist/http/handler.js.map +1 -1
  235. package/dist/ssh/server.d.ts.map +1 -1
  236. package/dist/ssh/server.js +171 -243
  237. package/dist/ssh/server.js.map +1 -1
  238. package/dist/types/forge/workflows/actions.d.ts +70 -0
  239. package/dist/types/forge/workflows/actions.d.ts.map +1 -0
  240. package/dist/types/forge/workflows/actions.js +3 -0
  241. package/dist/types/forge/workflows/actions.js.map +1 -0
  242. package/dist/types/forge/workflows/definition.d.ts +115 -0
  243. package/dist/types/forge/workflows/definition.d.ts.map +1 -0
  244. package/dist/types/forge/workflows/definition.js +2 -0
  245. package/dist/types/forge/workflows/definition.js.map +1 -0
  246. package/dist/types/forge/workflows/runs.d.ts +184 -0
  247. package/dist/types/forge/workflows/runs.d.ts.map +1 -0
  248. package/dist/types/forge/workflows/runs.js +2 -0
  249. package/dist/types/forge/workflows/runs.js.map +1 -0
  250. package/dist/types/forge/workflows.d.ts +3 -360
  251. package/dist/types/forge/workflows.d.ts.map +1 -1
  252. package/{bin → native}/git-host-actions-runner-darwin-arm64 +0 -0
  253. package/{bin → native}/git-host-actions-runner-darwin-x64 +0 -0
  254. package/{bin → native}/git-host-actions-runner-linux-arm64-gnu +0 -0
  255. package/{bin → native}/git-host-actions-runner-linux-x64-gnu +0 -0
  256. package/package.json +62 -10
  257. package/dist/frontend/js/utils/text.d.ts +0 -2
  258. package/dist/frontend/js/utils/text.d.ts.map +0 -1
  259. package/dist/frontend/js/utils/text.js +0 -4
  260. package/dist/frontend/js/utils/text.js.map +0 -1
  261. /package/{bin → native}/.gitkeep +0 -0
@@ -1,547 +1,4 @@
1
- import analyseRawContent from "linguist-js/dist/entry/analyseRaw.js";
2
- import { createGitArchiveService } from "./archive.js";
3
- import { GitHostError, isGitHostError } from "../errors.js";
4
- import { normalizeRepositoryRelativePath } from "../utils/paths.js";
5
- import { text } from "../utils/text.js";
6
- import { resolveTreeEntryIcon } from "./inspect/icon_theme.js";
7
- import { createLinguistProgressReporter } from "./inspect/linguist_progress.js";
8
- import { parseCommitLogOutput, parseNameStatusOutput, parseNumstatOutput } from "./repository.js";
9
- import { runGit, runGitBuffer } from "./run_git.js";
10
- import { assertRepositoryReady, decodeBlobContent, parseCommitMeta, parseLsTreeBuffer, resolveCommitForRef, summarizeFileLines, withFileStats, } from "./inspect/helpers.js";
11
- const silentArchiveLogger = {
12
- error() { },
13
- fail() { },
14
- info() { },
15
- warn() { },
16
- };
17
- const repositoryArchiveService = createGitArchiveService({
18
- logger: silentArchiveLogger,
19
- });
20
- function normalizeOptionalPath(value) {
21
- const raw = text(value);
22
- return raw ? normalizeRepositoryRelativePath(raw) : "";
23
- }
24
- function formatGitTimestamp(epochSecondsInput, timezoneInput) {
25
- const epochSeconds = Number(epochSecondsInput);
26
- const timezone = text(timezoneInput);
27
- if (!Number.isFinite(epochSeconds) || !timezone || !/^[+-]\d{4}$/.test(timezone)) {
28
- return "";
29
- }
30
- const sign = timezone.startsWith("-") ? -1 : 1;
31
- const hours = Number(timezone.slice(1, 3)) || 0;
32
- const minutes = Number(timezone.slice(3, 5)) || 0;
33
- const offsetMinutes = sign * ((hours * 60) + minutes);
34
- const shifted = new Date((epochSeconds + (offsetMinutes * 60)) * 1000);
35
- const year = shifted.getUTCFullYear();
36
- const month = String(shifted.getUTCMonth() + 1).padStart(2, "0");
37
- const day = String(shifted.getUTCDate()).padStart(2, "0");
38
- const hour = String(shifted.getUTCHours()).padStart(2, "0");
39
- const minute = String(shifted.getUTCMinutes()).padStart(2, "0");
40
- const second = String(shifted.getUTCSeconds()).padStart(2, "0");
41
- return `${year}-${month}-${day}T${hour}:${minute}:${second}${timezone.slice(0, 3)}:${timezone.slice(3, 5)}`;
42
- }
43
- async function readRepositoryTreeEntries(repository, options = {}) {
44
- const ref = text(options.ref, "HEAD");
45
- const treePath = options.path ? normalizeRepositoryRelativePath(options.path) : "";
46
- const recursive = options.recursive === true;
47
- const treeSpec = treePath ? `${ref}:${treePath}` : ref;
48
- const args = ["ls-tree", "-z", "-l"];
49
- if (recursive)
50
- args.push("-r");
51
- args.push(treeSpec);
52
- const treeRes = await runGitBuffer(args, { cwd: repository.path });
53
- if (treeRes.ok) {
54
- return parseLsTreeBuffer(treeRes.stdout, treePath);
55
- }
56
- if (treePath) {
57
- const fallbackRes = await runGitBuffer(["ls-tree", "-z", "-l", ref, "--", treePath], {
58
- cwd: repository.path,
59
- });
60
- if (fallbackRes.ok) {
61
- return parseLsTreeBuffer(fallbackRes.stdout, "");
62
- }
63
- }
64
- throw new GitHostError("git_command_failed", text(treeRes.stderr, "Failed to read repository tree."), {
65
- path: treePath,
66
- ref,
67
- repositoryId: repository.id,
68
- });
69
- }
70
- async function readTreeEntryBlob(repository, ref, entry) {
71
- const objectSpec = `${ref}:${entry.path}`;
72
- const contentRes = await runGitBuffer(["show", objectSpec], { cwd: repository.path });
73
- if (!contentRes.ok) {
74
- throw new GitHostError("git_command_failed", text(contentRes.stderr, "Failed to read blob content."), {
75
- path: entry.path,
76
- ref,
77
- repositoryId: repository.id,
78
- });
79
- }
80
- return {
81
- object: entry.object,
82
- path: entry.path,
83
- ref,
84
- size: entry.size == null ? 0 : entry.size,
85
- ...decodeBlobContent(contentRes.stdout),
86
- };
87
- }
88
- async function readRepositoryLinguistInput(repository, ref, onProgress) {
89
- const entries = await readRepositoryTreeEntries(repository, { recursive: true, ref });
90
- const blobEntries = entries.filter((entry) => entry.type === "blob");
91
- const input = {};
92
- let processedBlobs = 0;
93
- if (onProgress) {
94
- await onProgress("reading_blobs", {
95
- processed_blobs: 0,
96
- total_blobs: blobEntries.length,
97
- total_entries: entries.length,
98
- });
99
- }
100
- for (let index = 0; index < blobEntries.length; index += 16) {
101
- const chunk = blobEntries.slice(index, index + 16);
102
- const blobs = await Promise.all(chunk.map(async (entry) => {
103
- return await readTreeEntryBlob(repository, ref, entry);
104
- }));
105
- for (const blob of blobs) {
106
- if (!blob.is_binary && blob.encoding === "utf8") {
107
- input[blob.path] = blob.content;
108
- }
109
- }
110
- processedBlobs += chunk.length;
111
- if (onProgress) {
112
- await onProgress("reading_blobs", {
113
- processed_blobs: processedBlobs,
114
- total_blobs: blobEntries.length,
115
- total_entries: entries.length,
116
- });
117
- }
118
- }
119
- return {
120
- input,
121
- total_blobs: blobEntries.length,
122
- total_entries: entries.length,
123
- };
124
- }
125
- function normalizeLinguistLanguage(language, value, repositoryMetadata) {
126
- const name = text(language);
127
- const metadata = repositoryMetadata[name] || {};
128
- return {
129
- bytes: Number(value && value.bytes) || 0,
130
- color: text(metadata.color) || undefined,
131
- count: Number(value && value.count) || 0,
132
- lines: {
133
- content: Number(value && value.lines && value.lines.content) || 0,
134
- total: Number(value && value.lines && value.lines.total) || 0,
135
- },
136
- parent: text(metadata.parent) || undefined,
137
- type: text(metadata.type),
138
- };
139
- }
140
- function normalizeLinguistResults(result, target) {
141
- const repositoryMetadata = result.repository || {};
142
- return {
143
- commit: target.commit,
144
- files: {
145
- bytes: Number(result.files && result.files.bytes) || 0,
146
- count: Number(result.files && result.files.count) || 0,
147
- lines: {
148
- content: Number(result.files && result.files.lines && result.files.lines.content) || 0,
149
- total: Number(result.files && result.files.lines && result.files.lines.total) || 0,
150
- },
151
- results: Object.fromEntries(Object.entries(result.files && result.files.results ? result.files.results : {}).map(([filePath, language]) => [
152
- text(filePath),
153
- language == null ? null : text(language),
154
- ])),
155
- },
156
- languages: {
157
- bytes: Number(result.languages && result.languages.bytes) || 0,
158
- count: Number(result.languages && result.languages.count) || 0,
159
- lines: {
160
- content: Number(result.languages && result.languages.lines && result.languages.lines.content) || 0,
161
- total: Number(result.languages && result.languages.lines && result.languages.lines.total) || 0,
162
- },
163
- results: Object.fromEntries(Object.entries(result.languages && result.languages.results ? result.languages.results : {}).map(([language, value]) => [
164
- text(language),
165
- normalizeLinguistLanguage(language, value || {}, repositoryMetadata),
166
- ])),
167
- },
168
- ref: target.ref,
169
- unknown: {
170
- bytes: Number(result.unknown && result.unknown.bytes) || 0,
171
- count: Number(result.unknown && result.unknown.count) || 0,
172
- extensions: Object.fromEntries(Object.entries(result.unknown && result.unknown.extensions ? result.unknown.extensions : {}).map(([extension, bytes]) => [
173
- text(extension),
174
- Number(bytes) || 0,
175
- ])),
176
- filenames: Object.fromEntries(Object.entries(result.unknown && result.unknown.filenames ? result.unknown.filenames : {}).map(([fileName, bytes]) => [
177
- text(fileName),
178
- Number(bytes) || 0,
179
- ])),
180
- lines: {
181
- content: Number(result.unknown && result.unknown.lines && result.unknown.lines.content) || 0,
182
- total: Number(result.unknown && result.unknown.lines && result.unknown.lines.total) || 0,
183
- },
184
- },
185
- };
186
- }
187
- async function readRepositoryLinguist(repository, options = {}) {
188
- await assertRepositoryReady(repository);
189
- const progress = createLinguistProgressReporter({
190
- onProgress: options.onProgress,
191
- ref: text(options.ref, "HEAD"),
192
- repository,
193
- });
194
- let target = {
195
- commit: "",
196
- ref: text(options.ref, "HEAD"),
197
- };
198
- try {
199
- await progress.emit("queued");
200
- await progress.emit("resolving_ref", { ref: target.ref });
201
- target = await resolveCommitForRef(repository.path, target.ref, "Repository ref does not exist.");
202
- await progress.emit("listing_tree", { commit: target.commit, ref: target.ref });
203
- const linguistInput = await readRepositoryLinguistInput(repository, target.ref, progress.emit);
204
- await progress.emit("analyzing", {
205
- commit: target.commit,
206
- processed_blobs: linguistInput.total_blobs,
207
- ref: target.ref,
208
- total_blobs: linguistInput.total_blobs,
209
- total_entries: linguistInput.total_entries,
210
- });
211
- const result = await analyseRawContent(linguistInput.input, { offline: true });
212
- const normalized = normalizeLinguistResults(result, target);
213
- await progress.emit("completed", {
214
- commit: target.commit,
215
- processed_blobs: linguistInput.total_blobs,
216
- ref: target.ref,
217
- total_blobs: linguistInput.total_blobs,
218
- total_entries: linguistInput.total_entries,
219
- });
220
- return normalized;
221
- }
222
- catch (error) {
223
- await progress.emit("failed", {
224
- commit: text(target.commit) || undefined,
225
- error: {
226
- code: isGitHostError(error) ? error.code : (error instanceof Error ? "internal_error" : "internal_error"),
227
- message: error instanceof Error ? error.message : "Linguist scan failed.",
228
- },
229
- ref: target.ref,
230
- }).catch(() => {
231
- return undefined;
232
- });
233
- throw error;
234
- }
235
- }
236
- async function listRepositoryTree(repository, options = {}) {
237
- await assertRepositoryReady(repository);
238
- const ref = text(options.ref, "HEAD");
239
- const entries = await readRepositoryTreeEntries(repository, {
240
- path: options.path,
241
- recursive: options.recursive,
242
- ref,
243
- });
244
- if (options.icons !== true && options.linguist !== true)
245
- return entries;
246
- const linguist = options.linguist === true
247
- ? await readRepositoryLinguist(repository, {
248
- onProgress: options.onLinguistProgress,
249
- ref,
250
- })
251
- : null;
252
- return entries.map((entry) => ({
253
- ...entry,
254
- ...(options.icons === true ? { icon: resolveTreeEntryIcon(entry) } : {}),
255
- ...(options.linguist === true ? { language: linguist && Object.prototype.hasOwnProperty.call(linguist.files.results, entry.path) ? linguist.files.results[entry.path] : null } : {}),
256
- }));
257
- }
258
- async function readRepositoryBlob(repository, options) {
259
- await assertRepositoryReady(repository);
260
- const ref = text(options && options.ref, "HEAD");
261
- const blobPath = normalizeRepositoryRelativePath(options && options.path);
262
- const objectSpec = `${ref}:${blobPath}`;
263
- const [revRes, typeRes, sizeRes, contentRes] = await Promise.all([
264
- runGit(["rev-parse", "--verify", objectSpec], { cwd: repository.path }),
265
- runGit(["cat-file", "-t", objectSpec], { cwd: repository.path }),
266
- runGit(["cat-file", "-s", objectSpec], { cwd: repository.path }),
267
- runGitBuffer(["show", objectSpec], { cwd: repository.path }),
268
- ]);
269
- if (!revRes.ok) {
270
- throw new GitHostError("path_not_found", text(revRes.stderr, "Blob does not exist."), {
271
- path: blobPath,
272
- ref,
273
- repositoryId: repository.id,
274
- });
275
- }
276
- if (!typeRes.ok || text(typeRes.stdout) !== "blob") {
277
- throw new GitHostError("path_not_blob", text(typeRes.stderr, "Requested path is not a blob."), {
278
- path: blobPath,
279
- ref,
280
- repositoryId: repository.id,
281
- });
282
- }
283
- if (!sizeRes.ok) {
284
- throw new GitHostError("git_command_failed", text(sizeRes.stderr, "Failed to read blob size."), {
285
- path: blobPath,
286
- ref,
287
- repositoryId: repository.id,
288
- });
289
- }
290
- if (!contentRes.ok) {
291
- throw new GitHostError("git_command_failed", text(contentRes.stderr, "Failed to read blob content."), {
292
- path: blobPath,
293
- ref,
294
- repositoryId: repository.id,
295
- });
296
- }
297
- return {
298
- object: text(revRes.stdout),
299
- path: blobPath,
300
- ref,
301
- size: Number(text(sizeRes.stdout)) || 0,
302
- ...decodeBlobContent(contentRes.stdout),
303
- };
304
- }
305
- async function readRepositoryCommit(repository, commitRefInput) {
306
- await assertRepositoryReady(repository);
307
- const commitRef = text(commitRefInput);
308
- if (!commitRef) {
309
- throw new GitHostError("git_command_failed", "Commit ref is required.");
310
- }
311
- const revRes = await runGit(["rev-parse", "--verify", `${commitRef}^{commit}`], { cwd: repository.path });
312
- if (!revRes.ok) {
313
- throw new GitHostError("git_command_failed", text(revRes.stderr, "Commit does not exist."), {
314
- commitRef,
315
- repositoryId: repository.id,
316
- });
317
- }
318
- const commitHash = text(revRes.stdout);
319
- const [metaRes, messageRes, numstatRes, nameStatusRes, diffRes] = await Promise.all([
320
- runGit([
321
- "show",
322
- "--quiet",
323
- "--date=iso-strict",
324
- "--format=%H%x1f%h%x1f%P%x1f%an%x1f%ae%x1f%ad%x1f%s",
325
- commitHash,
326
- ], { cwd: repository.path }),
327
- runGit(["show", "--quiet", "--format=%B", commitHash], { cwd: repository.path }),
328
- runGit(["show", "--find-renames", "--numstat", "--format=", commitHash], { cwd: repository.path }),
329
- runGit(["show", "--find-renames", "--name-status", "--format=", commitHash], { cwd: repository.path }),
330
- runGit(["show", "--find-renames", "--format=", commitHash], { cwd: repository.path }),
331
- ]);
332
- if (!metaRes.ok)
333
- throw new GitHostError("git_command_failed", text(metaRes.stderr, "Failed to read commit metadata."));
334
- if (!messageRes.ok)
335
- throw new GitHostError("git_command_failed", text(messageRes.stderr, "Failed to read commit message."));
336
- if (!numstatRes.ok)
337
- throw new GitHostError("git_command_failed", text(numstatRes.stderr, "Failed to read commit diff."));
338
- if (!nameStatusRes.ok)
339
- throw new GitHostError("git_command_failed", text(nameStatusRes.stderr, "Failed to read commit files."));
340
- if (!diffRes.ok)
341
- throw new GitHostError("git_command_failed", text(diffRes.stderr, "Failed to read commit diff."));
342
- const files = withFileStats(parseNameStatusOutput(nameStatusRes.stdout), parseNumstatOutput(numstatRes.stdout));
343
- const totals = summarizeFileLines(files);
344
- return {
345
- commit: {
346
- ...parseCommitMeta(metaRes.stdout),
347
- message: String(messageRes.stdout || "").trim(),
348
- },
349
- files,
350
- diff: String(diffRes.stdout || ""),
351
- file_count: files.length,
352
- lines_added: totals.lines_added,
353
- lines_removed: totals.lines_removed,
354
- };
355
- }
356
- async function readRepositoryCompare(repository, options) {
357
- await assertRepositoryReady(repository);
358
- const base = await resolveCommitForRef(repository.path, options && options.baseRef, "Base branch or ref does not exist.");
359
- const head = await resolveCommitForRef(repository.path, options && options.headRef, "Head branch or ref does not exist.");
360
- const range = `${base.ref}...${head.ref}`;
361
- const commitRange = `${base.ref}..${head.ref}`;
362
- const path = normalizeOptionalPath(options && options.path);
363
- const diffNumstatArgs = ["diff", "--find-renames", "--numstat", range];
364
- const diffNameStatusArgs = ["diff", "--find-renames", "--name-status", range];
365
- const diffArgs = ["diff", "--find-renames", range];
366
- const logArgs = ["log", commitRange, "--date=iso-strict", "--format=%H%x1f%h%x1f%an%x1f%ae%x1f%ad%x1f%s"];
367
- if (path) {
368
- diffNumstatArgs.push("--", path);
369
- diffNameStatusArgs.push("--", path);
370
- diffArgs.push("--", path);
371
- logArgs.push("--", path);
372
- }
373
- const [numstatRes, nameStatusRes, diffRes, logRes, mergeBaseRes] = await Promise.all([
374
- runGit(diffNumstatArgs, { cwd: repository.path }),
375
- runGit(diffNameStatusArgs, { cwd: repository.path }),
376
- runGit(diffArgs, { cwd: repository.path }),
377
- runGit(logArgs, { cwd: repository.path }),
378
- runGit(["merge-base", base.ref, head.ref], { cwd: repository.path }),
379
- ]);
380
- if (!numstatRes.ok)
381
- throw new GitHostError("git_command_failed", text(numstatRes.stderr, "Failed to read compare diff."));
382
- if (!nameStatusRes.ok)
383
- throw new GitHostError("git_command_failed", text(nameStatusRes.stderr, "Failed to read compare files."));
384
- if (!diffRes.ok)
385
- throw new GitHostError("git_command_failed", text(diffRes.stderr, "Failed to read compare diff."));
386
- if (!logRes.ok)
387
- throw new GitHostError("git_command_failed", text(logRes.stderr, "Failed to read compare commits."));
388
- const files = withFileStats(parseNameStatusOutput(nameStatusRes.stdout), parseNumstatOutput(numstatRes.stdout));
389
- const commits = parseCommitLogOutput(logRes.stdout);
390
- const totals = summarizeFileLines(files);
391
- return {
392
- base_ref: base.ref,
393
- head_ref: head.ref,
394
- base_commit: base.commit,
395
- head_commit: head.commit,
396
- merge_base: mergeBaseRes.ok ? text(mergeBaseRes.stdout) : "",
397
- files,
398
- commits,
399
- diff: String(diffRes.stdout || ""),
400
- file_count: files.length,
401
- commit_count: commits.length,
402
- lines_added: totals.lines_added,
403
- lines_removed: totals.lines_removed,
404
- has_changes: Boolean(files.length || commits.length),
405
- };
406
- }
407
- async function readRepositoryBlame(repository, options) {
408
- await assertRepositoryReady(repository);
409
- const ref = text(options && options.ref, "HEAD");
410
- const filePath = normalizeRepositoryRelativePath(options && options.path);
411
- const blameRes = await runGit(["blame", "--line-porcelain", ref, "--", filePath], { cwd: repository.path });
412
- if (!blameRes.ok) {
413
- throw new GitHostError("git_command_failed", text(blameRes.stderr, "Failed to read blame information."), {
414
- path: filePath,
415
- ref,
416
- repositoryId: repository.id,
417
- });
418
- }
419
- const rows = String(blameRes.stdout || "").split(/\r?\n/);
420
- const lines = [];
421
- let current = null;
422
- for (const row of rows) {
423
- if (!row)
424
- continue;
425
- const header = row.match(/^([0-9a-f]{40}) (\d+) (\d+) (\d+)$/);
426
- if (header) {
427
- current = {
428
- author_email: "",
429
- author_name: "",
430
- authored_at: "",
431
- author_tz: "",
432
- commit_hash: text(header[1]),
433
- commit_short_hash: text(header[1]).slice(0, 7),
434
- content: "",
435
- line_number: Number(header[3]) || 0,
436
- original_line_number: Number(header[2]) || 0,
437
- summary: "",
438
- };
439
- continue;
440
- }
441
- if (!current)
442
- continue;
443
- if (row.startsWith("author "))
444
- current.author_name = row.slice("author ".length);
445
- else if (row.startsWith("author-mail "))
446
- current.author_email = row.slice("author-mail ".length).replace(/^<|>$/g, "");
447
- else if (row.startsWith("author-time "))
448
- current.authored_at = row.slice("author-time ".length);
449
- else if (row.startsWith("author-tz "))
450
- current.author_tz = row.slice("author-tz ".length);
451
- else if (row.startsWith("summary "))
452
- current.summary = row.slice("summary ".length);
453
- else if (row.startsWith("\t")) {
454
- current.content = row.slice(1);
455
- lines.push({
456
- author_email: current.author_email,
457
- author_name: current.author_name,
458
- authored_at: formatGitTimestamp(current.authored_at, current.author_tz),
459
- commit_hash: current.commit_hash,
460
- commit_short_hash: current.commit_short_hash,
461
- content: current.content,
462
- line_number: current.line_number,
463
- original_line_number: current.original_line_number,
464
- summary: current.summary,
465
- });
466
- current = null;
467
- }
468
- }
469
- return {
470
- lines,
471
- path: filePath,
472
- ref,
473
- };
474
- }
475
- async function searchRepository(repository, options) {
476
- await assertRepositoryReady(repository);
477
- const query = text(options && options.query);
478
- if (!query) {
479
- throw new GitHostError("git_command_failed", "Search query is required.", {
480
- repositoryId: repository.id,
481
- });
482
- }
483
- const target = await resolveCommitForRef(repository.path, text(options && options.ref, "HEAD"), "Search ref does not exist.");
484
- const path = normalizeOptionalPath(options && options.path);
485
- const limit = Number(options && options.limit) > 0 ? Number(options && options.limit) : 0;
486
- const args = ["grep", "-n", "--column", "-z", "-I", "--full-name"];
487
- if (options && options.caseSensitive === false)
488
- args.push("-i");
489
- if (!options || options.regexp !== true)
490
- args.push("-F");
491
- args.push("-e", query, target.ref);
492
- if (path)
493
- args.push("--", path);
494
- const grepRes = await runGitBuffer(args, { cwd: repository.path });
495
- if (!grepRes.ok && grepRes.code !== 1) {
496
- throw new GitHostError("git_command_failed", text(grepRes.stderr, "Failed to search repository."), {
497
- path,
498
- query,
499
- ref: target.ref,
500
- repositoryId: repository.id,
501
- });
502
- }
503
- const tokens = grepRes.stdout.toString("utf8").split("\0").filter((entry) => entry !== "");
504
- const parsed = [];
505
- for (let index = 0; index + 3 < tokens.length; index += 4) {
506
- const pathToken = tokens[index] || "";
507
- const lineNumber = Number(tokens[index + 1]) || 0;
508
- const column = Number(tokens[index + 2]) || 0;
509
- const line = String(tokens[index + 3] || "").replace(/\r?\n$/, "");
510
- const filePath = pathToken.startsWith(`${target.ref}:`) ? pathToken.slice(target.ref.length + 1) : pathToken;
511
- parsed.push({
512
- column,
513
- line,
514
- line_number: lineNumber,
515
- path: filePath,
516
- });
517
- }
518
- const totalMatches = parsed.length;
519
- const limited = limit > 0 ? parsed.slice(0, limit) : parsed;
520
- const filesMap = new Map();
521
- for (const match of limited) {
522
- const current = filesMap.get(match.path) || {
523
- match_count: 0,
524
- matches: [],
525
- path: match.path,
526
- };
527
- current.match_count += 1;
528
- current.matches.push({
529
- column: match.column,
530
- line: match.line,
531
- line_number: match.line_number,
532
- });
533
- filesMap.set(match.path, current);
534
- }
535
- return {
536
- files: Array.from(filesMap.values()),
537
- match_count: limited.length,
538
- query,
539
- ref: target.ref,
540
- truncated: limit > 0 && totalMatches > limit,
541
- };
542
- }
543
- async function readRepositoryArchive(repository, options = {}) {
544
- return await repositoryArchiveService.read(repository, options);
545
- }
546
- export { listRepositoryTree, readRepositoryTreeEntries, readRepositoryArchive, readRepositoryBlame, readRepositoryBlob, readRepositoryCommit, readRepositoryCompare, readRepositoryLinguist, searchRepository, };
1
+ export { readRepositoryBlame, readRepositoryCommit, readRepositoryCompare } from "./inspect/history.js";
2
+ export { readRepositoryArchive, searchRepository } from "./inspect/search_archive.js";
3
+ export { listRepositoryTree, readRepositoryBlob, readRepositoryLinguist, readRepositoryTreeEntries } from "./inspect/tree_blob.js";
547
4
  //# sourceMappingURL=inspect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/core/inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/core/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GitRepositoryAnalysis, GitRepositoryHandle, ReadRepositoryAnalysisOptions } from "../../types.js";
2
+ declare function readRepositoryAnalysis(repository: GitRepositoryHandle, options?: ReadRepositoryAnalysisOptions): Promise<GitRepositoryAnalysis>;
3
+ export { readRepositoryAnalysis };
4
+ //# sourceMappingURL=analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/core/inspection/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAI/G,iBAAe,sBAAsB,CACnC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,qBAAqB,CAAC,CAqBhC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { createEmptyLinguistSnapshot, inspectionSnapshotRef } from "./shared.js";
2
+ import { readRepositoryTree } from "./snapshots.js";
3
+ async function readRepositoryAnalysis(repository, options = {}) {
4
+ const tree = await readRepositoryTree(repository, {
5
+ ascii: options.ascii,
6
+ icons: options.icons,
7
+ ifMissingRef: options.ifMissingRef,
8
+ ifUnborn: options.ifUnborn,
9
+ linguist: true,
10
+ nested: options.nested,
11
+ onLinguistProgress: options.onLinguistProgress,
12
+ onProgress: options.onProgress,
13
+ path: options.path,
14
+ recursive: options.recursive !== false,
15
+ ref: options.ref,
16
+ });
17
+ return {
18
+ empty: tree.empty,
19
+ linguist: tree.linguist || createEmptyLinguistSnapshot(inspectionSnapshotRef(tree.target)),
20
+ target: tree.target,
21
+ tree,
22
+ };
23
+ }
24
+ export { readRepositoryAnalysis };
25
+ //# sourceMappingURL=analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/core/inspection/analysis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,KAAK,UAAU,sBAAsB,CACnC,UAA+B,EAC/B,UAAyC,EAAE;IAE3C,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE;QAChD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,KAAK;QACtC,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,2BAA2B,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1F,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI;KACL,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}