@fireproof/core 0.20.5-dev-preview-1 → 0.20.5-dev-preview-3

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 (437) hide show
  1. package/apply-head-queue.d.ts +18 -0
  2. package/apply-head-queue.d.ts.map +1 -0
  3. package/apply-head-queue.js +47 -0
  4. package/apply-head-queue.js.map +1 -0
  5. package/blockstore/attachable-store.d.ts +19 -0
  6. package/blockstore/attachable-store.d.ts.map +1 -0
  7. package/blockstore/attachable-store.js +316 -0
  8. package/blockstore/attachable-store.js.map +1 -0
  9. package/blockstore/commit-queue.d.ts +17 -0
  10. package/blockstore/commit-queue.d.ts.map +1 -0
  11. package/blockstore/commit-queue.js +60 -0
  12. package/blockstore/commit-queue.js.map +1 -0
  13. package/blockstore/commitor.d.ts +21 -0
  14. package/blockstore/commitor.d.ts.map +1 -0
  15. package/blockstore/commitor.js +95 -0
  16. package/blockstore/commitor.js.map +1 -0
  17. package/blockstore/connect-raw.d.ts +2 -0
  18. package/blockstore/connect-raw.d.ts.map +1 -0
  19. package/blockstore/connect-raw.js +2 -0
  20. package/blockstore/connect-raw.js.map +1 -0
  21. package/blockstore/connection-base.d.ts +2 -0
  22. package/blockstore/connection-base.d.ts.map +1 -0
  23. package/blockstore/connection-base.js +2 -0
  24. package/blockstore/connection-base.js.map +1 -0
  25. package/blockstore/encrypt-helpers.d.ts +2 -0
  26. package/blockstore/encrypt-helpers.d.ts.map +1 -0
  27. package/blockstore/encrypt-helpers.js +2 -0
  28. package/blockstore/encrypt-helpers.js.map +1 -0
  29. package/blockstore/fp-envelope.d.ts +32 -0
  30. package/blockstore/fp-envelope.d.ts.map +1 -0
  31. package/blockstore/fp-envelope.js +14 -0
  32. package/blockstore/fp-envelope.js.map +1 -0
  33. package/blockstore/gateway.d.ts +20 -0
  34. package/blockstore/gateway.d.ts.map +1 -0
  35. package/blockstore/gateway.js +2 -0
  36. package/blockstore/gateway.js.map +1 -0
  37. package/blockstore/index.d.ts +16 -0
  38. package/blockstore/index.d.ts.map +1 -0
  39. package/blockstore/index.js +16 -0
  40. package/blockstore/index.js.map +1 -0
  41. package/blockstore/interceptor-gateway.d.ts +29 -0
  42. package/blockstore/interceptor-gateway.d.ts.map +1 -0
  43. package/blockstore/interceptor-gateway.js +137 -0
  44. package/blockstore/interceptor-gateway.js.map +1 -0
  45. package/blockstore/loader-helpers.d.ts +10 -0
  46. package/blockstore/loader-helpers.d.ts.map +1 -0
  47. package/blockstore/loader-helpers.js +115 -0
  48. package/blockstore/loader-helpers.js.map +1 -0
  49. package/blockstore/loader.d.ts +61 -0
  50. package/blockstore/loader.d.ts.map +1 -0
  51. package/blockstore/loader.js +494 -0
  52. package/blockstore/loader.js.map +1 -0
  53. package/blockstore/register-store-protocol.d.ts +22 -0
  54. package/blockstore/register-store-protocol.d.ts.map +1 -0
  55. package/blockstore/register-store-protocol.js +114 -0
  56. package/blockstore/register-store-protocol.js.map +1 -0
  57. package/blockstore/serde-gateway.d.ts +78 -0
  58. package/blockstore/serde-gateway.d.ts.map +1 -0
  59. package/blockstore/serde-gateway.js +2 -0
  60. package/blockstore/serde-gateway.js.map +1 -0
  61. package/blockstore/store-factory.d.ts +11 -0
  62. package/blockstore/store-factory.d.ts.map +1 -0
  63. package/blockstore/store-factory.js +104 -0
  64. package/blockstore/store-factory.js.map +1 -0
  65. package/blockstore/store-remote.d.ts +2 -0
  66. package/blockstore/store-remote.d.ts.map +1 -0
  67. package/blockstore/store-remote.js +2 -0
  68. package/blockstore/store-remote.js.map +1 -0
  69. package/blockstore/store.d.ts +86 -0
  70. package/blockstore/store.d.ts.map +1 -0
  71. package/blockstore/store.js +439 -0
  72. package/blockstore/store.js.map +1 -0
  73. package/blockstore/task-manager.d.ts +19 -0
  74. package/blockstore/task-manager.d.ts.map +1 -0
  75. package/blockstore/task-manager.js +50 -0
  76. package/blockstore/task-manager.js.map +1 -0
  77. package/blockstore/transaction.d.ts +62 -0
  78. package/blockstore/transaction.d.ts.map +1 -0
  79. package/blockstore/transaction.js +261 -0
  80. package/blockstore/transaction.js.map +1 -0
  81. package/blockstore/types.d.ts +508 -0
  82. package/blockstore/types.d.ts.map +1 -0
  83. package/blockstore/types.js +83 -0
  84. package/blockstore/types.js.map +1 -0
  85. package/blockstore/uri-interceptor.d.ts +19 -0
  86. package/blockstore/uri-interceptor.d.ts.map +1 -0
  87. package/blockstore/uri-interceptor.js +61 -0
  88. package/blockstore/uri-interceptor.js.map +1 -0
  89. package/bundle-not-impl.d.ts +2 -0
  90. package/bundle-not-impl.d.ts.map +1 -0
  91. package/bundle-not-impl.js +4 -0
  92. package/bundle-not-impl.js.map +1 -0
  93. package/cli/main.js +26616 -0
  94. package/crdt-clock.d.ts +27 -0
  95. package/crdt-clock.d.ts.map +1 -0
  96. package/crdt-clock.js +138 -0
  97. package/crdt-clock.js.map +1 -0
  98. package/crdt-helpers.d.ts +19 -0
  99. package/crdt-helpers.d.ts.map +1 -0
  100. package/crdt-helpers.js +332 -0
  101. package/crdt-helpers.js.map +1 -0
  102. package/crdt.d.ts +41 -0
  103. package/crdt.d.ts.map +1 -0
  104. package/crdt.js +164 -0
  105. package/crdt.js.map +1 -0
  106. package/database.d.ts +34 -0
  107. package/database.d.ts.map +1 -0
  108. package/database.js +124 -0
  109. package/database.js.map +1 -0
  110. package/deno.json +2 -2
  111. package/index.d.ts +15 -2741
  112. package/index.d.ts.map +1 -0
  113. package/index.js +14 -7274
  114. package/index.js.map +1 -1
  115. package/indexer-helpers.d.ts +69 -0
  116. package/indexer-helpers.d.ts.map +1 -0
  117. package/indexer-helpers.js +136 -0
  118. package/indexer-helpers.js.map +1 -0
  119. package/indexer.d.ts +24 -0
  120. package/indexer.d.ts.map +1 -0
  121. package/indexer.js +230 -0
  122. package/indexer.js.map +1 -0
  123. package/ledger.d.ts +55 -0
  124. package/ledger.d.ts.map +1 -0
  125. package/ledger.js +234 -0
  126. package/ledger.js.map +1 -0
  127. package/package.json +26 -17
  128. package/protocols/cloud/http-connection.d.ts +25 -0
  129. package/protocols/cloud/http-connection.d.ts.map +1 -0
  130. package/protocols/cloud/http-connection.js +153 -0
  131. package/protocols/cloud/http-connection.js.map +1 -0
  132. package/protocols/cloud/index.d.ts +10 -0
  133. package/protocols/cloud/index.d.ts.map +1 -0
  134. package/protocols/cloud/index.js +10 -0
  135. package/protocols/cloud/index.js.map +1 -0
  136. package/protocols/cloud/msg-raw-connection-base.d.ts +16 -0
  137. package/protocols/cloud/msg-raw-connection-base.d.ts.map +1 -0
  138. package/protocols/cloud/msg-raw-connection-base.js +22 -0
  139. package/protocols/cloud/msg-raw-connection-base.js.map +1 -0
  140. package/protocols/cloud/msg-types-data.d.ts +36 -0
  141. package/protocols/cloud/msg-types-data.d.ts.map +1 -0
  142. package/protocols/cloud/msg-types-data.js +38 -0
  143. package/protocols/cloud/msg-types-data.js.map +1 -0
  144. package/protocols/cloud/msg-types-meta.d.ts +41 -0
  145. package/protocols/cloud/msg-types-meta.d.ts.map +1 -0
  146. package/protocols/cloud/msg-types-meta.js +98 -0
  147. package/protocols/cloud/msg-types-meta.js.map +1 -0
  148. package/protocols/cloud/msg-types-wal.d.ts +33 -0
  149. package/protocols/cloud/msg-types-wal.d.ts.map +1 -0
  150. package/protocols/cloud/msg-types-wal.js +38 -0
  151. package/protocols/cloud/msg-types-wal.js.map +1 -0
  152. package/protocols/cloud/msg-types.d.ts +282 -0
  153. package/protocols/cloud/msg-types.d.ts.map +1 -0
  154. package/protocols/cloud/msg-types.js +278 -0
  155. package/protocols/cloud/msg-types.js.map +1 -0
  156. package/protocols/cloud/msger.d.ts +79 -0
  157. package/protocols/cloud/msger.d.ts.map +1 -0
  158. package/protocols/cloud/msger.js +198 -0
  159. package/protocols/cloud/msger.js.map +1 -0
  160. package/protocols/cloud/ws-connection.d.ts +29 -0
  161. package/protocols/cloud/ws-connection.d.ts.map +1 -0
  162. package/protocols/cloud/ws-connection.js +166 -0
  163. package/protocols/cloud/ws-connection.js.map +1 -0
  164. package/protocols/index.d.ts +2 -0
  165. package/protocols/index.d.ts.map +1 -0
  166. package/protocols/index.js +2 -0
  167. package/protocols/index.js.map +1 -0
  168. package/react/create-attach.d.ts +6 -0
  169. package/react/create-attach.d.ts.map +1 -0
  170. package/react/create-attach.js +75 -0
  171. package/react/create-attach.js.map +1 -0
  172. package/react/{index.d.cts → img-file.d.ts} +6 -53
  173. package/react/img-file.d.ts.map +1 -0
  174. package/react/img-file.js +57 -0
  175. package/react/img-file.js.map +1 -0
  176. package/react/index.d.ts +5 -336
  177. package/react/index.d.ts.map +1 -0
  178. package/react/index.js +4 -358
  179. package/react/index.js.map +1 -1
  180. package/react/types.d.ts +71 -0
  181. package/react/types.d.ts.map +1 -0
  182. package/react/types.js +2 -0
  183. package/react/types.js.map +1 -0
  184. package/react/use-all-docs.d.ts +4 -0
  185. package/react/use-all-docs.d.ts.map +1 -0
  186. package/react/use-all-docs.js +25 -0
  187. package/react/use-all-docs.js.map +1 -0
  188. package/react/use-attach.d.ts +6 -0
  189. package/react/use-attach.d.ts.map +1 -0
  190. package/react/use-attach.js +75 -0
  191. package/react/use-attach.js.map +1 -0
  192. package/react/use-changes.d.ts +4 -0
  193. package/react/use-changes.d.ts.map +1 -0
  194. package/react/use-changes.js +19 -0
  195. package/react/use-changes.js.map +1 -0
  196. package/react/use-document.d.ts +4 -0
  197. package/react/use-document.d.ts.map +1 -0
  198. package/react/use-document.js +109 -0
  199. package/react/use-document.js.map +1 -0
  200. package/react/use-fireproof.d.ts +6 -0
  201. package/react/use-fireproof.d.ts.map +1 -0
  202. package/react/use-fireproof.js +20 -0
  203. package/react/use-fireproof.js.map +1 -0
  204. package/react/use-live-query.d.ts +4 -0
  205. package/react/use-live-query.d.ts.map +1 -0
  206. package/react/use-live-query.js +27 -0
  207. package/react/use-live-query.js.map +1 -0
  208. package/runtime/files.d.ts +12 -0
  209. package/runtime/files.d.ts.map +1 -0
  210. package/runtime/files.js +29 -0
  211. package/runtime/files.js.map +1 -0
  212. package/runtime/gateways/cloud/gateway.d.ts +42 -0
  213. package/runtime/gateways/cloud/gateway.d.ts.map +1 -0
  214. package/runtime/gateways/cloud/gateway.js +528 -0
  215. package/runtime/gateways/cloud/gateway.js.map +1 -0
  216. package/runtime/gateways/cloud/index.d.ts +3 -0
  217. package/runtime/gateways/cloud/index.d.ts.map +1 -0
  218. package/runtime/gateways/cloud/index.js +3 -0
  219. package/runtime/gateways/cloud/index.js.map +1 -0
  220. package/runtime/gateways/cloud/to-cloud.d.ts +46 -0
  221. package/runtime/gateways/cloud/to-cloud.d.ts.map +1 -0
  222. package/runtime/gateways/cloud/to-cloud.js +159 -0
  223. package/runtime/gateways/cloud/to-cloud.js.map +1 -0
  224. package/runtime/gateways/def-serde-gateway.d.ts +18 -0
  225. package/runtime/gateways/def-serde-gateway.d.ts.map +1 -0
  226. package/runtime/gateways/def-serde-gateway.js +89 -0
  227. package/runtime/gateways/def-serde-gateway.js.map +1 -0
  228. package/runtime/gateways/file/deno/deno-filesystem.d.ts +27 -0
  229. package/runtime/gateways/file/deno/deno-filesystem.d.ts.map +1 -0
  230. package/runtime/gateways/file/deno/deno-filesystem.js +52 -0
  231. package/runtime/gateways/file/deno/deno-filesystem.js.map +1 -0
  232. package/runtime/gateways/file/deno/get-sys-file-system.d.ts +4 -0
  233. package/runtime/gateways/file/deno/get-sys-file-system.d.ts.map +1 -0
  234. package/runtime/gateways/file/deno/get-sys-file-system.js +11 -0
  235. package/runtime/gateways/file/deno/get-sys-file-system.js.map +1 -0
  236. package/runtime/gateways/file/deno/index.d.ts +2 -0
  237. package/runtime/gateways/file/deno/index.d.ts.map +1 -0
  238. package/runtime/gateways/file/deno/index.js +2 -0
  239. package/runtime/gateways/file/deno/index.js.map +1 -0
  240. package/runtime/gateways/file/gateway-impl.d.ts +18 -0
  241. package/runtime/gateways/file/gateway-impl.d.ts.map +1 -0
  242. package/runtime/gateways/file/gateway-impl.js +121 -0
  243. package/runtime/gateways/file/gateway-impl.js.map +1 -0
  244. package/runtime/gateways/file/index.d.ts +3 -0
  245. package/runtime/gateways/file/index.d.ts.map +1 -0
  246. package/runtime/gateways/file/index.js +3 -0
  247. package/runtime/gateways/file/index.js.map +1 -0
  248. package/runtime/gateways/file/key-bag-file.d.ts +19 -0
  249. package/runtime/gateways/file/key-bag-file.d.ts.map +1 -0
  250. package/runtime/gateways/file/key-bag-file.js +40 -0
  251. package/runtime/gateways/file/key-bag-file.js.map +1 -0
  252. package/runtime/gateways/file/node/get-sys-file-system.d.ts +4 -0
  253. package/runtime/gateways/file/node/get-sys-file-system.d.ts.map +1 -0
  254. package/runtime/gateways/file/node/get-sys-file-system.js +11 -0
  255. package/runtime/gateways/file/node/get-sys-file-system.js.map +1 -0
  256. package/runtime/gateways/file/node/index.d.ts +2 -0
  257. package/runtime/gateways/file/node/index.d.ts.map +1 -0
  258. package/runtime/gateways/file/node/index.js +2 -0
  259. package/runtime/gateways/file/node/index.js.map +1 -0
  260. package/runtime/gateways/file/node/node-filesystem.d.ts +32 -0
  261. package/runtime/gateways/file/node/node-filesystem.d.ts.map +1 -0
  262. package/runtime/gateways/file/node/node-filesystem.js +33 -0
  263. package/runtime/gateways/file/node/node-filesystem.js.map +1 -0
  264. package/runtime/gateways/file/node/to-array-buffer.d.ts +2 -0
  265. package/runtime/gateways/file/node/to-array-buffer.d.ts.map +1 -0
  266. package/runtime/gateways/file/node/to-array-buffer.js +12 -0
  267. package/runtime/gateways/file/node/to-array-buffer.js.map +1 -0
  268. package/runtime/gateways/file/sys-file-system-factory.d.ts +4 -0
  269. package/runtime/gateways/file/sys-file-system-factory.d.ts.map +1 -0
  270. package/runtime/gateways/file/sys-file-system-factory.js +13 -0
  271. package/runtime/gateways/file/sys-file-system-factory.js.map +1 -0
  272. package/runtime/gateways/file/utils.d.ts +5 -0
  273. package/runtime/gateways/file/utils.d.ts.map +1 -0
  274. package/runtime/gateways/file/utils.js +27 -0
  275. package/runtime/gateways/file/utils.js.map +1 -0
  276. package/runtime/gateways/file/version.d.ts +2 -0
  277. package/runtime/gateways/file/version.d.ts.map +1 -0
  278. package/runtime/gateways/file/version.js +2 -0
  279. package/runtime/gateways/file/version.js.map +1 -0
  280. package/runtime/gateways/fp-envelope-serialize.d.ts +50 -0
  281. package/runtime/gateways/fp-envelope-serialize.d.ts.map +1 -0
  282. package/runtime/gateways/fp-envelope-serialize.js +141 -0
  283. package/runtime/gateways/fp-envelope-serialize.js.map +1 -0
  284. package/runtime/gateways/index.d.ts +6 -0
  285. package/runtime/gateways/index.d.ts.map +1 -0
  286. package/runtime/gateways/index.js +6 -0
  287. package/runtime/gateways/index.js.map +1 -0
  288. package/runtime/gateways/indexeddb/gateway-impl.d.ts +22 -0
  289. package/runtime/gateways/indexeddb/gateway-impl.d.ts.map +1 -0
  290. package/runtime/gateways/indexeddb/gateway-impl.js +147 -0
  291. package/runtime/gateways/indexeddb/gateway-impl.js.map +1 -0
  292. package/runtime/gateways/indexeddb/index.d.ts +6 -0
  293. package/runtime/gateways/indexeddb/index.d.ts.map +1 -0
  294. package/runtime/gateways/indexeddb/index.js +6 -0
  295. package/runtime/gateways/indexeddb/index.js.map +1 -0
  296. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts +15 -0
  297. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts.map +1 -0
  298. package/runtime/gateways/indexeddb/key-bag-indexeddb.js +42 -0
  299. package/runtime/gateways/indexeddb/key-bag-indexeddb.js.map +1 -0
  300. package/runtime/gateways/indexeddb-version.d.ts +2 -0
  301. package/runtime/gateways/indexeddb-version.d.ts.map +1 -0
  302. package/runtime/gateways/indexeddb-version.js +2 -0
  303. package/runtime/gateways/indexeddb-version.js.map +1 -0
  304. package/runtime/gateways/memory/gateway.d.ts +18 -0
  305. package/runtime/gateways/memory/gateway.d.ts.map +1 -0
  306. package/runtime/gateways/memory/gateway.js +73 -0
  307. package/runtime/gateways/memory/gateway.js.map +1 -0
  308. package/runtime/gateways/memory/version.d.ts +2 -0
  309. package/runtime/gateways/memory/version.d.ts.map +1 -0
  310. package/runtime/gateways/memory/version.js +2 -0
  311. package/runtime/gateways/memory/version.js.map +1 -0
  312. package/runtime/index.d.ts +13 -0
  313. package/runtime/index.d.ts.map +1 -0
  314. package/runtime/index.js +13 -0
  315. package/runtime/index.js.map +1 -0
  316. package/runtime/key-bag-memory.d.ts +12 -0
  317. package/runtime/key-bag-memory.d.ts.map +1 -0
  318. package/runtime/key-bag-memory.js +23 -0
  319. package/runtime/key-bag-memory.js.map +1 -0
  320. package/runtime/key-bag.d.ts +85 -0
  321. package/runtime/key-bag.d.ts.map +1 -0
  322. package/runtime/key-bag.js +411 -0
  323. package/runtime/key-bag.js.map +1 -0
  324. package/runtime/keyed-crypto.d.ts +19 -0
  325. package/runtime/keyed-crypto.d.ts.map +1 -0
  326. package/runtime/keyed-crypto.js +192 -0
  327. package/runtime/keyed-crypto.js.map +1 -0
  328. package/runtime/memory-sys-container.d.ts +2 -0
  329. package/runtime/memory-sys-container.d.ts.map +1 -0
  330. package/runtime/memory-sys-container.js +2 -0
  331. package/runtime/memory-sys-container.js.map +1 -0
  332. package/runtime/meta-key-hack.d.ts +42 -0
  333. package/runtime/meta-key-hack.d.ts.map +1 -0
  334. package/runtime/meta-key-hack.js +201 -0
  335. package/runtime/meta-key-hack.js.map +1 -0
  336. package/runtime/sts-service/index.d.ts +40 -0
  337. package/runtime/sts-service/index.d.ts.map +1 -0
  338. package/runtime/sts-service/index.js +102 -0
  339. package/runtime/sts-service/index.js.map +1 -0
  340. package/runtime/sys-container.d.ts +2 -0
  341. package/runtime/sys-container.d.ts.map +1 -0
  342. package/runtime/sys-container.js +2 -0
  343. package/runtime/sys-container.js.map +1 -0
  344. package/runtime/wait-pr-multiformats/block.d.ts +47 -0
  345. package/runtime/wait-pr-multiformats/block.d.ts.map +1 -0
  346. package/runtime/wait-pr-multiformats/block.js +64 -0
  347. package/runtime/wait-pr-multiformats/block.js.map +1 -0
  348. package/runtime/wait-pr-multiformats/codec-interface.d.ts +29 -0
  349. package/runtime/wait-pr-multiformats/codec-interface.d.ts.map +1 -0
  350. package/runtime/wait-pr-multiformats/codec-interface.js +2 -0
  351. package/runtime/wait-pr-multiformats/codec-interface.js.map +1 -0
  352. package/runtime/wait-pr-multiformats/index.d.ts +3 -0
  353. package/runtime/wait-pr-multiformats/index.d.ts.map +1 -0
  354. package/runtime/wait-pr-multiformats/index.js +3 -0
  355. package/runtime/wait-pr-multiformats/index.js.map +1 -0
  356. package/tests/blockstore/interceptor-gateway.test.ts +10 -9
  357. package/tests/blockstore/keyed-crypto.test.ts +2 -2
  358. package/tests/blockstore/loader.test.ts +68 -51
  359. package/tests/blockstore/standalone.test.ts +152 -0
  360. package/tests/blockstore/store.test.ts +16 -9
  361. package/tests/blockstore/transaction.test.ts +19 -16
  362. package/tests/fireproof/all-gateway.test.ts +12 -27
  363. package/tests/fireproof/attachable.test.ts +426 -97
  364. package/tests/fireproof/crdt.test.ts +23 -0
  365. package/tests/fireproof/database.test.ts +13 -12
  366. package/tests/fireproof/fireproof.test.ts +2 -5
  367. package/tests/fireproof/indexer.test.ts +4 -0
  368. package/tests/helpers.ts +30 -14
  369. package/tests/react/img-file.test.tsx +0 -9
  370. package/tests/react/use-fireproof-stability.test.tsx +5 -5
  371. package/tests/react/use-fireproof.test.tsx +18 -13
  372. package/tests/runtime/meta-key-hack.test.ts +7 -6
  373. package/tests/setup.indexeddb.ts +0 -9
  374. package/types.d.ts +460 -0
  375. package/types.d.ts.map +1 -0
  376. package/types.js +60 -0
  377. package/types.js.map +1 -0
  378. package/use-fireproof/iframe-strategy.d.ts +13 -0
  379. package/use-fireproof/iframe-strategy.d.ts.map +1 -0
  380. package/use-fireproof/iframe-strategy.js +83 -0
  381. package/use-fireproof/iframe-strategy.js.map +1 -0
  382. package/use-fireproof/index.d.ts +10 -0
  383. package/use-fireproof/index.d.ts.map +1 -0
  384. package/use-fireproof/index.js +16 -0
  385. package/use-fireproof/index.js.map +1 -0
  386. package/use-fireproof/redirect-strategy.d.ts +8 -0
  387. package/use-fireproof/redirect-strategy.d.ts.map +1 -0
  388. package/use-fireproof/redirect-strategy.js +31 -0
  389. package/use-fireproof/redirect-strategy.js.map +1 -0
  390. package/utils.d.ts +45 -0
  391. package/utils.d.ts.map +1 -0
  392. package/utils.js +406 -0
  393. package/utils.js.map +1 -0
  394. package/version.d.ts +2 -0
  395. package/version.d.ts.map +1 -0
  396. package/version.js +4 -0
  397. package/version.js.map +1 -0
  398. package/write-queue.d.ts +9 -0
  399. package/write-queue.d.ts.map +1 -0
  400. package/write-queue.js +70 -0
  401. package/write-queue.js.map +1 -0
  402. package/deno/index.d.ts +0 -7
  403. package/deno/index.js +0 -67
  404. package/deno/index.js.map +0 -1
  405. package/deno/metafile-esm.json +0 -1
  406. package/index.cjs +0 -7275
  407. package/index.cjs.map +0 -1
  408. package/index.d.cts +0 -2741
  409. package/indexeddb/index.cjs +0 -218
  410. package/indexeddb/index.cjs.map +0 -1
  411. package/indexeddb/index.d.cts +0 -30
  412. package/indexeddb/index.d.ts +0 -30
  413. package/indexeddb/index.js +0 -195
  414. package/indexeddb/index.js.map +0 -1
  415. package/indexeddb/metafile-cjs.json +0 -1
  416. package/indexeddb/metafile-esm.json +0 -1
  417. package/metafile-cjs.json +0 -1
  418. package/metafile-esm.json +0 -1
  419. package/node/index.cjs +0 -93
  420. package/node/index.cjs.map +0 -1
  421. package/node/index.d.cts +0 -7
  422. package/node/index.d.ts +0 -7
  423. package/node/index.js +0 -60
  424. package/node/index.js.map +0 -1
  425. package/node/metafile-cjs.json +0 -1
  426. package/node/metafile-esm.json +0 -1
  427. package/react/index.cjs +0 -392
  428. package/react/index.cjs.map +0 -1
  429. package/react/metafile-cjs.json +0 -1
  430. package/react/metafile-esm.json +0 -1
  431. package/tests/www/gallery.html +0 -132
  432. package/tests/www/iife.html +0 -42
  433. package/tests/www/todo-aws.html +0 -232
  434. package/tests/www/todo-ipfs.html +0 -213
  435. package/tests/www/todo-local.html +0 -214
  436. package/tests/www/todo-netlify.html +0 -227
  437. package/tests/www/todo.html +0 -254
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/runtime/wait-pr-multiformats/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC"}
@@ -87,14 +87,19 @@ export class URITrackGateway implements bs.Gateway {
87
87
  return this.memgw.destroy(baseUrl);
88
88
  }
89
89
 
90
- put(url: URI, bytes: Uint8Array): Promise<bs.VoidResult> {
90
+ put(url: URI, bytes: Uint8Array, sthis: SuperThis): Promise<bs.VoidResult> {
91
+ // console.log("put", url.getParam(PARAM.KEY), url.toString());
91
92
  this.uriAdd(url);
92
- return this.memgw.put(url, bytes);
93
+ return this.memgw.put(url.build().cleanParams("itis").URI(), bytes, sthis);
93
94
  }
94
95
 
95
- get(url: URI): Promise<bs.GetResult> {
96
+ async get(url: URI, sthis: SuperThis): Promise<bs.GetResult> {
96
97
  this.uriAdd(url);
97
- return this.memgw.get(url);
98
+ const ret = await this.memgw.get(url.build().cleanParams("itis").URI(), sthis);
99
+ // if (ret.isErr()) {
100
+ // console.log("get-err", url.getParam(PARAM.KEY), url.toString());
101
+ // }
102
+ return ret;
98
103
  }
99
104
  delete(url: URI): Promise<bs.VoidResult> {
100
105
  this.uriAdd(url);
@@ -136,7 +141,7 @@ describe("InterceptorGateway", () => {
136
141
  await db.close();
137
142
  await db.destroy();
138
143
  // await sleep(1000);
139
- expect(gwi.fn.mock.calls.length).toBe(58);
144
+ expect(gwi.fn.mock.calls.length).toBe(54);
140
145
  // might be a stupid test
141
146
  expect(gwi.fn.mock.calls.map((i) => i[0]).sort() /* not ok there are some operation */).toEqual(
142
147
  [
@@ -178,10 +183,6 @@ describe("InterceptorGateway", () => {
178
183
  "close",
179
184
  "close",
180
185
  "close",
181
- "close",
182
- "close",
183
- "close",
184
- "close",
185
186
  "buildUrl",
186
187
  "get",
187
188
  "close",
@@ -1,5 +1,5 @@
1
1
  import { bs, ensureSuperThis, PARAM, rt, StoreType, storeType2DataMetaWal } from "@fireproof/core";
2
- import { BuildURI, runtimeFn, toCryptoRuntime, URI } from "@adviser/cement";
2
+ import { BuildURI, LogCollector, runtimeFn, toCryptoRuntime, URI } from "@adviser/cement";
3
3
  import { base58btc } from "multiformats/bases/base58";
4
4
  // import { sha256 as hasher } from "multiformats/hashes/sha2";
5
5
  // import * as dagCodec from "@ipld/dag-cbor";
@@ -64,7 +64,7 @@ describe("KeyBag", () => {
64
64
  });
65
65
  sthis.env.set("FP_KEYBAG_URL", old);
66
66
  await sthis.logger.Flush();
67
- expect(sthis.ctx.logCollector.Logs()).toEqual([
67
+ expect(sthis.ctx.get<LogCollector>("logCollector")?.Logs()).toEqual([
68
68
  {
69
69
  level: "warn",
70
70
  module: "KeyBag",
@@ -1,13 +1,13 @@
1
1
  import * as codec from "@ipld/dag-cbor";
2
2
  import { sha256 as hasher } from "multiformats/hashes/sha2";
3
- import { BlockView } from "multiformats";
4
3
  import { CID } from "multiformats/cid";
5
- import { MemoryBlockstore } from "@web3-storage/pail/block";
6
4
  import { CRDTMeta, CarTransaction, IndexTransactionMeta, SuperThis, bs, ensureSuperThis, rt } from "@fireproof/core";
7
5
  import { simpleBlockOpts } from "../helpers.js";
6
+ import { FPBlock, isCarBlockItemReady, isCarBlockItemStale } from "../../src/blockstore/index.js";
7
+ import { anyBlock2FPBlock } from "../../src/blockstore/loader-helpers.js";
8
8
 
9
9
  class MyMemoryBlockStore extends bs.EncryptedBlockstore {
10
- readonly memblock = new MemoryBlockstore();
10
+ readonly memblock = new Map<string, FPBlock>();
11
11
  loader: bs.Loader;
12
12
  constructor(sthis: SuperThis) {
13
13
  const ebOpts = simpleBlockOpts(sthis, "MyMemoryBlockStore"); //, "MyMemoryBlockStore");
@@ -27,8 +27,8 @@ class MyMemoryBlockStore extends bs.EncryptedBlockstore {
27
27
  // readonly lastTxMeta?: TransactionMeta;
28
28
  readonly compacting: boolean = false;
29
29
 
30
- override async put(cid: bs.AnyAnyLink, block: Uint8Array): Promise<void> {
31
- return this.memblock.put(cid, block);
30
+ override async put(fp: FPBlock): Promise<void> {
31
+ this.memblock.set(fp.cid.toString(), fp);
32
32
  }
33
33
 
34
34
  // transaction<M ext(fn: (t: CarTransaction) => Promise<MetaType>, opts?: { noLoader: boolean }): Promise<MetaType> {
@@ -50,7 +50,7 @@ class MyMemoryBlockStore extends bs.EncryptedBlockstore {
50
50
 
51
51
  describe("basic Loader simple", function () {
52
52
  let loader: bs.Loader;
53
- let block: BlockView;
53
+ let block: FPBlock;
54
54
  let t: CarTransaction;
55
55
  const sthis = ensureSuperThis();
56
56
 
@@ -69,13 +69,15 @@ describe("basic Loader simple", function () {
69
69
  public: true,
70
70
  });
71
71
  await loader.ready();
72
- block = await rt.mf.block.encode({
73
- value: { hello: "world" },
74
- hasher,
75
- codec,
76
- });
77
- await t.put(block.cid, block.bytes);
78
- await mockM.put(block.cid, block.bytes);
72
+ block = await anyBlock2FPBlock(
73
+ await rt.mf.block.encode({
74
+ value: { hello: "world" },
75
+ hasher,
76
+ codec,
77
+ }),
78
+ );
79
+ await t.put(block);
80
+ await mockM.put(block);
79
81
  });
80
82
  it("should have an empty car log", function () {
81
83
  expect(loader.carLog.length).toBe(0);
@@ -84,6 +86,7 @@ describe("basic Loader simple", function () {
84
86
  const carGroup = await loader.commit(t, { head: [block.cid] });
85
87
  expect(loader.carLog.length).toBe(1);
86
88
  const reader = await loader.loadCar(carGroup[0], loader.attachedStores.local());
89
+ assert(isCarBlockItemReady(reader));
87
90
  expect(reader).toBeTruthy();
88
91
  const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
89
92
  expect(parsed.cars).toBeTruthy();
@@ -95,10 +98,10 @@ describe("basic Loader simple", function () {
95
98
 
96
99
  describe("basic Loader with two commits", function () {
97
100
  let loader: bs.Loader;
98
- let block: BlockView;
99
- let block2: BlockView;
100
- let block3: BlockView;
101
- let block4: BlockView;
101
+ let block: FPBlock;
102
+ let block2: FPBlock;
103
+ let block3: FPBlock;
104
+ let block4: FPBlock;
102
105
  let t: CarTransaction;
103
106
  let carCid: bs.CarGroup;
104
107
  let carCid0: bs.CarGroup;
@@ -120,36 +123,44 @@ describe("basic Loader with two commits", function () {
120
123
  });
121
124
  await loader.ready();
122
125
 
123
- block = await rt.mf.block.encode({
124
- value: { hello: "world" },
125
- hasher,
126
- codec,
127
- });
128
- await t.put(block.cid, block.bytes);
126
+ block = await anyBlock2FPBlock(
127
+ await rt.mf.block.encode({
128
+ value: { hello: "world" },
129
+ hasher,
130
+ codec,
131
+ }),
132
+ );
133
+ await t.put(block);
129
134
  carCid0 = await loader.commit(t, { head: [block.cid] });
130
135
 
131
- block2 = await rt.mf.block.encode({
132
- value: { hello: "universe" },
133
- hasher,
134
- codec,
135
- });
136
- await t.put(block2.cid, block2.bytes);
136
+ block2 = await anyBlock2FPBlock(
137
+ await rt.mf.block.encode({
138
+ value: { hello: "universe" },
139
+ hasher,
140
+ codec,
141
+ }),
142
+ );
143
+ await t.put(block2);
137
144
  carCid = await loader.commit(t, { head: [block2.cid] });
138
145
 
139
- block3 = await rt.mf.block.encode({
140
- value: { hello: "multiverse" },
141
- hasher,
142
- codec,
143
- });
144
- await t.put(block3.cid, block3.bytes);
146
+ block3 = await anyBlock2FPBlock(
147
+ await rt.mf.block.encode({
148
+ value: { hello: "multiverse" },
149
+ hasher,
150
+ codec,
151
+ }),
152
+ );
153
+ await t.put(block3);
145
154
 
146
- block4 = await rt.mf.block.encode({
147
- value: { hello: "megaverse" },
148
- hasher,
149
- codec,
150
- });
155
+ block4 = await anyBlock2FPBlock(
156
+ await rt.mf.block.encode({
157
+ value: { hello: "megaverse" },
158
+ hasher,
159
+ codec,
160
+ }),
161
+ );
151
162
 
152
- await t.put(block4.cid, block4.bytes);
163
+ await t.put(block4);
153
164
  });
154
165
 
155
166
  it("should have a car log", function () {
@@ -161,6 +172,7 @@ describe("basic Loader with two commits", function () {
161
172
  it("should commit", async () => {
162
173
  const reader = await loader.loadCar(carCid[0], loader.attachedStores.local());
163
174
  expect(reader).toBeTruthy();
175
+ assert(isCarBlockItemReady(reader));
164
176
  const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
165
177
  expect(parsed.cars).toBeTruthy();
166
178
  expect(parsed.compact.length).toBe(0);
@@ -175,6 +187,7 @@ describe("basic Loader with two commits", function () {
175
187
 
176
188
  const reader = await loader.loadCar(compactCid[0], loader.attachedStores.local());
177
189
  expect(reader).toBeTruthy();
190
+ assert(isCarBlockItemReady(reader));
178
191
  const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
179
192
  expect(parsed.cars).toBeTruthy();
180
193
  expect(parsed.compact.length).toBe(2);
@@ -197,15 +210,16 @@ describe("basic Loader with two commits", function () {
197
210
  await loader.commit(t, { head: [block4.cid] }, { compact: false });
198
211
  expect(loader.carLog.length).toBe(2);
199
212
 
200
- const e = await loader.loadCar(carCid[0], loader.attachedStores.local()).catch((e) => e);
213
+ const e = await loader.loadCar(carCid[0], loader.attachedStores.local());
201
214
  expect(e).toBeTruthy();
202
- expect(e instanceof Error).toBeTruthy();
203
- expect(e.message).toMatch(/(missing car file)|(not found)/);
215
+ assert(isCarBlockItemStale(e));
216
+ expect(e.item.status).toBe("stale");
217
+ expect(e.item.statusCause.message).toMatch(/(missing car file)|(not found)/);
204
218
  }, 10000);
205
219
  });
206
220
 
207
221
  describe("basic Loader with index commits", function () {
208
- let block: BlockView;
222
+ let block: FPBlock;
209
223
  let ib: bs.EncryptedBlockstore;
210
224
  let indexerResult: IndexTransactionMeta;
211
225
  let cid: CID;
@@ -223,11 +237,13 @@ describe("basic Loader with index commits", function () {
223
237
  // t = new CarTransaction()
224
238
  ib = new bs.EncryptedBlockstore(sthis, simpleBlockOpts(sthis, name));
225
239
  await ib.ready();
226
- block = await rt.mf.block.encode({
227
- value: { hello: "world" },
228
- hasher,
229
- codec,
230
- });
240
+ block = await anyBlock2FPBlock(
241
+ await rt.mf.block.encode({
242
+ value: { hello: "world" },
243
+ hasher,
244
+ codec,
245
+ }),
246
+ );
231
247
  // console.log('block', block.cid)
232
248
 
233
249
  cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
@@ -253,7 +269,7 @@ describe("basic Loader with index commits", function () {
253
269
  it("should commit the index metadata", async () => {
254
270
  const { cars: carCid } = await ib.transaction<IndexTransactionMeta>(
255
271
  async (t) => {
256
- await t.put(block.cid, block.bytes);
272
+ await t.put(block);
257
273
  return indexerResult;
258
274
  } /* , indexMap */,
259
275
  );
@@ -266,6 +282,7 @@ describe("basic Loader with index commits", function () {
266
282
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
267
283
  const reader = await ib.loader.loadCar(carCid![0], ib.loader.attachedStores.local());
268
284
  expect(reader).toBeTruthy();
285
+ assert(isCarBlockItemReady(reader));
269
286
  const parsed = await bs.parseCarFile<IndexTransactionMeta>(reader, sthis.logger);
270
287
  expect(parsed.cars).toBeTruthy();
271
288
  expect(parsed.cars.length).toBe(0);
@@ -0,0 +1,152 @@
1
+ import { BuildURI, runtimeFn, URI } from "@adviser/cement";
2
+ import { ensureSuperThis, PARAM, CRDTImpl, CRDT, LedgerOpts, fireproof, bs, sleep } from "@fireproof/core";
3
+ import { Link } from "multiformats";
4
+ import { stripper } from "@adviser/cement/utils";
5
+ import pLimit from "p-limit";
6
+
7
+ describe("standalone", () => {
8
+ const sthis = ensureSuperThis();
9
+
10
+ describe("howto-loader", () => {
11
+ // beforeAll(async () => {
12
+ // const db = fireproof("howto-loader", {
13
+ // storeUrls: {
14
+ // base: "file://dist/how-to-loader?store-key=insecure",
15
+ // },
16
+ // });
17
+ // for (let cid = 0; cid < 1; cid++) {
18
+ // const blk = new Array(3)
19
+ // .fill(0)
20
+ // .map((_, peer) => ({ _id: `test-${cid}:peer-${peer}`, value: { cid: `test-${cid}`, peer: `peer-${peer}` } }));
21
+ // await db.bulk(blk);
22
+ // }
23
+ // // await db.compact()
24
+ // await db.close();
25
+ // });
26
+
27
+ it("understand the writer", async () => {
28
+ const db = fireproof("howto-writer", {
29
+ storeUrls: {
30
+ base: "memory://how-to-writer",
31
+ },
32
+ });
33
+ await db.put({ _id: "test-1", value: { cid: "test-1", peer: "peer-1" } });
34
+ await db.close();
35
+ });
36
+
37
+ it.skip("understand loader", async () => {
38
+ const db = fireproof("howto-loader", {
39
+ storeUrls: {
40
+ base: "file://dist/how-to-loader?store-key=insecure",
41
+ },
42
+ });
43
+ const fn = vi.fn();
44
+ const loader = db.ledger.crdt.blockstore.loader as bs.Loader;
45
+ loader.cidCache.onSet(fn);
46
+ expect(fn).toHaveBeenCalledTimes(0);
47
+ await db.ready();
48
+ expect(
49
+ loader.cidCache.values().map((i) => {
50
+ const v = i.value.Ok();
51
+ return {
52
+ type: v.item.type,
53
+ cid: v.cid,
54
+ value: stripper(/(type|cid)/, v.item),
55
+ };
56
+ }),
57
+ ).toEqual([]);
58
+ // let last = 0
59
+ // for (let i = 0; i < 100; i++) {
60
+ // if (last !== fn.mock.calls.length) {
61
+ // console.log("fn", i, fn.mock.calls.length);
62
+ // last = fn.mock.calls.length
63
+ // }
64
+ // await sleep(10);
65
+ // }
66
+ const ret = await db.allDocs();
67
+ expect(ret.rows.length).toBe(100);
68
+ expect(fn).toHaveBeenCalledTimes(109393);
69
+ await db.close();
70
+ });
71
+ });
72
+
73
+ describe("test-plimit", () => {
74
+ it("should work with plimit", async () => {
75
+ const limiter = pLimit(2);
76
+ let concurrent = 0;
77
+ const ret = await Promise.all(
78
+ Array(10)
79
+ .fill(0)
80
+ .map((_, i) => {
81
+ return limiter(async () => {
82
+ concurrent++;
83
+ expect(concurrent).toBeLessThanOrEqual(2);
84
+ await sleep(100);
85
+ concurrent--;
86
+ return i;
87
+ });
88
+ }),
89
+ );
90
+ expect(ret).toEqual(Array.from(Array(10).keys()));
91
+ });
92
+ });
93
+
94
+ describe.skip("crdt-stack", () => {
95
+ let crdt: CRDT;
96
+ beforeEach(async () => {
97
+ let uri: URI;
98
+ switch (true) {
99
+ case runtimeFn().isBrowser:
100
+ uri = BuildURI.from("indexeddb://standalone-peer-log").setParam(PARAM.NAME, "peer-log").URI();
101
+ break;
102
+ default:
103
+ uri = BuildURI.from("file://dist/standalone")
104
+ .setParam(PARAM.NAME, "peer-log")
105
+ .setParam(PARAM.STORE_KEY, "insecure")
106
+ .URI();
107
+ break;
108
+ }
109
+ // console.log("uri", uri.toString());
110
+ crdt = new CRDTImpl(sthis, {
111
+ name: "peer-log",
112
+ writeQueue: { chunkSize: 32 },
113
+ storeUrls: {
114
+ data: {
115
+ meta: uri.build().setParam(PARAM.STORE, "meta").setParam(PARAM.STORE_KEY, "insecure").URI(),
116
+ car: uri.build().setParam(PARAM.STORE, "car").setParam(PARAM.STORE_KEY, "insecure").URI(),
117
+ file: uri.build().setParam(PARAM.STORE, "file").setParam(PARAM.STORE_KEY, "insecure").URI(),
118
+ wal: uri.build().setParam(PARAM.STORE, "wal").setParam(PARAM.STORE_KEY, "insecure").URI(),
119
+ },
120
+ },
121
+ } as LedgerOpts);
122
+ await crdt.ready();
123
+ });
124
+ afterEach(async () => {
125
+ await crdt.close();
126
+ });
127
+
128
+ it.each(new Array(10).fill(0).map((_, i) => ({ cid: i })))("write:$cid", async ({ cid }) => {
129
+ const peers = new Array(10).fill(0).map((_, peer) => {
130
+ return { id: `test-${cid}:peer-${peer}`, value: { cid: `test-${cid}`, peer: `peer-${peer}` } };
131
+ });
132
+ await crdt.bulk(peers);
133
+ });
134
+ it("read", async () => {
135
+ for (let cid = 0; cid < 10; cid++) {
136
+ for (let peer = 0; peer < 10; peer++) {
137
+ const id = `test-${cid}:peer-${peer}`;
138
+ const res = (await crdt.get(id)) as unknown as { cid: Link; doc: { cid: string; peer: string } };
139
+ expect(res.doc).toEqual({ cid: `test-${cid}`, peer: `peer-${peer}` });
140
+ }
141
+ }
142
+ });
143
+ // for (let cid = 0; cid < 10; cid++) {
144
+ // const gte = `test-${cid}`;
145
+ // const ret = [];
146
+ // for await (const [key, link] of entries(blk, root, { gte })) {
147
+ // ret.push([key, link]);
148
+ // }
149
+ // expect(ret.length).toEqual(10);
150
+ // }
151
+ });
152
+ });
@@ -19,7 +19,8 @@ import { mockLoader, noopUrl } from "../helpers.js";
19
19
  describe("CarStore", function () {
20
20
  let store: bs.CarStore;
21
21
  const sthis = ensureSuperThis();
22
- const loader = mockLoader(sthis);
22
+
23
+ let loader: bs.Loadable;
23
24
 
24
25
  afterEach(async () => {
25
26
  await store.close();
@@ -27,6 +28,7 @@ describe("CarStore", function () {
27
28
  });
28
29
 
29
30
  beforeEach(async () => {
31
+ loader = mockLoader(sthis);
30
32
  await sthis.start();
31
33
  const at = await bs.createAttachedStores(noopUrl("test"), loader);
32
34
  store = at.stores.car;
@@ -51,9 +53,9 @@ describe("CarStore", function () {
51
53
  describe("CarStore with a saved car", function () {
52
54
  let store: bs.CarStore;
53
55
  let car: bs.AnyBlock;
56
+ let loader: bs.Loadable;
54
57
 
55
58
  const sthis = ensureSuperThis();
56
- const loader = mockLoader(sthis);
57
59
 
58
60
  afterEach(async () => {
59
61
  await store.close();
@@ -61,6 +63,7 @@ describe("CarStore with a saved car", function () {
61
63
  });
62
64
 
63
65
  beforeEach(async () => {
66
+ loader = mockLoader(sthis);
64
67
  await sthis.start();
65
68
 
66
69
  const at = await bs.createAttachedStores(noopUrl("test2"), loader);
@@ -95,7 +98,7 @@ describe("CarStore with a saved car", function () {
95
98
  describe("MetaStore", function () {
96
99
  let store: bs.MetaStore;
97
100
  const sthis = ensureSuperThis();
98
- const loader = mockLoader(sthis);
101
+ let loader: bs.Loadable;
99
102
 
100
103
  afterEach(async () => {
101
104
  await store.close();
@@ -103,6 +106,7 @@ describe("MetaStore", function () {
103
106
  });
104
107
 
105
108
  beforeEach(async () => {
109
+ loader = mockLoader(sthis);
106
110
  await sthis.start();
107
111
  const at = await bs.createAttachedStores(noopUrl("test"), loader);
108
112
  store = at.stores.meta;
@@ -135,7 +139,7 @@ describe("MetaStore with a saved header", function () {
135
139
  let store: bs.MetaStore;
136
140
  let cid: CID;
137
141
  const sthis = ensureSuperThis();
138
- const loader = mockLoader(sthis);
142
+ let loader: bs.Loadable;
139
143
 
140
144
  afterEach(async () => {
141
145
  await store.close();
@@ -143,6 +147,7 @@ describe("MetaStore with a saved header", function () {
143
147
  });
144
148
 
145
149
  beforeEach(async () => {
150
+ loader = mockLoader(sthis);
146
151
  await sthis.start();
147
152
  const at = await bs.createAttachedStores(noopUrl("test3-meta"), loader);
148
153
  store = at.stores.meta;
@@ -176,10 +181,12 @@ describe("MetaStore with a saved header", function () {
176
181
  });
177
182
 
178
183
  it("should load a header", async () => {
179
- const loadeds = (await store.load()) as bs.DbMeta[];
180
- const loaded = loadeds[0];
181
- expect(loaded).toBeTruthy();
182
- expect(loaded.cars).toBeTruthy();
183
- expect(loaded.cars.toString()).toEqual(cid.toString());
184
+ const metaStream = store.stream();
185
+ for await (const cars of metaStream) {
186
+ // expect(loaded).toBeTruthy();
187
+ expect(cars).toBeTruthy();
188
+ expect(cars.map((i) => i.cars.map((i) => i.toString())).flat(2)).toEqual([cid.toString()]);
189
+ break;
190
+ }
184
191
  });
185
192
  });
@@ -1,6 +1,9 @@
1
1
  import { CID } from "multiformats";
2
- import { BaseBlockstore, bs, CarTransaction, ensureSuperThis, SuperThis } from "@fireproof/core";
2
+ import { BaseBlockstore, bs, CarTransaction, ensureSuperThis } from "@fireproof/core";
3
3
  import { simpleBlockOpts } from "../helpers.js";
4
+ import { anyBlock2FPBlock } from "../../src/blockstore/loader-helpers.js";
5
+ import { AnyLink } from "../../src/blockstore/index.js";
6
+ import { to_uint8 } from "@adviser/cement";
4
7
 
5
8
  describe("Fresh TransactionBlockstore", function () {
6
9
  let blocks: BaseBlockstore;
@@ -17,7 +20,7 @@ describe("Fresh TransactionBlockstore", function () {
17
20
  // });
18
21
  it("should not put", async () => {
19
22
  const value = sthis.txt.encode("value");
20
- const e = await blocks.put("key" as unknown as bs.AnyLink, value).catch((e) => e);
23
+ const e = await blocks.put(await anyBlock2FPBlock({ cid: "key" as unknown as AnyLink, bytes: value })).catch((e) => e);
21
24
  expect(e.message).toMatch(/transaction/g);
22
25
  });
23
26
  it("should yield a transaction", async () => {
@@ -49,7 +52,7 @@ describe("TransactionBlockstore with name", function () {
49
52
  const bytes = sthis.txt.encode("bytes");
50
53
  expect(blocks.loader).toBeTruthy();
51
54
  blocks.loader.getBlock = async (cid) => {
52
- return { cid, bytes };
55
+ return anyBlock2FPBlock({ cid, bytes });
53
56
  };
54
57
  const value = await blocks.get("key" as unknown as bs.AnyAnyLink);
55
58
  expect(value).toEqual({ cid: "key" as unknown as bs.AnyAnyLink, bytes });
@@ -68,18 +71,18 @@ describe("A transaction", function () {
68
71
  it("should put and get", async () => {
69
72
  const cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
70
73
  const bytes = sthis.txt.encode("bytes");
71
- await tblocks.put(cid, bytes);
74
+ await tblocks.put(await anyBlock2FPBlock({ cid, bytes }));
72
75
  expect(blocks.transactions.has(tblocks)).toBeTruthy();
73
76
  const got = await tblocks.get(cid);
74
- expect(got).toBeTruthy();
75
- expect(got?.cid).toEqual(cid);
76
- expect(got?.bytes).toEqual(bytes);
77
+ assert(got, "missing block");
78
+ expect(got.cid).toEqual(cid);
79
+ expect(got.bytes).toEqual(bytes);
77
80
  });
78
81
  });
79
82
 
80
- function asUInt8Array(str: string, sthis: SuperThis) {
81
- return sthis.txt.encode(str);
82
- }
83
+ // function asUInt8Array(str: string, sthis: SuperThis) {
84
+ // return sthis.txt.encode(str);
85
+ // }
83
86
 
84
87
  describe("TransactionBlockstore with a completed transaction", function () {
85
88
  let blocks: BaseBlockstore;
@@ -93,13 +96,13 @@ describe("TransactionBlockstore with a completed transaction", function () {
93
96
 
94
97
  blocks = new bs.BaseBlockstoreImpl(simpleBlockOpts(sthis));
95
98
  await blocks.transaction(async (tblocks) => {
96
- await tblocks.put(cid, asUInt8Array("value", sthis));
97
- await tblocks.put(cid, asUInt8Array("value", sthis));
99
+ await tblocks.put(await anyBlock2FPBlock({ cid, bytes: to_uint8("value") }));
100
+ await tblocks.put(await anyBlock2FPBlock({ cid, bytes: to_uint8("value") }));
98
101
  return { head: [] };
99
102
  });
100
103
  await blocks.transaction(async (tblocks) => {
101
- await tblocks.put(cid, asUInt8Array("value", sthis));
102
- await tblocks.put(cid2, asUInt8Array("value2", sthis));
104
+ await tblocks.put(await anyBlock2FPBlock({ cid, bytes: to_uint8("value") }));
105
+ await tblocks.put(await anyBlock2FPBlock({ cid: cid2, bytes: to_uint8("value2") }));
103
106
  return { head: [] };
104
107
  });
105
108
  });
@@ -110,10 +113,10 @@ describe("TransactionBlockstore with a completed transaction", function () {
110
113
  it("should get", async () => {
111
114
  const value = (await blocks.get(cid)) as bs.AnyBlock;
112
115
  expect(value.cid).toEqual(cid);
113
- expect(value.bytes.toString()).toEqual(asUInt8Array("value", sthis).toString());
116
+ expect(value.bytes.toString()).toEqual(to_uint8("value").toString());
114
117
 
115
118
  const value2 = (await blocks.get(cid2)) as bs.AnyBlock;
116
- expect(value2.bytes.toString()).toEqual(asUInt8Array("value2", sthis).toString());
119
+ expect(value2.bytes.toString()).toEqual(to_uint8("value2").toString());
117
120
  });
118
121
  it("should yield entries", async () => {
119
122
  const blz = [];
@@ -2,33 +2,7 @@ import { Database, Ledger, LedgerFactory, PARAM, bs, ensureSuperThis, fireproof
2
2
 
3
3
  import { fileContent } from "./cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.js";
4
4
  import { simpleCID } from "../helpers.js";
5
- import { Future } from "@adviser/cement";
6
-
7
- // import { DataStore, MetaStore, WALState, WALStore } from "../../src/blockstore/types.js";
8
- // import { Gateway } from "../../src/blockstore/gateway.js";
9
- // import { FPEnvelopeMeta, FPEnvelopeType } from "../../src/blockstore/fp-envelope.js";
10
-
11
- // function customExpect(value: unknown, matcher: (val: unknown) => void, message: string): void {
12
- // try {
13
- // matcher(value);
14
- // } catch (error) {
15
- // void error;
16
- // // console.error(error);
17
- // throw new Error(message);
18
- // }
19
- // }
20
-
21
- // interface ExtendedGateway extends bs.Gateway {
22
- // readonly logger: Logger;
23
- // readonly headerSize: number;
24
- // readonly fidLength: number;
25
- // }
26
-
27
- // interface ExtendedStore {
28
- // readonly gateway: ExtendedGateway;
29
- // readonly _url: URI;
30
- // readonly name: string;
31
- // }
5
+ import { BuildURI, Future } from "@adviser/cement";
32
6
 
33
7
  describe("noop Gateway", function () {
34
8
  let db: Ledger;
@@ -381,6 +355,17 @@ describe("noop Gateway subscribe", function () {
381
355
  });
382
356
  beforeEach(async () => {
383
357
  db = fireproof("test-gateway-" + sthis.nextId().str);
358
+ await db.close();
359
+
360
+ db = fireproof("test-gateway-" + sthis.nextId().str, {
361
+ storeUrls: {
362
+ ...db.ledger.opts.storeUrls,
363
+ data: {
364
+ ...db.ledger.opts.storeUrls.data,
365
+ meta: BuildURI.from(db.ledger.opts.storeUrls.data.meta).setParam(PARAM.SELF_REFLECT, "x").URI(),
366
+ },
367
+ },
368
+ });
384
369
 
385
370
  await db.ready();
386
371