nano-git 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 (227) hide show
  1. package/README.md +407 -0
  2. package/dist/backend/file-backend.d.mts +26 -0
  3. package/dist/backend/file-backend.mjs +83 -0
  4. package/dist/backend/file.d.mts +2 -0
  5. package/dist/backend/file.mjs +2 -0
  6. package/dist/backend/index.d.mts +2 -0
  7. package/dist/backend/index.mjs +1 -0
  8. package/dist/backend/memory-backend.d.mts +25 -0
  9. package/dist/backend/memory-backend.mjs +33 -0
  10. package/dist/backend/memory.d.mts +2 -0
  11. package/dist/backend/memory.mjs +2 -0
  12. package/dist/backend/types.d.mts +90 -0
  13. package/dist/core/errors.d.mts +124 -0
  14. package/dist/core/errors.mjs +168 -0
  15. package/dist/core/hash-digest.d.mts +35 -0
  16. package/dist/core/hash-digest.mjs +50 -0
  17. package/dist/core/hash-file.d.mts +20 -0
  18. package/dist/core/hash-file.mjs +27 -0
  19. package/dist/core/hash-path.d.mts +17 -0
  20. package/dist/core/hash-path.mjs +35 -0
  21. package/dist/core/types/odb.d.mts +63 -0
  22. package/dist/core/types/refs.d.mts +140 -0
  23. package/dist/core/types/refs.mjs +19 -0
  24. package/dist/core/types/shallow.d.mts +52 -0
  25. package/dist/core/types.d.mts +154 -0
  26. package/dist/core/types.mjs +43 -0
  27. package/dist/errors.d.mts +2 -0
  28. package/dist/errors.mjs +2 -0
  29. package/dist/hash-file.d.mts +2 -0
  30. package/dist/hash-file.mjs +2 -0
  31. package/dist/index.d.mts +16 -0
  32. package/dist/index.mjs +14 -0
  33. package/dist/objects/author.d.mts +25 -0
  34. package/dist/objects/author.mjs +45 -0
  35. package/dist/objects/blob.d.mts +15 -0
  36. package/dist/objects/blob.mjs +20 -0
  37. package/dist/objects/codec.d.mts +46 -0
  38. package/dist/objects/codec.mjs +84 -0
  39. package/dist/objects/commit.d.mts +26 -0
  40. package/dist/objects/commit.mjs +160 -0
  41. package/dist/objects/index.d.mts +8 -0
  42. package/dist/objects/index.mjs +8 -0
  43. package/dist/objects/raw.d.mts +85 -0
  44. package/dist/objects/raw.mjs +111 -0
  45. package/dist/objects/tag.d.mts +26 -0
  46. package/dist/objects/tag.mjs +148 -0
  47. package/dist/objects/tree.d.mts +22 -0
  48. package/dist/objects/tree.mjs +66 -0
  49. package/dist/odb/file-utils.mjs +136 -0
  50. package/dist/odb/file.d.mts +22 -0
  51. package/dist/odb/file.mjs +66 -0
  52. package/dist/odb/memory.d.mts +22 -0
  53. package/dist/odb/memory.mjs +54 -0
  54. package/dist/pack/composite-store.d.mts +76 -0
  55. package/dist/pack/composite-store.mjs +133 -0
  56. package/dist/pack/constants.mjs +48 -0
  57. package/dist/pack/crc32.mjs +38 -0
  58. package/dist/pack/delta-apply.d.mts +21 -0
  59. package/dist/pack/delta-apply.mjs +71 -0
  60. package/dist/pack/delta-create.d.mts +28 -0
  61. package/dist/pack/delta-create.mjs +151 -0
  62. package/dist/pack/index.d.mts +16 -0
  63. package/dist/pack/index.mjs +13 -0
  64. package/dist/pack/object-header.d.mts +36 -0
  65. package/dist/pack/object-header.mjs +72 -0
  66. package/dist/pack/ofs-delta-offset.d.mts +35 -0
  67. package/dist/pack/ofs-delta-offset.mjs +59 -0
  68. package/dist/pack/pack-builder-types.d.mts +19 -0
  69. package/dist/pack/pack-builder.d.mts +52 -0
  70. package/dist/pack/pack-builder.mjs +80 -0
  71. package/dist/pack/pack-encoding.mjs +76 -0
  72. package/dist/pack/pack-index-reader.d.mts +57 -0
  73. package/dist/pack/pack-index-reader.mjs +90 -0
  74. package/dist/pack/pack-index-types.d.mts +16 -0
  75. package/dist/pack/pack-index-writer.d.mts +45 -0
  76. package/dist/pack/pack-index-writer.mjs +106 -0
  77. package/dist/pack/pack-reader-resolver.mjs +104 -0
  78. package/dist/pack/pack-reader-types.d.mts +31 -0
  79. package/dist/pack/pack-reader-types.mjs +22 -0
  80. package/dist/pack/pack-reader-utils.mjs +61 -0
  81. package/dist/pack/pack-reader.d.mts +81 -0
  82. package/dist/pack/pack-reader.mjs +171 -0
  83. package/dist/pack/pack-store-loader.mjs +79 -0
  84. package/dist/pack/pack-store-types.d.mts +16 -0
  85. package/dist/pack/pack-store.d.mts +55 -0
  86. package/dist/pack/pack-store.mjs +114 -0
  87. package/dist/pack/pack-writer.mjs +96 -0
  88. package/dist/pack/varint.d.mts +34 -0
  89. package/dist/pack/varint.mjs +57 -0
  90. package/dist/refs/file.d.mts +6 -0
  91. package/dist/refs/file.mjs +222 -0
  92. package/dist/refs/fs-utils.mjs +30 -0
  93. package/dist/refs/memory.d.mts +14 -0
  94. package/dist/refs/memory.mjs +104 -0
  95. package/dist/refs/names.d.mts +57 -0
  96. package/dist/refs/names.mjs +80 -0
  97. package/dist/refs/resolve.d.mts +33 -0
  98. package/dist/refs/resolve.mjs +55 -0
  99. package/dist/refs/shallow/file.d.mts +17 -0
  100. package/dist/refs/shallow/file.mjs +61 -0
  101. package/dist/refs/shallow/memory.d.mts +18 -0
  102. package/dist/refs/shallow/memory.mjs +33 -0
  103. package/dist/repository/core.d.mts +3 -0
  104. package/dist/repository/core.mjs +2 -0
  105. package/dist/repository/create.d.mts +22 -0
  106. package/dist/repository/create.mjs +43 -0
  107. package/dist/repository/file.d.mts +43 -0
  108. package/dist/repository/file.mjs +82 -0
  109. package/dist/repository/import/import-glob.mjs +44 -0
  110. package/dist/repository/import/import-plan-builder.mjs +625 -0
  111. package/dist/repository/import/import-session-types.d.mts +280 -0
  112. package/dist/repository/import/import-session.mjs +96 -0
  113. package/dist/repository/import/import-view.mjs +133 -0
  114. package/dist/repository/memory.d.mts +17 -0
  115. package/dist/repository/memory.mjs +33 -0
  116. package/dist/repository/ops/fetch-operations.mjs +20 -0
  117. package/dist/repository/ops/fetch-types.d.mts +82 -0
  118. package/dist/repository/ops/fetch-url.mjs +82 -0
  119. package/dist/repository/ops/fs-object-operations.mjs +31 -0
  120. package/dist/repository/ops/maintenance-operations.mjs +62 -0
  121. package/dist/repository/ops/maintenance-types.d.mts +42 -0
  122. package/dist/repository/ops/object-operations.mjs +65 -0
  123. package/dist/repository/ops/object-types.d.mts +109 -0
  124. package/dist/repository/ops/push-operations.mjs +16 -0
  125. package/dist/repository/ops/push-resolution.mjs +17 -0
  126. package/dist/repository/ops/push-types.d.mts +72 -0
  127. package/dist/repository/ops/push-url.mjs +45 -0
  128. package/dist/repository/ops/reachability.mjs +60 -0
  129. package/dist/repository/ops/ref-operations.mjs +86 -0
  130. package/dist/repository/ops/ref-types.d.mts +70 -0
  131. package/dist/repository/tree/tree-patch.d.mts +64 -0
  132. package/dist/repository/tree/tree-patch.mjs +268 -0
  133. package/dist/repository/tree/tree-walk.d.mts +46 -0
  134. package/dist/repository/tree/tree-walk.mjs +65 -0
  135. package/dist/repository/tree/tree-writer.mjs +68 -0
  136. package/dist/repository/types.d.mts +36 -0
  137. package/dist/sha1.d.mts +4 -0
  138. package/dist/sha1.mjs +4 -0
  139. package/dist/transport/client/receive-pack/http.d.mts +33 -0
  140. package/dist/transport/client/receive-pack/http.mjs +99 -0
  141. package/dist/transport/client/receive-pack/push-error.d.mts +23 -0
  142. package/dist/transport/client/receive-pack/push-error.mjs +32 -0
  143. package/dist/transport/client/receive-pack/push-pack-plan.d.mts +28 -0
  144. package/dist/transport/client/receive-pack/push-pack-plan.mjs +60 -0
  145. package/dist/transport/client/receive-pack/push-policy.d.mts +19 -0
  146. package/dist/transport/client/receive-pack/push-policy.mjs +64 -0
  147. package/dist/transport/client/receive-pack/push-ref-plan.d.mts +45 -0
  148. package/dist/transport/client/receive-pack/push-ref-plan.mjs +108 -0
  149. package/dist/transport/client/receive-pack/push-report.d.mts +28 -0
  150. package/dist/transport/client/receive-pack/push-report.mjs +84 -0
  151. package/dist/transport/client/receive-pack/push-request-plan.mjs +52 -0
  152. package/dist/transport/client/receive-pack/push.d.mts +32 -0
  153. package/dist/transport/client/receive-pack/push.mjs +97 -0
  154. package/dist/transport/client/receive-pack/request.d.mts +39 -0
  155. package/dist/transport/client/receive-pack/request.mjs +46 -0
  156. package/dist/transport/client/receive-pack/response.d.mts +26 -0
  157. package/dist/transport/client/receive-pack/response.mjs +52 -0
  158. package/dist/transport/client/receive-pack/result.d.mts +34 -0
  159. package/dist/transport/client/receive-pack/result.mjs +100 -0
  160. package/dist/transport/client/upload-pack/capability-advertisement.d.mts +56 -0
  161. package/dist/transport/client/upload-pack/capability-advertisement.mjs +130 -0
  162. package/dist/transport/client/upload-pack/fetch.d.mts +109 -0
  163. package/dist/transport/client/upload-pack/fetch.mjs +392 -0
  164. package/dist/transport/client/upload-pack/http.d.mts +29 -0
  165. package/dist/transport/client/upload-pack/http.mjs +79 -0
  166. package/dist/transport/client/upload-pack/ls-refs.d.mts +75 -0
  167. package/dist/transport/client/upload-pack/ls-refs.mjs +150 -0
  168. package/dist/transport/client/upload-pack/object-info.d.mts +65 -0
  169. package/dist/transport/client/upload-pack/object-info.mjs +111 -0
  170. package/dist/transport/client/upload-pack/types.d.mts +153 -0
  171. package/dist/transport/http/index.d.mts +3 -0
  172. package/dist/transport/http/index.mjs +2 -0
  173. package/dist/transport/http/smart-http.d.mts +46 -0
  174. package/dist/transport/http/smart-http.mjs +176 -0
  175. package/dist/transport/http/types.d.mts +27 -0
  176. package/dist/transport/index.d.mts +9 -0
  177. package/dist/transport/index.mjs +8 -0
  178. package/dist/transport/protocol/object-graph.d.mts +63 -0
  179. package/dist/transport/protocol/object-graph.mjs +149 -0
  180. package/dist/transport/protocol/pkt-line.d.mts +109 -0
  181. package/dist/transport/protocol/pkt-line.mjs +195 -0
  182. package/dist/transport/protocol/ref-advertisement.mjs +185 -0
  183. package/dist/transport/protocol/ref-collection.d.mts +38 -0
  184. package/dist/transport/protocol/ref-collection.mjs +63 -0
  185. package/dist/transport/protocol/ref-match.d.mts +39 -0
  186. package/dist/transport/protocol/ref-match.mjs +42 -0
  187. package/dist/transport/protocol/refspec.d.mts +44 -0
  188. package/dist/transport/protocol/refspec.mjs +79 -0
  189. package/dist/transport/protocol/side-band.d.mts +65 -0
  190. package/dist/transport/protocol/side-band.mjs +142 -0
  191. package/dist/transport/protocol/transport-capabilities.mjs +46 -0
  192. package/dist/transport/protocol/types.d.mts +148 -0
  193. package/dist/transport/protocol/update-refs.d.mts +68 -0
  194. package/dist/transport/protocol/update-refs.mjs +126 -0
  195. package/dist/transport/receive-pack.d.mts +11 -0
  196. package/dist/transport/receive-pack.mjs +11 -0
  197. package/dist/transport/server/receive-pack/advertise.d.mts +28 -0
  198. package/dist/transport/server/receive-pack/advertise.mjs +88 -0
  199. package/dist/transport/server/receive-pack/handler.d.mts +30 -0
  200. package/dist/transport/server/receive-pack/handler.mjs +156 -0
  201. package/dist/transport/server/receive-pack/index.d.mts +6 -0
  202. package/dist/transport/server/receive-pack/index.mjs +6 -0
  203. package/dist/transport/server/receive-pack/parse.d.mts +17 -0
  204. package/dist/transport/server/receive-pack/parse.mjs +80 -0
  205. package/dist/transport/server/receive-pack/report-status.mjs +64 -0
  206. package/dist/transport/server/receive-pack/service.d.mts +41 -0
  207. package/dist/transport/server/receive-pack/service.mjs +39 -0
  208. package/dist/transport/server/receive-pack/types.d.mts +56 -0
  209. package/dist/transport/server/receive-pack/types.mjs +25 -0
  210. package/dist/transport/server/receive-pack/unpack.mjs +119 -0
  211. package/dist/transport/server/upload-pack/advertise.d.mts +20 -0
  212. package/dist/transport/server/upload-pack/advertise.mjs +30 -0
  213. package/dist/transport/server/upload-pack/command.d.mts +43 -0
  214. package/dist/transport/server/upload-pack/command.mjs +56 -0
  215. package/dist/transport/server/upload-pack/fetch.d.mts +43 -0
  216. package/dist/transport/server/upload-pack/fetch.mjs +217 -0
  217. package/dist/transport/server/upload-pack/index.d.mts +7 -0
  218. package/dist/transport/server/upload-pack/index.mjs +7 -0
  219. package/dist/transport/server/upload-pack/ls-refs.d.mts +38 -0
  220. package/dist/transport/server/upload-pack/ls-refs.mjs +113 -0
  221. package/dist/transport/server/upload-pack/service.d.mts +40 -0
  222. package/dist/transport/server/upload-pack/service.mjs +51 -0
  223. package/dist/transport/server/upload-pack/types.d.mts +11 -0
  224. package/dist/transport/server/upload-pack/types.mjs +21 -0
  225. package/dist/transport/upload-pack.d.mts +7 -0
  226. package/dist/transport/upload-pack.mjs +6 -0
  227. package/package.json +98 -0
@@ -0,0 +1,113 @@
1
+ import { sha1 } from "../../../core/types.mjs";
2
+ import { tryReadObject } from "../../../objects/raw.mjs";
3
+ import { resolveRefHash } from "../../../refs/resolve.mjs";
4
+ import { encodeFlushPkt, encodePktLine } from "../../protocol/pkt-line.mjs";
5
+ //#region src/transport/server/upload-pack/ls-refs.ts
6
+ /**
7
+ * v2 ls-refs 命令响应生成
8
+ *
9
+ * 处理 ls-refs 命令,按 ref-prefix 过滤并生成 ref 列表响应。
10
+ *
11
+ * @see https://git-scm.com/docs/protocol-v2#_ls_refs
12
+ */
13
+ /**
14
+ * 从 args 中解析 ls-refs 选项
15
+ *
16
+ * @param args - ls-refs 命令的 args 列表
17
+ * @returns 结构化的 ls-refs 选项
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const opts = parseLsRefsArgs(["symrefs", "peel", "ref-prefix refs/heads/"]);
22
+ * // { symrefs: true, peel: true, unborn: false, refPrefixes: ["refs/heads/"] }
23
+ * ```
24
+ */
25
+ function parseLsRefsArgs(args) {
26
+ const prefixes = [];
27
+ for (const arg of args) if (arg.startsWith("ref-prefix ")) prefixes.push(arg.slice(11).trim());
28
+ return {
29
+ symrefs: args.includes("symrefs"),
30
+ peel: args.includes("peel"),
31
+ unborn: args.includes("unborn"),
32
+ refPrefixes: prefixes
33
+ };
34
+ }
35
+ /**
36
+ * 读取仓库中的所有引用
37
+ *
38
+ * 包含 HEAD 和 refs/ 下的所有引用,返回名称到原始内容的映射。
39
+ * 原始内容可能是 SHA-1 哈希或以 "ref: " 开头的符号引用。
40
+ */
41
+ function readAllRefs(backend) {
42
+ const result = /* @__PURE__ */ new Map();
43
+ const headContent = backend.refs.read("HEAD");
44
+ if (headContent !== null) result.set("HEAD", headContent);
45
+ const refNames = backend.refs.listAll();
46
+ for (const ref of refNames) {
47
+ const content = backend.refs.read(ref);
48
+ if (content !== null) result.set(ref, content);
49
+ }
50
+ return result;
51
+ }
52
+ /**
53
+ * 按 ref-prefix 过滤引用
54
+ *
55
+ * HEAD 始终包含(因为它可能符号引用到 unborn branch)。
56
+ */
57
+ function filterRefsByPrefix(refs, prefixes) {
58
+ if (prefixes.length === 0) return refs;
59
+ const result = /* @__PURE__ */ new Map();
60
+ for (const [name, content] of refs) {
61
+ if (name === "HEAD") {
62
+ result.set(name, content);
63
+ continue;
64
+ }
65
+ for (const prefix of prefixes) if (name.startsWith(prefix)) {
66
+ result.set(name, content);
67
+ break;
68
+ }
69
+ }
70
+ return result;
71
+ }
72
+ /**
73
+ * 生成 ls-refs 响应
74
+ *
75
+ * @param backend - 仓库后端
76
+ * @param options - ls-refs 选项
77
+ * @returns pkt-line 编码的 ls-refs 响应
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * const buf = generateLsRefsResponse(backend, { symrefs: true, peel: true, unborn: false, refPrefixes: [] });
82
+ * ```
83
+ */
84
+ function generateLsRefsResponse(backend, options) {
85
+ const filtered = filterRefsByPrefix(readAllRefs(backend), options.refPrefixes);
86
+ const lines = [];
87
+ for (const [refName, content] of filtered) {
88
+ if (content === null || content.length === 0) continue;
89
+ if (content.startsWith("ref: ")) {
90
+ const target = content.slice(5);
91
+ const resolved = resolveRefHash(backend.refs, refName);
92
+ if (resolved === null && !options.unborn) continue;
93
+ const oid = resolved ?? "unborn";
94
+ const attrs = [];
95
+ if (options.symrefs) attrs.push(`symref-target:${target}`);
96
+ const attrStr = attrs.length > 0 ? ` ${attrs.join(" ")}` : "";
97
+ lines.push(encodePktLine(`${oid} ${refName}${attrStr}\n`));
98
+ } else if (/^[0-9a-f]{40}$/.test(content)) {
99
+ const oid = sha1(content);
100
+ const attrs = [];
101
+ if (options.peel && refName.startsWith("refs/tags/")) {
102
+ const obj = tryReadObject(backend.objects, oid);
103
+ if (obj?.type === "tag") attrs.push(`peeled:${obj.object}`);
104
+ }
105
+ const attrStr = attrs.length > 0 ? ` ${attrs.join(" ")}` : "";
106
+ lines.push(encodePktLine(`${oid} ${refName}${attrStr}\n`));
107
+ }
108
+ }
109
+ lines.push(encodeFlushPkt());
110
+ return Buffer.concat(lines);
111
+ }
112
+ //#endregion
113
+ export { generateLsRefsResponse, parseLsRefsArgs };
@@ -0,0 +1,40 @@
1
+ import { RepositoryBackend } from "../../../backend/types.mjs";
2
+
3
+ //#region src/transport/server/upload-pack/service.d.ts
4
+ /**
5
+ * Upload-Pack 服务接口
6
+ *
7
+ * 提供协议无关的 upload-pack 能力:
8
+ * - advertise(): 生成服务能力广告
9
+ * - handleRequest(): 处理客户端请求
10
+ */
11
+ interface UploadPackService {
12
+ /**
13
+ * 生成能力广告
14
+ */
15
+ advertise(): Buffer;
16
+ /**
17
+ * 处理请求
18
+ *
19
+ * @param body - 客户端请求体(pkt-line 编码)
20
+ * @returns 服务端响应(pkt-line 编码)
21
+ * @throws {UploadPackServiceError} 命令不支持或参数不合法
22
+ */
23
+ handleRequest(body: Buffer): Buffer;
24
+ }
25
+ /**
26
+ * 创建 Upload-Pack 服务实例
27
+ *
28
+ * @param backend - 仓库后端
29
+ * @returns UploadPackService 实例
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const service = createUploadPackService(backend);
34
+ * const advertise = service.advertise();
35
+ * const response = service.handleRequest(body);
36
+ * ```
37
+ */
38
+ declare function createUploadPackService(backend: RepositoryBackend): UploadPackService;
39
+ //#endregion
40
+ export { UploadPackService, createUploadPackService };
@@ -0,0 +1,51 @@
1
+ import { UploadPackServiceError } from "./types.mjs";
2
+ import { advertiseUploadPack } from "./advertise.mjs";
3
+ import { parseCommandRequest } from "./command.mjs";
4
+ import { generateLsRefsResponse, parseLsRefsArgs } from "./ls-refs.mjs";
5
+ import { generateFetchResponse, parseFetchArgs } from "./fetch.mjs";
6
+ //#region src/transport/server/upload-pack/service.ts
7
+ /**
8
+ * upload-pack 服务编排器
9
+ *
10
+ * 聚合 Git Wire 协议的服务端 upload-pack 能力:
11
+ * - 能力广告生成
12
+ * - ls-refs / fetch 命令处理
13
+ *
14
+ * 协议实现细节(v2 协议原语)在各子模块中维护,
15
+ * 本文件仅提供协议无关的服务接口和工厂。
16
+ */
17
+ /**
18
+ * 创建 Upload-Pack 服务实例
19
+ *
20
+ * @param backend - 仓库后端
21
+ * @returns UploadPackService 实例
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const service = createUploadPackService(backend);
26
+ * const advertise = service.advertise();
27
+ * const response = service.handleRequest(body);
28
+ * ```
29
+ */
30
+ function createUploadPackService(backend) {
31
+ return {
32
+ advertise() {
33
+ return advertiseUploadPack();
34
+ },
35
+ handleRequest(body) {
36
+ const parsed = parseCommandRequest(body);
37
+ try {
38
+ switch (parsed.command) {
39
+ case "ls-refs": return generateLsRefsResponse(backend, parseLsRefsArgs(parsed.args));
40
+ case "fetch": return generateFetchResponse(backend, parseFetchArgs(parsed.args));
41
+ default: throw new UploadPackServiceError(`unknown command: ${parsed.command}`);
42
+ }
43
+ } catch (err) {
44
+ if (err instanceof UploadPackServiceError) throw err;
45
+ throw err;
46
+ }
47
+ }
48
+ };
49
+ }
50
+ //#endregion
51
+ export { createUploadPackService };
@@ -0,0 +1,11 @@
1
+ //#region src/transport/server/upload-pack/types.d.ts
2
+ /**
3
+ * upload-pack 服务错误
4
+ *
5
+ * 当服务端处理请求时遇到可预见的错误情况抛出。
6
+ */
7
+ declare class UploadPackServiceError extends Error {
8
+ constructor(message: string);
9
+ }
10
+ //#endregion
11
+ export { UploadPackServiceError };
@@ -0,0 +1,21 @@
1
+ //#region src/transport/server/upload-pack/types.ts
2
+ /**
3
+ * upload-pack 服务端类型定义与常量
4
+ */
5
+ /** 服务端 agent 字符串 */
6
+ const SERVER_AGENT = "nano-git/0.1";
7
+ /** pkt-line 单帧最大负载字节数 */
8
+ const MAX_PKT_PAYLOAD = 65520;
9
+ /**
10
+ * upload-pack 服务错误
11
+ *
12
+ * 当服务端处理请求时遇到可预见的错误情况抛出。
13
+ */
14
+ var UploadPackServiceError = class extends Error {
15
+ constructor(message) {
16
+ super(`upload-pack: ${message}`);
17
+ this.name = "UploadPackServiceError";
18
+ }
19
+ };
20
+ //#endregion
21
+ export { MAX_PKT_PAYLOAD, SERVER_AGENT, UploadPackServiceError };
@@ -0,0 +1,7 @@
1
+ import { LsRefsEntry, ObjectInfoEntry, ObjectInfoResponse, V2CapabilityAdvertisement, V2CommandEntry, V2FetchRequest, V2FetchResponse, V2GitServiceTransport } from "./client/upload-pack/types.mjs";
2
+ import { ObjectInfoError, ObjectInfoQueryResult, ObjectInfoResult, objectInfo, parseObjectInfoResponse } from "./client/upload-pack/object-info.mjs";
3
+ import { V2CapabilityError, getCommandFeatures, hasCommand, parseV2CapabilityAdvertisement } from "./client/upload-pack/capability-advertisement.mjs";
4
+ import { V2SmartHttpError, createV2HttpTransport } from "./client/upload-pack/http.mjs";
5
+ import { LsRefsError, LsRefsOptions, lsRefs, lsRefsToRefAdvertisement, parseLsRefsResponse } from "./client/upload-pack/ls-refs.mjs";
6
+ import { V2FetchError, V2FetchParams, parseV2FetchResponse, v2Fetch, v2FetchObjects } from "./client/upload-pack/fetch.mjs";
7
+ export { type LsRefsEntry, LsRefsError, type LsRefsOptions, type ObjectInfoEntry, ObjectInfoError, type ObjectInfoQueryResult, type ObjectInfoResponse, type ObjectInfoResult, type V2CapabilityAdvertisement, V2CapabilityError, type V2CommandEntry, V2FetchError, type V2FetchParams, type V2FetchRequest, type V2FetchResponse, type V2GitServiceTransport, V2SmartHttpError, createV2HttpTransport, getCommandFeatures, hasCommand, lsRefs, lsRefsToRefAdvertisement, objectInfo, parseLsRefsResponse, parseObjectInfoResponse, parseV2CapabilityAdvertisement, parseV2FetchResponse, v2Fetch, v2FetchObjects };
@@ -0,0 +1,6 @@
1
+ import { V2CapabilityError, getCommandFeatures, hasCommand, parseV2CapabilityAdvertisement } from "./client/upload-pack/capability-advertisement.mjs";
2
+ import { V2SmartHttpError, createV2HttpTransport } from "./client/upload-pack/http.mjs";
3
+ import { LsRefsError, lsRefs, lsRefsToRefAdvertisement, parseLsRefsResponse } from "./client/upload-pack/ls-refs.mjs";
4
+ import { V2FetchError, parseV2FetchResponse, v2Fetch, v2FetchObjects } from "./client/upload-pack/fetch.mjs";
5
+ import { ObjectInfoError, objectInfo, parseObjectInfoResponse } from "./client/upload-pack/object-info.mjs";
6
+ export { LsRefsError, ObjectInfoError, V2CapabilityError, V2FetchError, V2SmartHttpError, createV2HttpTransport, getCommandFeatures, hasCommand, lsRefs, lsRefsToRefAdvertisement, objectInfo, parseLsRefsResponse, parseObjectInfoResponse, parseV2CapabilityAdvertisement, parseV2FetchResponse, v2Fetch, v2FetchObjects };
package/package.json ADDED
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "nano-git",
3
+ "version": "0.1.0",
4
+ "files": [
5
+ "dist"
6
+ ],
7
+ "type": "module",
8
+ "sideEffects": false,
9
+ "exports": {
10
+ ".": "./src/index.ts",
11
+ "./backend": "./src/backend/index.ts",
12
+ "./backend/file": "./src/backend/file.ts",
13
+ "./backend/memory": "./src/backend/memory.ts",
14
+ "./errors": "./src/errors.ts",
15
+ "./hash-file": "./src/hash-file.ts",
16
+ "./objects": "./src/objects/index.ts",
17
+ "./odb/file": "./src/odb/file.ts",
18
+ "./odb/memory": "./src/odb/memory.ts",
19
+ "./pack": "./src/pack/index.ts",
20
+ "./refs/file": "./src/refs/file.ts",
21
+ "./refs/memory": "./src/refs/memory.ts",
22
+ "./refs/names": "./src/refs/names.ts",
23
+ "./refs/resolve": "./src/refs/resolve.ts",
24
+ "./refs/shallow/file": "./src/refs/shallow/file.ts",
25
+ "./refs/shallow/memory": "./src/refs/shallow/memory.ts",
26
+ "./repository/core": "./src/repository/core.ts",
27
+ "./repository/file": "./src/repository/file.ts",
28
+ "./repository/memory": "./src/repository/memory.ts",
29
+ "./repository/tree/tree-patch": "./src/repository/tree/tree-patch.ts",
30
+ "./repository/tree/tree-walk": "./src/repository/tree/tree-walk.ts",
31
+ "./sha1": "./src/sha1.ts",
32
+ "./transport": "./src/transport/index.ts",
33
+ "./transport/http": "./src/transport/http/index.ts",
34
+ "./transport/receive-pack": "./src/transport/receive-pack.ts",
35
+ "./transport/server/receive-pack": "./src/transport/server/receive-pack/index.ts",
36
+ "./transport/server/upload-pack": "./src/transport/server/upload-pack/index.ts",
37
+ "./transport/upload-pack": "./src/transport/upload-pack.ts"
38
+ },
39
+ "publishConfig": {
40
+ "exports": {
41
+ ".": "./dist/index.mjs",
42
+ "./backend": "./dist/backend/index.mjs",
43
+ "./backend/file": "./dist/backend/file.mjs",
44
+ "./backend/memory": "./dist/backend/memory.mjs",
45
+ "./errors": "./dist/errors.mjs",
46
+ "./hash-file": "./dist/hash-file.mjs",
47
+ "./objects": "./dist/objects/index.mjs",
48
+ "./odb/file": "./dist/odb/file.mjs",
49
+ "./odb/memory": "./dist/odb/memory.mjs",
50
+ "./pack": "./dist/pack/index.mjs",
51
+ "./refs/file": "./dist/refs/file.mjs",
52
+ "./refs/memory": "./dist/refs/memory.mjs",
53
+ "./refs/names": "./dist/refs/names.mjs",
54
+ "./refs/resolve": "./dist/refs/resolve.mjs",
55
+ "./refs/shallow/file": "./dist/refs/shallow/file.mjs",
56
+ "./refs/shallow/memory": "./dist/refs/shallow/memory.mjs",
57
+ "./repository/core": "./dist/repository/core.mjs",
58
+ "./repository/file": "./dist/repository/file.mjs",
59
+ "./repository/memory": "./dist/repository/memory.mjs",
60
+ "./repository/tree/tree-patch": "./dist/repository/tree/tree-patch.mjs",
61
+ "./repository/tree/tree-walk": "./dist/repository/tree/tree-walk.mjs",
62
+ "./sha1": "./dist/sha1.mjs",
63
+ "./transport": "./dist/transport/index.mjs",
64
+ "./transport/http": "./dist/transport/http/index.mjs",
65
+ "./transport/receive-pack": "./dist/transport/receive-pack.mjs",
66
+ "./transport/server/receive-pack": "./dist/transport/server/receive-pack/index.mjs",
67
+ "./transport/server/upload-pack": "./dist/transport/server/upload-pack/index.mjs",
68
+ "./transport/upload-pack": "./dist/transport/upload-pack.mjs"
69
+ }
70
+ },
71
+ "scripts": {
72
+ "build": "tsdown",
73
+ "lint": "oxlint .",
74
+ "format": "oxfmt .",
75
+ "format:check": "oxfmt --check .",
76
+ "test": "bun test",
77
+ "prepublishOnly": "bun run build",
78
+ "prepare": "husky"
79
+ },
80
+ "devDependencies": {
81
+ "@types/bun": "latest",
82
+ "husky": "^9.1.7",
83
+ "lint-staged": "^17.0.7",
84
+ "oxfmt": "^0.55.0",
85
+ "oxlint": "^1.70.0",
86
+ "oxlint-tsgolint": "^0.23.0",
87
+ "tsdown": "^0.22.3"
88
+ },
89
+ "peerDependencies": {
90
+ "typescript": "^6"
91
+ },
92
+ "lint-staged": {
93
+ "*": [
94
+ "oxlint --fix --no-error-on-unmatched-pattern",
95
+ "oxfmt --no-error-on-unmatched-pattern"
96
+ ]
97
+ }
98
+ }