@fireproof/core 0.21.0-dev-preview-7 → 0.22.0-keybag

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 (444) hide show
  1. package/index.d.ts +2 -16
  2. package/index.js +2 -15
  3. package/index.js.map +1 -1
  4. package/index.ts +2 -0
  5. package/package.json +12 -70
  6. package/tsconfig.json +18 -0
  7. package/README.md +0 -269
  8. package/apply-head-queue.d.ts +0 -18
  9. package/apply-head-queue.d.ts.map +0 -1
  10. package/apply-head-queue.js +0 -47
  11. package/apply-head-queue.js.map +0 -1
  12. package/blockstore/attachable-store.d.ts +0 -19
  13. package/blockstore/attachable-store.d.ts.map +0 -1
  14. package/blockstore/attachable-store.js +0 -316
  15. package/blockstore/attachable-store.js.map +0 -1
  16. package/blockstore/commit-queue.d.ts +0 -17
  17. package/blockstore/commit-queue.d.ts.map +0 -1
  18. package/blockstore/commit-queue.js +0 -60
  19. package/blockstore/commit-queue.js.map +0 -1
  20. package/blockstore/commitor.d.ts +0 -21
  21. package/blockstore/commitor.d.ts.map +0 -1
  22. package/blockstore/commitor.js +0 -95
  23. package/blockstore/commitor.js.map +0 -1
  24. package/blockstore/connect-raw.d.ts +0 -2
  25. package/blockstore/connect-raw.d.ts.map +0 -1
  26. package/blockstore/connect-raw.js +0 -2
  27. package/blockstore/connect-raw.js.map +0 -1
  28. package/blockstore/connection-base.d.ts +0 -2
  29. package/blockstore/connection-base.d.ts.map +0 -1
  30. package/blockstore/connection-base.js +0 -2
  31. package/blockstore/connection-base.js.map +0 -1
  32. package/blockstore/encrypt-helpers.d.ts +0 -2
  33. package/blockstore/encrypt-helpers.d.ts.map +0 -1
  34. package/blockstore/encrypt-helpers.js +0 -2
  35. package/blockstore/encrypt-helpers.js.map +0 -1
  36. package/blockstore/fp-envelope.d.ts +0 -32
  37. package/blockstore/fp-envelope.d.ts.map +0 -1
  38. package/blockstore/fp-envelope.js +0 -14
  39. package/blockstore/fp-envelope.js.map +0 -1
  40. package/blockstore/gateway.d.ts +0 -20
  41. package/blockstore/gateway.d.ts.map +0 -1
  42. package/blockstore/gateway.js +0 -2
  43. package/blockstore/gateway.js.map +0 -1
  44. package/blockstore/index.d.ts +0 -17
  45. package/blockstore/index.d.ts.map +0 -1
  46. package/blockstore/index.js +0 -17
  47. package/blockstore/index.js.map +0 -1
  48. package/blockstore/interceptor-gateway.d.ts +0 -29
  49. package/blockstore/interceptor-gateway.d.ts.map +0 -1
  50. package/blockstore/interceptor-gateway.js +0 -137
  51. package/blockstore/interceptor-gateway.js.map +0 -1
  52. package/blockstore/loader-helpers.d.ts +0 -10
  53. package/blockstore/loader-helpers.d.ts.map +0 -1
  54. package/blockstore/loader-helpers.js +0 -115
  55. package/blockstore/loader-helpers.js.map +0 -1
  56. package/blockstore/loader.d.ts +0 -62
  57. package/blockstore/loader.d.ts.map +0 -1
  58. package/blockstore/loader.js +0 -523
  59. package/blockstore/loader.js.map +0 -1
  60. package/blockstore/register-store-protocol.d.ts +0 -22
  61. package/blockstore/register-store-protocol.d.ts.map +0 -1
  62. package/blockstore/register-store-protocol.js +0 -125
  63. package/blockstore/register-store-protocol.js.map +0 -1
  64. package/blockstore/serde-gateway.d.ts +0 -78
  65. package/blockstore/serde-gateway.d.ts.map +0 -1
  66. package/blockstore/serde-gateway.js +0 -2
  67. package/blockstore/serde-gateway.js.map +0 -1
  68. package/blockstore/store-factory.d.ts +0 -11
  69. package/blockstore/store-factory.d.ts.map +0 -1
  70. package/blockstore/store-factory.js +0 -104
  71. package/blockstore/store-factory.js.map +0 -1
  72. package/blockstore/store-remote.d.ts +0 -2
  73. package/blockstore/store-remote.d.ts.map +0 -1
  74. package/blockstore/store-remote.js +0 -2
  75. package/blockstore/store-remote.js.map +0 -1
  76. package/blockstore/store.d.ts +0 -86
  77. package/blockstore/store.d.ts.map +0 -1
  78. package/blockstore/store.js +0 -437
  79. package/blockstore/store.js.map +0 -1
  80. package/blockstore/task-manager.d.ts +0 -19
  81. package/blockstore/task-manager.d.ts.map +0 -1
  82. package/blockstore/task-manager.js +0 -50
  83. package/blockstore/task-manager.js.map +0 -1
  84. package/blockstore/transaction.d.ts +0 -62
  85. package/blockstore/transaction.d.ts.map +0 -1
  86. package/blockstore/transaction.js +0 -256
  87. package/blockstore/transaction.js.map +0 -1
  88. package/blockstore/types.d.ts +0 -508
  89. package/blockstore/types.d.ts.map +0 -1
  90. package/blockstore/types.js +0 -83
  91. package/blockstore/types.js.map +0 -1
  92. package/blockstore/uri-interceptor.d.ts +0 -19
  93. package/blockstore/uri-interceptor.d.ts.map +0 -1
  94. package/blockstore/uri-interceptor.js +0 -61
  95. package/blockstore/uri-interceptor.js.map +0 -1
  96. package/bundle-not-impl.d.ts +0 -2
  97. package/bundle-not-impl.d.ts.map +0 -1
  98. package/bundle-not-impl.js +0 -4
  99. package/bundle-not-impl.js.map +0 -1
  100. package/cli/main.js +0 -26645
  101. package/crdt-clock.d.ts +0 -26
  102. package/crdt-clock.d.ts.map +0 -1
  103. package/crdt-clock.js +0 -133
  104. package/crdt-clock.js.map +0 -1
  105. package/crdt-helpers.d.ts +0 -19
  106. package/crdt-helpers.d.ts.map +0 -1
  107. package/crdt-helpers.js +0 -332
  108. package/crdt-helpers.js.map +0 -1
  109. package/crdt.d.ts +0 -41
  110. package/crdt.d.ts.map +0 -1
  111. package/crdt.js +0 -164
  112. package/crdt.js.map +0 -1
  113. package/database.d.ts +0 -33
  114. package/database.d.ts.map +0 -1
  115. package/database.js +0 -132
  116. package/database.js.map +0 -1
  117. package/deno.json +0 -20
  118. package/index.d.ts.map +0 -1
  119. package/indexer-helpers.d.ts +0 -68
  120. package/indexer-helpers.d.ts.map +0 -1
  121. package/indexer-helpers.js +0 -157
  122. package/indexer-helpers.js.map +0 -1
  123. package/indexer.d.ts +0 -24
  124. package/indexer.d.ts.map +0 -1
  125. package/indexer.js +0 -239
  126. package/indexer.js.map +0 -1
  127. package/ledger.d.ts +0 -56
  128. package/ledger.d.ts.map +0 -1
  129. package/ledger.js +0 -237
  130. package/ledger.js.map +0 -1
  131. package/protocols/cloud/http-connection.d.ts +0 -26
  132. package/protocols/cloud/http-connection.d.ts.map +0 -1
  133. package/protocols/cloud/http-connection.js +0 -154
  134. package/protocols/cloud/http-connection.js.map +0 -1
  135. package/protocols/cloud/index.d.ts +0 -10
  136. package/protocols/cloud/index.d.ts.map +0 -1
  137. package/protocols/cloud/index.js +0 -10
  138. package/protocols/cloud/index.js.map +0 -1
  139. package/protocols/cloud/msg-raw-connection-base.d.ts +0 -16
  140. package/protocols/cloud/msg-raw-connection-base.d.ts.map +0 -1
  141. package/protocols/cloud/msg-raw-connection-base.js +0 -22
  142. package/protocols/cloud/msg-raw-connection-base.js.map +0 -1
  143. package/protocols/cloud/msg-types-data.d.ts +0 -36
  144. package/protocols/cloud/msg-types-data.d.ts.map +0 -1
  145. package/protocols/cloud/msg-types-data.js +0 -38
  146. package/protocols/cloud/msg-types-data.js.map +0 -1
  147. package/protocols/cloud/msg-types-meta.d.ts +0 -41
  148. package/protocols/cloud/msg-types-meta.d.ts.map +0 -1
  149. package/protocols/cloud/msg-types-meta.js +0 -98
  150. package/protocols/cloud/msg-types-meta.js.map +0 -1
  151. package/protocols/cloud/msg-types-wal.d.ts +0 -33
  152. package/protocols/cloud/msg-types-wal.d.ts.map +0 -1
  153. package/protocols/cloud/msg-types-wal.js +0 -38
  154. package/protocols/cloud/msg-types-wal.js.map +0 -1
  155. package/protocols/cloud/msg-types.d.ts +0 -310
  156. package/protocols/cloud/msg-types.d.ts.map +0 -1
  157. package/protocols/cloud/msg-types.js +0 -299
  158. package/protocols/cloud/msg-types.js.map +0 -1
  159. package/protocols/cloud/msger.d.ts +0 -94
  160. package/protocols/cloud/msger.d.ts.map +0 -1
  161. package/protocols/cloud/msger.js +0 -319
  162. package/protocols/cloud/msger.js.map +0 -1
  163. package/protocols/cloud/ws-connection.d.ts +0 -40
  164. package/protocols/cloud/ws-connection.d.ts.map +0 -1
  165. package/protocols/cloud/ws-connection.js +0 -205
  166. package/protocols/cloud/ws-connection.js.map +0 -1
  167. package/protocols/dashboard/index.d.ts +0 -4
  168. package/protocols/dashboard/index.d.ts.map +0 -1
  169. package/protocols/dashboard/index.js +0 -4
  170. package/protocols/dashboard/index.js.map +0 -1
  171. package/protocols/dashboard/msg-api.d.ts +0 -11
  172. package/protocols/dashboard/msg-api.d.ts.map +0 -1
  173. package/protocols/dashboard/msg-api.js +0 -55
  174. package/protocols/dashboard/msg-api.js.map +0 -1
  175. package/protocols/dashboard/msg-is.d.ts +0 -45
  176. package/protocols/dashboard/msg-is.d.ts.map +0 -1
  177. package/protocols/dashboard/msg-is.js +0 -63
  178. package/protocols/dashboard/msg-is.js.map +0 -1
  179. package/protocols/dashboard/msg-types.d.ts +0 -397
  180. package/protocols/dashboard/msg-types.d.ts.map +0 -1
  181. package/protocols/dashboard/msg-types.js +0 -4
  182. package/protocols/dashboard/msg-types.js.map +0 -1
  183. package/protocols/index.d.ts +0 -3
  184. package/protocols/index.d.ts.map +0 -1
  185. package/protocols/index.js +0 -3
  186. package/protocols/index.js.map +0 -1
  187. package/react/img-file.d.ts +0 -303
  188. package/react/img-file.d.ts.map +0 -1
  189. package/react/img-file.js +0 -92
  190. package/react/img-file.js.map +0 -1
  191. package/react/index.d.ts +0 -5
  192. package/react/index.d.ts.map +0 -1
  193. package/react/index.js +0 -5
  194. package/react/index.js.map +0 -1
  195. package/react/types.d.ts +0 -91
  196. package/react/types.d.ts.map +0 -1
  197. package/react/types.js +0 -2
  198. package/react/types.js.map +0 -1
  199. package/react/use-all-docs.d.ts +0 -4
  200. package/react/use-all-docs.d.ts.map +0 -1
  201. package/react/use-all-docs.js +0 -25
  202. package/react/use-all-docs.js.map +0 -1
  203. package/react/use-attach.d.ts +0 -11
  204. package/react/use-attach.d.ts.map +0 -1
  205. package/react/use-attach.js +0 -169
  206. package/react/use-attach.js.map +0 -1
  207. package/react/use-changes.d.ts +0 -4
  208. package/react/use-changes.d.ts.map +0 -1
  209. package/react/use-changes.js +0 -19
  210. package/react/use-changes.js.map +0 -1
  211. package/react/use-document.d.ts +0 -4
  212. package/react/use-document.d.ts.map +0 -1
  213. package/react/use-document.js +0 -109
  214. package/react/use-document.js.map +0 -1
  215. package/react/use-fireproof.d.ts +0 -6
  216. package/react/use-fireproof.d.ts.map +0 -1
  217. package/react/use-fireproof.js +0 -20
  218. package/react/use-fireproof.js.map +0 -1
  219. package/react/use-live-query.d.ts +0 -4
  220. package/react/use-live-query.d.ts.map +0 -1
  221. package/react/use-live-query.js +0 -24
  222. package/react/use-live-query.js.map +0 -1
  223. package/runtime/files.d.ts +0 -12
  224. package/runtime/files.d.ts.map +0 -1
  225. package/runtime/files.js +0 -29
  226. package/runtime/files.js.map +0 -1
  227. package/runtime/gateways/cloud/gateway.d.ts +0 -41
  228. package/runtime/gateways/cloud/gateway.d.ts.map +0 -1
  229. package/runtime/gateways/cloud/gateway.js +0 -514
  230. package/runtime/gateways/cloud/gateway.js.map +0 -1
  231. package/runtime/gateways/cloud/index.d.ts +0 -3
  232. package/runtime/gateways/cloud/index.d.ts.map +0 -1
  233. package/runtime/gateways/cloud/index.js +0 -3
  234. package/runtime/gateways/cloud/index.js.map +0 -1
  235. package/runtime/gateways/cloud/to-cloud.d.ts +0 -59
  236. package/runtime/gateways/cloud/to-cloud.d.ts.map +0 -1
  237. package/runtime/gateways/cloud/to-cloud.js +0 -175
  238. package/runtime/gateways/cloud/to-cloud.js.map +0 -1
  239. package/runtime/gateways/def-serde-gateway.d.ts +0 -18
  240. package/runtime/gateways/def-serde-gateway.d.ts.map +0 -1
  241. package/runtime/gateways/def-serde-gateway.js +0 -92
  242. package/runtime/gateways/def-serde-gateway.js.map +0 -1
  243. package/runtime/gateways/file/deno/deno-filesystem.d.ts +0 -27
  244. package/runtime/gateways/file/deno/deno-filesystem.d.ts.map +0 -1
  245. package/runtime/gateways/file/deno/deno-filesystem.js +0 -52
  246. package/runtime/gateways/file/deno/deno-filesystem.js.map +0 -1
  247. package/runtime/gateways/file/deno/get-sys-file-system.d.ts +0 -4
  248. package/runtime/gateways/file/deno/get-sys-file-system.d.ts.map +0 -1
  249. package/runtime/gateways/file/deno/get-sys-file-system.js +0 -11
  250. package/runtime/gateways/file/deno/get-sys-file-system.js.map +0 -1
  251. package/runtime/gateways/file/deno/index.d.ts +0 -2
  252. package/runtime/gateways/file/deno/index.d.ts.map +0 -1
  253. package/runtime/gateways/file/deno/index.js +0 -2
  254. package/runtime/gateways/file/deno/index.js.map +0 -1
  255. package/runtime/gateways/file/gateway-impl.d.ts +0 -18
  256. package/runtime/gateways/file/gateway-impl.d.ts.map +0 -1
  257. package/runtime/gateways/file/gateway-impl.js +0 -121
  258. package/runtime/gateways/file/gateway-impl.js.map +0 -1
  259. package/runtime/gateways/file/index.d.ts +0 -3
  260. package/runtime/gateways/file/index.d.ts.map +0 -1
  261. package/runtime/gateways/file/index.js +0 -3
  262. package/runtime/gateways/file/index.js.map +0 -1
  263. package/runtime/gateways/file/key-bag-file.d.ts +0 -20
  264. package/runtime/gateways/file/key-bag-file.d.ts.map +0 -1
  265. package/runtime/gateways/file/key-bag-file.js +0 -52
  266. package/runtime/gateways/file/key-bag-file.js.map +0 -1
  267. package/runtime/gateways/file/node/get-sys-file-system.d.ts +0 -4
  268. package/runtime/gateways/file/node/get-sys-file-system.d.ts.map +0 -1
  269. package/runtime/gateways/file/node/get-sys-file-system.js +0 -11
  270. package/runtime/gateways/file/node/get-sys-file-system.js.map +0 -1
  271. package/runtime/gateways/file/node/index.d.ts +0 -2
  272. package/runtime/gateways/file/node/index.d.ts.map +0 -1
  273. package/runtime/gateways/file/node/index.js +0 -2
  274. package/runtime/gateways/file/node/index.js.map +0 -1
  275. package/runtime/gateways/file/node/node-filesystem.d.ts +0 -32
  276. package/runtime/gateways/file/node/node-filesystem.d.ts.map +0 -1
  277. package/runtime/gateways/file/node/node-filesystem.js +0 -33
  278. package/runtime/gateways/file/node/node-filesystem.js.map +0 -1
  279. package/runtime/gateways/file/node/to-array-buffer.d.ts +0 -2
  280. package/runtime/gateways/file/node/to-array-buffer.d.ts.map +0 -1
  281. package/runtime/gateways/file/node/to-array-buffer.js +0 -12
  282. package/runtime/gateways/file/node/to-array-buffer.js.map +0 -1
  283. package/runtime/gateways/file/sys-file-system-factory.d.ts +0 -4
  284. package/runtime/gateways/file/sys-file-system-factory.d.ts.map +0 -1
  285. package/runtime/gateways/file/sys-file-system-factory.js +0 -13
  286. package/runtime/gateways/file/sys-file-system-factory.js.map +0 -1
  287. package/runtime/gateways/file/utils.d.ts +0 -5
  288. package/runtime/gateways/file/utils.d.ts.map +0 -1
  289. package/runtime/gateways/file/utils.js +0 -27
  290. package/runtime/gateways/file/utils.js.map +0 -1
  291. package/runtime/gateways/file/version.d.ts +0 -2
  292. package/runtime/gateways/file/version.d.ts.map +0 -1
  293. package/runtime/gateways/file/version.js +0 -2
  294. package/runtime/gateways/file/version.js.map +0 -1
  295. package/runtime/gateways/fp-envelope-serialize.d.ts +0 -50
  296. package/runtime/gateways/fp-envelope-serialize.d.ts.map +0 -1
  297. package/runtime/gateways/fp-envelope-serialize.js +0 -141
  298. package/runtime/gateways/fp-envelope-serialize.js.map +0 -1
  299. package/runtime/gateways/index.d.ts +0 -6
  300. package/runtime/gateways/index.d.ts.map +0 -1
  301. package/runtime/gateways/index.js +0 -6
  302. package/runtime/gateways/index.js.map +0 -1
  303. package/runtime/gateways/indexeddb/gateway-impl.d.ts +0 -22
  304. package/runtime/gateways/indexeddb/gateway-impl.d.ts.map +0 -1
  305. package/runtime/gateways/indexeddb/gateway-impl.js +0 -147
  306. package/runtime/gateways/indexeddb/gateway-impl.js.map +0 -1
  307. package/runtime/gateways/indexeddb/index.d.ts +0 -6
  308. package/runtime/gateways/indexeddb/index.d.ts.map +0 -1
  309. package/runtime/gateways/indexeddb/index.js +0 -6
  310. package/runtime/gateways/indexeddb/index.js.map +0 -1
  311. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts +0 -16
  312. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts.map +0 -1
  313. package/runtime/gateways/indexeddb/key-bag-indexeddb.js +0 -48
  314. package/runtime/gateways/indexeddb/key-bag-indexeddb.js.map +0 -1
  315. package/runtime/gateways/indexeddb-version.d.ts +0 -2
  316. package/runtime/gateways/indexeddb-version.d.ts.map +0 -1
  317. package/runtime/gateways/indexeddb-version.js +0 -2
  318. package/runtime/gateways/indexeddb-version.js.map +0 -1
  319. package/runtime/gateways/memory/gateway.d.ts +0 -18
  320. package/runtime/gateways/memory/gateway.d.ts.map +0 -1
  321. package/runtime/gateways/memory/gateway.js +0 -73
  322. package/runtime/gateways/memory/gateway.js.map +0 -1
  323. package/runtime/gateways/memory/version.d.ts +0 -2
  324. package/runtime/gateways/memory/version.d.ts.map +0 -1
  325. package/runtime/gateways/memory/version.js +0 -2
  326. package/runtime/gateways/memory/version.js.map +0 -1
  327. package/runtime/index.d.ts +0 -13
  328. package/runtime/index.d.ts.map +0 -1
  329. package/runtime/index.js +0 -13
  330. package/runtime/index.js.map +0 -1
  331. package/runtime/key-bag-memory.d.ts +0 -13
  332. package/runtime/key-bag-memory.d.ts.map +0 -1
  333. package/runtime/key-bag-memory.js +0 -30
  334. package/runtime/key-bag-memory.js.map +0 -1
  335. package/runtime/key-bag.d.ts +0 -88
  336. package/runtime/key-bag.d.ts.map +0 -1
  337. package/runtime/key-bag.js +0 -417
  338. package/runtime/key-bag.js.map +0 -1
  339. package/runtime/keyed-crypto.d.ts +0 -19
  340. package/runtime/keyed-crypto.d.ts.map +0 -1
  341. package/runtime/keyed-crypto.js +0 -192
  342. package/runtime/keyed-crypto.js.map +0 -1
  343. package/runtime/memory-sys-container.d.ts +0 -2
  344. package/runtime/memory-sys-container.d.ts.map +0 -1
  345. package/runtime/memory-sys-container.js +0 -2
  346. package/runtime/memory-sys-container.js.map +0 -1
  347. package/runtime/meta-key-hack.d.ts +0 -42
  348. package/runtime/meta-key-hack.d.ts.map +0 -1
  349. package/runtime/meta-key-hack.js +0 -201
  350. package/runtime/meta-key-hack.js.map +0 -1
  351. package/runtime/sts-service/index.d.ts +0 -40
  352. package/runtime/sts-service/index.d.ts.map +0 -1
  353. package/runtime/sts-service/index.js +0 -108
  354. package/runtime/sts-service/index.js.map +0 -1
  355. package/runtime/sys-container.d.ts +0 -2
  356. package/runtime/sys-container.d.ts.map +0 -1
  357. package/runtime/sys-container.js +0 -2
  358. package/runtime/sys-container.js.map +0 -1
  359. package/runtime/wait-pr-multiformats/block.d.ts +0 -47
  360. package/runtime/wait-pr-multiformats/block.d.ts.map +0 -1
  361. package/runtime/wait-pr-multiformats/block.js +0 -64
  362. package/runtime/wait-pr-multiformats/block.js.map +0 -1
  363. package/runtime/wait-pr-multiformats/codec-interface.d.ts +0 -29
  364. package/runtime/wait-pr-multiformats/codec-interface.d.ts.map +0 -1
  365. package/runtime/wait-pr-multiformats/codec-interface.js +0 -2
  366. package/runtime/wait-pr-multiformats/codec-interface.js.map +0 -1
  367. package/runtime/wait-pr-multiformats/index.d.ts +0 -3
  368. package/runtime/wait-pr-multiformats/index.d.ts.map +0 -1
  369. package/runtime/wait-pr-multiformats/index.js +0 -3
  370. package/runtime/wait-pr-multiformats/index.js.map +0 -1
  371. package/tests/blockstore/fp-envelope.test.ts-off +0 -65
  372. package/tests/blockstore/fragment-gateway.test.ts-off +0 -106
  373. package/tests/blockstore/interceptor-gateway.test.ts +0 -254
  374. package/tests/blockstore/keyed-crypto-indexeddb-file.test.ts +0 -128
  375. package/tests/blockstore/keyed-crypto.test.ts +0 -376
  376. package/tests/blockstore/loader.test.ts +0 -298
  377. package/tests/blockstore/standalone.test.ts +0 -152
  378. package/tests/blockstore/store.test.ts +0 -192
  379. package/tests/blockstore/transaction.test.ts +0 -130
  380. package/tests/fireproof/all-gateway.test.ts +0 -461
  381. package/tests/fireproof/attachable.test.ts +0 -686
  382. package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.car +0 -0
  383. package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts +0 -324
  384. package/tests/fireproof/charwise-boolean.test.ts +0 -66
  385. package/tests/fireproof/crdt.test.ts +0 -570
  386. package/tests/fireproof/database.test.ts +0 -779
  387. package/tests/fireproof/deleted-docs-handling.test.ts +0 -111
  388. package/tests/fireproof/fireproof.test.fixture.ts +0 -133
  389. package/tests/fireproof/fireproof.test.ts +0 -777
  390. package/tests/fireproof/hello.test.ts +0 -74
  391. package/tests/fireproof/indexer.test.ts +0 -458
  392. package/tests/fireproof/multiple-ledger.test.ts +0 -65
  393. package/tests/fireproof/query-docs.test.ts +0 -116
  394. package/tests/fireproof/query-limit-issue.test.ts +0 -147
  395. package/tests/fireproof/query-property-inconsistency.test.ts +0 -89
  396. package/tests/fireproof/query-result-properties.test.ts +0 -42
  397. package/tests/fireproof/stable-cid.test.ts +0 -69
  398. package/tests/fireproof/utils.test.ts +0 -135
  399. package/tests/gateway/file/loader-config.test.ts +0 -307
  400. package/tests/gateway/indexeddb/loader-config.test.ts +0 -79
  401. package/tests/helpers.ts +0 -172
  402. package/tests/protocols/cloud/msger.test.ts +0 -548
  403. package/tests/react/img-file.test.tsx +0 -190
  404. package/tests/react/use-all-docs.test.tsx +0 -172
  405. package/tests/react/use-document-with-nonexistent-id.test.tsx +0 -96
  406. package/tests/react/use-fireproof-db-switch.test.tsx +0 -91
  407. package/tests/react/use-fireproof-stability.test.tsx +0 -145
  408. package/tests/react/use-fireproof.test.tsx +0 -645
  409. package/tests/runtime/fp-envelope-serialize.test.ts +0 -254
  410. package/tests/runtime/meta-key-hack.test.ts +0 -95
  411. package/tests/setup.file.ts +0 -1
  412. package/tests/setup.indexeddb.ts +0 -0
  413. package/tests/setup.memory.ts +0 -2
  414. package/tests/vitest.file.config.ts +0 -14
  415. package/tests/vitest.indexeddb.config.ts +0 -37
  416. package/tests/vitest.memory.config.ts +0 -25
  417. package/types.d.ts +0 -461
  418. package/types.d.ts.map +0 -1
  419. package/types.js +0 -60
  420. package/types.js.map +0 -1
  421. package/use-fireproof/iframe-strategy.d.ts +0 -14
  422. package/use-fireproof/iframe-strategy.d.ts.map +0 -1
  423. package/use-fireproof/iframe-strategy.js +0 -79
  424. package/use-fireproof/iframe-strategy.js.map +0 -1
  425. package/use-fireproof/index.d.ts +0 -14
  426. package/use-fireproof/index.d.ts.map +0 -1
  427. package/use-fireproof/index.js +0 -36
  428. package/use-fireproof/index.js.map +0 -1
  429. package/use-fireproof/redirect-strategy.d.ts +0 -15
  430. package/use-fireproof/redirect-strategy.d.ts.map +0 -1
  431. package/use-fireproof/redirect-strategy.js +0 -153
  432. package/use-fireproof/redirect-strategy.js.map +0 -1
  433. package/utils.d.ts +0 -48
  434. package/utils.d.ts.map +0 -1
  435. package/utils.js +0 -406
  436. package/utils.js.map +0 -1
  437. package/version.d.ts +0 -2
  438. package/version.d.ts.map +0 -1
  439. package/version.js +0 -4
  440. package/version.js.map +0 -1
  441. package/write-queue.d.ts +0 -9
  442. package/write-queue.d.ts.map +0 -1
  443. package/write-queue.js +0 -70
  444. package/write-queue.js.map +0 -1
@@ -1,376 +0,0 @@
1
- import { bs, ensureSuperThis, PARAM, rt, StoreType, storeType2DataMetaWal } from "@fireproof/core";
2
- import { BuildURI, LogCollector, runtimeFn, toCryptoRuntime, URI } from "@adviser/cement";
3
- import { base58btc } from "multiformats/bases/base58";
4
- // import { sha256 as hasher } from "multiformats/hashes/sha2";
5
- // import * as dagCodec from "@ipld/dag-cbor";
6
- import * as cborg from "cborg";
7
- import type { KeyBagProviderIndexedDB } from "@fireproof/core/indexeddb";
8
- import { mockLoader, MockSuperThis, mockSuperThis } from "../helpers.js";
9
-
10
- describe("KeyBag", () => {
11
- let url: URI;
12
- let sthis: MockSuperThis;
13
-
14
- beforeEach(async () => {
15
- sthis = mockSuperThis();
16
- await sthis.start();
17
- if (runtimeFn().isBrowser) {
18
- url = URI.from("indexeddb://fp-keybag");
19
- } else {
20
- url = URI.merge(`file://./dist/tests/key.bag`, sthis.env.get("FP_KEYBAG_URL"));
21
- }
22
- });
23
- it("default-path", async () => {
24
- const old = sthis.env.get("FP_KEYBAG_URL");
25
- sthis.env.delete("FP_KEYBAG_URL");
26
- const kb = await rt.kb.getKeyBag(sthis);
27
- if (runtimeFn().isBrowser) {
28
- expect(kb.rt.url.toString()).toBe(`indexeddb://fp-keybag`);
29
- } else {
30
- expect(kb.rt.url.toString()).toBe(`file://${sthis.env.get("HOME")}/.fireproof/keybag`);
31
- }
32
- sthis.env.set("FP_KEYBAG_URL", old);
33
- });
34
- it("from env", async () => {
35
- const old = sthis.env.get("FP_KEYBAG_URL");
36
- sthis.env.set("FP_KEYBAG_URL", url.toString());
37
- const kb = await rt.kb.getKeyBag(sthis);
38
- expect(kb.rt.url.toString()).toBe(url.toString());
39
- sthis.env.set("FP_KEYBAG_URL", old);
40
- });
41
-
42
- it("extract keyMaterial", async () => {
43
- const dkb = await rt.kb.getKeyBag(sthis);
44
- const old = sthis.env.get("FP_KEYBAG_URL");
45
- sthis.env.set("FP_KEYBAG_URL", BuildURI.from(dkb.rt.url).setParam("extractKey", "_deprecated_internal_api").toString());
46
- const kb = await rt.kb.getKeyBag(sthis);
47
- const key = kb.rt.crypto.randomBytes(kb.rt.keyLength);
48
- const keyStr = base58btc.encode(key);
49
- const keyName = "extract.test" + Math.random();
50
- const res = await kb.getNamedKey(keyName, false, keyStr);
51
- expect(res.isOk()).toBeTruthy();
52
- const gkb = await kb.getNamedKey(keyName, true);
53
- expect(gkb.isOk()).toBeTruthy();
54
-
55
- expect(
56
- await gkb
57
- .Ok()
58
- .get()
59
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
60
- .then((i) => i!.extract()),
61
- ).toEqual({
62
- key,
63
- keyStr,
64
- });
65
- sthis.env.set("FP_KEYBAG_URL", old);
66
- await sthis.logger.Flush();
67
- expect(sthis.ctx.get<LogCollector>("logCollector")?.Logs()).toEqual([
68
- {
69
- level: "warn",
70
- module: "KeyBag",
71
- msg: "extractKey is enabled via _deprecated_internal_api --- handle keys safely!!!",
72
- },
73
- ]);
74
- });
75
-
76
- it("simple add", async () => {
77
- const kb = await rt.kb.getKeyBag(sthis, {
78
- url: url.toString(),
79
- });
80
- const name = "setkey" + Math.random();
81
- expect((await kb.getNamedKey(name, true)).isErr()).toBeTruthy();
82
-
83
- const key = base58btc.encode(kb.rt.crypto.randomBytes(kb.rt.keyLength));
84
- const res = await kb.getNamedKey(name, false, key);
85
- expect(res.isOk()).toBeTruthy();
86
- expect((await kb.getNamedKey(name, true)).Ok()).toEqual(res.Ok());
87
-
88
- const name2 = "implicit" + Math.random();
89
- const created = await kb.getNamedKey(name2);
90
- expect(created.isOk()).toBeTruthy();
91
-
92
- expect((await kb.getNamedKey(name2)).Ok()).toEqual(created.Ok());
93
-
94
- let diskBag: rt.kb.KeysItem;
95
- let diskBag2: rt.kb.KeysItem;
96
- const provider = await kb.rt.getBagProvider();
97
- if (runtimeFn().isBrowser) {
98
- const p = provider as KeyBagProviderIndexedDB;
99
- diskBag = await p._prepare().then((db) => db.get("bag", name));
100
- diskBag2 = await p._prepare().then((db) => db.get("bag", name2));
101
- } else {
102
- const p = provider as rt.gw.file.KeyBagProviderFile;
103
- if (typeof p._prepare !== "function") {
104
- return;
105
- }
106
- const { sysFS } = await p._prepare(name);
107
-
108
- diskBag = await sysFS.readfile((await p._prepare(name)).fName).then((data) => {
109
- return JSON.parse(sthis.txt.decode(data)) as rt.kb.KeysItem;
110
- });
111
- diskBag2 = await sysFS.readfile((await p._prepare(name2)).fName).then((data) => {
112
- return JSON.parse(sthis.txt.decode(data)) as rt.kb.KeysItem;
113
- });
114
- }
115
- expect((await rt.toKeyWithFingerPrint(kb, Object.values(diskBag.keys)[0].key)).Ok().fingerPrint).toEqual(
116
- (await res.Ok().get())?.fingerPrint,
117
- );
118
- expect((await rt.toKeyWithFingerPrint(kb, Object.values(diskBag2.keys)[0].key)).Ok().fingerPrint).toEqual(
119
- (await created.Ok().get())?.fingerPrint,
120
- );
121
- const algo = {
122
- name: "AES-GCM",
123
- iv: kb.rt.crypto.randomBytes(12),
124
- tagLength: 128,
125
- };
126
- const data = kb.rt.crypto.randomBytes(122);
127
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
128
- expect(await kb.rt.crypto.encrypt(algo, (await res.Ok().get())!.key, data))
129
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
130
- .toEqual(await kb.rt.crypto.encrypt(algo, (await created.Ok().get())!.key, data));
131
- const kf = (await created.Ok().get()) as bs.KeyWithFingerPrint;
132
- expect(await kb.rt.crypto.encrypt(algo, await kb.subtleKey(Object.values(diskBag.keys)[0].key), data)).toEqual(
133
- await kb.rt.crypto.encrypt(algo, kf.key, data),
134
- );
135
- expect(await kb.rt.crypto.encrypt(algo, await kb.subtleKey(Object.values(diskBag2.keys)[0].key), data)).toEqual(
136
- await kb.rt.crypto.encrypt(algo, kf.key, data),
137
- );
138
- });
139
-
140
- it("default key", async () => {
141
- const kb = await rt.kb.getKeyBag(sthis, {
142
- url: url.build().setParam("extractKey", "_deprecated_internal_api"),
143
- });
144
- const name = "default-key" + Math.random();
145
- const rMyKey = await kb.getNamedKey(name);
146
-
147
- for (let i = 0; i < 10; ++i) {
148
- expect(await kb.getNamedKey(name).then((i) => i.Ok().id)).toEqual(rMyKey.Ok().id);
149
- }
150
- expect(Object.keys((await kb.getNamedKey(name).then((i) => i.Ok().asKeysItem())).keys).length).toBe(1);
151
-
152
- const myKey = (await rMyKey.Ok().get()) as bs.KeyWithFingerPrint;
153
- expect(myKey.fingerPrint).toMatch(/^z/);
154
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
155
- await rMyKey.Ok().upsert((await myKey.extract())!.key);
156
- const myKey1 = (await rMyKey.Ok().get()) as bs.KeyWithFingerPrint;
157
- expect(myKey.fingerPrint).toEqual(myKey1.fingerPrint);
158
-
159
- expect(Object.keys((await kb.getNamedKey(name).then((i) => i.Ok().asKeysItem())).keys).length).toBe(1);
160
-
161
- const rMyKey1 = await kb.getNamedKey(name);
162
- expect(rMyKey1.Ok()).toEqual(rMyKey.Ok());
163
- const res1 = await rMyKey1.Ok().upsert(kb.rt.crypto.randomBytes(kb.rt.keyLength));
164
- expect(res1.isOk()).toBeTruthy();
165
-
166
- const myKey2 = (await rMyKey1.Ok().get()) as bs.KeyWithFingerPrint;
167
- expect(myKey.fingerPrint).toEqual(myKey2.fingerPrint);
168
- expect(Object.keys((await kb.getNamedKey(name).then((i) => i.Ok().asKeysItem())).keys).length).toBe(2);
169
-
170
- const res = await rMyKey1.Ok().upsert(kb.rt.crypto.randomBytes(kb.rt.keyLength), true);
171
- expect(res.isOk()).toBeTruthy();
172
- const myKey3 = (await rMyKey.Ok().get()) as bs.KeyWithFingerPrint;
173
- expect(Object.keys((await kb.getNamedKey(name).then((i) => i.Ok().asKeysItem())).keys).length).toBe(3);
174
-
175
- expect(myKey.fingerPrint).not.toEqual(myKey3.fingerPrint);
176
- });
177
-
178
- it("default and multiple fingerprints", async () => {
179
- const kb = await rt.kb.getKeyBag(sthis, {
180
- url: url.toString(),
181
- crypto: toCryptoRuntime({
182
- randomBytes: (size) => new Uint8Array(size).map((_, i) => i),
183
- }),
184
- });
185
- const key = base58btc.encode(kb.rt.crypto.randomBytes(kb.rt.keyLength));
186
- const name = "default-key" + Math.random();
187
- const fpr = (await rt.toKeyWithFingerPrint(kb, key)).Ok().fingerPrint;
188
- const rMyKey = await kb.getNamedKey(name, false, key);
189
- expect(rMyKey.isOk()).toBeTruthy();
190
- const myKey = rMyKey.Ok();
191
-
192
- const rUpsert1 = await myKey.upsert(key, true);
193
- expect(rUpsert1.Ok().modified).toBeFalsy();
194
-
195
- expect((await myKey.get())?.fingerPrint).toEqual(fpr);
196
- expect((await myKey.get(fpr))?.fingerPrint).toEqual(fpr);
197
-
198
- const keys = [{ key, fpr }];
199
- for (let i = 0; i < 10; ++i) {
200
- const key = base58btc.encode(kb.rt.crypto.randomBytes(kb.rt.keyLength));
201
- const fpr = (await rt.toKeyWithFingerPrint(kb, key)).Ok().fingerPrint;
202
- keys.push({ key, fpr });
203
- const rUpsert = await myKey.upsert(key, true);
204
- expect(rUpsert.Ok().modified).toBeTruthy();
205
- for (const { fpr } of keys) {
206
- expect((await myKey.get(fpr))?.fingerPrint).toEqual(fpr);
207
- }
208
- expect((await myKey.get())?.fingerPrint).toEqual(fpr);
209
- }
210
- await kb.flush();
211
- const provider = await kb.rt.getBagProvider();
212
- let diskBag: rt.kb.KeysItem;
213
- if (!("_prepare" in provider)) {
214
- diskBag = (await provider.get(name)) as rt.kb.KeysItem;
215
- } else {
216
- if (runtimeFn().isBrowser) {
217
- const p = provider as KeyBagProviderIndexedDB;
218
- diskBag = await p._prepare().then((db) => db.get("bag", name));
219
- } else {
220
- const p = provider as rt.gw.file.KeyBagProviderFile;
221
- const { sysFS } = await p._prepare(name);
222
- diskBag = await sysFS.readfile((await p._prepare(name)).fName).then((data) => {
223
- return JSON.parse(sthis.txt.decode(data)) as rt.kb.KeysItem;
224
- });
225
- }
226
- }
227
- expect(Object.values(diskBag.keys).length).toEqual(keys.length);
228
- });
229
- });
230
-
231
- describe("KeyedCryptoStore", () => {
232
- let kb: rt.kb.KeyBag;
233
- // let logger: Logger;
234
- let baseUrl: URI;
235
- const sthis = ensureSuperThis();
236
- let loader: bs.Loadable;
237
- beforeEach(async () => {
238
- await sthis.start();
239
- // logger = MockLogger().logger;
240
- // let kbUrl: URI;
241
- // if (runtimeFn().isBrowser) {
242
- // kbUrl = URI.from("indexeddb://fp-keybag");
243
- // baseUrl = URI.from("indexeddb://fp-keyed-crypto-store");
244
- // } else {
245
- // kbUrl = URI.merge(`file://./dist/tests/key.bag`, sthis.env.get("FP_KEYBAG_URL"));
246
- // baseUrl = URI.merge("file://./dist/tests/keyed-crypto-store", sthis.env.get("FP_STORAGE_URL"));
247
- // }
248
- // baseUrl = baseUrl.build().defParam(PARAM.NAME, "test").URI();
249
-
250
- const envURL = sthis.env.get("FP_KEYBAG_URL");
251
- if (envURL) {
252
- baseUrl = bs.getDefaultURI(sthis, URI.from(envURL).protocol);
253
- } else {
254
- baseUrl = bs.getDefaultURI(sthis);
255
- }
256
- baseUrl = baseUrl.build().setParam(PARAM.NAME, "test").URI();
257
- kb = await rt.kb.getKeyBag(sthis, {});
258
- loader = mockLoader(sthis);
259
- });
260
- it("no crypto", async () => {
261
- const url = baseUrl.build().setParam(PARAM.STORE_KEY, "insecure").URI();
262
-
263
- for (const pstore of (await bs.createAttachedStores(url, loader, "insecure")).stores.baseStores) {
264
- const store = await pstore;
265
- // await store.start();
266
- const kc = await store.keyedCrypto();
267
- expect(kc.constructor.name).toBe("noCrypto");
268
- // expect(kc.isEncrypting).toBe(false);
269
- expect(kc.constructor.name).toBe("noCrypto");
270
- // expect(kc.isEncrypting).toBe(false);
271
- }
272
- });
273
-
274
- it("create key", async () => {
275
- for (const pstore of (await bs.createAttachedStores(baseUrl, loader, "insecure")).stores.baseStores) {
276
- const store = await pstore; // await bs.ensureStart(await pstore, logger);
277
- const kc = await store.keyedCrypto();
278
- expect(kc.constructor.name).toBe("cryptoAction");
279
- // expect(kc.isEncrypting).toBe(true);
280
- expect(store.url().getParam(PARAM.STORE_KEY)).toBe(
281
- `@test-${storeType2DataMetaWal(store.url().getParam(PARAM.STORE) as StoreType)}@`,
282
- );
283
- }
284
- });
285
-
286
- it("key ref keybag", async () => {
287
- const key = base58btc.encode(kb.rt.crypto.randomBytes(kb.rt.keyLength));
288
- const genKey = await kb.getNamedKey("@heute@", false, key);
289
- const url = baseUrl.build().setParam(PARAM.STORE_KEY, "@heute@").URI();
290
- for (const pstore of (await bs.createAttachedStores(url, loader, "insecure")).stores.baseStores) {
291
- const store = await pstore;
292
- // await store.start();
293
- expect(store.url().getParam(PARAM.STORE_KEY)).toBe(`@heute@`);
294
- const kc = await store.keyedCrypto();
295
- expect(kc.constructor.name).toBe("cryptoAction");
296
- const testData = kb.rt.crypto.randomBytes(1024);
297
- const iv = kb.rt.crypto.randomBytes(12);
298
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
299
- const blk = await kc._encrypt({ bytes: testData, key: (await kc.key.get())!.key, iv });
300
- expect(blk).not.toEqual(testData);
301
- const fpkey = (await genKey.Ok().get()) as bs.KeyWithFingerPrint;
302
- expect(fpkey.fingerPrint).toEqual(fpkey.fingerPrint);
303
- const dec = new Uint8Array(await kc.crypto.decrypt(kc.algo(iv), fpkey.key, blk));
304
- expect(dec).toEqual(testData);
305
- }
306
- });
307
-
308
- it("key", async () => {
309
- const key = base58btc.encode(kb.rt.crypto.randomBytes(kb.rt.keyLength));
310
- const url = baseUrl.build().setParam(PARAM.STORE_KEY, key).URI();
311
- for (const pstore of (await bs.createAttachedStores(url, loader, "insecure")).stores.baseStores) {
312
- // for (const pstore of [strt.makeDataStore(loader), strt.makeMetaStore(loader), strt.makeWALStore(loader)]) {
313
- const store = await pstore;
314
- // await store.start();
315
- expect(store.url().getParam(PARAM.STORE_KEY)).toBe(key);
316
- const kc = await store.keyedCrypto();
317
- expect(kc.constructor.name).toBe("cryptoAction");
318
- const testData = kb.rt.crypto.randomBytes(1024);
319
- const iv = kb.rt.crypto.randomBytes(12);
320
- const ks = (await kc.key.get()) as bs.KeyWithFingerPrint;
321
- const blk = await kc._encrypt({ bytes: testData, key: ks.key, iv });
322
- expect(blk).not.toEqual(testData);
323
- const dec = await kc._decrypt({ bytes: blk, key: ks.key, iv });
324
- expect(dec).toEqual(testData);
325
- }
326
- });
327
- });
328
-
329
- describe("KeyedCrypto", () => {
330
- let kb: rt.kb.KeyBag;
331
- let kycr: bs.CryptoAction;
332
- let keyStr: string;
333
- const sthis = ensureSuperThis();
334
- beforeEach(async () => {
335
- // let url: URI;
336
- // if (runtimeFn().isBrowser) {
337
- // url = URI.from("indexeddb://fp-keybag");
338
- // } else {
339
- // url = URI.merge(`file://./dist/tests/key.bag`, sthis.env.get("FP_KEYBAG_URL"));
340
- // }
341
- kb = await rt.kb.getKeyBag(sthis, {
342
- // url,
343
- });
344
- keyStr = base58btc.encode(kb.rt.crypto.randomBytes(kb.rt.keyLength));
345
- kycr = await rt.kc.keyedCryptoFactory(URI.from(`test://bla?storekey=${keyStr}`), kb, sthis);
346
- });
347
- it("codec explict iv", async () => {
348
- const testData = kb.rt.crypto.randomBytes(1024);
349
- const iv = kb.rt.crypto.randomBytes(12);
350
- const codec = kycr.codec(iv, { noIVVerify: true });
351
- const blk = (await codec.encode(testData)) as Uint8Array;
352
- const myDec = cborg.decode(blk) as bs.IvKeyIdData;
353
- expect(myDec.iv).toEqual(iv);
354
- const kc = (await kycr.key.get()) as bs.KeyWithFingerPrint;
355
- expect(base58btc.encode(myDec.keyId)).toEqual(kc.fingerPrint);
356
- const dec = await codec.decode(blk);
357
- expect(dec.data).toEqual(testData);
358
- });
359
-
360
- it("codec implict iv", async () => {
361
- const testData = kb.rt.crypto.randomBytes(1024);
362
- const codec = kycr.codec();
363
- const blk = await codec.encode(testData);
364
- expect(blk.length).toBeGreaterThanOrEqual(12 + testData.length);
365
- const dec = await codec.decode(blk);
366
- expect(dec.data).toEqual(testData);
367
- });
368
-
369
- it("codec implict iv same for multiple clients", async () => {
370
- const testData = kb.rt.crypto.randomBytes(1024);
371
- const codec = kycr.codec();
372
- const blk = await codec.encode(testData);
373
- const blk2 = await codec.encode(testData);
374
- expect(blk).toEqual(blk2);
375
- });
376
- });
@@ -1,298 +0,0 @@
1
- import * as codec from "@ipld/dag-cbor";
2
- import { sha256 as hasher } from "multiformats/hashes/sha2";
3
- import { CID } from "multiformats/cid";
4
- import { CRDTMeta, CarTransaction, IndexTransactionMeta, SuperThis, bs, ensureSuperThis, rt } from "@fireproof/core";
5
- import { simpleBlockOpts } from "../helpers.js";
6
-
7
- const { isCarBlockItemReady, isCarBlockItemStale, anyBlock2FPBlock } = bs;
8
- type FPBlock = bs.FPBlock;
9
-
10
- class MyMemoryBlockStore extends bs.EncryptedBlockstore {
11
- readonly memblock = new Map<string, FPBlock>();
12
- loader: bs.Loader;
13
- constructor(sthis: SuperThis) {
14
- const ebOpts = simpleBlockOpts(sthis, "MyMemoryBlockStore"); //, "MyMemoryBlockStore");
15
- // const ebOpts = {
16
- // name: "MyMemoryBlockStore",
17
- // } as bs.BlockstoreOpts;
18
- super(sthis, ebOpts);
19
- this.loader = new bs.Loader(sthis, ebOpts);
20
- }
21
- ready(): Promise<void> {
22
- return Promise.resolve();
23
- }
24
- close(): Promise<void> {
25
- return this.loader.close();
26
- }
27
- readonly transactions = new Set<CarTransaction>();
28
- // readonly lastTxMeta?: TransactionMeta;
29
- readonly compacting: boolean = false;
30
-
31
- override async put(fp: FPBlock): Promise<void> {
32
- this.memblock.set(fp.cid.toString(), fp);
33
- }
34
-
35
- // transaction<M ext(fn: (t: CarTransaction) => Promise<MetaType>, opts?: { noLoader: boolean }): Promise<MetaType> {
36
- // throw new Error("Method not implemented.");
37
- // }
38
-
39
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
- getFile(car: bs.AnyLink, cid: bs.AnyLink, isPublic?: boolean): Promise<Uint8Array> {
41
- throw new Error("Method not implemented.");
42
- }
43
- compact(): Promise<void> {
44
- throw new Error("Method not implemented.");
45
- }
46
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
47
- defaultCompact(blocks: bs.CompactionFetcher): Promise<bs.TransactionMeta> {
48
- throw new Error("Method not implemented.");
49
- }
50
- }
51
-
52
- describe("basic Loader simple", function () {
53
- let loader: bs.Loader;
54
- let block: FPBlock;
55
- let t: CarTransaction;
56
- const sthis = ensureSuperThis();
57
-
58
- afterEach(async () => {
59
- await loader.close();
60
- await loader.destroy();
61
- });
62
-
63
- beforeEach(async () => {
64
- const testDbName = "test-loader-commit";
65
- await sthis.start();
66
- const mockM = new MyMemoryBlockStore(sthis);
67
- t = new bs.CarTransactionImpl(mockM as bs.EncryptedBlockstore);
68
- loader = new bs.Loader(sthis, {
69
- ...simpleBlockOpts(sthis, testDbName),
70
- public: true,
71
- });
72
- await loader.ready();
73
- block = await anyBlock2FPBlock(
74
- await rt.mf.block.encode({
75
- value: { hello: "world" },
76
- hasher,
77
- codec,
78
- }),
79
- );
80
- await t.put(block);
81
- await mockM.put(block);
82
- });
83
- it("should have an empty car log", function () {
84
- expect(loader.carLog.length).toBe(0);
85
- });
86
- it("should commit", async () => {
87
- const carGroup = await loader.commit(t, { head: [block.cid] });
88
- expect(loader.carLog.length).toBe(1);
89
- const reader = await loader.loadCar(carGroup[0], loader.attachedStores.local());
90
- assert(isCarBlockItemReady(reader));
91
- expect(reader).toBeTruthy();
92
- const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
93
- expect(parsed.cars).toBeTruthy();
94
- expect(parsed.cars.length).toBe(0);
95
- expect(parsed.meta).toBeTruthy();
96
- expect(parsed.meta.head).toBeTruthy();
97
- });
98
- });
99
-
100
- describe("basic Loader with two commits", function () {
101
- let loader: bs.Loader;
102
- let block: FPBlock;
103
- let block2: FPBlock;
104
- let block3: FPBlock;
105
- let block4: FPBlock;
106
- let t: CarTransaction;
107
- let carCid: bs.CarGroup;
108
- let carCid0: bs.CarGroup;
109
-
110
- const sthis = ensureSuperThis();
111
-
112
- afterEach(async () => {
113
- await loader.close();
114
- await loader.destroy();
115
- });
116
-
117
- beforeEach(async () => {
118
- await sthis.start();
119
- const mockM = new MyMemoryBlockStore(sthis);
120
- t = new bs.CarTransactionImpl(mockM);
121
- loader = new bs.Loader(sthis, {
122
- ...simpleBlockOpts(sthis, "test-loader-two-commit"),
123
- public: true,
124
- });
125
- await loader.ready();
126
-
127
- block = await anyBlock2FPBlock(
128
- await rt.mf.block.encode({
129
- value: { hello: "world" },
130
- hasher,
131
- codec,
132
- }),
133
- );
134
- await t.put(block);
135
- carCid0 = await loader.commit(t, { head: [block.cid] });
136
-
137
- block2 = await anyBlock2FPBlock(
138
- await rt.mf.block.encode({
139
- value: { hello: "universe" },
140
- hasher,
141
- codec,
142
- }),
143
- );
144
- await t.put(block2);
145
- carCid = await loader.commit(t, { head: [block2.cid] });
146
-
147
- block3 = await anyBlock2FPBlock(
148
- await rt.mf.block.encode({
149
- value: { hello: "multiverse" },
150
- hasher,
151
- codec,
152
- }),
153
- );
154
- await t.put(block3);
155
-
156
- block4 = await anyBlock2FPBlock(
157
- await rt.mf.block.encode({
158
- value: { hello: "megaverse" },
159
- hasher,
160
- codec,
161
- }),
162
- );
163
-
164
- await t.put(block4);
165
- });
166
-
167
- it("should have a car log", function () {
168
- expect(loader.carLog.length).toBe(2);
169
- expect(loader.carLog.asArray()[0].toString()).toBe(carCid.toString());
170
- expect(loader.carLog.asArray()[1].toString()).toBe(carCid0.toString());
171
- });
172
-
173
- it("should commit", async () => {
174
- const reader = await loader.loadCar(carCid[0], loader.attachedStores.local());
175
- expect(reader).toBeTruthy();
176
- assert(isCarBlockItemReady(reader));
177
- const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
178
- expect(parsed.cars).toBeTruthy();
179
- expect(parsed.compact.length).toBe(0);
180
- expect(parsed.cars.length).toBe(1);
181
- expect(parsed.meta).toBeTruthy();
182
- expect(parsed.meta.head).toBeTruthy();
183
- });
184
-
185
- it("should compact", async () => {
186
- const compactCid = await loader.commit(t, { head: [block2.cid] }, { compact: true });
187
- expect(loader.carLog.length).toBe(1);
188
-
189
- const reader = await loader.loadCar(compactCid[0], loader.attachedStores.local());
190
- expect(reader).toBeTruthy();
191
- assert(isCarBlockItemReady(reader));
192
- const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
193
- expect(parsed.cars).toBeTruthy();
194
- expect(parsed.compact.length).toBe(2);
195
- expect(parsed.cars.length).toBe(0);
196
- expect(parsed.meta).toBeTruthy();
197
- expect(parsed.meta.head).toBeTruthy();
198
- });
199
-
200
- it("compact should erase old files", async () => {
201
- const cs = await loader.attachedStores.local().active.car;
202
- await loader.commit(t, { head: [block2.cid] }, { compact: true });
203
- expect(loader.carLog.length).toBe(1);
204
- await loader.commit(t, { head: [block3.cid] }, { compact: false });
205
- expect(loader.carLog.length).toBe(2);
206
- expect(await cs.load(carCid[0])).toBeTruthy();
207
- await loader.commit(t, { head: [block3.cid] }, { compact: true });
208
- expect(loader.carLog.length).toBe(1);
209
- const e0 = await cs.load(carCid[0]).catch((e) => e);
210
- expect(e0 instanceof Error).toBeTruthy();
211
- await loader.commit(t, { head: [block4.cid] }, { compact: false });
212
- expect(loader.carLog.length).toBe(2);
213
-
214
- const e = await loader.loadCar(carCid[0], loader.attachedStores.local());
215
- expect(e).toBeTruthy();
216
- assert(isCarBlockItemStale(e));
217
- expect(e.item.status).toBe("stale");
218
- expect(e.item.statusCause.message).toMatch(/(missing car file)|(not found)/);
219
- }, 10000);
220
- });
221
-
222
- describe("basic Loader with index commits", function () {
223
- let block: FPBlock;
224
- let ib: bs.EncryptedBlockstore;
225
- let indexerResult: IndexTransactionMeta;
226
- let cid: CID;
227
- // let indexMap: Map<string, CID>;
228
- const sthis = ensureSuperThis();
229
-
230
- afterEach(async () => {
231
- await ib.close();
232
- await ib.destroy();
233
- });
234
-
235
- beforeEach(async () => {
236
- const name = "test-loader-index" + Math.random();
237
- await sthis.start();
238
- // t = new CarTransaction()
239
- ib = new bs.EncryptedBlockstore(sthis, simpleBlockOpts(sthis, name));
240
- await ib.ready();
241
- block = await anyBlock2FPBlock(
242
- await rt.mf.block.encode({
243
- value: { hello: "world" },
244
- hasher,
245
- codec,
246
- }),
247
- );
248
- // console.log('block', block.cid)
249
-
250
- cid = CID.parse("bafybeia4luuns6dgymy5kau5rm7r4qzrrzg6cglpzpogussprpy42cmcn4");
251
- indexerResult = {
252
- indexes: {
253
- hello: {
254
- byId: cid,
255
- byKey: cid,
256
- head: [cid as CID<unknown, number, number, 1>],
257
- name: "hello",
258
- map: "(doc) => doc.hello",
259
- },
260
- },
261
- };
262
- // indexMap = new Map();
263
- });
264
-
265
- it("should start with an empty car log", function () {
266
- expect(ib.loader).toBeTruthy();
267
- expect(ib.loader.carLog.length).toBe(0);
268
- });
269
-
270
- it("should commit the index metadata", async () => {
271
- const { cars: carCid } = await ib.transaction<IndexTransactionMeta>(
272
- async (t) => {
273
- await t.put(block);
274
- return indexerResult;
275
- } /* , indexMap */,
276
- );
277
-
278
- expect(carCid).toBeTruthy();
279
- expect(ib.loader).toBeTruthy();
280
- const carLog = ib.loader.carLog;
281
-
282
- expect(carLog.length).toBe(1);
283
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
284
- const reader = await ib.loader.loadCar(carCid![0], ib.loader.attachedStores.local());
285
- expect(reader).toBeTruthy();
286
- assert(isCarBlockItemReady(reader));
287
- const parsed = await bs.parseCarFile<IndexTransactionMeta>(reader, sthis.logger);
288
- expect(parsed.cars).toBeTruthy();
289
- expect(parsed.cars.length).toBe(0);
290
- expect(parsed.meta).toBeTruthy();
291
- expect(parsed.meta.indexes).toBeTruthy();
292
- const indexes = parsed.meta.indexes;
293
- expect(indexes).toBeTruthy();
294
- expect(indexes.hello).toBeTruthy();
295
- expect(indexes.hello.map).toBe("(doc) => doc.hello");
296
- expect(indexes.hello.name).toBe("hello");
297
- });
298
- });