@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.
- package/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/README.md +451 -0
- package/dist/api/handler/action.d.ts +5 -0
- package/dist/api/handler/action.d.ts.map +1 -0
- package/dist/api/handler/action.js +47 -0
- package/dist/api/handler/action.js.map +1 -0
- package/dist/api/handler/response.d.ts +34 -0
- package/dist/api/handler/response.d.ts.map +1 -0
- package/dist/api/handler/response.js +87 -0
- package/dist/api/handler/response.js.map +1 -0
- package/dist/api/handler/route.d.ts +15 -0
- package/dist/api/handler/route.d.ts.map +1 -0
- package/dist/api/handler/route.js +51 -0
- package/dist/api/handler/route.js.map +1 -0
- package/dist/api/handler.d.ts +6 -0
- package/dist/api/handler.d.ts.map +1 -0
- package/dist/api/handler.js +117 -0
- package/dist/api/handler.js.map +1 -0
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +16 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/create_git_host/branch_methods.d.ts +5 -0
- package/dist/core/create_git_host/branch_methods.d.ts.map +1 -0
- package/dist/core/create_git_host/branch_methods.js +137 -0
- package/dist/core/create_git_host/branch_methods.js.map +1 -0
- package/dist/core/create_git_host/content_methods.d.ts +5 -0
- package/dist/core/create_git_host/content_methods.d.ts.map +1 -0
- package/dist/core/create_git_host/content_methods.js +24 -0
- package/dist/core/create_git_host/content_methods.js.map +1 -0
- package/dist/core/create_git_host/remote_methods.d.ts +5 -0
- package/dist/core/create_git_host/remote_methods.d.ts.map +1 -0
- package/dist/core/create_git_host/remote_methods.js +48 -0
- package/dist/core/create_git_host/remote_methods.js.map +1 -0
- package/dist/core/create_git_host/shared.d.ts +21 -0
- package/dist/core/create_git_host/shared.d.ts.map +1 -0
- package/dist/core/create_git_host/shared.js +17 -0
- package/dist/core/create_git_host/shared.js.map +1 -0
- package/dist/core/create_git_host/working_tree_methods.d.ts +5 -0
- package/dist/core/create_git_host/working_tree_methods.d.ts.map +1 -0
- package/dist/core/create_git_host/working_tree_methods.js +63 -0
- package/dist/core/create_git_host/working_tree_methods.js.map +1 -0
- package/dist/core/create_git_host.d.ts +4 -0
- package/dist/core/create_git_host.d.ts.map +1 -0
- package/dist/core/create_git_host.js +167 -0
- package/dist/core/create_git_host.js.map +1 -0
- package/dist/core/inspect/helpers.d.ts +27 -0
- package/dist/core/inspect/helpers.d.ts.map +1 -0
- package/dist/core/inspect/helpers.js +86 -0
- package/dist/core/inspect/helpers.js.map +1 -0
- package/dist/core/inspect.d.ts +17 -0
- package/dist/core/inspect.d.ts.map +1 -0
- package/dist/core/inspect.js +174 -0
- package/dist/core/inspect.js.map +1 -0
- package/dist/core/locks.d.ts +5 -0
- package/dist/core/locks.d.ts.map +1 -0
- package/dist/core/locks.js +27 -0
- package/dist/core/locks.js.map +1 -0
- package/dist/core/operation_state.d.ts +4 -0
- package/dist/core/operation_state.d.ts.map +1 -0
- package/dist/core/operation_state.js +51 -0
- package/dist/core/operation_state.js.map +1 -0
- package/dist/core/remote.d.ts +13 -0
- package/dist/core/remote.d.ts.map +1 -0
- package/dist/core/remote.js +187 -0
- package/dist/core/remote.js.map +1 -0
- package/dist/core/repository/parsers.d.ts +12 -0
- package/dist/core/repository/parsers.d.ts.map +1 -0
- package/dist/core/repository/parsers.js +181 -0
- package/dist/core/repository/parsers.js.map +1 -0
- package/dist/core/repository.d.ts +11 -0
- package/dist/core/repository.d.ts.map +1 -0
- package/dist/core/repository.js +81 -0
- package/dist/core/repository.js.map +1 -0
- package/dist/core/run_git/env.d.ts +7 -0
- package/dist/core/run_git/env.d.ts.map +1 -0
- package/dist/core/run_git/env.js +18 -0
- package/dist/core/run_git/env.js.map +1 -0
- package/dist/core/run_git/process.d.ts +13 -0
- package/dist/core/run_git/process.d.ts.map +1 -0
- package/dist/core/run_git/process.js +96 -0
- package/dist/core/run_git/process.js.map +1 -0
- package/dist/core/run_git/repository_setup.d.ts +20 -0
- package/dist/core/run_git/repository_setup.d.ts.map +1 -0
- package/dist/core/run_git/repository_setup.js +116 -0
- package/dist/core/run_git/repository_setup.js.map +1 -0
- package/dist/core/run_git.d.ts +6 -0
- package/dist/core/run_git.d.ts.map +1 -0
- package/dist/core/run_git.js +6 -0
- package/dist/core/run_git.js.map +1 -0
- package/dist/core/working_tree/mutate.d.ts +9 -0
- package/dist/core/working_tree/mutate.d.ts.map +1 -0
- package/dist/core/working_tree/mutate.js +159 -0
- package/dist/core/working_tree/mutate.js.map +1 -0
- package/dist/core/working_tree/read.d.ts +6 -0
- package/dist/core/working_tree/read.d.ts.map +1 -0
- package/dist/core/working_tree/read.js +108 -0
- package/dist/core/working_tree/read.js.map +1 -0
- package/dist/core/working_tree/shared.d.ts +20 -0
- package/dist/core/working_tree/shared.d.ts.map +1 -0
- package/dist/core/working_tree/shared.js +87 -0
- package/dist/core/working_tree/shared.js.map +1 -0
- package/dist/core/working_tree.d.ts +3 -0
- package/dist/core/working_tree.d.ts.map +1 -0
- package/dist/core/working_tree.js +3 -0
- package/dist/core/working_tree.js.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -0
- package/dist/http/handler/helpers.d.ts +35 -0
- package/dist/http/handler/helpers.d.ts.map +1 -0
- package/dist/http/handler/helpers.js +146 -0
- package/dist/http/handler/helpers.js.map +1 -0
- package/dist/http/handler.d.ts +6 -0
- package/dist/http/handler.d.ts.map +1 -0
- package/dist/http/handler.js +208 -0
- package/dist/http/handler.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/logging.d.ts +4 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +134 -0
- package/dist/logging.js.map +1 -0
- package/dist/react/client/error.d.ts +14 -0
- package/dist/react/client/error.d.ts.map +1 -0
- package/dist/react/client/error.js +32 -0
- package/dist/react/client/error.js.map +1 -0
- package/dist/react/client/helpers.d.ts +12 -0
- package/dist/react/client/helpers.d.ts.map +1 -0
- package/dist/react/client/helpers.js +45 -0
- package/dist/react/client/helpers.js.map +1 -0
- package/dist/react/client/types.d.ts +61 -0
- package/dist/react/client/types.d.ts.map +1 -0
- package/dist/react/client/types.js +2 -0
- package/dist/react/client/types.js.map +1 -0
- package/dist/react/client.d.ts +6 -0
- package/dist/react/client.d.ts.map +1 -0
- package/dist/react/client.js +115 -0
- package/dist/react/client.js.map +1 -0
- package/dist/react/hooks/query.d.ts +10 -0
- package/dist/react/hooks/query.d.ts.map +1 -0
- package/dist/react/hooks/query.js +74 -0
- package/dist/react/hooks/query.js.map +1 -0
- package/dist/react/hooks/resources.d.ts +11 -0
- package/dist/react/hooks/resources.d.ts.map +1 -0
- package/dist/react/hooks/resources.js +113 -0
- package/dist/react/hooks/resources.js.map +1 -0
- package/dist/react/hooks/types.d.ts +40 -0
- package/dist/react/hooks/types.d.ts.map +1 -0
- package/dist/react/hooks/types.js +2 -0
- package/dist/react/hooks/types.js.map +1 -0
- package/dist/react/hooks.d.ts +4 -0
- package/dist/react/hooks.d.ts.map +1 -0
- package/dist/react/hooks.js +3 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react/index.d.ts +5 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -0
- package/dist/ssh/keys.d.ts +18 -0
- package/dist/ssh/keys.d.ts.map +1 -0
- package/dist/ssh/keys.js +41 -0
- package/dist/ssh/keys.js.map +1 -0
- package/dist/ssh/server/audit.d.ts +5 -0
- package/dist/ssh/server/audit.d.ts.map +1 -0
- package/dist/ssh/server/audit.js +21 -0
- package/dist/ssh/server/audit.js.map +1 -0
- package/dist/ssh/server/shared.d.ts +30 -0
- package/dist/ssh/server/shared.d.ts.map +1 -0
- package/dist/ssh/server/shared.js +93 -0
- package/dist/ssh/server/shared.js.map +1 -0
- package/dist/ssh/server.d.ts +5 -0
- package/dist/ssh/server.d.ts.map +1 -0
- package/dist/ssh/server.js +265 -0
- package/dist/ssh/server.js.map +1 -0
- package/dist/types/common.d.ts +32 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +2 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/host.d.ts +142 -0
- package/dist/types/host.d.ts.map +1 -0
- package/dist/types/host.js +2 -0
- package/dist/types/host.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/repository.d.ts +163 -0
- package/dist/types/repository.d.ts.map +1 -0
- package/dist/types/repository.js +2 -0
- package/dist/types/repository.js.map +1 -0
- package/dist/types/transports.d.ts +156 -0
- package/dist/types/transports.d.ts.map +1 -0
- package/dist/types/transports.js +2 -0
- package/dist/types/transports.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/paths.d.ts +10 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +51 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/text.d.ts +4 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +10 -0
- package/dist/utils/text.js.map +1 -0
- 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"}
|