@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,777 +0,0 @@
1
- import { storageURL } from "../helpers.js";
2
- import { docs } from "./fireproof.test.fixture.js";
3
- import { CID } from "multiformats/cid";
4
-
5
- import {
6
- ConfigOpts,
7
- DocResponse,
8
- DocWithId,
9
- Index,
10
- IndexRows,
11
- MapFn,
12
- bs,
13
- index,
14
- ensureSuperThis,
15
- fireproof,
16
- Database,
17
- isDatabase,
18
- PARAM,
19
- sleep,
20
- } from "@fireproof/core";
21
- import { URI } from "@adviser/cement";
22
-
23
- export function carLogIncludesGroup(list: bs.AnyLink[], cid: CID) {
24
- return list.some((c) => c.equals(cid));
25
- }
26
-
27
- interface FooType {
28
- readonly foo: string;
29
- }
30
-
31
- interface FireType {
32
- readonly fire: string;
33
- }
34
-
35
- describe("dreamcode", function () {
36
- interface Doc {
37
- text: string;
38
- dream: boolean;
39
- }
40
- let ok: DocResponse;
41
- let doc: DocWithId<Doc>;
42
- let result: IndexRows<Doc, string>;
43
- let db: Database;
44
- const sthis = ensureSuperThis();
45
- afterEach(async () => {
46
- await db.close();
47
- await db.destroy();
48
- });
49
- beforeEach(async () => {
50
- await sthis.start();
51
- db = fireproof("test-db");
52
- ok = await db.put({ _id: "test-1", text: "fireproof", dream: true });
53
- doc = await db.get(ok.id);
54
- result = await db.query("text", { range: ["a", "z"] });
55
- });
56
- it("should put", function () {
57
- expect(ok).toBeTruthy();
58
- expect(ok.id).toBe("test-1");
59
- });
60
- it("should get", function () {
61
- expect(doc.text).toBe("fireproof");
62
- });
63
- it("should query", function () {
64
- expect(result).toBeTruthy();
65
- expect(result.rows).toBeTruthy();
66
- expect(result.rows.length).toBe(1);
67
- expect(result.rows[0].key).toBe("fireproof");
68
- });
69
- it("should query with function", async () => {
70
- const result = await db.query<Doc, boolean>((doc) => doc.dream);
71
- expect(result).toBeTruthy();
72
- expect(result.rows).toBeTruthy();
73
- expect(result.rows.length).toBe(1);
74
- expect(result.rows[0].key).toBe(true);
75
- });
76
- });
77
-
78
- describe("public API", function () {
79
- interface Doc {
80
- foo: string;
81
- }
82
- let db: Database;
83
- let ok: DocResponse;
84
- let doc: DocWithId<Doc>;
85
- let query: IndexRows<Doc, string>;
86
- const sthis = ensureSuperThis();
87
-
88
- afterEach(async () => {
89
- await db.close();
90
- await db.destroy();
91
- });
92
-
93
- beforeEach(async () => {
94
- await sthis.start();
95
- db = fireproof("test-api");
96
- // index = index(db, 'test-index', (doc) => doc.foo)
97
- ok = await db.put({ _id: "test", foo: "bar" });
98
- doc = await db.get("test");
99
- query = await db.query<Doc, string>((doc) => doc.foo);
100
- });
101
- it("should be a ledger instance", function () {
102
- expect(db).toBeTruthy();
103
- expect(isDatabase(db)).toBeTruthy();
104
- });
105
- it("should put", function () {
106
- expect(ok).toBeTruthy();
107
- expect(ok.id).toBe("test");
108
- });
109
- it("should get", function () {
110
- expect(doc.foo).toBe("bar");
111
- });
112
- it("should query", function () {
113
- expect(query).toBeTruthy();
114
- expect(query.rows).toBeTruthy();
115
- expect(query.rows.length).toBe(1);
116
- expect(query.rows[0].key).toBe("bar");
117
- });
118
- });
119
-
120
- describe("database fullconfig", () => {
121
- const sthis = ensureSuperThis();
122
- it("have the right name", async () => {
123
- let protocol: string | undefined;
124
- const url = sthis.env.get("FP_STORAGE_URL");
125
- let path = "";
126
- if (url) {
127
- const uri = URI.from(url);
128
- protocol = uri.protocol;
129
- path = uri.pathname;
130
- }
131
- const base = bs.getDefaultURI(sthis, protocol).build().appendRelative(path).URI();
132
- const db = fireproof("my-funky-name", {
133
- storeUrls: {
134
- base: base,
135
- // meta: `${base}/meta?taste=${taste}`,
136
- data: {
137
- meta: base.build().appendRelative("funky/meta"),
138
- car: base.build().appendRelative("funky/data"),
139
- wal: base.build().appendRelative("funky/wal"),
140
- },
141
- idx: {
142
- meta: base.build().appendRelative("funky/idx-meta"),
143
- car: base.build().appendRelative("funky/idx-data"),
144
- wal: base.build().appendRelative("funky/idx-wal"),
145
- },
146
- // wal: `${base}/wal?taste=${taste}`,
147
- },
148
- });
149
- await db.ready();
150
-
151
- const carStore = await db.ledger.crdt.blockstore.loader.attachedStores.local().active.car;
152
- expect(carStore.url().getParam(PARAM.NAME)).toBe("my-funky-name");
153
- const metaStore = await db.ledger.crdt.blockstore.loader.attachedStores.local().active.meta;
154
- expect(metaStore.url().getParam(PARAM.NAME)).toBe("my-funky-name");
155
- const walStore = await db.ledger.crdt.blockstore.loader.attachedStores.local().active.wal;
156
- expect(walStore.url().getParam(PARAM.NAME)).toBe("my-funky-name");
157
-
158
- expect(db).toBeTruthy();
159
- expect(db.name).toBe("my-funky-name");
160
- await db.put({ _id: "test", foo: "bar" });
161
- expect(db.name).toBe("my-funky-name");
162
- });
163
- });
164
-
165
- describe("basic ledger", function () {
166
- interface Doc {
167
- foo: string;
168
- }
169
- let db: Database;
170
- const sthis = ensureSuperThis();
171
- afterEach(async () => {
172
- await db.close();
173
- await db.destroy();
174
- });
175
- beforeEach(async () => {
176
- await sthis.start();
177
- db = fireproof("test-basic");
178
- });
179
- it("can put with id", async () => {
180
- const ok = await db.put({ _id: "test", foo: "bar" });
181
- expect(ok).toBeTruthy();
182
- expect(ok.id).toBe("test");
183
- });
184
- it("can put without id", async () => {
185
- const ok = await db.put({ foo: "bam" });
186
- expect(ok).toBeTruthy();
187
- const got = await db.get<Doc>(ok.id);
188
- expect(got.foo).toBe("bam");
189
- });
190
- it("can bulk an array", async () => {
191
- const ok = await db.bulk([{ foo: "cool" }, { foo: "dude" }]);
192
- expect(ok).toBeTruthy();
193
- expect(ok.ids.length).toBe(2);
194
- const got = await db.get<Doc>(ok.ids[0]);
195
- expect(got.foo).toBe("cool");
196
- const got2 = await db.get<Doc>(ok.ids[1]);
197
- expect(got2.foo).toBe("dude");
198
- });
199
- it("can define an index", async () => {
200
- const ok = await db.put({ _id: "test", foo: "bar" });
201
- expect(ok).toBeTruthy();
202
- const idx = index<{ foo: string }, string>(db, "test-index", (doc) => doc.foo);
203
- const result = await idx.query();
204
- expect(result).toBeTruthy();
205
- expect(result.rows).toBeTruthy();
206
- expect(result.rows.length).toBe(1);
207
- expect(result.rows[0].key).toBe("bar");
208
- });
209
- it("can define an index with a default function", async () => {
210
- const ok = await db.put({ _id: "test", foo: "bar" });
211
- expect(ok).toBeTruthy();
212
- const idx = index(db, "foo");
213
- const result = await idx.query();
214
- expect(result).toBeTruthy();
215
- expect(result.rows).toBeTruthy();
216
- expect(result.rows.length).toBe(1);
217
- expect(result.rows[0].key).toBe("bar");
218
- });
219
- it("should query with multiple successive functions", async () => {
220
- interface TestDoc {
221
- _id: string;
222
- foo: string;
223
- baz: string;
224
- }
225
- await db.put<TestDoc>({ _id: "test", foo: "bar", baz: "qux" });
226
- const query1 = await db.query<TestDoc, string>((doc) => {
227
- return doc.foo;
228
- });
229
- const query2 = await db.query<TestDoc, string>((doc) => {
230
- return doc.baz;
231
- });
232
- expect(query1).toBeTruthy();
233
- expect(query1.rows).toBeTruthy();
234
- expect(query1.rows.length).toBe(1);
235
- expect(query2).toBeTruthy();
236
- expect(query2.rows).toBeTruthy();
237
- expect(query2.rows.length).toBe(1);
238
- });
239
- });
240
-
241
- describe("benchmarking with compaction", function () {
242
- let db: Database;
243
- const sthis = ensureSuperThis();
244
- afterEach(async () => {
245
- await db.close();
246
- await db.destroy();
247
- });
248
- beforeEach(async () => {
249
- // erase the existing test data
250
- await sthis.start();
251
- db = fireproof("test-benchmark-compaction", { autoCompact: 3 });
252
- });
253
- it.skip("insert during compaction", async () => {
254
- const ok = await db.put({ _id: "test", foo: "fast" });
255
- expect(ok).toBeTruthy();
256
- expect(ok.id).toBe("test");
257
- expect(db.ledger.crdt.clock.head).toBeTruthy();
258
- expect(db.ledger.crdt.clock.head.length).toBe(1);
259
-
260
- const numDocs = 20;
261
- const batchSize = 5;
262
-
263
- const doing = null;
264
- for (let i = 0; i < numDocs; i += batchSize) {
265
- // console.log("batch", i, db.blockstore.loader?.carLog.length);
266
- const ops: Promise<DocResponse>[] = [];
267
- db.put({ foo: "fast" });
268
- // await doing
269
- // doing = db.compact()
270
- db.put({ foo: "fast" });
271
- for (let j = 0; j < batchSize && i + j < numDocs; j++) {
272
- ops.push(
273
- db.put({
274
- data: Math.random(),
275
- fire: Math.random().toString().repeat(25),
276
- }),
277
- );
278
- }
279
- const blocks = db.ledger.crdt.blockstore as bs.EncryptedBlockstore;
280
- const loader = blocks.loader;
281
- expect(loader).toBeTruthy();
282
-
283
- db.put({
284
- data: Math.random(),
285
- fire: Math.random().toString().repeat(25),
286
- });
287
-
288
- await Promise.all(ops);
289
- // console.log("batch done", i, db.blockstore.loader?.carLog.length);
290
- }
291
- await doing;
292
- });
293
- });
294
-
295
- describe("benchmarking a ledger", function () {
296
- let db: Database;
297
- const sthis = ensureSuperThis();
298
- afterEach(async () => {
299
- await db.close();
300
- await db.destroy();
301
- });
302
- beforeEach(async () => {
303
- await sthis.start();
304
- // erase the existing test data
305
- db = fireproof("test-benchmark", { autoCompact: 100000, public: true });
306
- // db = fireproof(null, {autoCompact: 100000})
307
- });
308
-
309
- // run benchmarking tests
310
- // remove skip below
311
- // run:
312
- // npm test -- --grep 'insert and read many records'
313
- //
314
- it.skip("passing: insert and read many records", async () => {
315
- const ok = await db.put({ _id: "test", foo: "fast" });
316
- expect(ok).toBeTruthy();
317
- expect(ok.id).toBe("test");
318
-
319
- expect(db.ledger.crdt.clock.head).toBeTruthy();
320
- expect(db.ledger.crdt.clock.head.length).toBe(1);
321
-
322
- const numDocs = 2500;
323
- const batchSize = 500;
324
- // console.time(`insert and read ${numDocs} records`);
325
-
326
- for (let i = 0; i < numDocs; i += batchSize) {
327
- const ops: Promise<DocResponse>[] = [];
328
- for (let j = 0; j < batchSize && i + j < numDocs; j++) {
329
- ops.push(
330
- db
331
- .put({
332
- _id: `test${i + j}`,
333
- fire: Math.random()
334
- .toString()
335
- .repeat(25 * 1024),
336
- })
337
- .then((ok) => {
338
- db.get<{ fire: string }>(`test${i + j}`).then((doc) => {
339
- expect(doc.fire).toBeTruthy();
340
- });
341
- return ok;
342
- }),
343
- );
344
- }
345
- await Promise.all(ops);
346
- }
347
-
348
- // console.timeEnd(`insert and read ${numDocs} records`);
349
-
350
- // console.time('allDocs')
351
- // const allDocsResult2 = await db.allDocs()
352
- // console.timeEnd('allDocs')
353
- // equals(allDocsResult2.rows.length, numDocs+1)
354
-
355
- // console.time("open new DB");
356
- const newDb = fireproof("test-benchmark", { autoCompact: 100000, public: true });
357
- const doc = await newDb.get<{ foo: string }>("test");
358
- expect(doc.foo).toBe("fast");
359
- // console.timeEnd("open new DB");
360
-
361
- // console.time("changes");
362
- const result = await db.changes(); // takes 1.5 seconds (doesn't have to load blocks from cars)
363
- // console.timeEnd("changes");
364
- expect(result.rows.length).toBe(numDocs + 1);
365
-
366
- // this takes 1 minute w 1000 docs
367
- // console.time("changes new DB");
368
- const result2 = await newDb.changes();
369
- // console.timeEnd("changes new DB");
370
- expect(result2.rows.length).toBe(numDocs + 1);
371
-
372
- await sleep(1000);
373
-
374
- // console.time("COMPACT");
375
- await db.compact();
376
- // console.timeEnd("COMPACT");
377
-
378
- // todo compaction should not need this write to show in the new db
379
- await db.put({ _id: "compacted-test", foo: "bar" });
380
-
381
- // console.log('car log length', db._crdt.blockstore.loader.carLog.length)
382
- const blocks = db.ledger.crdt.blockstore as bs.EncryptedBlockstore;
383
- const loader = blocks.loader;
384
- expect(loader).toBeTruthy();
385
- expect(loader.carLog.length).toBe(2);
386
-
387
- // console.time('allDocs new DB') // takes forever on 5k
388
- // const allDocsResult = await newDb.allDocs()
389
- // console.timeEnd('allDocs new DB')
390
- // equals(allDocsResult.rows.length, numDocs+1)
391
- await sleep(100);
392
-
393
- // console.time("compacted reopen again");
394
- const newDb2 = fireproof("test-benchmark", { autoCompact: 100000, public: true });
395
- const doc21 = await newDb2.get<FooType>("test");
396
- expect(doc21.foo).toBe("fast");
397
- const blocks2 = newDb2.ledger.crdt.blockstore as bs.EncryptedBlockstore;
398
- const loader2 = blocks2.loader;
399
- expect(loader2).toBeTruthy();
400
-
401
- expect(loader2.carLog.length).toBe(2);
402
-
403
- const doc2 = await newDb2.get<FooType>("compacted-test");
404
-
405
- expect(doc2.foo).toBe("bar");
406
-
407
- expect(doc2.foo).toBe("bar");
408
- // console.timeEnd("compacted reopen again");
409
-
410
- await sleep(100);
411
-
412
- // console.time("compacted changes new DB2");
413
- const result3 = await newDb2.changes();
414
- // console.timeEnd("compacted changes new DB2");
415
- expect(result3.rows.length).toBe(numDocs + 2);
416
-
417
- // console.time("compacted newDb2 insert and read 100 records");
418
- const ops2: Promise<void>[] = [];
419
- for (let i = 0; i < 100; i++) {
420
- const ok = newDb2
421
- .put({
422
- _id: `test${i}`,
423
- fire: Math.random()
424
- .toString()
425
- .repeat(25 * 1024),
426
- })
427
- .then(() => {
428
- newDb2.get<{ fire: number }>(`test${i}`).then((doc) => {
429
- expect(doc.fire).toBeTruthy();
430
- });
431
- });
432
- ops2.push(ok);
433
- }
434
- await Promise.all(ops2);
435
- // console.timeEnd("compacted newDb2 insert and read 100 records");
436
-
437
- // triggers OOM on my machine
438
- // await sleep(100)
439
- // console.time('compacted allDocs new DB2')
440
- // const allDocsResult3 = await newDb2.allDocs()
441
- // console.timeEnd('compacted allDocs new DB2')
442
- // equals(allDocsResult3.rows.length, numDocs+2)
443
- }, 20000000);
444
- });
445
-
446
- describe("Reopening a ledger", function () {
447
- interface Doc {
448
- foo: string;
449
- }
450
- let db: Database;
451
- const sthis = ensureSuperThis();
452
- afterEach(async () => {
453
- await db.close();
454
- await db.destroy();
455
- });
456
- beforeEach(async () => {
457
- // erase the existing test data
458
- await sthis.start();
459
-
460
- db = fireproof("test-reopen", { autoCompact: 100000 });
461
- const ok = await db.put({ _id: "test", foo: "bar" });
462
- expect(ok).toBeTruthy();
463
- expect(ok.id).toBe("test");
464
-
465
- expect(db.ledger.crdt.clock.head).toBeDefined();
466
- expect(db.ledger.crdt.clock.head.length).toBe(1);
467
- });
468
-
469
- it("should persist data", async () => {
470
- const doc = await db.get<Doc>("test");
471
- expect(doc.foo).toBe("bar");
472
- });
473
-
474
- it("should have the same data on reopen", async () => {
475
- const db2 = fireproof("test-reopen");
476
- const doc = await db2.get<FooType>("test");
477
- expect(doc.foo).toBe("bar");
478
- expect(db2.ledger.crdt.clock.head).toBeDefined();
479
- expect(db2.ledger.crdt.clock.head.length).toBe(1);
480
- expect(db2.ledger.crdt.clock.head).toEqual(db.ledger.crdt.clock.head);
481
- await db2.close();
482
- });
483
-
484
- it("should have a car in the car log", async () => {
485
- await db.ledger.crdt.ready();
486
- const blocks = db.ledger.crdt.blockstore as bs.EncryptedBlockstore;
487
- const loader = blocks.loader;
488
- expect(loader).toBeDefined();
489
- expect(loader.carLog).toBeDefined();
490
- expect(loader.carLog.length).toBe(1 + 1 /* genesis */);
491
- });
492
-
493
- it("should have carlog after reopen", async () => {
494
- const db2 = fireproof("test-reopen");
495
- await db2.ledger.crdt.ready();
496
- const blocks = db2.ledger.crdt.blockstore as bs.EncryptedBlockstore;
497
- const loader = blocks.loader;
498
- expect(loader).toBeDefined();
499
- expect(loader.carLog).toBeDefined();
500
- expect(loader.carLog.length).toBe(1 + 1 /* genesis */);
501
- await db2.close();
502
- });
503
-
504
- it("faster, should have the same data on reopen after reopen and update", async () => {
505
- for (let i = 0; i < 4; i++) {
506
- // console.log('iteration', i)
507
- const db = fireproof("test-reopen");
508
- // assert(db._crdt.xready());
509
- await db.ready();
510
- const blocks = db.ledger.crdt.blockstore as bs.EncryptedBlockstore;
511
- const loader = blocks.loader;
512
- expect(loader.carLog.length).toBe(i + 1 + 1 /* genesis */);
513
- const ok = await db.put({ _id: `test${i}`, fire: "proof".repeat(50 * 1024) });
514
- expect(ok).toBeTruthy();
515
- expect(loader.carLog.length).toBe(i + 2 + 1 /* genesis */);
516
- const doc = await db.get<FireType>(`test${i}`);
517
- expect(doc.fire).toBe("proof".repeat(50 * 1024));
518
- await db.close();
519
- }
520
- }, 20000);
521
-
522
- it.skip("passing slow, should have the same data on reopen after reopen and update", async () => {
523
- for (let i = 0; i < 200; i++) {
524
- // console.log("iteration", i);
525
- // console.time("db open");
526
- const db = fireproof("test-reopen", { autoCompact: 1000 }); // try with 10
527
- // assert(db._crdt.ready);
528
- await db.ready();
529
- // console.timeEnd("db open");
530
- const blocks = db.ledger.crdt.blockstore as bs.EncryptedBlockstore;
531
- const loader = blocks.loader;
532
- expect(loader).toBeDefined();
533
- expect(loader.carLog.length).toBe(i + 1);
534
- // console.log('car log length', loader.carLog.length)
535
- // console.time("db put");
536
- const ok = await db.put({ _id: `test${i}`, fire: "proof".repeat(50 * 1024) });
537
- // console.timeEnd("db put");
538
- expect(ok).toBeTruthy();
539
- expect(loader.carLog.length).toBe(i + 2);
540
- // console.time("db get");
541
- const doc = await db.get<FireType>(`test${i}`);
542
- // console.timeEnd("db get");
543
- expect(doc.fire).toBe("proof".repeat(50 * 1024));
544
- }
545
- }, 200000);
546
- });
547
-
548
- describe("Reopening a ledger with indexes", function () {
549
- interface Doc {
550
- foo: string;
551
- }
552
- let db: Database;
553
- let idx: Index<Doc, string>;
554
- let didMap: boolean;
555
- let mapFn: MapFn<Doc>;
556
- const sthis = ensureSuperThis();
557
- afterEach(async () => {
558
- await db.close();
559
- await db.destroy();
560
- });
561
- beforeEach(async () => {
562
- await sthis.start();
563
- db = fireproof("test-reopen-idx");
564
- const ok = await db.put({ _id: "test", foo: "bar" });
565
- expect(ok.id).toBe("test");
566
-
567
- didMap = false;
568
-
569
- mapFn = (doc: Doc) => {
570
- didMap = true;
571
- return doc.foo;
572
- };
573
- idx = index<Doc, string>(db, "foo", mapFn);
574
- });
575
-
576
- it("should persist data", async () => {
577
- const doc = await db.get<Doc>("test");
578
- expect(doc.foo).toBe("bar");
579
- const idx2 = index<Doc, string>(db, "foo");
580
- expect(idx2).toBe(idx);
581
- const result = await idx2.query();
582
- expect(result).toBeTruthy();
583
- expect(result.rows).toBeTruthy();
584
- expect(result.rows.length).toBe(1);
585
- expect(result.rows[0].key).toBe("bar");
586
- expect(didMap).toBeTruthy();
587
- });
588
-
589
- it("should reuse the index", async () => {
590
- const idx2 = index(db, "foo", mapFn);
591
- expect(idx2).toBe(idx);
592
- const result = await idx2.query();
593
- expect(result).toBeTruthy();
594
- expect(result.rows).toBeTruthy();
595
- expect(result.rows.length).toBe(1);
596
- expect(result.rows[0].key).toBe("bar");
597
- expect(didMap).toBeTruthy();
598
- didMap = false;
599
- const r2 = await idx2.query();
600
- expect(r2).toBeTruthy();
601
- expect(r2.rows).toBeTruthy();
602
- expect(r2.rows.length).toBe(1);
603
- expect(r2.rows[0].key).toBe("bar");
604
- expect(didMap).toBeFalsy();
605
- });
606
-
607
- it("should have the same data on reopen", async () => {
608
- const db2 = fireproof("test-reopen-idx");
609
- const doc = await db2.get<FooType>("test");
610
- expect(doc.foo).toBe("bar");
611
- expect(db2.ledger.crdt.clock.head).toBeTruthy();
612
- expect(db2.ledger.crdt.clock.head.length).toBe(1);
613
- expect(db2.ledger.crdt.clock.head).toEqual(db.ledger.crdt.clock.head);
614
- });
615
-
616
- it("should have the same data on reopen after a query", async () => {
617
- const r0 = await idx.query();
618
- expect(r0).toBeTruthy();
619
- expect(r0.rows).toBeTruthy();
620
- expect(r0.rows.length).toBe(1);
621
- expect(r0.rows[0].key).toBe("bar");
622
-
623
- const db2 = fireproof("test-reopen-idx");
624
- const doc = await db2.get<FooType>("test");
625
- expect(doc.foo).toBe("bar");
626
- expect(db2.ledger.crdt.clock.head).toBeTruthy();
627
- expect(db2.ledger.crdt.clock.head.length).toBe(1);
628
- expect(db2.ledger.crdt.clock.head).toEqual(db.ledger.crdt.clock.head);
629
- });
630
-
631
- // it('should query the same data on reopen', async () =>{
632
- // const r0 = await idx.query()
633
- // assert(r0)
634
- // assert(r0.rows)
635
- // equals(r0.rows.length, 1)
636
- // equals(r0.rows[0].key, 'bar')
637
-
638
- // const db2 = fireproof('test-reopen-idx')
639
- // const d2 = await db2.get('test')
640
- // equals(d2.foo, 'bar')
641
- // didMap = false
642
- // const idx3 = db2.index('foo', mapFn)
643
- // const result = await idx3.query()
644
- // assert(result)
645
- // assert(result.rows)
646
- // equals(result.rows.length, 1)
647
- // equals(result.rows[0].key, 'bar')
648
- // assert(!didMap)
649
- // })
650
- });
651
-
652
- describe("basic js verify", function () {
653
- const sthis = ensureSuperThis();
654
- beforeAll(async () => {
655
- await sthis.start();
656
- });
657
- it("should include cids in arrays", async () => {
658
- const db = fireproof("test-verify");
659
- const ok = await db.put({ _id: "test", foo: ["bar", "bam"] });
660
- expect(ok.id).toBe("test");
661
- const ok2 = await db.put({ _id: "test2", foo: ["bar", "bam"] });
662
- expect(ok2.id).toBe("test2");
663
- const blocks = db.ledger.crdt.blockstore as bs.EncryptedBlockstore;
664
- const loader = blocks.loader;
665
- expect(loader).toBeTruthy();
666
- const cid = loader.carLog.asArray()[0][0];
667
- const cid2 = db.ledger.crdt.clock.head[0];
668
- expect(cid).not.toBe(cid2);
669
- expect(cid).not.toBe(cid2);
670
- const cidList = [cid, cid2];
671
- const cid3 = CID.parse(cid.toString());
672
- expect(cidList.includes(cid3)).toBeFalsy(); // sad trombone
673
- expect(carLogIncludesGroup(cidList, cid3)).toBeTruthy();
674
- await db.close();
675
- await db.destroy();
676
- });
677
- });
678
-
679
- describe("same workload twice, same CID", function () {
680
- let dbA: Database;
681
- let dbB: Database;
682
- let headA: string;
683
- let headB: string;
684
-
685
- const sthis = ensureSuperThis();
686
- // let configA: any;
687
- // let configB: any;
688
-
689
- const configA: ConfigOpts = {
690
- storeUrls: {
691
- base: storageURL(sthis).build().setParam("storekey", "@test@"),
692
- },
693
- };
694
-
695
- const configB: ConfigOpts = {
696
- storeUrls: {
697
- base: storageURL(sthis).build().setParam("storekey", "@test@"),
698
- },
699
- };
700
-
701
- afterEach(async () => {
702
- await dbA.close();
703
- await dbA.destroy();
704
- await dbB.close();
705
- await dbB.destroy();
706
- });
707
- beforeEach(async () => {
708
- let ok: DocResponse;
709
- await sthis.start();
710
- // todo this fails because the test setup doesn't properly configure both ledgers to use the same key
711
- dbA = fireproof("test-dual-workload-a", configA);
712
- await dbA.destroy();
713
- for (const doc of docs) {
714
- ok = await dbA.put(doc);
715
- expect(ok).toBeTruthy();
716
- expect(ok.id).toBeTruthy();
717
- }
718
- headA = dbA.ledger.crdt.clock.head.toString();
719
-
720
- // todo this fails because the test setup doesn't properly configure both ledgers to use the same key
721
- dbB = fireproof("test-dual-workload-b", configB);
722
- await dbA.destroy();
723
- for (const doc of docs) {
724
- ok = await dbB.put(doc);
725
- expect(ok).toBeTruthy();
726
- expect(ok.id).toBeTruthy();
727
- }
728
- headB = dbB.ledger.crdt.clock.head.toString();
729
- });
730
- it("should have head A and B", async () => {
731
- expect(headA).toBeTruthy();
732
- expect(headB).toBeTruthy();
733
- expect(headA).toEqual(headB);
734
- expect(headA.length).toBeGreaterThan(10);
735
- });
736
- it("should have same car log", async () => {
737
- const logA = dbA.ledger.crdt.blockstore.loader?.carLog;
738
- expect(logA).toBeTruthy();
739
- assert(logA);
740
- expect(logA.length).toBe(docs.length + 1 /*genesis*/);
741
-
742
- const logB = dbB.ledger.crdt.blockstore.loader?.carLog;
743
- expect(logB).toBeTruthy();
744
- assert(logB);
745
- expect(logB.length).toBe(docs.length + 1 /*genesis*/);
746
-
747
- const logA2 = logA.asArray().map((c) => c.toString());
748
- const logB2 = logB.asArray().map((c) => c.toString());
749
-
750
- expect(logA2.length).toBe(logB2.length);
751
-
752
- // todo this fails because the test setup doesn't properly configure both ledgers to use the same key
753
- // expect(logA2).toEqual(logB2);
754
- });
755
- it("should have same car log after compact", async () => {
756
- await dbA.compact();
757
- await dbB.compact();
758
-
759
- const cmpLogA = dbA.ledger.crdt.blockstore.loader?.carLog;
760
- expect(cmpLogA).toBeTruthy();
761
- assert(cmpLogA);
762
- expect(cmpLogA.length).toBe(1);
763
-
764
- const cmpLogB = dbB.ledger.crdt.blockstore.loader?.carLog;
765
- expect(cmpLogB).toBeTruthy();
766
- assert(cmpLogB);
767
- expect(cmpLogB.length).toBe(1);
768
-
769
- const cmpLogA2 = cmpLogA.asArray().map((c) => c.toString());
770
- const cmpLogB2 = cmpLogB.asArray().map((c) => c.toString());
771
-
772
- expect(cmpLogA2.length).toBe(cmpLogB2.length);
773
-
774
- // todo this fails because the test setup doesn't properly configure both ledgers to use the same key
775
- // expect(cmpLogA2).toEqual(cmpLogB2);
776
- });
777
- });