svelte-firekit 0.1.9 → 0.2.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 (440) hide show
  1. package/README.md +550 -354
  2. package/dist/components/AuthGuard.svelte +64 -0
  3. package/dist/components/AuthGuard.svelte.d.ts +15 -0
  4. package/dist/components/Collection.svelte +62 -0
  5. package/dist/components/Collection.svelte.d.ts +39 -0
  6. package/dist/components/CustomGuard.svelte +87 -0
  7. package/dist/components/CustomGuard.svelte.d.ts +13 -0
  8. package/dist/components/Doc.svelte +56 -0
  9. package/dist/components/Doc.svelte.d.ts +36 -0
  10. package/dist/components/DownloadURL.svelte +48 -0
  11. package/dist/components/DownloadURL.svelte.d.ts +14 -0
  12. package/dist/components/FirebaseApp.svelte +81 -0
  13. package/dist/components/FirebaseApp.svelte.d.ts +12 -0
  14. package/dist/components/Node.svelte +54 -0
  15. package/dist/components/Node.svelte.d.ts +36 -0
  16. package/dist/components/SignedIn.svelte +22 -0
  17. package/dist/components/{firekit/signed-in.svelte.d.ts → SignedIn.svelte.d.ts} +1 -4
  18. package/dist/components/SignedOut.svelte +32 -0
  19. package/dist/components/{firekit/signed-out.svelte.d.ts → SignedOut.svelte.d.ts} +3 -5
  20. package/dist/components/UploadTask.svelte +75 -0
  21. package/dist/components/UploadTask.svelte.d.ts +33 -0
  22. package/dist/config.d.ts +29 -6
  23. package/dist/config.js +37 -74
  24. package/dist/context.d.ts +46 -0
  25. package/dist/context.js +56 -0
  26. package/dist/firebase.d.ts +25 -84
  27. package/dist/firebase.js +75 -125
  28. package/dist/index.d.ts +32 -20
  29. package/dist/index.js +49 -30
  30. package/dist/services/ai.svelte.d.ts +152 -0
  31. package/dist/services/ai.svelte.js +302 -0
  32. package/dist/services/analytics.d.ts +39 -231
  33. package/dist/services/analytics.js +89 -421
  34. package/dist/services/app-check.svelte.d.ts +82 -0
  35. package/dist/services/app-check.svelte.js +159 -0
  36. package/dist/services/auth.d.ts +63 -352
  37. package/dist/services/auth.js +353 -718
  38. package/dist/services/bundles.d.ts +42 -0
  39. package/dist/services/bundles.js +57 -0
  40. package/dist/services/callable.d.ts +57 -0
  41. package/dist/services/callable.js +115 -0
  42. package/dist/services/collection.svelte.d.ts +154 -221
  43. package/dist/services/collection.svelte.js +357 -663
  44. package/dist/services/document.svelte.d.ts +73 -254
  45. package/dist/services/document.svelte.js +196 -497
  46. package/dist/services/in-app-messaging.d.ts +46 -0
  47. package/dist/services/in-app-messaging.js +88 -0
  48. package/dist/services/messaging.svelte.d.ts +75 -0
  49. package/dist/services/messaging.svelte.js +190 -0
  50. package/dist/services/mutations.d.ts +59 -282
  51. package/dist/services/mutations.js +202 -951
  52. package/dist/services/performance.d.ts +60 -0
  53. package/dist/services/performance.js +118 -0
  54. package/dist/services/presence.svelte.d.ts +21 -89
  55. package/dist/services/presence.svelte.js +232 -469
  56. package/dist/services/realtime.svelte.d.ts +54 -125
  57. package/dist/services/realtime.svelte.js +111 -175
  58. package/dist/services/remote-config.svelte.d.ts +73 -0
  59. package/dist/services/remote-config.svelte.js +204 -0
  60. package/dist/services/storage.svelte.d.ts +81 -208
  61. package/dist/services/storage.svelte.js +190 -305
  62. package/dist/services/user.svelte.d.ts +23 -244
  63. package/dist/services/user.svelte.js +129 -439
  64. package/dist/types/analytics.d.ts +2 -36
  65. package/dist/types/analytics.js +0 -5
  66. package/dist/types/auth.d.ts +15 -85
  67. package/dist/types/auth.js +0 -17
  68. package/dist/types/collection.d.ts +31 -225
  69. package/dist/types/collection.js +5 -51
  70. package/dist/types/document.d.ts +11 -236
  71. package/dist/types/document.js +2 -47
  72. package/dist/types/firebase.d.ts +10 -13
  73. package/dist/types/firebase.js +3 -9
  74. package/dist/types/index.d.ts +5 -5
  75. package/dist/types/index.js +5 -4
  76. package/dist/types/mutations.d.ts +11 -225
  77. package/dist/types/mutations.js +6 -51
  78. package/dist/types/presence.d.ts +5 -158
  79. package/dist/types/presence.js +0 -20
  80. package/dist/utils/errors.d.ts +10 -14
  81. package/dist/utils/errors.js +11 -16
  82. package/dist/utils/firestore.d.ts +3 -4
  83. package/dist/utils/firestore.js +7 -10
  84. package/dist/utils/index.d.ts +4 -4
  85. package/dist/utils/index.js +4 -8
  86. package/dist/utils/providers.d.ts +4 -13
  87. package/dist/utils/providers.js +14 -13
  88. package/dist/utils/user.d.ts +1 -3
  89. package/dist/utils/user.js +1 -3
  90. package/package.json +41 -55
  91. package/dist/components/docs/doc-content.svelte +0 -19
  92. package/dist/components/docs/doc-content.svelte.d.ts +0 -6
  93. package/dist/components/docs/doc-header.svelte +0 -24
  94. package/dist/components/docs/doc-header.svelte.d.ts +0 -13
  95. package/dist/components/docs/doc-renderer.svelte +0 -27
  96. package/dist/components/docs/doc-renderer.svelte.d.ts +0 -8
  97. package/dist/components/docs/mobile-table-of-contents.svelte +0 -42
  98. package/dist/components/docs/mobile-table-of-contents.svelte.d.ts +0 -3
  99. package/dist/components/docs/table-of-contents.svelte +0 -33
  100. package/dist/components/docs/table-of-contents.svelte.d.ts +0 -4
  101. package/dist/components/docs/toc.svelte.d.ts +0 -16
  102. package/dist/components/docs/toc.svelte.js +0 -59
  103. package/dist/components/firekit/Collection.svelte +0 -122
  104. package/dist/components/firekit/Collection.svelte.d.ts +0 -27
  105. package/dist/components/firekit/Doc.svelte +0 -140
  106. package/dist/components/firekit/Doc.svelte.d.ts +0 -28
  107. package/dist/components/firekit/Node.svelte +0 -97
  108. package/dist/components/firekit/Node.svelte.d.ts +0 -23
  109. package/dist/components/firekit/auth-guard.svelte +0 -120
  110. package/dist/components/firekit/auth-guard.svelte.d.ts +0 -26
  111. package/dist/components/firekit/custom-guard.svelte +0 -163
  112. package/dist/components/firekit/custom-guard.svelte.d.ts +0 -31
  113. package/dist/components/firekit/download-url.svelte +0 -92
  114. package/dist/components/firekit/download-url.svelte.d.ts +0 -19
  115. package/dist/components/firekit/firebase-app.svelte +0 -33
  116. package/dist/components/firekit/firebase-app.svelte.d.ts +0 -7
  117. package/dist/components/firekit/node-list.svelte +0 -102
  118. package/dist/components/firekit/node-list.svelte.d.ts +0 -27
  119. package/dist/components/firekit/signed-in.svelte +0 -42
  120. package/dist/components/firekit/signed-out.svelte +0 -42
  121. package/dist/components/firekit/storage-list.svelte +0 -97
  122. package/dist/components/firekit/storage-list.svelte.d.ts +0 -26
  123. package/dist/components/firekit/upload-task.svelte +0 -108
  124. package/dist/components/firekit/upload-task.svelte.d.ts +0 -24
  125. package/dist/components/nav/app-sidebar.svelte +0 -175
  126. package/dist/components/nav/app-sidebar.svelte.d.ts +0 -9
  127. package/dist/components/nav/auto-breadcrumb.svelte +0 -41
  128. package/dist/components/nav/auto-breadcrumb.svelte.d.ts +0 -3
  129. package/dist/components/nav/dark-mode-toggle.svelte +0 -17
  130. package/dist/components/nav/dark-mode-toggle.svelte.d.ts +0 -18
  131. package/dist/components/nav/nav-components.svelte +0 -24
  132. package/dist/components/nav/nav-components.svelte.d.ts +0 -11
  133. package/dist/components/nav/nav-main.svelte +0 -45
  134. package/dist/components/nav/nav-main.svelte.d.ts +0 -11
  135. package/dist/components/nav/nav-secondary.svelte +0 -32
  136. package/dist/components/nav/nav-secondary.svelte.d.ts +0 -14
  137. package/dist/components/nav/site-header.svelte +0 -32
  138. package/dist/components/nav/site-header.svelte.d.ts +0 -18
  139. package/dist/components/ui/avatar/avatar-fallback.svelte +0 -17
  140. package/dist/components/ui/avatar/avatar-fallback.svelte.d.ts +0 -4
  141. package/dist/components/ui/avatar/avatar-image.svelte +0 -17
  142. package/dist/components/ui/avatar/avatar-image.svelte.d.ts +0 -4
  143. package/dist/components/ui/avatar/avatar.svelte +0 -19
  144. package/dist/components/ui/avatar/avatar.svelte.d.ts +0 -4
  145. package/dist/components/ui/avatar/index.d.ts +0 -4
  146. package/dist/components/ui/avatar/index.js +0 -6
  147. package/dist/components/ui/badge/badge.svelte +0 -50
  148. package/dist/components/ui/badge/badge.svelte.d.ts +0 -32
  149. package/dist/components/ui/badge/index.d.ts +0 -2
  150. package/dist/components/ui/badge/index.js +0 -2
  151. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +0 -23
  152. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte.d.ts +0 -5
  153. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +0 -20
  154. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte.d.ts +0 -5
  155. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +0 -31
  156. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte.d.ts +0 -11
  157. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +0 -23
  158. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte.d.ts +0 -5
  159. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +0 -23
  160. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte.d.ts +0 -5
  161. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +0 -27
  162. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte.d.ts +0 -5
  163. package/dist/components/ui/breadcrumb/breadcrumb.svelte +0 -21
  164. package/dist/components/ui/breadcrumb/breadcrumb.svelte.d.ts +0 -5
  165. package/dist/components/ui/breadcrumb/index.d.ts +0 -8
  166. package/dist/components/ui/breadcrumb/index.js +0 -10
  167. package/dist/components/ui/button/button.svelte +0 -80
  168. package/dist/components/ui/button/button.svelte.d.ts +0 -58
  169. package/dist/components/ui/button/index.d.ts +0 -2
  170. package/dist/components/ui/button/index.js +0 -4
  171. package/dist/components/ui/card/card-action.svelte +0 -20
  172. package/dist/components/ui/card/card-action.svelte.d.ts +0 -5
  173. package/dist/components/ui/card/card-content.svelte +0 -15
  174. package/dist/components/ui/card/card-content.svelte.d.ts +0 -5
  175. package/dist/components/ui/card/card-description.svelte +0 -20
  176. package/dist/components/ui/card/card-description.svelte.d.ts +0 -5
  177. package/dist/components/ui/card/card-footer.svelte +0 -20
  178. package/dist/components/ui/card/card-footer.svelte.d.ts +0 -5
  179. package/dist/components/ui/card/card-header.svelte +0 -23
  180. package/dist/components/ui/card/card-header.svelte.d.ts +0 -5
  181. package/dist/components/ui/card/card-title.svelte +0 -20
  182. package/dist/components/ui/card/card-title.svelte.d.ts +0 -5
  183. package/dist/components/ui/card/card.svelte +0 -23
  184. package/dist/components/ui/card/card.svelte.d.ts +0 -5
  185. package/dist/components/ui/card/index.d.ts +0 -8
  186. package/dist/components/ui/card/index.js +0 -10
  187. package/dist/components/ui/chart/chart-container.svelte +0 -80
  188. package/dist/components/ui/chart/chart-container.svelte.d.ts +0 -9
  189. package/dist/components/ui/chart/chart-style.svelte +0 -36
  190. package/dist/components/ui/chart/chart-style.svelte.d.ts +0 -8
  191. package/dist/components/ui/chart/chart-tooltip.svelte +0 -159
  192. package/dist/components/ui/chart/chart-tooltip.svelte.d.ts +0 -27
  193. package/dist/components/ui/chart/chart-utils.d.ts +0 -36
  194. package/dist/components/ui/chart/chart-utils.js +0 -33
  195. package/dist/components/ui/chart/index.d.ts +0 -4
  196. package/dist/components/ui/chart/index.js +0 -4
  197. package/dist/components/ui/checkbox/checkbox.svelte +0 -36
  198. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +0 -4
  199. package/dist/components/ui/checkbox/index.d.ts +0 -2
  200. package/dist/components/ui/checkbox/index.js +0 -4
  201. package/dist/components/ui/data-table/data-table.svelte.d.ts +0 -40
  202. package/dist/components/ui/data-table/data-table.svelte.js +0 -110
  203. package/dist/components/ui/data-table/flex-render.svelte +0 -36
  204. package/dist/components/ui/data-table/flex-render.svelte.d.ts +0 -30
  205. package/dist/components/ui/data-table/index.d.ts +0 -3
  206. package/dist/components/ui/data-table/index.js +0 -3
  207. package/dist/components/ui/data-table/render-helpers.d.ts +0 -90
  208. package/dist/components/ui/data-table/render-helpers.js +0 -99
  209. package/dist/components/ui/dialog/dialog-close.svelte +0 -7
  210. package/dist/components/ui/dialog/dialog-close.svelte.d.ts +0 -4
  211. package/dist/components/ui/dialog/dialog-content.svelte +0 -43
  212. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +0 -11
  213. package/dist/components/ui/dialog/dialog-description.svelte +0 -17
  214. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +0 -4
  215. package/dist/components/ui/dialog/dialog-footer.svelte +0 -20
  216. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +0 -5
  217. package/dist/components/ui/dialog/dialog-header.svelte +0 -20
  218. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +0 -5
  219. package/dist/components/ui/dialog/dialog-overlay.svelte +0 -20
  220. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +0 -4
  221. package/dist/components/ui/dialog/dialog-title.svelte +0 -17
  222. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +0 -4
  223. package/dist/components/ui/dialog/dialog-trigger.svelte +0 -7
  224. package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +0 -4
  225. package/dist/components/ui/dialog/index.d.ts +0 -11
  226. package/dist/components/ui/dialog/index.js +0 -14
  227. package/dist/components/ui/drawer/drawer-close.svelte +0 -7
  228. package/dist/components/ui/drawer/drawer-close.svelte.d.ts +0 -4
  229. package/dist/components/ui/drawer/drawer-content.svelte +0 -37
  230. package/dist/components/ui/drawer/drawer-content.svelte.d.ts +0 -7
  231. package/dist/components/ui/drawer/drawer-description.svelte +0 -17
  232. package/dist/components/ui/drawer/drawer-description.svelte.d.ts +0 -4
  233. package/dist/components/ui/drawer/drawer-footer.svelte +0 -20
  234. package/dist/components/ui/drawer/drawer-footer.svelte.d.ts +0 -5
  235. package/dist/components/ui/drawer/drawer-header.svelte +0 -20
  236. package/dist/components/ui/drawer/drawer-header.svelte.d.ts +0 -5
  237. package/dist/components/ui/drawer/drawer-nested.svelte +0 -12
  238. package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +0 -3
  239. package/dist/components/ui/drawer/drawer-overlay.svelte +0 -20
  240. package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +0 -4
  241. package/dist/components/ui/drawer/drawer-title.svelte +0 -17
  242. package/dist/components/ui/drawer/drawer-title.svelte.d.ts +0 -4
  243. package/dist/components/ui/drawer/drawer-trigger.svelte +0 -7
  244. package/dist/components/ui/drawer/drawer-trigger.svelte.d.ts +0 -4
  245. package/dist/components/ui/drawer/drawer.svelte +0 -12
  246. package/dist/components/ui/drawer/drawer.svelte.d.ts +0 -3
  247. package/dist/components/ui/drawer/index.d.ts +0 -13
  248. package/dist/components/ui/drawer/index.js +0 -15
  249. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +0 -41
  250. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +0 -9
  251. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +0 -27
  252. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +0 -7
  253. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +0 -22
  254. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +0 -8
  255. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +0 -7
  256. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +0 -4
  257. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +0 -27
  258. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +0 -8
  259. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +0 -24
  260. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +0 -8
  261. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +0 -16
  262. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +0 -4
  263. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +0 -31
  264. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +0 -4
  265. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +0 -17
  266. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +0 -4
  267. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +0 -20
  268. package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +0 -5
  269. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +0 -20
  270. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +0 -4
  271. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +0 -29
  272. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +0 -7
  273. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +0 -7
  274. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +0 -4
  275. package/dist/components/ui/dropdown-menu/index.d.ts +0 -25
  276. package/dist/components/ui/dropdown-menu/index.js +0 -17
  277. package/dist/components/ui/input/index.d.ts +0 -2
  278. package/dist/components/ui/input/index.js +0 -4
  279. package/dist/components/ui/input/input.svelte +0 -51
  280. package/dist/components/ui/input/input.svelte.d.ts +0 -13
  281. package/dist/components/ui/label/index.d.ts +0 -2
  282. package/dist/components/ui/label/index.js +0 -4
  283. package/dist/components/ui/label/label.svelte +0 -20
  284. package/dist/components/ui/label/label.svelte.d.ts +0 -4
  285. package/dist/components/ui/scroll-area/index.d.ts +0 -3
  286. package/dist/components/ui/scroll-area/index.js +0 -5
  287. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +0 -31
  288. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +0 -4
  289. package/dist/components/ui/scroll-area/scroll-area.svelte +0 -40
  290. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +0 -10
  291. package/dist/components/ui/select/index.d.ts +0 -11
  292. package/dist/components/ui/select/index.js +0 -14
  293. package/dist/components/ui/select/select-content.svelte +0 -40
  294. package/dist/components/ui/select/select-content.svelte.d.ts +0 -8
  295. package/dist/components/ui/select/select-group-heading.svelte +0 -21
  296. package/dist/components/ui/select/select-group-heading.svelte.d.ts +0 -10
  297. package/dist/components/ui/select/select-group.svelte +0 -7
  298. package/dist/components/ui/select/select-group.svelte.d.ts +0 -4
  299. package/dist/components/ui/select/select-item.svelte +0 -38
  300. package/dist/components/ui/select/select-item.svelte.d.ts +0 -4
  301. package/dist/components/ui/select/select-label.svelte +0 -20
  302. package/dist/components/ui/select/select-label.svelte.d.ts +0 -6
  303. package/dist/components/ui/select/select-scroll-down-button.svelte +0 -20
  304. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +0 -4
  305. package/dist/components/ui/select/select-scroll-up-button.svelte +0 -20
  306. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +0 -4
  307. package/dist/components/ui/select/select-separator.svelte +0 -18
  308. package/dist/components/ui/select/select-separator.svelte.d.ts +0 -4
  309. package/dist/components/ui/select/select-trigger.svelte +0 -29
  310. package/dist/components/ui/select/select-trigger.svelte.d.ts +0 -8
  311. package/dist/components/ui/separator/index.d.ts +0 -2
  312. package/dist/components/ui/separator/index.js +0 -4
  313. package/dist/components/ui/separator/separator.svelte +0 -20
  314. package/dist/components/ui/separator/separator.svelte.d.ts +0 -4
  315. package/dist/components/ui/sheet/index.d.ts +0 -11
  316. package/dist/components/ui/sheet/index.js +0 -14
  317. package/dist/components/ui/sheet/sheet-close.svelte +0 -7
  318. package/dist/components/ui/sheet/sheet-close.svelte.d.ts +0 -4
  319. package/dist/components/ui/sheet/sheet-content.svelte +0 -58
  320. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +0 -35
  321. package/dist/components/ui/sheet/sheet-description.svelte +0 -17
  322. package/dist/components/ui/sheet/sheet-description.svelte.d.ts +0 -4
  323. package/dist/components/ui/sheet/sheet-footer.svelte +0 -20
  324. package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +0 -5
  325. package/dist/components/ui/sheet/sheet-header.svelte +0 -20
  326. package/dist/components/ui/sheet/sheet-header.svelte.d.ts +0 -5
  327. package/dist/components/ui/sheet/sheet-overlay.svelte +0 -20
  328. package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +0 -4
  329. package/dist/components/ui/sheet/sheet-title.svelte +0 -17
  330. package/dist/components/ui/sheet/sheet-title.svelte.d.ts +0 -4
  331. package/dist/components/ui/sheet/sheet-trigger.svelte +0 -7
  332. package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +0 -4
  333. package/dist/components/ui/sidebar/constants.d.ts +0 -6
  334. package/dist/components/ui/sidebar/constants.js +0 -6
  335. package/dist/components/ui/sidebar/context.svelte.d.ts +0 -42
  336. package/dist/components/ui/sidebar/context.svelte.js +0 -54
  337. package/dist/components/ui/sidebar/index.d.ts +0 -25
  338. package/dist/components/ui/sidebar/index.js +0 -27
  339. package/dist/components/ui/sidebar/sidebar-content.svelte +0 -24
  340. package/dist/components/ui/sidebar/sidebar-content.svelte.d.ts +0 -5
  341. package/dist/components/ui/sidebar/sidebar-footer.svelte +0 -21
  342. package/dist/components/ui/sidebar/sidebar-footer.svelte.d.ts +0 -5
  343. package/dist/components/ui/sidebar/sidebar-group-action.svelte +0 -36
  344. package/dist/components/ui/sidebar/sidebar-group-action.svelte.d.ts +0 -11
  345. package/dist/components/ui/sidebar/sidebar-group-content.svelte +0 -21
  346. package/dist/components/ui/sidebar/sidebar-group-content.svelte.d.ts +0 -5
  347. package/dist/components/ui/sidebar/sidebar-group-label.svelte +0 -34
  348. package/dist/components/ui/sidebar/sidebar-group-label.svelte.d.ts +0 -11
  349. package/dist/components/ui/sidebar/sidebar-group.svelte +0 -21
  350. package/dist/components/ui/sidebar/sidebar-group.svelte.d.ts +0 -5
  351. package/dist/components/ui/sidebar/sidebar-header.svelte +0 -21
  352. package/dist/components/ui/sidebar/sidebar-header.svelte.d.ts +0 -5
  353. package/dist/components/ui/sidebar/sidebar-input.svelte +0 -21
  354. package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +0 -11
  355. package/dist/components/ui/sidebar/sidebar-inset.svelte +0 -24
  356. package/dist/components/ui/sidebar/sidebar-inset.svelte.d.ts +0 -5
  357. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +0 -43
  358. package/dist/components/ui/sidebar/sidebar-menu-action.svelte.d.ts +0 -12
  359. package/dist/components/ui/sidebar/sidebar-menu-badge.svelte +0 -29
  360. package/dist/components/ui/sidebar/sidebar-menu-badge.svelte.d.ts +0 -5
  361. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +0 -103
  362. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +0 -51
  363. package/dist/components/ui/sidebar/sidebar-menu-item.svelte +0 -21
  364. package/dist/components/ui/sidebar/sidebar-menu-item.svelte.d.ts +0 -5
  365. package/dist/components/ui/sidebar/sidebar-menu-skeleton.svelte +0 -36
  366. package/dist/components/ui/sidebar/sidebar-menu-skeleton.svelte.d.ts +0 -8
  367. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +0 -43
  368. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte.d.ts +0 -13
  369. package/dist/components/ui/sidebar/sidebar-menu-sub-item.svelte +0 -21
  370. package/dist/components/ui/sidebar/sidebar-menu-sub-item.svelte.d.ts +0 -5
  371. package/dist/components/ui/sidebar/sidebar-menu-sub.svelte +0 -25
  372. package/dist/components/ui/sidebar/sidebar-menu-sub.svelte.d.ts +0 -5
  373. package/dist/components/ui/sidebar/sidebar-menu.svelte +0 -21
  374. package/dist/components/ui/sidebar/sidebar-menu.svelte.d.ts +0 -5
  375. package/dist/components/ui/sidebar/sidebar-provider.svelte +0 -53
  376. package/dist/components/ui/sidebar/sidebar-provider.svelte.d.ts +0 -9
  377. package/dist/components/ui/sidebar/sidebar-rail.svelte +0 -36
  378. package/dist/components/ui/sidebar/sidebar-rail.svelte.d.ts +0 -5
  379. package/dist/components/ui/sidebar/sidebar-separator.svelte +0 -19
  380. package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +0 -13
  381. package/dist/components/ui/sidebar/sidebar-trigger.svelte +0 -35
  382. package/dist/components/ui/sidebar/sidebar-trigger.svelte.d.ts +0 -8
  383. package/dist/components/ui/sidebar/sidebar.svelte +0 -104
  384. package/dist/components/ui/sidebar/sidebar.svelte.d.ts +0 -10
  385. package/dist/components/ui/skeleton/index.d.ts +0 -2
  386. package/dist/components/ui/skeleton/index.js +0 -4
  387. package/dist/components/ui/skeleton/skeleton.svelte +0 -17
  388. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +0 -5
  389. package/dist/components/ui/table/index.d.ts +0 -9
  390. package/dist/components/ui/table/index.js +0 -11
  391. package/dist/components/ui/table/table-body.svelte +0 -20
  392. package/dist/components/ui/table/table-body.svelte.d.ts +0 -5
  393. package/dist/components/ui/table/table-caption.svelte +0 -20
  394. package/dist/components/ui/table/table-caption.svelte.d.ts +0 -5
  395. package/dist/components/ui/table/table-cell.svelte +0 -20
  396. package/dist/components/ui/table/table-cell.svelte.d.ts +0 -5
  397. package/dist/components/ui/table/table-footer.svelte +0 -20
  398. package/dist/components/ui/table/table-footer.svelte.d.ts +0 -5
  399. package/dist/components/ui/table/table-head.svelte +0 -23
  400. package/dist/components/ui/table/table-head.svelte.d.ts +0 -5
  401. package/dist/components/ui/table/table-header.svelte +0 -20
  402. package/dist/components/ui/table/table-header.svelte.d.ts +0 -5
  403. package/dist/components/ui/table/table-row.svelte +0 -23
  404. package/dist/components/ui/table/table-row.svelte.d.ts +0 -5
  405. package/dist/components/ui/table/table.svelte +0 -22
  406. package/dist/components/ui/table/table.svelte.d.ts +0 -5
  407. package/dist/components/ui/tabs/index.d.ts +0 -5
  408. package/dist/components/ui/tabs/index.js +0 -7
  409. package/dist/components/ui/tabs/tabs-content.svelte +0 -17
  410. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +0 -4
  411. package/dist/components/ui/tabs/tabs-list.svelte +0 -20
  412. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +0 -4
  413. package/dist/components/ui/tabs/tabs-trigger.svelte +0 -20
  414. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +0 -4
  415. package/dist/components/ui/tabs/tabs.svelte +0 -19
  416. package/dist/components/ui/tabs/tabs.svelte.d.ts +0 -4
  417. package/dist/components/ui/toggle/index.d.ts +0 -3
  418. package/dist/components/ui/toggle/index.js +0 -5
  419. package/dist/components/ui/toggle/toggle.svelte +0 -52
  420. package/dist/components/ui/toggle/toggle.svelte.d.ts +0 -43
  421. package/dist/components/ui/toggle-group/index.d.ts +0 -3
  422. package/dist/components/ui/toggle-group/index.js +0 -5
  423. package/dist/components/ui/toggle-group/toggle-group-item.svelte +0 -34
  424. package/dist/components/ui/toggle-group/toggle-group-item.svelte.d.ts +0 -6
  425. package/dist/components/ui/toggle-group/toggle-group.svelte +0 -47
  426. package/dist/components/ui/toggle-group/toggle-group.svelte.d.ts +0 -8
  427. package/dist/components/ui/tooltip/index.d.ts +0 -7
  428. package/dist/components/ui/tooltip/index.js +0 -9
  429. package/dist/components/ui/tooltip/tooltip-content.svelte +0 -47
  430. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +0 -7
  431. package/dist/components/ui/tooltip/tooltip-trigger.svelte +0 -7
  432. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +0 -4
  433. package/dist/hooks/is-mobile.svelte.d.ts +0 -4
  434. package/dist/hooks/is-mobile.svelte.js +0 -7
  435. package/dist/services/index.d.ts +0 -9
  436. package/dist/services/index.js +0 -10
  437. package/dist/types/docs.d.ts +0 -67
  438. package/dist/types/docs.js +0 -1
  439. package/dist/utils.d.ts +0 -15
  440. package/dist/utils.js +0 -44
@@ -1,147 +1,76 @@
1
+ import { serverTimestamp, increment, type DatabaseReference } from 'firebase/database';
1
2
  /**
2
- * @fileoverview FirekitRealtimeDB - Optimized Realtime Database management for Svelte applications
3
- * @module FirekitRealtimeDB
4
- * @version 1.0.0
5
- */
6
- import { type DatabaseReference } from 'firebase/database';
7
- /**
8
- * Manages real-time Firebase Realtime Database subscriptions with reactive state
9
- * @class
10
- * @template T Data type
11
- *
12
- * @example
13
- * ```typescript
14
- * interface ChatMessage {
15
- * text: string;
16
- * userId: string;
17
- * timestamp: number;
18
- * }
3
+ * Reactive Firebase Realtime Database node subscription.
19
4
  *
20
- * // Create regular reference
21
- * const chatRef = firekitRealtimeDB<ChatMessage>('chats/123');
5
+ * Subscribes to a database path and exposes reactive state via Svelte 5 runes.
6
+ * Supports read and write operations on the same reference.
22
7
  *
23
- * // Create list reference
24
- * const messagesList = firekitRealtimeList<ChatMessage>('messages');
8
+ * @example
9
+ * ```svelte
10
+ * <script lang="ts">
11
+ * import { firekitNode } from 'svelte-firekit';
12
+ * const chat = firekitNode<ChatMessage>('chats/room1');
13
+ * </script>
14
+ * {#if chat.loading}Loading…{/if}
15
+ * {#if chat.data}{chat.data.text}{/if}
25
16
  * ```
26
17
  */
27
- declare class FirekitRealtimeDB<T> {
28
- /** Current data */
18
+ export declare class FirekitNode<T = unknown> {
29
19
  private _data;
30
- /** Loading state */
31
20
  private _loading;
32
- /** Error state */
33
21
  private _error;
34
- /** Database reference */
35
- private dbRef;
36
- /** Subscription cleanup function */
37
- private unsubscribe;
38
- /**
39
- * Creates a Realtime Database subscription
40
- * @param {string} path Database path
41
- * @param {T} [startWith] Initial data before fetch completes
42
- */
22
+ private _ref;
23
+ private _unsubscribe;
24
+ private _path;
43
25
  constructor(path: string, startWith?: T);
44
- /**
45
- * Initializes database subscription
46
- * @private
47
- * @param {string} path Database path
48
- */
49
- private initializeRealtimeDB;
50
- /**
51
- * Pushes new data to list
52
- * @param {T} data Data to push
53
- * @returns {Promise<string | null>} New item key or null if failed
54
- *
55
- * @example
56
- * ```typescript
57
- * const key = await chatRef.push({
58
- * text: 'Hello',
59
- * userId: '123',
60
- * timestamp: Date.now()
61
- * });
62
- * ```
63
- */
64
- push(data: T): Promise<string | null>;
65
- /**
66
- * Sets data at reference
67
- * @param {T} data Data to set
68
- *
69
- * @example
70
- * ```typescript
71
- * await chatRef.set({
72
- * text: 'Updated message',
73
- * userId: '123',
74
- * timestamp: Date.now()
75
- * });
76
- * ```
77
- */
78
- set(data: T): Promise<void>;
79
- /**
80
- * Updates data at reference
81
- * @param {Partial<T>} data Data to update
82
- *
83
- * @example
84
- * ```typescript
85
- * await chatRef.update({
86
- * text: 'Edited message'
87
- * });
88
- * ```
89
- */
90
- update(data: Partial<T>): Promise<void>;
91
- /**
92
- * Removes data at reference
93
- *
94
- * @example
95
- * ```typescript
96
- * await chatRef.remove();
97
- * ```
98
- */
99
- remove(): Promise<void>;
100
- /** Gets current data */
101
26
  get data(): T | null;
102
- /** Gets loading state */
103
27
  get loading(): boolean;
104
- /** Gets error state */
105
28
  get error(): Error | null;
106
- /**
107
- * Gets database reference
108
- * @throws {Error} If reference is not available
109
- */
29
+ get path(): string;
110
30
  get ref(): DatabaseReference;
111
- /** Cleanup subscription */
31
+ private _init;
32
+ /** Pushes a new child node (list append). Returns the new key, or null on failure. */
33
+ push(data: T): Promise<string | null>;
34
+ /** Overwrites the node with new data. */
35
+ set(data: T): Promise<void>;
36
+ /** Merges partial data into the node (shallow merge). */
37
+ update(data: Partial<T>): Promise<void>;
38
+ /** Deletes the node. */
39
+ remove(): Promise<void>;
40
+ /** One-time fetch of current data (no subscription). */
41
+ fetchOnce(): Promise<T | null>;
42
+ /** Stops the real-time listener. */
112
43
  dispose(): void;
113
44
  }
114
45
  /**
115
- * Creates a reactive Realtime Database reference
116
- * @template T Data type
117
- * @param {string} path Database path
118
- * @param {T} [startWith] Initial data
119
- * @returns {FirekitRealtimeDB<T>} Database subscription instance
46
+ * Reactive RTDB list — subscribes to a node and exposes its children as
47
+ * a typed array with each item's key injected as `id`.
120
48
  *
121
49
  * @example
122
- * ```typescript
123
- * const chatRef = firekitRealtimeDB<ChatMessage>('chats/123');
50
+ * ```svelte
51
+ * <script lang="ts">
52
+ * import { firekitNodeList } from 'svelte-firekit';
53
+ * const messages = firekitNodeList<Message>('rooms/123/messages');
54
+ * </script>
55
+ * {#each messages.list as msg}
56
+ * <p>{msg.id}: {msg.text}</p>
57
+ * {/each}
124
58
  * ```
125
59
  */
126
- export declare function firekitRealtimeDB<T>(path: string, startWith?: T): FirekitRealtimeDB<T>;
60
+ export declare class FirekitNodeList<T = unknown> extends FirekitNode<Record<string, T>> {
61
+ readonly list: (T & {
62
+ id: string;
63
+ })[];
64
+ }
65
+ /** RTDB server timestamp sentinel. */
66
+ export declare const rtdbServerTimestamp: typeof serverTimestamp;
67
+ /** RTDB increment sentinel. */
68
+ export declare const rtdbIncrement: typeof increment;
127
69
  /**
128
- * Creates a reactive Realtime Database list reference
129
- * Automatically converts data to array format with IDs
130
- *
131
- * @template T List item type
132
- * @param {string} path Database path
133
- * @param {T[]} [startWith=[]] Initial array data
134
- * @returns {FirekitRealtimeDB} Database subscription instance with array support
135
- *
136
- * @example
137
- * ```typescript
138
- * const messagesList = firekitRealtimeList<ChatMessage>('messages');
139
- * console.log(messagesList.list); // Array of messages with IDs
140
- * ```
70
+ * Creates a reactive RTDB node subscription.
141
71
  */
142
- export declare function firekitRealtimeList<T>(path: string, startWith?: T[]): FirekitRealtimeDB<Record<string, T>> & {
143
- list: Array<T & {
144
- id: string;
145
- }>;
146
- };
147
- export {};
72
+ export declare function firekitNode<T = unknown>(path: string, startWith?: T): FirekitNode<T>;
73
+ /**
74
+ * Creates a reactive RTDB node subscription that exposes children as an array.
75
+ */
76
+ export declare function firekitNodeList<T = unknown>(path: string, startWith?: T[]): FirekitNodeList<T>;
@@ -1,221 +1,157 @@
1
- /**
2
- * @fileoverview FirekitRealtimeDB - Optimized Realtime Database management for Svelte applications
3
- * @module FirekitRealtimeDB
4
- * @version 1.0.0
5
- */
6
- import { ref, onValue, push, set, update, remove } from 'firebase/database';
1
+ import { ref, onValue, push, set, update, remove, get, serverTimestamp, increment } from 'firebase/database';
7
2
  import { firebaseService } from '../firebase.js';
8
- import { browser } from '$app/environment';
3
+ function getDb() {
4
+ const db = firebaseService.getDatabaseInstance();
5
+ if (!db)
6
+ throw new Error('Realtime Database is not initialized.');
7
+ return db;
8
+ }
9
9
  /**
10
- * Manages real-time Firebase Realtime Database subscriptions with reactive state
11
- * @class
12
- * @template T Data type
13
- *
14
- * @example
15
- * ```typescript
16
- * interface ChatMessage {
17
- * text: string;
18
- * userId: string;
19
- * timestamp: number;
20
- * }
10
+ * Reactive Firebase Realtime Database node subscription.
21
11
  *
22
- * // Create regular reference
23
- * const chatRef = firekitRealtimeDB<ChatMessage>('chats/123');
12
+ * Subscribes to a database path and exposes reactive state via Svelte 5 runes.
13
+ * Supports read and write operations on the same reference.
24
14
  *
25
- * // Create list reference
26
- * const messagesList = firekitRealtimeList<ChatMessage>('messages');
15
+ * @example
16
+ * ```svelte
17
+ * <script lang="ts">
18
+ * import { firekitNode } from 'svelte-firekit';
19
+ * const chat = firekitNode<ChatMessage>('chats/room1');
20
+ * </script>
21
+ * {#if chat.loading}Loading…{/if}
22
+ * {#if chat.data}{chat.data.text}{/if}
27
23
  * ```
28
24
  */
29
- class FirekitRealtimeDB {
30
- /** Current data */
25
+ export class FirekitNode {
26
+ // ── Reactive state ────────────────────────────────────────────────────────
31
27
  _data = $state(null);
32
- /** Loading state */
33
28
  _loading = $state(true);
34
- /** Error state */
35
29
  _error = $state(null);
36
- /** Database reference */
37
- dbRef = null;
38
- /** Subscription cleanup function */
39
- unsubscribe = null;
40
- /**
41
- * Creates a Realtime Database subscription
42
- * @param {string} path Database path
43
- * @param {T} [startWith] Initial data before fetch completes
44
- */
30
+ // ── Internal ──────────────────────────────────────────────────────────────
31
+ _ref = null;
32
+ _unsubscribe = null;
33
+ _path;
45
34
  constructor(path, startWith) {
46
- this._data = startWith ?? null;
47
- if (browser) {
48
- this.initializeRealtimeDB(path);
49
- }
35
+ this._path = path;
36
+ if (startWith !== undefined)
37
+ this._data = startWith;
38
+ this._init();
50
39
  }
51
- /**
52
- * Initializes database subscription
53
- * @private
54
- * @param {string} path Database path
55
- */
56
- initializeRealtimeDB(path) {
40
+ // ── Public getters ────────────────────────────────────────────────────────
41
+ get data() { return this._data; }
42
+ get loading() { return this._loading; }
43
+ get error() { return this._error; }
44
+ get path() { return this._path; }
45
+ get ref() {
46
+ if (!this._ref)
47
+ throw new Error('Database reference is not available.');
48
+ return this._ref;
49
+ }
50
+ // ── Initialization ────────────────────────────────────────────────────────
51
+ _init() {
52
+ if (typeof window === 'undefined') {
53
+ this._loading = false;
54
+ return;
55
+ }
57
56
  try {
58
- const database = firebaseService.getDatabaseInstance();
59
- if (!database) {
60
- throw new Error('Database instance not available');
61
- }
62
- this.dbRef = ref(database, path);
63
- this.unsubscribe = onValue(this.dbRef, (snapshot) => {
64
- this._data = snapshot.val();
65
- this._loading = false;
57
+ const db = getDb();
58
+ this._ref = ref(db, this._path);
59
+ this._unsubscribe = onValue(this._ref, (snap) => {
60
+ this._data = snap.val();
66
61
  this._error = null;
67
- }, (error) => {
68
- this._error = error;
62
+ this._loading = false;
63
+ }, (err) => {
64
+ this._error = err;
69
65
  this._loading = false;
70
66
  });
71
67
  }
72
- catch (error) {
73
- this._error = error;
68
+ catch (err) {
69
+ this._error = err instanceof Error ? err : new Error(String(err));
74
70
  this._loading = false;
75
71
  }
76
72
  }
77
- /**
78
- * Pushes new data to list
79
- * @param {T} data Data to push
80
- * @returns {Promise<string | null>} New item key or null if failed
81
- *
82
- * @example
83
- * ```typescript
84
- * const key = await chatRef.push({
85
- * text: 'Hello',
86
- * userId: '123',
87
- * timestamp: Date.now()
88
- * });
89
- * ```
90
- */
73
+ // ── Write operations ──────────────────────────────────────────────────────
74
+ /** Pushes a new child node (list append). Returns the new key, or null on failure. */
91
75
  async push(data) {
92
- if (!this.dbRef)
76
+ if (!this._ref)
93
77
  return null;
94
- const newRef = push(this.dbRef);
78
+ const newRef = push(this._ref);
95
79
  await set(newRef, data);
96
80
  return newRef.key;
97
81
  }
98
- /**
99
- * Sets data at reference
100
- * @param {T} data Data to set
101
- *
102
- * @example
103
- * ```typescript
104
- * await chatRef.set({
105
- * text: 'Updated message',
106
- * userId: '123',
107
- * timestamp: Date.now()
108
- * });
109
- * ```
110
- */
82
+ /** Overwrites the node with new data. */
111
83
  async set(data) {
112
- if (!this.dbRef)
84
+ if (!this._ref)
113
85
  return;
114
- await set(this.dbRef, data);
86
+ await set(this._ref, data);
115
87
  }
116
- /**
117
- * Updates data at reference
118
- * @param {Partial<T>} data Data to update
119
- *
120
- * @example
121
- * ```typescript
122
- * await chatRef.update({
123
- * text: 'Edited message'
124
- * });
125
- * ```
126
- */
88
+ /** Merges partial data into the node (shallow merge). */
127
89
  async update(data) {
128
- if (!this.dbRef)
90
+ if (!this._ref)
129
91
  return;
130
- await update(this.dbRef, data);
92
+ await update(this._ref, data);
131
93
  }
132
- /**
133
- * Removes data at reference
134
- *
135
- * @example
136
- * ```typescript
137
- * await chatRef.remove();
138
- * ```
139
- */
94
+ /** Deletes the node. */
140
95
  async remove() {
141
- if (!this.dbRef)
96
+ if (!this._ref)
142
97
  return;
143
- await remove(this.dbRef);
144
- }
145
- /** Gets current data */
146
- get data() {
147
- return this._data;
98
+ await remove(this._ref);
148
99
  }
149
- /** Gets loading state */
150
- get loading() {
151
- return this._loading;
152
- }
153
- /** Gets error state */
154
- get error() {
155
- return this._error;
156
- }
157
- /**
158
- * Gets database reference
159
- * @throws {Error} If reference is not available
160
- */
161
- get ref() {
162
- if (!this.dbRef) {
163
- throw new Error('Database reference is not available');
164
- }
165
- return this.dbRef;
100
+ /** One-time fetch of current data (no subscription). */
101
+ async fetchOnce() {
102
+ if (!this._ref)
103
+ return null;
104
+ const snap = await get(this._ref);
105
+ return snap.val();
166
106
  }
167
- /** Cleanup subscription */
107
+ /** Stops the real-time listener. */
168
108
  dispose() {
169
- if (this.unsubscribe) {
170
- this.unsubscribe();
171
- this.unsubscribe = null;
172
- }
109
+ this._unsubscribe?.();
110
+ this._unsubscribe = null;
173
111
  }
174
112
  }
175
113
  /**
176
- * Creates a reactive Realtime Database reference
177
- * @template T Data type
178
- * @param {string} path Database path
179
- * @param {T} [startWith] Initial data
180
- * @returns {FirekitRealtimeDB<T>} Database subscription instance
114
+ * Reactive RTDB list — subscribes to a node and exposes its children as
115
+ * a typed array with each item's key injected as `id`.
181
116
  *
182
117
  * @example
183
- * ```typescript
184
- * const chatRef = firekitRealtimeDB<ChatMessage>('chats/123');
118
+ * ```svelte
119
+ * <script lang="ts">
120
+ * import { firekitNodeList } from 'svelte-firekit';
121
+ * const messages = firekitNodeList<Message>('rooms/123/messages');
122
+ * </script>
123
+ * {#each messages.list as msg}
124
+ * <p>{msg.id}: {msg.text}</p>
125
+ * {/each}
185
126
  * ```
186
127
  */
187
- export function firekitRealtimeDB(path, startWith) {
188
- return new FirekitRealtimeDB(path, startWith);
128
+ export class FirekitNodeList extends FirekitNode {
129
+ list = $derived(this.data
130
+ ? Object.entries(this.data).map(([key, value]) => ({
131
+ id: key,
132
+ ...value
133
+ }))
134
+ : []);
189
135
  }
136
+ // ── Field value helpers ───────────────────────────────────────────────────────
137
+ /** RTDB server timestamp sentinel. */
138
+ export const rtdbServerTimestamp = serverTimestamp;
139
+ /** RTDB increment sentinel. */
140
+ export const rtdbIncrement = increment;
141
+ // ── Factory functions ─────────────────────────────────────────────────────────
190
142
  /**
191
- * Creates a reactive Realtime Database list reference
192
- * Automatically converts data to array format with IDs
193
- *
194
- * @template T List item type
195
- * @param {string} path Database path
196
- * @param {T[]} [startWith=[]] Initial array data
197
- * @returns {FirekitRealtimeDB} Database subscription instance with array support
198
- *
199
- * @example
200
- * ```typescript
201
- * const messagesList = firekitRealtimeList<ChatMessage>('messages');
202
- * console.log(messagesList.list); // Array of messages with IDs
203
- * ```
143
+ * Creates a reactive RTDB node subscription.
204
144
  */
205
- export function firekitRealtimeList(path, startWith = []) {
206
- const startWithRecord = startWith.reduce((acc, item, index) => {
207
- acc[`key${index}`] = item;
208
- return acc;
209
- }, {});
210
- return new (class extends FirekitRealtimeDB {
211
- _list = $derived(this.data
212
- ? Object.entries(this.data).map(([key, value]) => ({
213
- id: key,
214
- ...value
215
- }))
216
- : []);
217
- get list() {
218
- return this._list;
219
- }
220
- })(path, startWithRecord);
145
+ export function firekitNode(path, startWith) {
146
+ return new FirekitNode(path, startWith);
147
+ }
148
+ /**
149
+ * Creates a reactive RTDB node subscription that exposes children as an array.
150
+ */
151
+ export function firekitNodeList(path, startWith) {
152
+ let startRecord;
153
+ if (startWith) {
154
+ startRecord = Object.fromEntries(startWith.map((item, i) => [`__init_${i}`, item]));
155
+ }
156
+ return new FirekitNodeList(path, startRecord);
221
157
  }
@@ -0,0 +1,73 @@
1
+ import { type Value } from 'firebase/remote-config';
2
+ /**
3
+ * Reactive Firebase Remote Config service.
4
+ *
5
+ * Fetches and activates remote configuration values, exposes them reactively,
6
+ * and optionally subscribes to real-time config updates.
7
+ *
8
+ * @example
9
+ * ```svelte
10
+ * <script lang="ts">
11
+ * import { firekitRemoteConfig } from 'svelte-firekit';
12
+ *
13
+ * const rc = firekitRemoteConfig({
14
+ * defaults: { welcomeMessage: 'Hello!', featureEnabled: false },
15
+ * minimumFetchIntervalMs: 3600_000
16
+ * });
17
+ * await rc.fetchAndActivate();
18
+ * </script>
19
+ * <p>{rc.getString('welcomeMessage')}</p>
20
+ * ```
21
+ */
22
+ export declare class FirekitRemoteConfig {
23
+ private _loading;
24
+ private _error;
25
+ private _lastFetchTime;
26
+ private _activated;
27
+ /** Bumped whenever config is activated, so derived reads stay reactive. */
28
+ private _version;
29
+ private _rc;
30
+ private _unsubscribe;
31
+ private _options;
32
+ constructor(options?: FirekitRemoteConfigOptions);
33
+ get loading(): boolean;
34
+ get error(): Error | null;
35
+ get activated(): boolean;
36
+ get lastFetchTime(): Date | null;
37
+ private _init;
38
+ private _subscribeToUpdates;
39
+ /** Fetches fresh config from the server and activates it. */
40
+ fetchAndActivate(): Promise<boolean>;
41
+ /** Fetches config without activating. */
42
+ fetch(): Promise<void>;
43
+ /** Activates the last fetched config. */
44
+ activate(): Promise<boolean>;
45
+ /** Returns a string config value. Uses default if not set. */
46
+ getString(key: string, defaultValue?: string): string;
47
+ /** Returns a boolean config value. */
48
+ getBoolean(key: string, defaultValue?: boolean): boolean;
49
+ /** Returns a number config value. */
50
+ getNumber(key: string, defaultValue?: number): number;
51
+ /** Returns the raw Value object for a key. */
52
+ getValue(key: string): Value | null;
53
+ /** Returns all config key-value pairs as a plain object. */
54
+ getAll(): Record<string, Value>;
55
+ /** Stops the real-time config update listener. */
56
+ dispose(): void;
57
+ }
58
+ export interface FirekitRemoteConfigOptions {
59
+ /** Default values applied before remote values are fetched. */
60
+ defaults?: Record<string, string | number | boolean>;
61
+ /** Minimum interval between fetches in ms. Default: 43200000 (12h). */
62
+ minimumFetchIntervalMs?: number;
63
+ /** Fetch timeout in ms. Default: 60000 (60s). */
64
+ fetchTimeoutMs?: number;
65
+ /** Automatically fetch + activate on init. Default: true. */
66
+ autoFetch?: boolean;
67
+ /** Subscribe to real-time config updates. Default: false. */
68
+ realtime?: boolean;
69
+ /** SDK log level. */
70
+ logLevel?: 'debug' | 'error' | 'silent';
71
+ }
72
+ /** Creates a reactive Remote Config instance. */
73
+ export declare function firekitRemoteConfig(options?: FirekitRemoteConfigOptions): FirekitRemoteConfig;