@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,570 +0,0 @@
1
- import {
2
- CRDT,
3
- defaultWriteQueueOpts,
4
- ensureSuperThis,
5
- LedgerOpts,
6
- toStoreURIRuntime,
7
- rt,
8
- CRDTImpl,
9
- bs,
10
- CRDTMeta,
11
- DocValue,
12
- Index,
13
- index,
14
- } from "@fireproof/core";
15
- import { tracer } from "../helpers.js";
16
- import { AppContext } from "@adviser/cement";
17
-
18
- describe("Fresh crdt", function () {
19
- let crdt: CRDT;
20
- const sthis = ensureSuperThis();
21
- afterEach(async () => {
22
- await crdt.close();
23
- await crdt.destroy();
24
- });
25
- beforeEach(async () => {
26
- await sthis.start();
27
- const dbOpts: LedgerOpts = {
28
- name: "test-crdt",
29
- writeQueue: defaultWriteQueueOpts({}),
30
- keyBag: rt.defaultKeyBagOpts(sthis),
31
- storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
32
- storeEnDe: bs.ensureStoreEnDeFile({}),
33
- ctx: new AppContext(),
34
- tracer,
35
- };
36
- crdt = new CRDTImpl(sthis, dbOpts);
37
- await crdt.ready();
38
- });
39
- it("should have an empty head", async () => {
40
- const head = crdt.clock.head;
41
- expect(head.length).toBe(0);
42
- });
43
- it("should accept put and return results", async () => {
44
- const didPut = await crdt.bulk([{ id: "hello", value: { hello: "world" } }]);
45
- const head = didPut.head;
46
- expect(head.length).toBe(1);
47
- });
48
- it("should accept multi-put and return results", async () => {
49
- const didPut = await crdt.bulk([
50
- { id: "ace", value: { points: 11 } },
51
- { id: "king", value: { points: 10 } },
52
- ]);
53
- const head = didPut.head;
54
- expect(head.length).toBe(1);
55
- });
56
- });
57
-
58
- describe("CRDT with one record", function () {
59
- interface CRDTTestType {
60
- readonly hello: string;
61
- readonly nice: string;
62
- }
63
- let crdt: CRDT;
64
- let firstPut: CRDTMeta;
65
- const sthis = ensureSuperThis();
66
-
67
- afterEach(async () => {
68
- await crdt.close();
69
- await crdt.destroy();
70
- });
71
-
72
- beforeEach(async () => {
73
- await sthis.start();
74
- const dbOpts: LedgerOpts = {
75
- name: "test-crdt",
76
- writeQueue: defaultWriteQueueOpts({}),
77
- keyBag: rt.defaultKeyBagOpts(sthis),
78
- storeUrls: toStoreURIRuntime(sthis, `test@${sthis.nextId().str}`),
79
- storeEnDe: bs.ensureStoreEnDeFile({}),
80
- ctx: new AppContext(),
81
- tracer,
82
- };
83
- crdt = new CRDTImpl(sthis, dbOpts);
84
- firstPut = await crdt.bulk([{ id: "hello", value: { hello: "world" } }]);
85
- });
86
- it("should have a one-element head", async () => {
87
- const head = crdt.clock.head;
88
- expect(head.length).toBe(1);
89
- });
90
- it("should return the head", async () => {
91
- expect(firstPut.head.length).toBe(1);
92
- });
93
- it("return the record on get", async () => {
94
- const got = (await crdt.get("hello")) as DocValue<CRDTTestType>;
95
- expect(got).toBeTruthy();
96
- expect(got.doc.hello).toBe("world");
97
- });
98
- it("should accept another put and return results", async () => {
99
- const didPut = await crdt.bulk([{ id: "nice", value: { nice: "data" } }]);
100
- const head = didPut.head;
101
- expect(head.length).toBe(1);
102
- const { doc } = (await crdt.get("nice")) as DocValue<CRDTTestType>;
103
- expect(doc.nice).toBe("data");
104
- });
105
- it("should allow for a delete", async () => {
106
- const didDel = await crdt.bulk([{ id: "hello", del: true }]);
107
- expect(didDel.head).toBeTruthy();
108
- const got = await crdt.get("hello");
109
- expect(got).toBeFalsy();
110
- });
111
- it("should offer changes", async () => {
112
- const { result } = await crdt.changes<Partial<CRDTTestType>>([]);
113
- expect(result.length).toBe(1);
114
- expect(result[0].id).toBe("hello");
115
- expect(result[0].value?.hello).toBe("world");
116
- });
117
- });
118
-
119
- describe("CRDT with a multi-write", function () {
120
- interface CRDTTestType {
121
- readonly points: number;
122
- }
123
- let crdt: CRDT;
124
- let firstPut: CRDTMeta;
125
- const sthis = ensureSuperThis();
126
-
127
- afterEach(async () => {
128
- await crdt.close();
129
- await crdt.destroy();
130
- });
131
- beforeEach(async () => {
132
- await sthis.start();
133
- const dbOpts: LedgerOpts = {
134
- name: "test-crdt",
135
- writeQueue: defaultWriteQueueOpts({}),
136
- keyBag: rt.defaultKeyBagOpts(sthis),
137
- storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
138
- storeEnDe: bs.ensureStoreEnDeFile({}),
139
- ctx: new AppContext(),
140
- tracer,
141
- };
142
- crdt = new CRDTImpl(sthis, dbOpts);
143
- firstPut = await crdt.bulk([
144
- { id: "ace", value: { points: 11 } },
145
- { id: "king", value: { points: 10 } },
146
- ]);
147
- });
148
- it("should have a one-element head", async () => {
149
- const head = crdt.clock.head;
150
- expect(head.length).toBe(1);
151
- expect(firstPut.head.length).toBe(1);
152
- });
153
- it("return the records on get", async () => {
154
- const { doc } = (await crdt.get("ace")) as DocValue<CRDTTestType>;
155
- expect(doc.points).toBe(11);
156
-
157
- const got2 = (await crdt.get("king")) as DocValue<CRDTTestType>;
158
- expect(got2).toBeTruthy();
159
- expect(got2.doc.points).toBe(10);
160
- });
161
- it("should accept another put and return results", async () => {
162
- const didPut = await crdt.bulk([{ id: "queen", value: { points: 10 } }]);
163
- const head = didPut.head;
164
- expect(head.length).toBe(1);
165
- const got = (await crdt.get("queen")) as DocValue<CRDTTestType>;
166
- expect(got).toBeTruthy();
167
- expect(got.doc.points).toBe(10);
168
- });
169
- it("should offer changes", async () => {
170
- const { result } = await crdt.changes<CRDTTestType>([]);
171
- expect(result.length).toBe(2);
172
- expect(result[0].id).toBe("ace");
173
- expect(result[0].value?.points).toBe(11);
174
- expect(result[1].id).toBe("king");
175
- });
176
- it("should offer changes since", async () => {
177
- /** @type {CRDTMeta} */
178
- const secondPut = await crdt.bulk([
179
- { id: "queen", value: { points: 10 } },
180
- { id: "jack", value: { points: 10 } },
181
- ]);
182
- expect(secondPut.head).toBeTruthy();
183
- const { result: r2, head: h2 } = await crdt.changes<CRDTTestType>();
184
- expect(r2.length).toBe(4);
185
- const { result: r3 } = await crdt.changes(firstPut.head);
186
- expect(r3.length).toBe(2);
187
- const { result: r4 } = await crdt.changes(h2);
188
- expect(r4.length).toBe(0);
189
- });
190
- });
191
-
192
- interface CRDTTestType {
193
- readonly points: number;
194
- }
195
- describe("CRDT with two multi-writes", function () {
196
- let crdt: CRDT;
197
- let firstPut: CRDTMeta;
198
- let secondPut: CRDTMeta;
199
- const sthis = ensureSuperThis();
200
- afterEach(async () => {
201
- await crdt.close();
202
- await crdt.destroy();
203
- });
204
- beforeEach(async () => {
205
- await sthis.start();
206
- const dbOpts: LedgerOpts = {
207
- name: "test-crdt",
208
- writeQueue: defaultWriteQueueOpts({}),
209
- keyBag: rt.defaultKeyBagOpts(sthis),
210
- storeUrls: toStoreURIRuntime(sthis, `test-multiple-writes@${sthis.nextId().str}`),
211
- storeEnDe: bs.ensureStoreEnDeFile({}),
212
- ctx: new AppContext(),
213
- tracer,
214
- };
215
- crdt = new CRDTImpl(sthis, dbOpts);
216
- firstPut = await crdt.bulk([
217
- { id: "ace", value: { points: 11 } },
218
- { id: "king", value: { points: 10 } },
219
- ]);
220
- secondPut = await crdt.bulk([
221
- { id: "queen", value: { points: 10 } },
222
- { id: "jack", value: { points: 10 } },
223
- ]);
224
- });
225
- it("should have a one-element head", async () => {
226
- const head = crdt.clock.head;
227
- expect(head.length).toBe(1);
228
- expect(firstPut.head.length).toBe(1);
229
- expect(secondPut.head.length).toBe(1);
230
- expect(firstPut.head[0]).not.toBe(secondPut.head[0]);
231
- });
232
- it("return the records on get", async () => {
233
- const ret = await crdt.get("ace");
234
- expect(ret).not.toBeNull();
235
- const { doc } = ret as DocValue<CRDTTestType>;
236
- expect(doc.points).toBe(11);
237
-
238
- for (const key of ["king", "queen", "jack"]) {
239
- const { doc } = (await crdt.get(key)) as DocValue<CRDTTestType>;
240
- expect(doc.points).toBe(10);
241
- }
242
- });
243
- it("should offer changes", async () => {
244
- const { result } = await crdt.changes<CRDTTestType>();
245
- expect(result.length).toBe(4);
246
- expect(result[0].id).toBe("ace");
247
- expect(result[0].value?.points).toBe(11);
248
- expect(result[1].id).toBe("king");
249
- expect(result[2].id).toBe("queen");
250
- expect(result[3].id).toBe("jack");
251
- });
252
- });
253
-
254
- describe("Compact a named CRDT with writes", function () {
255
- let crdt: CRDT;
256
- const sthis = ensureSuperThis();
257
- afterEach(async () => {
258
- await crdt.close();
259
- await crdt.destroy();
260
- });
261
- beforeEach(async () => {
262
- await sthis.start();
263
- // sthis.env.set(
264
- // "FP_STORAGE_URL",
265
- // BuildURI.from(sthis.env.get("FP_STORAGE_URL")).setParam(PARAM.STORE_KEY, "insecure").toString(),
266
- // );
267
- // console.log("FP_STORAGE_URL", sthis.env.get("FP_STORAGE_URL"));
268
- const dbOpts: LedgerOpts = {
269
- name: "test-crdt",
270
- writeQueue: defaultWriteQueueOpts({}),
271
- keyBag: rt.defaultKeyBagOpts(sthis),
272
- storeUrls: toStoreURIRuntime(sthis, `named-crdt-compaction-${sthis.nextId().str}`),
273
- storeEnDe: bs.ensureStoreEnDeFile({}),
274
- ctx: new AppContext(),
275
- tracer,
276
- };
277
- crdt = new CRDTImpl(sthis, dbOpts);
278
- for (let i = 0; i < 10; i++) {
279
- const bulk = [
280
- { id: "ace", value: { points: 11 } },
281
- { id: "king", value: { points: 10 } },
282
- ];
283
- await crdt.bulk(bulk);
284
- }
285
- // await sleep(1000);
286
- });
287
- it("has data", async () => {
288
- const got = (await crdt.get("ace")) as DocValue<CRDTTestType>;
289
- expect(got.doc).toBeTruthy();
290
- expect(got.doc.points).toBe(11);
291
- });
292
- it("should start with blocks", async () => {
293
- const blz: bs.AnyBlock[] = [];
294
- for await (const blk of crdt.blockstore.entries()) {
295
- blz.push(blk);
296
- }
297
- // expect(blz.map((i) => sthis.txt.decode(i.bytes) + "\n=================\n")).toEqual([
298
- //
299
- // ])
300
- expect(blz.map((i) => i.cid.toString())).toEqual([
301
- "bafyreicuomyooryb747esregkhooc4phr656tocowyo6dwcocq22h7qdhu",
302
- "bafyreig5jhovaiocwk3vfafzdspgtwinftjygyghjzigkc554muhdmp5ba",
303
- "bafyreiegj7yumreue7llzqroebigscedyzrkeir3zneg5q7zia77itowy4",
304
- "bafyreihobual6tt3hgdfve4h5uzt7fey62se3dfecbuj6f4ndkkwquke4u",
305
- "bafyreibqqcs3r6mhpr3525na6jtqnjcf6dmgskk27x4a2jb3r2qveqgexm",
306
- "bafyreibr7udlekt4xgavn54i4zfsdlrmi4r76iq6gh3bdq4xh52px6to3e",
307
- "bafyreidg2eyas62nvwvi6ggq44tsldj4kwmupyk2xtwmxbwf77g3noqtp4",
308
- "bafyreigbzxzj4eh7ljfvzlc7smdextuuk7gvep5mpnb3igaj5r2qzjlfye",
309
- "bafyreicr7takuntpofvk52xerdcoiq7wdt73ef54acoya2geig2ywkqlsi",
310
- "bafyreihmmgm5sufvnsgjic4fbizkdbajpy2yrklyieadstbtegfr4qko2m",
311
- "bafyreibnu44uyu3ggqwgmnlxodw6dyta3qg7e5qldsjq7bkbv452ova6oa",
312
- "bafyreieh4nlzg7enfczmj4z7uxvgrnykh7ajw7crxjrncqfrzj47ip6t6m",
313
- "bafyreigqqrccymfvvdfetjd2twsdzjwxbb6cn6tedqntvpgp5vboky2ol4",
314
- "bafyreid6kkobhgdmce2cyroepyos3jwumtdrfuzi6suldlxzjsgagc3fvi",
315
- "bafyreibo2d56wo5ldey24hygtmsfhdxsqgdpmtne5oitehxjppipru33ma",
316
- "bafyreifjv6havcza3is7w6ii345f5akba7e34xqcxwoqozmsnihkivykum",
317
- "bafyreig6eroqeg3y7am4bnrun3yzbvd656epzxjyivdpzwqo3j3vpuwysi",
318
- "bafyreibpsnfsducp7refempcyqnte54j7ueh4ysdlabggihclbddfnuzxm",
319
- "bafyreicfkkygbzz5zawr3xbfah2gy3e7w4opzysew4tini7xnksujj4gf4",
320
- "bafyreiddjm5xkpfa5vmyhoj5opocrwo6zbdnmqyhouc5ttfxoilmaf25bm",
321
- "bafyreibp7vlgfexaknaoxpemnnwadyfa4cfuc3euzlkslskks2n44wwspu",
322
- "bafyreichwj7izzpxeyjkhwl26pq45m4hnhxcgzqfk5ffeqkscafleiwfzm",
323
- "bafyreidzjjqou36q2ghqdue4buq7536w4sl5aejni6tw25mzsusl26gtwu",
324
- "bafyreibxibqhi6wh5klrje7ne4htffeqyyqfd6y7x2no6wnhid4nixizau",
325
- "bafyreidnvv4mwvweup5w52ddre2sl4syhvczm6ejqsmuekajowdl2cf2q4",
326
- "bafyreihh6nbfbhgkf5lz7hhsscjgiquw426rxzr3fprbgonekzmyvirrhe",
327
- "bafyreiejg3twlaxr7gfvvhtxrhvwaydytdv4guidmtvaz5dskm6gp73ryi",
328
- "bafyreiblui55o25dopc5faol3umsnuohb5carto7tot4kicnkfc37he4h4",
329
- ]);
330
- // expect(blz.length).toBe(13);
331
- }, 1000000);
332
- it("should start with changes", async () => {
333
- const { result } = await crdt.changes();
334
- expect(result.length).toBe(2);
335
- expect(result[0].id).toBe("ace");
336
- });
337
- it.skip("should have fewer blocks after compact", async () => {
338
- await crdt.compact();
339
- const blz: bs.AnyBlock[] = [];
340
- for await (const blk of crdt.blockstore.entries()) {
341
- blz.push(blk);
342
- }
343
- expect(blz.length).toBe(23);
344
- });
345
- it("should have data after compact", async () => {
346
- await crdt.compact();
347
- const got = (await crdt.get("ace")) as DocValue<CRDTTestType>;
348
- expect(got.doc).toBeTruthy();
349
- expect(got.doc.points).toBe(11);
350
- });
351
- it("should have changes after compact", async () => {
352
- const chs = await crdt.changes();
353
- expect(chs.result[0].id).toBe("ace");
354
- });
355
- });
356
-
357
- describe("CRDT with an index", function () {
358
- let crdt: CRDT;
359
- let idx: Index<CRDTTestType, number>;
360
- const sthis = ensureSuperThis();
361
- afterEach(async () => {
362
- await crdt.close();
363
- await crdt.destroy();
364
- });
365
- beforeEach(async () => {
366
- await sthis.start();
367
- const dbOpts: LedgerOpts = {
368
- name: "test-crdt",
369
- writeQueue: defaultWriteQueueOpts({}),
370
- keyBag: rt.defaultKeyBagOpts(sthis),
371
- storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
372
- storeEnDe: bs.ensureStoreEnDeFile({}),
373
- ctx: new AppContext(),
374
- tracer,
375
- };
376
- crdt = new CRDTImpl(sthis, dbOpts);
377
- await crdt.bulk([
378
- { id: "ace", value: { points: 11 } },
379
- { id: "king", value: { points: 10 } },
380
- ]);
381
- idx = await index<CRDTTestType, number>(crdt, "points");
382
- });
383
- it("should query the data", async () => {
384
- const got = await idx.query({ range: [9, 12] });
385
- expect(got.rows.length).toBe(2);
386
- expect(got.rows[0].id).toBe("king");
387
- expect(got.rows[0].key).toBe(10);
388
- });
389
- it("should register the index", async () => {
390
- const rIdx = await index<CRDTTestType, number>(crdt, "points");
391
- expect(rIdx).toBeTruthy();
392
- expect(rIdx.name).toBe("points");
393
- const got = await rIdx.query({ range: [9, 12] });
394
- expect(got.rows.length).toBe(2);
395
- expect(got.rows[0].id).toBe("king");
396
- expect(got.rows[0].key).toBe(10);
397
- });
398
- it.skip("creating a different index with same name should not work", async () => {
399
- const e = await index(crdt, "points", (doc) => doc._id)
400
- .query()
401
- .catch((err) => err);
402
- expect(e.message).toMatch(/cannot apply/);
403
- });
404
- });
405
-
406
- describe("Loader with a committed transaction", function () {
407
- let loader: bs.Loader;
408
- let blockstore: bs.EncryptedBlockstore;
409
- let crdt: CRDT;
410
- let done: CRDTMeta;
411
- const dbname = "test-loader";
412
- const sthis = ensureSuperThis();
413
- afterEach(async () => {
414
- await crdt.close();
415
- await crdt.destroy();
416
- });
417
- beforeEach(async () => {
418
- await sthis.start();
419
- const dbOpts: LedgerOpts = {
420
- name: "test-crdt",
421
- writeQueue: defaultWriteQueueOpts({}),
422
- keyBag: rt.defaultKeyBagOpts(sthis),
423
- storeUrls: toStoreURIRuntime(sthis, dbname),
424
- storeEnDe: bs.ensureStoreEnDeFile({}),
425
- ctx: new AppContext(),
426
- tracer,
427
- };
428
- crdt = new CRDTImpl(sthis, dbOpts);
429
- blockstore = crdt.blockstore as bs.EncryptedBlockstore;
430
- expect(blockstore.loader).toBeTruthy();
431
- loader = blockstore.loader as bs.Loader;
432
- done = await crdt.bulk([{ id: "foo", value: { foo: "bar" } }]);
433
- });
434
- // it("should have a name", function () {
435
- // expect(loader.ebOpts.storeUrls).toEqual({
436
- // data: "file://./dist/fp-dir-file?name=test-loader&store=data&storekey=%40test-loader-data%40&suffix=.car&urlGen=fromEnv",
437
- // file: "file://./dist/fp-dir-file?name=test-loader&store=data&storekey=%40test-loader-data%40&urlGen=fromEnv",
438
- // meta: "file://./dist/fp-dir-file?name=test-loader&store=meta&storekey=%40test-loader-meta%40&urlGen=fromEnv",
439
- // wal: "file://./dist/fp-dir-file?name=test-loader&store=wal&storekey=%40test-loader-wal%40&urlGen=fromEnv",
440
- // });
441
- // });
442
- it("should commit a transaction", function () {
443
- expect(done.head).toBeTruthy();
444
- // expect(done.cars).toBeTruthy();
445
- expect(loader.carLog.length).toBe(1 + 1 /* genesis */);
446
- });
447
- it("can load the car", async () => {
448
- const blk = loader.carLog.asArray()[0][0];
449
- expect(blk).toBeTruthy();
450
- const reader = await loader.loadCar(blk, loader.attachedStores.local());
451
- expect(reader).toBeTruthy();
452
- assert(bs.isCarBlockItemReady(reader));
453
- const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
454
- expect(parsed.cars).toBeTruthy();
455
- expect(parsed.cars.length).toBe(0 + 1 /* genesis */);
456
- expect(parsed.meta).toBeTruthy();
457
- expect(parsed.meta.head).toBeTruthy();
458
- });
459
- });
460
-
461
- describe("Loader with two committed transactions", function () {
462
- let loader: bs.Loader;
463
- let crdt: CRDT;
464
- let blockstore: bs.EncryptedBlockstore;
465
- let done1: CRDTMeta;
466
- let done2: CRDTMeta;
467
- const sthis = ensureSuperThis();
468
- afterEach(async () => {
469
- await crdt.close();
470
- await crdt.destroy();
471
- });
472
- beforeEach(async () => {
473
- await sthis.start();
474
- const dbOpts: LedgerOpts = {
475
- name: "test-crdt",
476
- writeQueue: defaultWriteQueueOpts({}),
477
- keyBag: rt.defaultKeyBagOpts(sthis),
478
- storeUrls: toStoreURIRuntime(sthis, "test-loader"),
479
- storeEnDe: bs.ensureStoreEnDeFile({}),
480
- ctx: new AppContext(),
481
- tracer,
482
- };
483
- crdt = new CRDTImpl(sthis, dbOpts);
484
- blockstore = crdt.blockstore as bs.EncryptedBlockstore;
485
- expect(blockstore.loader).toBeTruthy();
486
- loader = blockstore.loader as bs.Loader;
487
- done1 = await crdt.bulk([{ id: "apple", value: { foo: "bar" } }]);
488
- done2 = await crdt.bulk([{ id: "orange", value: { foo: "bar" } }]);
489
- });
490
- it("should commit two transactions", function () {
491
- expect(done1.head).toBeTruthy();
492
- // expect(done1.cars).toBeTruthy();
493
- expect(done2.head).toBeTruthy();
494
- // expect(done2.cars).toBeTruthy();
495
- expect(done1.head).not.toBe(done2.head);
496
- // expect(done1.cars).not.toBe(done2.cars);
497
- // expect(blockstore.transactions.size).toBe(2);
498
- expect(loader.carLog.length).toBe(2 + 1 /* genesis */);
499
- // expect(loader.carLog.indexOf(done1.cars)).toBe(1);
500
- // expect(loader.carLog.map((cs) => cs.toString()).indexOf(done1.cars.toString())).toBe(1);
501
- // expect(loader.carLog.indexOf(done2.cars)).toBe(0);
502
- // expect(loader.carLog.map((cs) => cs.toString()).indexOf(done2.cars.toString())).toBe(0);
503
- });
504
- it("can load the car", async () => {
505
- const blk = loader.carLog.asArray()[0][0];
506
- expect(blk).toBeTruthy();
507
- const reader = await loader.loadCar(blk, loader.attachedStores.local());
508
- expect(reader).toBeTruthy();
509
- assert(bs.isCarBlockItemReady(reader));
510
- const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
511
- expect(parsed.cars).toBeTruthy();
512
- expect(parsed.cars.length).toBe(1 + 1 /* genesis */);
513
- expect(parsed.meta).toBeTruthy();
514
- expect(parsed.meta.head).toBeTruthy();
515
- });
516
- });
517
-
518
- describe("Loader with many committed transactions", function () {
519
- let loader: bs.Loader;
520
- let blockstore: bs.EncryptedBlockstore;
521
- let crdt: CRDT;
522
- let dones: CRDTMeta[];
523
- const count = 10;
524
- const sthis = ensureSuperThis();
525
- afterEach(async () => {
526
- await crdt.close();
527
- await crdt.destroy();
528
- });
529
- beforeEach(async () => {
530
- await sthis.start();
531
- const dbOpts: LedgerOpts = {
532
- name: "test-crdt",
533
- writeQueue: defaultWriteQueueOpts({}),
534
- keyBag: rt.defaultKeyBagOpts(sthis),
535
- storeUrls: toStoreURIRuntime(sthis, "test-loader-many"),
536
- storeEnDe: bs.ensureStoreEnDeFile({}),
537
- ctx: new AppContext(),
538
- tracer,
539
- };
540
- crdt = new CRDTImpl(sthis, dbOpts);
541
- blockstore = crdt.blockstore as bs.EncryptedBlockstore;
542
- expect(blockstore.loader).toBeTruthy();
543
- loader = blockstore.loader as bs.Loader;
544
- dones = [];
545
- for (let i = 0; i < count; i++) {
546
- const did = await crdt.bulk([{ id: `apple${i}`, value: { foo: "bar" } }]);
547
- dones.push(did);
548
- }
549
- });
550
- it("should commit many transactions", function () {
551
- for (const done of dones) {
552
- expect(done.head).toBeTruthy();
553
- // expect(done.cars).toBeTruthy();
554
- }
555
- expect(blockstore.transactions.size).toBe(0); // cleaned up on commit
556
- expect(loader.carLog.length).toBe(count + 1 /* genesis */);
557
- });
558
- it("can load the car", async () => {
559
- const blk = loader.carLog.asArray()[2][0];
560
- // expect(dones[5].cars).toBeTruthy();
561
- const reader = await loader.loadCar(blk, loader.attachedStores.local());
562
- expect(reader).toBeTruthy();
563
- assert(bs.isCarBlockItemReady(reader));
564
- const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
565
- expect(parsed.cars).toBeTruthy();
566
- expect(parsed.cars.length).toBe(7 + 1 /* genesis */);
567
- expect(parsed.meta).toBeTruthy();
568
- expect(parsed.meta.head).toBeTruthy();
569
- });
570
- });