gitx.do 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/README.md +40 -353
  2. package/dist/do/logger.d.ts +50 -0
  3. package/dist/do/logger.d.ts.map +1 -0
  4. package/dist/do/logger.js +122 -0
  5. package/dist/do/logger.js.map +1 -0
  6. package/dist/{durable-object → do}/schema.d.ts +3 -3
  7. package/dist/do/schema.d.ts.map +1 -0
  8. package/dist/{durable-object → do}/schema.js +4 -3
  9. package/dist/do/schema.js.map +1 -0
  10. package/dist/do/types.d.ts +267 -0
  11. package/dist/do/types.d.ts.map +1 -0
  12. package/dist/do/types.js +62 -0
  13. package/dist/do/types.js.map +1 -0
  14. package/dist/index.d.ts +14 -469
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +31 -483
  17. package/dist/index.js.map +1 -1
  18. package/package.json +13 -21
  19. package/dist/cli/commands/add.d.ts +0 -176
  20. package/dist/cli/commands/add.d.ts.map +0 -1
  21. package/dist/cli/commands/add.js +0 -979
  22. package/dist/cli/commands/add.js.map +0 -1
  23. package/dist/cli/commands/blame.d.ts +0 -259
  24. package/dist/cli/commands/blame.d.ts.map +0 -1
  25. package/dist/cli/commands/blame.js +0 -609
  26. package/dist/cli/commands/blame.js.map +0 -1
  27. package/dist/cli/commands/branch.d.ts +0 -249
  28. package/dist/cli/commands/branch.d.ts.map +0 -1
  29. package/dist/cli/commands/branch.js +0 -693
  30. package/dist/cli/commands/branch.js.map +0 -1
  31. package/dist/cli/commands/checkout.d.ts +0 -73
  32. package/dist/cli/commands/checkout.d.ts.map +0 -1
  33. package/dist/cli/commands/checkout.js +0 -725
  34. package/dist/cli/commands/checkout.js.map +0 -1
  35. package/dist/cli/commands/commit.d.ts +0 -182
  36. package/dist/cli/commands/commit.d.ts.map +0 -1
  37. package/dist/cli/commands/commit.js +0 -457
  38. package/dist/cli/commands/commit.js.map +0 -1
  39. package/dist/cli/commands/diff.d.ts +0 -464
  40. package/dist/cli/commands/diff.d.ts.map +0 -1
  41. package/dist/cli/commands/diff.js +0 -959
  42. package/dist/cli/commands/diff.js.map +0 -1
  43. package/dist/cli/commands/log.d.ts +0 -239
  44. package/dist/cli/commands/log.d.ts.map +0 -1
  45. package/dist/cli/commands/log.js +0 -535
  46. package/dist/cli/commands/log.js.map +0 -1
  47. package/dist/cli/commands/merge.d.ts +0 -106
  48. package/dist/cli/commands/merge.d.ts.map +0 -1
  49. package/dist/cli/commands/merge.js +0 -852
  50. package/dist/cli/commands/merge.js.map +0 -1
  51. package/dist/cli/commands/review.d.ts +0 -457
  52. package/dist/cli/commands/review.d.ts.map +0 -1
  53. package/dist/cli/commands/review.js +0 -558
  54. package/dist/cli/commands/review.js.map +0 -1
  55. package/dist/cli/commands/stash.d.ts +0 -157
  56. package/dist/cli/commands/stash.d.ts.map +0 -1
  57. package/dist/cli/commands/stash.js +0 -655
  58. package/dist/cli/commands/stash.js.map +0 -1
  59. package/dist/cli/commands/status.d.ts +0 -269
  60. package/dist/cli/commands/status.d.ts.map +0 -1
  61. package/dist/cli/commands/status.js +0 -492
  62. package/dist/cli/commands/status.js.map +0 -1
  63. package/dist/cli/commands/web.d.ts +0 -199
  64. package/dist/cli/commands/web.d.ts.map +0 -1
  65. package/dist/cli/commands/web.js +0 -697
  66. package/dist/cli/commands/web.js.map +0 -1
  67. package/dist/cli/fs-adapter.d.ts +0 -656
  68. package/dist/cli/fs-adapter.d.ts.map +0 -1
  69. package/dist/cli/fs-adapter.js +0 -1177
  70. package/dist/cli/fs-adapter.js.map +0 -1
  71. package/dist/cli/fsx-cli-adapter.d.ts +0 -359
  72. package/dist/cli/fsx-cli-adapter.d.ts.map +0 -1
  73. package/dist/cli/fsx-cli-adapter.js +0 -619
  74. package/dist/cli/fsx-cli-adapter.js.map +0 -1
  75. package/dist/cli/index.d.ts +0 -387
  76. package/dist/cli/index.d.ts.map +0 -1
  77. package/dist/cli/index.js +0 -579
  78. package/dist/cli/index.js.map +0 -1
  79. package/dist/cli/ui/components/DiffView.d.ts +0 -12
  80. package/dist/cli/ui/components/DiffView.d.ts.map +0 -1
  81. package/dist/cli/ui/components/DiffView.js +0 -11
  82. package/dist/cli/ui/components/DiffView.js.map +0 -1
  83. package/dist/cli/ui/components/ErrorDisplay.d.ts +0 -10
  84. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +0 -1
  85. package/dist/cli/ui/components/ErrorDisplay.js +0 -11
  86. package/dist/cli/ui/components/ErrorDisplay.js.map +0 -1
  87. package/dist/cli/ui/components/FuzzySearch.d.ts +0 -15
  88. package/dist/cli/ui/components/FuzzySearch.d.ts.map +0 -1
  89. package/dist/cli/ui/components/FuzzySearch.js +0 -12
  90. package/dist/cli/ui/components/FuzzySearch.js.map +0 -1
  91. package/dist/cli/ui/components/LoadingSpinner.d.ts +0 -10
  92. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +0 -1
  93. package/dist/cli/ui/components/LoadingSpinner.js +0 -10
  94. package/dist/cli/ui/components/LoadingSpinner.js.map +0 -1
  95. package/dist/cli/ui/components/NavigationList.d.ts +0 -14
  96. package/dist/cli/ui/components/NavigationList.d.ts.map +0 -1
  97. package/dist/cli/ui/components/NavigationList.js +0 -11
  98. package/dist/cli/ui/components/NavigationList.js.map +0 -1
  99. package/dist/cli/ui/components/ScrollableContent.d.ts +0 -13
  100. package/dist/cli/ui/components/ScrollableContent.d.ts.map +0 -1
  101. package/dist/cli/ui/components/ScrollableContent.js +0 -11
  102. package/dist/cli/ui/components/ScrollableContent.js.map +0 -1
  103. package/dist/cli/ui/components/index.d.ts +0 -7
  104. package/dist/cli/ui/components/index.d.ts.map +0 -1
  105. package/dist/cli/ui/components/index.js +0 -9
  106. package/dist/cli/ui/components/index.js.map +0 -1
  107. package/dist/cli/ui/terminal-ui.d.ts +0 -85
  108. package/dist/cli/ui/terminal-ui.d.ts.map +0 -1
  109. package/dist/cli/ui/terminal-ui.js +0 -121
  110. package/dist/cli/ui/terminal-ui.js.map +0 -1
  111. package/dist/do/BashModule.d.ts +0 -871
  112. package/dist/do/BashModule.d.ts.map +0 -1
  113. package/dist/do/BashModule.js +0 -1143
  114. package/dist/do/BashModule.js.map +0 -1
  115. package/dist/do/FsModule.d.ts +0 -612
  116. package/dist/do/FsModule.d.ts.map +0 -1
  117. package/dist/do/FsModule.js +0 -1120
  118. package/dist/do/FsModule.js.map +0 -1
  119. package/dist/do/GitModule.d.ts +0 -635
  120. package/dist/do/GitModule.d.ts.map +0 -1
  121. package/dist/do/GitModule.js +0 -784
  122. package/dist/do/GitModule.js.map +0 -1
  123. package/dist/do/GitRepoDO.d.ts +0 -281
  124. package/dist/do/GitRepoDO.d.ts.map +0 -1
  125. package/dist/do/GitRepoDO.js +0 -479
  126. package/dist/do/GitRepoDO.js.map +0 -1
  127. package/dist/do/bash-ast.d.ts +0 -246
  128. package/dist/do/bash-ast.d.ts.map +0 -1
  129. package/dist/do/bash-ast.js +0 -888
  130. package/dist/do/bash-ast.js.map +0 -1
  131. package/dist/do/container-executor.d.ts +0 -491
  132. package/dist/do/container-executor.d.ts.map +0 -1
  133. package/dist/do/container-executor.js +0 -731
  134. package/dist/do/container-executor.js.map +0 -1
  135. package/dist/do/index.d.ts +0 -53
  136. package/dist/do/index.d.ts.map +0 -1
  137. package/dist/do/index.js +0 -91
  138. package/dist/do/index.js.map +0 -1
  139. package/dist/do/tiered-storage.d.ts +0 -403
  140. package/dist/do/tiered-storage.d.ts.map +0 -1
  141. package/dist/do/tiered-storage.js +0 -689
  142. package/dist/do/tiered-storage.js.map +0 -1
  143. package/dist/do/withBash.d.ts +0 -231
  144. package/dist/do/withBash.d.ts.map +0 -1
  145. package/dist/do/withBash.js +0 -244
  146. package/dist/do/withBash.js.map +0 -1
  147. package/dist/do/withFs.d.ts +0 -237
  148. package/dist/do/withFs.d.ts.map +0 -1
  149. package/dist/do/withFs.js +0 -387
  150. package/dist/do/withFs.js.map +0 -1
  151. package/dist/do/withGit.d.ts +0 -180
  152. package/dist/do/withGit.d.ts.map +0 -1
  153. package/dist/do/withGit.js +0 -271
  154. package/dist/do/withGit.js.map +0 -1
  155. package/dist/durable-object/object-store.d.ts +0 -633
  156. package/dist/durable-object/object-store.d.ts.map +0 -1
  157. package/dist/durable-object/object-store.js +0 -1164
  158. package/dist/durable-object/object-store.js.map +0 -1
  159. package/dist/durable-object/schema.d.ts.map +0 -1
  160. package/dist/durable-object/schema.js.map +0 -1
  161. package/dist/durable-object/wal.d.ts +0 -416
  162. package/dist/durable-object/wal.d.ts.map +0 -1
  163. package/dist/durable-object/wal.js +0 -445
  164. package/dist/durable-object/wal.js.map +0 -1
  165. package/dist/mcp/adapter.d.ts +0 -772
  166. package/dist/mcp/adapter.d.ts.map +0 -1
  167. package/dist/mcp/adapter.js +0 -895
  168. package/dist/mcp/adapter.js.map +0 -1
  169. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +0 -22
  170. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +0 -1
  171. package/dist/mcp/sandbox/miniflare-evaluator.js +0 -140
  172. package/dist/mcp/sandbox/miniflare-evaluator.js.map +0 -1
  173. package/dist/mcp/sandbox/object-store-proxy.d.ts +0 -32
  174. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +0 -1
  175. package/dist/mcp/sandbox/object-store-proxy.js +0 -30
  176. package/dist/mcp/sandbox/object-store-proxy.js.map +0 -1
  177. package/dist/mcp/sandbox/template.d.ts +0 -17
  178. package/dist/mcp/sandbox/template.d.ts.map +0 -1
  179. package/dist/mcp/sandbox/template.js +0 -71
  180. package/dist/mcp/sandbox/template.js.map +0 -1
  181. package/dist/mcp/sandbox.d.ts +0 -764
  182. package/dist/mcp/sandbox.d.ts.map +0 -1
  183. package/dist/mcp/sandbox.js +0 -1362
  184. package/dist/mcp/sandbox.js.map +0 -1
  185. package/dist/mcp/sdk-adapter.d.ts +0 -835
  186. package/dist/mcp/sdk-adapter.d.ts.map +0 -1
  187. package/dist/mcp/sdk-adapter.js +0 -974
  188. package/dist/mcp/sdk-adapter.js.map +0 -1
  189. package/dist/mcp/tools/do.d.ts +0 -32
  190. package/dist/mcp/tools/do.d.ts.map +0 -1
  191. package/dist/mcp/tools/do.js +0 -117
  192. package/dist/mcp/tools/do.js.map +0 -1
  193. package/dist/mcp/tools.d.ts +0 -548
  194. package/dist/mcp/tools.d.ts.map +0 -1
  195. package/dist/mcp/tools.js +0 -3170
  196. package/dist/mcp/tools.js.map +0 -1
  197. package/dist/ops/blame.d.ts +0 -551
  198. package/dist/ops/blame.d.ts.map +0 -1
  199. package/dist/ops/blame.js +0 -1037
  200. package/dist/ops/blame.js.map +0 -1
  201. package/dist/ops/branch.d.ts +0 -766
  202. package/dist/ops/branch.d.ts.map +0 -1
  203. package/dist/ops/branch.js +0 -950
  204. package/dist/ops/branch.js.map +0 -1
  205. package/dist/ops/commit-traversal.d.ts +0 -349
  206. package/dist/ops/commit-traversal.d.ts.map +0 -1
  207. package/dist/ops/commit-traversal.js +0 -821
  208. package/dist/ops/commit-traversal.js.map +0 -1
  209. package/dist/ops/commit.d.ts +0 -555
  210. package/dist/ops/commit.d.ts.map +0 -1
  211. package/dist/ops/commit.js +0 -826
  212. package/dist/ops/commit.js.map +0 -1
  213. package/dist/ops/merge-base.d.ts +0 -397
  214. package/dist/ops/merge-base.d.ts.map +0 -1
  215. package/dist/ops/merge-base.js +0 -691
  216. package/dist/ops/merge-base.js.map +0 -1
  217. package/dist/ops/merge.d.ts +0 -855
  218. package/dist/ops/merge.d.ts.map +0 -1
  219. package/dist/ops/merge.js +0 -1551
  220. package/dist/ops/merge.js.map +0 -1
  221. package/dist/ops/tag.d.ts +0 -247
  222. package/dist/ops/tag.d.ts.map +0 -1
  223. package/dist/ops/tag.js +0 -649
  224. package/dist/ops/tag.js.map +0 -1
  225. package/dist/ops/tree-builder.d.ts +0 -178
  226. package/dist/ops/tree-builder.d.ts.map +0 -1
  227. package/dist/ops/tree-builder.js +0 -271
  228. package/dist/ops/tree-builder.js.map +0 -1
  229. package/dist/ops/tree-diff.d.ts +0 -291
  230. package/dist/ops/tree-diff.d.ts.map +0 -1
  231. package/dist/ops/tree-diff.js +0 -705
  232. package/dist/ops/tree-diff.js.map +0 -1
  233. package/dist/pack/delta.d.ts +0 -248
  234. package/dist/pack/delta.d.ts.map +0 -1
  235. package/dist/pack/delta.js +0 -740
  236. package/dist/pack/delta.js.map +0 -1
  237. package/dist/pack/format.d.ts +0 -446
  238. package/dist/pack/format.d.ts.map +0 -1
  239. package/dist/pack/format.js +0 -572
  240. package/dist/pack/format.js.map +0 -1
  241. package/dist/pack/full-generation.d.ts +0 -612
  242. package/dist/pack/full-generation.d.ts.map +0 -1
  243. package/dist/pack/full-generation.js +0 -1378
  244. package/dist/pack/full-generation.js.map +0 -1
  245. package/dist/pack/generation.d.ts +0 -441
  246. package/dist/pack/generation.d.ts.map +0 -1
  247. package/dist/pack/generation.js +0 -707
  248. package/dist/pack/generation.js.map +0 -1
  249. package/dist/pack/index.d.ts +0 -502
  250. package/dist/pack/index.d.ts.map +0 -1
  251. package/dist/pack/index.js +0 -833
  252. package/dist/pack/index.js.map +0 -1
  253. package/dist/refs/branch.d.ts +0 -683
  254. package/dist/refs/branch.d.ts.map +0 -1
  255. package/dist/refs/branch.js +0 -881
  256. package/dist/refs/branch.js.map +0 -1
  257. package/dist/refs/storage.d.ts +0 -833
  258. package/dist/refs/storage.d.ts.map +0 -1
  259. package/dist/refs/storage.js +0 -1023
  260. package/dist/refs/storage.js.map +0 -1
  261. package/dist/refs/tag.d.ts +0 -860
  262. package/dist/refs/tag.d.ts.map +0 -1
  263. package/dist/refs/tag.js +0 -996
  264. package/dist/refs/tag.js.map +0 -1
  265. package/dist/storage/backend.d.ts +0 -425
  266. package/dist/storage/backend.d.ts.map +0 -1
  267. package/dist/storage/backend.js +0 -41
  268. package/dist/storage/backend.js.map +0 -1
  269. package/dist/storage/fsx-adapter.d.ts +0 -204
  270. package/dist/storage/fsx-adapter.d.ts.map +0 -1
  271. package/dist/storage/fsx-adapter.js +0 -518
  272. package/dist/storage/fsx-adapter.js.map +0 -1
  273. package/dist/storage/lru-cache.d.ts +0 -691
  274. package/dist/storage/lru-cache.d.ts.map +0 -1
  275. package/dist/storage/lru-cache.js +0 -813
  276. package/dist/storage/lru-cache.js.map +0 -1
  277. package/dist/storage/object-index.d.ts +0 -585
  278. package/dist/storage/object-index.d.ts.map +0 -1
  279. package/dist/storage/object-index.js +0 -532
  280. package/dist/storage/object-index.js.map +0 -1
  281. package/dist/storage/r2-pack.d.ts +0 -1257
  282. package/dist/storage/r2-pack.d.ts.map +0 -1
  283. package/dist/storage/r2-pack.js +0 -1773
  284. package/dist/storage/r2-pack.js.map +0 -1
  285. package/dist/tiered/cdc-pipeline.d.ts +0 -1888
  286. package/dist/tiered/cdc-pipeline.d.ts.map +0 -1
  287. package/dist/tiered/cdc-pipeline.js +0 -1880
  288. package/dist/tiered/cdc-pipeline.js.map +0 -1
  289. package/dist/tiered/migration.d.ts +0 -1104
  290. package/dist/tiered/migration.d.ts.map +0 -1
  291. package/dist/tiered/migration.js +0 -1217
  292. package/dist/tiered/migration.js.map +0 -1
  293. package/dist/tiered/parquet-writer.d.ts +0 -1145
  294. package/dist/tiered/parquet-writer.d.ts.map +0 -1
  295. package/dist/tiered/parquet-writer.js +0 -1183
  296. package/dist/tiered/parquet-writer.js.map +0 -1
  297. package/dist/tiered/read-path.d.ts +0 -835
  298. package/dist/tiered/read-path.d.ts.map +0 -1
  299. package/dist/tiered/read-path.js +0 -487
  300. package/dist/tiered/read-path.js.map +0 -1
  301. package/dist/types/capability.d.ts +0 -1385
  302. package/dist/types/capability.d.ts.map +0 -1
  303. package/dist/types/capability.js +0 -36
  304. package/dist/types/capability.js.map +0 -1
  305. package/dist/types/index.d.ts +0 -13
  306. package/dist/types/index.d.ts.map +0 -1
  307. package/dist/types/index.js +0 -18
  308. package/dist/types/index.js.map +0 -1
  309. package/dist/types/interfaces.d.ts +0 -673
  310. package/dist/types/interfaces.d.ts.map +0 -1
  311. package/dist/types/interfaces.js +0 -26
  312. package/dist/types/interfaces.js.map +0 -1
  313. package/dist/types/objects.d.ts +0 -692
  314. package/dist/types/objects.d.ts.map +0 -1
  315. package/dist/types/objects.js +0 -837
  316. package/dist/types/objects.js.map +0 -1
  317. package/dist/types/storage.d.ts +0 -603
  318. package/dist/types/storage.d.ts.map +0 -1
  319. package/dist/types/storage.js +0 -191
  320. package/dist/types/storage.js.map +0 -1
  321. package/dist/types/worker-loader.d.ts +0 -60
  322. package/dist/types/worker-loader.d.ts.map +0 -1
  323. package/dist/types/worker-loader.js +0 -62
  324. package/dist/types/worker-loader.js.map +0 -1
  325. package/dist/utils/hash.d.ts +0 -198
  326. package/dist/utils/hash.d.ts.map +0 -1
  327. package/dist/utils/hash.js +0 -272
  328. package/dist/utils/hash.js.map +0 -1
  329. package/dist/utils/sha1.d.ts +0 -325
  330. package/dist/utils/sha1.d.ts.map +0 -1
  331. package/dist/utils/sha1.js +0 -635
  332. package/dist/utils/sha1.js.map +0 -1
  333. package/dist/wire/capabilities.d.ts +0 -1044
  334. package/dist/wire/capabilities.d.ts.map +0 -1
  335. package/dist/wire/capabilities.js +0 -941
  336. package/dist/wire/capabilities.js.map +0 -1
  337. package/dist/wire/path-security.d.ts +0 -157
  338. package/dist/wire/path-security.d.ts.map +0 -1
  339. package/dist/wire/path-security.js +0 -307
  340. package/dist/wire/path-security.js.map +0 -1
  341. package/dist/wire/pkt-line.d.ts +0 -345
  342. package/dist/wire/pkt-line.d.ts.map +0 -1
  343. package/dist/wire/pkt-line.js +0 -381
  344. package/dist/wire/pkt-line.js.map +0 -1
  345. package/dist/wire/receive-pack.d.ts +0 -1059
  346. package/dist/wire/receive-pack.d.ts.map +0 -1
  347. package/dist/wire/receive-pack.js +0 -1414
  348. package/dist/wire/receive-pack.js.map +0 -1
  349. package/dist/wire/smart-http.d.ts +0 -799
  350. package/dist/wire/smart-http.d.ts.map +0 -1
  351. package/dist/wire/smart-http.js +0 -945
  352. package/dist/wire/smart-http.js.map +0 -1
  353. package/dist/wire/upload-pack.d.ts +0 -727
  354. package/dist/wire/upload-pack.d.ts.map +0 -1
  355. package/dist/wire/upload-pack.js +0 -1141
  356. package/dist/wire/upload-pack.js.map +0 -1
package/dist/ops/tag.js DELETED
@@ -1,649 +0,0 @@
1
- /**
2
- * @fileoverview Git Tag Operations
3
- *
4
- * Implements lightweight and annotated tag operations with
5
- * support for GPG signatures, pattern filtering, and version sorting.
6
- *
7
- * ## Features
8
- *
9
- * - Create lightweight tags (ref pointing directly to commit)
10
- * - Create annotated tags (tag object with message)
11
- * - GPG signing and verification
12
- * - Tag listing with pattern filtering
13
- * - Version-based sorting
14
- * - Nested tag resolution
15
- *
16
- * ## Tag Types
17
- *
18
- * Git supports two types of tags:
19
- *
20
- * - **Lightweight tags**: Simply a ref pointing to a commit
21
- * - **Annotated tags**: A tag object with tagger info, message, and optional signature
22
- *
23
- * ## Usage Example
24
- *
25
- * ```typescript
26
- * import { createLightweightTag, createAnnotatedTag, listTags } from './ops/tag'
27
- *
28
- * // Create a lightweight tag
29
- * await createLightweightTag(store, {
30
- * name: 'v1.0.0',
31
- * target: commitSha
32
- * })
33
- *
34
- * // Create an annotated tag
35
- * await createAnnotatedTag(store, {
36
- * name: 'v2.0.0',
37
- * target: commitSha,
38
- * message: 'Release version 2.0.0',
39
- * tagger: { name: 'John Doe', email: 'john@example.com' }
40
- * })
41
- *
42
- * // List tags matching pattern
43
- * const tags = await listTags(store, { pattern: 'v*', sortByVersion: true })
44
- * ```
45
- *
46
- * @module ops/tag
47
- */
48
- // ============================================================================
49
- // Constants
50
- // ============================================================================
51
- const encoder = new TextEncoder();
52
- const decoder = new TextDecoder();
53
- const TAG_REF_PREFIX = 'refs/tags/';
54
- const MAX_TAG_RECURSION_DEPTH = 50;
55
- // ============================================================================
56
- // Validation
57
- // ============================================================================
58
- /**
59
- * Validate a tag name according to Git ref naming rules
60
- */
61
- function validateTagName(name) {
62
- if (!name || name.length === 0) {
63
- throw new Error('Tag name cannot be empty');
64
- }
65
- // Git ref naming rules
66
- if (name.startsWith('-')) {
67
- throw new Error('Tag name cannot start with a dash');
68
- }
69
- if (name.endsWith('.lock')) {
70
- throw new Error('Tag name cannot end with .lock');
71
- }
72
- if (name.includes('..')) {
73
- throw new Error('Tag name cannot contain consecutive dots');
74
- }
75
- if (/\s/.test(name)) {
76
- throw new Error('Tag name cannot contain spaces');
77
- }
78
- // Control characters (ASCII 0-31 and 127)
79
- if (/[\x00-\x1f\x7f]/.test(name)) {
80
- throw new Error('Tag name cannot contain control characters');
81
- }
82
- // Special Git characters that are not allowed
83
- if (/[~^:?*\[\]\\]/.test(name)) {
84
- throw new Error('Tag name cannot contain special characters (~^:?*[]\\)');
85
- }
86
- }
87
- /**
88
- * Validate a SHA format
89
- */
90
- function validateSha(sha) {
91
- if (!/^[0-9a-f]{40}$/i.test(sha) && !/^mock\d+$/.test(sha)) {
92
- throw new Error('Invalid SHA format');
93
- }
94
- }
95
- /**
96
- * Validate tagger information
97
- */
98
- function validateTagger(tagger) {
99
- if (tagger.name.includes('\n') || tagger.name.includes('\r')) {
100
- throw new Error('Tagger name cannot contain newlines');
101
- }
102
- if (/<|>/.test(tagger.name)) {
103
- throw new Error('Tagger name cannot contain angle brackets');
104
- }
105
- if (!tagger.email.includes('@') || !tagger.email.includes('.')) {
106
- throw new Error('Invalid email format');
107
- }
108
- if (tagger.timestamp !== undefined && tagger.timestamp < 0) {
109
- throw new Error('Timestamp cannot be negative');
110
- }
111
- }
112
- /**
113
- * Validate a message
114
- */
115
- function validateMessage(message) {
116
- if (!message || message.trim().length === 0) {
117
- throw new Error('Message cannot be empty');
118
- }
119
- if (message.includes('\x00')) {
120
- throw new Error('Message cannot contain null bytes');
121
- }
122
- }
123
- // ============================================================================
124
- // Helper Functions
125
- // ============================================================================
126
- /**
127
- * Get the local timezone offset in +HHMM format
128
- */
129
- function getLocalTimezoneOffset() {
130
- const offset = new Date().getTimezoneOffset();
131
- const sign = offset <= 0 ? '+' : '-';
132
- const absOffset = Math.abs(offset);
133
- const hours = String(Math.floor(absOffset / 60)).padStart(2, '0');
134
- const minutes = String(absOffset % 60).padStart(2, '0');
135
- return `${sign}${hours}${minutes}`;
136
- }
137
- /**
138
- * Complete tagger info with defaults
139
- */
140
- function completeTagger(tagger) {
141
- return {
142
- name: tagger.name,
143
- email: tagger.email,
144
- timestamp: tagger.timestamp ?? Math.floor(Date.now() / 1000),
145
- timezone: tagger.timezone ?? getLocalTimezoneOffset()
146
- };
147
- }
148
- /**
149
- * Format an author line
150
- */
151
- function formatAuthorLine(prefix, author) {
152
- return `${prefix} ${author.name} <${author.email}> ${author.timestamp} ${author.timezone}`;
153
- }
154
- /**
155
- * Serialize a tag object to bytes (without header)
156
- */
157
- function serializeTagContent(object, objectType, tag, tagger, message, signature) {
158
- const lines = [];
159
- lines.push(`object ${object}`);
160
- lines.push(`type ${objectType}`);
161
- lines.push(`tag ${tag}`);
162
- lines.push(formatAuthorLine('tagger', tagger));
163
- lines.push('');
164
- lines.push(message);
165
- if (signature) {
166
- lines.push(signature);
167
- }
168
- return encoder.encode(lines.join('\n'));
169
- }
170
- /**
171
- * Compare version strings for sorting
172
- */
173
- function compareVersions(a, b) {
174
- // Extract version parts from strings like "v1.2.3" or "1.2.3"
175
- const aParts = a.replace(/^v/, '').split('.').map(p => {
176
- const num = parseInt(p, 10);
177
- return isNaN(num) ? 0 : num;
178
- });
179
- const bParts = b.replace(/^v/, '').split('.').map(p => {
180
- const num = parseInt(p, 10);
181
- return isNaN(num) ? 0 : num;
182
- });
183
- const maxLen = Math.max(aParts.length, bParts.length);
184
- for (let i = 0; i < maxLen; i++) {
185
- const aVal = aParts[i] ?? 0;
186
- const bVal = bParts[i] ?? 0;
187
- if (aVal < bVal)
188
- return -1;
189
- if (aVal > bVal)
190
- return 1;
191
- }
192
- return 0;
193
- }
194
- /**
195
- * Match a pattern against a tag name (simple glob matching)
196
- */
197
- function matchPattern(name, pattern) {
198
- // Convert glob pattern to regex
199
- const regexPattern = pattern
200
- .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex special chars except * and ?
201
- .replace(/\*/g, '.*')
202
- .replace(/\?/g, '.');
203
- const regex = new RegExp(`^${regexPattern}$`);
204
- return regex.test(name);
205
- }
206
- // ============================================================================
207
- // Main Functions
208
- // ============================================================================
209
- /**
210
- * Create a lightweight tag
211
- */
212
- export async function createLightweightTag(store, options) {
213
- const { name, target, verify = false, force = false } = options;
214
- validateTagName(name);
215
- validateSha(target);
216
- // Check if target exists when verify is true
217
- if (verify) {
218
- const exists = await store.hasObject(target);
219
- if (!exists) {
220
- throw new Error('Target object does not exist');
221
- }
222
- }
223
- const refName = TAG_REF_PREFIX + name;
224
- // Check if tag already exists
225
- const existingRef = await store.getRef(refName);
226
- if (existingRef && !force) {
227
- throw new Error(`Tag '${name}' already exists`);
228
- }
229
- // Create the ref
230
- await store.setRef(refName, target);
231
- return {
232
- name,
233
- target,
234
- isAnnotated: false
235
- };
236
- }
237
- /**
238
- * Create an annotated tag
239
- */
240
- export async function createAnnotatedTag(store, options) {
241
- const { name, target, message, tagger, targetType = 'commit', verify = false, force = false, signing } = options;
242
- validateTagName(name);
243
- validateSha(target);
244
- validateMessage(message);
245
- validateTagger(tagger);
246
- // Check if target exists when verify is true
247
- if (verify) {
248
- const exists = await store.hasObject(target);
249
- if (!exists) {
250
- throw new Error('Target object does not exist');
251
- }
252
- }
253
- const refName = TAG_REF_PREFIX + name;
254
- // Check if tag already exists
255
- const existingRef = await store.getRef(refName);
256
- if (existingRef && !force) {
257
- throw new Error(`Tag '${name}' already exists`);
258
- }
259
- // Complete tagger info with defaults
260
- const completedTagger = completeTagger(tagger);
261
- // Create tag content
262
- let signature;
263
- let isSigned = false;
264
- if (signing?.sign && signing.signer) {
265
- const contentToSign = serializeTagContent(target, targetType, name, completedTagger, message);
266
- signature = await signing.signer(contentToSign, signing.keyId);
267
- isSigned = true;
268
- }
269
- const tagContent = serializeTagContent(target, targetType, name, completedTagger, message, signature);
270
- // Store the tag object
271
- const tagSha = await store.storeObject('tag', tagContent);
272
- // Create the ref pointing to the tag object
273
- await store.setRef(refName, tagSha);
274
- return {
275
- name,
276
- target,
277
- isAnnotated: true,
278
- tagSha,
279
- signed: isSigned
280
- };
281
- }
282
- /**
283
- * Build a tag object without storing it
284
- */
285
- export function buildTagObject(options) {
286
- const { name, target, message, tagger, targetType = 'commit' } = options;
287
- const completedTagger = completeTagger(tagger);
288
- const tagContent = serializeTagContent(target, targetType, name, completedTagger, message);
289
- return {
290
- type: 'tag',
291
- data: tagContent,
292
- object: target,
293
- objectType: targetType,
294
- tag: name,
295
- tagger: completedTagger,
296
- message,
297
- name
298
- };
299
- }
300
- /**
301
- * Delete a tag
302
- */
303
- export async function deleteTag(store, name, options = {}) {
304
- const { force = false } = options;
305
- const refName = TAG_REF_PREFIX + name;
306
- // Get the current ref value
307
- const sha = await store.getRef(refName);
308
- if (!sha) {
309
- if (force) {
310
- return { deleted: false, name };
311
- }
312
- throw new Error(`Tag '${name}' not found`);
313
- }
314
- // Delete the ref
315
- await store.deleteRef(refName);
316
- return {
317
- deleted: true,
318
- name,
319
- sha
320
- };
321
- }
322
- /**
323
- * List tags
324
- */
325
- export async function listTags(store, options = {}) {
326
- const { pattern, sortByVersion = false, pointsAt, limit } = options;
327
- // Get all tag refs
328
- const refs = await store.listRefs(TAG_REF_PREFIX);
329
- // Build tag entries
330
- const entries = [];
331
- for (const ref of refs) {
332
- const name = ref.name.slice(TAG_REF_PREFIX.length);
333
- const sha = ref.sha;
334
- // Check if it's an annotated tag by looking up the object
335
- const obj = await store.getObject(sha);
336
- const isAnnotated = obj?.type === 'tag';
337
- // Get target for annotated tags
338
- let target = sha;
339
- if (isAnnotated && obj) {
340
- const parsed = parseTagObject(obj.data);
341
- target = parsed.object;
342
- }
343
- // Apply pattern filter
344
- if (pattern && !matchPattern(name, pattern)) {
345
- continue;
346
- }
347
- // Apply pointsAt filter
348
- if (pointsAt && target !== pointsAt) {
349
- continue;
350
- }
351
- entries.push({
352
- name,
353
- sha,
354
- isAnnotated,
355
- target
356
- });
357
- }
358
- // Sort entries
359
- if (sortByVersion) {
360
- entries.sort((a, b) => compareVersions(a.name, b.name));
361
- }
362
- else {
363
- entries.sort((a, b) => a.name.localeCompare(b.name));
364
- }
365
- // Apply limit
366
- if (limit && limit > 0) {
367
- return entries.slice(0, limit);
368
- }
369
- return entries;
370
- }
371
- /**
372
- * Get a tag by name
373
- */
374
- export async function getTag(store, name) {
375
- const refName = TAG_REF_PREFIX + name;
376
- const sha = await store.getRef(refName);
377
- if (!sha) {
378
- return null;
379
- }
380
- const obj = await store.getObject(sha);
381
- if (!obj) {
382
- return null;
383
- }
384
- if (obj.type === 'tag') {
385
- // Annotated tag
386
- const parsed = parseTagObject(obj.data);
387
- return {
388
- name,
389
- target: parsed.object,
390
- isAnnotated: true,
391
- sha,
392
- objectType: parsed.objectType,
393
- tagger: parsed.tagger,
394
- message: parsed.message,
395
- signature: parsed.signature
396
- };
397
- }
398
- else {
399
- // Lightweight tag
400
- return {
401
- name,
402
- target: sha,
403
- isAnnotated: false
404
- };
405
- }
406
- }
407
- /**
408
- * Verify a tag's signature
409
- */
410
- export async function verifyTag(store, name, options = {}) {
411
- const { verifier } = options;
412
- const tag = await getTag(store, name);
413
- if (!tag) {
414
- throw new Error(`Tag '${name}' not found`);
415
- }
416
- if (!tag.isAnnotated) {
417
- return { valid: false, signed: false };
418
- }
419
- if (!tag.signature) {
420
- return { valid: false, signed: false };
421
- }
422
- if (!verifier) {
423
- return { valid: false, signed: true };
424
- }
425
- try {
426
- // Get the tag object
427
- const refName = TAG_REF_PREFIX + name;
428
- const sha = await store.getRef(refName);
429
- if (!sha) {
430
- throw new Error(`Tag '${name}' not found`);
431
- }
432
- const obj = await store.getObject(sha);
433
- if (!obj) {
434
- throw new Error(`Tag object not found`);
435
- }
436
- // Extract the content without signature for verification
437
- const content = obj.data;
438
- const contentStr = decoder.decode(content);
439
- const sigStart = contentStr.indexOf('-----BEGIN PGP SIGNATURE-----');
440
- const dataToVerify = sigStart > 0
441
- ? encoder.encode(contentStr.slice(0, sigStart))
442
- : content;
443
- const result = await verifier(dataToVerify, tag.signature);
444
- return {
445
- valid: result.valid,
446
- signed: true,
447
- keyId: result.keyId,
448
- signer: result.signer,
449
- error: result.error
450
- };
451
- }
452
- catch (error) {
453
- return {
454
- valid: false,
455
- signed: true,
456
- error: error instanceof Error ? error.message : 'Verification failed'
457
- };
458
- }
459
- }
460
- /**
461
- * Parse a tag object from raw data
462
- */
463
- export function parseTagObject(data) {
464
- const content = decoder.decode(data);
465
- const lines = content.split('\n');
466
- let object = '';
467
- let objectType = 'commit';
468
- let tag = '';
469
- let tagger;
470
- let messageStartIndex = 0;
471
- for (let i = 0; i < lines.length; i++) {
472
- const line = lines[i];
473
- if (line === '') {
474
- messageStartIndex = i + 1;
475
- break;
476
- }
477
- if (line.startsWith('object ')) {
478
- object = line.slice(7);
479
- }
480
- else if (line.startsWith('type ')) {
481
- objectType = line.slice(5);
482
- }
483
- else if (line.startsWith('tag ')) {
484
- tag = line.slice(4);
485
- }
486
- else if (line.startsWith('tagger ')) {
487
- const match = line.match(/^tagger (.+) <(.+)> (\d+) ([+-]\d{4})$/);
488
- if (match) {
489
- tagger = {
490
- name: match[1],
491
- email: match[2],
492
- timestamp: parseInt(match[3], 10),
493
- timezone: match[4]
494
- };
495
- }
496
- }
497
- }
498
- if (!object) {
499
- throw new Error('Invalid tag: missing object field');
500
- }
501
- // Get message and signature
502
- const messageContent = lines.slice(messageStartIndex).join('\n');
503
- const sigStart = messageContent.indexOf('-----BEGIN PGP SIGNATURE-----');
504
- let message;
505
- let signature;
506
- if (sigStart >= 0) {
507
- message = messageContent.slice(0, sigStart).trimEnd();
508
- signature = messageContent.slice(sigStart);
509
- }
510
- else {
511
- message = messageContent;
512
- }
513
- return {
514
- object,
515
- objectType,
516
- tag,
517
- tagger,
518
- message,
519
- signature
520
- };
521
- }
522
- /**
523
- * Format a tag message with cleanup options
524
- */
525
- export function formatTagMessage(message, options = {}) {
526
- const { cleanup = true, commentChar } = options;
527
- if (!cleanup) {
528
- return message;
529
- }
530
- let result = message.trim();
531
- // Strip comment lines if commentChar is provided
532
- if (commentChar) {
533
- result = result
534
- .split('\n')
535
- .filter(line => !line.startsWith(commentChar))
536
- .join('\n');
537
- }
538
- // Collapse multiple blank lines to a single blank line
539
- result = result.replace(/\n{3,}/g, '\n\n');
540
- return result;
541
- }
542
- /**
543
- * Check if a tag is an annotated tag
544
- */
545
- export async function isAnnotatedTag(store, name) {
546
- const tag = await getTag(store, name);
547
- if (!tag) {
548
- throw new Error(`Tag '${name}' not found`);
549
- }
550
- return tag.isAnnotated;
551
- }
552
- /**
553
- * Get the target SHA for a tag
554
- */
555
- export async function getTagTarget(store, name) {
556
- const tag = await getTag(store, name);
557
- if (!tag) {
558
- throw new Error(`Tag '${name}' not found`);
559
- }
560
- return tag.target;
561
- }
562
- /**
563
- * Get the tagger info for a tag
564
- */
565
- export async function getTagTagger(store, name) {
566
- const tag = await getTag(store, name);
567
- if (!tag) {
568
- throw new Error(`Tag '${name}' not found`);
569
- }
570
- return tag.tagger ?? null;
571
- }
572
- /**
573
- * Resolve a tag to its final commit SHA
574
- * Follows nested tags until reaching a commit
575
- */
576
- export async function resolveTagToCommit(store, name, depth = 0) {
577
- if (depth >= MAX_TAG_RECURSION_DEPTH) {
578
- throw new Error('Maximum tag recursion depth exceeded');
579
- }
580
- const tag = await getTag(store, name);
581
- if (!tag) {
582
- throw new Error(`Tag '${name}' not found`);
583
- }
584
- // For lightweight tags pointing directly to a commit
585
- if (!tag.isAnnotated) {
586
- const obj = await store.getObject(tag.target);
587
- if (!obj || obj.type !== 'commit') {
588
- throw new Error(`Tag '${name}' does not point to a commit`);
589
- }
590
- return tag.target;
591
- }
592
- // For annotated tags, check what type of object they point to
593
- if (tag.objectType === 'commit') {
594
- return tag.target;
595
- }
596
- if (tag.objectType === 'tag') {
597
- // Nested tag - we need to resolve it
598
- // Get the nested tag object and parse it
599
- const nestedObj = await store.getObject(tag.target);
600
- if (!nestedObj || nestedObj.type !== 'tag') {
601
- throw new Error(`Nested tag object not found`);
602
- }
603
- const nestedParsed = parseTagObject(nestedObj.data);
604
- // Create a temporary tag info to continue resolution
605
- if (nestedParsed.objectType === 'commit') {
606
- return nestedParsed.object;
607
- }
608
- if (nestedParsed.objectType === 'tag') {
609
- // Continue recursion - find the nested tag name if it exists
610
- // Since we have the SHA, we need to follow it
611
- const innerObj = await store.getObject(nestedParsed.object);
612
- if (!innerObj) {
613
- throw new Error('Cannot resolve nested tag chain');
614
- }
615
- if (innerObj.type === 'commit') {
616
- return nestedParsed.object;
617
- }
618
- if (innerObj.type === 'tag') {
619
- // Parse and continue
620
- const innerParsed = parseTagObject(innerObj.data);
621
- return resolveNestedTag(store, innerParsed, depth + 1);
622
- }
623
- throw new Error(`Tag chain does not resolve to a commit`);
624
- }
625
- throw new Error(`Tag '${name}' does not resolve to a commit`);
626
- }
627
- throw new Error(`Tag '${name}' does not point to a commit (points to ${tag.objectType})`);
628
- }
629
- /**
630
- * Helper to resolve a nested tag structure
631
- */
632
- async function resolveNestedTag(store, parsed, depth) {
633
- if (depth >= MAX_TAG_RECURSION_DEPTH) {
634
- throw new Error('Maximum tag recursion depth exceeded');
635
- }
636
- if (parsed.objectType === 'commit') {
637
- return parsed.object;
638
- }
639
- if (parsed.objectType === 'tag') {
640
- const obj = await store.getObject(parsed.object);
641
- if (!obj || obj.type !== 'tag') {
642
- throw new Error('Cannot resolve nested tag chain');
643
- }
644
- const innerParsed = parseTagObject(obj.data);
645
- return resolveNestedTag(store, innerParsed, depth + 1);
646
- }
647
- throw new Error(`Tag does not resolve to a commit (points to ${parsed.objectType})`);
648
- }
649
- //# sourceMappingURL=tag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/ops/tag.ts"],"names":[],"mappings":"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"}