@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,395 @@
1
+ //#region src/changelog-schema.d.ts
2
+ /**
3
+ * Changelog table schema — single source of truth for the four runtimes:
4
+ * - D1 (Cloudflare Worker) : migrations/0008_changelog.sql + d1-tree-index.ts
5
+ * - desktop SQLite (libsql) : metadata-db.ts ensureChangelogTable()
6
+ * - Swift SQLite (mobile) : SQLiteTreeIndex.swift migrate()
7
+ * - Kotlin SQLite (mobile) : SQLiteTreeIndex.kt migrate()
8
+ *
9
+ * The CI parity script (`scripts/check-changelog-ddl-parity.ts`) reads the
10
+ * DDL strings out of all four locations, normalises whitespace, lower-cases
11
+ * keywords/identifiers, and asserts byte equality.
12
+ *
13
+ * **Do not edit any of those four sources without updating the others.**
14
+ *
15
+ * Phase 2 Task 2.1 introduces the schema only — `put`/`delete` start writing
16
+ * changelog rows in Task 2.4. Until then the table sits empty.
17
+ */
18
+ /** CREATE TABLE statement. Idempotent (`IF NOT EXISTS`). */
19
+ declare const CHANGELOG_TABLE_SQL = "CREATE TABLE IF NOT EXISTS ds_changelog (\n seq INTEGER PRIMARY KEY AUTOINCREMENT,\n scope TEXT NOT NULL,\n path TEXT NOT NULL,\n op TEXT NOT NULL,\n cid TEXT,\n old_cid TEXT,\n size INTEGER,\n mtime INTEGER NOT NULL,\n device_id TEXT NOT NULL,\n CHECK (op IN ('put', 'delete'))\n)";
20
+ /**
21
+ * CREATE INDEX statements. Order matches migration file.
22
+ *
23
+ * The cid / old_cid indexes are **scope-composite** (`(scope, cid)` /
24
+ * `(scope, old_cid)`), NOT bare `(cid)` / `(old_cid)`: the only readers are
25
+ * `isReferenced` / `isReferencedMany`, which ALWAYS filter `scope = ?` (read-
26
+ * auth, design §7.2). A bare-cid index forces the `cid IN (…)` seek to fan out
27
+ * across every scope + the whole append-only history (Model B global object
28
+ * pool) and residual-filter scope afterwards — the 7180× rows_read blow-up on
29
+ * staging D1. Leading `scope` collapses the seek to one user's rows. No live
30
+ * SCOPE-BLIND reader exists (GC liveness uses entries-only `referencedAnywhere`;
31
+ * the scope-blind three-way `D1GCQueue.isReferenced` is retired), so these
32
+ * replace the old globals rather than adding to them — index count unchanged,
33
+ * no extra write-amplification on the hot append-only changelog.
34
+ */
35
+ declare const CHANGELOG_INDEX_SQL: readonly string[];
36
+ /**
37
+ * Migration 0110 — swap the legacy bare-cid changelog indexes for the
38
+ * scope-composite ones above. An explicit `DROP` is required: `CREATE INDEX
39
+ * IF NOT EXISTS idx_changelog_scope_cid …` lands the new index on fresh DBs,
40
+ * but an already-deployed DB carries the OLD `idx_changelog_cid` / `_old_cid`
41
+ * names — those must be dropped or they linger as orphan indexes, still
42
+ * maintained on every changelog insert. Fresh DBs apply the regenerated 0100
43
+ * (new names) THEN this (DROP no-ops on the absent old names, CREATE no-ops on
44
+ * the already-present new ones) → idempotent both ways. Sourced here so the
45
+ * migration and `ensureTable` share one definition. D1 + Node libsql only
46
+ * (mobile single-device runtimes have no scope selectivity to gain).
47
+ */
48
+ declare const CHANGELOG_SCOPE_CID_MIGRATION_SQL: readonly string[];
49
+ /**
50
+ * Combined DDL block (table + indices), separated by `;\n`.
51
+ *
52
+ * This is the canonical form against which Swift/Kotlin literals and the
53
+ * migration SQL file are compared. The parity script normalises whitespace
54
+ * and case before byte-comparing, so reformatting any one location is fine
55
+ * as long as the SQL semantics stay identical.
56
+ */
57
+ declare const CHANGELOG_DDL: string;
58
+ /**
59
+ * Phase 2 Task 2.2 — `device_sync_state` table (D1 only).
60
+ *
61
+ * Worker-side per-device sync progress tracker. Unlike `changelog`, this
62
+ * table lives ONLY in Cloudflare D1; mobile runtimes do not mirror it.
63
+ * Each row records the highest changelog.seq a device has acknowledged
64
+ * plus heartbeat timestamps.
65
+ *
66
+ * Columns:
67
+ * - scope : DID Space scope (matches changelog.scope semantics)
68
+ * - device_id : opaque device identifier from request header
69
+ * - last_seq : highest changelog.seq this device has consumed
70
+ * - last_sync_at : unix millis of last successful advancement of last_seq
71
+ * - last_seen_at : unix millis of most recent heartbeat / HTTP touch
72
+ *
73
+ * Composite PRIMARY KEY `(scope, device_id)` means the table is a regular
74
+ * rowid table (no WITHOUT ROWID) so row updates stay cheap.
75
+ *
76
+ * NOT parity-checked by `scripts/check-changelog-ddl-parity.ts` — this DDL
77
+ * is D1-only. Kept here beside `CHANGELOG_*` so the full D1 schema sits in
78
+ * one file for future readers.
79
+ */
80
+ declare const DEVICE_SYNC_STATE_TABLE_SQL = "CREATE TABLE IF NOT EXISTS ds_device_sync_state (\n scope TEXT NOT NULL,\n device_id TEXT NOT NULL,\n last_seq INTEGER NOT NULL DEFAULT 0,\n last_sync_at INTEGER NOT NULL,\n last_seen_at INTEGER NOT NULL,\n PRIMARY KEY (scope, device_id)\n)";
81
+ /** CREATE INDEX statements for `device_sync_state`. Order matches migration. */
82
+ declare const DEVICE_SYNC_STATE_INDEX_SQL: readonly string[];
83
+ /**
84
+ * Phase 2 Task 2.3 — `scope_meta` table (D1 only).
85
+ *
86
+ * Per-scope compaction metadata for the Cloudflare Worker. One row per
87
+ * DID Space scope. Written by G16 emergency compaction; read by the
88
+ * G5.a sync endpoint to decide whether to 409 incoming pulls whose
89
+ * `since` sits below the compaction watermark.
90
+ *
91
+ * Columns:
92
+ * - scope : DID Space scope (matches changelog.scope)
93
+ * - compacted_below_seq : highest seq that has been compacted away;
94
+ * incoming syncs with since < this value
95
+ * must receive a 409 requireFullResync.
96
+ * Monotonically non-decreasing.
97
+ * - last_compaction_at : unix millis of most recent compaction pass
98
+ * - total_changelog_writes : running counter of changelog rows ever
99
+ * written to this scope (deletes do NOT
100
+ * decrement); used by G16 to decide when to
101
+ * trigger emergency compaction
102
+ * - file_count : live count of `kind='file'` rows in `entries`
103
+ * for this scope. Maintained by the two
104
+ * `trg_entries_file_count_*` triggers below so
105
+ * the per-write capacity guard reads ONE row
106
+ * instead of a full-scope `COUNT(*)` scan (the
107
+ * O(N²) rows_read blow-up that exhausted the D1
108
+ * free tier during bulk sync). UNLIKE
109
+ * total_changelog_writes, deletes DO decrement it
110
+ * (floored at 0).
111
+ *
112
+ * Scopes are lazy-initialised: the row is NOT created on first changelog
113
+ * write. It's only materialised when compaction first runs for the
114
+ * scope. The `getCompactedBelowSeq` helper returns 0 for missing rows —
115
+ * the correct "nothing compacted yet" sentinel.
116
+ *
117
+ * PRIMARY KEY on `scope` makes this a regular rowid table; no secondary
118
+ * indices are needed since all lookups are by PK.
119
+ *
120
+ * NOT parity-checked by `scripts/check-changelog-ddl-parity.ts` — this
121
+ * DDL is D1-only (mobile runtimes do not mirror it). Kept here beside
122
+ * `CHANGELOG_*` and `DEVICE_SYNC_STATE_*` so the full D1 schema sits in
123
+ * one file for future readers.
124
+ */
125
+ declare const SCOPE_META_TABLE_SQL = "CREATE TABLE IF NOT EXISTS ds_scope_meta (\n scope TEXT PRIMARY KEY,\n compacted_below_seq INTEGER NOT NULL DEFAULT 0,\n last_compaction_at INTEGER NOT NULL DEFAULT 0,\n total_changelog_writes INTEGER NOT NULL DEFAULT 0,\n file_count INTEGER NOT NULL DEFAULT 0\n)";
126
+ /**
127
+ * Additive ALTER for the `total_bytes` running-total (upload-limits Phase 5,
128
+ * byte-quota D3). total_bytes is added ONLY via this ALTER — NOT in the CREATE
129
+ * TABLE above — so the single migration that introduces it works on BOTH a
130
+ * fresh DB and an already-deployed scope_meta (an `ADD COLUMN` in the CREATE
131
+ * would collide with the migration's ALTER on a fresh DB; the runner is not
132
+ * idempotent on "duplicate column"). The runtime probe-then-ALTER in
133
+ * D1TreeIndex.ensureTable applies it to fresh test/dev DBs; production deploys
134
+ * apply the generated migration. Defaulted + NOT NULL → safe additive ALTER.
135
+ */
136
+ declare const SCOPE_META_TOTAL_BYTES_COLUMN_SQL = "ALTER TABLE ds_scope_meta ADD COLUMN total_bytes INTEGER NOT NULL DEFAULT 0";
137
+ /**
138
+ * Trigger that keeps `scope_meta.file_count` incrementing in lock-step with
139
+ * new `kind='file'` rows in `entries`. It exists so the capacity guard in
140
+ * `D1TreeIndex.put()` can read a single `scope_meta` row instead of issuing a
141
+ * full-scope `SELECT COUNT(*) FROM entries` on every new-file write — that
142
+ * scan read the WHOLE scope each time, turning a bulk sync of N files into
143
+ * ~N²/2 D1 `rows_read` and blowing past the free-tier 5M/day ceiling.
144
+ *
145
+ * INCREMENT via trigger; DECREMENT in app code — asymmetric on purpose.
146
+ * Cloudflare's D1 counts a statement's TRIGGER side-effects in `meta.changes`
147
+ * (verified on workerd: deleting 2 files + 1 dir with an AFTER-DELETE trigger
148
+ * reports 5, not 3). `deleteByPrefix` RETURNS `meta.changes`, so an
149
+ * AFTER-DELETE trigger would silently inflate that documented count. Inserts
150
+ * are safe — neither `put` nor `putBatch` reads `meta.changes` — so the
151
+ * increment stays a trigger (covering both paths for free), while
152
+ * `delete`/`deleteByPrefix` decrement `file_count` with their own batch
153
+ * statement, computed atomically from the pre-delete entries state. See
154
+ * `D1TreeIndex.delete` / `deleteByPrefix`.
155
+ *
156
+ * Trigger semantics:
157
+ * - INSERT of a `kind='file'` row → +1 (upsert creates the scope_meta row
158
+ * lazily on first file). Dir rows (`kind='dir'`) and `INSERT OR IGNORE`
159
+ * no-ops never fire. An overwrite (`ON CONFLICT DO UPDATE` on entries) is
160
+ * an UPDATE, not an INSERT, so it correctly leaves the count alone.
161
+ *
162
+ * D1-only (mobile runtimes don't mirror scope_meta). NOT parity-checked.
163
+ *
164
+ * NOTE: the body contains an inner `;` (required by SQLite trigger grammar).
165
+ * Any SQL splitter that feeds this to D1 one statement at a time MUST keep
166
+ * the `CREATE TRIGGER … BEGIN … END` block whole — see
167
+ * `runtimes/cloudflare/scripts/apply-d1-migrations.mjs` `splitSqlStatements`.
168
+ */
169
+ declare const SCOPE_META_FILE_COUNT_TRIGGER_SQL: readonly string[];
170
+ /**
171
+ * Triggers that keep `scope_meta.total_bytes` (upload-limits Phase 5 byte-quota
172
+ * D3) in lock-step with the `size` of `kind='file'` rows — mirroring the
173
+ * file_count trigger so the byte quota reads ONE scope_meta row instead of a
174
+ * `SELECT SUM(size)` full-scope scan (the rejected O(N) rows_read anti-pattern
175
+ * that caused the 503, did-space-d1-filecount-fix).
176
+ *
177
+ * - INSERT of a new file → `+= NEW.size` (lazy upsert of the scope_meta row).
178
+ * - UPDATE (overwrite, same path, new content/size) → `+= NEW.size - OLD.size`.
179
+ * Safe as a trigger because put/putBatch do NOT read `meta.changes` — only
180
+ * `deleteByPrefix` does, so DELETE decrements in app code (below), exactly
181
+ * like file_count. Floored at 0 against drift.
182
+ *
183
+ * D1-only (mobile runtimes don't mirror scope_meta). NOT parity-checked. Each
184
+ * `CREATE TRIGGER … BEGIN … END` block has an inner `;` — keep it whole when
185
+ * splitting SQL (see apply-d1-migrations.mjs splitSqlStatements).
186
+ */
187
+ declare const SCOPE_META_TOTAL_BYTES_TRIGGER_SQL: readonly string[];
188
+ /**
189
+ * One-time backfill: seed `total_bytes` from the current file rows for every
190
+ * scope. Absolute (`SET = excluded.total_bytes`) so it self-corrects against a
191
+ * concurrent write between trigger creation and this statement. Migration-only.
192
+ */
193
+ declare const SCOPE_META_TOTAL_BYTES_BACKFILL_SQL = "INSERT INTO ds_scope_meta (scope, total_bytes)\n SELECT scope, COALESCE(SUM(size), 0) FROM ds_entries WHERE kind = 'file' GROUP BY scope\n ON CONFLICT(scope) DO UPDATE SET total_bytes = excluded.total_bytes";
194
+ /**
195
+ * Decrement statement for `delete()`: −1 iff `path` is currently a file.
196
+ * Placed in the delete batch BEFORE the `DELETE FROM entries` so the EXISTS
197
+ * subquery observes the pre-delete row. Floored at 0. Bind order:
198
+ * `(scope, scope, path)`.
199
+ */
200
+ declare const SCOPE_META_FILE_COUNT_DELETE_ONE_SQL = "UPDATE ds_scope_meta\n SET file_count = MAX(0, file_count - 1)\n WHERE scope = ? AND EXISTS (\n SELECT 1 FROM ds_entries WHERE scope = ? AND path = ? AND kind = 'file'\n )";
201
+ /**
202
+ * Decrement statement for `deleteByPrefix()`: subtract the number of file rows
203
+ * in the prefix range. Placed in the batch BEFORE the range `DELETE` so the
204
+ * COUNT observes the pre-delete rows; the COUNT scans only the range being
205
+ * deleted (never the whole scope). Floored at 0. Bind order:
206
+ * `(scope, scope, lo, hi)`.
207
+ */
208
+ declare const SCOPE_META_FILE_COUNT_DELETE_RANGE_SQL = "UPDATE ds_scope_meta\n SET file_count = MAX(0, file_count - (\n SELECT COUNT(*) FROM ds_entries\n WHERE scope = ? AND path >= ? AND path < ? AND kind = 'file'\n ))\n WHERE scope = ?";
209
+ /**
210
+ * One-time backfill: seed `file_count` from the current `entries` rows for
211
+ * every scope that already has files. Absolute (`SET = excluded.file_count`,
212
+ * not `+=`) so it is self-correcting if a concurrent write fires a trigger
213
+ * between trigger creation and this statement. Migration-only — fresh DBs
214
+ * (tests / first deploy) start empty and need no backfill.
215
+ */
216
+ declare const SCOPE_META_FILE_COUNT_BACKFILL_SQL = "INSERT INTO ds_scope_meta (scope, file_count)\n SELECT scope, COUNT(*) FROM ds_entries WHERE kind = 'file' GROUP BY scope\n ON CONFLICT(scope) DO UPDATE SET file_count = excluded.file_count";
217
+ /**
218
+ * CREATE INDEX statements for `scope_meta`. Empty by design — lookups are
219
+ * always by the PRIMARY KEY, so the autogenerated PK index is sufficient.
220
+ * Exported as an empty array for symmetry with `CHANGELOG_INDEX_SQL` and
221
+ * `DEVICE_SYNC_STATE_INDEX_SQL` so callers can loop uniformly.
222
+ */
223
+ declare const SCOPE_META_INDEX_SQL: readonly string[];
224
+ /**
225
+ * Live Update Resilience Phase 0 (DEC-7 / design §11.4) — `prefix_watermark`.
226
+ *
227
+ * Per-`(scope, prefix)` monotonic write counter. `prefix` is the FIRST path
228
+ * segment of a write path (the `/user` first-level collection root, e.g.
229
+ * `items`, `tags`). Every file write/delete INSIDE a collection (`depth >= 2`)
230
+ * bumps the matching row's `version` by 1, in the SAME D1 batch as the
231
+ * changelog INSERT (typical +1 row write-amplification).
232
+ *
233
+ * Web live-update reconcile reads ONE row (`SELECT version WHERE scope=? AND
234
+ * prefix=?`) to decide "did my list change?" — true O(1), independent of
235
+ * changelog history size or global write activity (the append-only changelog
236
+ * `drain` would be `O(global increment)` rows_read and hit the D1 cliff; see
237
+ * design §11.1-11.3 for the rejected alternatives B/D).
238
+ *
239
+ * `version` is prefix-LOCAL: it only counts writes to THIS collection root, so
240
+ * exposing it as the wire `liveSeq` never leaks another blocklet's timing
241
+ * (invariant I3). It is a plain monotonic counter, so `+1` gap detection works
242
+ * within a prefix (Phase 3 push self-check).
243
+ *
244
+ * NOT parity-checked by `scripts/check-changelog-ddl-parity.ts` — this table is
245
+ * D1-only (Cloudflare) + Node sqlite. Mobile (Swift/Kotlin) does NOT mirror it:
246
+ * mobile sync drains the changelog and never reads the watermark. Same handling
247
+ * as `scope_meta` / `device_sync_state` above.
248
+ */
249
+ declare const PREFIX_WATERMARK_TABLE_SQL = "CREATE TABLE IF NOT EXISTS ds_prefix_watermark (\n scope TEXT NOT NULL,\n prefix TEXT NOT NULL,\n version INTEGER NOT NULL DEFAULT 0,\n PRIMARY KEY (scope, prefix)\n)";
250
+ /**
251
+ * Phase 3 Task 3.4 — `sync_state` local key-value table.
252
+ *
253
+ * Per-scope progress tracker for the local SyncEngine. Lives in the SAME
254
+ * SQLite DB as `changelog` on desktop (via MetadataDB) and mobile (via
255
+ * SQLiteTreeIndex). Byte-identical DDL across runtimes so the three-way
256
+ * parity script can treat it the same way as `changelog`.
257
+ *
258
+ * Schema (Task 3.4 minimum):
259
+ * key : `{scope}:local_seq` — max seq this device has pushed to cloud
260
+ * key : `{scope}:cloud_seq` — max seq pulled/applied from other devices
261
+ *
262
+ * Task 3.5 extends usage with more keys (device_id, last_sync_at, sync_status)
263
+ * backed by Keychain/Keystore on mobile. The table shape is unchanged — only
264
+ * the set of keys written to it grows.
265
+ *
266
+ * Values are always TEXT (SQLite's universal type). Integer keys like
267
+ * `local_seq` are stored as decimal strings and parsed at read time. This
268
+ * keeps the schema a single source of truth regardless of how many key types
269
+ * Task 3.5 adds later.
270
+ *
271
+ * Scope-prefixed keys let multiple DID Space scopes share the same SQLite DB
272
+ * without colliding — matching the existing scope isolation in the changelog
273
+ * table.
274
+ */
275
+ declare const SYNC_STATE_TABLE_SQL = "CREATE TABLE IF NOT EXISTS ds_sync_state (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n)";
276
+ /** CREATE INDEX statements for `sync_state`. Empty by design — lookups are by PK. */
277
+ declare const SYNC_STATE_INDEX_SQL: readonly string[];
278
+ /**
279
+ * Combined DDL for the sync_state table + indices. Exported for the same
280
+ * three-way parity reasons as `CHANGELOG_DDL` — Swift and Kotlin each embed
281
+ * a byte-identical literal that must match this string after normalisation.
282
+ */
283
+ declare const SYNC_STATE_DDL: string;
284
+ /**
285
+ * Whitespace+case normaliser used by the parity script and tests.
286
+ *
287
+ * Strategy:
288
+ * 1. Strip SQL line comments (`-- ...` to end of line).
289
+ * 2. Strip C-style block comments (`/* ... *​/`) — defensive, none currently.
290
+ * 3. Lower-case everything (SQLite keywords + identifiers are case-insensitive).
291
+ * 4. Strip ALL `;` characters — different sources may add/omit a trailing
292
+ * semicolon on the last statement; semantically equivalent so we drop them.
293
+ * 5. Collapse any whitespace run (spaces, tabs, newlines) into a single space.
294
+ * 6. Trim leading/trailing whitespace.
295
+ * 7. Remove spaces immediately around `(`, `)`, `,` so that
296
+ * `changelog(scope, seq)` and `changelog ( scope , seq )` compare equal.
297
+ *
298
+ * Note: this is intentionally conservative — string literals like `'put'` and
299
+ * `'delete'` already happen to be lower-case, and SQLite treats string values
300
+ * as case-sensitive. If a future column ever needed mixed-case literals, we
301
+ * would have to mask string-literal regions before lower-casing.
302
+ */
303
+ declare function normalizeDdl(input: string): string;
304
+ /** `kind` discriminator for a changelog row entry on the sync wire. */
305
+ declare const CHANGELOG_ROW_KIND = "did-space:changelog-row";
306
+ /** `kind` discriminator for a manifest file entry on the sync wire. */
307
+ declare const MANIFEST_FILE_KIND = "did-space:file";
308
+ /**
309
+ * Field list for a changelog row's `meta.extra` (canonical sync wire).
310
+ * Order is documentary only — consumers read by key, never by position.
311
+ */
312
+ declare const CHANGELOG_WIRE_EXTRA_FIELDS: readonly ["seq", "op", "originalPath", "cid", "oldCid", "size", "mtime", "deviceId"];
313
+ /** Field list for a manifest entry's `meta.extra` (canonical sync wire). */
314
+ declare const MANIFEST_WIRE_EXTRA_FIELDS: readonly ["cid", "mtime"];
315
+ /**
316
+ * Canonical `meta.extra` payload of a `.changelog` row. The single position
317
+ * (`extra`) all four runtimes can decode. `originalPath` is the tree-path with
318
+ * NO leading slash (matches `changelog.path` column semantics).
319
+ */
320
+ interface ChangelogWireExtra {
321
+ seq: number;
322
+ op: "put" | "delete";
323
+ originalPath: string;
324
+ cid: string | null;
325
+ oldCid: string | null;
326
+ size: number | null;
327
+ mtime: number;
328
+ deviceId: string;
329
+ }
330
+ /**
331
+ * Input row shape for {@link serializeChangelogEntry} — the on-disk changelog
332
+ * row returned by `TreeIndex.getChangelogSince` (snake_case columns), a subset
333
+ * of {@link ChangelogEntry}.
334
+ */
335
+ interface ChangelogRowInput {
336
+ seq: number;
337
+ path: string;
338
+ op: "put" | "delete";
339
+ cid: string | null;
340
+ old_cid: string | null;
341
+ size: number | null;
342
+ mtime: number;
343
+ device_id: string;
344
+ }
345
+ /**
346
+ * Canonical `meta` of a manifest file entry (`list("", {maxDepth:-1})`).
347
+ * `cid` is emitted BOTH at top-level (additive, TS/UI) and under `extra`
348
+ * (Swift/Kotlin) — see the module header.
349
+ */
350
+ interface ManifestWireMeta {
351
+ kind: typeof MANIFEST_FILE_KIND;
352
+ cid: string;
353
+ size: number;
354
+ mimeType?: string;
355
+ extra: {
356
+ cid: string;
357
+ mtime: number;
358
+ };
359
+ }
360
+ /** Input for {@link serializeManifestEntry} — the file's tree metadata. */
361
+ interface ManifestRowInput {
362
+ cid: string;
363
+ size: number;
364
+ mtime: number;
365
+ mimeType?: string;
366
+ }
367
+ /**
368
+ * Serialize a changelog row to its canonical `meta.extra` payload. The provider
369
+ * wraps this as `meta: { kind: CHANGELOG_ROW_KIND, extra: serializeChangelogEntry(row) }`.
370
+ */
371
+ declare function serializeChangelogEntry(row: ChangelogRowInput): ChangelogWireExtra;
372
+ /**
373
+ * Serialize a manifest file entry to its canonical `meta`. `cid` is emitted at
374
+ * BOTH top-level and `extra.cid` (additive — see module header).
375
+ */
376
+ declare function serializeManifestEntry(row: ManifestRowInput): ManifestWireMeta;
377
+ /**
378
+ * Parse an untrusted changelog `meta.extra` bag into a typed {@link ChangelogWireExtra}.
379
+ * Returns `null` when required fields (`op`, `originalPath`) are missing/invalid —
380
+ * a malformed row is skipped, never crashes the parser. Numeric/optional fields
381
+ * degrade to safe defaults (`seq=0`, `cid=null`, …).
382
+ */
383
+ declare function parseChangelogEntry(extra: unknown): ChangelogWireExtra | null;
384
+ /**
385
+ * Parse an untrusted manifest entry `meta` into its canonical `{ cid, mtime }`.
386
+ * Reads `extra.cid` FIRST (canonical, all-runtime), falling back to top-level
387
+ * `meta.cid` (additive). Returns `null` when no cid is resolvable.
388
+ */
389
+ declare function parseManifestEntry(meta: unknown): {
390
+ cid: string;
391
+ mtime: number;
392
+ } | null;
393
+ //#endregion
394
+ export { CHANGELOG_DDL, CHANGELOG_INDEX_SQL, CHANGELOG_ROW_KIND, CHANGELOG_SCOPE_CID_MIGRATION_SQL, CHANGELOG_TABLE_SQL, CHANGELOG_WIRE_EXTRA_FIELDS, ChangelogRowInput, ChangelogWireExtra, DEVICE_SYNC_STATE_INDEX_SQL, DEVICE_SYNC_STATE_TABLE_SQL, MANIFEST_FILE_KIND, MANIFEST_WIRE_EXTRA_FIELDS, ManifestRowInput, ManifestWireMeta, PREFIX_WATERMARK_TABLE_SQL, SCOPE_META_FILE_COUNT_BACKFILL_SQL, SCOPE_META_FILE_COUNT_DELETE_ONE_SQL, SCOPE_META_FILE_COUNT_DELETE_RANGE_SQL, SCOPE_META_FILE_COUNT_TRIGGER_SQL, SCOPE_META_INDEX_SQL, SCOPE_META_TABLE_SQL, SCOPE_META_TOTAL_BYTES_BACKFILL_SQL, SCOPE_META_TOTAL_BYTES_COLUMN_SQL, SCOPE_META_TOTAL_BYTES_TRIGGER_SQL, SYNC_STATE_DDL, SYNC_STATE_INDEX_SQL, SYNC_STATE_TABLE_SQL, normalizeDdl, parseChangelogEntry, parseManifestEntry, serializeChangelogEntry, serializeManifestEntry };
395
+ //# sourceMappingURL=changelog-schema.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-schema.d.mts","names":[],"sources":["../src/changelog-schema.ts"],"mappings":";;AAkBA;;;;;AA4BA;;;;;AAkBA;;;;;AAeA;AAAA,cA7Da,mBAAA;;;;AAqFb;;;;;AAUA;;;;;AA8CA;;cAjHa,mBAAA;;;AAmIb;;;;;AAmCA;;;;;cApJa,iCAAA;;;;;AAiOb;;;;cAlNa,aAAA;AA4Nb;;;;;AAaA;;;;;AAcA;;;;;AAUA;;;;;AA2BA;;AAhEA,cApMa,2BAAA;;cAUA,2BAAA;AA+Wb;;;;;AAMA;;;;;AAOA;;;;;AAqBA;;;;;AA+BA;;;;;AAGA;;;;;AAMA;;;;;AAYA;;;;;AAOA;;AA7FA,cAjUa,oBAAA;;;;;;;;;;;cAkBA,iCAAA;AA4Zb;;;;;;;;;;;;;;AAgBA;;;;;;;;;;;;;;AASA;;;;AAzBA,cAzXa,iCAAA;;;;;;AA6Zb;;;;;;;;;AAiBA;;;cApZa,kCAAA;;;;;;cAmDA,mCAAA;;;;;;;cAUA,oCAAA;;;;;;;;cAaA,sCAAA;;;;;;;;cAcA,kCAAA;;;;;;;cAUA,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cA2BA,0BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAqHA,oBAAA;;cAMA,oBAAA;;;;;;cAOA,cAAA;;;;;;;;;;;;;;;;;;;;iBAqBG,YAAA,CAAa,KAAA;;cA+BhB,kBAAA;;cAGA,kBAAA;;;;;cAMA,2BAAA;;cAYA,0BAAA;;;;;;UAOI,kBAAA;EACf,GAAA;EACA,EAAA;EACA,YAAA;EACA,GAAA;EACA,MAAA;EACA,IAAA;EACA,KAAA;EACA,QAAA;AAAA;;;;;;UAQe,iBAAA;EACf,GAAA;EACA,IAAA;EACA,EAAA;EACA,GAAA;EACA,OAAA;EACA,IAAA;EACA,KAAA;EACA,SAAA;AAAA;;;;;;UAQe,gBAAA;EACf,IAAA,SAAa,kBAAA;EACb,GAAA;EACA,IAAA;EACA,QAAA;EACA,KAAA;IAAS,GAAA;IAAa,KAAA;EAAA;AAAA;;UAIP,gBAAA;EACf,GAAA;EACA,IAAA;EACA,KAAA;EACA,QAAA;AAAA;;;;;iBAOc,uBAAA,CAAwB,GAAA,EAAK,iBAAA,GAAoB,kBAAA;;;;;iBAiBjD,sBAAA,CAAuB,GAAA,EAAK,gBAAA,GAAmB,gBAAA;;;;;;;iBA2B/C,mBAAA,CAAoB,KAAA,YAAiB,kBAAA;;;;;;iBAyBrC,kBAAA,CAAmB,IAAA;EAAkB,GAAA;EAAa,KAAA;AAAA"}