@fireproof/core 0.20.0-dev-preview-63 → 0.20.0

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 (407) hide show
  1. package/deno/index.d.ts +7 -0
  2. package/deno/index.js +66 -0
  3. package/deno/index.js.map +1 -0
  4. package/deno/metafile-esm.json +1 -0
  5. package/deno.json +2 -2
  6. package/index.cjs +7268 -0
  7. package/index.cjs.map +1 -0
  8. package/index.d.cts +2742 -0
  9. package/index.d.ts +2742 -15
  10. package/index.js +7267 -14
  11. package/index.js.map +1 -1
  12. package/indexeddb/index.cjs +218 -0
  13. package/indexeddb/index.cjs.map +1 -0
  14. package/indexeddb/index.d.cts +30 -0
  15. package/indexeddb/index.d.ts +30 -0
  16. package/indexeddb/index.js +195 -0
  17. package/indexeddb/index.js.map +1 -0
  18. package/indexeddb/metafile-cjs.json +1 -0
  19. package/indexeddb/metafile-esm.json +1 -0
  20. package/metafile-cjs.json +1 -0
  21. package/metafile-esm.json +1 -0
  22. package/node/index.cjs +97 -0
  23. package/node/index.cjs.map +1 -0
  24. package/node/index.d.cts +7 -0
  25. package/node/index.d.ts +7 -0
  26. package/node/index.js +64 -0
  27. package/node/index.js.map +1 -0
  28. package/node/metafile-cjs.json +1 -0
  29. package/node/metafile-esm.json +1 -0
  30. package/package.json +17 -20
  31. package/react/index.cjs +296 -0
  32. package/react/index.cjs.map +1 -0
  33. package/react/{img-file.d.ts → index.d.cts} +53 -6
  34. package/react/index.d.ts +336 -4
  35. package/react/index.js +262 -3
  36. package/react/index.js.map +1 -1
  37. package/react/metafile-cjs.json +1 -0
  38. package/react/metafile-esm.json +1 -0
  39. package/tests/blockstore/loader.test.ts +1 -1
  40. package/tests/blockstore/store.test.ts +4 -9
  41. package/tests/fireproof/attachable.test.ts +3 -3
  42. package/tests/react/use-fireproof-db-switch.test.tsx +91 -0
  43. package/tests/www/gallery.html +132 -0
  44. package/tests/www/iife.html +42 -0
  45. package/tests/www/todo-aws.html +232 -0
  46. package/tests/www/todo-ipfs.html +213 -0
  47. package/tests/www/todo-local.html +214 -0
  48. package/tests/www/todo-netlify.html +227 -0
  49. package/tests/www/todo.html +254 -0
  50. package/apply-head-queue.d.ts +0 -18
  51. package/apply-head-queue.d.ts.map +0 -1
  52. package/apply-head-queue.js +0 -47
  53. package/apply-head-queue.js.map +0 -1
  54. package/blockstore/attachable-store.d.ts +0 -17
  55. package/blockstore/attachable-store.d.ts.map +0 -1
  56. package/blockstore/attachable-store.js +0 -295
  57. package/blockstore/attachable-store.js.map +0 -1
  58. package/blockstore/commit-queue.d.ts +0 -12
  59. package/blockstore/commit-queue.d.ts.map +0 -1
  60. package/blockstore/commit-queue.js +0 -52
  61. package/blockstore/commit-queue.js.map +0 -1
  62. package/blockstore/commitor.d.ts +0 -21
  63. package/blockstore/commitor.d.ts.map +0 -1
  64. package/blockstore/commitor.js +0 -104
  65. package/blockstore/commitor.js.map +0 -1
  66. package/blockstore/connect-raw.d.ts +0 -2
  67. package/blockstore/connect-raw.d.ts.map +0 -1
  68. package/blockstore/connect-raw.js +0 -2
  69. package/blockstore/connect-raw.js.map +0 -1
  70. package/blockstore/connection-base.d.ts +0 -2
  71. package/blockstore/connection-base.d.ts.map +0 -1
  72. package/blockstore/connection-base.js +0 -2
  73. package/blockstore/connection-base.js.map +0 -1
  74. package/blockstore/encrypt-helpers.d.ts +0 -2
  75. package/blockstore/encrypt-helpers.d.ts.map +0 -1
  76. package/blockstore/encrypt-helpers.js +0 -2
  77. package/blockstore/encrypt-helpers.js.map +0 -1
  78. package/blockstore/fp-envelope.d.ts +0 -32
  79. package/blockstore/fp-envelope.d.ts.map +0 -1
  80. package/blockstore/fp-envelope.js +0 -14
  81. package/blockstore/fp-envelope.js.map +0 -1
  82. package/blockstore/gateway.d.ts +0 -20
  83. package/blockstore/gateway.d.ts.map +0 -1
  84. package/blockstore/gateway.js +0 -2
  85. package/blockstore/gateway.js.map +0 -1
  86. package/blockstore/index.d.ts +0 -16
  87. package/blockstore/index.d.ts.map +0 -1
  88. package/blockstore/index.js +0 -16
  89. package/blockstore/index.js.map +0 -1
  90. package/blockstore/interceptor-gateway.d.ts +0 -29
  91. package/blockstore/interceptor-gateway.d.ts.map +0 -1
  92. package/blockstore/interceptor-gateway.js +0 -137
  93. package/blockstore/interceptor-gateway.js.map +0 -1
  94. package/blockstore/loader-helpers.d.ts +0 -4
  95. package/blockstore/loader-helpers.d.ts.map +0 -1
  96. package/blockstore/loader-helpers.js +0 -16
  97. package/blockstore/loader-helpers.js.map +0 -1
  98. package/blockstore/loader.d.ts +0 -45
  99. package/blockstore/loader.d.ts.map +0 -1
  100. package/blockstore/loader.js +0 -352
  101. package/blockstore/loader.js.map +0 -1
  102. package/blockstore/register-store-protocol.d.ts +0 -22
  103. package/blockstore/register-store-protocol.d.ts.map +0 -1
  104. package/blockstore/register-store-protocol.js +0 -114
  105. package/blockstore/register-store-protocol.js.map +0 -1
  106. package/blockstore/serde-gateway.d.ts +0 -78
  107. package/blockstore/serde-gateway.d.ts.map +0 -1
  108. package/blockstore/serde-gateway.js +0 -2
  109. package/blockstore/serde-gateway.js.map +0 -1
  110. package/blockstore/store-factory.d.ts +0 -11
  111. package/blockstore/store-factory.d.ts.map +0 -1
  112. package/blockstore/store-factory.js +0 -105
  113. package/blockstore/store-factory.js.map +0 -1
  114. package/blockstore/store-remote.d.ts +0 -2
  115. package/blockstore/store-remote.d.ts.map +0 -1
  116. package/blockstore/store-remote.js +0 -2
  117. package/blockstore/store-remote.js.map +0 -1
  118. package/blockstore/store.d.ts +0 -82
  119. package/blockstore/store.d.ts.map +0 -1
  120. package/blockstore/store.js +0 -438
  121. package/blockstore/store.js.map +0 -1
  122. package/blockstore/task-manager.d.ts +0 -19
  123. package/blockstore/task-manager.d.ts.map +0 -1
  124. package/blockstore/task-manager.js +0 -50
  125. package/blockstore/task-manager.js.map +0 -1
  126. package/blockstore/transaction.d.ts +0 -64
  127. package/blockstore/transaction.d.ts.map +0 -1
  128. package/blockstore/transaction.js +0 -249
  129. package/blockstore/transaction.js.map +0 -1
  130. package/blockstore/types.d.ts +0 -400
  131. package/blockstore/types.d.ts.map +0 -1
  132. package/blockstore/types.js +0 -55
  133. package/blockstore/types.js.map +0 -1
  134. package/blockstore/uri-interceptor.d.ts +0 -19
  135. package/blockstore/uri-interceptor.d.ts.map +0 -1
  136. package/blockstore/uri-interceptor.js +0 -61
  137. package/blockstore/uri-interceptor.js.map +0 -1
  138. package/bundle-not-impl.d.ts +0 -2
  139. package/bundle-not-impl.d.ts.map +0 -1
  140. package/bundle-not-impl.js +0 -4
  141. package/bundle-not-impl.js.map +0 -1
  142. package/cli/main.js +0 -26114
  143. package/context.d.ts +0 -7
  144. package/context.d.ts.map +0 -1
  145. package/context.js +0 -15
  146. package/context.js.map +0 -1
  147. package/crdt-clock.d.ts +0 -27
  148. package/crdt-clock.d.ts.map +0 -1
  149. package/crdt-clock.js +0 -140
  150. package/crdt-clock.js.map +0 -1
  151. package/crdt-helpers.d.ts +0 -16
  152. package/crdt-helpers.d.ts.map +0 -1
  153. package/crdt-helpers.js +0 -316
  154. package/crdt-helpers.js.map +0 -1
  155. package/crdt.d.ts +0 -34
  156. package/crdt.d.ts.map +0 -1
  157. package/crdt.js +0 -131
  158. package/crdt.js.map +0 -1
  159. package/database.d.ts +0 -34
  160. package/database.d.ts.map +0 -1
  161. package/database.js +0 -121
  162. package/database.js.map +0 -1
  163. package/index.d.ts.map +0 -1
  164. package/indexer-helpers.d.ts +0 -69
  165. package/indexer-helpers.d.ts.map +0 -1
  166. package/indexer-helpers.js +0 -135
  167. package/indexer-helpers.js.map +0 -1
  168. package/indexer.d.ts +0 -25
  169. package/indexer.d.ts.map +0 -1
  170. package/indexer.js +0 -231
  171. package/indexer.js.map +0 -1
  172. package/ledger.d.ts +0 -56
  173. package/ledger.d.ts.map +0 -1
  174. package/ledger.js +0 -224
  175. package/ledger.js.map +0 -1
  176. package/protocols/cloud/http-connection.d.ts +0 -25
  177. package/protocols/cloud/http-connection.d.ts.map +0 -1
  178. package/protocols/cloud/http-connection.js +0 -153
  179. package/protocols/cloud/http-connection.js.map +0 -1
  180. package/protocols/cloud/index.d.ts +0 -10
  181. package/protocols/cloud/index.d.ts.map +0 -1
  182. package/protocols/cloud/index.js +0 -10
  183. package/protocols/cloud/index.js.map +0 -1
  184. package/protocols/cloud/msg-raw-connection-base.d.ts +0 -16
  185. package/protocols/cloud/msg-raw-connection-base.d.ts.map +0 -1
  186. package/protocols/cloud/msg-raw-connection-base.js +0 -22
  187. package/protocols/cloud/msg-raw-connection-base.js.map +0 -1
  188. package/protocols/cloud/msg-types-data.d.ts +0 -36
  189. package/protocols/cloud/msg-types-data.d.ts.map +0 -1
  190. package/protocols/cloud/msg-types-data.js +0 -38
  191. package/protocols/cloud/msg-types-data.js.map +0 -1
  192. package/protocols/cloud/msg-types-meta.d.ts +0 -41
  193. package/protocols/cloud/msg-types-meta.d.ts.map +0 -1
  194. package/protocols/cloud/msg-types-meta.js +0 -98
  195. package/protocols/cloud/msg-types-meta.js.map +0 -1
  196. package/protocols/cloud/msg-types-wal.d.ts +0 -33
  197. package/protocols/cloud/msg-types-wal.d.ts.map +0 -1
  198. package/protocols/cloud/msg-types-wal.js +0 -38
  199. package/protocols/cloud/msg-types-wal.js.map +0 -1
  200. package/protocols/cloud/msg-types.d.ts +0 -279
  201. package/protocols/cloud/msg-types.d.ts.map +0 -1
  202. package/protocols/cloud/msg-types.js +0 -278
  203. package/protocols/cloud/msg-types.js.map +0 -1
  204. package/protocols/cloud/msger.d.ts +0 -79
  205. package/protocols/cloud/msger.d.ts.map +0 -1
  206. package/protocols/cloud/msger.js +0 -198
  207. package/protocols/cloud/msger.js.map +0 -1
  208. package/protocols/cloud/ws-connection.d.ts +0 -29
  209. package/protocols/cloud/ws-connection.d.ts.map +0 -1
  210. package/protocols/cloud/ws-connection.js +0 -163
  211. package/protocols/cloud/ws-connection.js.map +0 -1
  212. package/protocols/index.d.ts +0 -2
  213. package/protocols/index.d.ts.map +0 -1
  214. package/protocols/index.js +0 -2
  215. package/protocols/index.js.map +0 -1
  216. package/react/img-file.d.ts.map +0 -1
  217. package/react/img-file.js +0 -58
  218. package/react/img-file.js.map +0 -1
  219. package/react/index.d.ts.map +0 -1
  220. package/react/types.d.ts +0 -43
  221. package/react/types.d.ts.map +0 -1
  222. package/react/types.js +0 -2
  223. package/react/types.js.map +0 -1
  224. package/react/use-all-docs.d.ts +0 -4
  225. package/react/use-all-docs.d.ts.map +0 -1
  226. package/react/use-all-docs.js +0 -19
  227. package/react/use-all-docs.js.map +0 -1
  228. package/react/use-changes.d.ts +0 -4
  229. package/react/use-changes.d.ts.map +0 -1
  230. package/react/use-changes.js +0 -19
  231. package/react/use-changes.js.map +0 -1
  232. package/react/use-document.d.ts +0 -4
  233. package/react/use-document.d.ts.map +0 -1
  234. package/react/use-document.js +0 -99
  235. package/react/use-document.js.map +0 -1
  236. package/react/use-fireproof.d.ts +0 -6
  237. package/react/use-fireproof.d.ts.map +0 -1
  238. package/react/use-fireproof.js +0 -15
  239. package/react/use-fireproof.js.map +0 -1
  240. package/react/use-live-query.d.ts +0 -4
  241. package/react/use-live-query.d.ts.map +0 -1
  242. package/react/use-live-query.js +0 -38
  243. package/react/use-live-query.js.map +0 -1
  244. package/react/utils.d.ts +0 -2
  245. package/react/utils.d.ts.map +0 -1
  246. package/react/utils.js +0 -4
  247. package/react/utils.js.map +0 -1
  248. package/runtime/files.d.ts +0 -12
  249. package/runtime/files.d.ts.map +0 -1
  250. package/runtime/files.js +0 -29
  251. package/runtime/files.js.map +0 -1
  252. package/runtime/gateways/cloud/gateway.d.ts +0 -44
  253. package/runtime/gateways/cloud/gateway.d.ts.map +0 -1
  254. package/runtime/gateways/cloud/gateway.js +0 -496
  255. package/runtime/gateways/cloud/gateway.js.map +0 -1
  256. package/runtime/gateways/def-serde-gateway.d.ts +0 -19
  257. package/runtime/gateways/def-serde-gateway.d.ts.map +0 -1
  258. package/runtime/gateways/def-serde-gateway.js +0 -73
  259. package/runtime/gateways/def-serde-gateway.js.map +0 -1
  260. package/runtime/gateways/file/deno/deno-filesystem.d.ts +0 -27
  261. package/runtime/gateways/file/deno/deno-filesystem.d.ts.map +0 -1
  262. package/runtime/gateways/file/deno/deno-filesystem.js +0 -51
  263. package/runtime/gateways/file/deno/deno-filesystem.js.map +0 -1
  264. package/runtime/gateways/file/deno/get-sys-file-system.d.ts +0 -4
  265. package/runtime/gateways/file/deno/get-sys-file-system.d.ts.map +0 -1
  266. package/runtime/gateways/file/deno/get-sys-file-system.js +0 -11
  267. package/runtime/gateways/file/deno/get-sys-file-system.js.map +0 -1
  268. package/runtime/gateways/file/deno/index.d.ts +0 -2
  269. package/runtime/gateways/file/deno/index.d.ts.map +0 -1
  270. package/runtime/gateways/file/deno/index.js +0 -2
  271. package/runtime/gateways/file/deno/index.js.map +0 -1
  272. package/runtime/gateways/file/gateway-impl.d.ts +0 -18
  273. package/runtime/gateways/file/gateway-impl.d.ts.map +0 -1
  274. package/runtime/gateways/file/gateway-impl.js +0 -121
  275. package/runtime/gateways/file/gateway-impl.js.map +0 -1
  276. package/runtime/gateways/file/index.d.ts +0 -3
  277. package/runtime/gateways/file/index.d.ts.map +0 -1
  278. package/runtime/gateways/file/index.js +0 -3
  279. package/runtime/gateways/file/index.js.map +0 -1
  280. package/runtime/gateways/file/key-bag-file.d.ts +0 -19
  281. package/runtime/gateways/file/key-bag-file.d.ts.map +0 -1
  282. package/runtime/gateways/file/key-bag-file.js +0 -40
  283. package/runtime/gateways/file/key-bag-file.js.map +0 -1
  284. package/runtime/gateways/file/node/get-sys-file-system.d.ts +0 -4
  285. package/runtime/gateways/file/node/get-sys-file-system.d.ts.map +0 -1
  286. package/runtime/gateways/file/node/get-sys-file-system.js +0 -11
  287. package/runtime/gateways/file/node/get-sys-file-system.js.map +0 -1
  288. package/runtime/gateways/file/node/index.d.ts +0 -2
  289. package/runtime/gateways/file/node/index.d.ts.map +0 -1
  290. package/runtime/gateways/file/node/index.js +0 -2
  291. package/runtime/gateways/file/node/index.js.map +0 -1
  292. package/runtime/gateways/file/node/node-filesystem.d.ts +0 -32
  293. package/runtime/gateways/file/node/node-filesystem.d.ts.map +0 -1
  294. package/runtime/gateways/file/node/node-filesystem.js +0 -37
  295. package/runtime/gateways/file/node/node-filesystem.js.map +0 -1
  296. package/runtime/gateways/file/node/to-array-buffer.d.ts +0 -2
  297. package/runtime/gateways/file/node/to-array-buffer.d.ts.map +0 -1
  298. package/runtime/gateways/file/node/to-array-buffer.js +0 -12
  299. package/runtime/gateways/file/node/to-array-buffer.js.map +0 -1
  300. package/runtime/gateways/file/sys-file-system-factory.d.ts +0 -4
  301. package/runtime/gateways/file/sys-file-system-factory.d.ts.map +0 -1
  302. package/runtime/gateways/file/sys-file-system-factory.js +0 -13
  303. package/runtime/gateways/file/sys-file-system-factory.js.map +0 -1
  304. package/runtime/gateways/file/utils.d.ts +0 -5
  305. package/runtime/gateways/file/utils.d.ts.map +0 -1
  306. package/runtime/gateways/file/utils.js +0 -27
  307. package/runtime/gateways/file/utils.js.map +0 -1
  308. package/runtime/gateways/file/version.d.ts +0 -2
  309. package/runtime/gateways/file/version.d.ts.map +0 -1
  310. package/runtime/gateways/file/version.js +0 -2
  311. package/runtime/gateways/file/version.js.map +0 -1
  312. package/runtime/gateways/fp-envelope-serialize.d.ts +0 -50
  313. package/runtime/gateways/fp-envelope-serialize.d.ts.map +0 -1
  314. package/runtime/gateways/fp-envelope-serialize.js +0 -141
  315. package/runtime/gateways/fp-envelope-serialize.js.map +0 -1
  316. package/runtime/gateways/index.d.ts +0 -6
  317. package/runtime/gateways/index.d.ts.map +0 -1
  318. package/runtime/gateways/index.js +0 -6
  319. package/runtime/gateways/index.js.map +0 -1
  320. package/runtime/gateways/indexeddb/gateway-impl.d.ts +0 -22
  321. package/runtime/gateways/indexeddb/gateway-impl.d.ts.map +0 -1
  322. package/runtime/gateways/indexeddb/gateway-impl.js +0 -147
  323. package/runtime/gateways/indexeddb/gateway-impl.js.map +0 -1
  324. package/runtime/gateways/indexeddb/index.d.ts +0 -6
  325. package/runtime/gateways/indexeddb/index.d.ts.map +0 -1
  326. package/runtime/gateways/indexeddb/index.js +0 -6
  327. package/runtime/gateways/indexeddb/index.js.map +0 -1
  328. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts +0 -15
  329. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts.map +0 -1
  330. package/runtime/gateways/indexeddb/key-bag-indexeddb.js +0 -42
  331. package/runtime/gateways/indexeddb/key-bag-indexeddb.js.map +0 -1
  332. package/runtime/gateways/indexeddb-version.d.ts +0 -2
  333. package/runtime/gateways/indexeddb-version.d.ts.map +0 -1
  334. package/runtime/gateways/indexeddb-version.js +0 -2
  335. package/runtime/gateways/indexeddb-version.js.map +0 -1
  336. package/runtime/gateways/memory/gateway.d.ts +0 -18
  337. package/runtime/gateways/memory/gateway.d.ts.map +0 -1
  338. package/runtime/gateways/memory/gateway.js +0 -58
  339. package/runtime/gateways/memory/gateway.js.map +0 -1
  340. package/runtime/gateways/memory/version.d.ts +0 -2
  341. package/runtime/gateways/memory/version.d.ts.map +0 -1
  342. package/runtime/gateways/memory/version.js +0 -2
  343. package/runtime/gateways/memory/version.js.map +0 -1
  344. package/runtime/index.d.ts +0 -13
  345. package/runtime/index.d.ts.map +0 -1
  346. package/runtime/index.js +0 -13
  347. package/runtime/index.js.map +0 -1
  348. package/runtime/key-bag-memory.d.ts +0 -12
  349. package/runtime/key-bag-memory.d.ts.map +0 -1
  350. package/runtime/key-bag-memory.js +0 -23
  351. package/runtime/key-bag-memory.js.map +0 -1
  352. package/runtime/key-bag.d.ts +0 -85
  353. package/runtime/key-bag.d.ts.map +0 -1
  354. package/runtime/key-bag.js +0 -415
  355. package/runtime/key-bag.js.map +0 -1
  356. package/runtime/keyed-crypto.d.ts +0 -19
  357. package/runtime/keyed-crypto.d.ts.map +0 -1
  358. package/runtime/keyed-crypto.js +0 -192
  359. package/runtime/keyed-crypto.js.map +0 -1
  360. package/runtime/memory-sys-container.d.ts +0 -2
  361. package/runtime/memory-sys-container.d.ts.map +0 -1
  362. package/runtime/memory-sys-container.js +0 -2
  363. package/runtime/memory-sys-container.js.map +0 -1
  364. package/runtime/meta-key-hack.d.ts +0 -42
  365. package/runtime/meta-key-hack.d.ts.map +0 -1
  366. package/runtime/meta-key-hack.js +0 -201
  367. package/runtime/meta-key-hack.js.map +0 -1
  368. package/runtime/sts-service/index.d.ts +0 -40
  369. package/runtime/sts-service/index.d.ts.map +0 -1
  370. package/runtime/sts-service/index.js +0 -102
  371. package/runtime/sts-service/index.js.map +0 -1
  372. package/runtime/sys-container.d.ts +0 -2
  373. package/runtime/sys-container.d.ts.map +0 -1
  374. package/runtime/sys-container.js +0 -2
  375. package/runtime/sys-container.js.map +0 -1
  376. package/runtime/wait-pr-multiformats/block.d.ts +0 -47
  377. package/runtime/wait-pr-multiformats/block.d.ts.map +0 -1
  378. package/runtime/wait-pr-multiformats/block.js +0 -64
  379. package/runtime/wait-pr-multiformats/block.js.map +0 -1
  380. package/runtime/wait-pr-multiformats/codec-interface.d.ts +0 -29
  381. package/runtime/wait-pr-multiformats/codec-interface.d.ts.map +0 -1
  382. package/runtime/wait-pr-multiformats/codec-interface.js +0 -2
  383. package/runtime/wait-pr-multiformats/codec-interface.js.map +0 -1
  384. package/runtime/wait-pr-multiformats/index.d.ts +0 -3
  385. package/runtime/wait-pr-multiformats/index.d.ts.map +0 -1
  386. package/runtime/wait-pr-multiformats/index.js +0 -3
  387. package/runtime/wait-pr-multiformats/index.js.map +0 -1
  388. package/types.d.ts +0 -427
  389. package/types.d.ts.map +0 -1
  390. package/types.js +0 -54
  391. package/types.js.map +0 -1
  392. package/use-fireproof/index.d.ts +0 -3
  393. package/use-fireproof/index.d.ts.map +0 -1
  394. package/use-fireproof/index.js +0 -3
  395. package/use-fireproof/index.js.map +0 -1
  396. package/utils.d.ts +0 -36
  397. package/utils.d.ts.map +0 -1
  398. package/utils.js +0 -379
  399. package/utils.js.map +0 -1
  400. package/version.d.ts +0 -2
  401. package/version.d.ts.map +0 -1
  402. package/version.js +0 -4
  403. package/version.js.map +0 -1
  404. package/write-queue.d.ts +0 -9
  405. package/write-queue.d.ts.map +0 -1
  406. package/write-queue.js +0 -70
  407. package/write-queue.js.map +0 -1
@@ -1,45 +0,0 @@
1
- import { Logger, LRUSet } from "@adviser/cement";
2
- import { type AnyBlock, type AnyLink, type CarHeader, type CommitOpts, type TransactionMeta, type CarGroup, type Loadable, BlockstoreRuntime, BlockstoreOpts, AttachedStores, ActiveStore, CIDActiveStore, CarCacheItem, CarLog, FroozenCarLog } from "./types.js";
3
- import { CommitQueue } from "./commit-queue.js";
4
- import { type Attachable, type Attached, type CarTransaction, type DbMeta, type Falsy, type SuperThis } from "../types.js";
5
- import { KeyBag } from "../runtime/key-bag.js";
6
- import { TaskManager } from "./task-manager.js";
7
- export declare function carLogIncludesGroup(list: FroozenCarLog, cids: CarGroup): boolean;
8
- export declare class Loader implements Loadable {
9
- readonly ebOpts: BlockstoreRuntime;
10
- readonly logger: Logger;
11
- readonly commitQueue: CommitQueue<CarGroup>;
12
- isCompacting: boolean;
13
- private readonly cidCache;
14
- private readonly maxConcurrentCarReader;
15
- private readonly maxConcurrentWrite;
16
- readonly seenCompacted: LRUSet<string>;
17
- readonly sthis: SuperThis;
18
- readonly taskManager: TaskManager;
19
- readonly carLog: CarLog;
20
- readonly attachedStores: AttachedStores;
21
- attach(attached: Attachable): Promise<Attached>;
22
- private seenMeta;
23
- keyBag(): Promise<KeyBag>;
24
- private readonly onceReady;
25
- ready(): Promise<void>;
26
- close(): Promise<void>;
27
- destroy(): Promise<void>;
28
- constructor(sthis: SuperThis, ebOpts: BlockstoreOpts);
29
- handleDbMetasFromStore(metas: DbMeta[], activeStore: ActiveStore): Promise<void>;
30
- mergeDbMetaIntoClock(meta: DbMeta, activeStore: ActiveStore): Promise<void>;
31
- loadCarHeaderFromMeta<T>(dbm: DbMeta, astore: ActiveStore): Promise<CarHeader<T>>;
32
- commitFiles(t: CarTransaction, done: TransactionMeta): Promise<CarGroup>;
33
- loadFileCar(cid: AnyLink, store: ActiveStore): Promise<CarCacheItem>;
34
- commit<T = TransactionMeta>(t: CarTransaction, done: T, opts?: CommitOpts): Promise<CarGroup>;
35
- updateCarLog<T>(cids: CarGroup, cHeader: CarHeader<T>, compact: boolean): Promise<void>;
36
- cacheTransaction(t: CarTransaction): Promise<void>;
37
- removeCidsForCompact(cid: AnyLink, store: ActiveStore): Promise<void>;
38
- entries(): AsyncIterableIterator<AnyBlock>;
39
- getBlock(cid: AnyLink, store: ActiveStore): Promise<AnyBlock | Falsy>;
40
- loadCar(cid: AnyLink, store: ActiveStore): Promise<CarCacheItem>;
41
- private makeDecoderAndCarReader;
42
- protected storesLoadCar(carCid: AnyLink, store: CIDActiveStore): Promise<CarCacheItem>;
43
- protected getMoreReaders(cids: AnyLink[], store: ActiveStore): Promise<void>;
44
- }
45
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/blockstore/loader.ts"],"names":[],"mappings":"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"}
@@ -1,352 +0,0 @@
1
- import pLimit from "p-limit";
2
- import { CarReader } from "@ipld/car/reader";
3
- import { KeyedResolvOnce, LRUSet, ResolveOnce } from "@adviser/cement";
4
- import { CarLog, } from "./types.js";
5
- import { parseCarFile } from "./loader-helpers.js";
6
- import { defaultedBlockstoreRuntime } from "./transaction.js";
7
- import { CommitQueue } from "./commit-queue.js";
8
- import { isFalsy, PARAM, } from "../types.js";
9
- import { getKeyBag } from "../runtime/key-bag.js";
10
- import { commit, commitFiles } from "./commitor.js";
11
- import { decode } from "../runtime/wait-pr-multiformats/block.js";
12
- import { sha256 as hasher } from "multiformats/hashes/sha2";
13
- import { TaskManager } from "./task-manager.js";
14
- import { AttachedRemotesImpl, createAttachedStores } from "./attachable-store.js";
15
- import { ensureLogger, isNotFoundError } from "../utils.js";
16
- export function carLogIncludesGroup(list, cids) {
17
- const cidSet = cids
18
- .map((cid) => cid.toString())
19
- .sort()
20
- .join(",");
21
- return list.some((arr) => cidSet ===
22
- arr
23
- .map((cid) => cid.toString())
24
- .sort()
25
- .join(","));
26
- }
27
- function uniqueCids(list, remove = new LRUSet()) {
28
- const byString = new Map();
29
- for (const cid of list) {
30
- if (remove.has(cid.toString()))
31
- continue;
32
- byString.set(cid.toString(), cid);
33
- }
34
- return [...byString.values()];
35
- }
36
- export class Loader {
37
- async attach(attached) {
38
- const at = await this.attachedStores.attach(attached);
39
- if (!at.stores.wal) {
40
- try {
41
- const dbMeta = await at.stores.meta.load();
42
- if (Array.isArray(dbMeta)) {
43
- await this.handleDbMetasFromStore(dbMeta, this.attachedStores.activate(at.stores));
44
- }
45
- else if (!isFalsy(dbMeta)) {
46
- throw this.logger.Error().Any({ dbMeta }).Msg("missing dbMeta").AsError();
47
- }
48
- }
49
- catch (e) {
50
- this.logger.Error().Err(e).Msg("error attaching store");
51
- at.detach();
52
- }
53
- }
54
- return at;
55
- }
56
- keyBag() {
57
- return getKeyBag(this.sthis, this.ebOpts.keyBag);
58
- }
59
- async ready() {
60
- return this.onceReady.once(async () => {
61
- await createAttachedStores({
62
- car: { url: this.ebOpts.storeUrls.car, gatewayInterceptor: this.ebOpts.gatewayInterceptor },
63
- file: { url: this.ebOpts.storeUrls.file, gatewayInterceptor: this.ebOpts.gatewayInterceptor },
64
- meta: { url: this.ebOpts.storeUrls.meta, gatewayInterceptor: this.ebOpts.gatewayInterceptor },
65
- wal: { url: this.ebOpts.storeUrls.wal, gatewayInterceptor: this.ebOpts.gatewayInterceptor },
66
- }, this.attachedStores);
67
- const local = this.attachedStores.local();
68
- const metas = await local.active.meta.load();
69
- if (this.ebOpts.meta) {
70
- await this.handleDbMetasFromStore([this.ebOpts.meta, ...(metas || [])], local);
71
- }
72
- else if (metas) {
73
- await this.handleDbMetasFromStore(metas, local);
74
- }
75
- });
76
- }
77
- async close() {
78
- await this.commitQueue.waitIdle();
79
- await this.attachedStores.detach();
80
- }
81
- async destroy() {
82
- await Promise.all(this.attachedStores
83
- .local()
84
- .baseStores()
85
- .map((store) => store.destroy()));
86
- }
87
- constructor(sthis, ebOpts) {
88
- this.commitQueue = new CommitQueue();
89
- this.isCompacting = false;
90
- this.maxConcurrentWrite = pLimit(1);
91
- this.carLog = new CarLog();
92
- this.onceReady = new ResolveOnce();
93
- this.sthis = sthis;
94
- this.ebOpts = defaultedBlockstoreRuntime(sthis, {
95
- ...ebOpts,
96
- }, "Loader");
97
- this.logger = ensureLogger(sthis, "Loader");
98
- this.cidCache = new KeyedResolvOnce({
99
- lru: {
100
- maxEntries: parseInt(this.ebOpts.storeUrls.car.getParam(PARAM.CAR_CACHE_SIZE, "1000"), 10),
101
- },
102
- });
103
- this.seenMeta = new LRUSet({
104
- maxEntries: parseInt(this.ebOpts.storeUrls.meta.getParam(PARAM.CAR_META_CACHE_SIZE, "1000"), 10),
105
- });
106
- this.seenCompacted = new LRUSet({
107
- maxEntries: parseInt(this.ebOpts.storeUrls.car.getParam(PARAM.CAR_COMPACT_CACHE_SIZE, "1000"), 10),
108
- });
109
- this.maxConcurrentCarReader = pLimit(parseInt(this.ebOpts.storeUrls.car.getParam(PARAM.CAR_PARALLEL, "5"), 10));
110
- this.taskManager = new TaskManager(sthis, async (dbMeta, activeStore) => {
111
- await this.handleDbMetasFromStore([dbMeta], activeStore);
112
- }, this.ebOpts.taskManager);
113
- this.attachedStores = new AttachedRemotesImpl(this);
114
- }
115
- async handleDbMetasFromStore(metas, activeStore) {
116
- this.logger.Debug().Any("metas", metas).Url(activeStore.active.car.url()).Msg("handleDbMetasFromStore");
117
- for (const meta of metas) {
118
- await this.maxConcurrentWrite(async () => {
119
- await this.mergeDbMetaIntoClock(meta, activeStore);
120
- });
121
- }
122
- }
123
- async mergeDbMetaIntoClock(meta, activeStore) {
124
- if (this.isCompacting) {
125
- throw this.logger.Error().Msg("cannot merge while compacting").AsError();
126
- }
127
- try {
128
- this.isCompacting = true;
129
- const metaKey = meta.cars
130
- .map((i) => i.toString())
131
- .sort()
132
- .join(",");
133
- if (this.seenMeta.has(metaKey))
134
- return;
135
- this.seenMeta.add(metaKey);
136
- if (carLogIncludesGroup(this.carLog.asArray(), meta.cars)) {
137
- return;
138
- }
139
- const carHeader = await this.loadCarHeaderFromMeta(meta, activeStore);
140
- carHeader.compact.map((c) => c.toString()).forEach((k) => this.seenCompacted.add(k), this.seenCompacted);
141
- try {
142
- await this.getMoreReaders(carHeader.cars.flat(), activeStore);
143
- }
144
- catch (e) {
145
- this.logger.Error().Err(e).Msg("error getting more readers");
146
- }
147
- this.carLog.update(uniqueCids([meta.cars, ...this.carLog.asArray(), ...carHeader.cars], this.seenCompacted));
148
- await this.ebOpts.applyMeta?.(carHeader.meta);
149
- }
150
- finally {
151
- this.isCompacting = false;
152
- }
153
- }
154
- async loadCarHeaderFromMeta(dbm, astore) {
155
- const reader = await this.loadCar(dbm.cars[0], astore);
156
- return await parseCarFile(reader, this.logger);
157
- }
158
- async commitFiles(t, done) {
159
- await this.ready();
160
- const fstore = this.attachedStores.local().active.file;
161
- const wstore = this.attachedStores.local().active.wal;
162
- return this.commitQueue.enqueue(() => commitFiles(fstore, wstore, t, done));
163
- }
164
- async loadFileCar(cid, store) {
165
- return await this.storesLoadCar(cid, store.fileStore());
166
- }
167
- async commit(t, done, opts = { noLoader: false, compact: false }) {
168
- await this.ready();
169
- const carStore = this.attachedStores.local().active.car;
170
- const params = {
171
- encoder: (await carStore.keyedCrypto()).codec(),
172
- carLog: this.carLog,
173
- carStore: carStore,
174
- WALStore: this.attachedStores.local().active.wal,
175
- metaStore: this.attachedStores.local().active.meta,
176
- threshold: this.ebOpts.threshold,
177
- };
178
- return this.commitQueue.enqueue(async () => {
179
- await this.cacheTransaction(t);
180
- const ret = await commit(params, t, done, opts);
181
- await this.updateCarLog(ret.cgrp, ret.header, !!opts.compact);
182
- return ret.cgrp;
183
- });
184
- }
185
- async updateCarLog(cids, cHeader, compact) {
186
- if (compact) {
187
- const previousCompactCid = cHeader.compact[cHeader.compact.length - 1];
188
- cHeader.compact.map((c) => c.toString()).forEach(this.seenCompacted.add, this.seenCompacted);
189
- this.carLog.update(uniqueCids([...this.carLog.asArray(), ...cHeader.cars, cids], this.seenCompacted));
190
- await this.removeCidsForCompact(previousCompactCid[0], this.attachedStores.local()).catch((e) => e);
191
- }
192
- else {
193
- this.carLog.xunshift(cids);
194
- }
195
- }
196
- async cacheTransaction(t) {
197
- for await (const block of t.entries()) {
198
- const sBlock = block.cid.toString();
199
- this.cidCache.get(sBlock).once(() => ({
200
- type: "block",
201
- cid: block.cid,
202
- blocks: [block],
203
- roots: [],
204
- }));
205
- }
206
- }
207
- async removeCidsForCompact(cid, store) {
208
- const carHeader = await this.loadCarHeaderFromMeta({
209
- cars: [cid],
210
- }, store);
211
- for (const cids of carHeader.compact) {
212
- for (const cid of cids) {
213
- await this.attachedStores.local().active.car.remove(cid);
214
- }
215
- }
216
- }
217
- async *entries() {
218
- await this.ready();
219
- const seen = new Set();
220
- for (const carCids of this.carLog.asArray()) {
221
- for (const carCid of carCids) {
222
- const reader = await this.loadCar(carCid, this.attachedStores.local());
223
- if (!reader || reader.type !== "car") {
224
- throw this.logger.Error().Any("reader", reader.type).Str("cid", carCid.toString()).Msg("missing car reader").AsError();
225
- }
226
- for (const block of reader.blocks) {
227
- const cidStr = block.cid.toString();
228
- if (seen.has(cidStr))
229
- continue;
230
- seen.add(cidStr);
231
- yield block;
232
- }
233
- }
234
- }
235
- }
236
- async getBlock(cid, store) {
237
- await this.ready();
238
- const cidStr = cid.toString();
239
- const ci = await this.cidCache.get(cidStr).once(async () => {
240
- const getCompactCarCids = async (carCid) => {
241
- const sCid = carCid.toString();
242
- const reader = await this.loadCar(carCid, store);
243
- const header = await parseCarFile(reader, this.logger);
244
- const compacts = header.compact;
245
- const got = await Promise.allSettled(compacts.map((compact) => compact.map((cid) => this.loadCar(cid, store)).flat()));
246
- got
247
- .filter((result) => result.status === "rejected")
248
- .forEach((result) => {
249
- this.logger.Error().Err(result.reason).Str("cid", sCid).Msg("error getting compacted block");
250
- });
251
- };
252
- let got;
253
- for (const carCids of this.carLog.asArray()) {
254
- for (const carCid of carCids) {
255
- const ci = await this.loadCar(carCid, store);
256
- if (!ci) {
257
- this.logger.Error().Str("cid", carCid.toString()).Msg("missing CarCID");
258
- continue;
259
- }
260
- got = ci.blocks.find((block) => block.cid.equals(cid));
261
- if (got) {
262
- break;
263
- }
264
- }
265
- }
266
- if (!got) {
267
- await getCompactCarCids(this.carLog.last()[0]);
268
- }
269
- return {
270
- type: "block",
271
- cid: cid,
272
- blocks: got ? [got] : [],
273
- roots: [],
274
- };
275
- });
276
- if (!(ci.type === "block" && ci.blocks.length === 1)) {
277
- throw this.logger.Error().Str("cid", cidStr).Any("block", ci).Msg("missing block").AsError();
278
- }
279
- return ci.blocks[0];
280
- }
281
- async loadCar(cid, store) {
282
- const loaded = await this.storesLoadCar(cid, store.carStore());
283
- return loaded;
284
- }
285
- async makeDecoderAndCarReader(carCid, store) {
286
- const carCidStr = carCid.toString();
287
- let loadedCar = undefined;
288
- let activeStore = store.local();
289
- try {
290
- this.logger.Debug().Any("cid", carCidStr).Msg("loading car");
291
- loadedCar = await store.local().load(carCid);
292
- this.logger.Debug().Bool("loadedCar", loadedCar).Msg("loaded");
293
- }
294
- catch (e) {
295
- if (!isNotFoundError(e)) {
296
- throw this.logger.Error().Str("cid", carCidStr).Err(e).Msg("loading car");
297
- }
298
- for (const remote of store.remotes()) {
299
- try {
300
- const remoteCar = await remote.load(carCid);
301
- if (remoteCar) {
302
- this.logger.Debug().Ref("cid", remoteCar.cid).Msg("saving remote car locally");
303
- await store.local().save(remoteCar);
304
- loadedCar = remoteCar;
305
- activeStore = remote;
306
- break;
307
- }
308
- else {
309
- this.logger.Error().Str("cid", carCidStr).Err(e).Msg("loading car");
310
- }
311
- }
312
- catch (e) {
313
- this.logger.Warn().Str("cid", carCidStr).Url(remote.url()).Err(e).Msg("loading car");
314
- }
315
- }
316
- }
317
- if (!loadedCar) {
318
- throw this.logger.Error().Url(store.local().url()).Str("cid", carCidStr).Msg("missing car files").AsError();
319
- }
320
- const bytes = await decode({ bytes: loadedCar.bytes, hasher, codec: (await activeStore.keyedCrypto()).codec() });
321
- const rawReader = await CarReader.fromBytes(bytes.value.data);
322
- const blocks = [];
323
- for await (const block of rawReader.blocks()) {
324
- const sBlock = block.cid.toString();
325
- blocks.push(block);
326
- this.cidCache.get(sBlock).once(() => ({
327
- type: "block",
328
- cid: block.cid,
329
- blocks: [block],
330
- roots: [],
331
- }));
332
- }
333
- return {
334
- type: "car",
335
- cid: carCid,
336
- blocks,
337
- roots: await rawReader.getRoots(),
338
- };
339
- }
340
- async storesLoadCar(carCid, store) {
341
- const carCidStr = carCid.toString();
342
- return this.cidCache.get(carCidStr).once(async () => {
343
- return this.maxConcurrentCarReader(() => this.makeDecoderAndCarReader(carCid, store));
344
- });
345
- }
346
- async getMoreReaders(cids, store) {
347
- for (const cid of cids) {
348
- await this.loadCar(cid, store);
349
- }
350
- }
351
- }
352
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/blockstore/loader.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { URI } from "@adviser/cement";
2
- import { SuperThis } from "../types.js";
3
- import type { SerdeGateway } from "./serde-gateway.js";
4
- import type { Gateway } from "./gateway.js";
5
- export interface SerdeGatewayFactoryItem {
6
- readonly protocol: string;
7
- readonly isDefault?: boolean;
8
- defaultURI(sthis: SuperThis): URI;
9
- serdegateway(sthis: SuperThis): Promise<SerdeGateway>;
10
- }
11
- export declare function getDefaultURI(sthis: SuperThis, protocol?: string): URI;
12
- export interface SerdeOrGatewayFactoryItem {
13
- readonly protocol: string;
14
- readonly isDefault?: boolean;
15
- readonly defaultURI: (sthis: SuperThis) => URI;
16
- readonly serdegateway?: (sthis: SuperThis) => Promise<SerdeGateway>;
17
- readonly gateway?: (sthis: SuperThis) => Promise<Gateway>;
18
- }
19
- export declare function registerStoreProtocol(item: SerdeOrGatewayFactoryItem): () => void;
20
- export declare function getGatewayFactoryItem(protocol: string): SerdeGatewayFactoryItem | undefined;
21
- export declare function defaultGatewayFactoryItem(): SerdeGatewayFactoryItem;
22
- //# sourceMappingURL=register-store-protocol.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register-store-protocol.d.ts","sourceRoot":"","sources":["../../../../src/blockstore/register-store-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAS,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAM5C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAG1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC;IAElC,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CASvD;AAID,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAetE;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC;IAE/C,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAgCjF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAE3F;AAED,wBAAgB,yBAAyB,IAAI,uBAAuB,CAMnE"}
@@ -1,114 +0,0 @@
1
- import { BuildURI, runtimeFn } from "@adviser/cement";
2
- import { PARAM } from "../types.js";
3
- import { FILESTORE_VERSION } from "../runtime/gateways/file/version.js";
4
- import { INDEXEDDB_VERSION } from "../runtime/gateways/indexeddb-version.js";
5
- import { FileGateway } from "../runtime/gateways/file/gateway-impl.js";
6
- import { MemoryGateway } from "../runtime/gateways/memory/gateway.js";
7
- import { sysFileSystemFactory } from "../runtime/gateways/file/sys-file-system-factory.js";
8
- import { DefSerdeGateway } from "../runtime/gateways/def-serde-gateway.js";
9
- const storeFactory = new Map();
10
- export function getDefaultURI(sthis, protocol) {
11
- if (protocol) {
12
- if (!protocol.endsWith(":")) {
13
- protocol += ":";
14
- }
15
- const gfi = storeFactory.get(protocol);
16
- if (gfi) {
17
- return gfi.defaultURI(sthis);
18
- }
19
- }
20
- const found = Array.from(storeFactory.values()).find((item) => item.isDefault);
21
- if (!found) {
22
- throw sthis.logger.Error().Msg("no default found").AsError();
23
- }
24
- return found.defaultURI(sthis);
25
- }
26
- export function registerStoreProtocol(item) {
27
- let protocol = item.protocol;
28
- if (!protocol.endsWith(":")) {
29
- protocol += ":";
30
- }
31
- if (!item.serdegateway && !item.gateway) {
32
- throw new Error(`registerStoreProtocol needs a gateway or serdegateway`);
33
- }
34
- let serdegateway;
35
- if (item.gateway) {
36
- serdegateway = async (sthis) => {
37
- const m = await item.gateway(sthis);
38
- return new DefSerdeGateway(m);
39
- };
40
- }
41
- else {
42
- serdegateway = item.serdegateway;
43
- }
44
- if (item.isDefault) {
45
- Array.from(storeFactory.values()).forEach((items) => {
46
- items.isDefault = false;
47
- });
48
- }
49
- storeFactory.set(protocol, {
50
- ...item,
51
- serdegateway,
52
- });
53
- return () => {
54
- storeFactory.delete(protocol);
55
- };
56
- }
57
- export function getGatewayFactoryItem(protocol) {
58
- return storeFactory.get(protocol);
59
- }
60
- export function defaultGatewayFactoryItem() {
61
- const found = Array.from(storeFactory.values()).find((item) => item.isDefault);
62
- if (!found) {
63
- throw new Error("no default found");
64
- }
65
- return found;
66
- }
67
- function defaultURI(sthis) {
68
- const rt = runtimeFn();
69
- return (BuildURI.from("file://")
70
- .pathname(`${sthis.env.get("HOME")}/.fireproof/${FILESTORE_VERSION.replace(/-.*$/, "")}`)
71
- .setParam(PARAM.VERSION, FILESTORE_VERSION)
72
- .setParam(PARAM.URL_GEN, "default")
73
- .setParam(PARAM.RUNTIME, rt.isNodeIsh ? "node" : rt.isDeno ? "deno" : "unknown")
74
- .URI());
75
- }
76
- if (runtimeFn().isNodeIsh || runtimeFn().isDeno) {
77
- registerStoreProtocol({
78
- protocol: "file:",
79
- isDefault: true,
80
- defaultURI,
81
- gateway: async (sthis) => {
82
- return new FileGateway(sthis, await sysFileSystemFactory(defaultURI(sthis)));
83
- },
84
- });
85
- }
86
- if (runtimeFn().isBrowser) {
87
- registerStoreProtocol({
88
- protocol: "indexeddb:",
89
- isDefault: true,
90
- defaultURI: () => {
91
- return BuildURI.from("indexeddb://")
92
- .pathname("fp")
93
- .setParam(PARAM.VERSION, INDEXEDDB_VERSION)
94
- .setParam(PARAM.RUNTIME, "browser")
95
- .URI();
96
- },
97
- gateway: async () => {
98
- const { GatewayImpl } = await import("@fireproof/core/indexeddb");
99
- return new GatewayImpl();
100
- },
101
- });
102
- }
103
- const memory = new Map();
104
- registerStoreProtocol({
105
- protocol: "memory:",
106
- isDefault: false,
107
- defaultURI: () => {
108
- return BuildURI.from("memory://").pathname("ram").URI();
109
- },
110
- gateway: async (sthis) => {
111
- return new MemoryGateway(sthis, memory);
112
- },
113
- });
114
- //# sourceMappingURL=register-store-protocol.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register-store-protocol.js","sourceRoot":"","sources":["../../../../src/blockstore/register-store-protocol.ts"],"names":[],"mappings":"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"}