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
@@ -1,237 +0,0 @@
1
- /**
2
- * @fileoverview withFs Mixin for DO Composition
3
- *
4
- * This module provides a mixin function that adds filesystem capability
5
- * to any Durable Object class. The mixin follows the TypeScript mixin pattern
6
- * and supports lazy initialization of the FsModule.
7
- *
8
- * @module do/withFs
9
- *
10
- * @example
11
- * ```typescript
12
- * import { withFs } from 'gitx.do/do'
13
- * import { DO } from 'dotdo'
14
- *
15
- * // Basic usage with defaults
16
- * class MyDO extends withFs(DO) {
17
- * async loadConfig() {
18
- * const content = await this.fs.readFile('/config.json', { encoding: 'utf-8' })
19
- * return JSON.parse(content as string)
20
- * }
21
- * }
22
- *
23
- * // With custom options
24
- * class StorageDO extends withFs(DO, {
25
- * basePath: '/data',
26
- * hotMaxSize: 512 * 1024, // 512KB
27
- * getR2: (instance) => instance.env?.R2_BUCKET
28
- * }) {
29
- * async saveFile(name: string, data: string) {
30
- * await this.fs.writeFile(name, data)
31
- * }
32
- * }
33
- * ```
34
- */
35
- import { FsModule, type FsModuleOptions, type SqlStorage, type R2BucketLike, type Stats, type Dirent, type ReadOptions, type WriteOptions, type MkdirOptions, type RmdirOptions, type RemoveOptions, type ReaddirOptions, type MoveOptions, type CopyOptions } from './FsModule';
36
- /**
37
- * Type for a class constructor.
38
- * Used as the base constraint for mixin composition.
39
- */
40
- export type Constructor<T = object> = new (...args: any[]) => T;
41
- /**
42
- * Interface for DOs that have filesystem capability.
43
- * Classes extended with withFs will implement this interface.
44
- */
45
- export interface WithFsCapability {
46
- /**
47
- * The FsModule instance providing filesystem functionality.
48
- * Lazily initialized on first access.
49
- */
50
- readonly fs: FsModule;
51
- }
52
- /**
53
- * Options for the withFs mixin.
54
- * These options configure the FsModule that will be created.
55
- */
56
- export interface WithFsOptions {
57
- /**
58
- * Base path prefix for all filesystem operations.
59
- * @default '/'
60
- */
61
- basePath?: string;
62
- /**
63
- * Hot tier maximum size in bytes.
64
- * Files larger than this are stored in R2 when available.
65
- * @default 1048576 (1MB)
66
- */
67
- hotMaxSize?: number;
68
- /**
69
- * Default file mode (permissions).
70
- * @default 0o644
71
- */
72
- defaultMode?: number;
73
- /**
74
- * Default directory mode (permissions).
75
- * @default 0o755
76
- */
77
- defaultDirMode?: number;
78
- /**
79
- * Whether to extend the $ WorkflowContext with fs capability.
80
- * When true, this.$.fs will be available in addition to this.fs.
81
- * @default false
82
- */
83
- contextMode?: boolean;
84
- /**
85
- * Whether to auto-initialize the FsModule on construction.
86
- * When false (default), FsModule is lazily initialized on first access.
87
- * @default false
88
- */
89
- autoInit?: boolean;
90
- /**
91
- * Factory function to get the SQL storage from the DO instance.
92
- * This enables lazy binding of the storage based on the DO's context.
93
- *
94
- * @param instance - The DO instance
95
- * @returns The SqlStorage to use, or undefined if none available
96
- *
97
- * @example
98
- * ```typescript
99
- * withFs(DO, {
100
- * getSql: (instance) => instance.ctx?.storage?.sql
101
- * })
102
- * ```
103
- */
104
- getSql?: (instance: object) => SqlStorage | undefined;
105
- /**
106
- * Factory function to get the R2 bucket for warm tier storage.
107
- * This enables lazy binding of R2 based on the DO's environment.
108
- *
109
- * @param instance - The DO instance
110
- * @returns The R2 bucket to use, or undefined if none available
111
- *
112
- * @example
113
- * ```typescript
114
- * withFs(DO, {
115
- * getR2: (instance) => instance.env?.R2_BUCKET
116
- * })
117
- * ```
118
- */
119
- getR2?: (instance: object) => R2BucketLike | undefined;
120
- /**
121
- * Factory function to get the archive R2 bucket for cold tier storage.
122
- *
123
- * @param instance - The DO instance
124
- * @returns The archive R2 bucket to use, or undefined if none available
125
- *
126
- * @example
127
- * ```typescript
128
- * withFs(DO, {
129
- * getArchive: (instance) => instance.env?.ARCHIVE_BUCKET
130
- * })
131
- * ```
132
- */
133
- getArchive?: (instance: object) => R2BucketLike | undefined;
134
- }
135
- /**
136
- * Interface for the extended WorkflowContext with fs capability.
137
- * Used when contextMode is enabled.
138
- */
139
- export interface WithFsContext {
140
- fs: FsModule;
141
- [key: string]: unknown;
142
- }
143
- /**
144
- * Mixin function to add filesystem capability to a DO class.
145
- *
146
- * @description
147
- * Composes filesystem functionality into a Durable Object class.
148
- * The resulting class will have a `fs` property that provides
149
- * FsModule functionality for POSIX-like file operations.
150
- *
151
- * The FsModule is lazily initialized on first access to the `fs`
152
- * property. This means:
153
- * - No overhead if filesystem is never used
154
- * - Factory functions (getSql, getR2, getArchive) are called at first access
155
- * - The module can be properly initialized with DO-specific context
156
- *
157
- * The mixin supports:
158
- * - File operations: readFile, writeFile, appendFile, unlink, rename, copyFile
159
- * - Directory operations: mkdir, rmdir, readdir, rm
160
- * - Metadata operations: stat, lstat, exists, access, chmod, chown, utimes
161
- * - Symbolic links: symlink, link, readlink, realpath
162
- * - Tiered storage: promote, demote, getTier
163
- *
164
- * @param Base - Base class to extend
165
- * @param options - Filesystem configuration options (optional)
166
- * @returns Extended class with filesystem capability
167
- *
168
- * @example
169
- * ```typescript
170
- * import { withFs } from 'gitx.do/do'
171
- * import { DO } from 'dotdo'
172
- *
173
- * // Basic usage with defaults
174
- * class MyDO extends withFs(DO) {
175
- * async loadConfig() {
176
- * const content = await this.fs.readFile('/config.json', { encoding: 'utf-8' })
177
- * return JSON.parse(content as string)
178
- * }
179
- * }
180
- *
181
- * // With custom options and lazy binding
182
- * class StorageDO extends withFs(DO, {
183
- * basePath: '/data',
184
- * hotMaxSize: 512 * 1024,
185
- * getSql: (instance) => (instance as any).ctx?.storage?.sql,
186
- * getR2: (instance) => (instance as any).env?.R2_BUCKET
187
- * }) {
188
- * async saveDocument(name: string, content: string) {
189
- * await this.fs.mkdir('/documents', { recursive: true })
190
- * await this.fs.writeFile(`/documents/${name}`, content)
191
- * }
192
- * }
193
- * ```
194
- *
195
- * @example
196
- * ```typescript
197
- * // Combining with withGit and withBash
198
- * import { withGit, withBash, withFs } from 'gitx.do/do'
199
- * import { DO } from 'dotdo'
200
- *
201
- * class DevDO extends withFs(withBash(withGit(DO, { repo: 'org/repo' }), {
202
- * cwd: '/workspace'
203
- * })) {
204
- * async setupProject() {
205
- * // Sync git repository
206
- * await this.git.sync()
207
- *
208
- * // Create workspace directories
209
- * await this.fs.mkdir('/workspace/output', { recursive: true })
210
- *
211
- * // Run build commands
212
- * await this.bash.exec('npm', ['run', 'build'])
213
- *
214
- * // Read build output
215
- * const files = await this.fs.readdir('/workspace/output')
216
- * return files
217
- * }
218
- * }
219
- * ```
220
- */
221
- export declare function withFs<TBase extends Constructor>(Base: TBase, options?: WithFsOptions): TBase & Constructor<WithFsCapability>;
222
- /**
223
- * Check if a value has filesystem capability.
224
- *
225
- * @param value - Value to check
226
- * @returns True if value has the fs property and it's an FsModule
227
- *
228
- * @example
229
- * ```typescript
230
- * if (hasFsCapability(instance)) {
231
- * const content = await instance.fs.readFile('/config.json')
232
- * }
233
- * ```
234
- */
235
- export declare function hasFsCapability(value: unknown): value is WithFsCapability;
236
- export { FsModule, type FsModuleOptions, type SqlStorage, type R2BucketLike, type Stats, type Dirent, type ReadOptions, type WriteOptions, type MkdirOptions, type RmdirOptions, type RemoveOptions, type ReaddirOptions, type MoveOptions, type CopyOptions, };
237
- //# sourceMappingURL=withFs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"withFs.d.ts","sourceRoot":"","sources":["../../src/do/withFs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EACL,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAA;AAMnB;;;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,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAA;IAErD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAA;IAEtD;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAA;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,QAAQ,CAAA;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,wBAAgB,MAAM,CAAC,KAAK,SAAS,WAAW,EAC9C,IAAI,EAAE,KAAK,EACX,OAAO,GAAE,aAAkB,GAC1B,KAAK,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAmLvC;AA4FD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAOzE;AAMD,OAAO,EACL,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,CAAA"}
package/dist/do/withFs.js DELETED
@@ -1,387 +0,0 @@
1
- /**
2
- * @fileoverview withFs Mixin for DO Composition
3
- *
4
- * This module provides a mixin function that adds filesystem capability
5
- * to any Durable Object class. The mixin follows the TypeScript mixin pattern
6
- * and supports lazy initialization of the FsModule.
7
- *
8
- * @module do/withFs
9
- *
10
- * @example
11
- * ```typescript
12
- * import { withFs } from 'gitx.do/do'
13
- * import { DO } from 'dotdo'
14
- *
15
- * // Basic usage with defaults
16
- * class MyDO extends withFs(DO) {
17
- * async loadConfig() {
18
- * const content = await this.fs.readFile('/config.json', { encoding: 'utf-8' })
19
- * return JSON.parse(content as string)
20
- * }
21
- * }
22
- *
23
- * // With custom options
24
- * class StorageDO extends withFs(DO, {
25
- * basePath: '/data',
26
- * hotMaxSize: 512 * 1024, // 512KB
27
- * getR2: (instance) => instance.env?.R2_BUCKET
28
- * }) {
29
- * async saveFile(name: string, data: string) {
30
- * await this.fs.writeFile(name, data)
31
- * }
32
- * }
33
- * ```
34
- */
35
- import { FsModule, } from './FsModule';
36
- // ============================================================================
37
- // Mixin Implementation
38
- // ============================================================================
39
- /**
40
- * Symbol used to store the FsModule instance for lazy initialization.
41
- * Using a symbol prevents name collisions with user-defined properties.
42
- */
43
- const FS_MODULE_SYMBOL = Symbol('fsModule');
44
- /**
45
- * Symbol used to store the options for lazy initialization.
46
- */
47
- const FS_OPTIONS_SYMBOL = Symbol('fsOptions');
48
- /**
49
- * Symbol to track if the module has been initialized.
50
- */
51
- const FS_INITIALIZED_SYMBOL = Symbol('fsInitialized');
52
- /**
53
- * Mixin function to add filesystem capability to a DO class.
54
- *
55
- * @description
56
- * Composes filesystem functionality into a Durable Object class.
57
- * The resulting class will have a `fs` property that provides
58
- * FsModule functionality for POSIX-like file operations.
59
- *
60
- * The FsModule is lazily initialized on first access to the `fs`
61
- * property. This means:
62
- * - No overhead if filesystem is never used
63
- * - Factory functions (getSql, getR2, getArchive) are called at first access
64
- * - The module can be properly initialized with DO-specific context
65
- *
66
- * The mixin supports:
67
- * - File operations: readFile, writeFile, appendFile, unlink, rename, copyFile
68
- * - Directory operations: mkdir, rmdir, readdir, rm
69
- * - Metadata operations: stat, lstat, exists, access, chmod, chown, utimes
70
- * - Symbolic links: symlink, link, readlink, realpath
71
- * - Tiered storage: promote, demote, getTier
72
- *
73
- * @param Base - Base class to extend
74
- * @param options - Filesystem configuration options (optional)
75
- * @returns Extended class with filesystem capability
76
- *
77
- * @example
78
- * ```typescript
79
- * import { withFs } from 'gitx.do/do'
80
- * import { DO } from 'dotdo'
81
- *
82
- * // Basic usage with defaults
83
- * class MyDO extends withFs(DO) {
84
- * async loadConfig() {
85
- * const content = await this.fs.readFile('/config.json', { encoding: 'utf-8' })
86
- * return JSON.parse(content as string)
87
- * }
88
- * }
89
- *
90
- * // With custom options and lazy binding
91
- * class StorageDO extends withFs(DO, {
92
- * basePath: '/data',
93
- * hotMaxSize: 512 * 1024,
94
- * getSql: (instance) => (instance as any).ctx?.storage?.sql,
95
- * getR2: (instance) => (instance as any).env?.R2_BUCKET
96
- * }) {
97
- * async saveDocument(name: string, content: string) {
98
- * await this.fs.mkdir('/documents', { recursive: true })
99
- * await this.fs.writeFile(`/documents/${name}`, content)
100
- * }
101
- * }
102
- * ```
103
- *
104
- * @example
105
- * ```typescript
106
- * // Combining with withGit and withBash
107
- * import { withGit, withBash, withFs } from 'gitx.do/do'
108
- * import { DO } from 'dotdo'
109
- *
110
- * class DevDO extends withFs(withBash(withGit(DO, { repo: 'org/repo' }), {
111
- * cwd: '/workspace'
112
- * })) {
113
- * async setupProject() {
114
- * // Sync git repository
115
- * await this.git.sync()
116
- *
117
- * // Create workspace directories
118
- * await this.fs.mkdir('/workspace/output', { recursive: true })
119
- *
120
- * // Run build commands
121
- * await this.bash.exec('npm', ['run', 'build'])
122
- *
123
- * // Read build output
124
- * const files = await this.fs.readdir('/workspace/output')
125
- * return files
126
- * }
127
- * }
128
- * ```
129
- */
130
- export function withFs(Base, options = {}) {
131
- // Create the extended class
132
- class WithFsClass extends Base {
133
- /**
134
- * Static list of capabilities for introspection.
135
- */
136
- static capabilities = [...(Base.capabilities || []), 'fs'];
137
- /**
138
- * Internal storage for the lazily initialized FsModule.
139
- */
140
- [FS_MODULE_SYMBOL];
141
- /**
142
- * Internal storage for the options.
143
- */
144
- [FS_OPTIONS_SYMBOL];
145
- /**
146
- * Tracks whether initialization has been attempted.
147
- */
148
- [FS_INITIALIZED_SYMBOL] = false;
149
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
150
- constructor(...args) {
151
- super(...args);
152
- this[FS_OPTIONS_SYMBOL] = options;
153
- // Extend $ context if contextMode is enabled
154
- if (options.contextMode) {
155
- const dollarContext = this.$;
156
- if (dollarContext) {
157
- const self = this;
158
- this.$ = new Proxy(dollarContext, {
159
- get(target, prop) {
160
- if (prop === 'fs') {
161
- return self.fs;
162
- }
163
- // Forward to original context
164
- const value = target[prop];
165
- if (typeof value === 'function') {
166
- return value.bind(target);
167
- }
168
- return value;
169
- },
170
- });
171
- }
172
- }
173
- // Auto-initialize if requested
174
- if (options.autoInit) {
175
- // Access fs to trigger lazy initialization
176
- void this.fs.initialize();
177
- this[FS_INITIALIZED_SYMBOL] = true;
178
- }
179
- }
180
- /**
181
- * Get the FsModule instance, creating it lazily on first access.
182
- *
183
- * @returns The FsModule instance
184
- */
185
- get fs() {
186
- if (!this[FS_MODULE_SYMBOL]) {
187
- this[FS_MODULE_SYMBOL] = this._createFsModule();
188
- }
189
- return this[FS_MODULE_SYMBOL];
190
- }
191
- /**
192
- * Create the FsModule instance with resolved options.
193
- *
194
- * @returns A new FsModule instance
195
- * @private
196
- */
197
- _createFsModule() {
198
- const opts = this[FS_OPTIONS_SYMBOL];
199
- // Resolve SQL storage
200
- let sql;
201
- if (opts.getSql) {
202
- sql = opts.getSql(this);
203
- }
204
- // If no SQL factory provided, try common patterns
205
- if (!sql) {
206
- const ctx = this.ctx;
207
- const state = this.state;
208
- // Try ctx.storage.sql (dotdo pattern)
209
- sql = ctx?.storage?.sql;
210
- // Try state.storage.sql (CF DO pattern)
211
- if (!sql) {
212
- sql = state?.storage?.sql;
213
- }
214
- }
215
- // Create a mock SQL storage if none available (for testing)
216
- if (!sql) {
217
- sql = createMockSqlStorage();
218
- }
219
- // Resolve R2 if factory provided
220
- let r2;
221
- if (opts.getR2) {
222
- r2 = opts.getR2(this);
223
- }
224
- // Resolve archive if factory provided
225
- let archive;
226
- if (opts.getArchive) {
227
- archive = opts.getArchive(this);
228
- }
229
- // Build module options
230
- const moduleOptions = {
231
- sql,
232
- r2,
233
- archive,
234
- basePath: opts.basePath,
235
- hotMaxSize: opts.hotMaxSize,
236
- defaultMode: opts.defaultMode,
237
- defaultDirMode: opts.defaultDirMode,
238
- };
239
- return new FsModule(moduleOptions);
240
- }
241
- /**
242
- * Check if this DO class has a specific capability.
243
- * @param name - Capability name to check
244
- * @returns True if the capability is available
245
- */
246
- hasCapability(name) {
247
- if (name === 'fs')
248
- return true;
249
- // Check if parent class has the hasCapability method
250
- const baseProto = Base.prototype;
251
- if (baseProto && typeof baseProto.hasCapability === 'function') {
252
- return baseProto.hasCapability.call(this, name);
253
- }
254
- return false;
255
- }
256
- /**
257
- * Initialize the filesystem module asynchronously.
258
- * This should be called if you need the schema to be created before operations.
259
- *
260
- * @returns Promise that resolves when initialization is complete
261
- */
262
- async initializeFs() {
263
- if (this[FS_INITIALIZED_SYMBOL])
264
- return;
265
- // Ensure fs module is created
266
- const fs = this.fs;
267
- // Initialize the module
268
- await fs.initialize();
269
- this[FS_INITIALIZED_SYMBOL] = true;
270
- }
271
- /**
272
- * Dispose the filesystem module and clean up resources.
273
- */
274
- async disposeFs() {
275
- if (this[FS_MODULE_SYMBOL]) {
276
- await this[FS_MODULE_SYMBOL].dispose();
277
- this[FS_MODULE_SYMBOL] = undefined;
278
- this[FS_INITIALIZED_SYMBOL] = false;
279
- }
280
- }
281
- }
282
- // Return the class with proper typing
283
- return WithFsClass;
284
- }
285
- // ============================================================================
286
- // Mock SQL Storage for Testing
287
- // ============================================================================
288
- /**
289
- * Creates a simple in-memory mock SQL storage for testing.
290
- * This allows withFs to work even without a real Durable Object context.
291
- */
292
- function createMockSqlStorage() {
293
- const tables = new Map();
294
- let idCounter = 1;
295
- return {
296
- exec(sql, ..._params) {
297
- // Simple parsing for basic operations
298
- const sqlLower = sql.toLowerCase().trim();
299
- if (sqlLower.startsWith('create table')) {
300
- // Table creation - no-op in mock
301
- return {
302
- one: () => null,
303
- toArray: () => [],
304
- };
305
- }
306
- if (sqlLower.startsWith('create index')) {
307
- // Index creation - no-op in mock
308
- return {
309
- one: () => null,
310
- toArray: () => [],
311
- };
312
- }
313
- if (sqlLower.startsWith('insert')) {
314
- // Handle INSERT
315
- const match = sql.match(/INSERT.*INTO\s+(\w+)/i);
316
- const tableName = match?.[1] || 'unknown';
317
- if (!tables.has(tableName)) {
318
- tables.set(tableName, []);
319
- }
320
- const table = tables.get(tableName);
321
- const id = idCounter++;
322
- const row = { id };
323
- table.push(row);
324
- return {
325
- one: () => row,
326
- toArray: () => [row],
327
- };
328
- }
329
- if (sqlLower.startsWith('select')) {
330
- // Handle SELECT
331
- const match = sql.match(/FROM\s+(\w+)/i);
332
- const tableName = match?.[1] || 'unknown';
333
- const table = tables.get(tableName) || [];
334
- return {
335
- one: () => table[0] || null,
336
- toArray: () => table,
337
- };
338
- }
339
- if (sqlLower.startsWith('update')) {
340
- // Handle UPDATE - simplified
341
- return {
342
- one: () => null,
343
- toArray: () => [],
344
- };
345
- }
346
- if (sqlLower.startsWith('delete')) {
347
- // Handle DELETE - simplified
348
- return {
349
- one: () => null,
350
- toArray: () => [],
351
- };
352
- }
353
- // Default fallback
354
- return {
355
- one: () => null,
356
- toArray: () => [],
357
- };
358
- },
359
- };
360
- }
361
- // ============================================================================
362
- // Type Guards
363
- // ============================================================================
364
- /**
365
- * Check if a value has filesystem capability.
366
- *
367
- * @param value - Value to check
368
- * @returns True if value has the fs property and it's an FsModule
369
- *
370
- * @example
371
- * ```typescript
372
- * if (hasFsCapability(instance)) {
373
- * const content = await instance.fs.readFile('/config.json')
374
- * }
375
- * ```
376
- */
377
- export function hasFsCapability(value) {
378
- return (typeof value === 'object' &&
379
- value !== null &&
380
- 'fs' in value &&
381
- value.fs instanceof FsModule);
382
- }
383
- // ============================================================================
384
- // Re-exports for Convenience
385
- // ============================================================================
386
- export { FsModule, };
387
- //# sourceMappingURL=withFs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"withFs.js","sourceRoot":"","sources":["../../src/do/withFs.ts"],"names":[],"mappings":"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"}