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,180 +0,0 @@
1
- /**
2
- * @fileoverview withGit Mixin Function for DO Composition
3
- *
4
- * This module provides a mixin function that adds git capability to any
5
- * Durable Object class. The mixin supports lazy initialization of the
6
- * GitModule for optimal performance.
7
- *
8
- * @module do/withGit
9
- *
10
- * @example
11
- * ```typescript
12
- * import { withGit } from 'gitx.do/do'
13
- * import { DO } from 'dotdo'
14
- *
15
- * // Basic usage - adds this.git property
16
- * class MyDO extends withGit(DO, { repo: 'org/repo' }) {
17
- * async handleRequest() {
18
- * await this.git.sync()
19
- * const status = await this.git.status()
20
- * return new Response(JSON.stringify(status))
21
- * }
22
- * }
23
- *
24
- * // With $.git context integration
25
- * class WorkflowDO extends withGit(DO, {
26
- * repo: 'org/repo',
27
- * contextMode: true
28
- * }) {
29
- * async handleRequest() {
30
- * // Access via $.git when contextMode is enabled
31
- * await this.$.git.sync()
32
- * }
33
- * }
34
- * ```
35
- */
36
- import { GitModule, type GitModuleOptions, type GitBinding, type GitStatus, type SyncResult, type PushResult, type FsCapability, type R2BucketLike } from './GitModule';
37
- /**
38
- * Type for a class constructor.
39
- * @template T - The type that the constructor creates
40
- */
41
- export type Constructor<T = object> = new (...args: any[]) => T;
42
- /**
43
- * Interface for DOs that have git capability.
44
- * This is the shape of a class after applying the withGit mixin.
45
- */
46
- export interface WithGitCapability {
47
- /** The GitModule instance providing git operations */
48
- git: GitModule;
49
- }
50
- /**
51
- * Interface for the extended WorkflowContext with git capability.
52
- * Used when contextMode is enabled.
53
- */
54
- export interface WithGitContext {
55
- git: GitModule;
56
- [key: string]: unknown;
57
- }
58
- /**
59
- * Configuration options for the withGit mixin.
60
- */
61
- export interface WithGitOptions {
62
- /**
63
- * Repository identifier (e.g., 'org/repo' or full URL)
64
- */
65
- repo: string;
66
- /**
67
- * Branch to track
68
- * @default 'main'
69
- */
70
- branch?: string;
71
- /**
72
- * Path prefix within the repository
73
- */
74
- path?: string;
75
- /**
76
- * R2 binding name in env to use for object storage
77
- * @default 'R2_BUCKET'
78
- */
79
- r2Binding?: string;
80
- /**
81
- * Custom object key prefix in R2
82
- * @default 'git/objects'
83
- */
84
- objectPrefix?: string;
85
- /**
86
- * Whether to extend the $ WorkflowContext with git capability.
87
- * When true, this.$.git will be available in addition to this.git.
88
- * @default false
89
- */
90
- contextMode?: boolean;
91
- /**
92
- * Whether to auto-initialize the GitModule on construction.
93
- * When false (default), GitModule is lazily initialized on first access.
94
- * @default false
95
- */
96
- autoInit?: boolean;
97
- }
98
- /**
99
- * Mixin function to add git capability to a DO class.
100
- *
101
- * @description
102
- * Composes git functionality into a Durable Object class using the mixin pattern.
103
- * The resulting class will have a `git` property that provides GitModule functionality.
104
- *
105
- * Features:
106
- * - Lazy initialization: GitModule is only created when first accessed
107
- * - R2 integration: Automatically resolves R2 bucket from env bindings
108
- * - Context mode: Optionally extends the $ WorkflowContext with git capability
109
- * - Composable: Can be combined with other mixins like withBash
110
- *
111
- * @param Base - Base class to extend
112
- * @param options - Git configuration options
113
- * @returns Extended class with git capability
114
- *
115
- * @example
116
- * ```typescript
117
- * // Basic usage
118
- * import { withGit } from 'gitx.do/do'
119
- * import { DO } from 'dotdo'
120
- *
121
- * class MyDO extends withGit(DO, { repo: 'org/repo' }) {
122
- * async syncAndCommit() {
123
- * await this.git.sync()
124
- * await this.git.add('.')
125
- * await this.git.commit('Update files')
126
- * await this.git.push()
127
- * }
128
- * }
129
- * ```
130
- *
131
- * @example
132
- * ```typescript
133
- * // With custom R2 binding
134
- * class MyDO extends withGit(DO, {
135
- * repo: 'org/repo',
136
- * branch: 'develop',
137
- * r2Binding: 'GIT_OBJECTS'
138
- * }) {
139
- * async handleRequest() {
140
- * await this.git.sync()
141
- * return new Response('Synced!')
142
- * }
143
- * }
144
- * ```
145
- *
146
- * @example
147
- * ```typescript
148
- * // Composing with other mixins
149
- * import { withGit, withBash } from 'gitx.do/do'
150
- *
151
- * class DevDO extends withBash(withGit(DO, { repo: 'org/repo' }), {
152
- * cwd: '/workspace'
153
- * }) {
154
- * async buildAndPush() {
155
- * await this.git.sync()
156
- * await this.bash.exec('npm', ['run', 'build'])
157
- * await this.git.add('dist/')
158
- * await this.git.commit('Build: update dist')
159
- * await this.git.push()
160
- * }
161
- * }
162
- * ```
163
- */
164
- export declare function withGit<TBase extends Constructor>(Base: TBase, options: WithGitOptions): TBase & Constructor<WithGitCapability>;
165
- /**
166
- * Check if a value has git capability.
167
- *
168
- * @param value - Value to check
169
- * @returns True if value has the git property and it's a GitModule
170
- *
171
- * @example
172
- * ```typescript
173
- * if (hasGitCapability(instance)) {
174
- * await instance.git.sync()
175
- * }
176
- * ```
177
- */
178
- export declare function hasGitCapability(value: unknown): value is WithGitCapability;
179
- export { GitModule, type GitModuleOptions, type GitBinding, type GitStatus, type SyncResult, type PushResult, type FsCapability, type R2BucketLike, };
180
- //# sourceMappingURL=withGit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"withGit.d.ts","sourceRoot":"","sources":["../../src/do/withGit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAA;AAMpB;;;GAGG;AAEH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAE/D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,GAAG,EAAE,SAAS,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,SAAS,CAAA;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA8BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,wBAAgB,OAAO,CAAC,KAAK,SAAS,WAAW,EAC/C,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,cAAc,GACtB,KAAK,GAAG,WAAW,CAAC,iBAAiB,CAAC,CA+IxC;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAO3E;AAMD,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,CAAA"}
@@ -1,271 +0,0 @@
1
- /**
2
- * @fileoverview withGit Mixin Function for DO Composition
3
- *
4
- * This module provides a mixin function that adds git capability to any
5
- * Durable Object class. The mixin supports lazy initialization of the
6
- * GitModule for optimal performance.
7
- *
8
- * @module do/withGit
9
- *
10
- * @example
11
- * ```typescript
12
- * import { withGit } from 'gitx.do/do'
13
- * import { DO } from 'dotdo'
14
- *
15
- * // Basic usage - adds this.git property
16
- * class MyDO extends withGit(DO, { repo: 'org/repo' }) {
17
- * async handleRequest() {
18
- * await this.git.sync()
19
- * const status = await this.git.status()
20
- * return new Response(JSON.stringify(status))
21
- * }
22
- * }
23
- *
24
- * // With $.git context integration
25
- * class WorkflowDO extends withGit(DO, {
26
- * repo: 'org/repo',
27
- * contextMode: true
28
- * }) {
29
- * async handleRequest() {
30
- * // Access via $.git when contextMode is enabled
31
- * await this.$.git.sync()
32
- * }
33
- * }
34
- * ```
35
- */
36
- import { GitModule, } from './GitModule';
37
- // ============================================================================
38
- // Symbol for Lazy Initialization Cache
39
- // ============================================================================
40
- /**
41
- * Symbol key for caching the GitModule instance.
42
- * Using a symbol prevents property name collisions.
43
- */
44
- const GIT_MODULE_CACHE = Symbol('gitModuleCache');
45
- /**
46
- * Symbol key for storing resolved options.
47
- */
48
- const GIT_OPTIONS = Symbol('gitOptions');
49
- // ============================================================================
50
- // withGit Mixin Function
51
- // ============================================================================
52
- /**
53
- * Mixin function to add git capability to a DO class.
54
- *
55
- * @description
56
- * Composes git functionality into a Durable Object class using the mixin pattern.
57
- * The resulting class will have a `git` property that provides GitModule functionality.
58
- *
59
- * Features:
60
- * - Lazy initialization: GitModule is only created when first accessed
61
- * - R2 integration: Automatically resolves R2 bucket from env bindings
62
- * - Context mode: Optionally extends the $ WorkflowContext with git capability
63
- * - Composable: Can be combined with other mixins like withBash
64
- *
65
- * @param Base - Base class to extend
66
- * @param options - Git configuration options
67
- * @returns Extended class with git capability
68
- *
69
- * @example
70
- * ```typescript
71
- * // Basic usage
72
- * import { withGit } from 'gitx.do/do'
73
- * import { DO } from 'dotdo'
74
- *
75
- * class MyDO extends withGit(DO, { repo: 'org/repo' }) {
76
- * async syncAndCommit() {
77
- * await this.git.sync()
78
- * await this.git.add('.')
79
- * await this.git.commit('Update files')
80
- * await this.git.push()
81
- * }
82
- * }
83
- * ```
84
- *
85
- * @example
86
- * ```typescript
87
- * // With custom R2 binding
88
- * class MyDO extends withGit(DO, {
89
- * repo: 'org/repo',
90
- * branch: 'develop',
91
- * r2Binding: 'GIT_OBJECTS'
92
- * }) {
93
- * async handleRequest() {
94
- * await this.git.sync()
95
- * return new Response('Synced!')
96
- * }
97
- * }
98
- * ```
99
- *
100
- * @example
101
- * ```typescript
102
- * // Composing with other mixins
103
- * import { withGit, withBash } from 'gitx.do/do'
104
- *
105
- * class DevDO extends withBash(withGit(DO, { repo: 'org/repo' }), {
106
- * cwd: '/workspace'
107
- * }) {
108
- * async buildAndPush() {
109
- * await this.git.sync()
110
- * await this.bash.exec('npm', ['run', 'build'])
111
- * await this.git.add('dist/')
112
- * await this.git.commit('Build: update dist')
113
- * await this.git.push()
114
- * }
115
- * }
116
- * ```
117
- */
118
- export function withGit(Base, options) {
119
- // Validate required options
120
- if (!options.repo) {
121
- throw new Error('withGit: repo option is required');
122
- }
123
- return class WithGitMixin extends Base {
124
- /**
125
- * Static list of capabilities for introspection.
126
- */
127
- static capabilities = [...(Base.capabilities || []), 'git'];
128
- /**
129
- * Cached GitModule instance (lazy initialized).
130
- */
131
- [GIT_MODULE_CACHE];
132
- /**
133
- * Resolved options for GitModule creation.
134
- */
135
- [GIT_OPTIONS];
136
- /**
137
- * Whether the git module has been initialized.
138
- */
139
- gitInitialized = false;
140
- /**
141
- * The git property provides access to the GitModule.
142
- * Implements lazy initialization - the module is only created
143
- * when this property is first accessed.
144
- */
145
- get git() {
146
- if (!this[GIT_MODULE_CACHE]) {
147
- this[GIT_MODULE_CACHE] = this.createGitModule();
148
- }
149
- return this[GIT_MODULE_CACHE];
150
- }
151
- /**
152
- * Check if this DO class has a specific capability.
153
- * @param name - Capability name to check
154
- * @returns True if the capability is available
155
- */
156
- hasCapability(name) {
157
- if (name === 'git')
158
- return true;
159
- // Check if parent class has the hasCapability method
160
- const baseProto = Base.prototype;
161
- if (baseProto && typeof baseProto.hasCapability === 'function') {
162
- return baseProto.hasCapability.call(this, name);
163
- }
164
- return false;
165
- }
166
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
167
- constructor(...args) {
168
- super(...args);
169
- // Resolve R2 bucket from env if available
170
- const env = this.env;
171
- const r2BindingName = options.r2Binding ?? 'R2_BUCKET';
172
- const r2 = env?.[r2BindingName];
173
- // Get filesystem capability if available from $ context
174
- const dollarContext = this.$;
175
- const fs = dollarContext?.fs;
176
- // Store resolved options
177
- this[GIT_OPTIONS] = {
178
- ...options,
179
- r2,
180
- fs,
181
- };
182
- // Extend $ context if contextMode is enabled
183
- if (options.contextMode && dollarContext) {
184
- const self = this;
185
- const original$ = dollarContext;
186
- this.$ = new Proxy(original$, {
187
- get(target, prop) {
188
- if (prop === 'git') {
189
- return self.git;
190
- }
191
- // Forward to original context
192
- const value = target[prop];
193
- if (typeof value === 'function') {
194
- return value.bind(target);
195
- }
196
- return value;
197
- },
198
- });
199
- }
200
- // Auto-initialize if requested
201
- if (options.autoInit) {
202
- // Access git to trigger lazy initialization
203
- void this.git.initialize();
204
- this.gitInitialized = true;
205
- }
206
- }
207
- /**
208
- * Creates the GitModule instance with resolved options.
209
- * @returns A new GitModule instance
210
- */
211
- createGitModule() {
212
- const opts = this[GIT_OPTIONS];
213
- return new GitModule({
214
- repo: opts.repo,
215
- branch: opts.branch,
216
- path: opts.path,
217
- r2: opts.r2,
218
- fs: opts.fs,
219
- objectPrefix: opts.objectPrefix,
220
- });
221
- }
222
- /**
223
- * Initialize the git module explicitly.
224
- * This is useful when you need to ensure the module is ready
225
- * before performing operations.
226
- */
227
- async initializeGit() {
228
- if (!this.gitInitialized) {
229
- await this.git.initialize();
230
- this.gitInitialized = true;
231
- }
232
- }
233
- /**
234
- * Dispose the git module and clean up resources.
235
- */
236
- async disposeGit() {
237
- if (this[GIT_MODULE_CACHE]) {
238
- await this[GIT_MODULE_CACHE].dispose();
239
- this[GIT_MODULE_CACHE] = undefined;
240
- this.gitInitialized = false;
241
- }
242
- }
243
- };
244
- }
245
- // ============================================================================
246
- // Type Guards
247
- // ============================================================================
248
- /**
249
- * Check if a value has git capability.
250
- *
251
- * @param value - Value to check
252
- * @returns True if value has the git property and it's a GitModule
253
- *
254
- * @example
255
- * ```typescript
256
- * if (hasGitCapability(instance)) {
257
- * await instance.git.sync()
258
- * }
259
- * ```
260
- */
261
- export function hasGitCapability(value) {
262
- return (typeof value === 'object' &&
263
- value !== null &&
264
- 'git' in value &&
265
- value.git instanceof GitModule);
266
- }
267
- // ============================================================================
268
- // Re-exports for Convenience
269
- // ============================================================================
270
- export { GitModule, };
271
- //# sourceMappingURL=withGit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"withGit.js","sourceRoot":"","sources":["../../src/do/withGit.ts"],"names":[],"mappings":"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"}