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.
- package/README.md +550 -354
- package/dist/components/AuthGuard.svelte +64 -0
- package/dist/components/AuthGuard.svelte.d.ts +15 -0
- package/dist/components/Collection.svelte +62 -0
- package/dist/components/Collection.svelte.d.ts +39 -0
- package/dist/components/CustomGuard.svelte +87 -0
- package/dist/components/CustomGuard.svelte.d.ts +13 -0
- package/dist/components/Doc.svelte +56 -0
- package/dist/components/Doc.svelte.d.ts +36 -0
- package/dist/components/DownloadURL.svelte +48 -0
- package/dist/components/DownloadURL.svelte.d.ts +14 -0
- package/dist/components/FirebaseApp.svelte +81 -0
- package/dist/components/FirebaseApp.svelte.d.ts +12 -0
- package/dist/components/Node.svelte +54 -0
- package/dist/components/Node.svelte.d.ts +36 -0
- package/dist/components/SignedIn.svelte +22 -0
- package/dist/components/{firekit/signed-in.svelte.d.ts → SignedIn.svelte.d.ts} +1 -4
- package/dist/components/SignedOut.svelte +32 -0
- package/dist/components/{firekit/signed-out.svelte.d.ts → SignedOut.svelte.d.ts} +3 -5
- package/dist/components/UploadTask.svelte +75 -0
- package/dist/components/UploadTask.svelte.d.ts +33 -0
- package/dist/config.d.ts +29 -6
- package/dist/config.js +37 -74
- package/dist/context.d.ts +46 -0
- package/dist/context.js +56 -0
- package/dist/firebase.d.ts +25 -84
- package/dist/firebase.js +75 -125
- package/dist/index.d.ts +32 -20
- package/dist/index.js +49 -30
- package/dist/services/ai.svelte.d.ts +152 -0
- package/dist/services/ai.svelte.js +302 -0
- package/dist/services/analytics.d.ts +39 -231
- package/dist/services/analytics.js +89 -421
- package/dist/services/app-check.svelte.d.ts +82 -0
- package/dist/services/app-check.svelte.js +159 -0
- package/dist/services/auth.d.ts +63 -352
- package/dist/services/auth.js +353 -718
- package/dist/services/bundles.d.ts +42 -0
- package/dist/services/bundles.js +57 -0
- package/dist/services/callable.d.ts +57 -0
- package/dist/services/callable.js +115 -0
- package/dist/services/collection.svelte.d.ts +154 -221
- package/dist/services/collection.svelte.js +357 -663
- package/dist/services/document.svelte.d.ts +73 -254
- package/dist/services/document.svelte.js +196 -497
- package/dist/services/in-app-messaging.d.ts +46 -0
- package/dist/services/in-app-messaging.js +88 -0
- package/dist/services/messaging.svelte.d.ts +75 -0
- package/dist/services/messaging.svelte.js +190 -0
- package/dist/services/mutations.d.ts +59 -282
- package/dist/services/mutations.js +202 -951
- package/dist/services/performance.d.ts +60 -0
- package/dist/services/performance.js +118 -0
- package/dist/services/presence.svelte.d.ts +21 -89
- package/dist/services/presence.svelte.js +232 -469
- package/dist/services/realtime.svelte.d.ts +54 -125
- package/dist/services/realtime.svelte.js +111 -175
- package/dist/services/remote-config.svelte.d.ts +73 -0
- package/dist/services/remote-config.svelte.js +204 -0
- package/dist/services/storage.svelte.d.ts +81 -208
- package/dist/services/storage.svelte.js +190 -305
- package/dist/services/user.svelte.d.ts +23 -244
- package/dist/services/user.svelte.js +129 -439
- package/dist/types/analytics.d.ts +2 -36
- package/dist/types/analytics.js +0 -5
- package/dist/types/auth.d.ts +15 -85
- package/dist/types/auth.js +0 -17
- package/dist/types/collection.d.ts +31 -225
- package/dist/types/collection.js +5 -51
- package/dist/types/document.d.ts +11 -236
- package/dist/types/document.js +2 -47
- package/dist/types/firebase.d.ts +10 -13
- package/dist/types/firebase.js +3 -9
- package/dist/types/index.d.ts +5 -5
- package/dist/types/index.js +5 -4
- package/dist/types/mutations.d.ts +11 -225
- package/dist/types/mutations.js +6 -51
- package/dist/types/presence.d.ts +5 -158
- package/dist/types/presence.js +0 -20
- package/dist/utils/errors.d.ts +10 -14
- package/dist/utils/errors.js +11 -16
- package/dist/utils/firestore.d.ts +3 -4
- package/dist/utils/firestore.js +7 -10
- package/dist/utils/index.d.ts +4 -4
- package/dist/utils/index.js +4 -8
- package/dist/utils/providers.d.ts +4 -13
- package/dist/utils/providers.js +14 -13
- package/dist/utils/user.d.ts +1 -3
- package/dist/utils/user.js +1 -3
- package/package.json +41 -55
- package/dist/components/docs/doc-content.svelte +0 -19
- package/dist/components/docs/doc-content.svelte.d.ts +0 -6
- package/dist/components/docs/doc-header.svelte +0 -24
- package/dist/components/docs/doc-header.svelte.d.ts +0 -13
- package/dist/components/docs/doc-renderer.svelte +0 -27
- package/dist/components/docs/doc-renderer.svelte.d.ts +0 -8
- package/dist/components/docs/mobile-table-of-contents.svelte +0 -42
- package/dist/components/docs/mobile-table-of-contents.svelte.d.ts +0 -3
- package/dist/components/docs/table-of-contents.svelte +0 -33
- package/dist/components/docs/table-of-contents.svelte.d.ts +0 -4
- package/dist/components/docs/toc.svelte.d.ts +0 -16
- package/dist/components/docs/toc.svelte.js +0 -59
- package/dist/components/firekit/Collection.svelte +0 -122
- package/dist/components/firekit/Collection.svelte.d.ts +0 -27
- package/dist/components/firekit/Doc.svelte +0 -140
- package/dist/components/firekit/Doc.svelte.d.ts +0 -28
- package/dist/components/firekit/Node.svelte +0 -97
- package/dist/components/firekit/Node.svelte.d.ts +0 -23
- package/dist/components/firekit/auth-guard.svelte +0 -120
- package/dist/components/firekit/auth-guard.svelte.d.ts +0 -26
- package/dist/components/firekit/custom-guard.svelte +0 -163
- package/dist/components/firekit/custom-guard.svelte.d.ts +0 -31
- package/dist/components/firekit/download-url.svelte +0 -92
- package/dist/components/firekit/download-url.svelte.d.ts +0 -19
- package/dist/components/firekit/firebase-app.svelte +0 -33
- package/dist/components/firekit/firebase-app.svelte.d.ts +0 -7
- package/dist/components/firekit/node-list.svelte +0 -102
- package/dist/components/firekit/node-list.svelte.d.ts +0 -27
- package/dist/components/firekit/signed-in.svelte +0 -42
- package/dist/components/firekit/signed-out.svelte +0 -42
- package/dist/components/firekit/storage-list.svelte +0 -97
- package/dist/components/firekit/storage-list.svelte.d.ts +0 -26
- package/dist/components/firekit/upload-task.svelte +0 -108
- package/dist/components/firekit/upload-task.svelte.d.ts +0 -24
- package/dist/components/nav/app-sidebar.svelte +0 -175
- package/dist/components/nav/app-sidebar.svelte.d.ts +0 -9
- package/dist/components/nav/auto-breadcrumb.svelte +0 -41
- package/dist/components/nav/auto-breadcrumb.svelte.d.ts +0 -3
- package/dist/components/nav/dark-mode-toggle.svelte +0 -17
- package/dist/components/nav/dark-mode-toggle.svelte.d.ts +0 -18
- package/dist/components/nav/nav-components.svelte +0 -24
- package/dist/components/nav/nav-components.svelte.d.ts +0 -11
- package/dist/components/nav/nav-main.svelte +0 -45
- package/dist/components/nav/nav-main.svelte.d.ts +0 -11
- package/dist/components/nav/nav-secondary.svelte +0 -32
- package/dist/components/nav/nav-secondary.svelte.d.ts +0 -14
- package/dist/components/nav/site-header.svelte +0 -32
- package/dist/components/nav/site-header.svelte.d.ts +0 -18
- package/dist/components/ui/avatar/avatar-fallback.svelte +0 -17
- package/dist/components/ui/avatar/avatar-fallback.svelte.d.ts +0 -4
- package/dist/components/ui/avatar/avatar-image.svelte +0 -17
- package/dist/components/ui/avatar/avatar-image.svelte.d.ts +0 -4
- package/dist/components/ui/avatar/avatar.svelte +0 -19
- package/dist/components/ui/avatar/avatar.svelte.d.ts +0 -4
- package/dist/components/ui/avatar/index.d.ts +0 -4
- package/dist/components/ui/avatar/index.js +0 -6
- package/dist/components/ui/badge/badge.svelte +0 -50
- package/dist/components/ui/badge/badge.svelte.d.ts +0 -32
- package/dist/components/ui/badge/index.d.ts +0 -2
- package/dist/components/ui/badge/index.js +0 -2
- package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +0 -23
- package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte.d.ts +0 -5
- package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +0 -20
- package/dist/components/ui/breadcrumb/breadcrumb-item.svelte.d.ts +0 -5
- package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +0 -31
- package/dist/components/ui/breadcrumb/breadcrumb-link.svelte.d.ts +0 -11
- package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +0 -23
- package/dist/components/ui/breadcrumb/breadcrumb-list.svelte.d.ts +0 -5
- package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +0 -23
- package/dist/components/ui/breadcrumb/breadcrumb-page.svelte.d.ts +0 -5
- package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +0 -27
- package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte.d.ts +0 -5
- package/dist/components/ui/breadcrumb/breadcrumb.svelte +0 -21
- package/dist/components/ui/breadcrumb/breadcrumb.svelte.d.ts +0 -5
- package/dist/components/ui/breadcrumb/index.d.ts +0 -8
- package/dist/components/ui/breadcrumb/index.js +0 -10
- package/dist/components/ui/button/button.svelte +0 -80
- package/dist/components/ui/button/button.svelte.d.ts +0 -58
- package/dist/components/ui/button/index.d.ts +0 -2
- package/dist/components/ui/button/index.js +0 -4
- package/dist/components/ui/card/card-action.svelte +0 -20
- package/dist/components/ui/card/card-action.svelte.d.ts +0 -5
- package/dist/components/ui/card/card-content.svelte +0 -15
- package/dist/components/ui/card/card-content.svelte.d.ts +0 -5
- package/dist/components/ui/card/card-description.svelte +0 -20
- package/dist/components/ui/card/card-description.svelte.d.ts +0 -5
- package/dist/components/ui/card/card-footer.svelte +0 -20
- package/dist/components/ui/card/card-footer.svelte.d.ts +0 -5
- package/dist/components/ui/card/card-header.svelte +0 -23
- package/dist/components/ui/card/card-header.svelte.d.ts +0 -5
- package/dist/components/ui/card/card-title.svelte +0 -20
- package/dist/components/ui/card/card-title.svelte.d.ts +0 -5
- package/dist/components/ui/card/card.svelte +0 -23
- package/dist/components/ui/card/card.svelte.d.ts +0 -5
- package/dist/components/ui/card/index.d.ts +0 -8
- package/dist/components/ui/card/index.js +0 -10
- package/dist/components/ui/chart/chart-container.svelte +0 -80
- package/dist/components/ui/chart/chart-container.svelte.d.ts +0 -9
- package/dist/components/ui/chart/chart-style.svelte +0 -36
- package/dist/components/ui/chart/chart-style.svelte.d.ts +0 -8
- package/dist/components/ui/chart/chart-tooltip.svelte +0 -159
- package/dist/components/ui/chart/chart-tooltip.svelte.d.ts +0 -27
- package/dist/components/ui/chart/chart-utils.d.ts +0 -36
- package/dist/components/ui/chart/chart-utils.js +0 -33
- package/dist/components/ui/chart/index.d.ts +0 -4
- package/dist/components/ui/chart/index.js +0 -4
- package/dist/components/ui/checkbox/checkbox.svelte +0 -36
- package/dist/components/ui/checkbox/checkbox.svelte.d.ts +0 -4
- package/dist/components/ui/checkbox/index.d.ts +0 -2
- package/dist/components/ui/checkbox/index.js +0 -4
- package/dist/components/ui/data-table/data-table.svelte.d.ts +0 -40
- package/dist/components/ui/data-table/data-table.svelte.js +0 -110
- package/dist/components/ui/data-table/flex-render.svelte +0 -36
- package/dist/components/ui/data-table/flex-render.svelte.d.ts +0 -30
- package/dist/components/ui/data-table/index.d.ts +0 -3
- package/dist/components/ui/data-table/index.js +0 -3
- package/dist/components/ui/data-table/render-helpers.d.ts +0 -90
- package/dist/components/ui/data-table/render-helpers.js +0 -99
- package/dist/components/ui/dialog/dialog-close.svelte +0 -7
- package/dist/components/ui/dialog/dialog-close.svelte.d.ts +0 -4
- package/dist/components/ui/dialog/dialog-content.svelte +0 -43
- package/dist/components/ui/dialog/dialog-content.svelte.d.ts +0 -11
- package/dist/components/ui/dialog/dialog-description.svelte +0 -17
- package/dist/components/ui/dialog/dialog-description.svelte.d.ts +0 -4
- package/dist/components/ui/dialog/dialog-footer.svelte +0 -20
- package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +0 -5
- package/dist/components/ui/dialog/dialog-header.svelte +0 -20
- package/dist/components/ui/dialog/dialog-header.svelte.d.ts +0 -5
- package/dist/components/ui/dialog/dialog-overlay.svelte +0 -20
- package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +0 -4
- package/dist/components/ui/dialog/dialog-title.svelte +0 -17
- package/dist/components/ui/dialog/dialog-title.svelte.d.ts +0 -4
- package/dist/components/ui/dialog/dialog-trigger.svelte +0 -7
- package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +0 -4
- package/dist/components/ui/dialog/index.d.ts +0 -11
- package/dist/components/ui/dialog/index.js +0 -14
- package/dist/components/ui/drawer/drawer-close.svelte +0 -7
- package/dist/components/ui/drawer/drawer-close.svelte.d.ts +0 -4
- package/dist/components/ui/drawer/drawer-content.svelte +0 -37
- package/dist/components/ui/drawer/drawer-content.svelte.d.ts +0 -7
- package/dist/components/ui/drawer/drawer-description.svelte +0 -17
- package/dist/components/ui/drawer/drawer-description.svelte.d.ts +0 -4
- package/dist/components/ui/drawer/drawer-footer.svelte +0 -20
- package/dist/components/ui/drawer/drawer-footer.svelte.d.ts +0 -5
- package/dist/components/ui/drawer/drawer-header.svelte +0 -20
- package/dist/components/ui/drawer/drawer-header.svelte.d.ts +0 -5
- package/dist/components/ui/drawer/drawer-nested.svelte +0 -12
- package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +0 -3
- package/dist/components/ui/drawer/drawer-overlay.svelte +0 -20
- package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +0 -4
- package/dist/components/ui/drawer/drawer-title.svelte +0 -17
- package/dist/components/ui/drawer/drawer-title.svelte.d.ts +0 -4
- package/dist/components/ui/drawer/drawer-trigger.svelte +0 -7
- package/dist/components/ui/drawer/drawer-trigger.svelte.d.ts +0 -4
- package/dist/components/ui/drawer/drawer.svelte +0 -12
- package/dist/components/ui/drawer/drawer.svelte.d.ts +0 -3
- package/dist/components/ui/drawer/index.d.ts +0 -13
- package/dist/components/ui/drawer/index.js +0 -15
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +0 -41
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +0 -9
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +0 -27
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +0 -7
- package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +0 -22
- package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +0 -8
- package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +0 -7
- package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +0 -4
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +0 -27
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +0 -8
- package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +0 -24
- package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +0 -8
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +0 -16
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +0 -4
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +0 -31
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +0 -4
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +0 -17
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +0 -4
- package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +0 -20
- package/dist/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +0 -5
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +0 -20
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +0 -4
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +0 -29
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +0 -7
- package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +0 -7
- package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +0 -4
- package/dist/components/ui/dropdown-menu/index.d.ts +0 -25
- package/dist/components/ui/dropdown-menu/index.js +0 -17
- package/dist/components/ui/input/index.d.ts +0 -2
- package/dist/components/ui/input/index.js +0 -4
- package/dist/components/ui/input/input.svelte +0 -51
- package/dist/components/ui/input/input.svelte.d.ts +0 -13
- package/dist/components/ui/label/index.d.ts +0 -2
- package/dist/components/ui/label/index.js +0 -4
- package/dist/components/ui/label/label.svelte +0 -20
- package/dist/components/ui/label/label.svelte.d.ts +0 -4
- package/dist/components/ui/scroll-area/index.d.ts +0 -3
- package/dist/components/ui/scroll-area/index.js +0 -5
- package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +0 -31
- package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +0 -4
- package/dist/components/ui/scroll-area/scroll-area.svelte +0 -40
- package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +0 -10
- package/dist/components/ui/select/index.d.ts +0 -11
- package/dist/components/ui/select/index.js +0 -14
- package/dist/components/ui/select/select-content.svelte +0 -40
- package/dist/components/ui/select/select-content.svelte.d.ts +0 -8
- package/dist/components/ui/select/select-group-heading.svelte +0 -21
- package/dist/components/ui/select/select-group-heading.svelte.d.ts +0 -10
- package/dist/components/ui/select/select-group.svelte +0 -7
- package/dist/components/ui/select/select-group.svelte.d.ts +0 -4
- package/dist/components/ui/select/select-item.svelte +0 -38
- package/dist/components/ui/select/select-item.svelte.d.ts +0 -4
- package/dist/components/ui/select/select-label.svelte +0 -20
- package/dist/components/ui/select/select-label.svelte.d.ts +0 -6
- package/dist/components/ui/select/select-scroll-down-button.svelte +0 -20
- package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +0 -4
- package/dist/components/ui/select/select-scroll-up-button.svelte +0 -20
- package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +0 -4
- package/dist/components/ui/select/select-separator.svelte +0 -18
- package/dist/components/ui/select/select-separator.svelte.d.ts +0 -4
- package/dist/components/ui/select/select-trigger.svelte +0 -29
- package/dist/components/ui/select/select-trigger.svelte.d.ts +0 -8
- package/dist/components/ui/separator/index.d.ts +0 -2
- package/dist/components/ui/separator/index.js +0 -4
- package/dist/components/ui/separator/separator.svelte +0 -20
- package/dist/components/ui/separator/separator.svelte.d.ts +0 -4
- package/dist/components/ui/sheet/index.d.ts +0 -11
- package/dist/components/ui/sheet/index.js +0 -14
- package/dist/components/ui/sheet/sheet-close.svelte +0 -7
- package/dist/components/ui/sheet/sheet-close.svelte.d.ts +0 -4
- package/dist/components/ui/sheet/sheet-content.svelte +0 -58
- package/dist/components/ui/sheet/sheet-content.svelte.d.ts +0 -35
- package/dist/components/ui/sheet/sheet-description.svelte +0 -17
- package/dist/components/ui/sheet/sheet-description.svelte.d.ts +0 -4
- package/dist/components/ui/sheet/sheet-footer.svelte +0 -20
- package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +0 -5
- package/dist/components/ui/sheet/sheet-header.svelte +0 -20
- package/dist/components/ui/sheet/sheet-header.svelte.d.ts +0 -5
- package/dist/components/ui/sheet/sheet-overlay.svelte +0 -20
- package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +0 -4
- package/dist/components/ui/sheet/sheet-title.svelte +0 -17
- package/dist/components/ui/sheet/sheet-title.svelte.d.ts +0 -4
- package/dist/components/ui/sheet/sheet-trigger.svelte +0 -7
- package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +0 -4
- package/dist/components/ui/sidebar/constants.d.ts +0 -6
- package/dist/components/ui/sidebar/constants.js +0 -6
- package/dist/components/ui/sidebar/context.svelte.d.ts +0 -42
- package/dist/components/ui/sidebar/context.svelte.js +0 -54
- package/dist/components/ui/sidebar/index.d.ts +0 -25
- package/dist/components/ui/sidebar/index.js +0 -27
- package/dist/components/ui/sidebar/sidebar-content.svelte +0 -24
- package/dist/components/ui/sidebar/sidebar-content.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-footer.svelte +0 -21
- package/dist/components/ui/sidebar/sidebar-footer.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-group-action.svelte +0 -36
- package/dist/components/ui/sidebar/sidebar-group-action.svelte.d.ts +0 -11
- package/dist/components/ui/sidebar/sidebar-group-content.svelte +0 -21
- package/dist/components/ui/sidebar/sidebar-group-content.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-group-label.svelte +0 -34
- package/dist/components/ui/sidebar/sidebar-group-label.svelte.d.ts +0 -11
- package/dist/components/ui/sidebar/sidebar-group.svelte +0 -21
- package/dist/components/ui/sidebar/sidebar-group.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-header.svelte +0 -21
- package/dist/components/ui/sidebar/sidebar-header.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-input.svelte +0 -21
- package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +0 -11
- package/dist/components/ui/sidebar/sidebar-inset.svelte +0 -24
- package/dist/components/ui/sidebar/sidebar-inset.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-menu-action.svelte +0 -43
- package/dist/components/ui/sidebar/sidebar-menu-action.svelte.d.ts +0 -12
- package/dist/components/ui/sidebar/sidebar-menu-badge.svelte +0 -29
- package/dist/components/ui/sidebar/sidebar-menu-badge.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-menu-button.svelte +0 -103
- package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +0 -51
- package/dist/components/ui/sidebar/sidebar-menu-item.svelte +0 -21
- package/dist/components/ui/sidebar/sidebar-menu-item.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-menu-skeleton.svelte +0 -36
- package/dist/components/ui/sidebar/sidebar-menu-skeleton.svelte.d.ts +0 -8
- package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +0 -43
- package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte.d.ts +0 -13
- package/dist/components/ui/sidebar/sidebar-menu-sub-item.svelte +0 -21
- package/dist/components/ui/sidebar/sidebar-menu-sub-item.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-menu-sub.svelte +0 -25
- package/dist/components/ui/sidebar/sidebar-menu-sub.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-menu.svelte +0 -21
- package/dist/components/ui/sidebar/sidebar-menu.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-provider.svelte +0 -53
- package/dist/components/ui/sidebar/sidebar-provider.svelte.d.ts +0 -9
- package/dist/components/ui/sidebar/sidebar-rail.svelte +0 -36
- package/dist/components/ui/sidebar/sidebar-rail.svelte.d.ts +0 -5
- package/dist/components/ui/sidebar/sidebar-separator.svelte +0 -19
- package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +0 -13
- package/dist/components/ui/sidebar/sidebar-trigger.svelte +0 -35
- package/dist/components/ui/sidebar/sidebar-trigger.svelte.d.ts +0 -8
- package/dist/components/ui/sidebar/sidebar.svelte +0 -104
- package/dist/components/ui/sidebar/sidebar.svelte.d.ts +0 -10
- package/dist/components/ui/skeleton/index.d.ts +0 -2
- package/dist/components/ui/skeleton/index.js +0 -4
- package/dist/components/ui/skeleton/skeleton.svelte +0 -17
- package/dist/components/ui/skeleton/skeleton.svelte.d.ts +0 -5
- package/dist/components/ui/table/index.d.ts +0 -9
- package/dist/components/ui/table/index.js +0 -11
- package/dist/components/ui/table/table-body.svelte +0 -20
- package/dist/components/ui/table/table-body.svelte.d.ts +0 -5
- package/dist/components/ui/table/table-caption.svelte +0 -20
- package/dist/components/ui/table/table-caption.svelte.d.ts +0 -5
- package/dist/components/ui/table/table-cell.svelte +0 -20
- package/dist/components/ui/table/table-cell.svelte.d.ts +0 -5
- package/dist/components/ui/table/table-footer.svelte +0 -20
- package/dist/components/ui/table/table-footer.svelte.d.ts +0 -5
- package/dist/components/ui/table/table-head.svelte +0 -23
- package/dist/components/ui/table/table-head.svelte.d.ts +0 -5
- package/dist/components/ui/table/table-header.svelte +0 -20
- package/dist/components/ui/table/table-header.svelte.d.ts +0 -5
- package/dist/components/ui/table/table-row.svelte +0 -23
- package/dist/components/ui/table/table-row.svelte.d.ts +0 -5
- package/dist/components/ui/table/table.svelte +0 -22
- package/dist/components/ui/table/table.svelte.d.ts +0 -5
- package/dist/components/ui/tabs/index.d.ts +0 -5
- package/dist/components/ui/tabs/index.js +0 -7
- package/dist/components/ui/tabs/tabs-content.svelte +0 -17
- package/dist/components/ui/tabs/tabs-content.svelte.d.ts +0 -4
- package/dist/components/ui/tabs/tabs-list.svelte +0 -20
- package/dist/components/ui/tabs/tabs-list.svelte.d.ts +0 -4
- package/dist/components/ui/tabs/tabs-trigger.svelte +0 -20
- package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +0 -4
- package/dist/components/ui/tabs/tabs.svelte +0 -19
- package/dist/components/ui/tabs/tabs.svelte.d.ts +0 -4
- package/dist/components/ui/toggle/index.d.ts +0 -3
- package/dist/components/ui/toggle/index.js +0 -5
- package/dist/components/ui/toggle/toggle.svelte +0 -52
- package/dist/components/ui/toggle/toggle.svelte.d.ts +0 -43
- package/dist/components/ui/toggle-group/index.d.ts +0 -3
- package/dist/components/ui/toggle-group/index.js +0 -5
- package/dist/components/ui/toggle-group/toggle-group-item.svelte +0 -34
- package/dist/components/ui/toggle-group/toggle-group-item.svelte.d.ts +0 -6
- package/dist/components/ui/toggle-group/toggle-group.svelte +0 -47
- package/dist/components/ui/toggle-group/toggle-group.svelte.d.ts +0 -8
- package/dist/components/ui/tooltip/index.d.ts +0 -7
- package/dist/components/ui/tooltip/index.js +0 -9
- package/dist/components/ui/tooltip/tooltip-content.svelte +0 -47
- package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +0 -7
- package/dist/components/ui/tooltip/tooltip-trigger.svelte +0 -7
- package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +0 -4
- package/dist/hooks/is-mobile.svelte.d.ts +0 -4
- package/dist/hooks/is-mobile.svelte.js +0 -7
- package/dist/services/index.d.ts +0 -9
- package/dist/services/index.js +0 -10
- package/dist/types/docs.d.ts +0 -67
- package/dist/types/docs.js +0 -1
- package/dist/utils.d.ts +0 -15
- package/dist/utils.js +0 -44
|
@@ -1,147 +1,76 @@
|
|
|
1
|
+
import { serverTimestamp, increment, type DatabaseReference } from 'firebase/database';
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
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
|
-
*
|
|
21
|
-
*
|
|
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
|
-
*
|
|
24
|
-
*
|
|
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
|
|
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
|
-
|
|
35
|
-
private
|
|
36
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
116
|
-
*
|
|
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
|
-
* ```
|
|
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
|
|
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
|
|
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
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
23
|
-
*
|
|
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
|
-
*
|
|
26
|
-
*
|
|
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
|
|
30
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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.
|
|
47
|
-
if (
|
|
48
|
-
this.
|
|
49
|
-
|
|
35
|
+
this._path = path;
|
|
36
|
+
if (startWith !== undefined)
|
|
37
|
+
this._data = startWith;
|
|
38
|
+
this._init();
|
|
50
39
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
68
|
-
|
|
62
|
+
this._loading = false;
|
|
63
|
+
}, (err) => {
|
|
64
|
+
this._error = err;
|
|
69
65
|
this._loading = false;
|
|
70
66
|
});
|
|
71
67
|
}
|
|
72
|
-
catch (
|
|
73
|
-
this._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
|
-
|
|
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.
|
|
76
|
+
if (!this._ref)
|
|
93
77
|
return null;
|
|
94
|
-
const newRef = push(this.
|
|
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.
|
|
84
|
+
if (!this._ref)
|
|
113
85
|
return;
|
|
114
|
-
await set(this.
|
|
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.
|
|
90
|
+
if (!this._ref)
|
|
129
91
|
return;
|
|
130
|
-
await update(this.
|
|
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.
|
|
96
|
+
if (!this._ref)
|
|
142
97
|
return;
|
|
143
|
-
await remove(this.
|
|
144
|
-
}
|
|
145
|
-
/** Gets current data */
|
|
146
|
-
get data() {
|
|
147
|
-
return this._data;
|
|
98
|
+
await remove(this._ref);
|
|
148
99
|
}
|
|
149
|
-
/**
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
/**
|
|
107
|
+
/** Stops the real-time listener. */
|
|
168
108
|
dispose() {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this.unsubscribe = null;
|
|
172
|
-
}
|
|
109
|
+
this._unsubscribe?.();
|
|
110
|
+
this._unsubscribe = null;
|
|
173
111
|
}
|
|
174
112
|
}
|
|
175
113
|
/**
|
|
176
|
-
*
|
|
177
|
-
*
|
|
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
|
-
* ```
|
|
184
|
-
*
|
|
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
|
|
188
|
-
|
|
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
|
|
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
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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;
|