@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,207 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_index = require('../packages/session/dist/index.cjs');
3
+ let _aigne_afs = require("@aigne/afs");
4
+
5
+ //#region src/transports/ws.ts
6
+ const DEFAULT_NAMESPACE = "did-space-client";
7
+ const DEFAULT_REQUEST_TIMEOUT = 3e4;
8
+ const ALLOWED_WS_SCHEMES = new Set(["ws:", "wss:"]);
9
+ function parseWsUrl(rawUrl) {
10
+ let parsed;
11
+ try {
12
+ parsed = new URL(rawUrl);
13
+ } catch {
14
+ throw new Error(`WsTransport: invalid URL: ${rawUrl}`);
15
+ }
16
+ if (!ALLOWED_WS_SCHEMES.has(parsed.protocol)) throw new Error(`WsTransport: only ws(s) is supported, got ${parsed.protocol} (URL: ${rawUrl})`);
17
+ const port = parsed.port ? Number(parsed.port) : parsed.protocol === "wss:" ? 443 : 80;
18
+ return {
19
+ host: parsed.hostname,
20
+ port
21
+ };
22
+ }
23
+ function mapWireError(code, message, path) {
24
+ switch (code) {
25
+ case "not_found": return new _aigne_afs.AFSNotFoundError(path, message);
26
+ case "conflict": return new _aigne_afs.AFSConflictError(path, {
27
+ cid: null,
28
+ mtime: null,
29
+ deviceId: null
30
+ });
31
+ case "compacted": return new _aigne_afs.AFSCompactedError(path, "0");
32
+ case "validation": return new _aigne_afs.AFSValidationError(message);
33
+ default: return /* @__PURE__ */ new Error(`WsTransport ${code}: ${message}`);
34
+ }
35
+ }
36
+ var WsTransport = class {
37
+ kind = "ws";
38
+ url;
39
+ token;
40
+ namespace;
41
+ requestTimeout;
42
+ ws = null;
43
+ rpc;
44
+ pendingBinary = new require_index.PendingBinaryBuffer();
45
+ subs = /* @__PURE__ */ new Map();
46
+ connected = false;
47
+ closed = false;
48
+ constructor(options) {
49
+ parseWsUrl(options.url);
50
+ this.url = options.url;
51
+ this.token = options.token;
52
+ this.namespace = options.namespace ?? DEFAULT_NAMESPACE;
53
+ this.requestTimeout = options.requestTimeout ?? DEFAULT_REQUEST_TIMEOUT;
54
+ this.rpc = new require_index.RPCHandler({
55
+ startId: 1,
56
+ idIncrement: 2,
57
+ timeout: this.requestTimeout
58
+ });
59
+ }
60
+ async connect() {
61
+ if (this.closed) throw new Error("WsTransport: already closed");
62
+ if (this.connected) return;
63
+ const { host, port } = parseWsUrl(this.url);
64
+ const ws = new require_index.WebSocketClient({
65
+ host,
66
+ port,
67
+ authToken: this.token
68
+ });
69
+ await ws.connect();
70
+ this.ws = ws;
71
+ this.connected = true;
72
+ ws.on("frame", (frame) => this.handleFrame(frame));
73
+ ws.on("close", () => {
74
+ this.connected = false;
75
+ this.rpc.rejectAll(/* @__PURE__ */ new Error("WsTransport: connection closed"));
76
+ this.pendingBinary.clear();
77
+ });
78
+ ws.on("error", (err) => {
79
+ this.rpc.rejectAll(err);
80
+ });
81
+ await this.rpc.sendRequest(ws, "session.attach", {
82
+ version: require_index.PROTOCOL_VERSION,
83
+ namespace: this.namespace
84
+ });
85
+ }
86
+ async close() {
87
+ if (this.closed) return;
88
+ this.closed = true;
89
+ this.connected = false;
90
+ this.subs.clear();
91
+ this.rpc.rejectAll(/* @__PURE__ */ new Error("WsTransport: closed"));
92
+ this.pendingBinary.clear();
93
+ if (this.ws) {
94
+ try {
95
+ await this.ws.close();
96
+ } catch {}
97
+ this.ws = null;
98
+ }
99
+ }
100
+ list(path, options) {
101
+ return this.afs("list", path, { options });
102
+ }
103
+ read(path, options) {
104
+ return this.afs("read", path, { options });
105
+ }
106
+ write(path, payload, options) {
107
+ return this.afs("write", path, {
108
+ payload,
109
+ options
110
+ });
111
+ }
112
+ delete(path, options) {
113
+ return this.afs("delete", path, { options });
114
+ }
115
+ stat(path, options) {
116
+ return this.afs("stat", path, { options });
117
+ }
118
+ search(path, query, options) {
119
+ return this.afs("search", path, {
120
+ query,
121
+ options
122
+ });
123
+ }
124
+ exec(path, args, options) {
125
+ return this.afs("exec", path, {
126
+ args,
127
+ options
128
+ });
129
+ }
130
+ explain(path, options) {
131
+ return this.afs("explain", path, { options });
132
+ }
133
+ async subscribe(path, onEvent) {
134
+ this.requireConnected();
135
+ const result = await this.rpc.sendRequest(this.ws, "afs.subscribe", { path });
136
+ if (!result?.subId) throw new Error("WsTransport: subscribe returned no subId");
137
+ this.subs.set(result.subId, {
138
+ subId: result.subId,
139
+ callback: onEvent
140
+ });
141
+ return async () => {
142
+ if (!this.subs.has(result.subId)) return;
143
+ this.subs.delete(result.subId);
144
+ if (this.connected && this.ws) try {
145
+ await this.rpc.sendRequest(this.ws, "afs.unsubscribe", { subId: result.subId });
146
+ } catch {}
147
+ };
148
+ }
149
+ async afs(op, path, extra) {
150
+ this.requireConnected();
151
+ try {
152
+ return await this.rpc.sendRequest(this.ws, `afs.${op}`, {
153
+ path,
154
+ ...extra
155
+ }) ?? null;
156
+ } catch (err) {
157
+ if (err && typeof err === "object" && "code" in err && "message" in err && typeof err.code === "string") {
158
+ const code = err.code;
159
+ throw mapWireError(code, String(err.message), path);
160
+ }
161
+ throw err;
162
+ }
163
+ }
164
+ requireConnected() {
165
+ if (!this.connected || !this.ws) throw new Error("WsTransport: not connected (call connect() first or after close)");
166
+ }
167
+ handleFrame(frame) {
168
+ if (frame.type === require_index.FrameType.Binary) {
169
+ this.pendingBinary.set(frame.reqId, frame.payload);
170
+ return;
171
+ }
172
+ if (frame.type !== require_index.FrameType.JSON) return;
173
+ const binary = this.pendingBinary.take(frame.reqId);
174
+ let msg;
175
+ try {
176
+ msg = require_index.deserializeMessage(frame.payload);
177
+ } catch {
178
+ return;
179
+ }
180
+ if (msg.type === "response") {
181
+ const r = msg;
182
+ if (binary && r.result !== void 0) r.result = require_index.injectBinary(r.result, binary);
183
+ this.rpc.handleResponse(r);
184
+ return;
185
+ }
186
+ if (msg.type === "event") this.handleEvent(msg);
187
+ }
188
+ handleEvent(event) {
189
+ if (event.event !== "afs.event") return;
190
+ const data = event.data ?? {};
191
+ if (!data.subId || !data.event) return;
192
+ const sub = this.subs.get(data.subId);
193
+ if (!sub) return;
194
+ try {
195
+ sub.callback(data.event);
196
+ } catch {}
197
+ }
198
+ };
199
+ async function createWsTransport(options) {
200
+ const t = new WsTransport(options);
201
+ await t.connect();
202
+ return t;
203
+ }
204
+
205
+ //#endregion
206
+ exports.WsTransport = WsTransport;
207
+ exports.createWsTransport = createWsTransport;
@@ -0,0 +1,47 @@
1
+ import { Transport, Unsubscribe } from "./types.cjs";
2
+ import { AFSDeleteOptions, AFSDeleteResult, AFSEvent, AFSExecOptions, AFSExecResult, AFSExplainOptions, AFSExplainResult, AFSListOptions, AFSListResult, AFSReadOptions, AFSReadResult, AFSSearchOptions, AFSSearchResult, AFSStatOptions, AFSStatResult, AFSWriteEntryPayload, AFSWriteOptions, AFSWriteResult } from "@aigne/afs";
3
+
4
+ //#region src/transports/ws.d.ts
5
+ interface WsTransportOptions {
6
+ /** WebSocket URL of the DID Space server. */
7
+ url: string;
8
+ /** Bearer token. Sent inside the `bearer.<hex>` WebSocket subprotocol. */
9
+ token: string;
10
+ /** Session namespace for `session.attach`. Default: `"did-space-client"`. */
11
+ namespace?: string;
12
+ /** RPC request timeout (ms). Default: 30000. */
13
+ requestTimeout?: number;
14
+ }
15
+ declare class WsTransport implements Transport {
16
+ readonly kind: "ws";
17
+ private readonly url;
18
+ private readonly token;
19
+ private readonly namespace;
20
+ private readonly requestTimeout;
21
+ private ws;
22
+ private rpc;
23
+ private pendingBinary;
24
+ private subs;
25
+ private connected;
26
+ private closed;
27
+ constructor(options: WsTransportOptions);
28
+ connect(): Promise<void>;
29
+ close(): Promise<void>;
30
+ list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
31
+ read(path: string, options?: AFSReadOptions): Promise<AFSReadResult>;
32
+ write(path: string, payload: AFSWriteEntryPayload, options?: AFSWriteOptions): Promise<AFSWriteResult>;
33
+ delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
34
+ stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult>;
35
+ search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult>;
36
+ exec(path: string, args: Record<string, unknown>, options?: AFSExecOptions): Promise<AFSExecResult>;
37
+ explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult>;
38
+ subscribe(path: string, onEvent: (event: AFSEvent) => void): Promise<Unsubscribe>;
39
+ private afs;
40
+ private requireConnected;
41
+ private handleFrame;
42
+ private handleEvent;
43
+ }
44
+ declare function createWsTransport(options: WsTransportOptions): Promise<WsTransport>;
45
+ //#endregion
46
+ export { WsTransport, WsTransportOptions, createWsTransport };
47
+ //# sourceMappingURL=ws.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.d.cts","names":[],"sources":["../../src/transports/ws.ts"],"mappings":";;;;UA2EiB,kBAAA;EAsJJ;EApJX,GAAA;EAwJ+B;EAtJ/B,KAAA;EAsJkD;EApJlD,SAAA;EAwJsD;EAtJtD,cAAA;AAAA;AAAA,cAmDW,WAAA,YAAuB,SAAA;EAAA,SACzB,IAAA;EAAA,iBAEQ,GAAA;EAAA,iBACA,KAAA;EAAA,iBACA,SAAA;EAAA,iBACA,cAAA;EAAA,QAET,EAAA;EAAA,QACA,GAAA;EAAA,QACA,aAAA;EAAA,QACA,IAAA;EAAA,QACA,SAAA;EAAA,QACA,MAAA;cAEI,OAAA,EAAS,kBAAA;EAef,OAAA,CAAA,GAAW,OAAA;EA2BX,KAAA,CAAA,GAAS,OAAA;EAsBf,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAItD,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAItD,KAAA,CACE,IAAA,UACA,OAAA,EAAS,oBAAA,EACT,OAAA,GAAU,eAAA,GACT,OAAA,CAAQ,cAAA;EAIX,MAAA,CAAO,IAAA,UAAc,OAAA,GAAU,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAI1D,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAItD,MAAA,CAAO,IAAA,UAAc,KAAA,UAAe,OAAA,GAAU,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAIzE,IAAA,CACE,IAAA,UACA,IAAA,EAAM,MAAA,mBACN,OAAA,GAAU,cAAA,GACT,OAAA,CAAQ,aAAA;EAIX,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,gBAAA;EAItD,SAAA,CAAU,IAAA,UAAc,OAAA,GAAU,KAAA,EAAO,QAAA,YAAoB,OAAA,CAAQ,WAAA;EAAA,QA0B7D,GAAA;EAAA,QA0BN,gBAAA;EAAA,QAMA,WAAA;EAAA,QA6BA,WAAA;AAAA;AAAA,iBAqBY,iBAAA,CAAkB,OAAA,EAAS,kBAAA,GAAqB,OAAA,CAAQ,WAAA"}
@@ -0,0 +1,47 @@
1
+ import { Transport, Unsubscribe } from "./types.mjs";
2
+ import { AFSDeleteOptions, AFSDeleteResult, AFSEvent, AFSExecOptions, AFSExecResult, AFSExplainOptions, AFSExplainResult, AFSListOptions, AFSListResult, AFSReadOptions, AFSReadResult, AFSSearchOptions, AFSSearchResult, AFSStatOptions, AFSStatResult, AFSWriteEntryPayload, AFSWriteOptions, AFSWriteResult } from "@aigne/afs";
3
+
4
+ //#region src/transports/ws.d.ts
5
+ interface WsTransportOptions {
6
+ /** WebSocket URL of the DID Space server. */
7
+ url: string;
8
+ /** Bearer token. Sent inside the `bearer.<hex>` WebSocket subprotocol. */
9
+ token: string;
10
+ /** Session namespace for `session.attach`. Default: `"did-space-client"`. */
11
+ namespace?: string;
12
+ /** RPC request timeout (ms). Default: 30000. */
13
+ requestTimeout?: number;
14
+ }
15
+ declare class WsTransport implements Transport {
16
+ readonly kind: "ws";
17
+ private readonly url;
18
+ private readonly token;
19
+ private readonly namespace;
20
+ private readonly requestTimeout;
21
+ private ws;
22
+ private rpc;
23
+ private pendingBinary;
24
+ private subs;
25
+ private connected;
26
+ private closed;
27
+ constructor(options: WsTransportOptions);
28
+ connect(): Promise<void>;
29
+ close(): Promise<void>;
30
+ list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
31
+ read(path: string, options?: AFSReadOptions): Promise<AFSReadResult>;
32
+ write(path: string, payload: AFSWriteEntryPayload, options?: AFSWriteOptions): Promise<AFSWriteResult>;
33
+ delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
34
+ stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult>;
35
+ search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult>;
36
+ exec(path: string, args: Record<string, unknown>, options?: AFSExecOptions): Promise<AFSExecResult>;
37
+ explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult>;
38
+ subscribe(path: string, onEvent: (event: AFSEvent) => void): Promise<Unsubscribe>;
39
+ private afs;
40
+ private requireConnected;
41
+ private handleFrame;
42
+ private handleEvent;
43
+ }
44
+ declare function createWsTransport(options: WsTransportOptions): Promise<WsTransport>;
45
+ //#endregion
46
+ export { WsTransport, WsTransportOptions, createWsTransport };
47
+ //# sourceMappingURL=ws.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.d.mts","names":[],"sources":["../../src/transports/ws.ts"],"mappings":";;;;UA2EiB,kBAAA;EAsJJ;EApJX,GAAA;EAwJ+B;EAtJ/B,KAAA;EAsJkD;EApJlD,SAAA;EAwJsD;EAtJtD,cAAA;AAAA;AAAA,cAmDW,WAAA,YAAuB,SAAA;EAAA,SACzB,IAAA;EAAA,iBAEQ,GAAA;EAAA,iBACA,KAAA;EAAA,iBACA,SAAA;EAAA,iBACA,cAAA;EAAA,QAET,EAAA;EAAA,QACA,GAAA;EAAA,QACA,aAAA;EAAA,QACA,IAAA;EAAA,QACA,SAAA;EAAA,QACA,MAAA;cAEI,OAAA,EAAS,kBAAA;EAef,OAAA,CAAA,GAAW,OAAA;EA2BX,KAAA,CAAA,GAAS,OAAA;EAsBf,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAItD,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAItD,KAAA,CACE,IAAA,UACA,OAAA,EAAS,oBAAA,EACT,OAAA,GAAU,eAAA,GACT,OAAA,CAAQ,cAAA;EAIX,MAAA,CAAO,IAAA,UAAc,OAAA,GAAU,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAI1D,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAItD,MAAA,CAAO,IAAA,UAAc,KAAA,UAAe,OAAA,GAAU,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAIzE,IAAA,CACE,IAAA,UACA,IAAA,EAAM,MAAA,mBACN,OAAA,GAAU,cAAA,GACT,OAAA,CAAQ,aAAA;EAIX,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,gBAAA;EAItD,SAAA,CAAU,IAAA,UAAc,OAAA,GAAU,KAAA,EAAO,QAAA,YAAoB,OAAA,CAAQ,WAAA;EAAA,QA0B7D,GAAA;EAAA,QA0BN,gBAAA;EAAA,QAMA,WAAA;EAAA,QA6BA,WAAA;AAAA;AAAA,iBAqBY,iBAAA,CAAkB,OAAA,EAAS,kBAAA,GAAqB,OAAA,CAAQ,WAAA"}
@@ -0,0 +1,206 @@
1
+ import { FrameType, PROTOCOL_VERSION, PendingBinaryBuffer, RPCHandler, WebSocketClient, deserializeMessage, injectBinary } from "../packages/session/dist/index.mjs";
2
+ import { AFSCompactedError, AFSConflictError, AFSNotFoundError, AFSValidationError } from "@aigne/afs";
3
+
4
+ //#region src/transports/ws.ts
5
+ const DEFAULT_NAMESPACE = "did-space-client";
6
+ const DEFAULT_REQUEST_TIMEOUT = 3e4;
7
+ const ALLOWED_WS_SCHEMES = new Set(["ws:", "wss:"]);
8
+ function parseWsUrl(rawUrl) {
9
+ let parsed;
10
+ try {
11
+ parsed = new URL(rawUrl);
12
+ } catch {
13
+ throw new Error(`WsTransport: invalid URL: ${rawUrl}`);
14
+ }
15
+ if (!ALLOWED_WS_SCHEMES.has(parsed.protocol)) throw new Error(`WsTransport: only ws(s) is supported, got ${parsed.protocol} (URL: ${rawUrl})`);
16
+ const port = parsed.port ? Number(parsed.port) : parsed.protocol === "wss:" ? 443 : 80;
17
+ return {
18
+ host: parsed.hostname,
19
+ port
20
+ };
21
+ }
22
+ function mapWireError(code, message, path) {
23
+ switch (code) {
24
+ case "not_found": return new AFSNotFoundError(path, message);
25
+ case "conflict": return new AFSConflictError(path, {
26
+ cid: null,
27
+ mtime: null,
28
+ deviceId: null
29
+ });
30
+ case "compacted": return new AFSCompactedError(path, "0");
31
+ case "validation": return new AFSValidationError(message);
32
+ default: return /* @__PURE__ */ new Error(`WsTransport ${code}: ${message}`);
33
+ }
34
+ }
35
+ var WsTransport = class {
36
+ kind = "ws";
37
+ url;
38
+ token;
39
+ namespace;
40
+ requestTimeout;
41
+ ws = null;
42
+ rpc;
43
+ pendingBinary = new PendingBinaryBuffer();
44
+ subs = /* @__PURE__ */ new Map();
45
+ connected = false;
46
+ closed = false;
47
+ constructor(options) {
48
+ parseWsUrl(options.url);
49
+ this.url = options.url;
50
+ this.token = options.token;
51
+ this.namespace = options.namespace ?? DEFAULT_NAMESPACE;
52
+ this.requestTimeout = options.requestTimeout ?? DEFAULT_REQUEST_TIMEOUT;
53
+ this.rpc = new RPCHandler({
54
+ startId: 1,
55
+ idIncrement: 2,
56
+ timeout: this.requestTimeout
57
+ });
58
+ }
59
+ async connect() {
60
+ if (this.closed) throw new Error("WsTransport: already closed");
61
+ if (this.connected) return;
62
+ const { host, port } = parseWsUrl(this.url);
63
+ const ws = new WebSocketClient({
64
+ host,
65
+ port,
66
+ authToken: this.token
67
+ });
68
+ await ws.connect();
69
+ this.ws = ws;
70
+ this.connected = true;
71
+ ws.on("frame", (frame) => this.handleFrame(frame));
72
+ ws.on("close", () => {
73
+ this.connected = false;
74
+ this.rpc.rejectAll(/* @__PURE__ */ new Error("WsTransport: connection closed"));
75
+ this.pendingBinary.clear();
76
+ });
77
+ ws.on("error", (err) => {
78
+ this.rpc.rejectAll(err);
79
+ });
80
+ await this.rpc.sendRequest(ws, "session.attach", {
81
+ version: PROTOCOL_VERSION,
82
+ namespace: this.namespace
83
+ });
84
+ }
85
+ async close() {
86
+ if (this.closed) return;
87
+ this.closed = true;
88
+ this.connected = false;
89
+ this.subs.clear();
90
+ this.rpc.rejectAll(/* @__PURE__ */ new Error("WsTransport: closed"));
91
+ this.pendingBinary.clear();
92
+ if (this.ws) {
93
+ try {
94
+ await this.ws.close();
95
+ } catch {}
96
+ this.ws = null;
97
+ }
98
+ }
99
+ list(path, options) {
100
+ return this.afs("list", path, { options });
101
+ }
102
+ read(path, options) {
103
+ return this.afs("read", path, { options });
104
+ }
105
+ write(path, payload, options) {
106
+ return this.afs("write", path, {
107
+ payload,
108
+ options
109
+ });
110
+ }
111
+ delete(path, options) {
112
+ return this.afs("delete", path, { options });
113
+ }
114
+ stat(path, options) {
115
+ return this.afs("stat", path, { options });
116
+ }
117
+ search(path, query, options) {
118
+ return this.afs("search", path, {
119
+ query,
120
+ options
121
+ });
122
+ }
123
+ exec(path, args, options) {
124
+ return this.afs("exec", path, {
125
+ args,
126
+ options
127
+ });
128
+ }
129
+ explain(path, options) {
130
+ return this.afs("explain", path, { options });
131
+ }
132
+ async subscribe(path, onEvent) {
133
+ this.requireConnected();
134
+ const result = await this.rpc.sendRequest(this.ws, "afs.subscribe", { path });
135
+ if (!result?.subId) throw new Error("WsTransport: subscribe returned no subId");
136
+ this.subs.set(result.subId, {
137
+ subId: result.subId,
138
+ callback: onEvent
139
+ });
140
+ return async () => {
141
+ if (!this.subs.has(result.subId)) return;
142
+ this.subs.delete(result.subId);
143
+ if (this.connected && this.ws) try {
144
+ await this.rpc.sendRequest(this.ws, "afs.unsubscribe", { subId: result.subId });
145
+ } catch {}
146
+ };
147
+ }
148
+ async afs(op, path, extra) {
149
+ this.requireConnected();
150
+ try {
151
+ return await this.rpc.sendRequest(this.ws, `afs.${op}`, {
152
+ path,
153
+ ...extra
154
+ }) ?? null;
155
+ } catch (err) {
156
+ if (err && typeof err === "object" && "code" in err && "message" in err && typeof err.code === "string") {
157
+ const code = err.code;
158
+ throw mapWireError(code, String(err.message), path);
159
+ }
160
+ throw err;
161
+ }
162
+ }
163
+ requireConnected() {
164
+ if (!this.connected || !this.ws) throw new Error("WsTransport: not connected (call connect() first or after close)");
165
+ }
166
+ handleFrame(frame) {
167
+ if (frame.type === FrameType.Binary) {
168
+ this.pendingBinary.set(frame.reqId, frame.payload);
169
+ return;
170
+ }
171
+ if (frame.type !== FrameType.JSON) return;
172
+ const binary = this.pendingBinary.take(frame.reqId);
173
+ let msg;
174
+ try {
175
+ msg = deserializeMessage(frame.payload);
176
+ } catch {
177
+ return;
178
+ }
179
+ if (msg.type === "response") {
180
+ const r = msg;
181
+ if (binary && r.result !== void 0) r.result = injectBinary(r.result, binary);
182
+ this.rpc.handleResponse(r);
183
+ return;
184
+ }
185
+ if (msg.type === "event") this.handleEvent(msg);
186
+ }
187
+ handleEvent(event) {
188
+ if (event.event !== "afs.event") return;
189
+ const data = event.data ?? {};
190
+ if (!data.subId || !data.event) return;
191
+ const sub = this.subs.get(data.subId);
192
+ if (!sub) return;
193
+ try {
194
+ sub.callback(data.event);
195
+ } catch {}
196
+ }
197
+ };
198
+ async function createWsTransport(options) {
199
+ const t = new WsTransport(options);
200
+ await t.connect();
201
+ return t;
202
+ }
203
+
204
+ //#endregion
205
+ export { WsTransport, createWsTransport };
206
+ //# sourceMappingURL=ws.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.mjs","names":[],"sources":["../../src/transports/ws.ts"],"sourcesContent":["/**\n * WsTransport — DID Space transport over WebSocket via @aigne/afs-session.\n *\n * Wire layout:\n *\n * 1. Connect with `WebSocketClient` using a hex-encoded bearer\n * subprotocol (`bearer.<hex>` — RFC 6455 token-safe). The mock\n * cloud server and production WS gateway both speak this.\n * 2. Issue a `session.attach { version, namespace }` RPC to enter the\n * AFS routing tier. Without `attached=true` the server rejects\n * every `afs.*` request with `invalid_session`.\n * 3. Each AFS operation (`afs.list`, `afs.read`, …) is a single RPC\n * with `{ path, options? }` params. Binary content roundtrips via\n * the session sidecar frames (Frame.Binary / Frame.JSON pair —\n * handled transparently by `extractBinary` / `injectBinary`).\n * 4. `subscribe(path, cb)` issues `afs.subscribe { path }` and listens\n * for one-way `afs.event { subId, event }` notifications. The\n * returned `Unsubscribe` issues `afs.unsubscribe { subId }`.\n * 5. `close()` disconnects the underlying WebSocket. RPCs in flight\n * reject with the transport closure error.\n *\n * The transport is *thin* by design — it does not retry or buffer\n * across reconnects. Callers (`DIDSpaceClient`) layer reliability\n * concerns above.\n */\n\nimport type {\n AFSDeleteOptions,\n AFSDeleteResult,\n AFSEvent,\n AFSExecOptions,\n AFSExecResult,\n AFSExplainOptions,\n AFSExplainResult,\n AFSListOptions,\n AFSListResult,\n AFSReadOptions,\n AFSReadResult,\n AFSSearchOptions,\n AFSSearchResult,\n AFSStatOptions,\n AFSStatResult,\n AFSWriteEntryPayload,\n AFSWriteOptions,\n AFSWriteResult,\n} from \"@aigne/afs\";\nimport {\n AFSCompactedError,\n AFSConflictError,\n AFSNotFoundError,\n AFSValidationError,\n} from \"@aigne/afs\";\nimport {\n deserializeMessage,\n type Frame,\n FrameType,\n injectBinary,\n PendingBinaryBuffer,\n PROTOCOL_VERSION,\n RPCHandler,\n type Event as RpcEvent,\n type Response as RpcResponse,\n WebSocketClient,\n} from \"@aigne/afs-session\";\nimport type { Transport, Unsubscribe } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_NAMESPACE = \"did-space-client\";\nconst DEFAULT_REQUEST_TIMEOUT = 30_000;\n\nconst ALLOWED_WS_SCHEMES = new Set([\"ws:\", \"wss:\"]);\n\nexport interface WsTransportOptions {\n /** WebSocket URL of the DID Space server. */\n url: string;\n /** Bearer token. Sent inside the `bearer.<hex>` WebSocket subprotocol. */\n token: string;\n /** Session namespace for `session.attach`. Default: `\"did-space-client\"`. */\n namespace?: string;\n /** RPC request timeout (ms). Default: 30000. */\n requestTimeout?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction parseWsUrl(rawUrl: string): { host: string; port: number } {\n let parsed: URL;\n try {\n parsed = new URL(rawUrl);\n } catch {\n throw new Error(`WsTransport: invalid URL: ${rawUrl}`);\n }\n if (!ALLOWED_WS_SCHEMES.has(parsed.protocol)) {\n throw new Error(\n `WsTransport: only ws(s) is supported, got ${parsed.protocol} (URL: ${rawUrl})`,\n );\n }\n const port = parsed.port ? Number(parsed.port) : parsed.protocol === \"wss:\" ? 443 : 80;\n return { host: parsed.hostname, port };\n}\n\nfunction mapWireError(code: string, message: string, path: string): Error {\n switch (code) {\n case \"not_found\":\n return new AFSNotFoundError(path, message);\n case \"conflict\":\n return new AFSConflictError(path, {\n cid: null,\n mtime: null,\n deviceId: null,\n });\n case \"compacted\":\n return new AFSCompactedError(path, \"0\");\n case \"validation\":\n return new AFSValidationError(message);\n default:\n return new Error(`WsTransport ${code}: ${message}`);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Transport\n// ---------------------------------------------------------------------------\n\ninterface SubscriptionState {\n subId: string;\n callback: (event: AFSEvent) => void;\n}\n\nexport class WsTransport implements Transport {\n readonly kind = \"ws\" as const;\n\n private readonly url: string;\n private readonly token: string;\n private readonly namespace: string;\n private readonly requestTimeout: number;\n\n private ws: WebSocketClient | null = null;\n private rpc: RPCHandler;\n private pendingBinary = new PendingBinaryBuffer();\n private subs = new Map<string, SubscriptionState>();\n private connected = false;\n private closed = false;\n\n constructor(options: WsTransportOptions) {\n parseWsUrl(options.url);\n this.url = options.url;\n this.token = options.token;\n this.namespace = options.namespace ?? DEFAULT_NAMESPACE;\n this.requestTimeout = options.requestTimeout ?? DEFAULT_REQUEST_TIMEOUT;\n this.rpc = new RPCHandler({\n startId: 1,\n idIncrement: 2,\n timeout: this.requestTimeout,\n });\n }\n\n // ───── Lifecycle ─────────────────────────────────────────────────────────\n\n async connect(): Promise<void> {\n if (this.closed) throw new Error(\"WsTransport: already closed\");\n if (this.connected) return;\n\n const { host, port } = parseWsUrl(this.url);\n const ws = new WebSocketClient({ host, port, authToken: this.token });\n await ws.connect();\n this.ws = ws;\n this.connected = true;\n\n ws.on(\"frame\", (frame: Frame) => this.handleFrame(frame));\n ws.on(\"close\", () => {\n this.connected = false;\n this.rpc.rejectAll(new Error(\"WsTransport: connection closed\"));\n this.pendingBinary.clear();\n });\n ws.on(\"error\", (err) => {\n this.rpc.rejectAll(err);\n });\n\n // Attach to enter the AFS RPC tier.\n await this.rpc.sendRequest(ws, \"session.attach\", {\n version: PROTOCOL_VERSION,\n namespace: this.namespace,\n });\n }\n\n async close(): Promise<void> {\n if (this.closed) return;\n this.closed = true;\n this.connected = false;\n\n // Cancel local subscriptions; server-side will be cleaned up by close.\n this.subs.clear();\n this.rpc.rejectAll(new Error(\"WsTransport: closed\"));\n this.pendingBinary.clear();\n\n if (this.ws) {\n try {\n await this.ws.close();\n } catch {\n // Ignore — socket may already be down.\n }\n this.ws = null;\n }\n }\n\n // ───── AFS surface ───────────────────────────────────────────────────────\n\n list(path: string, options?: AFSListOptions): Promise<AFSListResult> {\n return this.afs<AFSListResult>(\"list\", path, { options });\n }\n\n read(path: string, options?: AFSReadOptions): Promise<AFSReadResult> {\n return this.afs<AFSReadResult>(\"read\", path, { options });\n }\n\n write(\n path: string,\n payload: AFSWriteEntryPayload,\n options?: AFSWriteOptions,\n ): Promise<AFSWriteResult> {\n return this.afs<AFSWriteResult>(\"write\", path, { payload, options });\n }\n\n delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult> {\n return this.afs<AFSDeleteResult>(\"delete\", path, { options });\n }\n\n stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult> {\n return this.afs<AFSStatResult>(\"stat\", path, { options });\n }\n\n search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult> {\n return this.afs<AFSSearchResult>(\"search\", path, { query, options });\n }\n\n exec(\n path: string,\n args: Record<string, unknown>,\n options?: AFSExecOptions,\n ): Promise<AFSExecResult> {\n return this.afs<AFSExecResult>(\"exec\", path, { args, options });\n }\n\n explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult> {\n return this.afs<AFSExplainResult>(\"explain\", path, { options });\n }\n\n async subscribe(path: string, onEvent: (event: AFSEvent) => void): Promise<Unsubscribe> {\n this.requireConnected();\n const result = (await this.rpc.sendRequest(this.ws!, \"afs.subscribe\", { path })) as {\n subId: string;\n };\n if (!result?.subId) {\n throw new Error(\"WsTransport: subscribe returned no subId\");\n }\n this.subs.set(result.subId, { subId: result.subId, callback: onEvent });\n return async () => {\n if (!this.subs.has(result.subId)) return;\n this.subs.delete(result.subId);\n // Best-effort — if the connection is gone, we already removed the\n // local listener above and the server will clean up on close.\n if (this.connected && this.ws) {\n try {\n await this.rpc.sendRequest(this.ws, \"afs.unsubscribe\", { subId: result.subId });\n } catch {\n /* swallow */\n }\n }\n };\n }\n\n // ───── Internals ─────────────────────────────────────────────────────────\n\n private async afs<T>(op: string, path: string, extra: Record<string, unknown>): Promise<T> {\n this.requireConnected();\n try {\n const result = (await this.rpc.sendRequest(this.ws!, `afs.${op}`, {\n path,\n ...extra,\n })) as T;\n return result ?? (null as unknown as T);\n } catch (err) {\n // RPC errors arrive as `{ code, message }`; translate to the AFS\n // typed errors so callers get one coherent error model.\n if (\n err &&\n typeof err === \"object\" &&\n \"code\" in err &&\n \"message\" in err &&\n typeof (err as { code: unknown }).code === \"string\"\n ) {\n const code = (err as { code: string }).code;\n const message = String((err as { message: unknown }).message);\n throw mapWireError(code, message, path);\n }\n throw err;\n }\n }\n\n private requireConnected(): void {\n if (!this.connected || !this.ws) {\n throw new Error(\"WsTransport: not connected (call connect() first or after close)\");\n }\n }\n\n private handleFrame(frame: Frame): void {\n if (frame.type === FrameType.Binary) {\n this.pendingBinary.set(frame.reqId, frame.payload);\n return;\n }\n if (frame.type !== FrameType.JSON) return;\n\n const binary = this.pendingBinary.take(frame.reqId);\n let msg: ReturnType<typeof deserializeMessage>;\n try {\n msg = deserializeMessage(frame.payload);\n } catch {\n return;\n }\n\n if (msg.type === \"response\") {\n const r = msg as RpcResponse;\n if (binary && r.result !== undefined) {\n r.result = injectBinary(r.result, binary);\n }\n this.rpc.handleResponse(r);\n return;\n }\n\n if (msg.type === \"event\") {\n this.handleEvent(msg as RpcEvent);\n }\n }\n\n private handleEvent(event: RpcEvent): void {\n if (event.event !== \"afs.event\") return;\n const data = (event.data ?? {}) as { subId?: string; event?: AFSEvent };\n if (!data.subId || !data.event) return;\n const sub = this.subs.get(data.subId);\n if (!sub) return;\n try {\n sub.callback(data.event);\n } catch {\n // Swallow — subscribers must not break the transport.\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Re-exports\n// ---------------------------------------------------------------------------\n\nexport type { Transport, Unsubscribe } from \"./types.js\";\n\n// Convenience: a connected transport you can pass straight to DIDSpaceClient.\nexport async function createWsTransport(options: WsTransportOptions): Promise<WsTransport> {\n const t = new WsTransport(options);\n await t.connect();\n return t;\n}\n"],"mappings":"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"}