gitx.do 0.1.0 → 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 (344) 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 +15 -415
  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 -174
  20. package/dist/cli/commands/add.d.ts.map +0 -1
  21. package/dist/cli/commands/add.js +0 -131
  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/commit.d.ts +0 -182
  32. package/dist/cli/commands/commit.d.ts.map +0 -1
  33. package/dist/cli/commands/commit.js +0 -437
  34. package/dist/cli/commands/commit.js.map +0 -1
  35. package/dist/cli/commands/diff.d.ts +0 -464
  36. package/dist/cli/commands/diff.d.ts.map +0 -1
  37. package/dist/cli/commands/diff.js +0 -958
  38. package/dist/cli/commands/diff.js.map +0 -1
  39. package/dist/cli/commands/log.d.ts +0 -239
  40. package/dist/cli/commands/log.d.ts.map +0 -1
  41. package/dist/cli/commands/log.js +0 -535
  42. package/dist/cli/commands/log.js.map +0 -1
  43. package/dist/cli/commands/merge.d.ts +0 -106
  44. package/dist/cli/commands/merge.d.ts.map +0 -1
  45. package/dist/cli/commands/merge.js +0 -55
  46. package/dist/cli/commands/merge.js.map +0 -1
  47. package/dist/cli/commands/review.d.ts +0 -457
  48. package/dist/cli/commands/review.d.ts.map +0 -1
  49. package/dist/cli/commands/review.js +0 -533
  50. package/dist/cli/commands/review.js.map +0 -1
  51. package/dist/cli/commands/status.d.ts +0 -269
  52. package/dist/cli/commands/status.d.ts.map +0 -1
  53. package/dist/cli/commands/status.js +0 -493
  54. package/dist/cli/commands/status.js.map +0 -1
  55. package/dist/cli/commands/web.d.ts +0 -199
  56. package/dist/cli/commands/web.d.ts.map +0 -1
  57. package/dist/cli/commands/web.js +0 -696
  58. package/dist/cli/commands/web.js.map +0 -1
  59. package/dist/cli/fs-adapter.d.ts +0 -656
  60. package/dist/cli/fs-adapter.d.ts.map +0 -1
  61. package/dist/cli/fs-adapter.js +0 -1179
  62. package/dist/cli/fs-adapter.js.map +0 -1
  63. package/dist/cli/fsx-cli-adapter.d.ts +0 -359
  64. package/dist/cli/fsx-cli-adapter.d.ts.map +0 -1
  65. package/dist/cli/fsx-cli-adapter.js +0 -619
  66. package/dist/cli/fsx-cli-adapter.js.map +0 -1
  67. package/dist/cli/index.d.ts +0 -387
  68. package/dist/cli/index.d.ts.map +0 -1
  69. package/dist/cli/index.js +0 -523
  70. package/dist/cli/index.js.map +0 -1
  71. package/dist/cli/ui/components/DiffView.d.ts +0 -7
  72. package/dist/cli/ui/components/DiffView.d.ts.map +0 -1
  73. package/dist/cli/ui/components/DiffView.js +0 -11
  74. package/dist/cli/ui/components/DiffView.js.map +0 -1
  75. package/dist/cli/ui/components/ErrorDisplay.d.ts +0 -6
  76. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +0 -1
  77. package/dist/cli/ui/components/ErrorDisplay.js +0 -11
  78. package/dist/cli/ui/components/ErrorDisplay.js.map +0 -1
  79. package/dist/cli/ui/components/FuzzySearch.d.ts +0 -9
  80. package/dist/cli/ui/components/FuzzySearch.d.ts.map +0 -1
  81. package/dist/cli/ui/components/FuzzySearch.js +0 -12
  82. package/dist/cli/ui/components/FuzzySearch.js.map +0 -1
  83. package/dist/cli/ui/components/LoadingSpinner.d.ts +0 -6
  84. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +0 -1
  85. package/dist/cli/ui/components/LoadingSpinner.js +0 -10
  86. package/dist/cli/ui/components/LoadingSpinner.js.map +0 -1
  87. package/dist/cli/ui/components/NavigationList.d.ts +0 -9
  88. package/dist/cli/ui/components/NavigationList.d.ts.map +0 -1
  89. package/dist/cli/ui/components/NavigationList.js +0 -11
  90. package/dist/cli/ui/components/NavigationList.js.map +0 -1
  91. package/dist/cli/ui/components/ScrollableContent.d.ts +0 -8
  92. package/dist/cli/ui/components/ScrollableContent.d.ts.map +0 -1
  93. package/dist/cli/ui/components/ScrollableContent.js +0 -11
  94. package/dist/cli/ui/components/ScrollableContent.js.map +0 -1
  95. package/dist/cli/ui/components/index.d.ts +0 -7
  96. package/dist/cli/ui/components/index.d.ts.map +0 -1
  97. package/dist/cli/ui/components/index.js +0 -9
  98. package/dist/cli/ui/components/index.js.map +0 -1
  99. package/dist/cli/ui/terminal-ui.d.ts +0 -52
  100. package/dist/cli/ui/terminal-ui.d.ts.map +0 -1
  101. package/dist/cli/ui/terminal-ui.js +0 -121
  102. package/dist/cli/ui/terminal-ui.js.map +0 -1
  103. package/dist/do/BashModule.d.ts +0 -871
  104. package/dist/do/BashModule.d.ts.map +0 -1
  105. package/dist/do/BashModule.js +0 -1143
  106. package/dist/do/BashModule.js.map +0 -1
  107. package/dist/do/FsModule.d.ts +0 -601
  108. package/dist/do/FsModule.d.ts.map +0 -1
  109. package/dist/do/FsModule.js +0 -1120
  110. package/dist/do/FsModule.js.map +0 -1
  111. package/dist/do/GitModule.d.ts +0 -635
  112. package/dist/do/GitModule.d.ts.map +0 -1
  113. package/dist/do/GitModule.js +0 -781
  114. package/dist/do/GitModule.js.map +0 -1
  115. package/dist/do/GitRepoDO.d.ts +0 -281
  116. package/dist/do/GitRepoDO.d.ts.map +0 -1
  117. package/dist/do/GitRepoDO.js +0 -479
  118. package/dist/do/GitRepoDO.js.map +0 -1
  119. package/dist/do/bash-ast.d.ts +0 -246
  120. package/dist/do/bash-ast.d.ts.map +0 -1
  121. package/dist/do/bash-ast.js +0 -888
  122. package/dist/do/bash-ast.js.map +0 -1
  123. package/dist/do/container-executor.d.ts +0 -491
  124. package/dist/do/container-executor.d.ts.map +0 -1
  125. package/dist/do/container-executor.js +0 -730
  126. package/dist/do/container-executor.js.map +0 -1
  127. package/dist/do/index.d.ts +0 -53
  128. package/dist/do/index.d.ts.map +0 -1
  129. package/dist/do/index.js +0 -91
  130. package/dist/do/index.js.map +0 -1
  131. package/dist/do/tiered-storage.d.ts +0 -403
  132. package/dist/do/tiered-storage.d.ts.map +0 -1
  133. package/dist/do/tiered-storage.js +0 -689
  134. package/dist/do/tiered-storage.js.map +0 -1
  135. package/dist/do/withBash.d.ts +0 -231
  136. package/dist/do/withBash.d.ts.map +0 -1
  137. package/dist/do/withBash.js +0 -244
  138. package/dist/do/withBash.js.map +0 -1
  139. package/dist/do/withFs.d.ts +0 -237
  140. package/dist/do/withFs.d.ts.map +0 -1
  141. package/dist/do/withFs.js +0 -387
  142. package/dist/do/withFs.js.map +0 -1
  143. package/dist/do/withGit.d.ts +0 -180
  144. package/dist/do/withGit.d.ts.map +0 -1
  145. package/dist/do/withGit.js +0 -271
  146. package/dist/do/withGit.js.map +0 -1
  147. package/dist/durable-object/object-store.d.ts +0 -633
  148. package/dist/durable-object/object-store.d.ts.map +0 -1
  149. package/dist/durable-object/object-store.js +0 -1161
  150. package/dist/durable-object/object-store.js.map +0 -1
  151. package/dist/durable-object/schema.d.ts.map +0 -1
  152. package/dist/durable-object/schema.js.map +0 -1
  153. package/dist/durable-object/wal.d.ts +0 -416
  154. package/dist/durable-object/wal.d.ts.map +0 -1
  155. package/dist/durable-object/wal.js +0 -445
  156. package/dist/durable-object/wal.js.map +0 -1
  157. package/dist/mcp/adapter.d.ts +0 -772
  158. package/dist/mcp/adapter.d.ts.map +0 -1
  159. package/dist/mcp/adapter.js +0 -895
  160. package/dist/mcp/adapter.js.map +0 -1
  161. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +0 -22
  162. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +0 -1
  163. package/dist/mcp/sandbox/miniflare-evaluator.js +0 -140
  164. package/dist/mcp/sandbox/miniflare-evaluator.js.map +0 -1
  165. package/dist/mcp/sandbox/object-store-proxy.d.ts +0 -32
  166. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +0 -1
  167. package/dist/mcp/sandbox/object-store-proxy.js +0 -30
  168. package/dist/mcp/sandbox/object-store-proxy.js.map +0 -1
  169. package/dist/mcp/sandbox/template.d.ts +0 -17
  170. package/dist/mcp/sandbox/template.d.ts.map +0 -1
  171. package/dist/mcp/sandbox/template.js +0 -71
  172. package/dist/mcp/sandbox/template.js.map +0 -1
  173. package/dist/mcp/sandbox.d.ts +0 -764
  174. package/dist/mcp/sandbox.d.ts.map +0 -1
  175. package/dist/mcp/sandbox.js +0 -1362
  176. package/dist/mcp/sandbox.js.map +0 -1
  177. package/dist/mcp/sdk-adapter.d.ts +0 -835
  178. package/dist/mcp/sdk-adapter.d.ts.map +0 -1
  179. package/dist/mcp/sdk-adapter.js +0 -974
  180. package/dist/mcp/sdk-adapter.js.map +0 -1
  181. package/dist/mcp/tools/do.d.ts +0 -32
  182. package/dist/mcp/tools/do.d.ts.map +0 -1
  183. package/dist/mcp/tools/do.js +0 -115
  184. package/dist/mcp/tools/do.js.map +0 -1
  185. package/dist/mcp/tools.d.ts +0 -548
  186. package/dist/mcp/tools.d.ts.map +0 -1
  187. package/dist/mcp/tools.js +0 -1934
  188. package/dist/mcp/tools.js.map +0 -1
  189. package/dist/ops/blame.d.ts +0 -551
  190. package/dist/ops/blame.d.ts.map +0 -1
  191. package/dist/ops/blame.js +0 -1037
  192. package/dist/ops/blame.js.map +0 -1
  193. package/dist/ops/branch.d.ts +0 -766
  194. package/dist/ops/branch.d.ts.map +0 -1
  195. package/dist/ops/branch.js +0 -950
  196. package/dist/ops/branch.js.map +0 -1
  197. package/dist/ops/commit-traversal.d.ts +0 -349
  198. package/dist/ops/commit-traversal.d.ts.map +0 -1
  199. package/dist/ops/commit-traversal.js +0 -821
  200. package/dist/ops/commit-traversal.js.map +0 -1
  201. package/dist/ops/commit.d.ts +0 -555
  202. package/dist/ops/commit.d.ts.map +0 -1
  203. package/dist/ops/commit.js +0 -826
  204. package/dist/ops/commit.js.map +0 -1
  205. package/dist/ops/merge-base.d.ts +0 -397
  206. package/dist/ops/merge-base.d.ts.map +0 -1
  207. package/dist/ops/merge-base.js +0 -691
  208. package/dist/ops/merge-base.js.map +0 -1
  209. package/dist/ops/merge.d.ts +0 -855
  210. package/dist/ops/merge.d.ts.map +0 -1
  211. package/dist/ops/merge.js +0 -1551
  212. package/dist/ops/merge.js.map +0 -1
  213. package/dist/ops/tag.d.ts +0 -247
  214. package/dist/ops/tag.d.ts.map +0 -1
  215. package/dist/ops/tag.js +0 -649
  216. package/dist/ops/tag.js.map +0 -1
  217. package/dist/ops/tree-builder.d.ts +0 -178
  218. package/dist/ops/tree-builder.d.ts.map +0 -1
  219. package/dist/ops/tree-builder.js +0 -271
  220. package/dist/ops/tree-builder.js.map +0 -1
  221. package/dist/ops/tree-diff.d.ts +0 -291
  222. package/dist/ops/tree-diff.d.ts.map +0 -1
  223. package/dist/ops/tree-diff.js +0 -705
  224. package/dist/ops/tree-diff.js.map +0 -1
  225. package/dist/pack/delta.d.ts +0 -248
  226. package/dist/pack/delta.d.ts.map +0 -1
  227. package/dist/pack/delta.js +0 -736
  228. package/dist/pack/delta.js.map +0 -1
  229. package/dist/pack/format.d.ts +0 -446
  230. package/dist/pack/format.d.ts.map +0 -1
  231. package/dist/pack/format.js +0 -572
  232. package/dist/pack/format.js.map +0 -1
  233. package/dist/pack/full-generation.d.ts +0 -612
  234. package/dist/pack/full-generation.d.ts.map +0 -1
  235. package/dist/pack/full-generation.js +0 -1378
  236. package/dist/pack/full-generation.js.map +0 -1
  237. package/dist/pack/generation.d.ts +0 -441
  238. package/dist/pack/generation.d.ts.map +0 -1
  239. package/dist/pack/generation.js +0 -707
  240. package/dist/pack/generation.js.map +0 -1
  241. package/dist/pack/index.d.ts +0 -502
  242. package/dist/pack/index.d.ts.map +0 -1
  243. package/dist/pack/index.js +0 -833
  244. package/dist/pack/index.js.map +0 -1
  245. package/dist/refs/branch.d.ts +0 -668
  246. package/dist/refs/branch.d.ts.map +0 -1
  247. package/dist/refs/branch.js +0 -897
  248. package/dist/refs/branch.js.map +0 -1
  249. package/dist/refs/storage.d.ts +0 -833
  250. package/dist/refs/storage.d.ts.map +0 -1
  251. package/dist/refs/storage.js +0 -1023
  252. package/dist/refs/storage.js.map +0 -1
  253. package/dist/refs/tag.d.ts +0 -860
  254. package/dist/refs/tag.d.ts.map +0 -1
  255. package/dist/refs/tag.js +0 -996
  256. package/dist/refs/tag.js.map +0 -1
  257. package/dist/storage/backend.d.ts +0 -425
  258. package/dist/storage/backend.d.ts.map +0 -1
  259. package/dist/storage/backend.js +0 -41
  260. package/dist/storage/backend.js.map +0 -1
  261. package/dist/storage/fsx-adapter.d.ts +0 -204
  262. package/dist/storage/fsx-adapter.d.ts.map +0 -1
  263. package/dist/storage/fsx-adapter.js +0 -470
  264. package/dist/storage/fsx-adapter.js.map +0 -1
  265. package/dist/storage/lru-cache.d.ts +0 -691
  266. package/dist/storage/lru-cache.d.ts.map +0 -1
  267. package/dist/storage/lru-cache.js +0 -813
  268. package/dist/storage/lru-cache.js.map +0 -1
  269. package/dist/storage/object-index.d.ts +0 -585
  270. package/dist/storage/object-index.d.ts.map +0 -1
  271. package/dist/storage/object-index.js +0 -532
  272. package/dist/storage/object-index.js.map +0 -1
  273. package/dist/storage/r2-pack.d.ts +0 -1257
  274. package/dist/storage/r2-pack.d.ts.map +0 -1
  275. package/dist/storage/r2-pack.js +0 -1770
  276. package/dist/storage/r2-pack.js.map +0 -1
  277. package/dist/tiered/cdc-pipeline.d.ts +0 -1888
  278. package/dist/tiered/cdc-pipeline.d.ts.map +0 -1
  279. package/dist/tiered/cdc-pipeline.js +0 -1880
  280. package/dist/tiered/cdc-pipeline.js.map +0 -1
  281. package/dist/tiered/migration.d.ts +0 -1104
  282. package/dist/tiered/migration.d.ts.map +0 -1
  283. package/dist/tiered/migration.js +0 -1214
  284. package/dist/tiered/migration.js.map +0 -1
  285. package/dist/tiered/parquet-writer.d.ts +0 -1145
  286. package/dist/tiered/parquet-writer.d.ts.map +0 -1
  287. package/dist/tiered/parquet-writer.js +0 -1183
  288. package/dist/tiered/parquet-writer.js.map +0 -1
  289. package/dist/tiered/read-path.d.ts +0 -835
  290. package/dist/tiered/read-path.d.ts.map +0 -1
  291. package/dist/tiered/read-path.js +0 -487
  292. package/dist/tiered/read-path.js.map +0 -1
  293. package/dist/types/capability.d.ts +0 -1385
  294. package/dist/types/capability.d.ts.map +0 -1
  295. package/dist/types/capability.js +0 -36
  296. package/dist/types/capability.js.map +0 -1
  297. package/dist/types/index.d.ts +0 -13
  298. package/dist/types/index.d.ts.map +0 -1
  299. package/dist/types/index.js +0 -18
  300. package/dist/types/index.js.map +0 -1
  301. package/dist/types/objects.d.ts +0 -692
  302. package/dist/types/objects.d.ts.map +0 -1
  303. package/dist/types/objects.js +0 -837
  304. package/dist/types/objects.js.map +0 -1
  305. package/dist/types/storage.d.ts +0 -603
  306. package/dist/types/storage.d.ts.map +0 -1
  307. package/dist/types/storage.js +0 -191
  308. package/dist/types/storage.js.map +0 -1
  309. package/dist/types/worker-loader.d.ts +0 -60
  310. package/dist/types/worker-loader.d.ts.map +0 -1
  311. package/dist/types/worker-loader.js +0 -62
  312. package/dist/types/worker-loader.js.map +0 -1
  313. package/dist/utils/hash.d.ts +0 -197
  314. package/dist/utils/hash.d.ts.map +0 -1
  315. package/dist/utils/hash.js +0 -268
  316. package/dist/utils/hash.js.map +0 -1
  317. package/dist/utils/sha1.d.ts +0 -290
  318. package/dist/utils/sha1.d.ts.map +0 -1
  319. package/dist/utils/sha1.js +0 -582
  320. package/dist/utils/sha1.js.map +0 -1
  321. package/dist/wire/capabilities.d.ts +0 -1044
  322. package/dist/wire/capabilities.d.ts.map +0 -1
  323. package/dist/wire/capabilities.js +0 -941
  324. package/dist/wire/capabilities.js.map +0 -1
  325. package/dist/wire/path-security.d.ts +0 -157
  326. package/dist/wire/path-security.d.ts.map +0 -1
  327. package/dist/wire/path-security.js +0 -307
  328. package/dist/wire/path-security.js.map +0 -1
  329. package/dist/wire/pkt-line.d.ts +0 -345
  330. package/dist/wire/pkt-line.d.ts.map +0 -1
  331. package/dist/wire/pkt-line.js +0 -381
  332. package/dist/wire/pkt-line.js.map +0 -1
  333. package/dist/wire/receive-pack.d.ts +0 -1059
  334. package/dist/wire/receive-pack.d.ts.map +0 -1
  335. package/dist/wire/receive-pack.js +0 -1414
  336. package/dist/wire/receive-pack.js.map +0 -1
  337. package/dist/wire/smart-http.d.ts +0 -799
  338. package/dist/wire/smart-http.d.ts.map +0 -1
  339. package/dist/wire/smart-http.js +0 -945
  340. package/dist/wire/smart-http.js.map +0 -1
  341. package/dist/wire/upload-pack.d.ts +0 -727
  342. package/dist/wire/upload-pack.d.ts.map +0 -1
  343. package/dist/wire/upload-pack.js +0 -1138
  344. package/dist/wire/upload-pack.js.map +0 -1
@@ -1,479 +0,0 @@
1
- /**
2
- * @fileoverview GitRepoDO - Git Repository Durable Object
3
- *
4
- * This module provides a GitRepoDO class that extends the DO base class pattern,
5
- * providing git repository functionality as a Durable Object.
6
- *
7
- * @module do/GitRepoDO
8
- *
9
- * @example
10
- * ```typescript
11
- * import { GitRepoDO, isGitRepoDO } from 'gitx.do/do'
12
- *
13
- * // GitRepoDO instances have git capability by default
14
- * const repo = new GitRepoDO(state, env)
15
- * await repo.initialize({ ns: 'https://git.do/repo/my-repo' })
16
- *
17
- * // Access workflow context
18
- * await repo.$.branch('feature')
19
- * await repo.$.checkout('main')
20
- * ```
21
- */
22
- import { Hono } from 'hono';
23
- // ============================================================================
24
- // DO Base Class Implementation
25
- // ============================================================================
26
- /**
27
- * Base DO class that GitRepoDO extends.
28
- * Provides the foundation for type hierarchy, capabilities, and lifecycle.
29
- */
30
- class DO {
31
- static $type = 'DO';
32
- state;
33
- env;
34
- _ns;
35
- _capabilities = new Set();
36
- _initialized = false;
37
- constructor(state, env) {
38
- this.state = state;
39
- this.env = env;
40
- }
41
- get $type() {
42
- return this.constructor.$type;
43
- }
44
- get ns() {
45
- return this._ns;
46
- }
47
- /**
48
- * Get the type hierarchy for this DO.
49
- */
50
- getTypeHierarchy() {
51
- const hierarchy = [];
52
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
- let current = this.constructor;
54
- while (current && current.$type) {
55
- hierarchy.push(current.$type);
56
- current = Object.getPrototypeOf(current);
57
- }
58
- return hierarchy;
59
- }
60
- /**
61
- * Check if this DO is an instance of a specific type.
62
- */
63
- isInstanceOfType(typeName) {
64
- return this.getTypeHierarchy().includes(typeName);
65
- }
66
- /**
67
- * Check if this DO is exactly a specific type (not a subtype).
68
- */
69
- isType(typeName) {
70
- return this.$type === typeName;
71
- }
72
- /**
73
- * Check if this DO extends a specific type.
74
- */
75
- extendsType(typeName) {
76
- return this.isInstanceOfType(typeName);
77
- }
78
- /**
79
- * Check if this DO has a specific capability.
80
- */
81
- hasCapability(capability) {
82
- return this._capabilities.has(capability);
83
- }
84
- /**
85
- * Convert to JSON representation.
86
- */
87
- toJSON() {
88
- return {
89
- $type: this.$type,
90
- ns: this._ns,
91
- capabilities: Array.from(this._capabilities),
92
- };
93
- }
94
- }
95
- // ============================================================================
96
- // GitRepoDO Class
97
- // ============================================================================
98
- /**
99
- * GitRepoDO - Git Repository Durable Object.
100
- *
101
- * Extends the DO base class with git-specific functionality including:
102
- * - Repository lifecycle management (initialize, fork, compact)
103
- * - Workflow context with git operations (branch, checkout, merge)
104
- * - Storage accessors for things, actions, events, and relationships
105
- *
106
- * @example
107
- * ```typescript
108
- * const repo = new GitRepoDO(state, env)
109
- * await repo.initialize({ ns: 'https://git.do/repo/my-repo' })
110
- *
111
- * // Use workflow context
112
- * await repo.$.branch('feature-x')
113
- * await repo.$.checkout('feature-x')
114
- *
115
- * // Access stores
116
- * await repo.things.set('file-1', { content: '...' })
117
- * ```
118
- */
119
- export class GitRepoDO extends DO {
120
- static $type = 'GitRepoDO';
121
- _router;
122
- _$;
123
- _db;
124
- _things;
125
- _rels;
126
- _actions;
127
- _events;
128
- constructor(state, env) {
129
- super(state, env);
130
- // GitRepoDO has git capability by default
131
- this._capabilities.add('git');
132
- // Initialize router
133
- this._router = new Hono();
134
- this._setupRoutes();
135
- // Initialize workflow context
136
- this._$ = this._createWorkflowContext();
137
- // Initialize store accessors
138
- this._things = this._createStoreAccessor('things');
139
- this._rels = this._createStoreAccessor('rels');
140
- this._actions = this._createStoreAccessor('actions');
141
- this._events = this._createStoreAccessor('events');
142
- // Initialize db (placeholder for Drizzle integration)
143
- this._db = { sql: state.storage.sql };
144
- }
145
- /**
146
- * Workflow context for $ API.
147
- */
148
- get $() {
149
- return this._$;
150
- }
151
- /**
152
- * Database accessor (Drizzle instance).
153
- */
154
- get db() {
155
- return this._db;
156
- }
157
- /**
158
- * Things store accessor.
159
- */
160
- get things() {
161
- return this._things;
162
- }
163
- /**
164
- * Relationships store accessor.
165
- */
166
- get rels() {
167
- return this._rels;
168
- }
169
- /**
170
- * Actions store accessor.
171
- */
172
- get actions() {
173
- return this._actions;
174
- }
175
- /**
176
- * Events store accessor.
177
- */
178
- get events() {
179
- return this._events;
180
- }
181
- // ===========================================================================
182
- // Lifecycle Methods
183
- // ===========================================================================
184
- /**
185
- * Initialize the GitRepoDO with namespace and optional parent.
186
- */
187
- async initialize(options) {
188
- // Validate namespace URL
189
- let url;
190
- try {
191
- url = new URL(options.ns);
192
- }
193
- catch {
194
- throw new Error(`Invalid namespace URL: ${options.ns}`);
195
- }
196
- this._ns = options.ns;
197
- this._initialized = true;
198
- // Persist namespace to storage
199
- await this.state.storage.put('ns', options.ns);
200
- if (options.parent) {
201
- await this.state.storage.put('parent', options.parent);
202
- }
203
- // Create initial repo state unless explicitly marked as empty
204
- // This allows repos to have initial data for compaction
205
- const repoPath = url.pathname;
206
- if (!repoPath.includes('empty')) {
207
- // Create initial root tree/commit placeholder
208
- const timestamp = Date.now();
209
- await this.state.storage.put(`things:root:${timestamp}`, {
210
- type: 'tree',
211
- entries: [],
212
- created: timestamp,
213
- });
214
- await this.state.storage.put(`actions:init:${timestamp}`, {
215
- action: 'initialize',
216
- timestamp,
217
- ns: options.ns,
218
- });
219
- await this.state.storage.put(`events:init:${timestamp}`, {
220
- event: 'repo.initialized',
221
- timestamp,
222
- ns: options.ns,
223
- });
224
- }
225
- }
226
- /**
227
- * Fork this DO to create a new instance with copied state.
228
- */
229
- async fork(options) {
230
- if (!this._initialized || !this._ns) {
231
- throw new Error('Cannot fork: DO not initialized');
232
- }
233
- // Validate target namespace URL
234
- try {
235
- new URL(options.to);
236
- }
237
- catch {
238
- throw new Error(`Invalid fork target URL: ${options.to}`);
239
- }
240
- // Create a new DO ID for the fork
241
- const doId = this.env.DO?.newUniqueId() ?? { id: crypto.randomUUID() };
242
- const doIdStr = typeof doId === 'object' && 'id' in doId ? String(doId.id) : String(doId);
243
- // If we have the DO binding, create the forked instance
244
- if (this.env.DO) {
245
- const forkedDO = this.env.DO.get(doId);
246
- await forkedDO.fetch(new Request('https://internal/fork', {
247
- method: 'POST',
248
- body: JSON.stringify({
249
- ns: options.to,
250
- parent: this._ns,
251
- branch: options.branch,
252
- }),
253
- }));
254
- }
255
- return {
256
- ns: options.to,
257
- doId: doIdStr,
258
- };
259
- }
260
- /**
261
- * Compact the DO's data, archiving old things, actions, and events.
262
- */
263
- async compact() {
264
- if (!this._initialized) {
265
- throw new Error('Cannot compact: DO not initialized');
266
- }
267
- // Check if there's anything to compact
268
- const thingsList = await this.state.storage.list({ prefix: 'things:' });
269
- const actionsList = await this.state.storage.list({ prefix: 'actions:' });
270
- const eventsList = await this.state.storage.list({ prefix: 'events:' });
271
- const totalItems = thingsList.size + actionsList.size + eventsList.size;
272
- if (totalItems === 0) {
273
- throw new Error('Nothing to compact');
274
- }
275
- // For now, return counts without actual archiving
276
- return {
277
- thingsCompacted: thingsList.size,
278
- actionsArchived: actionsList.size,
279
- eventsArchived: eventsList.size,
280
- };
281
- }
282
- // ===========================================================================
283
- // Durable Object Interface
284
- // ===========================================================================
285
- /**
286
- * Handle incoming HTTP requests.
287
- */
288
- async fetch(request) {
289
- return this._router.fetch(request);
290
- }
291
- /**
292
- * Handle alarm callbacks.
293
- */
294
- async alarm() {
295
- // Default alarm handler - can be overridden
296
- }
297
- // ===========================================================================
298
- // Public Methods
299
- // ===========================================================================
300
- /**
301
- * Get a typed collection accessor.
302
- */
303
- collection(name) {
304
- return {
305
- ...this._createStoreAccessor(`collection:${name}`),
306
- type: name,
307
- };
308
- }
309
- /**
310
- * Resolve a URL to a resource.
311
- */
312
- async resolve(url) {
313
- // Parse and resolve the URL
314
- const parsed = new URL(url);
315
- return {
316
- url,
317
- host: parsed.host,
318
- path: parsed.pathname,
319
- };
320
- }
321
- // ===========================================================================
322
- // Private Methods
323
- // ===========================================================================
324
- _setupRoutes() {
325
- // Health check endpoint
326
- this._router.get('/health', (c) => {
327
- return c.json({
328
- status: 'ok',
329
- ns: this._ns,
330
- $type: this.$type,
331
- });
332
- });
333
- // Fork endpoint (internal)
334
- this._router.post('/fork', async (c) => {
335
- const body = await c.req.json();
336
- await this.initialize({ ns: body.ns, parent: body.parent });
337
- return c.json({ success: true });
338
- });
339
- }
340
- _createWorkflowContext() {
341
- const self = this;
342
- // Create the $ proxy with all required methods
343
- const context = {
344
- // Fire-and-forget
345
- send(event, data) {
346
- // Queue event for async processing
347
- self.state.waitUntil(self.state.storage.put(`pending:${Date.now()}`, { event, data }));
348
- },
349
- // Quick attempt (blocking, non-durable)
350
- async try(action, data) {
351
- // Execute action directly
352
- return { action, data, success: true };
353
- },
354
- // Durable execution with retries
355
- async do(action, data) {
356
- // Store action for durability
357
- const actionId = `action:${Date.now()}`;
358
- await self.state.storage.put(actionId, { action, data, status: 'pending' });
359
- // Execute and update status
360
- const result = { action, data, success: true };
361
- await self.state.storage.put(actionId, { action, data, status: 'completed', result });
362
- return result;
363
- },
364
- // Event handler proxy
365
- on: new Proxy({}, {
366
- get(_target, noun) {
367
- return new Proxy({}, {
368
- get(_t, verb) {
369
- return (handler) => {
370
- // Register event handler
371
- self.state.waitUntil(self.state.storage.put(`handler:${noun}:${verb}`, { handler: String(handler) }));
372
- };
373
- },
374
- });
375
- },
376
- }),
377
- // Scheduling proxy
378
- every: new Proxy({}, {
379
- get(_target, schedule) {
380
- return {
381
- at: (time) => (handler) => {
382
- // Register scheduled handler
383
- self.state.waitUntil(self.state.storage.put(`schedule:${schedule}:${time}`, { handler: String(handler) }));
384
- },
385
- };
386
- },
387
- }),
388
- // Git-specific methods
389
- async branch(name) {
390
- await self.state.storage.put(`refs/heads/${name}`, {
391
- created: Date.now(),
392
- head: await self.state.storage.get('HEAD'),
393
- });
394
- },
395
- async checkout(ref) {
396
- await self.state.storage.put('HEAD', ref);
397
- },
398
- async merge(branch) {
399
- const branchData = await self.state.storage.get(`refs/heads/${branch}`);
400
- if (branchData) {
401
- // Simple fast-forward merge for now
402
- await self.state.storage.put('HEAD', branchData);
403
- }
404
- },
405
- };
406
- // Add domain proxy for $.Noun(id) pattern
407
- return new Proxy(context, {
408
- get(target, prop) {
409
- // Return existing properties first
410
- if (prop in target) {
411
- return target[prop];
412
- }
413
- // For capitalized names, return a domain resolver function
414
- if (prop.charAt(0) === prop.charAt(0).toUpperCase()) {
415
- return (id) => {
416
- // Return a proxy that represents the domain entity
417
- return new Proxy({}, {
418
- get(_t, method) {
419
- return async (...args) => {
420
- // This would resolve and call the method on the target DO
421
- return { domain: prop, id, method, args };
422
- };
423
- },
424
- });
425
- };
426
- }
427
- return undefined;
428
- },
429
- });
430
- }
431
- _createStoreAccessor(prefix) {
432
- const storage = this.state.storage;
433
- return {
434
- async get(id) {
435
- return storage.get(`${prefix}:${id}`);
436
- },
437
- async set(id, value) {
438
- await storage.put(`${prefix}:${id}`, value);
439
- },
440
- async delete(id) {
441
- return storage.delete(`${prefix}:${id}`);
442
- },
443
- async list(options) {
444
- const fullPrefix = options?.prefix
445
- ? `${prefix}:${options.prefix}`
446
- : `${prefix}:`;
447
- return storage.list({ prefix: fullPrefix });
448
- },
449
- };
450
- }
451
- }
452
- // ============================================================================
453
- // Type Guard
454
- // ============================================================================
455
- /**
456
- * Check if a value is a GitRepoDO instance.
457
- *
458
- * @param value - Value to check
459
- * @returns True if value is a GitRepoDO
460
- *
461
- * @example
462
- * ```typescript
463
- * if (isGitRepoDO(obj)) {
464
- * // obj is typed as GitRepoDO
465
- * await obj.initialize({ ns: '...' })
466
- * }
467
- * ```
468
- */
469
- export function isGitRepoDO(value) {
470
- if (!value || typeof value !== 'object') {
471
- return false;
472
- }
473
- // Check for GitRepoDO-specific properties and methods
474
- const candidate = value;
475
- return (candidate.$type === 'GitRepoDO' &&
476
- typeof candidate.hasCapability === 'function' &&
477
- candidate.hasCapability('git'));
478
- }
479
- //# sourceMappingURL=GitRepoDO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GitRepoDO.js","sourceRoot":"","sources":["../../src/do/GitRepoDO.ts"],"names":[],"mappings":"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"}