@fireproof/core 0.21.0-dev-preview-6 → 0.22.0-dev-preview

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 (428) 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 +11 -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 -317
  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 -16
  45. package/blockstore/index.d.ts.map +0 -1
  46. package/blockstore/index.js +0 -16
  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 -61
  57. package/blockstore/loader.d.ts.map +0 -1
  58. package/blockstore/loader.js +0 -493
  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 -510
  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 -26613
  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 -34
  114. package/database.d.ts.map +0 -1
  115. package/database.js +0 -133
  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 -55
  128. package/ledger.d.ts.map +0 -1
  129. package/ledger.js +0 -240
  130. package/ledger.js.map +0 -1
  131. package/protocols/cloud/http-connection.d.ts +0 -25
  132. package/protocols/cloud/http-connection.d.ts.map +0 -1
  133. package/protocols/cloud/http-connection.js +0 -153
  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 -296
  156. package/protocols/cloud/msg-types.d.ts.map +0 -1
  157. package/protocols/cloud/msg-types.js +0 -296
  158. package/protocols/cloud/msg-types.js.map +0 -1
  159. package/protocols/cloud/msger.d.ts +0 -79
  160. package/protocols/cloud/msger.d.ts.map +0 -1
  161. package/protocols/cloud/msger.js +0 -198
  162. package/protocols/cloud/msger.js.map +0 -1
  163. package/protocols/cloud/ws-connection.d.ts +0 -29
  164. package/protocols/cloud/ws-connection.d.ts.map +0 -1
  165. package/protocols/cloud/ws-connection.js +0 -166
  166. package/protocols/cloud/ws-connection.js.map +0 -1
  167. package/protocols/index.d.ts +0 -2
  168. package/protocols/index.d.ts.map +0 -1
  169. package/protocols/index.js +0 -2
  170. package/protocols/index.js.map +0 -1
  171. package/react/img-file.d.ts +0 -303
  172. package/react/img-file.d.ts.map +0 -1
  173. package/react/img-file.js +0 -92
  174. package/react/img-file.js.map +0 -1
  175. package/react/index.d.ts +0 -5
  176. package/react/index.d.ts.map +0 -1
  177. package/react/index.js +0 -5
  178. package/react/index.js.map +0 -1
  179. package/react/types.d.ts +0 -71
  180. package/react/types.d.ts.map +0 -1
  181. package/react/types.js +0 -2
  182. package/react/types.js.map +0 -1
  183. package/react/use-all-docs.d.ts +0 -4
  184. package/react/use-all-docs.d.ts.map +0 -1
  185. package/react/use-all-docs.js +0 -25
  186. package/react/use-all-docs.js.map +0 -1
  187. package/react/use-attach.d.ts +0 -6
  188. package/react/use-attach.d.ts.map +0 -1
  189. package/react/use-attach.js +0 -75
  190. package/react/use-attach.js.map +0 -1
  191. package/react/use-changes.d.ts +0 -4
  192. package/react/use-changes.d.ts.map +0 -1
  193. package/react/use-changes.js +0 -19
  194. package/react/use-changes.js.map +0 -1
  195. package/react/use-document.d.ts +0 -4
  196. package/react/use-document.d.ts.map +0 -1
  197. package/react/use-document.js +0 -109
  198. package/react/use-document.js.map +0 -1
  199. package/react/use-fireproof.d.ts +0 -6
  200. package/react/use-fireproof.d.ts.map +0 -1
  201. package/react/use-fireproof.js +0 -20
  202. package/react/use-fireproof.js.map +0 -1
  203. package/react/use-live-query.d.ts +0 -4
  204. package/react/use-live-query.d.ts.map +0 -1
  205. package/react/use-live-query.js +0 -24
  206. package/react/use-live-query.js.map +0 -1
  207. package/runtime/files.d.ts +0 -12
  208. package/runtime/files.d.ts.map +0 -1
  209. package/runtime/files.js +0 -29
  210. package/runtime/files.js.map +0 -1
  211. package/runtime/gateways/cloud/gateway.d.ts +0 -41
  212. package/runtime/gateways/cloud/gateway.d.ts.map +0 -1
  213. package/runtime/gateways/cloud/gateway.js +0 -512
  214. package/runtime/gateways/cloud/gateway.js.map +0 -1
  215. package/runtime/gateways/cloud/index.d.ts +0 -3
  216. package/runtime/gateways/cloud/index.d.ts.map +0 -1
  217. package/runtime/gateways/cloud/index.js +0 -3
  218. package/runtime/gateways/cloud/index.js.map +0 -1
  219. package/runtime/gateways/cloud/to-cloud.d.ts +0 -46
  220. package/runtime/gateways/cloud/to-cloud.d.ts.map +0 -1
  221. package/runtime/gateways/cloud/to-cloud.js +0 -159
  222. package/runtime/gateways/cloud/to-cloud.js.map +0 -1
  223. package/runtime/gateways/def-serde-gateway.d.ts +0 -18
  224. package/runtime/gateways/def-serde-gateway.d.ts.map +0 -1
  225. package/runtime/gateways/def-serde-gateway.js +0 -92
  226. package/runtime/gateways/def-serde-gateway.js.map +0 -1
  227. package/runtime/gateways/file/deno/deno-filesystem.d.ts +0 -27
  228. package/runtime/gateways/file/deno/deno-filesystem.d.ts.map +0 -1
  229. package/runtime/gateways/file/deno/deno-filesystem.js +0 -52
  230. package/runtime/gateways/file/deno/deno-filesystem.js.map +0 -1
  231. package/runtime/gateways/file/deno/get-sys-file-system.d.ts +0 -4
  232. package/runtime/gateways/file/deno/get-sys-file-system.d.ts.map +0 -1
  233. package/runtime/gateways/file/deno/get-sys-file-system.js +0 -11
  234. package/runtime/gateways/file/deno/get-sys-file-system.js.map +0 -1
  235. package/runtime/gateways/file/deno/index.d.ts +0 -2
  236. package/runtime/gateways/file/deno/index.d.ts.map +0 -1
  237. package/runtime/gateways/file/deno/index.js +0 -2
  238. package/runtime/gateways/file/deno/index.js.map +0 -1
  239. package/runtime/gateways/file/gateway-impl.d.ts +0 -18
  240. package/runtime/gateways/file/gateway-impl.d.ts.map +0 -1
  241. package/runtime/gateways/file/gateway-impl.js +0 -121
  242. package/runtime/gateways/file/gateway-impl.js.map +0 -1
  243. package/runtime/gateways/file/index.d.ts +0 -3
  244. package/runtime/gateways/file/index.d.ts.map +0 -1
  245. package/runtime/gateways/file/index.js +0 -3
  246. package/runtime/gateways/file/index.js.map +0 -1
  247. package/runtime/gateways/file/key-bag-file.d.ts +0 -19
  248. package/runtime/gateways/file/key-bag-file.d.ts.map +0 -1
  249. package/runtime/gateways/file/key-bag-file.js +0 -40
  250. package/runtime/gateways/file/key-bag-file.js.map +0 -1
  251. package/runtime/gateways/file/node/get-sys-file-system.d.ts +0 -4
  252. package/runtime/gateways/file/node/get-sys-file-system.d.ts.map +0 -1
  253. package/runtime/gateways/file/node/get-sys-file-system.js +0 -11
  254. package/runtime/gateways/file/node/get-sys-file-system.js.map +0 -1
  255. package/runtime/gateways/file/node/index.d.ts +0 -2
  256. package/runtime/gateways/file/node/index.d.ts.map +0 -1
  257. package/runtime/gateways/file/node/index.js +0 -2
  258. package/runtime/gateways/file/node/index.js.map +0 -1
  259. package/runtime/gateways/file/node/node-filesystem.d.ts +0 -32
  260. package/runtime/gateways/file/node/node-filesystem.d.ts.map +0 -1
  261. package/runtime/gateways/file/node/node-filesystem.js +0 -33
  262. package/runtime/gateways/file/node/node-filesystem.js.map +0 -1
  263. package/runtime/gateways/file/node/to-array-buffer.d.ts +0 -2
  264. package/runtime/gateways/file/node/to-array-buffer.d.ts.map +0 -1
  265. package/runtime/gateways/file/node/to-array-buffer.js +0 -12
  266. package/runtime/gateways/file/node/to-array-buffer.js.map +0 -1
  267. package/runtime/gateways/file/sys-file-system-factory.d.ts +0 -4
  268. package/runtime/gateways/file/sys-file-system-factory.d.ts.map +0 -1
  269. package/runtime/gateways/file/sys-file-system-factory.js +0 -13
  270. package/runtime/gateways/file/sys-file-system-factory.js.map +0 -1
  271. package/runtime/gateways/file/utils.d.ts +0 -5
  272. package/runtime/gateways/file/utils.d.ts.map +0 -1
  273. package/runtime/gateways/file/utils.js +0 -27
  274. package/runtime/gateways/file/utils.js.map +0 -1
  275. package/runtime/gateways/file/version.d.ts +0 -2
  276. package/runtime/gateways/file/version.d.ts.map +0 -1
  277. package/runtime/gateways/file/version.js +0 -2
  278. package/runtime/gateways/file/version.js.map +0 -1
  279. package/runtime/gateways/fp-envelope-serialize.d.ts +0 -50
  280. package/runtime/gateways/fp-envelope-serialize.d.ts.map +0 -1
  281. package/runtime/gateways/fp-envelope-serialize.js +0 -141
  282. package/runtime/gateways/fp-envelope-serialize.js.map +0 -1
  283. package/runtime/gateways/index.d.ts +0 -6
  284. package/runtime/gateways/index.d.ts.map +0 -1
  285. package/runtime/gateways/index.js +0 -6
  286. package/runtime/gateways/index.js.map +0 -1
  287. package/runtime/gateways/indexeddb/gateway-impl.d.ts +0 -22
  288. package/runtime/gateways/indexeddb/gateway-impl.d.ts.map +0 -1
  289. package/runtime/gateways/indexeddb/gateway-impl.js +0 -147
  290. package/runtime/gateways/indexeddb/gateway-impl.js.map +0 -1
  291. package/runtime/gateways/indexeddb/index.d.ts +0 -6
  292. package/runtime/gateways/indexeddb/index.d.ts.map +0 -1
  293. package/runtime/gateways/indexeddb/index.js +0 -6
  294. package/runtime/gateways/indexeddb/index.js.map +0 -1
  295. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts +0 -15
  296. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts.map +0 -1
  297. package/runtime/gateways/indexeddb/key-bag-indexeddb.js +0 -42
  298. package/runtime/gateways/indexeddb/key-bag-indexeddb.js.map +0 -1
  299. package/runtime/gateways/indexeddb-version.d.ts +0 -2
  300. package/runtime/gateways/indexeddb-version.d.ts.map +0 -1
  301. package/runtime/gateways/indexeddb-version.js +0 -2
  302. package/runtime/gateways/indexeddb-version.js.map +0 -1
  303. package/runtime/gateways/memory/gateway.d.ts +0 -18
  304. package/runtime/gateways/memory/gateway.d.ts.map +0 -1
  305. package/runtime/gateways/memory/gateway.js +0 -73
  306. package/runtime/gateways/memory/gateway.js.map +0 -1
  307. package/runtime/gateways/memory/version.d.ts +0 -2
  308. package/runtime/gateways/memory/version.d.ts.map +0 -1
  309. package/runtime/gateways/memory/version.js +0 -2
  310. package/runtime/gateways/memory/version.js.map +0 -1
  311. package/runtime/index.d.ts +0 -13
  312. package/runtime/index.d.ts.map +0 -1
  313. package/runtime/index.js +0 -13
  314. package/runtime/index.js.map +0 -1
  315. package/runtime/key-bag-memory.d.ts +0 -12
  316. package/runtime/key-bag-memory.d.ts.map +0 -1
  317. package/runtime/key-bag-memory.js +0 -23
  318. package/runtime/key-bag-memory.js.map +0 -1
  319. package/runtime/key-bag.d.ts +0 -85
  320. package/runtime/key-bag.d.ts.map +0 -1
  321. package/runtime/key-bag.js +0 -411
  322. package/runtime/key-bag.js.map +0 -1
  323. package/runtime/keyed-crypto.d.ts +0 -19
  324. package/runtime/keyed-crypto.d.ts.map +0 -1
  325. package/runtime/keyed-crypto.js +0 -192
  326. package/runtime/keyed-crypto.js.map +0 -1
  327. package/runtime/memory-sys-container.d.ts +0 -2
  328. package/runtime/memory-sys-container.d.ts.map +0 -1
  329. package/runtime/memory-sys-container.js +0 -2
  330. package/runtime/memory-sys-container.js.map +0 -1
  331. package/runtime/meta-key-hack.d.ts +0 -42
  332. package/runtime/meta-key-hack.d.ts.map +0 -1
  333. package/runtime/meta-key-hack.js +0 -201
  334. package/runtime/meta-key-hack.js.map +0 -1
  335. package/runtime/sts-service/index.d.ts +0 -40
  336. package/runtime/sts-service/index.d.ts.map +0 -1
  337. package/runtime/sts-service/index.js +0 -108
  338. package/runtime/sts-service/index.js.map +0 -1
  339. package/runtime/sys-container.d.ts +0 -2
  340. package/runtime/sys-container.d.ts.map +0 -1
  341. package/runtime/sys-container.js +0 -2
  342. package/runtime/sys-container.js.map +0 -1
  343. package/runtime/wait-pr-multiformats/block.d.ts +0 -47
  344. package/runtime/wait-pr-multiformats/block.d.ts.map +0 -1
  345. package/runtime/wait-pr-multiformats/block.js +0 -64
  346. package/runtime/wait-pr-multiformats/block.js.map +0 -1
  347. package/runtime/wait-pr-multiformats/codec-interface.d.ts +0 -29
  348. package/runtime/wait-pr-multiformats/codec-interface.d.ts.map +0 -1
  349. package/runtime/wait-pr-multiformats/codec-interface.js +0 -2
  350. package/runtime/wait-pr-multiformats/codec-interface.js.map +0 -1
  351. package/runtime/wait-pr-multiformats/index.d.ts +0 -3
  352. package/runtime/wait-pr-multiformats/index.d.ts.map +0 -1
  353. package/runtime/wait-pr-multiformats/index.js +0 -3
  354. package/runtime/wait-pr-multiformats/index.js.map +0 -1
  355. package/tests/blockstore/fp-envelope.test.ts-off +0 -65
  356. package/tests/blockstore/fragment-gateway.test.ts-off +0 -106
  357. package/tests/blockstore/interceptor-gateway.test.ts +0 -254
  358. package/tests/blockstore/keyed-crypto-indexeddb-file.test.ts +0 -128
  359. package/tests/blockstore/keyed-crypto.test.ts +0 -526
  360. package/tests/blockstore/loader.test.ts +0 -297
  361. package/tests/blockstore/standalone.test.ts +0 -152
  362. package/tests/blockstore/store.test.ts +0 -192
  363. package/tests/blockstore/transaction.test.ts +0 -130
  364. package/tests/fireproof/all-gateway.test.ts +0 -461
  365. package/tests/fireproof/attachable.test.ts +0 -686
  366. package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.car +0 -0
  367. package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts +0 -324
  368. package/tests/fireproof/charwise-boolean.test.ts +0 -66
  369. package/tests/fireproof/crdt.test.ts +0 -570
  370. package/tests/fireproof/database.test.ts +0 -779
  371. package/tests/fireproof/deleted-docs-handling.test.ts +0 -111
  372. package/tests/fireproof/fireproof.test.fixture.ts +0 -133
  373. package/tests/fireproof/fireproof.test.ts +0 -777
  374. package/tests/fireproof/hello.test.ts +0 -74
  375. package/tests/fireproof/indexer.test.ts +0 -458
  376. package/tests/fireproof/multiple-ledger.test.ts +0 -65
  377. package/tests/fireproof/query-docs.test.ts +0 -116
  378. package/tests/fireproof/query-limit-issue.test.ts +0 -147
  379. package/tests/fireproof/query-property-inconsistency.test.ts +0 -89
  380. package/tests/fireproof/query-result-properties.test.ts +0 -42
  381. package/tests/fireproof/stable-cid.test.ts +0 -69
  382. package/tests/fireproof/utils.test.ts +0 -135
  383. package/tests/gateway/file/loader-config.test.ts +0 -307
  384. package/tests/gateway/indexeddb/loader-config.test.ts +0 -79
  385. package/tests/helpers.ts +0 -174
  386. package/tests/react/img-file.test.tsx +0 -190
  387. package/tests/react/use-all-docs.test.tsx +0 -173
  388. package/tests/react/use-document-with-nonexistent-id.test.tsx +0 -96
  389. package/tests/react/use-fireproof-db-switch.test.tsx +0 -91
  390. package/tests/react/use-fireproof-stability.test.tsx +0 -145
  391. package/tests/react/use-fireproof.test.tsx +0 -645
  392. package/tests/runtime/fp-envelope-serialize.test.ts +0 -254
  393. package/tests/runtime/meta-key-hack.test.ts +0 -95
  394. package/tests/setup.file.ts +0 -1
  395. package/tests/setup.indexeddb.ts +0 -0
  396. package/tests/setup.memory.ts +0 -2
  397. package/tests/utils.test.ts +0 -192
  398. package/tests/vitest.file.config.ts +0 -14
  399. package/tests/vitest.indexeddb.config.ts +0 -37
  400. package/tests/vitest.memory.config.ts +0 -25
  401. package/types.d.ts +0 -462
  402. package/types.d.ts.map +0 -1
  403. package/types.js +0 -60
  404. package/types.js.map +0 -1
  405. package/use-fireproof/iframe-strategy.d.ts +0 -13
  406. package/use-fireproof/iframe-strategy.d.ts.map +0 -1
  407. package/use-fireproof/iframe-strategy.js +0 -83
  408. package/use-fireproof/iframe-strategy.js.map +0 -1
  409. package/use-fireproof/index.d.ts +0 -10
  410. package/use-fireproof/index.d.ts.map +0 -1
  411. package/use-fireproof/index.js +0 -16
  412. package/use-fireproof/index.js.map +0 -1
  413. package/use-fireproof/redirect-strategy.d.ts +0 -8
  414. package/use-fireproof/redirect-strategy.d.ts.map +0 -1
  415. package/use-fireproof/redirect-strategy.js +0 -31
  416. package/use-fireproof/redirect-strategy.js.map +0 -1
  417. package/utils.d.ts +0 -49
  418. package/utils.d.ts.map +0 -1
  419. package/utils.js +0 -454
  420. package/utils.js.map +0 -1
  421. package/version.d.ts +0 -2
  422. package/version.d.ts.map +0 -1
  423. package/version.js +0 -4
  424. package/version.js.map +0 -1
  425. package/write-queue.d.ts +0 -9
  426. package/write-queue.d.ts.map +0 -1
  427. package/write-queue.js +0 -70
  428. 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
- });