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,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,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,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, ...Object.fromEntries(params.map((p, i) => [`param${i}`, p])) };
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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"}