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

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 (408) 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 +298 -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 +264 -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/react/use-fireproof-stability.test.tsx +145 -0
  44. package/tests/www/gallery.html +132 -0
  45. package/tests/www/iife.html +42 -0
  46. package/tests/www/todo-aws.html +232 -0
  47. package/tests/www/todo-ipfs.html +213 -0
  48. package/tests/www/todo-local.html +214 -0
  49. package/tests/www/todo-netlify.html +227 -0
  50. package/tests/www/todo.html +254 -0
  51. package/apply-head-queue.d.ts +0 -18
  52. package/apply-head-queue.d.ts.map +0 -1
  53. package/apply-head-queue.js +0 -47
  54. package/apply-head-queue.js.map +0 -1
  55. package/blockstore/attachable-store.d.ts +0 -17
  56. package/blockstore/attachable-store.d.ts.map +0 -1
  57. package/blockstore/attachable-store.js +0 -295
  58. package/blockstore/attachable-store.js.map +0 -1
  59. package/blockstore/commit-queue.d.ts +0 -12
  60. package/blockstore/commit-queue.d.ts.map +0 -1
  61. package/blockstore/commit-queue.js +0 -52
  62. package/blockstore/commit-queue.js.map +0 -1
  63. package/blockstore/commitor.d.ts +0 -21
  64. package/blockstore/commitor.d.ts.map +0 -1
  65. package/blockstore/commitor.js +0 -104
  66. package/blockstore/commitor.js.map +0 -1
  67. package/blockstore/connect-raw.d.ts +0 -2
  68. package/blockstore/connect-raw.d.ts.map +0 -1
  69. package/blockstore/connect-raw.js +0 -2
  70. package/blockstore/connect-raw.js.map +0 -1
  71. package/blockstore/connection-base.d.ts +0 -2
  72. package/blockstore/connection-base.d.ts.map +0 -1
  73. package/blockstore/connection-base.js +0 -2
  74. package/blockstore/connection-base.js.map +0 -1
  75. package/blockstore/encrypt-helpers.d.ts +0 -2
  76. package/blockstore/encrypt-helpers.d.ts.map +0 -1
  77. package/blockstore/encrypt-helpers.js +0 -2
  78. package/blockstore/encrypt-helpers.js.map +0 -1
  79. package/blockstore/fp-envelope.d.ts +0 -32
  80. package/blockstore/fp-envelope.d.ts.map +0 -1
  81. package/blockstore/fp-envelope.js +0 -14
  82. package/blockstore/fp-envelope.js.map +0 -1
  83. package/blockstore/gateway.d.ts +0 -20
  84. package/blockstore/gateway.d.ts.map +0 -1
  85. package/blockstore/gateway.js +0 -2
  86. package/blockstore/gateway.js.map +0 -1
  87. package/blockstore/index.d.ts +0 -16
  88. package/blockstore/index.d.ts.map +0 -1
  89. package/blockstore/index.js +0 -16
  90. package/blockstore/index.js.map +0 -1
  91. package/blockstore/interceptor-gateway.d.ts +0 -29
  92. package/blockstore/interceptor-gateway.d.ts.map +0 -1
  93. package/blockstore/interceptor-gateway.js +0 -137
  94. package/blockstore/interceptor-gateway.js.map +0 -1
  95. package/blockstore/loader-helpers.d.ts +0 -4
  96. package/blockstore/loader-helpers.d.ts.map +0 -1
  97. package/blockstore/loader-helpers.js +0 -16
  98. package/blockstore/loader-helpers.js.map +0 -1
  99. package/blockstore/loader.d.ts +0 -45
  100. package/blockstore/loader.d.ts.map +0 -1
  101. package/blockstore/loader.js +0 -352
  102. package/blockstore/loader.js.map +0 -1
  103. package/blockstore/register-store-protocol.d.ts +0 -22
  104. package/blockstore/register-store-protocol.d.ts.map +0 -1
  105. package/blockstore/register-store-protocol.js +0 -114
  106. package/blockstore/register-store-protocol.js.map +0 -1
  107. package/blockstore/serde-gateway.d.ts +0 -78
  108. package/blockstore/serde-gateway.d.ts.map +0 -1
  109. package/blockstore/serde-gateway.js +0 -2
  110. package/blockstore/serde-gateway.js.map +0 -1
  111. package/blockstore/store-factory.d.ts +0 -11
  112. package/blockstore/store-factory.d.ts.map +0 -1
  113. package/blockstore/store-factory.js +0 -105
  114. package/blockstore/store-factory.js.map +0 -1
  115. package/blockstore/store-remote.d.ts +0 -2
  116. package/blockstore/store-remote.d.ts.map +0 -1
  117. package/blockstore/store-remote.js +0 -2
  118. package/blockstore/store-remote.js.map +0 -1
  119. package/blockstore/store.d.ts +0 -82
  120. package/blockstore/store.d.ts.map +0 -1
  121. package/blockstore/store.js +0 -438
  122. package/blockstore/store.js.map +0 -1
  123. package/blockstore/task-manager.d.ts +0 -19
  124. package/blockstore/task-manager.d.ts.map +0 -1
  125. package/blockstore/task-manager.js +0 -50
  126. package/blockstore/task-manager.js.map +0 -1
  127. package/blockstore/transaction.d.ts +0 -64
  128. package/blockstore/transaction.d.ts.map +0 -1
  129. package/blockstore/transaction.js +0 -249
  130. package/blockstore/transaction.js.map +0 -1
  131. package/blockstore/types.d.ts +0 -400
  132. package/blockstore/types.d.ts.map +0 -1
  133. package/blockstore/types.js +0 -55
  134. package/blockstore/types.js.map +0 -1
  135. package/blockstore/uri-interceptor.d.ts +0 -19
  136. package/blockstore/uri-interceptor.d.ts.map +0 -1
  137. package/blockstore/uri-interceptor.js +0 -61
  138. package/blockstore/uri-interceptor.js.map +0 -1
  139. package/bundle-not-impl.d.ts +0 -2
  140. package/bundle-not-impl.d.ts.map +0 -1
  141. package/bundle-not-impl.js +0 -4
  142. package/bundle-not-impl.js.map +0 -1
  143. package/cli/main.js +0 -26114
  144. package/context.d.ts +0 -7
  145. package/context.d.ts.map +0 -1
  146. package/context.js +0 -15
  147. package/context.js.map +0 -1
  148. package/crdt-clock.d.ts +0 -27
  149. package/crdt-clock.d.ts.map +0 -1
  150. package/crdt-clock.js +0 -140
  151. package/crdt-clock.js.map +0 -1
  152. package/crdt-helpers.d.ts +0 -16
  153. package/crdt-helpers.d.ts.map +0 -1
  154. package/crdt-helpers.js +0 -316
  155. package/crdt-helpers.js.map +0 -1
  156. package/crdt.d.ts +0 -34
  157. package/crdt.d.ts.map +0 -1
  158. package/crdt.js +0 -131
  159. package/crdt.js.map +0 -1
  160. package/database.d.ts +0 -34
  161. package/database.d.ts.map +0 -1
  162. package/database.js +0 -121
  163. package/database.js.map +0 -1
  164. package/index.d.ts.map +0 -1
  165. package/indexer-helpers.d.ts +0 -69
  166. package/indexer-helpers.d.ts.map +0 -1
  167. package/indexer-helpers.js +0 -135
  168. package/indexer-helpers.js.map +0 -1
  169. package/indexer.d.ts +0 -25
  170. package/indexer.d.ts.map +0 -1
  171. package/indexer.js +0 -231
  172. package/indexer.js.map +0 -1
  173. package/ledger.d.ts +0 -56
  174. package/ledger.d.ts.map +0 -1
  175. package/ledger.js +0 -224
  176. package/ledger.js.map +0 -1
  177. package/protocols/cloud/http-connection.d.ts +0 -25
  178. package/protocols/cloud/http-connection.d.ts.map +0 -1
  179. package/protocols/cloud/http-connection.js +0 -153
  180. package/protocols/cloud/http-connection.js.map +0 -1
  181. package/protocols/cloud/index.d.ts +0 -10
  182. package/protocols/cloud/index.d.ts.map +0 -1
  183. package/protocols/cloud/index.js +0 -10
  184. package/protocols/cloud/index.js.map +0 -1
  185. package/protocols/cloud/msg-raw-connection-base.d.ts +0 -16
  186. package/protocols/cloud/msg-raw-connection-base.d.ts.map +0 -1
  187. package/protocols/cloud/msg-raw-connection-base.js +0 -22
  188. package/protocols/cloud/msg-raw-connection-base.js.map +0 -1
  189. package/protocols/cloud/msg-types-data.d.ts +0 -36
  190. package/protocols/cloud/msg-types-data.d.ts.map +0 -1
  191. package/protocols/cloud/msg-types-data.js +0 -38
  192. package/protocols/cloud/msg-types-data.js.map +0 -1
  193. package/protocols/cloud/msg-types-meta.d.ts +0 -41
  194. package/protocols/cloud/msg-types-meta.d.ts.map +0 -1
  195. package/protocols/cloud/msg-types-meta.js +0 -98
  196. package/protocols/cloud/msg-types-meta.js.map +0 -1
  197. package/protocols/cloud/msg-types-wal.d.ts +0 -33
  198. package/protocols/cloud/msg-types-wal.d.ts.map +0 -1
  199. package/protocols/cloud/msg-types-wal.js +0 -38
  200. package/protocols/cloud/msg-types-wal.js.map +0 -1
  201. package/protocols/cloud/msg-types.d.ts +0 -279
  202. package/protocols/cloud/msg-types.d.ts.map +0 -1
  203. package/protocols/cloud/msg-types.js +0 -278
  204. package/protocols/cloud/msg-types.js.map +0 -1
  205. package/protocols/cloud/msger.d.ts +0 -79
  206. package/protocols/cloud/msger.d.ts.map +0 -1
  207. package/protocols/cloud/msger.js +0 -198
  208. package/protocols/cloud/msger.js.map +0 -1
  209. package/protocols/cloud/ws-connection.d.ts +0 -29
  210. package/protocols/cloud/ws-connection.d.ts.map +0 -1
  211. package/protocols/cloud/ws-connection.js +0 -163
  212. package/protocols/cloud/ws-connection.js.map +0 -1
  213. package/protocols/index.d.ts +0 -2
  214. package/protocols/index.d.ts.map +0 -1
  215. package/protocols/index.js +0 -2
  216. package/protocols/index.js.map +0 -1
  217. package/react/img-file.d.ts.map +0 -1
  218. package/react/img-file.js +0 -58
  219. package/react/img-file.js.map +0 -1
  220. package/react/index.d.ts.map +0 -1
  221. package/react/types.d.ts +0 -43
  222. package/react/types.d.ts.map +0 -1
  223. package/react/types.js +0 -2
  224. package/react/types.js.map +0 -1
  225. package/react/use-all-docs.d.ts +0 -4
  226. package/react/use-all-docs.d.ts.map +0 -1
  227. package/react/use-all-docs.js +0 -19
  228. package/react/use-all-docs.js.map +0 -1
  229. package/react/use-changes.d.ts +0 -4
  230. package/react/use-changes.d.ts.map +0 -1
  231. package/react/use-changes.js +0 -19
  232. package/react/use-changes.js.map +0 -1
  233. package/react/use-document.d.ts +0 -4
  234. package/react/use-document.d.ts.map +0 -1
  235. package/react/use-document.js +0 -99
  236. package/react/use-document.js.map +0 -1
  237. package/react/use-fireproof.d.ts +0 -6
  238. package/react/use-fireproof.d.ts.map +0 -1
  239. package/react/use-fireproof.js +0 -15
  240. package/react/use-fireproof.js.map +0 -1
  241. package/react/use-live-query.d.ts +0 -4
  242. package/react/use-live-query.d.ts.map +0 -1
  243. package/react/use-live-query.js +0 -38
  244. package/react/use-live-query.js.map +0 -1
  245. package/react/utils.d.ts +0 -2
  246. package/react/utils.d.ts.map +0 -1
  247. package/react/utils.js +0 -4
  248. package/react/utils.js.map +0 -1
  249. package/runtime/files.d.ts +0 -12
  250. package/runtime/files.d.ts.map +0 -1
  251. package/runtime/files.js +0 -29
  252. package/runtime/files.js.map +0 -1
  253. package/runtime/gateways/cloud/gateway.d.ts +0 -44
  254. package/runtime/gateways/cloud/gateway.d.ts.map +0 -1
  255. package/runtime/gateways/cloud/gateway.js +0 -496
  256. package/runtime/gateways/cloud/gateway.js.map +0 -1
  257. package/runtime/gateways/def-serde-gateway.d.ts +0 -19
  258. package/runtime/gateways/def-serde-gateway.d.ts.map +0 -1
  259. package/runtime/gateways/def-serde-gateway.js +0 -73
  260. package/runtime/gateways/def-serde-gateway.js.map +0 -1
  261. package/runtime/gateways/file/deno/deno-filesystem.d.ts +0 -27
  262. package/runtime/gateways/file/deno/deno-filesystem.d.ts.map +0 -1
  263. package/runtime/gateways/file/deno/deno-filesystem.js +0 -51
  264. package/runtime/gateways/file/deno/deno-filesystem.js.map +0 -1
  265. package/runtime/gateways/file/deno/get-sys-file-system.d.ts +0 -4
  266. package/runtime/gateways/file/deno/get-sys-file-system.d.ts.map +0 -1
  267. package/runtime/gateways/file/deno/get-sys-file-system.js +0 -11
  268. package/runtime/gateways/file/deno/get-sys-file-system.js.map +0 -1
  269. package/runtime/gateways/file/deno/index.d.ts +0 -2
  270. package/runtime/gateways/file/deno/index.d.ts.map +0 -1
  271. package/runtime/gateways/file/deno/index.js +0 -2
  272. package/runtime/gateways/file/deno/index.js.map +0 -1
  273. package/runtime/gateways/file/gateway-impl.d.ts +0 -18
  274. package/runtime/gateways/file/gateway-impl.d.ts.map +0 -1
  275. package/runtime/gateways/file/gateway-impl.js +0 -121
  276. package/runtime/gateways/file/gateway-impl.js.map +0 -1
  277. package/runtime/gateways/file/index.d.ts +0 -3
  278. package/runtime/gateways/file/index.d.ts.map +0 -1
  279. package/runtime/gateways/file/index.js +0 -3
  280. package/runtime/gateways/file/index.js.map +0 -1
  281. package/runtime/gateways/file/key-bag-file.d.ts +0 -19
  282. package/runtime/gateways/file/key-bag-file.d.ts.map +0 -1
  283. package/runtime/gateways/file/key-bag-file.js +0 -40
  284. package/runtime/gateways/file/key-bag-file.js.map +0 -1
  285. package/runtime/gateways/file/node/get-sys-file-system.d.ts +0 -4
  286. package/runtime/gateways/file/node/get-sys-file-system.d.ts.map +0 -1
  287. package/runtime/gateways/file/node/get-sys-file-system.js +0 -11
  288. package/runtime/gateways/file/node/get-sys-file-system.js.map +0 -1
  289. package/runtime/gateways/file/node/index.d.ts +0 -2
  290. package/runtime/gateways/file/node/index.d.ts.map +0 -1
  291. package/runtime/gateways/file/node/index.js +0 -2
  292. package/runtime/gateways/file/node/index.js.map +0 -1
  293. package/runtime/gateways/file/node/node-filesystem.d.ts +0 -32
  294. package/runtime/gateways/file/node/node-filesystem.d.ts.map +0 -1
  295. package/runtime/gateways/file/node/node-filesystem.js +0 -37
  296. package/runtime/gateways/file/node/node-filesystem.js.map +0 -1
  297. package/runtime/gateways/file/node/to-array-buffer.d.ts +0 -2
  298. package/runtime/gateways/file/node/to-array-buffer.d.ts.map +0 -1
  299. package/runtime/gateways/file/node/to-array-buffer.js +0 -12
  300. package/runtime/gateways/file/node/to-array-buffer.js.map +0 -1
  301. package/runtime/gateways/file/sys-file-system-factory.d.ts +0 -4
  302. package/runtime/gateways/file/sys-file-system-factory.d.ts.map +0 -1
  303. package/runtime/gateways/file/sys-file-system-factory.js +0 -13
  304. package/runtime/gateways/file/sys-file-system-factory.js.map +0 -1
  305. package/runtime/gateways/file/utils.d.ts +0 -5
  306. package/runtime/gateways/file/utils.d.ts.map +0 -1
  307. package/runtime/gateways/file/utils.js +0 -27
  308. package/runtime/gateways/file/utils.js.map +0 -1
  309. package/runtime/gateways/file/version.d.ts +0 -2
  310. package/runtime/gateways/file/version.d.ts.map +0 -1
  311. package/runtime/gateways/file/version.js +0 -2
  312. package/runtime/gateways/file/version.js.map +0 -1
  313. package/runtime/gateways/fp-envelope-serialize.d.ts +0 -50
  314. package/runtime/gateways/fp-envelope-serialize.d.ts.map +0 -1
  315. package/runtime/gateways/fp-envelope-serialize.js +0 -141
  316. package/runtime/gateways/fp-envelope-serialize.js.map +0 -1
  317. package/runtime/gateways/index.d.ts +0 -6
  318. package/runtime/gateways/index.d.ts.map +0 -1
  319. package/runtime/gateways/index.js +0 -6
  320. package/runtime/gateways/index.js.map +0 -1
  321. package/runtime/gateways/indexeddb/gateway-impl.d.ts +0 -22
  322. package/runtime/gateways/indexeddb/gateway-impl.d.ts.map +0 -1
  323. package/runtime/gateways/indexeddb/gateway-impl.js +0 -147
  324. package/runtime/gateways/indexeddb/gateway-impl.js.map +0 -1
  325. package/runtime/gateways/indexeddb/index.d.ts +0 -6
  326. package/runtime/gateways/indexeddb/index.d.ts.map +0 -1
  327. package/runtime/gateways/indexeddb/index.js +0 -6
  328. package/runtime/gateways/indexeddb/index.js.map +0 -1
  329. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts +0 -15
  330. package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts.map +0 -1
  331. package/runtime/gateways/indexeddb/key-bag-indexeddb.js +0 -42
  332. package/runtime/gateways/indexeddb/key-bag-indexeddb.js.map +0 -1
  333. package/runtime/gateways/indexeddb-version.d.ts +0 -2
  334. package/runtime/gateways/indexeddb-version.d.ts.map +0 -1
  335. package/runtime/gateways/indexeddb-version.js +0 -2
  336. package/runtime/gateways/indexeddb-version.js.map +0 -1
  337. package/runtime/gateways/memory/gateway.d.ts +0 -18
  338. package/runtime/gateways/memory/gateway.d.ts.map +0 -1
  339. package/runtime/gateways/memory/gateway.js +0 -58
  340. package/runtime/gateways/memory/gateway.js.map +0 -1
  341. package/runtime/gateways/memory/version.d.ts +0 -2
  342. package/runtime/gateways/memory/version.d.ts.map +0 -1
  343. package/runtime/gateways/memory/version.js +0 -2
  344. package/runtime/gateways/memory/version.js.map +0 -1
  345. package/runtime/index.d.ts +0 -13
  346. package/runtime/index.d.ts.map +0 -1
  347. package/runtime/index.js +0 -13
  348. package/runtime/index.js.map +0 -1
  349. package/runtime/key-bag-memory.d.ts +0 -12
  350. package/runtime/key-bag-memory.d.ts.map +0 -1
  351. package/runtime/key-bag-memory.js +0 -23
  352. package/runtime/key-bag-memory.js.map +0 -1
  353. package/runtime/key-bag.d.ts +0 -85
  354. package/runtime/key-bag.d.ts.map +0 -1
  355. package/runtime/key-bag.js +0 -415
  356. package/runtime/key-bag.js.map +0 -1
  357. package/runtime/keyed-crypto.d.ts +0 -19
  358. package/runtime/keyed-crypto.d.ts.map +0 -1
  359. package/runtime/keyed-crypto.js +0 -192
  360. package/runtime/keyed-crypto.js.map +0 -1
  361. package/runtime/memory-sys-container.d.ts +0 -2
  362. package/runtime/memory-sys-container.d.ts.map +0 -1
  363. package/runtime/memory-sys-container.js +0 -2
  364. package/runtime/memory-sys-container.js.map +0 -1
  365. package/runtime/meta-key-hack.d.ts +0 -42
  366. package/runtime/meta-key-hack.d.ts.map +0 -1
  367. package/runtime/meta-key-hack.js +0 -201
  368. package/runtime/meta-key-hack.js.map +0 -1
  369. package/runtime/sts-service/index.d.ts +0 -40
  370. package/runtime/sts-service/index.d.ts.map +0 -1
  371. package/runtime/sts-service/index.js +0 -102
  372. package/runtime/sts-service/index.js.map +0 -1
  373. package/runtime/sys-container.d.ts +0 -2
  374. package/runtime/sys-container.d.ts.map +0 -1
  375. package/runtime/sys-container.js +0 -2
  376. package/runtime/sys-container.js.map +0 -1
  377. package/runtime/wait-pr-multiformats/block.d.ts +0 -47
  378. package/runtime/wait-pr-multiformats/block.d.ts.map +0 -1
  379. package/runtime/wait-pr-multiformats/block.js +0 -64
  380. package/runtime/wait-pr-multiformats/block.js.map +0 -1
  381. package/runtime/wait-pr-multiformats/codec-interface.d.ts +0 -29
  382. package/runtime/wait-pr-multiformats/codec-interface.d.ts.map +0 -1
  383. package/runtime/wait-pr-multiformats/codec-interface.js +0 -2
  384. package/runtime/wait-pr-multiformats/codec-interface.js.map +0 -1
  385. package/runtime/wait-pr-multiformats/index.d.ts +0 -3
  386. package/runtime/wait-pr-multiformats/index.d.ts.map +0 -1
  387. package/runtime/wait-pr-multiformats/index.js +0 -3
  388. package/runtime/wait-pr-multiformats/index.js.map +0 -1
  389. package/types.d.ts +0 -427
  390. package/types.d.ts.map +0 -1
  391. package/types.js +0 -54
  392. package/types.js.map +0 -1
  393. package/use-fireproof/index.d.ts +0 -3
  394. package/use-fireproof/index.d.ts.map +0 -1
  395. package/use-fireproof/index.js +0 -3
  396. package/use-fireproof/index.js.map +0 -1
  397. package/utils.d.ts +0 -36
  398. package/utils.d.ts.map +0 -1
  399. package/utils.js +0 -379
  400. package/utils.js.map +0 -1
  401. package/version.d.ts +0 -2
  402. package/version.d.ts.map +0 -1
  403. package/version.js +0 -4
  404. package/version.js.map +0 -1
  405. package/write-queue.d.ts +0 -9
  406. package/write-queue.d.ts.map +0 -1
  407. package/write-queue.js +0 -70
  408. package/write-queue.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"inputs":{"src/react/utils.ts":{"bytes":156,"imports":[],"format":"esm"},"src/react/use-document.ts":{"bytes":3958,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/react/use-live-query.ts":{"bytes":1760,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/use-all-docs.ts":{"bytes":934,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/use-changes.ts":{"bytes":974,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/use-fireproof.ts":{"bytes":2505,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/react/use-document.ts","kind":"import-statement","original":"./use-document.js"},{"path":"src/react/use-live-query.ts","kind":"import-statement","original":"./use-live-query.js"},{"path":"src/react/use-all-docs.ts","kind":"import-statement","original":"./use-all-docs.js"},{"path":"src/react/use-changes.ts","kind":"import-statement","original":"./use-changes.js"}],"format":"esm"},"src/react/types.ts":{"bytes":2407,"imports":[],"format":"esm"},"src/react/img-file.ts":{"bytes":2248,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/index.ts":{"bytes":124,"imports":[{"path":"src/react/use-fireproof.ts","kind":"import-statement","original":"./use-fireproof.js"},{"path":"src/react/types.ts","kind":"import-statement","original":"./types.js"},{"path":"src/react/img-file.ts","kind":"import-statement","original":"./img-file.js"}],"format":"esm"}},"outputs":{"dist/fireproof-core/react/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":19682},"dist/fireproof-core/react/index.cjs":{"imports":[{"path":"@fireproof/core","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/react/index.ts","inputs":{"src/react/index.ts":{"bytesInOutput":197},"src/react/use-fireproof.ts":{"bytesInOutput":687},"src/react/use-document.ts":{"bytesInOutput":3458},"src/react/utils.ts":{"bytesInOutput":107},"src/react/use-live-query.ts":{"bytesInOutput":1129},"src/react/use-all-docs.ts":{"bytesInOutput":657},"src/react/use-changes.ts":{"bytesInOutput":679},"src/react/img-file.ts":{"bytesInOutput":1499}},"bytes":10094}}}
@@ -0,0 +1 @@
1
+ {"inputs":{"src/react/utils.ts":{"bytes":156,"imports":[],"format":"esm"},"src/react/use-document.ts":{"bytes":3958,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/react/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/react/use-live-query.ts":{"bytes":1760,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/use-all-docs.ts":{"bytes":934,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/use-changes.ts":{"bytes":974,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/use-fireproof.ts":{"bytes":2505,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/react/use-document.ts","kind":"import-statement","original":"./use-document.js"},{"path":"src/react/use-live-query.ts","kind":"import-statement","original":"./use-live-query.js"},{"path":"src/react/use-all-docs.ts","kind":"import-statement","original":"./use-all-docs.js"},{"path":"src/react/use-changes.ts","kind":"import-statement","original":"./use-changes.js"}],"format":"esm"},"src/react/types.ts":{"bytes":2407,"imports":[],"format":"esm"},"src/react/img-file.ts":{"bytes":2248,"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/react/index.ts":{"bytes":124,"imports":[{"path":"src/react/use-fireproof.ts","kind":"import-statement","original":"./use-fireproof.js"},{"path":"src/react/types.ts","kind":"import-statement","original":"./types.js"},{"path":"src/react/img-file.ts","kind":"import-statement","original":"./img-file.js"}],"format":"esm"}},"outputs":{"dist/fireproof-core/react/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":19722},"dist/fireproof-core/react/index.js":{"imports":[{"path":"@fireproof/core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["FireproofCtx","ImgFile","useFireproof"],"entryPoint":"src/react/index.ts","inputs":{"src/react/use-fireproof.ts":{"bytesInOutput":658},"src/react/use-document.ts":{"bytesInOutput":3262},"src/react/utils.ts":{"bytesInOutput":107},"src/react/use-live-query.ts":{"bytesInOutput":1123},"src/react/use-all-docs.ts":{"bytesInOutput":669},"src/react/use-changes.ts":{"bytesInOutput":691},"src/react/index.ts":{"bytesInOutput":0},"src/react/img-file.ts":{"bytesInOutput":1476}},"bytes":8301}}}
@@ -2,7 +2,7 @@ import * as codec from "@ipld/dag-cbor";
2
2
  import { sha256 as hasher } from "multiformats/hashes/sha2";
3
3
  import { BlockView } from "multiformats";
4
4
  import { CID } from "multiformats/cid";
5
- import { MemoryBlockstore } from "@fireproof/vendor/@web3-storage/pail/block";
5
+ import { MemoryBlockstore } from "@web3-storage/pail/block";
6
6
  import { CRDTMeta, CarTransaction, IndexTransactionMeta, SuperThis, bs, ensureSuperThis, rt } from "@fireproof/core";
7
7
  import { simpleBlockOpts } from "../helpers.js";
8
8
 
@@ -19,8 +19,7 @@ import { mockLoader, noopUrl } from "../helpers.js";
19
19
  describe("CarStore", function () {
20
20
  let store: bs.CarStore;
21
21
  const sthis = ensureSuperThis();
22
-
23
- let loader: bs.Loadable;
22
+ const loader = mockLoader(sthis);
24
23
 
25
24
  afterEach(async () => {
26
25
  await store.close();
@@ -28,7 +27,6 @@ describe("CarStore", function () {
28
27
  });
29
28
 
30
29
  beforeEach(async () => {
31
- loader = mockLoader(sthis);
32
30
  await sthis.start();
33
31
  const at = await bs.createAttachedStores(noopUrl("test"), loader);
34
32
  store = at.stores.car;
@@ -53,9 +51,9 @@ describe("CarStore", function () {
53
51
  describe("CarStore with a saved car", function () {
54
52
  let store: bs.CarStore;
55
53
  let car: bs.AnyBlock;
56
- let loader: bs.Loadable;
57
54
 
58
55
  const sthis = ensureSuperThis();
56
+ const loader = mockLoader(sthis);
59
57
 
60
58
  afterEach(async () => {
61
59
  await store.close();
@@ -63,7 +61,6 @@ describe("CarStore with a saved car", function () {
63
61
  });
64
62
 
65
63
  beforeEach(async () => {
66
- loader = mockLoader(sthis);
67
64
  await sthis.start();
68
65
 
69
66
  const at = await bs.createAttachedStores(noopUrl("test2"), loader);
@@ -98,7 +95,7 @@ describe("CarStore with a saved car", function () {
98
95
  describe("MetaStore", function () {
99
96
  let store: bs.MetaStore;
100
97
  const sthis = ensureSuperThis();
101
- let loader: bs.Loadable;
98
+ const loader = mockLoader(sthis);
102
99
 
103
100
  afterEach(async () => {
104
101
  await store.close();
@@ -106,7 +103,6 @@ describe("MetaStore", function () {
106
103
  });
107
104
 
108
105
  beforeEach(async () => {
109
- loader = mockLoader(sthis);
110
106
  await sthis.start();
111
107
  const at = await bs.createAttachedStores(noopUrl("test"), loader);
112
108
  store = at.stores.meta;
@@ -139,7 +135,7 @@ describe("MetaStore with a saved header", function () {
139
135
  let store: bs.MetaStore;
140
136
  let cid: CID;
141
137
  const sthis = ensureSuperThis();
142
- let loader: bs.Loadable;
138
+ const loader = mockLoader(sthis);
143
139
 
144
140
  afterEach(async () => {
145
141
  await store.close();
@@ -147,7 +143,6 @@ describe("MetaStore with a saved header", function () {
147
143
  });
148
144
 
149
145
  beforeEach(async () => {
150
- loader = mockLoader(sthis);
151
146
  await sthis.start();
152
147
  const at = await bs.createAttachedStores(noopUrl("test3-meta"), loader);
153
148
  store = at.stores.meta;
@@ -176,7 +176,7 @@ describe("activate store", () => {
176
176
 
177
177
  it("activate by store", async () => {
178
178
  expect(attach.activate(secondAttached.stores).active.car.url().toString()).toBe(
179
- "memory://second?localName=first&name=second&store=car&storekey=%40second-data%40&suffix=.car&version=v0.19-memory",
179
+ "memory://second?name=second&store=car&storekey=%40second-data%40&suffix=.car&version=v0.19-memory",
180
180
  );
181
181
  expect(attach.activate(firstAttached.stores).local().active.car.url().toString()).toBe(
182
182
  "memory://first?name=first&store=car&storekey=%40first-data%40&suffix=.car&version=v0.19-memory",
@@ -188,10 +188,10 @@ describe("activate store", () => {
188
188
 
189
189
  it("activate by store", async () => {
190
190
  expect(attach.activate("memory://second").active.car.url().toString()).toBe(
191
- "memory://second?localName=first&name=second&store=car&storekey=%40second-data%40&suffix=.car&version=v0.19-memory",
191
+ "memory://second?name=second&store=car&storekey=%40second-data%40&suffix=.car&version=v0.19-memory",
192
192
  );
193
193
  expect(attach.activate("memory://second").remotes()[0].active.car.url().toString()).toEqual(
194
- "memory://second?localName=first&name=second&store=car&storekey=%40second-data%40&suffix=.car&version=v0.19-memory",
194
+ "memory://second?name=second&store=car&storekey=%40second-data%40&suffix=.car&version=v0.19-memory",
195
195
  );
196
196
  expect(attach.activate("memory://first?store=meta").active.car.url().toString()).toBe(
197
197
  "memory://first?name=first&store=car&storekey=%40first-data%40&suffix=.car&version=v0.19-memory",
@@ -0,0 +1,91 @@
1
+ import { renderHook, waitFor } from "@testing-library/react";
2
+ import { describe, expect, it } from "vitest";
3
+ import { fireproof, useFireproof } from "use-fireproof";
4
+ import type { Database, LiveQueryResult } from "use-fireproof";
5
+
6
+ // Test timeout value for CI
7
+ const TEST_TIMEOUT = 45000;
8
+
9
+ describe("HOOK: useFireproof database switching", () => {
10
+ const db1Name = "db1";
11
+ const db2Name = "db2";
12
+ let db1: Database, db2: Database;
13
+
14
+ beforeEach(async () => {
15
+ // Setup two databases with different data
16
+ db1 = fireproof(db1Name);
17
+ db2 = fireproof(db2Name);
18
+
19
+ // Add data to db1
20
+ await db1.put({ foo: "db1-data" });
21
+
22
+ // Add different data to db2
23
+ await db2.put({ foo: "db2-data" });
24
+ });
25
+
26
+ it(
27
+ "should switch databases and update query results when database name changes",
28
+ async () => {
29
+ let query: LiveQueryResult<{ foo: string }, string>;
30
+ let currentDbName: string;
31
+ let currentDb: Database;
32
+
33
+ // Initial render with db1
34
+ const { rerender } = renderHook(
35
+ ({ dbName }) => {
36
+ const result = useFireproof(dbName);
37
+ currentDbName = result.database.name;
38
+ currentDb = result.database;
39
+ query = result.useLiveQuery<{ foo: string }>("foo");
40
+ return result;
41
+ },
42
+ { initialProps: { dbName: db1Name } },
43
+ );
44
+
45
+ // Verify initial state with db1
46
+ await waitFor(() => {
47
+ expect(currentDbName).toBe(db1Name);
48
+ expect(currentDb.name).toBe(db1Name);
49
+ expect(query.rows.map((row) => row.doc?.foo)).toEqual(["db1-data"]);
50
+ });
51
+
52
+ // Switch to db2
53
+ rerender({ dbName: db2Name });
54
+
55
+ // Verify state with db2
56
+ await waitFor(() => {
57
+ expect(currentDbName).toBe(db2Name);
58
+ expect(currentDb.name).toBe(db2Name);
59
+ expect(query.rows.map((row) => row.doc?.foo)).toEqual(["db2-data"]);
60
+ });
61
+
62
+ // Switch back to db1
63
+ rerender({ dbName: db1Name });
64
+
65
+ // Verify state is back to db1
66
+ await waitFor(() => {
67
+ expect(currentDbName).toBe(db1Name);
68
+ expect(currentDb.name).toBe(db1Name);
69
+ expect(query.rows.map((row) => row.doc?.foo)).toEqual(["db1-data"]);
70
+ });
71
+
72
+ // Test that changes to the new database are reflected
73
+ await db2.put({ foo: "db2-updated" });
74
+ rerender({ dbName: db2Name });
75
+
76
+ await waitFor(() => {
77
+ expect(currentDbName).toBe(db2Name);
78
+ expect(currentDb.name).toBe(db2Name);
79
+ expect(query.rows.map((row) => row.doc?.foo)).toEqual(["db2-data", "db2-updated"]);
80
+ });
81
+ },
82
+ TEST_TIMEOUT,
83
+ );
84
+
85
+ afterEach(async () => {
86
+ await db1.close();
87
+ await db1.destroy();
88
+ await db2.close();
89
+ await db2.destroy();
90
+ });
91
+ });
@@ -0,0 +1,145 @@
1
+ import { describe, it, expect, vi } from "vitest";
2
+ import { render, waitFor, fireEvent, act } from "@testing-library/react";
3
+ import { useState, useEffect, createElement } from "react";
4
+ import { useFireproof } from "../../src/react/use-fireproof.js";
5
+
6
+ // Extend HTMLElement for TypeScript compatibility
7
+ declare global {
8
+ interface HTMLElement {
9
+ querySelector(selectors: string): HTMLElement | null;
10
+ getAttribute(name: string): string | null;
11
+ textContent: string | null;
12
+ click(): void;
13
+ }
14
+ }
15
+
16
+ // Test component that triggers state updates and verifies database stability
17
+ function TestComponent() {
18
+ const { database } = useFireproof("test-stability-db");
19
+ const initialDatabaseRef = database;
20
+
21
+ const [counter, setCounter] = useState(0);
22
+
23
+ // Verify that the database reference remains stable across renders
24
+ if (counter > 0 && initialDatabaseRef !== database) {
25
+ throw new Error("Database reference changed between renders!");
26
+ }
27
+
28
+ return createElement("div", {}, [
29
+ createElement("div", { "data-testid": "db-name", key: "db-name" }, database.name),
30
+ createElement("div", { "data-testid": "counter", key: "counter" }, String(counter)),
31
+ createElement(
32
+ "button",
33
+ {
34
+ "data-testid": "increment",
35
+ key: "increment",
36
+ onClick: () => setCounter((c) => c + 1),
37
+ },
38
+ "Increment",
39
+ ),
40
+ ]);
41
+ }
42
+
43
+ // Test timeout value for CI
44
+ const TEST_TIMEOUT = 60000; // 1 minute per test
45
+
46
+ describe("HOOK: useFireproof stability", () => {
47
+ it(
48
+ "database instance remains stable across renders",
49
+ async () => {
50
+ // Mock console.error to catch any React errors
51
+ const consoleErrorMock = vi.spyOn(console, "error").mockImplementation(vi.fn());
52
+
53
+ const { findByTestId } = render(createElement(TestComponent, {}));
54
+
55
+ // Get initial state
56
+ const dbNameEl = await findByTestId("db-name" as const);
57
+ const counterEl = await findByTestId("counter" as const);
58
+
59
+ // Verify initial state
60
+ expect(dbNameEl.textContent).toBe("test-stability-db");
61
+ expect(counterEl.textContent).toBe("0");
62
+
63
+ // Trigger a re-render by updating state
64
+ const incrementButton = await findByTestId("increment" as const);
65
+ await act(async () => {
66
+ incrementButton.click();
67
+ });
68
+
69
+ // Verify state changed but no errors occurred
70
+ expect(counterEl.textContent).toBe("1");
71
+
72
+ // There should be no errors logged from React about database reference changing
73
+ expect(consoleErrorMock).not.toHaveBeenCalledWith(expect.stringContaining("Database reference changed between renders"));
74
+
75
+ // Perform multiple render cycles to ensure stability
76
+ for (let i = 0; i < 5; i++) {
77
+ await act(async () => {
78
+ incrementButton.click();
79
+ });
80
+ }
81
+
82
+ // Verify no errors occurred during multiple renders
83
+ expect(consoleErrorMock).not.toHaveBeenCalledWith(expect.stringContaining("Database reference changed between renders"));
84
+
85
+ // Restore console
86
+ consoleErrorMock.mockRestore();
87
+ },
88
+ TEST_TIMEOUT,
89
+ );
90
+
91
+ it(
92
+ "input events do not cause infinite render loops",
93
+ async () => {
94
+ // This test is specifically designed to catch the issue reported in v0.20.0
95
+
96
+ function InputTestComponent() {
97
+ // We still create the database to ensure no infinite render loops occur
98
+ // But we don't need to use any of its features directly in this test
99
+ useFireproof("test-input-db");
100
+ const [inputValue, setInputValue] = useState("");
101
+ const [renderCount, setRenderCount] = useState(0);
102
+
103
+ // Track render count
104
+ useEffect(() => {
105
+ setRenderCount((c) => c + 1);
106
+ }, []);
107
+
108
+ return createElement("div", {}, [
109
+ createElement("input", {
110
+ type: "text",
111
+ "data-testid": "input",
112
+ key: "input",
113
+ value: inputValue,
114
+ onChange: (e: { target: { value: string } }) => {
115
+ setInputValue(e.target.value);
116
+ },
117
+ }),
118
+ createElement("div", { "data-testid": "render-count", key: "render-count" }, String(renderCount)),
119
+ ]);
120
+ }
121
+
122
+ // Instead of using createRoot, use the standard render method
123
+ const { getByTestId } = render(createElement(InputTestComponent));
124
+
125
+ // Get the input element
126
+ const input = getByTestId("input");
127
+
128
+ // Simulate typing in the input field - this would trigger the bug in v0.20.0
129
+ await waitFor(() => {
130
+ fireEvent.change(input, { target: { value: "test" } });
131
+ });
132
+
133
+ // Wait a bit to ensure no infinite loop occurs
134
+ await new Promise((resolve) => setTimeout(resolve, 1000));
135
+
136
+ // Verify the render count hasn't exploded (if it were an infinite loop, the test would timeout)
137
+ const renderCount = getByTestId("render-count");
138
+
139
+ // The exact number isn't important, but it should be a small number
140
+ // If we're in an infinite loop, the test would have timed out before reaching here
141
+ expect(parseInt(renderCount.textContent || "0", 10)).toBeLessThan(10);
142
+ },
143
+ TEST_TIMEOUT,
144
+ );
145
+ });
@@ -0,0 +1,132 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Fireproof Uploads</title>
7
+ <script src="./fireproof.iife.js?cache=94"></script>
8
+ <script type="text/javascript">
9
+ function testApp() {
10
+ const { fireproof, connect } = Fireproof;
11
+ let dbName;
12
+ let db;
13
+ let cx;
14
+
15
+ let dbUnsubscribe = false;
16
+
17
+ function setupDb(name) {
18
+ if (dbUnsubscribe) {
19
+ dbUnsubscribe();
20
+ }
21
+ dbName = name;
22
+ db = fireproof(name);
23
+ window.db = db;
24
+
25
+ cx = db.connect("jchris+files-30@fireproof.storage", "todo-test");
26
+ window.cx = cx;
27
+
28
+ dbUnsubscribe = db.subscribe(redraw);
29
+ return db;
30
+ }
31
+
32
+ let doing;
33
+ const redraw = async () => {
34
+ if (doing) {
35
+ return doing;
36
+ }
37
+ doing = draw().finally(() => (doing = null));
38
+ return doing;
39
+ };
40
+
41
+ const draw = async () => {
42
+ const result = await db.query("_id", { descending: true, limit: 10 });
43
+ document.querySelector("ul").innerHTML = "";
44
+ for (const row of result.rows) {
45
+ const doc = row.doc;
46
+ if (doc._publicFiles) {
47
+ const li = document.querySelector("ul").appendChild(document.createElement("li"));
48
+ li.appendChild(document.createElement("span")).innerText = row.key;
49
+ li.appendChild(document.createElement("br"));
50
+ for (const file of Object.keys(doc._publicFiles)) {
51
+ (async () => {
52
+ const meta = doc._publicFiles[file];
53
+ if (meta.file && /image/.test(meta.type)) {
54
+ const src = URL.createObjectURL(await meta.file());
55
+ const img = document.createElement("img");
56
+ img.src = src;
57
+ img.height = 100;
58
+ img.onload = () => {
59
+ URL.revokeObjectURL(img.src);
60
+ };
61
+
62
+ console.log("url", meta.url);
63
+ li.appendChild(img);
64
+ }
65
+ })();
66
+ }
67
+ }
68
+ }
69
+ };
70
+
71
+ async function changeList(e) {
72
+ e.preventDefault();
73
+ const input = document.querySelector("#list");
74
+ dbName = input.value;
75
+ history.pushState(null, "", location.pathname + "?db=" + encodeURIComponent(dbName));
76
+ setupDb(dbName);
77
+
78
+ redraw();
79
+ }
80
+ window.changeList = changeList;
81
+
82
+ async function openDashboard(e) {
83
+ db.openDashboard();
84
+ }
85
+ window.openDashboard = openDashboard;
86
+
87
+ function handleFiles() {
88
+ const fileList = this.files;
89
+ const doc = {
90
+ _publicFiles: {},
91
+ };
92
+ for (const file of fileList) {
93
+ doc._publicFiles[file.name] = file;
94
+ }
95
+ const ok = db.put(doc);
96
+ }
97
+
98
+ async function initialize() {
99
+ ps = new URLSearchParams(location.search);
100
+ const listQ = ps.get("db");
101
+ setupDb(listQ || "hello-world");
102
+ const input = document.querySelector("#list");
103
+ input.value = dbName;
104
+
105
+ const inputElement = document.getElementById("files-up");
106
+ inputElement.addEventListener("change", handleFiles, false);
107
+ db.subscribe(draw);
108
+ draw();
109
+ }
110
+
111
+ window.onload = initialize;
112
+ }
113
+ testApp();
114
+ </script>
115
+ </head>
116
+
117
+ <body>
118
+ List:
119
+ <input title="gallery" type="text" name="list" id="list" />
120
+ <button onclick="changeList(event)">Change Gallery</button>
121
+ <button onclick="openDashboard(event)">🔥 Import to Dashboard</button>
122
+ <h3>Files</h3>
123
+ <p>
124
+ Data is stored locally and encrypted before upload to S3. This is a demo so the encryption key is not managed securely. Read
125
+ more about <a href="https://use-fireproof.com/docs/ledger-api/replication">Fireproof replication options.</a> You can also see
126
+ a demo without images but <a href="https://fireproof.storage/s3up-test.html">with compaction and refresh buttons.</a>
127
+ </p>
128
+ <label for="files-up"><strong>Drop files:</strong></label>
129
+ <input accept="image/*" title="save to Fireproof" type="file" id="files-up" multiple />
130
+ <ul></ul>
131
+ </body>
132
+ </html>
@@ -0,0 +1,42 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Fireproof Test</title>
7
+ <script src="./fireproof.iife.js"></script>
8
+ <script type="text/javascript">
9
+ function testApp() {
10
+ const db = Fireproof.fireproof("iife-test", { persistIndexes: true });
11
+
12
+ const draw = async () => {
13
+ const result = await db.query("sort", { includeDocs: true });
14
+ document.querySelector("ul").innerHTML = "";
15
+ for (const row of result.rows) {
16
+ document.querySelector("ul").appendChild(document.createElement("li")).innerText = JSON.stringify(row.doc);
17
+ }
18
+ };
19
+
20
+ async function initialize() {
21
+ console.log("initialize");
22
+ db.subscribe(draw);
23
+ draw();
24
+ }
25
+
26
+ async function onButtonClick(e) {
27
+ e.preventDefault();
28
+ console.log("put");
29
+ const ok = await db.put({ sort: Math.random(), test: "test" });
30
+ console.log("ok", ok.id);
31
+ }
32
+ window.onButtonClick = onButtonClick;
33
+ window.onload = initialize;
34
+ }
35
+ testApp();
36
+ </script>
37
+ </head>
38
+ <body>
39
+ <button onclick="onButtonClick(event)">Click to Run</button>
40
+ <ul></ul>
41
+ </body>
42
+ </html>