Skip to content

Commit d0f59a8

Browse files
authored
Merge pull request #115 from ItsAlexousd/feat/realtime-database
Support for Firebase Realtime Database with Node and NodeList components
2 parents 3732913 + 837bbb2 commit d0f59a8

22 files changed

+582
-148
lines changed

README.md

Lines changed: 209 additions & 99 deletions
Large diffs are not rendered by default.

dist/components/FirebaseApp.svelte

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script>import { setFirebaseContext } from "../stores/sdk.js";
2+
export let firestore;
3+
export let rtdb;
4+
export let auth;
5+
export let storage;
6+
setFirebaseContext({ firestore, rtdb, auth, storage });
7+
</script>
8+
9+
<slot />
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { SvelteComponent } from "svelte";
2+
import type { Auth } from "firebase/auth";
3+
import type { Firestore } from "firebase/firestore";
4+
import type { Database } from "firebase/database";
5+
import type { FirebaseStorage } from "firebase/storage";
6+
declare const __propDef: {
7+
props: {
8+
firestore: Firestore;
9+
rtdb: Database;
10+
auth: Auth;
11+
storage: FirebaseStorage;
12+
};
13+
events: {
14+
[evt: string]: CustomEvent<any>;
15+
};
16+
slots: {
17+
default: {};
18+
};
19+
};
20+
export type FirebaseAppProps = typeof __propDef.props;
21+
export type FirebaseAppEvents = typeof __propDef.events;
22+
export type FirebaseAppSlots = typeof __propDef.slots;
23+
export default class FirebaseApp extends SvelteComponent<FirebaseAppProps, FirebaseAppEvents, FirebaseAppSlots> {
24+
}
25+
export {};

dist/index.d.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import Doc from "./components/Doc.svelte";
2+
import User from "./components/User.svelte";
3+
import Collection from "./components/Collection.svelte";
4+
import Node from "./components/Node.svelte";
5+
import NodeList from "./components/NodeList.svelte";
6+
import FirebaseApp from "./components/FirebaseApp.svelte";
7+
import SignedOut from "./components/SignedOut.svelte";
8+
import SignedIn from "./components/SignedIn.svelte";
9+
import { docStore } from "./stores/firestore.js";
10+
import { collectionStore } from "./stores/firestore.js";
11+
import { nodeStore } from './stores/rtdb.js';
12+
import { nodeListStore } from './stores/rtdb.js';
13+
import { userStore } from "./stores/auth.js";
14+
import { getFirebaseContext } from "./stores/sdk.js";
15+
export { Doc, User, Collection, Node, NodeList, FirebaseApp, SignedOut, SignedIn, docStore, collectionStore, nodeStore as refStore, nodeListStore as listStore, userStore, getFirebaseContext };

dist/index.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Reexport your entry components here
2+
import FirebaseApp from "./components/FirebaseApp.svelte";
3+
import User from "./components/User.svelte";
4+
import Collection from "./components/Collection.svelte";
5+
import Doc from "./components/Doc.svelte";
6+
import NodeList from "./components/NodeList.svelte";
7+
import Node from "./components/Node.svelte";
8+
import SignedIn from "./components/SignedIn.svelte";
9+
import SignedOut from "./components/SignedOut.svelte";
10+
import { userStore } from "./stores/auth.js";
11+
import { docStore, collectionStore } from "./stores/firestore.js";
12+
import { nodeStore, nodeListStore } from './stores/rtdb.js';
13+
import { getFirebaseContext } from "./stores/sdk.js";
14+
15+
export {
16+
Doc,
17+
User,
18+
Collection,
19+
Node,
20+
NodeList,
21+
FirebaseApp,
22+
SignedOut,
23+
SignedIn,
24+
docStore,
25+
collectionStore,
26+
nodeStore as refStore,
27+
nodeListStore as listStore,
28+
userStore,
29+
getFirebaseContext,
30+
};

dist/stores/sdk.d.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import type { Firestore } from "firebase/firestore";
2+
import type { Database } from "firebase/database";
3+
import type { Auth } from "firebase/auth";
4+
import type { FirebaseStorage } from "firebase/storage";
5+
export interface FirebaseSDKContext {
6+
auth?: Auth;
7+
firestore?: Firestore;
8+
rtdb?: Database;
9+
storage?: FirebaseStorage;
10+
}
11+
export declare const contextKey = "firebase";
12+
export declare function setFirebaseContext(sdks: FirebaseSDKContext): void;
13+
/**
14+
* Get the Firebase SDKs from Svelte context
15+
*/
16+
export declare function getFirebaseContext(): FirebaseSDKContext;

dist/stores/sdk.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { getContext, setContext } from "svelte";
2+
export const contextKey = "firebase";
3+
export function setFirebaseContext(sdks) {
4+
setContext(contextKey, sdks);
5+
}
6+
/**
7+
* Get the Firebase SDKs from Svelte context
8+
*/
9+
export function getFirebaseContext() {
10+
return getContext(contextKey);
11+
}

firebase.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
"firestore": {
77
"port": 8080
88
},
9+
"database": {
10+
"port": 9000
11+
},
912
"storage": {
1013
"port": 9199
1114
},
@@ -22,10 +25,6 @@
2225
},
2326
"hosting": {
2427
"public": "docs/dist",
25-
"ignore": [
26-
"firebase.json",
27-
"**/.*",
28-
"**/node_modules/**"
29-
]
28+
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
3029
}
3130
}

playwright.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { defineConfig } from '@playwright/test';
22

33
export default defineConfig({
44
webServer: {
5-
command: 'firebase emulators:exec --only firestore,storage,auth "npm run build && npm run preview"',
5+
command: 'firebase emulators:exec --only firestore,database,storage,auth "npm run build && npm run preview"',
66
port: 4173
77
},
88
testDir: 'tests',

src/lib/components/FirebaseApp.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
import { setFirebaseContext } from "$lib/stores/sdk.js";
33
import type { Auth } from "firebase/auth";
44
import type { Firestore } from "firebase/firestore";
5+
import type { Database } from "firebase/database";
56
import type { FirebaseStorage } from "firebase/storage";
67
78
export let firestore: Firestore;
9+
export let rtdb: Database;
810
export let auth: Auth;
911
export let storage: FirebaseStorage;
1012
11-
setFirebaseContext({ firestore, auth, storage });
13+
setFirebaseContext({ firestore, rtdb, auth, storage });
1214
</script>
1315

1416
<slot />

0 commit comments

Comments
 (0)