@aigne/afs-did-space 1.12.0-beta.5

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 (510) hide show
  1. package/LICENSE.md +26 -0
  2. package/README.md +129 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.cjs +11 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.mjs +10 -0
  5. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  6. package/dist/afs-metadata-context.cjs +20 -0
  7. package/dist/afs-metadata-context.d.cts +21 -0
  8. package/dist/afs-metadata-context.d.cts.map +1 -0
  9. package/dist/afs-metadata-context.d.mts +21 -0
  10. package/dist/afs-metadata-context.d.mts.map +1 -0
  11. package/dist/afs-metadata-context.mjs +18 -0
  12. package/dist/afs-metadata-context.mjs.map +1 -0
  13. package/dist/blocklet-hook.cjs +180 -0
  14. package/dist/blocklet-hook.d.cts +29 -0
  15. package/dist/blocklet-hook.d.cts.map +1 -0
  16. package/dist/blocklet-hook.d.mts +29 -0
  17. package/dist/blocklet-hook.d.mts.map +1 -0
  18. package/dist/blocklet-hook.mjs +178 -0
  19. package/dist/blocklet-hook.mjs.map +1 -0
  20. package/dist/changelog-schema.cjs +603 -0
  21. package/dist/changelog-schema.d.cts +395 -0
  22. package/dist/changelog-schema.d.cts.map +1 -0
  23. package/dist/changelog-schema.d.mts +395 -0
  24. package/dist/changelog-schema.d.mts.map +1 -0
  25. package/dist/changelog-schema.mjs +570 -0
  26. package/dist/changelog-schema.mjs.map +1 -0
  27. package/dist/changelog-write.cjs +80 -0
  28. package/dist/changelog-write.d.cts +70 -0
  29. package/dist/changelog-write.d.cts.map +1 -0
  30. package/dist/changelog-write.d.mts +70 -0
  31. package/dist/changelog-write.d.mts.map +1 -0
  32. package/dist/changelog-write.mjs +77 -0
  33. package/dist/changelog-write.mjs.map +1 -0
  34. package/dist/cid-byte-cache.cjs +126 -0
  35. package/dist/cid-byte-cache.d.cts +46 -0
  36. package/dist/cid-byte-cache.d.cts.map +1 -0
  37. package/dist/cid-byte-cache.d.mts +47 -0
  38. package/dist/cid-byte-cache.d.mts.map +1 -0
  39. package/dist/cid-byte-cache.mjs +125 -0
  40. package/dist/cid-byte-cache.mjs.map +1 -0
  41. package/dist/cid.cjs +68 -0
  42. package/dist/cid.d.cts +22 -0
  43. package/dist/cid.d.cts.map +1 -0
  44. package/dist/cid.d.mts +22 -0
  45. package/dist/cid.d.mts.map +1 -0
  46. package/dist/cid.mjs +65 -0
  47. package/dist/cid.mjs.map +1 -0
  48. package/dist/client.cjs +221 -0
  49. package/dist/client.d.cts +72 -0
  50. package/dist/client.d.cts.map +1 -0
  51. package/dist/client.d.mts +72 -0
  52. package/dist/client.d.mts.map +1 -0
  53. package/dist/client.mjs +220 -0
  54. package/dist/client.mjs.map +1 -0
  55. package/dist/cloudflare.cjs +510 -0
  56. package/dist/cloudflare.d.cts +307 -0
  57. package/dist/cloudflare.d.cts.map +1 -0
  58. package/dist/cloudflare.d.mts +308 -0
  59. package/dist/cloudflare.d.mts.map +1 -0
  60. package/dist/cloudflare.mjs +507 -0
  61. package/dist/cloudflare.mjs.map +1 -0
  62. package/dist/ctime-backfill.cjs +272 -0
  63. package/dist/ctime-backfill.d.cts +169 -0
  64. package/dist/ctime-backfill.d.cts.map +1 -0
  65. package/dist/ctime-backfill.d.mts +169 -0
  66. package/dist/ctime-backfill.d.mts.map +1 -0
  67. package/dist/ctime-backfill.mjs +267 -0
  68. package/dist/ctime-backfill.mjs.map +1 -0
  69. package/dist/d1-gc-queue.cjs +80 -0
  70. package/dist/d1-gc-queue.d.cts +59 -0
  71. package/dist/d1-gc-queue.d.cts.map +1 -0
  72. package/dist/d1-gc-queue.d.mts +59 -0
  73. package/dist/d1-gc-queue.d.mts.map +1 -0
  74. package/dist/d1-gc-queue.mjs +81 -0
  75. package/dist/d1-gc-queue.mjs.map +1 -0
  76. package/dist/d1-resolve-store.cjs +189 -0
  77. package/dist/d1-resolve-store.d.cts +93 -0
  78. package/dist/d1-resolve-store.d.cts.map +1 -0
  79. package/dist/d1-resolve-store.d.mts +93 -0
  80. package/dist/d1-resolve-store.d.mts.map +1 -0
  81. package/dist/d1-resolve-store.mjs +190 -0
  82. package/dist/d1-resolve-store.mjs.map +1 -0
  83. package/dist/d1-schema.cjs +361 -0
  84. package/dist/d1-schema.d.cts +237 -0
  85. package/dist/d1-schema.d.cts.map +1 -0
  86. package/dist/d1-schema.d.mts +237 -0
  87. package/dist/d1-schema.d.mts.map +1 -0
  88. package/dist/d1-schema.mjs +341 -0
  89. package/dist/d1-schema.mjs.map +1 -0
  90. package/dist/d1-share-store.cjs +0 -0
  91. package/dist/d1-share-store.d.cts +53 -0
  92. package/dist/d1-share-store.d.cts.map +1 -0
  93. package/dist/d1-share-store.d.mts +53 -0
  94. package/dist/d1-share-store.d.mts.map +1 -0
  95. package/dist/d1-share-store.mjs +0 -0
  96. package/dist/d1-share-store.mjs.map +1 -0
  97. package/dist/d1-tree-index.cjs +1098 -0
  98. package/dist/d1-tree-index.d.cts +203 -0
  99. package/dist/d1-tree-index.d.cts.map +1 -0
  100. package/dist/d1-tree-index.d.mts +203 -0
  101. package/dist/d1-tree-index.d.mts.map +1 -0
  102. package/dist/d1-tree-index.mjs +1094 -0
  103. package/dist/d1-tree-index.mjs.map +1 -0
  104. package/dist/data-backend.cjs +147 -0
  105. package/dist/data-backend.d.cts +30 -0
  106. package/dist/data-backend.d.cts.map +1 -0
  107. package/dist/data-backend.d.mts +30 -0
  108. package/dist/data-backend.d.mts.map +1 -0
  109. package/dist/data-backend.mjs +148 -0
  110. package/dist/data-backend.mjs.map +1 -0
  111. package/dist/dedup-backfill.cjs +278 -0
  112. package/dist/dedup-backfill.d.cts +165 -0
  113. package/dist/dedup-backfill.d.cts.map +1 -0
  114. package/dist/dedup-backfill.d.mts +165 -0
  115. package/dist/dedup-backfill.d.mts.map +1 -0
  116. package/dist/dedup-backfill.mjs +273 -0
  117. package/dist/dedup-backfill.mjs.map +1 -0
  118. package/dist/did-space-like.d.cts +2 -0
  119. package/dist/did-space-like.d.mts +2 -0
  120. package/dist/did-utils.cjs +44 -0
  121. package/dist/did-utils.d.cts +25 -0
  122. package/dist/did-utils.d.cts.map +1 -0
  123. package/dist/did-utils.d.mts +25 -0
  124. package/dist/did-utils.d.mts.map +1 -0
  125. package/dist/did-utils.mjs +43 -0
  126. package/dist/did-utils.mjs.map +1 -0
  127. package/dist/dirty-path-queue.cjs +31 -0
  128. package/dist/dirty-path-queue.d.cts +104 -0
  129. package/dist/dirty-path-queue.d.cts.map +1 -0
  130. package/dist/dirty-path-queue.d.mts +104 -0
  131. package/dist/dirty-path-queue.d.mts.map +1 -0
  132. package/dist/dirty-path-queue.mjs +31 -0
  133. package/dist/dirty-path-queue.mjs.map +1 -0
  134. package/dist/dirty-path-schema.cjs +142 -0
  135. package/dist/dirty-path-schema.d.cts +90 -0
  136. package/dist/dirty-path-schema.d.cts.map +1 -0
  137. package/dist/dirty-path-schema.d.mts +90 -0
  138. package/dist/dirty-path-schema.d.mts.map +1 -0
  139. package/dist/dirty-path-schema.mjs +136 -0
  140. package/dist/dirty-path-schema.mjs.map +1 -0
  141. package/dist/download-actions.cjs +43 -0
  142. package/dist/download-actions.mjs +40 -0
  143. package/dist/download-actions.mjs.map +1 -0
  144. package/dist/fs-object-store.cjs +153 -0
  145. package/dist/fs-object-store.d.cts +21 -0
  146. package/dist/fs-object-store.d.cts.map +1 -0
  147. package/dist/fs-object-store.d.mts +22 -0
  148. package/dist/fs-object-store.d.mts.map +1 -0
  149. package/dist/fs-object-store.mjs +153 -0
  150. package/dist/fs-object-store.mjs.map +1 -0
  151. package/dist/gc-queue.d.cts +43 -0
  152. package/dist/gc-queue.d.cts.map +1 -0
  153. package/dist/gc-queue.d.mts +43 -0
  154. package/dist/gc-queue.d.mts.map +1 -0
  155. package/dist/index.cjs +2712 -0
  156. package/dist/index.d.cts +504 -0
  157. package/dist/index.d.cts.map +1 -0
  158. package/dist/index.d.mts +505 -0
  159. package/dist/index.d.mts.map +1 -0
  160. package/dist/index.mjs +2537 -0
  161. package/dist/index.mjs.map +1 -0
  162. package/dist/inline-content-migration.cjs +212 -0
  163. package/dist/inline-content-migration.d.cts +110 -0
  164. package/dist/inline-content-migration.d.cts.map +1 -0
  165. package/dist/inline-content-migration.d.mts +111 -0
  166. package/dist/inline-content-migration.d.mts.map +1 -0
  167. package/dist/inline-content-migration.mjs +207 -0
  168. package/dist/inline-content-migration.mjs.map +1 -0
  169. package/dist/inline-content.cjs +145 -0
  170. package/dist/inline-content.d.cts +98 -0
  171. package/dist/inline-content.d.cts.map +1 -0
  172. package/dist/inline-content.d.mts +98 -0
  173. package/dist/inline-content.d.mts.map +1 -0
  174. package/dist/inline-content.mjs +137 -0
  175. package/dist/inline-content.mjs.map +1 -0
  176. package/dist/local-changelog.cjs +241 -0
  177. package/dist/local-changelog.d.cts +119 -0
  178. package/dist/local-changelog.d.cts.map +1 -0
  179. package/dist/local-changelog.d.mts +119 -0
  180. package/dist/local-changelog.d.mts.map +1 -0
  181. package/dist/local-changelog.mjs +240 -0
  182. package/dist/local-changelog.mjs.map +1 -0
  183. package/dist/local.cjs +435 -0
  184. package/dist/local.d.cts +254 -0
  185. package/dist/local.d.cts.map +1 -0
  186. package/dist/local.d.mts +254 -0
  187. package/dist/local.d.mts.map +1 -0
  188. package/dist/local.mjs +427 -0
  189. package/dist/local.mjs.map +1 -0
  190. package/dist/memory-gc-queue.cjs +36 -0
  191. package/dist/memory-gc-queue.d.cts +22 -0
  192. package/dist/memory-gc-queue.d.cts.map +1 -0
  193. package/dist/memory-gc-queue.d.mts +22 -0
  194. package/dist/memory-gc-queue.d.mts.map +1 -0
  195. package/dist/memory-gc-queue.mjs +36 -0
  196. package/dist/memory-gc-queue.mjs.map +1 -0
  197. package/dist/memory-tree-index.cjs +734 -0
  198. package/dist/memory-tree-index.d.cts +159 -0
  199. package/dist/memory-tree-index.d.cts.map +1 -0
  200. package/dist/memory-tree-index.d.mts +159 -0
  201. package/dist/memory-tree-index.d.mts.map +1 -0
  202. package/dist/memory-tree-index.mjs +735 -0
  203. package/dist/memory-tree-index.mjs.map +1 -0
  204. package/dist/metadata-db.cjs +562 -0
  205. package/dist/metadata-db.d.cts +102 -0
  206. package/dist/metadata-db.d.cts.map +1 -0
  207. package/dist/metadata-db.d.mts +102 -0
  208. package/dist/metadata-db.d.mts.map +1 -0
  209. package/dist/metadata-db.mjs +562 -0
  210. package/dist/metadata-db.mjs.map +1 -0
  211. package/dist/mime-utils.cjs +2 -0
  212. package/dist/mime-utils.d.cts +2 -0
  213. package/dist/mime-utils.d.mts +2 -0
  214. package/dist/mime-utils.mjs +3 -0
  215. package/dist/object-key.cjs +41 -0
  216. package/dist/object-key.d.cts +25 -0
  217. package/dist/object-key.d.cts.map +1 -0
  218. package/dist/object-key.d.mts +25 -0
  219. package/dist/object-key.d.mts.map +1 -0
  220. package/dist/object-key.mjs +40 -0
  221. package/dist/object-key.mjs.map +1 -0
  222. package/dist/packages/session/dist/index.cjs +788 -0
  223. package/dist/packages/session/dist/index.mjs +782 -0
  224. package/dist/packages/session/dist/index.mjs.map +1 -0
  225. package/dist/platform/r2/dist/types.d.cts +49 -0
  226. package/dist/platform/r2/dist/types.d.cts.map +1 -0
  227. package/dist/prefix-range.cjs +33 -0
  228. package/dist/prefix-range.d.cts +29 -0
  229. package/dist/prefix-range.d.cts.map +1 -0
  230. package/dist/prefix-range.d.mts +29 -0
  231. package/dist/prefix-range.d.mts.map +1 -0
  232. package/dist/prefix-range.mjs +33 -0
  233. package/dist/prefix-range.mjs.map +1 -0
  234. package/dist/prefixed-tree-index.cjs +238 -0
  235. package/dist/prefixed-tree-index.d.cts +85 -0
  236. package/dist/prefixed-tree-index.d.cts.map +1 -0
  237. package/dist/prefixed-tree-index.d.mts +85 -0
  238. package/dist/prefixed-tree-index.d.mts.map +1 -0
  239. package/dist/prefixed-tree-index.mjs +239 -0
  240. package/dist/prefixed-tree-index.mjs.map +1 -0
  241. package/dist/presign-signer.cjs +7 -0
  242. package/dist/presign-signer.d.cts +99 -0
  243. package/dist/presign-signer.d.cts.map +1 -0
  244. package/dist/presign-signer.d.mts +99 -0
  245. package/dist/presign-signer.d.mts.map +1 -0
  246. package/dist/presign-signer.mjs +7 -0
  247. package/dist/presign-signer.mjs.map +1 -0
  248. package/dist/providers/platform/r2/dist/index.d.mts +3 -0
  249. package/dist/providers/platform/r2/dist/types.d.mts +49 -0
  250. package/dist/providers/platform/r2/dist/types.d.mts.map +1 -0
  251. package/dist/reconcile.cjs +184 -0
  252. package/dist/reconcile.d.cts +26 -0
  253. package/dist/reconcile.d.cts.map +1 -0
  254. package/dist/reconcile.d.mts +26 -0
  255. package/dist/reconcile.d.mts.map +1 -0
  256. package/dist/reconcile.mjs +184 -0
  257. package/dist/reconcile.mjs.map +1 -0
  258. package/dist/reference-check.cjs +49 -0
  259. package/dist/reference-check.d.cts +10 -0
  260. package/dist/reference-check.d.cts.map +1 -0
  261. package/dist/reference-check.d.mts +10 -0
  262. package/dist/reference-check.d.mts.map +1 -0
  263. package/dist/reference-check.mjs +48 -0
  264. package/dist/reference-check.mjs.map +1 -0
  265. package/dist/remote-afs.cjs +681 -0
  266. package/dist/remote-afs.d.cts +236 -0
  267. package/dist/remote-afs.d.cts.map +1 -0
  268. package/dist/remote-afs.d.mts +236 -0
  269. package/dist/remote-afs.d.mts.map +1 -0
  270. package/dist/remote-afs.mjs +676 -0
  271. package/dist/remote-afs.mjs.map +1 -0
  272. package/dist/rename-guard.cjs +18 -0
  273. package/dist/rename-guard.mjs +18 -0
  274. package/dist/rename-guard.mjs.map +1 -0
  275. package/dist/resolve.cjs +260 -0
  276. package/dist/resolve.d.cts +113 -0
  277. package/dist/resolve.d.cts.map +1 -0
  278. package/dist/resolve.d.mts +113 -0
  279. package/dist/resolve.d.mts.map +1 -0
  280. package/dist/resolve.mjs +260 -0
  281. package/dist/resolve.mjs.map +1 -0
  282. package/dist/rsync-content.cjs +33 -0
  283. package/dist/rsync-content.mjs +33 -0
  284. package/dist/rsync-content.mjs.map +1 -0
  285. package/dist/rsync.cjs +400 -0
  286. package/dist/rsync.d.cts +157 -0
  287. package/dist/rsync.d.cts.map +1 -0
  288. package/dist/rsync.d.mts +157 -0
  289. package/dist/rsync.d.mts.map +1 -0
  290. package/dist/rsync.mjs +397 -0
  291. package/dist/rsync.mjs.map +1 -0
  292. package/dist/run-gc.cjs +57 -0
  293. package/dist/run-gc.d.cts +40 -0
  294. package/dist/run-gc.d.cts.map +1 -0
  295. package/dist/run-gc.d.mts +41 -0
  296. package/dist/run-gc.d.mts.map +1 -0
  297. package/dist/run-gc.mjs +57 -0
  298. package/dist/run-gc.mjs.map +1 -0
  299. package/dist/scope-id.cjs +70 -0
  300. package/dist/scope-id.d.cts +35 -0
  301. package/dist/scope-id.d.cts.map +1 -0
  302. package/dist/scope-id.d.mts +35 -0
  303. package/dist/scope-id.d.mts.map +1 -0
  304. package/dist/scope-id.mjs +68 -0
  305. package/dist/scope-id.mjs.map +1 -0
  306. package/dist/scope-migration-node.cjs +172 -0
  307. package/dist/scope-migration-node.d.cts +44 -0
  308. package/dist/scope-migration-node.d.cts.map +1 -0
  309. package/dist/scope-migration-node.d.mts +44 -0
  310. package/dist/scope-migration-node.d.mts.map +1 -0
  311. package/dist/scope-migration-node.mjs +171 -0
  312. package/dist/scope-migration-node.mjs.map +1 -0
  313. package/dist/scope-migration.cjs +155 -0
  314. package/dist/scope-migration.d.cts +65 -0
  315. package/dist/scope-migration.d.cts.map +1 -0
  316. package/dist/scope-migration.d.mts +65 -0
  317. package/dist/scope-migration.d.mts.map +1 -0
  318. package/dist/scope-migration.mjs +154 -0
  319. package/dist/scope-migration.mjs.map +1 -0
  320. package/dist/share-declaration.cjs +225 -0
  321. package/dist/share-declaration.d.cts +30 -0
  322. package/dist/share-declaration.d.cts.map +1 -0
  323. package/dist/share-declaration.d.mts +32 -0
  324. package/dist/share-declaration.d.mts.map +1 -0
  325. package/dist/share-declaration.mjs +221 -0
  326. package/dist/share-declaration.mjs.map +1 -0
  327. package/dist/share-hook.cjs +63 -0
  328. package/dist/share-hook.mjs +62 -0
  329. package/dist/share-hook.mjs.map +1 -0
  330. package/dist/share-resolve.cjs +176 -0
  331. package/dist/share-resolve.d.cts +36 -0
  332. package/dist/share-resolve.d.cts.map +1 -0
  333. package/dist/share-resolve.d.mts +36 -0
  334. package/dist/share-resolve.d.mts.map +1 -0
  335. package/dist/share-resolve.mjs +177 -0
  336. package/dist/share-resolve.mjs.map +1 -0
  337. package/dist/share-serve.cjs +145 -0
  338. package/dist/share-serve.d.cts +30 -0
  339. package/dist/share-serve.d.cts.map +1 -0
  340. package/dist/share-serve.d.mts +30 -0
  341. package/dist/share-serve.d.mts.map +1 -0
  342. package/dist/share-serve.mjs +144 -0
  343. package/dist/share-serve.mjs.map +1 -0
  344. package/dist/share-store.cjs +25 -0
  345. package/dist/share-store.d.cts +65 -0
  346. package/dist/share-store.d.cts.map +1 -0
  347. package/dist/share-store.d.mts +65 -0
  348. package/dist/share-store.d.mts.map +1 -0
  349. package/dist/share-store.mjs +25 -0
  350. package/dist/share-store.mjs.map +1 -0
  351. package/dist/share-virtual-path.cjs +102 -0
  352. package/dist/share-virtual-path.mjs +101 -0
  353. package/dist/share-virtual-path.mjs.map +1 -0
  354. package/dist/space-resolver.cjs +54 -0
  355. package/dist/space-resolver.d.cts +34 -0
  356. package/dist/space-resolver.d.cts.map +1 -0
  357. package/dist/space-resolver.d.mts +34 -0
  358. package/dist/space-resolver.d.mts.map +1 -0
  359. package/dist/space-resolver.mjs +55 -0
  360. package/dist/space-resolver.mjs.map +1 -0
  361. package/dist/sqlite-gc-queue.cjs +51 -0
  362. package/dist/sqlite-gc-queue.d.cts +22 -0
  363. package/dist/sqlite-gc-queue.d.cts.map +1 -0
  364. package/dist/sqlite-gc-queue.d.mts +22 -0
  365. package/dist/sqlite-gc-queue.d.mts.map +1 -0
  366. package/dist/sqlite-gc-queue.mjs +52 -0
  367. package/dist/sqlite-gc-queue.mjs.map +1 -0
  368. package/dist/sqlite-resolve-store.cjs +163 -0
  369. package/dist/sqlite-resolve-store.d.cts +50 -0
  370. package/dist/sqlite-resolve-store.d.cts.map +1 -0
  371. package/dist/sqlite-resolve-store.d.mts +50 -0
  372. package/dist/sqlite-resolve-store.d.mts.map +1 -0
  373. package/dist/sqlite-resolve-store.mjs +164 -0
  374. package/dist/sqlite-resolve-store.mjs.map +1 -0
  375. package/dist/sqlite-share-store.cjs +157 -0
  376. package/dist/sqlite-share-store.d.cts +31 -0
  377. package/dist/sqlite-share-store.d.cts.map +1 -0
  378. package/dist/sqlite-share-store.d.mts +31 -0
  379. package/dist/sqlite-share-store.d.mts.map +1 -0
  380. package/dist/sqlite-share-store.mjs +157 -0
  381. package/dist/sqlite-share-store.mjs.map +1 -0
  382. package/dist/sqlite-tree-index.cjs +901 -0
  383. package/dist/sqlite-tree-index.d.cts +107 -0
  384. package/dist/sqlite-tree-index.d.cts.map +1 -0
  385. package/dist/sqlite-tree-index.d.mts +107 -0
  386. package/dist/sqlite-tree-index.d.mts.map +1 -0
  387. package/dist/sqlite-tree-index.mjs +902 -0
  388. package/dist/sqlite-tree-index.mjs.map +1 -0
  389. package/dist/sync-engine.cjs +1324 -0
  390. package/dist/sync-engine.d.cts +473 -0
  391. package/dist/sync-engine.d.cts.map +1 -0
  392. package/dist/sync-engine.d.mts +473 -0
  393. package/dist/sync-engine.d.mts.map +1 -0
  394. package/dist/sync-engine.mjs +1315 -0
  395. package/dist/sync-engine.mjs.map +1 -0
  396. package/dist/sync-state.cjs +303 -0
  397. package/dist/sync-state.d.cts +224 -0
  398. package/dist/sync-state.d.cts.map +1 -0
  399. package/dist/sync-state.d.mts +224 -0
  400. package/dist/sync-state.d.mts.map +1 -0
  401. package/dist/sync-state.mjs +297 -0
  402. package/dist/sync-state.mjs.map +1 -0
  403. package/dist/timestamp.cjs +92 -0
  404. package/dist/timestamp.mjs +91 -0
  405. package/dist/timestamp.mjs.map +1 -0
  406. package/dist/transports/http.cjs +54 -0
  407. package/dist/transports/http.d.cts +26 -0
  408. package/dist/transports/http.d.cts.map +1 -0
  409. package/dist/transports/http.d.mts +26 -0
  410. package/dist/transports/http.d.mts.map +1 -0
  411. package/dist/transports/http.mjs +54 -0
  412. package/dist/transports/http.mjs.map +1 -0
  413. package/dist/transports/static.cjs +55 -0
  414. package/dist/transports/static.d.cts +28 -0
  415. package/dist/transports/static.d.cts.map +1 -0
  416. package/dist/transports/static.d.mts +28 -0
  417. package/dist/transports/static.d.mts.map +1 -0
  418. package/dist/transports/static.mjs +55 -0
  419. package/dist/transports/static.mjs.map +1 -0
  420. package/dist/transports/types.cjs +13 -0
  421. package/dist/transports/types.d.cts +72 -0
  422. package/dist/transports/types.d.cts.map +1 -0
  423. package/dist/transports/types.d.mts +72 -0
  424. package/dist/transports/types.d.mts.map +1 -0
  425. package/dist/transports/types.mjs +13 -0
  426. package/dist/transports/types.mjs.map +1 -0
  427. package/dist/transports/ws.cjs +207 -0
  428. package/dist/transports/ws.d.cts +47 -0
  429. package/dist/transports/ws.d.cts.map +1 -0
  430. package/dist/transports/ws.d.mts +47 -0
  431. package/dist/transports/ws.d.mts.map +1 -0
  432. package/dist/transports/ws.mjs +206 -0
  433. package/dist/transports/ws.mjs.map +1 -0
  434. package/dist/tree-index.cjs +333 -0
  435. package/dist/tree-index.d.cts +524 -0
  436. package/dist/tree-index.d.cts.map +1 -0
  437. package/dist/tree-index.d.mts +524 -0
  438. package/dist/tree-index.d.mts.map +1 -0
  439. package/dist/tree-index.mjs +322 -0
  440. package/dist/tree-index.mjs.map +1 -0
  441. package/dist/tree-query.cjs +655 -0
  442. package/dist/tree-query.d.cts +70 -0
  443. package/dist/tree-query.d.cts.map +1 -0
  444. package/dist/tree-query.d.mts +70 -0
  445. package/dist/tree-query.d.mts.map +1 -0
  446. package/dist/tree-query.mjs +648 -0
  447. package/dist/tree-query.mjs.map +1 -0
  448. package/dist/upload-actions.cjs +97 -0
  449. package/dist/upload-actions.d.cts +19 -0
  450. package/dist/upload-actions.d.cts.map +1 -0
  451. package/dist/upload-actions.d.mts +21 -0
  452. package/dist/upload-actions.d.mts.map +1 -0
  453. package/dist/upload-actions.mjs +90 -0
  454. package/dist/upload-actions.mjs.map +1 -0
  455. package/dist/upload-session-store.cjs +185 -0
  456. package/dist/upload-session-store.d.cts +99 -0
  457. package/dist/upload-session-store.d.cts.map +1 -0
  458. package/dist/upload-session-store.d.mts +99 -0
  459. package/dist/upload-session-store.d.mts.map +1 -0
  460. package/dist/upload-session-store.mjs +184 -0
  461. package/dist/upload-session-store.mjs.map +1 -0
  462. package/dist/url-normalize.cjs +61 -0
  463. package/dist/url-normalize.d.cts +33 -0
  464. package/dist/url-normalize.d.cts.map +1 -0
  465. package/dist/url-normalize.d.mts +33 -0
  466. package/dist/url-normalize.d.mts.map +1 -0
  467. package/dist/url-normalize.mjs +61 -0
  468. package/dist/url-normalize.mjs.map +1 -0
  469. package/dist/versioned-content-backends.cjs +155 -0
  470. package/dist/versioned-content-backends.d.cts +49 -0
  471. package/dist/versioned-content-backends.d.cts.map +1 -0
  472. package/dist/versioned-content-backends.d.mts +49 -0
  473. package/dist/versioned-content-backends.d.mts.map +1 -0
  474. package/dist/versioned-content-backends.mjs +154 -0
  475. package/dist/versioned-content-backends.mjs.map +1 -0
  476. package/dist/versioned-content-index.cjs +102 -0
  477. package/dist/versioned-content-index.d.cts +46 -0
  478. package/dist/versioned-content-index.d.cts.map +1 -0
  479. package/dist/versioned-content-index.d.mts +46 -0
  480. package/dist/versioned-content-index.d.mts.map +1 -0
  481. package/dist/versioned-content-index.mjs +103 -0
  482. package/dist/versioned-content-index.mjs.map +1 -0
  483. package/dist/versioned-content-store.cjs +121 -0
  484. package/dist/versioned-content-store.d.cts +90 -0
  485. package/dist/versioned-content-store.d.cts.map +1 -0
  486. package/dist/versioned-content-store.d.mts +90 -0
  487. package/dist/versioned-content-store.d.mts.map +1 -0
  488. package/dist/versioned-content-store.mjs +122 -0
  489. package/dist/versioned-content-store.mjs.map +1 -0
  490. package/dist/versioned-scope.cjs +39 -0
  491. package/dist/versioned-scope.d.cts +57 -0
  492. package/dist/versioned-scope.d.cts.map +1 -0
  493. package/dist/versioned-scope.d.mts +57 -0
  494. package/dist/versioned-scope.d.mts.map +1 -0
  495. package/dist/versioned-scope.mjs +37 -0
  496. package/dist/versioned-scope.mjs.map +1 -0
  497. package/migrations/0001_tree_entries.sql +17 -0
  498. package/migrations/0002_resolve_entries.sql +7 -0
  499. package/migrations/0003_entries_v2.sql +38 -0
  500. package/migrations/0004_gc_queue.sql +5 -0
  501. package/migrations/0006_resolve_enhance.sql +14 -0
  502. package/migrations/0007_resolve_created_at.sql +10 -0
  503. package/migrations/0008_changelog.sql +34 -0
  504. package/migrations/0009_device_sync_state.sql +29 -0
  505. package/migrations/0010_scope_meta.sql +33 -0
  506. package/migrations/0011_shares.sql +25 -0
  507. package/migrations/0012_scope_meta_file_count.sql +41 -0
  508. package/migrations/0013_scope_meta_total_bytes.sql +47 -0
  509. package/migrations/0014_rename_tables.sql +62 -0
  510. package/package.json +102 -0
@@ -0,0 +1,203 @@
1
+ import { TreeQueryResult, TreeQuerySpec } from "./tree-query.cjs";
2
+ import { DirtyPathRow, ListDirtyPathOptions } from "./dirty-path-queue.cjs";
3
+ import { BatchDeleteEntry, BatchDeleteEntryResult, BatchIndexContext, BatchPutEntry, BatchPutEntryResult, ChangelogEntry, PutOpts, TreeEntry, TreeIndex, TreeIndexListEntriesResult, TreeIndexListOptions, TreeIndexListResult } from "./tree-index.cjs";
4
+ import { InlineContentOptions } from "./inline-content.cjs";
5
+ import { prefixRange } from "./prefix-range.cjs";
6
+
7
+ //#region src/d1-tree-index.d.ts
8
+ /** Extract parent directory path from a file/dir path */
9
+ declare function parentOf(path: string): string;
10
+ /** Extract basename from a file/dir path */
11
+ declare function nameOf(path: string): string;
12
+ /** Collect all ancestor directory paths from a file path (deepest first) */
13
+ declare function ancestorDirs(path: string): string[];
14
+ /** Maximum file entries per scope (files only, excludes dirs) */
15
+ declare const MAX_ENTRIES_PER_SCOPE = 1000000;
16
+ declare class D1TreeIndex implements TreeIndex {
17
+ private db;
18
+ private scope;
19
+ private readonly conn;
20
+ private readonly maxEntriesPerScope;
21
+ /** upload-limits Phase 5 byte quota (0 = disabled, the opt-in default). */
22
+ private readonly maxBytesPerScope;
23
+ private readonly inline;
24
+ constructor(db: D1Database, scope: string, opts?: {
25
+ useReplica?: boolean;
26
+ maxEntriesPerScope?: number;
27
+ maxBytesPerScope?: number;
28
+ } & InlineContentOptions);
29
+ /**
30
+ * Create entries table + indexes (v2 schema) AND the Phase 2 changelog table.
31
+ * Production: schema created by `wrangler d1 migrations apply`.
32
+ * Tests: call this in beforeEach with in-memory DB.
33
+ *
34
+ * Changelog DDL is sourced from `changelog-schema.ts` to keep the four
35
+ * runtimes (D1, desktop, Swift, Kotlin) byte-equivalent — see
36
+ * `scripts/check-changelog-ddl-parity.ts`. Schema-only here; producers come
37
+ * online in Task 2.4.
38
+ */
39
+ ensureTable(): Promise<void>;
40
+ get(path: string, opts?: {
41
+ includeContent?: boolean;
42
+ }): Promise<TreeEntry | null>;
43
+ getDirTimes(dirPath: string): Promise<{
44
+ ctime: number;
45
+ mtime: number;
46
+ } | null>;
47
+ /** Inline content this entry would store — parity with the loop reference impl. */
48
+ inlineForEntry(entry: TreeEntry): Promise<string | null>;
49
+ /** Point seek on the `(scope, dedup_scope, dedup_key)` partial UNIQUE index. */
50
+ findByDedupKey(dedupScope: string, dedupKey: string): Promise<({
51
+ path: string;
52
+ } & TreeEntry) | null>;
53
+ /** Index-only backfill: set the dedup columns without touching content/changelog. */
54
+ setDedupKey(path: string, dedupScope: string, dedupKey: string, opts: PutOpts): Promise<void>;
55
+ /**
56
+ * Batch metadata read — one chunked `IN (…)` query per ≤90 paths (D1's
57
+ * 100-bind limit minus the scope bind, design §4.3). Result map carries an
58
+ * entry for EVERY requested path (`null` when absent), keyed verbatim.
59
+ */
60
+ getMany(paths: string[]): Promise<Map<string, TreeEntry | null>>;
61
+ /**
62
+ * Merged batch put (afs-rpc-batch §4.3 / §6.3) — the CF subrequest-budget
63
+ * fast path: ONE preread (caller-supplied or chunked IN), ONE capacity
64
+ * read, ONE atomic `db.batch` carrying every surviving entry's
65
+ * changelog+upsert (+1 watermark bump per write), then ONE watermark
66
+ * readback per distinct collection root to attribute per-entry seqs
67
+ * (`liveSeq[i] = final − N + 1 + i`, skip/conflict entries take no seq).
68
+ *
69
+ * Statement order inside the batch mirrors single `put`: dirs first, then
70
+ * per entry changelog INSERT (correlated old_cid subquery reads the
71
+ * pre-upsert cid) BEFORE its upsert — D1 preserves batch statement order.
72
+ */
73
+ batchPutEntries(entries: BatchPutEntry[], ctx?: BatchIndexContext): Promise<BatchPutEntryResult[]>;
74
+ /**
75
+ * Merged batch delete — same shape as {@link batchPutEntries} without the
76
+ * R2 leg: ONE preread, ONE atomic `db.batch` (per entry: changelog INSERT
77
+ * SELECT + file_count decrement + DELETE, +1 watermark bump), then empty-
78
+ * parent cleanup over the DISTINCT ancestor chain. FILE entries only.
79
+ */
80
+ batchDeleteEntries(entries: BatchDeleteEntry[], ctx?: BatchIndexContext): Promise<BatchDeleteEntryResult[]>;
81
+ put(path: string, entry: TreeEntry, opts: PutOpts): Promise<{
82
+ oldCid?: string;
83
+ }>;
84
+ /**
85
+ * Build the file-row UPSERT. Inline-enabled indexes always write the
86
+ * content column (inline copy or NULL — an overwrite without inline content
87
+ * MUST clear any prior copy so the column never goes stale relative to the
88
+ * new cid); default-off indexes keep the byte-identical legacy statement
89
+ * (and never touch a not-yet-migrated database's missing column).
90
+ */
91
+ private buildFileUpsert;
92
+ delete(path: string, opts: PutOpts): Promise<void>;
93
+ /** Walk up parent chain, removing directory entries that have no remaining children */
94
+ private cleanEmptyParents;
95
+ private static readonly VALID_ORDER_BY;
96
+ /** The only nullable sortable column — NULLs sort last (see tree-index.ts). */
97
+ private static readonly NULLABLE_ORDER_COLUMNS;
98
+ list(prefix: string, options?: TreeIndexListOptions): Promise<TreeIndexListResult>;
99
+ listEntries(prefix: string, options?: TreeIndexListOptions): Promise<TreeIndexListEntriesResult>;
100
+ hasChildren(prefix: string): Promise<boolean>;
101
+ getAndHasChildren(filePath: string, dirPrefix: string): Promise<[TreeEntry | null, boolean]>;
102
+ count(prefix: string): Promise<number>;
103
+ /**
104
+ * O(1) read of the trigger-maintained file count for this scope, used by the
105
+ * `put()` capacity guard. A missing `scope_meta` row means "no files counted
106
+ * yet" → 0, which is also the correct answer for a brand-new scope and the
107
+ * safe (permissive) fallback for a scope not yet backfilled. This replaces
108
+ * the per-write full-scope `count("")` scan — the source of the O(N²)
109
+ * `rows_read` blow-up that exhausted the D1 free tier during bulk sync.
110
+ */
111
+ private getScopeFileCount;
112
+ /**
113
+ * O(1) read of the trigger-maintained byte total for this scope, used by the
114
+ * Phase 5 byte-quota guard (only when `maxBytesPerScope > 0`). Same O(1)
115
+ * contract as {@link getScopeFileCount} — never a `SELECT SUM(size)` scan.
116
+ * Missing row → 0 (new/un-backfilled scope; permissive).
117
+ */
118
+ private getScopeTotalBytes;
119
+ getCompactedBelowSeq(): Promise<number>;
120
+ deleteByPrefix(prefix: string, opts: PutOpts): Promise<number>;
121
+ listChildren(parent: string, options?: TreeIndexListOptions): Promise<TreeIndexListEntriesResult>;
122
+ countChildren(parent: string): Promise<number>;
123
+ /**
124
+ * Collection query (afs-collection-query Phase 2) — same shared compiler +
125
+ * result builder as SQLiteTreeIndex (tree-query.ts), executed over the
126
+ * replica-aware `this.conn`: query is read-class and follows the SAME
127
+ * replica routing policy as list (AFS_D1_READ_REPLICA gate upstream picks
128
+ * the session; no separate consistency standard — design T2.1).
129
+ */
130
+ query(parent: string, spec: TreeQuerySpec): Promise<TreeQueryResult>;
131
+ /**
132
+ * Page-bounded grouped child counts: ONE chunked `parent IN (…)` aggregate
133
+ * per ≤90 parents (D1's 100-bind limit minus the scope bind — same chunking
134
+ * as `getMany`), index-only seeks on `idx_entries_children(scope, parent,
135
+ * name)`. rows_read is bounded by the listed page's direct grandchildren.
136
+ *
137
+ * Predecessor (`countChildrenGrouped(prefix)`) used a `parent >= lo AND
138
+ * parent < hi` range — a scan/group over EVERY descendant under the listed
139
+ * prefix on EVERY list. Once the aside user space grew to ~1.8k dirs, each
140
+ * list of any ancestor dir read ~3.8k rows; at list frequency that burned
141
+ * ~100M D1 rows_read/day (42× the free tier).
142
+ */
143
+ countChildrenMany(parents: string[]): Promise<Map<string, number>>;
144
+ aggregate(prefix: string): Promise<{
145
+ fileCount: number;
146
+ totalSize: number;
147
+ }>;
148
+ putBatch(entries: Array<{
149
+ path: string;
150
+ entry: TreeEntry;
151
+ }>, opts: PutOpts): Promise<void>;
152
+ /**
153
+ * Read the per-prefix watermark version (Live Update Resilience §11.4).
154
+ * Reduces `prefix` to its first path segment (collection root) and returns
155
+ * that row's `version`, or 0 when no row exists. Replica-aware via `this.conn`
156
+ * — but reconcile passes a primary-pinned index for read-your-watermark
157
+ * (DEC-5; see CloudflareDIDSpace.getInstanceSpace consistency option).
158
+ */
159
+ getPrefixWatermark(prefix: string): Promise<number | null>;
160
+ listModifiedSince(prefix: string, since: number, options?: TreeIndexListOptions): Promise<TreeIndexListEntriesResult>;
161
+ getMaxSeq(): Promise<number>;
162
+ /**
163
+ * Read-auth reference check (design §4.1) — three-way, scoped, optionally
164
+ * prefix-local. See {@link TreeIndex.isReferenced}.
165
+ */
166
+ isReferenced(cid: string, pathPrefix?: string): Promise<boolean>;
167
+ /**
168
+ * Batch read-auth (design §7.2 / §14) — three-way-equivalent to per-cid
169
+ * {@link isReferenced}, sharded under D1's 100-param cap (see
170
+ * {@link D1_MANY_SHARD_SIZE}). Returns the referenced subset of `cids`.
171
+ */
172
+ isReferencedMany(cids: string[], pathPrefix?: string): Promise<Set<string>>;
173
+ getChangelogSince(sinceSeq: number, limit: number): Promise<{
174
+ entries: ChangelogEntry[];
175
+ hasMore: boolean;
176
+ cursor: number;
177
+ }>;
178
+ /**
179
+ * Ready dirty rows under `prefix` for this scope. `next_attempt_at <= now`
180
+ * skips poison rows still in backoff; the `(scope, next_attempt_at,
181
+ * updated_at)` index serves the ordered seek. Reads go through `this.conn`, so
182
+ * a follower constructed primary-bound (`useReplica:false`, Phase 3) gets
183
+ * read-your-write; a replica-routed instance would return replica state — the
184
+ * runtime is responsible for pinning primary for the dirty follower.
185
+ */
186
+ listDirtyPaths(options: ListDirtyPathOptions): Promise<DirtyPathRow[]>;
187
+ /**
188
+ * Guarded ack (design §8): delete the dirty row ONLY if its `latest_seq` is
189
+ * still the one we processed. A concurrent write bumps latest_seq (trigger),
190
+ * so a stale worker's DELETE affects 0 rows → returns false, and the newer
191
+ * dirty row survives for the next tick. Writes go to primary (`this.db`).
192
+ */
193
+ ackDirtyPath(path: string, latestSeq: number): Promise<boolean>;
194
+ /**
195
+ * Guarded failure record (design §8): bump attempts, stamp last_error +
196
+ * next_attempt_at, SAME `latest_seq` guard so a fresh write's reset (trigger
197
+ * sets attempts=0) is never clobbered by a late error from the prior attempt.
198
+ */
199
+ markDirtyPathError(path: string, latestSeq: number, error: string, nextAttemptAt: number): Promise<boolean>;
200
+ }
201
+ //#endregion
202
+ export { D1TreeIndex, MAX_ENTRIES_PER_SCOPE, ancestorDirs, nameOf, parentOf };
203
+ //# sourceMappingURL=d1-tree-index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d1-tree-index.d.cts","names":[],"sources":["../src/d1-tree-index.ts"],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ import { TreeQueryResult, TreeQuerySpec } from "./tree-query.mjs";
2
+ import { DirtyPathRow, ListDirtyPathOptions } from "./dirty-path-queue.mjs";
3
+ import { BatchDeleteEntry, BatchDeleteEntryResult, BatchIndexContext, BatchPutEntry, BatchPutEntryResult, ChangelogEntry, PutOpts, TreeEntry, TreeIndex, TreeIndexListEntriesResult, TreeIndexListOptions, TreeIndexListResult } from "./tree-index.mjs";
4
+ import { InlineContentOptions } from "./inline-content.mjs";
5
+ import { prefixRange } from "./prefix-range.mjs";
6
+
7
+ //#region src/d1-tree-index.d.ts
8
+ /** Extract parent directory path from a file/dir path */
9
+ declare function parentOf(path: string): string;
10
+ /** Extract basename from a file/dir path */
11
+ declare function nameOf(path: string): string;
12
+ /** Collect all ancestor directory paths from a file path (deepest first) */
13
+ declare function ancestorDirs(path: string): string[];
14
+ /** Maximum file entries per scope (files only, excludes dirs) */
15
+ declare const MAX_ENTRIES_PER_SCOPE = 1000000;
16
+ declare class D1TreeIndex implements TreeIndex {
17
+ private db;
18
+ private scope;
19
+ private readonly conn;
20
+ private readonly maxEntriesPerScope;
21
+ /** upload-limits Phase 5 byte quota (0 = disabled, the opt-in default). */
22
+ private readonly maxBytesPerScope;
23
+ private readonly inline;
24
+ constructor(db: D1Database, scope: string, opts?: {
25
+ useReplica?: boolean;
26
+ maxEntriesPerScope?: number;
27
+ maxBytesPerScope?: number;
28
+ } & InlineContentOptions);
29
+ /**
30
+ * Create entries table + indexes (v2 schema) AND the Phase 2 changelog table.
31
+ * Production: schema created by `wrangler d1 migrations apply`.
32
+ * Tests: call this in beforeEach with in-memory DB.
33
+ *
34
+ * Changelog DDL is sourced from `changelog-schema.ts` to keep the four
35
+ * runtimes (D1, desktop, Swift, Kotlin) byte-equivalent — see
36
+ * `scripts/check-changelog-ddl-parity.ts`. Schema-only here; producers come
37
+ * online in Task 2.4.
38
+ */
39
+ ensureTable(): Promise<void>;
40
+ get(path: string, opts?: {
41
+ includeContent?: boolean;
42
+ }): Promise<TreeEntry | null>;
43
+ getDirTimes(dirPath: string): Promise<{
44
+ ctime: number;
45
+ mtime: number;
46
+ } | null>;
47
+ /** Inline content this entry would store — parity with the loop reference impl. */
48
+ inlineForEntry(entry: TreeEntry): Promise<string | null>;
49
+ /** Point seek on the `(scope, dedup_scope, dedup_key)` partial UNIQUE index. */
50
+ findByDedupKey(dedupScope: string, dedupKey: string): Promise<({
51
+ path: string;
52
+ } & TreeEntry) | null>;
53
+ /** Index-only backfill: set the dedup columns without touching content/changelog. */
54
+ setDedupKey(path: string, dedupScope: string, dedupKey: string, opts: PutOpts): Promise<void>;
55
+ /**
56
+ * Batch metadata read — one chunked `IN (…)` query per ≤90 paths (D1's
57
+ * 100-bind limit minus the scope bind, design §4.3). Result map carries an
58
+ * entry for EVERY requested path (`null` when absent), keyed verbatim.
59
+ */
60
+ getMany(paths: string[]): Promise<Map<string, TreeEntry | null>>;
61
+ /**
62
+ * Merged batch put (afs-rpc-batch §4.3 / §6.3) — the CF subrequest-budget
63
+ * fast path: ONE preread (caller-supplied or chunked IN), ONE capacity
64
+ * read, ONE atomic `db.batch` carrying every surviving entry's
65
+ * changelog+upsert (+1 watermark bump per write), then ONE watermark
66
+ * readback per distinct collection root to attribute per-entry seqs
67
+ * (`liveSeq[i] = final − N + 1 + i`, skip/conflict entries take no seq).
68
+ *
69
+ * Statement order inside the batch mirrors single `put`: dirs first, then
70
+ * per entry changelog INSERT (correlated old_cid subquery reads the
71
+ * pre-upsert cid) BEFORE its upsert — D1 preserves batch statement order.
72
+ */
73
+ batchPutEntries(entries: BatchPutEntry[], ctx?: BatchIndexContext): Promise<BatchPutEntryResult[]>;
74
+ /**
75
+ * Merged batch delete — same shape as {@link batchPutEntries} without the
76
+ * R2 leg: ONE preread, ONE atomic `db.batch` (per entry: changelog INSERT
77
+ * SELECT + file_count decrement + DELETE, +1 watermark bump), then empty-
78
+ * parent cleanup over the DISTINCT ancestor chain. FILE entries only.
79
+ */
80
+ batchDeleteEntries(entries: BatchDeleteEntry[], ctx?: BatchIndexContext): Promise<BatchDeleteEntryResult[]>;
81
+ put(path: string, entry: TreeEntry, opts: PutOpts): Promise<{
82
+ oldCid?: string;
83
+ }>;
84
+ /**
85
+ * Build the file-row UPSERT. Inline-enabled indexes always write the
86
+ * content column (inline copy or NULL — an overwrite without inline content
87
+ * MUST clear any prior copy so the column never goes stale relative to the
88
+ * new cid); default-off indexes keep the byte-identical legacy statement
89
+ * (and never touch a not-yet-migrated database's missing column).
90
+ */
91
+ private buildFileUpsert;
92
+ delete(path: string, opts: PutOpts): Promise<void>;
93
+ /** Walk up parent chain, removing directory entries that have no remaining children */
94
+ private cleanEmptyParents;
95
+ private static readonly VALID_ORDER_BY;
96
+ /** The only nullable sortable column — NULLs sort last (see tree-index.ts). */
97
+ private static readonly NULLABLE_ORDER_COLUMNS;
98
+ list(prefix: string, options?: TreeIndexListOptions): Promise<TreeIndexListResult>;
99
+ listEntries(prefix: string, options?: TreeIndexListOptions): Promise<TreeIndexListEntriesResult>;
100
+ hasChildren(prefix: string): Promise<boolean>;
101
+ getAndHasChildren(filePath: string, dirPrefix: string): Promise<[TreeEntry | null, boolean]>;
102
+ count(prefix: string): Promise<number>;
103
+ /**
104
+ * O(1) read of the trigger-maintained file count for this scope, used by the
105
+ * `put()` capacity guard. A missing `scope_meta` row means "no files counted
106
+ * yet" → 0, which is also the correct answer for a brand-new scope and the
107
+ * safe (permissive) fallback for a scope not yet backfilled. This replaces
108
+ * the per-write full-scope `count("")` scan — the source of the O(N²)
109
+ * `rows_read` blow-up that exhausted the D1 free tier during bulk sync.
110
+ */
111
+ private getScopeFileCount;
112
+ /**
113
+ * O(1) read of the trigger-maintained byte total for this scope, used by the
114
+ * Phase 5 byte-quota guard (only when `maxBytesPerScope > 0`). Same O(1)
115
+ * contract as {@link getScopeFileCount} — never a `SELECT SUM(size)` scan.
116
+ * Missing row → 0 (new/un-backfilled scope; permissive).
117
+ */
118
+ private getScopeTotalBytes;
119
+ getCompactedBelowSeq(): Promise<number>;
120
+ deleteByPrefix(prefix: string, opts: PutOpts): Promise<number>;
121
+ listChildren(parent: string, options?: TreeIndexListOptions): Promise<TreeIndexListEntriesResult>;
122
+ countChildren(parent: string): Promise<number>;
123
+ /**
124
+ * Collection query (afs-collection-query Phase 2) — same shared compiler +
125
+ * result builder as SQLiteTreeIndex (tree-query.ts), executed over the
126
+ * replica-aware `this.conn`: query is read-class and follows the SAME
127
+ * replica routing policy as list (AFS_D1_READ_REPLICA gate upstream picks
128
+ * the session; no separate consistency standard — design T2.1).
129
+ */
130
+ query(parent: string, spec: TreeQuerySpec): Promise<TreeQueryResult>;
131
+ /**
132
+ * Page-bounded grouped child counts: ONE chunked `parent IN (…)` aggregate
133
+ * per ≤90 parents (D1's 100-bind limit minus the scope bind — same chunking
134
+ * as `getMany`), index-only seeks on `idx_entries_children(scope, parent,
135
+ * name)`. rows_read is bounded by the listed page's direct grandchildren.
136
+ *
137
+ * Predecessor (`countChildrenGrouped(prefix)`) used a `parent >= lo AND
138
+ * parent < hi` range — a scan/group over EVERY descendant under the listed
139
+ * prefix on EVERY list. Once the aside user space grew to ~1.8k dirs, each
140
+ * list of any ancestor dir read ~3.8k rows; at list frequency that burned
141
+ * ~100M D1 rows_read/day (42× the free tier).
142
+ */
143
+ countChildrenMany(parents: string[]): Promise<Map<string, number>>;
144
+ aggregate(prefix: string): Promise<{
145
+ fileCount: number;
146
+ totalSize: number;
147
+ }>;
148
+ putBatch(entries: Array<{
149
+ path: string;
150
+ entry: TreeEntry;
151
+ }>, opts: PutOpts): Promise<void>;
152
+ /**
153
+ * Read the per-prefix watermark version (Live Update Resilience §11.4).
154
+ * Reduces `prefix` to its first path segment (collection root) and returns
155
+ * that row's `version`, or 0 when no row exists. Replica-aware via `this.conn`
156
+ * — but reconcile passes a primary-pinned index for read-your-watermark
157
+ * (DEC-5; see CloudflareDIDSpace.getInstanceSpace consistency option).
158
+ */
159
+ getPrefixWatermark(prefix: string): Promise<number | null>;
160
+ listModifiedSince(prefix: string, since: number, options?: TreeIndexListOptions): Promise<TreeIndexListEntriesResult>;
161
+ getMaxSeq(): Promise<number>;
162
+ /**
163
+ * Read-auth reference check (design §4.1) — three-way, scoped, optionally
164
+ * prefix-local. See {@link TreeIndex.isReferenced}.
165
+ */
166
+ isReferenced(cid: string, pathPrefix?: string): Promise<boolean>;
167
+ /**
168
+ * Batch read-auth (design §7.2 / §14) — three-way-equivalent to per-cid
169
+ * {@link isReferenced}, sharded under D1's 100-param cap (see
170
+ * {@link D1_MANY_SHARD_SIZE}). Returns the referenced subset of `cids`.
171
+ */
172
+ isReferencedMany(cids: string[], pathPrefix?: string): Promise<Set<string>>;
173
+ getChangelogSince(sinceSeq: number, limit: number): Promise<{
174
+ entries: ChangelogEntry[];
175
+ hasMore: boolean;
176
+ cursor: number;
177
+ }>;
178
+ /**
179
+ * Ready dirty rows under `prefix` for this scope. `next_attempt_at <= now`
180
+ * skips poison rows still in backoff; the `(scope, next_attempt_at,
181
+ * updated_at)` index serves the ordered seek. Reads go through `this.conn`, so
182
+ * a follower constructed primary-bound (`useReplica:false`, Phase 3) gets
183
+ * read-your-write; a replica-routed instance would return replica state — the
184
+ * runtime is responsible for pinning primary for the dirty follower.
185
+ */
186
+ listDirtyPaths(options: ListDirtyPathOptions): Promise<DirtyPathRow[]>;
187
+ /**
188
+ * Guarded ack (design §8): delete the dirty row ONLY if its `latest_seq` is
189
+ * still the one we processed. A concurrent write bumps latest_seq (trigger),
190
+ * so a stale worker's DELETE affects 0 rows → returns false, and the newer
191
+ * dirty row survives for the next tick. Writes go to primary (`this.db`).
192
+ */
193
+ ackDirtyPath(path: string, latestSeq: number): Promise<boolean>;
194
+ /**
195
+ * Guarded failure record (design §8): bump attempts, stamp last_error +
196
+ * next_attempt_at, SAME `latest_seq` guard so a fresh write's reset (trigger
197
+ * sets attempts=0) is never clobbered by a late error from the prior attempt.
198
+ */
199
+ markDirtyPathError(path: string, latestSeq: number, error: string, nextAttemptAt: number): Promise<boolean>;
200
+ }
201
+ //#endregion
202
+ export { D1TreeIndex, MAX_ENTRIES_PER_SCOPE, ancestorDirs, nameOf, parentOf };
203
+ //# sourceMappingURL=d1-tree-index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d1-tree-index.d.mts","names":[],"sources":["../src/d1-tree-index.ts"],"mappings":"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"}