@trebired/git-host 0.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 (212) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +21 -0
  3. package/README.md +451 -0
  4. package/dist/api/handler/action.d.ts +5 -0
  5. package/dist/api/handler/action.d.ts.map +1 -0
  6. package/dist/api/handler/action.js +47 -0
  7. package/dist/api/handler/action.js.map +1 -0
  8. package/dist/api/handler/response.d.ts +34 -0
  9. package/dist/api/handler/response.d.ts.map +1 -0
  10. package/dist/api/handler/response.js +87 -0
  11. package/dist/api/handler/response.js.map +1 -0
  12. package/dist/api/handler/route.d.ts +15 -0
  13. package/dist/api/handler/route.d.ts.map +1 -0
  14. package/dist/api/handler/route.js +51 -0
  15. package/dist/api/handler/route.js.map +1 -0
  16. package/dist/api/handler.d.ts +6 -0
  17. package/dist/api/handler.d.ts.map +1 -0
  18. package/dist/api/handler.js +117 -0
  19. package/dist/api/handler.js.map +1 -0
  20. package/dist/constants.d.ts +8 -0
  21. package/dist/constants.d.ts.map +1 -0
  22. package/dist/constants.js +16 -0
  23. package/dist/constants.js.map +1 -0
  24. package/dist/core/create_git_host/branch_methods.d.ts +5 -0
  25. package/dist/core/create_git_host/branch_methods.d.ts.map +1 -0
  26. package/dist/core/create_git_host/branch_methods.js +137 -0
  27. package/dist/core/create_git_host/branch_methods.js.map +1 -0
  28. package/dist/core/create_git_host/content_methods.d.ts +5 -0
  29. package/dist/core/create_git_host/content_methods.d.ts.map +1 -0
  30. package/dist/core/create_git_host/content_methods.js +24 -0
  31. package/dist/core/create_git_host/content_methods.js.map +1 -0
  32. package/dist/core/create_git_host/remote_methods.d.ts +5 -0
  33. package/dist/core/create_git_host/remote_methods.d.ts.map +1 -0
  34. package/dist/core/create_git_host/remote_methods.js +48 -0
  35. package/dist/core/create_git_host/remote_methods.js.map +1 -0
  36. package/dist/core/create_git_host/shared.d.ts +21 -0
  37. package/dist/core/create_git_host/shared.d.ts.map +1 -0
  38. package/dist/core/create_git_host/shared.js +17 -0
  39. package/dist/core/create_git_host/shared.js.map +1 -0
  40. package/dist/core/create_git_host/working_tree_methods.d.ts +5 -0
  41. package/dist/core/create_git_host/working_tree_methods.d.ts.map +1 -0
  42. package/dist/core/create_git_host/working_tree_methods.js +63 -0
  43. package/dist/core/create_git_host/working_tree_methods.js.map +1 -0
  44. package/dist/core/create_git_host.d.ts +4 -0
  45. package/dist/core/create_git_host.d.ts.map +1 -0
  46. package/dist/core/create_git_host.js +167 -0
  47. package/dist/core/create_git_host.js.map +1 -0
  48. package/dist/core/inspect/helpers.d.ts +27 -0
  49. package/dist/core/inspect/helpers.d.ts.map +1 -0
  50. package/dist/core/inspect/helpers.js +86 -0
  51. package/dist/core/inspect/helpers.js.map +1 -0
  52. package/dist/core/inspect.d.ts +17 -0
  53. package/dist/core/inspect.d.ts.map +1 -0
  54. package/dist/core/inspect.js +174 -0
  55. package/dist/core/inspect.js.map +1 -0
  56. package/dist/core/locks.d.ts +5 -0
  57. package/dist/core/locks.d.ts.map +1 -0
  58. package/dist/core/locks.js +27 -0
  59. package/dist/core/locks.js.map +1 -0
  60. package/dist/core/operation_state.d.ts +4 -0
  61. package/dist/core/operation_state.d.ts.map +1 -0
  62. package/dist/core/operation_state.js +51 -0
  63. package/dist/core/operation_state.js.map +1 -0
  64. package/dist/core/remote.d.ts +13 -0
  65. package/dist/core/remote.d.ts.map +1 -0
  66. package/dist/core/remote.js +187 -0
  67. package/dist/core/remote.js.map +1 -0
  68. package/dist/core/repository/parsers.d.ts +12 -0
  69. package/dist/core/repository/parsers.d.ts.map +1 -0
  70. package/dist/core/repository/parsers.js +181 -0
  71. package/dist/core/repository/parsers.js.map +1 -0
  72. package/dist/core/repository.d.ts +11 -0
  73. package/dist/core/repository.d.ts.map +1 -0
  74. package/dist/core/repository.js +81 -0
  75. package/dist/core/repository.js.map +1 -0
  76. package/dist/core/run_git/env.d.ts +7 -0
  77. package/dist/core/run_git/env.d.ts.map +1 -0
  78. package/dist/core/run_git/env.js +18 -0
  79. package/dist/core/run_git/env.js.map +1 -0
  80. package/dist/core/run_git/process.d.ts +13 -0
  81. package/dist/core/run_git/process.d.ts.map +1 -0
  82. package/dist/core/run_git/process.js +96 -0
  83. package/dist/core/run_git/process.js.map +1 -0
  84. package/dist/core/run_git/repository_setup.d.ts +20 -0
  85. package/dist/core/run_git/repository_setup.d.ts.map +1 -0
  86. package/dist/core/run_git/repository_setup.js +116 -0
  87. package/dist/core/run_git/repository_setup.js.map +1 -0
  88. package/dist/core/run_git.d.ts +6 -0
  89. package/dist/core/run_git.d.ts.map +1 -0
  90. package/dist/core/run_git.js +6 -0
  91. package/dist/core/run_git.js.map +1 -0
  92. package/dist/core/working_tree/mutate.d.ts +9 -0
  93. package/dist/core/working_tree/mutate.d.ts.map +1 -0
  94. package/dist/core/working_tree/mutate.js +159 -0
  95. package/dist/core/working_tree/mutate.js.map +1 -0
  96. package/dist/core/working_tree/read.d.ts +6 -0
  97. package/dist/core/working_tree/read.d.ts.map +1 -0
  98. package/dist/core/working_tree/read.js +108 -0
  99. package/dist/core/working_tree/read.js.map +1 -0
  100. package/dist/core/working_tree/shared.d.ts +20 -0
  101. package/dist/core/working_tree/shared.d.ts.map +1 -0
  102. package/dist/core/working_tree/shared.js +87 -0
  103. package/dist/core/working_tree/shared.js.map +1 -0
  104. package/dist/core/working_tree.d.ts +3 -0
  105. package/dist/core/working_tree.d.ts.map +1 -0
  106. package/dist/core/working_tree.js +3 -0
  107. package/dist/core/working_tree.js.map +1 -0
  108. package/dist/errors.d.ts +10 -0
  109. package/dist/errors.d.ts.map +1 -0
  110. package/dist/errors.js +13 -0
  111. package/dist/errors.js.map +1 -0
  112. package/dist/http/handler/helpers.d.ts +35 -0
  113. package/dist/http/handler/helpers.d.ts.map +1 -0
  114. package/dist/http/handler/helpers.js +146 -0
  115. package/dist/http/handler/helpers.js.map +1 -0
  116. package/dist/http/handler.d.ts +6 -0
  117. package/dist/http/handler.d.ts.map +1 -0
  118. package/dist/http/handler.js +208 -0
  119. package/dist/http/handler.js.map +1 -0
  120. package/dist/index.d.ts +18 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +15 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/logging.d.ts +4 -0
  125. package/dist/logging.d.ts.map +1 -0
  126. package/dist/logging.js +134 -0
  127. package/dist/logging.js.map +1 -0
  128. package/dist/react/client/error.d.ts +14 -0
  129. package/dist/react/client/error.d.ts.map +1 -0
  130. package/dist/react/client/error.js +32 -0
  131. package/dist/react/client/error.js.map +1 -0
  132. package/dist/react/client/helpers.d.ts +12 -0
  133. package/dist/react/client/helpers.d.ts.map +1 -0
  134. package/dist/react/client/helpers.js +45 -0
  135. package/dist/react/client/helpers.js.map +1 -0
  136. package/dist/react/client/types.d.ts +61 -0
  137. package/dist/react/client/types.d.ts.map +1 -0
  138. package/dist/react/client/types.js +2 -0
  139. package/dist/react/client/types.js.map +1 -0
  140. package/dist/react/client.d.ts +6 -0
  141. package/dist/react/client.d.ts.map +1 -0
  142. package/dist/react/client.js +115 -0
  143. package/dist/react/client.js.map +1 -0
  144. package/dist/react/hooks/query.d.ts +10 -0
  145. package/dist/react/hooks/query.d.ts.map +1 -0
  146. package/dist/react/hooks/query.js +74 -0
  147. package/dist/react/hooks/query.js.map +1 -0
  148. package/dist/react/hooks/resources.d.ts +11 -0
  149. package/dist/react/hooks/resources.d.ts.map +1 -0
  150. package/dist/react/hooks/resources.js +113 -0
  151. package/dist/react/hooks/resources.js.map +1 -0
  152. package/dist/react/hooks/types.d.ts +40 -0
  153. package/dist/react/hooks/types.d.ts.map +1 -0
  154. package/dist/react/hooks/types.js +2 -0
  155. package/dist/react/hooks/types.js.map +1 -0
  156. package/dist/react/hooks.d.ts +4 -0
  157. package/dist/react/hooks.d.ts.map +1 -0
  158. package/dist/react/hooks.js +3 -0
  159. package/dist/react/hooks.js.map +1 -0
  160. package/dist/react/index.d.ts +5 -0
  161. package/dist/react/index.d.ts.map +1 -0
  162. package/dist/react/index.js +3 -0
  163. package/dist/react/index.js.map +1 -0
  164. package/dist/ssh/keys.d.ts +18 -0
  165. package/dist/ssh/keys.d.ts.map +1 -0
  166. package/dist/ssh/keys.js +41 -0
  167. package/dist/ssh/keys.js.map +1 -0
  168. package/dist/ssh/server/audit.d.ts +5 -0
  169. package/dist/ssh/server/audit.d.ts.map +1 -0
  170. package/dist/ssh/server/audit.js +21 -0
  171. package/dist/ssh/server/audit.js.map +1 -0
  172. package/dist/ssh/server/shared.d.ts +30 -0
  173. package/dist/ssh/server/shared.d.ts.map +1 -0
  174. package/dist/ssh/server/shared.js +93 -0
  175. package/dist/ssh/server/shared.js.map +1 -0
  176. package/dist/ssh/server.d.ts +5 -0
  177. package/dist/ssh/server.d.ts.map +1 -0
  178. package/dist/ssh/server.js +265 -0
  179. package/dist/ssh/server.js.map +1 -0
  180. package/dist/types/common.d.ts +32 -0
  181. package/dist/types/common.d.ts.map +1 -0
  182. package/dist/types/common.js +2 -0
  183. package/dist/types/common.js.map +1 -0
  184. package/dist/types/host.d.ts +142 -0
  185. package/dist/types/host.d.ts.map +1 -0
  186. package/dist/types/host.js +2 -0
  187. package/dist/types/host.js.map +1 -0
  188. package/dist/types/index.d.ts +5 -0
  189. package/dist/types/index.d.ts.map +1 -0
  190. package/dist/types/index.js +2 -0
  191. package/dist/types/index.js.map +1 -0
  192. package/dist/types/repository.d.ts +163 -0
  193. package/dist/types/repository.d.ts.map +1 -0
  194. package/dist/types/repository.js +2 -0
  195. package/dist/types/repository.js.map +1 -0
  196. package/dist/types/transports.d.ts +156 -0
  197. package/dist/types/transports.d.ts.map +1 -0
  198. package/dist/types/transports.js +2 -0
  199. package/dist/types/transports.js.map +1 -0
  200. package/dist/types.d.ts +2 -0
  201. package/dist/types.d.ts.map +1 -0
  202. package/dist/types.js +2 -0
  203. package/dist/types.js.map +1 -0
  204. package/dist/utils/paths.d.ts +10 -0
  205. package/dist/utils/paths.d.ts.map +1 -0
  206. package/dist/utils/paths.js +51 -0
  207. package/dist/utils/paths.js.map +1 -0
  208. package/dist/utils/text.d.ts +4 -0
  209. package/dist/utils/text.d.ts.map +1 -0
  210. package/dist/utils/text.js +10 -0
  211. package/dist/utils/text.js.map +1 -0
  212. package/package.json +81 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/api/handler/response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ declare function parseGitApiRoute(pathnameInput: unknown, basePathInput: unknown): {
2
+ action: "blob" | "branches" | "diff" | "summary" | "tree";
3
+ repositoryKey: string;
4
+ commitRef?: undefined;
5
+ } | {
6
+ action: "commits";
7
+ repositoryKey: string;
8
+ commitRef?: undefined;
9
+ } | {
10
+ action: "commit";
11
+ commitRef: string;
12
+ repositoryKey: string;
13
+ };
14
+ export { parseGitApiRoute };
15
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/api/handler/route.ts"],"names":[],"mappings":"AAiBA,iBAAS,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO;;;;;;;;;;;;EAgCvE;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { text } from "../../utils/text.js";
2
+ function normalizeBasePath(value) {
3
+ const next = text(value).replace(/\/+$/g, "");
4
+ if (!next || next === "/")
5
+ return "";
6
+ return next.startsWith("/") ? next : `/${next}`;
7
+ }
8
+ function decodeRouteSegment(value) {
9
+ try {
10
+ return decodeURIComponent(value);
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ }
16
+ function parseGitApiRoute(pathnameInput, basePathInput) {
17
+ const pathname = text(pathnameInput, "/");
18
+ const basePath = normalizeBasePath(basePathInput);
19
+ if (basePath && !pathname.startsWith(`${basePath}/`) && pathname !== basePath)
20
+ return null;
21
+ const remainder = basePath
22
+ ? pathname.slice(basePath.length).replace(/^\/+/, "")
23
+ : pathname.replace(/^\/+/, "");
24
+ if (!remainder)
25
+ return null;
26
+ const segments = remainder.split("/").filter(Boolean);
27
+ if (segments[0] !== "repositories" || segments.length < 3)
28
+ return null;
29
+ const repositoryKey = decodeRouteSegment(segments[1] || "");
30
+ if (!repositoryKey)
31
+ return null;
32
+ const action = text(segments[2]);
33
+ if (action === "summary" || action === "branches" || action === "tree" || action === "blob" || action === "diff") {
34
+ if (segments.length !== 3)
35
+ return null;
36
+ return { action, repositoryKey };
37
+ }
38
+ if (action === "commits") {
39
+ if (segments.length === 3)
40
+ return { action, repositoryKey };
41
+ if (segments.length === 4) {
42
+ const commitRef = decodeRouteSegment(segments[3] || "");
43
+ if (!commitRef)
44
+ return null;
45
+ return { action: "commit", commitRef, repositoryKey };
46
+ }
47
+ }
48
+ return null;
49
+ }
50
+ export { parseGitApiRoute };
51
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/api/handler/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAsB,EAAE,aAAsB;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3F,MAAM,SAAS,GAAG,QAAQ;QACxB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACrD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,cAAc,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvE,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAA+B,CAAC;IAC/D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACjH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,QAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { CreateGitApiHandlerOptions } from "../types.js";
3
+ import { parseGitApiRoute } from "./handler/route.js";
4
+ declare function createGitApiHandler(options: CreateGitApiHandlerOptions): (req: IncomingMessage, res: ServerResponse) => void;
5
+ export { createGitApiHandler, parseGitApiRoute };
6
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/api/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAU9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA0GtD,iBAAS,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,IAKhC,KAAK,eAAe,EAAE,KAAK,cAAc,UAKxE;AAED,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,117 @@
1
+ import { resolveLogger } from "../logging.js";
2
+ import { text } from "../utils/text.js";
3
+ import { runGitApiAction } from "./handler/action.js";
4
+ import { applyAuthorizationHeaders, authorizationAllowed, serializeError, statusForError, writeJson, } from "./handler/response.js";
5
+ import { parseGitApiRoute } from "./handler/route.js";
6
+ async function handleGitApiRequest(req, res, options) {
7
+ const logger = resolveLogger(options.logger);
8
+ const verbose = options.verbose === true;
9
+ const logGroup = "git-host.api";
10
+ const method = text(req.method).toUpperCase() || "GET";
11
+ if (method !== "GET" && method !== "HEAD") {
12
+ logger.warn(logGroup, "rejected unsupported api method", { method, pathname: String(req.url || "/") });
13
+ res.setHeader("allow", "GET, HEAD");
14
+ writeJson(req, res, 405, {
15
+ ok: false,
16
+ error: {
17
+ code: "method_not_allowed",
18
+ message: "Only GET and HEAD are supported.",
19
+ },
20
+ });
21
+ return;
22
+ }
23
+ const url = new URL(String(req.url || "/"), "http://127.0.0.1");
24
+ const route = parseGitApiRoute(url.pathname, options.basePath);
25
+ if (!route) {
26
+ if (verbose)
27
+ logger.warn(logGroup, "api route not found", { method, pathname: url.pathname });
28
+ writeJson(req, res, 404, {
29
+ ok: false,
30
+ error: {
31
+ code: "route_not_found",
32
+ message: "Git API route not found.",
33
+ },
34
+ });
35
+ return;
36
+ }
37
+ const repositoryKey = route.repositoryKey;
38
+ const repositoryId = text(options.resolveRepositoryId ? await options.resolveRepositoryId(repositoryKey, req) : repositoryKey);
39
+ if (!repositoryId) {
40
+ logger.warn(logGroup, "api repository not found", { method, pathname: url.pathname, repositoryKey });
41
+ writeJson(req, res, 404, {
42
+ ok: false,
43
+ error: {
44
+ code: "repository_not_found",
45
+ message: "Repository not found.",
46
+ },
47
+ });
48
+ return;
49
+ }
50
+ const auth = authorizationAllowed(options.authorize
51
+ ? await options.authorize({
52
+ action: route.action,
53
+ commitRef: "commitRef" in route ? route.commitRef : undefined,
54
+ method,
55
+ pathname: url.pathname,
56
+ remoteAddress: text(req.socket && req.socket.remoteAddress),
57
+ repositoryId,
58
+ repositoryKey,
59
+ request: req,
60
+ searchParams: url.searchParams,
61
+ })
62
+ : undefined);
63
+ applyAuthorizationHeaders(res, auth.headers);
64
+ if (!auth.allowed) {
65
+ logger.warn(logGroup, "api permission denied", {
66
+ action: route.action,
67
+ method,
68
+ pathname: url.pathname,
69
+ repositoryId,
70
+ repositoryKey,
71
+ status: auth.status || 403,
72
+ });
73
+ writeJson(req, res, auth.status || 403, {
74
+ ok: false,
75
+ error: {
76
+ code: "permission_denied",
77
+ message: auth.message || "Permission denied.",
78
+ },
79
+ });
80
+ return;
81
+ }
82
+ try {
83
+ const data = await runGitApiAction(options, route, repositoryId, url.searchParams);
84
+ if (verbose)
85
+ logger.info(logGroup, "api action completed", { action: route.action, method, pathname: url.pathname, repositoryId, repositoryKey });
86
+ writeJson(req, res, 200, {
87
+ ok: true,
88
+ action: route.action,
89
+ data,
90
+ repository_id: repositoryId,
91
+ repository_key: repositoryKey,
92
+ });
93
+ }
94
+ catch (error) {
95
+ logger.error(logGroup, "api action failed", {
96
+ action: route.action,
97
+ error: error instanceof Error ? error.message : String(error),
98
+ method,
99
+ pathname: url.pathname,
100
+ repositoryId,
101
+ repositoryKey,
102
+ });
103
+ writeJson(req, res, statusForError(error), serializeError(error));
104
+ }
105
+ }
106
+ function createGitApiHandler(options) {
107
+ if (!options || typeof options.gitHost !== "object") {
108
+ throw new TypeError("createGitApiHandler() requires a gitHost instance.");
109
+ }
110
+ return function gitApiHandler(req, res) {
111
+ void handleGitApiRequest(req, res, options).catch((error) => {
112
+ writeJson(req, res, 500, serializeError(error));
113
+ });
114
+ };
115
+ }
116
+ export { createGitApiHandler, parseGitApiRoute };
117
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/api/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ declare const DEFAULT_BRANCH = "main";
2
+ declare const DEFAULT_COMMIT_MESSAGE = "Initial import";
3
+ declare const DEFAULT_ACTOR_NAME = "@trebired/git-host";
4
+ declare const DEFAULT_ACTOR_EMAIL = "noreply@git-host.local";
5
+ declare const DEFAULT_MANAGED_EXCLUDE_HEADER = "# Managed by @trebired/git-host";
6
+ declare const DEFAULT_MANAGED_EXCLUDE_PATTERNS: readonly string[];
7
+ export { DEFAULT_ACTOR_EMAIL, DEFAULT_ACTOR_NAME, DEFAULT_BRANCH, DEFAULT_COMMIT_MESSAGE, DEFAULT_MANAGED_EXCLUDE_HEADER, DEFAULT_MANAGED_EXCLUDE_PATTERNS, };
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc,SAAS,CAAC;AAC9B,QAAA,MAAM,sBAAsB,mBAAmB,CAAC;AAChD,QAAA,MAAM,kBAAkB,uBAAuB,CAAC;AAChD,QAAA,MAAM,mBAAmB,2BAA2B,CAAC;AACrD,QAAA,MAAM,8BAA8B,oCAAoC,CAAC;AAEzE,QAAA,MAAM,gCAAgC,mBAQpC,CAAC;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,8BAA8B,EAC9B,gCAAgC,GACjC,CAAC"}
@@ -0,0 +1,16 @@
1
+ const DEFAULT_BRANCH = "main";
2
+ const DEFAULT_COMMIT_MESSAGE = "Initial import";
3
+ const DEFAULT_ACTOR_NAME = "@trebired/git-host";
4
+ const DEFAULT_ACTOR_EMAIL = "noreply@git-host.local";
5
+ const DEFAULT_MANAGED_EXCLUDE_HEADER = "# Managed by @trebired/git-host";
6
+ const DEFAULT_MANAGED_EXCLUDE_PATTERNS = Object.freeze([
7
+ "node_modules/",
8
+ ".DS_Store",
9
+ "dist/",
10
+ "coverage/",
11
+ ".turbo/",
12
+ ".next/",
13
+ ".svelte-kit/",
14
+ ]);
15
+ export { DEFAULT_ACTOR_EMAIL, DEFAULT_ACTOR_NAME, DEFAULT_BRANCH, DEFAULT_COMMIT_MESSAGE, DEFAULT_MANAGED_EXCLUDE_HEADER, DEFAULT_MANAGED_EXCLUDE_PATTERNS, };
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAChD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AACrD,MAAM,8BAA8B,GAAG,iCAAiC,CAAC;AAEzE,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,eAAe;IACf,WAAW;IACX,OAAO;IACP,WAAW;IACX,SAAS;IACT,QAAQ;IACR,cAAc;CACf,CAAC,CAAC;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,8BAA8B,EAC9B,gCAAgC,GACjC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GitHost } from "../../types.js";
2
+ import type { GitHostMethodContext } from "./shared.js";
3
+ declare function createBranchMethods(context: GitHostMethodContext): Pick<GitHost, "checkoutBranch" | "checkoutRef" | "createBranch" | "deleteBranch" | "listBranches" | "listCommits">;
4
+ export { createBranchMethods };
5
+ //# sourceMappingURL=branch_methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch_methods.d.ts","sourceRoot":"","sources":["../../../src/core/create_git_host/branch_methods.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA+E,OAAO,EAAsB,MAAM,gBAAgB,CAAC;AAI/I,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD,iBAAS,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAC/D,OAAO,EACP,gBAAgB,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,CACpG,CAiJA;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,137 @@
1
+ import { GitHostError } from "../../errors.js";
2
+ import { isTruthy, text } from "../../utils/text.js";
3
+ import { readRepositoryBranches, readRepositoryCommits } from "../repository.js";
4
+ import { repositoryExists, runGit } from "../run_git.js";
5
+ import { toGitHostError } from "./shared.js";
6
+ function createBranchMethods(context) {
7
+ const { ensureRepositoryInner, lockManager, readSummaryForRepository, resolveRepository } = context;
8
+ return {
9
+ async listBranches(repositoryId) {
10
+ const repository = await resolveRepository(repositoryId);
11
+ const hasRepository = await repositoryExists(repository.path);
12
+ if (!hasRepository) {
13
+ throw new GitHostError("repository_not_initialized", `Repository "${repository.id}" is not initialized.`, {
14
+ path: repository.path,
15
+ repositoryId: repository.id,
16
+ });
17
+ }
18
+ try {
19
+ return await readRepositoryBranches(repository.path);
20
+ }
21
+ catch (error) {
22
+ throw toGitHostError(error, "git_command_failed", "Failed to list repository branches.");
23
+ }
24
+ },
25
+ async listCommits(repositoryId, listOptions = {}) {
26
+ const repository = await resolveRepository(repositoryId);
27
+ const hasRepository = await repositoryExists(repository.path);
28
+ if (!hasRepository) {
29
+ throw new GitHostError("repository_not_initialized", `Repository "${repository.id}" is not initialized.`, {
30
+ path: repository.path,
31
+ repositoryId: repository.id,
32
+ });
33
+ }
34
+ try {
35
+ return await readRepositoryCommits(repository.path, listOptions.limit);
36
+ }
37
+ catch (error) {
38
+ throw toGitHostError(error, "git_command_failed", "Failed to list repository commits.");
39
+ }
40
+ },
41
+ async createBranch(repositoryId, input) {
42
+ return await lockManager.withLock(text(repositoryId), async () => {
43
+ const repository = await ensureRepositoryInner(repositoryId);
44
+ const branchName = text(input && input.name);
45
+ if (!branchName)
46
+ throw new GitHostError("invalid_branch_name", "Branch name is required.");
47
+ const formatRes = await runGit(["check-ref-format", "--branch", branchName], { cwd: repository.path });
48
+ if (!formatRes.ok) {
49
+ throw new GitHostError("invalid_branch_name", text(formatRes.stderr, "Invalid branch name."), {
50
+ branch: branchName,
51
+ repositoryId: repository.id,
52
+ });
53
+ }
54
+ const args = ["branch", branchName];
55
+ const startPoint = text(input && input.startPoint);
56
+ if (startPoint)
57
+ args.push(startPoint);
58
+ const createRes = await runGit(args, { cwd: repository.path });
59
+ if (!createRes.ok) {
60
+ throw new GitHostError("git_command_failed", text(createRes.stderr, "Failed to create repository branch."), {
61
+ branch: branchName,
62
+ repositoryId: repository.id,
63
+ });
64
+ }
65
+ if (isTruthy(input && input.checkout)) {
66
+ const checkoutRes = await runGit(["checkout", branchName], { cwd: repository.path });
67
+ if (!checkoutRes.ok) {
68
+ throw new GitHostError("git_command_failed", text(checkoutRes.stderr, "Failed to switch to the new repository branch."), {
69
+ branch: branchName,
70
+ repositoryId: repository.id,
71
+ });
72
+ }
73
+ }
74
+ return await readSummaryForRepository(repository);
75
+ });
76
+ },
77
+ async checkoutBranch(repositoryId, input) {
78
+ return await lockManager.withLock(text(repositoryId), async () => {
79
+ const repository = await ensureRepositoryInner(repositoryId);
80
+ const branchName = text(input && input.name);
81
+ if (!branchName)
82
+ throw new GitHostError("invalid_branch_name", "Branch name is required.");
83
+ const checkoutRes = await runGit(["checkout", branchName], { cwd: repository.path });
84
+ if (!checkoutRes.ok) {
85
+ throw new GitHostError("git_command_failed", text(checkoutRes.stderr, "Failed to switch repository branch."), {
86
+ branch: branchName,
87
+ repositoryId: repository.id,
88
+ });
89
+ }
90
+ return await readSummaryForRepository(repository);
91
+ });
92
+ },
93
+ async checkoutRef(repositoryId, input) {
94
+ return await lockManager.withLock(text(repositoryId), async () => {
95
+ const repository = await ensureRepositoryInner(repositoryId);
96
+ const ref = text(input && input.ref);
97
+ if (!ref)
98
+ throw new GitHostError("git_command_failed", "A ref is required.", { repositoryId: repository.id });
99
+ const verifyRes = await runGit(["rev-parse", "--verify", `${ref}^{commit}`], { cwd: repository.path });
100
+ if (!verifyRes.ok) {
101
+ throw new GitHostError("git_command_failed", text(verifyRes.stderr, "That ref does not exist."), {
102
+ ref,
103
+ repositoryId: repository.id,
104
+ });
105
+ }
106
+ const checkoutRes = await runGit(isTruthy(input && input.detach) ? ["checkout", "--detach", ref] : ["checkout", ref], { cwd: repository.path });
107
+ if (!checkoutRes.ok) {
108
+ throw new GitHostError("git_command_failed", text(checkoutRes.stderr, "Failed to check out repository ref."), {
109
+ ref,
110
+ repositoryId: repository.id,
111
+ });
112
+ }
113
+ return await readSummaryForRepository(repository);
114
+ });
115
+ },
116
+ async deleteBranch(repositoryId, input) {
117
+ return await lockManager.withLock(text(repositoryId), async () => {
118
+ const repository = await ensureRepositoryInner(repositoryId);
119
+ const branchName = text(input && input.name);
120
+ if (!branchName)
121
+ throw new GitHostError("invalid_branch_name", "Branch name is required.");
122
+ const deleteRes = await runGit(["branch", isTruthy(input && input.force) ? "-D" : "-d", branchName], {
123
+ cwd: repository.path,
124
+ });
125
+ if (!deleteRes.ok) {
126
+ throw new GitHostError("git_command_failed", text(deleteRes.stderr, "Failed to delete repository branch."), {
127
+ branch: branchName,
128
+ repositoryId: repository.id,
129
+ });
130
+ }
131
+ return await readSummaryForRepository(repository);
132
+ });
133
+ },
134
+ };
135
+ }
136
+ export { createBranchMethods };
137
+ //# sourceMappingURL=branch_methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch_methods.js","sourceRoot":"","sources":["../../../src/core/create_git_host/branch_methods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { GitHost } from "../../types.js";
2
+ import type { GitHostMethodContext } from "./shared.js";
3
+ declare function createContentMethods(context: GitHostMethodContext): Pick<GitHost, "diff" | "listTree" | "readBlob" | "readCommit">;
4
+ export { createContentMethods };
5
+ //# sourceMappingURL=content_methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content_methods.d.ts","sourceRoot":"","sources":["../../../src/core/create_git_host/content_methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,OAAO,EAAoC,MAAM,gBAAgB,CAAC;AAE7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,iBAAS,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC,CAwB3H;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { listRepositoryTree, readRepositoryBlob, readRepositoryCommit, readRepositoryCompare } from "../inspect.js";
2
+ function createContentMethods(context) {
3
+ const { resolveRepository } = context;
4
+ return {
5
+ async listTree(repositoryId, treeOptions = {}) {
6
+ const repository = await resolveRepository(repositoryId);
7
+ return await listRepositoryTree(repository, treeOptions);
8
+ },
9
+ async readBlob(repositoryId, blobOptions) {
10
+ const repository = await resolveRepository(repositoryId);
11
+ return await readRepositoryBlob(repository, blobOptions);
12
+ },
13
+ async readCommit(repositoryId, commitRef) {
14
+ const repository = await resolveRepository(repositoryId);
15
+ return await readRepositoryCommit(repository, commitRef);
16
+ },
17
+ async diff(repositoryId, diffOptions) {
18
+ const repository = await resolveRepository(repositoryId);
19
+ return await readRepositoryCompare(repository, diffOptions);
20
+ },
21
+ };
22
+ }
23
+ export { createContentMethods };
24
+ //# sourceMappingURL=content_methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content_methods.js","sourceRoot":"","sources":["../../../src/core/create_git_host/content_methods.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGpH,SAAS,oBAAoB,CAAC,OAA6B;IACzD,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IAEtC,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,YAAoB,EAAE,cAA+B,EAAE;YACpE,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACzD,OAAO,MAAM,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,YAAoB,EAAE,WAA4B;YAC/D,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACzD,OAAO,MAAM,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,YAAoB,EAAE,SAAiB;YACtD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACzD,OAAO,MAAM,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,WAAwB;YACvD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACzD,OAAO,MAAM,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GitHost } from "../../types.js";
2
+ import type { GitHostMethodContext } from "./shared.js";
3
+ declare function createRemoteMethods(context: GitHostMethodContext): Pick<GitHost, "fetch" | "pull" | "push">;
4
+ export { createRemoteMethods };
5
+ //# sourceMappingURL=remote_methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote_methods.d.ts","sourceRoot":"","sources":["../../../src/core/create_git_host/remote_methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,OAAO,EAA4B,MAAM,gBAAgB,CAAC;AAGtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,iBAAS,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CA8CpG;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { text } from "../../utils/text.js";
2
+ import { fetchRepository, pullRepository, pushRepository } from "../remote.js";
3
+ function createRemoteMethods(context) {
4
+ const { ensureRepositoryInner, lockManager, logGroup, logger, readSummaryForRepository, verbose } = context;
5
+ return {
6
+ async fetch(repositoryId, options = {}) {
7
+ return await lockManager.withLock(text(repositoryId), async () => {
8
+ const repository = await ensureRepositoryInner(repositoryId);
9
+ if (verbose) {
10
+ logger.info(logGroup, "fetching repository remote", {
11
+ remote: text(options.remote, "origin"),
12
+ repositoryId: repository.id,
13
+ });
14
+ }
15
+ await fetchRepository(repository, options);
16
+ return await readSummaryForRepository(repository);
17
+ });
18
+ },
19
+ async pull(repositoryId, options = {}) {
20
+ return await lockManager.withLock(text(repositoryId), async () => {
21
+ const repository = await ensureRepositoryInner(repositoryId);
22
+ if (verbose) {
23
+ logger.info(logGroup, "pulling repository remote", {
24
+ remote: text(options.remote, "origin"),
25
+ repositoryId: repository.id,
26
+ });
27
+ }
28
+ await pullRepository(repository, options);
29
+ return await readSummaryForRepository(repository);
30
+ });
31
+ },
32
+ async push(repositoryId, options = {}) {
33
+ return await lockManager.withLock(text(repositoryId), async () => {
34
+ const repository = await ensureRepositoryInner(repositoryId);
35
+ if (verbose) {
36
+ logger.info(logGroup, "pushing repository remote", {
37
+ remote: text(options.remote, "origin"),
38
+ repositoryId: repository.id,
39
+ });
40
+ }
41
+ await pushRepository(repository, options);
42
+ return await readSummaryForRepository(repository);
43
+ });
44
+ },
45
+ };
46
+ }
47
+ export { createRemoteMethods };
48
+ //# sourceMappingURL=remote_methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote_methods.js","sourceRoot":"","sources":["../../../src/core/create_git_host/remote_methods.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG/E,SAAS,mBAAmB,CAAC,OAA6B;IACxD,MAAM,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5G,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,YAAoB,EAAE,UAAwB,EAAE;YAC1D,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,EAAE;gBAC/D,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBAC7D,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,EAAE;wBAClD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;wBACtC,YAAY,EAAE,UAAU,CAAC,EAAE;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC3C,OAAO,MAAM,wBAAwB,CAAC,UAAU,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,UAAuB,EAAE;YACxD,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,EAAE;gBAC/D,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBAC7D,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,2BAA2B,EAAE;wBACjD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;wBACtC,YAAY,EAAE,UAAU,CAAC,EAAE;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC1C,OAAO,MAAM,wBAAwB,CAAC,UAAU,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,UAAuB,EAAE;YACxD,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,EAAE;gBAC/D,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBAC7D,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,2BAA2B,EAAE;wBACjD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;wBACtC,YAAY,EAAE,UAAU,CAAC,EAAE;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC1C,OAAO,MAAM,wBAAwB,CAAC,UAAU,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { GitHostError } from "../../errors.js";
2
+ import type { CreateGitHostOptions, EnsureRepositoryOptions, GitRepositoryHandle, GitRepositorySummary, NormalizedGitHostLogger } from "../../types.js";
3
+ import { RepositoryLockManager } from "../locks.js";
4
+ declare function normalizeManagedExcludePatterns(value: unknown): string[];
5
+ declare function toGitHostError(error: unknown, fallbackCode: string, fallbackMessage: string): GitHostError;
6
+ type ResolveRepositoryFn = (repositoryId: string) => Promise<GitRepositoryHandle>;
7
+ type EnsureRepositoryInnerFn = (repositoryId: string, ensureOptions?: EnsureRepositoryOptions) => Promise<GitRepositoryHandle>;
8
+ type ReadSummaryForRepositoryFn = (repository: GitRepositoryHandle, commitLimit?: number) => Promise<GitRepositorySummary>;
9
+ type GitHostMethodContext = {
10
+ ensureRepositoryInner: EnsureRepositoryInnerFn;
11
+ lockManager: RepositoryLockManager;
12
+ logGroup: string;
13
+ logger: NormalizedGitHostLogger;
14
+ options: CreateGitHostOptions;
15
+ readSummaryForRepository: ReadSummaryForRepositoryFn;
16
+ resolveRepository: ResolveRepositoryFn;
17
+ verbose: boolean;
18
+ };
19
+ export { normalizeManagedExcludePatterns, toGitHostError };
20
+ export type { EnsureRepositoryInnerFn, GitHostMethodContext, ReadSummaryForRepositoryFn, ResolveRepositoryFn, };
21
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/core/create_git_host/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,iBAAS,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAGjE;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,YAAY,CAMnG;AAED,KAAK,mBAAmB,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAClF,KAAK,uBAAuB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC/H,KAAK,0BAA0B,GAAG,CAAC,UAAU,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE3H,KAAK,oBAAoB,GAAG;IAC1B,qBAAqB,EAAE,uBAAuB,CAAC;IAC/C,WAAW,EAAE,qBAAqB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,wBAAwB,EAAE,0BAA0B,CAAC;IACrD,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE,CAAC;AAC3D,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,GACpB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { DEFAULT_MANAGED_EXCLUDE_PATTERNS } from "../../constants.js";
2
+ import { GitHostError } from "../../errors.js";
3
+ import { text } from "../../utils/text.js";
4
+ function normalizeManagedExcludePatterns(value) {
5
+ const patterns = Array.isArray(value) ? value.map((entry) => text(entry)).filter(Boolean) : [];
6
+ return patterns.length ? patterns : Array.from(DEFAULT_MANAGED_EXCLUDE_PATTERNS);
7
+ }
8
+ function toGitHostError(error, fallbackCode, fallbackMessage) {
9
+ if (error instanceof GitHostError)
10
+ return error;
11
+ if (error instanceof Error) {
12
+ return new GitHostError(fallbackCode, error.message || fallbackMessage);
13
+ }
14
+ return new GitHostError(fallbackCode, fallbackMessage);
15
+ }
16
+ export { normalizeManagedExcludePatterns, toGitHostError };
17
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/core/create_git_host/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQ/C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG3C,SAAS,+BAA+B,CAAC,KAAc;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,YAAoB,EAAE,eAAuB;IACnF,IAAI,KAAK,YAAY,YAAY;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AACzD,CAAC;AAiBD,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GitHost } from "../../types.js";
2
+ import type { GitHostMethodContext } from "./shared.js";
3
+ declare function createWorkingTreeMethods(context: GitHostMethodContext): Pick<GitHost, "abortOperation" | "commit" | "continueOperation" | "discardPaths" | "readStagedFile" | "readUnstagedFile" | "readWorkingTree" | "stagePaths" | "unstagePaths">;
4
+ export { createWorkingTreeMethods };
5
+ //# sourceMappingURL=working_tree_methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"working_tree_methods.d.ts","sourceRoot":"","sources":["../../../src/core/create_git_host/working_tree_methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,OAAO,EAIR,MAAM,gBAAgB,CAAC;AAaxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,iBAAS,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CACpE,OAAO,EACL,gBAAgB,GAChB,QAAQ,GACR,mBAAmB,GACnB,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,YAAY,GACZ,cAAc,CACjB,CAmEA;AAED,OAAO,EAAE,wBAAwB,EAAE,CAAC"}