@robinpath/firebase
0.1.1Node.jsPublicFirebase module for RobinPath.
Firebase
Firebase module for RobinPath.
Package: @robinpath/firebase | Category: Database | Type: Utility
Authentication
firebase.setCredentials "my-project-id" "AIzaSy..."
Call this once at the start of your script before using any other function. Credentials persist for the duration of the script execution.
Use Cases
Use the firebase module when you need to:
- Get a Firestore document by collection and document ID -- Use
firebase.getDocumentto perform this operation - List Firestore documents in a collection -- Use
firebase.listDocumentsto perform this operation - Create a Firestore document with auto or specified ID -- Use
firebase.createDocumentto perform this operation - Update a Firestore document's fields -- Use
firebase.updateDocumentto perform this operation - Delete a Firestore document -- Use
firebase.deleteDocumentto perform this operation
Quick Reference
| Function | Description | Returns |
|---|---|---|
setCredentials | Set Firebase project ID and API key for client-side REST operations | {configured, projectId} |
setServiceToken | Set Firebase project ID and OAuth2 access token for admin operations | {configured, projectId, hasAccessToken} |
getDocument | Get a Firestore document by collection and document ID | Document with _id, _path, and fields |
listDocuments | List Firestore documents in a collection | {documents, nextPageToken} |
createDocument | Create a Firestore document with auto or specified ID | Created document with _id and fields |
updateDocument | Update a Firestore document's fields | Updated document |
deleteDocument | Delete a Firestore document | {deleted, collection, documentId} |
queryDocuments | Query Firestore documents with structured query (where, orderBy, limit) | Array of matching documents |
batchGet | Get multiple Firestore documents by IDs | Array of documents (or {_missing: true} for not found) |
signUp | Create a new user with email and password | {idToken, email, localId, refreshToken, expiresIn} |
signIn | Sign in a user with email and password | {idToken, email, localId, refreshToken, expiresIn, registered} |
signInAnonymously | Sign in anonymously | {idToken, localId, refreshToken, expiresIn} |
sendPasswordReset | Send a password reset email | {email, sent} |
verifyEmail | Send an email verification to the user | {email, sent} |
getUserByToken | Get user data from an ID token | {localId, email, emailVerified, displayName, ...} |
deleteAccount | Delete a user account | {deleted} |
rtdbGet | Read data from Realtime Database at a path | Data at the path |
rtdbSet | Write data to Realtime Database at a path (overwrites) | Written data |
rtdbUpdate | Update data at a Realtime Database path (merge) | Updated data |
rtdbPush | Push a new child to a Realtime Database path | {name} with the generated key |
rtdbDelete | Delete data at a Realtime Database path | {deleted, path} |
Functions
setCredentials
Set Firebase project ID and API key for client-side REST operations
Module: firebase | Returns: object -- {configured, projectId}
firebase.setCredentials "my-project-id" "AIzaSy..."
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | Firebase project ID |
apiKey | string | Yes | Firebase Web API key |
setServiceToken
Set Firebase project ID and OAuth2 access token for admin operations
Module: firebase | Returns: object -- {configured, projectId, hasAccessToken}
firebase.setServiceToken "my-project-id" "ya29.a0..."
| Parameter | Type | Required | Description |
|---|---|---|---|
projectId | string | Yes | Firebase project ID |
accessToken | string | Yes | OAuth2 access token |
getDocument
Get a Firestore document by collection and document ID
Module: firebase | Returns: object -- Document with _id, _path, and fields
firebase.getDocument "users" "user123"
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | Collection name |
documentId | string | Yes | Document ID |
listDocuments
List Firestore documents in a collection
Module: firebase | Returns: object -- {documents, nextPageToken}
firebase.listDocuments "users" {"pageSize": 10}
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | Collection name |
options | object | No | {pageSize, pageToken, orderBy} |
createDocument
Create a Firestore document with auto or specified ID
Module: firebase | Returns: object -- Created document with _id and fields
firebase.createDocument "users" {"name": "Alice", "age": 30}
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | Collection name |
fields | object | Yes | Document fields |
documentId | string | No | Optional document ID (auto-generated if omitted) |
updateDocument
Update a Firestore document's fields
Module: firebase | Returns: object -- Updated document
firebase.updateDocument "users" "user123" {"name": "Bob"}
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | Collection name |
documentId | string | Yes | Document ID |
fields | object | Yes | Fields to update |
updateMask | array | No | Specific field paths to update (optional) |
deleteDocument
Delete a Firestore document
Module: firebase | Returns: object -- {deleted, collection, documentId}
firebase.deleteDocument "users" "user123"
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | Collection name |
documentId | string | Yes | Document ID |
queryDocuments
Query Firestore documents with structured query (where, orderBy, limit)
Module: firebase | Returns: array -- Array of matching documents
firebase.queryDocuments "users" {"where": {"age": {">=": 18}}, "limit": 10}
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | Collection name |
query | object | Yes | {where, orderBy, limit, offset} |
batchGet
Get multiple Firestore documents by IDs
Module: firebase | Returns: array -- Array of documents (or {_missing: true} for not found)
firebase.batchGet "users" ["user1", "user2", "user3"]
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | Collection name |
documentIds | array | Yes | Array of document IDs |
signUp
Create a new user with email and password
Module: firebase | Returns: object -- {idToken, email, localId, refreshToken, expiresIn}
firebase.signUp "user@example.com" "securePass123"
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | User email |
password | string | Yes | User password |
signIn
Sign in a user with email and password
Module: firebase | Returns: object -- {idToken, email, localId, refreshToken, expiresIn, registered}
firebase.signIn "user@example.com" "securePass123"
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | User email |
password | string | Yes | User password |
signInAnonymously
Sign in anonymously
Module: firebase | Returns: object -- {idToken, localId, refreshToken, expiresIn}
firebase.signInAnonymously
| Parameter | Type | Required | Description |
|---|---|---|---|
| (none) | No | Call with no arguments |
sendPasswordReset
Send a password reset email
Module: firebase | Returns: object -- {email, sent}
firebase.sendPasswordReset "user@example.com"
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | User email |
verifyEmail
Send an email verification to the user
Module: firebase | Returns: object -- {email, sent}
firebase.verifyEmail "eyJhbGciOi..."
| Parameter | Type | Required | Description |
|---|---|---|---|
idToken | string | Yes | User ID token from sign in |
getUserByToken
Get user data from an ID token
Module: firebase | Returns: object -- {localId, email, emailVerified, displayName, ...}
firebase.getUserByToken "eyJhbGciOi..."
| Parameter | Type | Required | Description |
|---|---|---|---|
idToken | string | Yes | User ID token from sign in |
deleteAccount
Delete a user account
Module: firebase | Returns: object -- {deleted}
firebase.deleteAccount "eyJhbGciOi..."
| Parameter | Type | Required | Description |
|---|---|---|---|
idToken | string | Yes | User ID token from sign in |
rtdbGet
Read data from Realtime Database at a path
Module: firebase | Returns: any -- Data at the path
firebase.rtdbGet "users/user123"
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Database path |
rtdbSet
Write data to Realtime Database at a path (overwrites)
Module: firebase | Returns: any -- Written data
firebase.rtdbSet "users/user123" {"name": "Alice", "age": 30}
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Database path |
data | any | Yes | Data to write |
rtdbUpdate
Update data at a Realtime Database path (merge)
Module: firebase | Returns: any -- Updated data
firebase.rtdbUpdate "users/user123" {"age": 31}
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Database path |
data | object | Yes | Fields to update |
rtdbPush
Push a new child to a Realtime Database path
Module: firebase | Returns: object -- {name} with the generated key
firebase.rtdbPush "messages" {"text": "Hello", "sender": "Alice"}
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Database path |
data | any | Yes | Data for the new child |
rtdbDelete
Delete data at a Realtime Database path
Module: firebase | Returns: object -- {deleted, path}
firebase.rtdbDelete "users/user123"
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Database path |
Error Handling
All functions throw on failure. Common errors:
| Error | Cause |
|---|---|
Firebase not configured. Call firebase.setCredentials or firebase.setServiceToken first. | Check the error message for details |
API key not set. Call firebase.setCredentials with projectId and apiKey. | Check the error message for details |
Access token not set. Call firebase.setServiceToken with projectId and accessToken. | Check the error message for details |
Firebase API error (${response.status}): ${errMsg} | Check the error message for details |
projectId is required | Check the error message for details |
apiKey is required | Check the error message for details |
accessToken is required | Check the error message for details |
collection and documentId are required | Check the error message for details |
@desc "Get document and validate result"
do
set $result as firebase.getDocument "users" "user123"
if $result != null
print "Success"
else
print "No result"
end
enddo
Recipes
1. List and iterate Document
Retrieve all items and loop through them.
@desc "Setup authentication"
do
firebase.setCredentials $token
enddo
@desc "Get document and iterate results"
do
set $result as firebase.getDocument "users" "user123"
each $item in $result
print $item
end
enddo
2. Create a new item with createDocument
Create a new resource and capture the result.
@desc "Setup authentication"
do
firebase.setCredentials $token
enddo
@desc "Create document"
do
set $result as firebase.createDocument "users" {"name": "Alice", "age": 30}
print "Created: " + $result
enddo
3. Create and update workflow
Create an item and then update it.
@desc "Setup authentication"
do
firebase.setCredentials $token
enddo
@desc "Create document and update document"
do
set $created as firebase.createDocument "users" {"name": "Alice", "age": 30}
# Update the created item
firebase.updateDocument "users" "user123" {"name": "Bob"}
enddo
4. Check before creating
List existing items and only create if needed.
@desc "Setup authentication"
do
firebase.setCredentials $token
enddo
@desc "Get document and create document"
do
set $existing as firebase.getDocument "users" "user123"
if $existing == null
firebase.createDocument "users" {"name": "Alice", "age": 30}
print "Item created"
else
print "Item already exists"
end
enddo
5. Multi-step Firebase workflow
Chain multiple firebase operations together.
@desc "Setup authentication"
do
firebase.setCredentials $token
enddo
@desc "Get document, list documents, and more"
do
set $r_getDocument as firebase.getDocument "users" "user123"
set $r_listDocuments as firebase.listDocuments "users" {"pageSize": 10}
set $r_createDocument as firebase.createDocument "users" {"name": "Alice", "age": 30}
print "All operations complete"
enddo
6. Safe getDocument with validation
Check results before proceeding.
@desc "Setup authentication"
do
firebase.setCredentials $token
enddo
@desc "Get document and validate result"
do
set $result as firebase.getDocument "users" "user123"
if $result != null
print "Success: " + $result
else
print "Operation returned no data"
end
enddo
Related Modules
- mysql -- MySQL module for complementary functionality
- postgres -- PostgreSQL module for complementary functionality
- mongo -- Mongo module for complementary functionality
- redis -- Redis module for complementary functionality
- supabase -- Supabase module for complementary functionality
Versions (1)
| Version | Tag | Published |
|---|---|---|
| 0.1.1 | latest | 1 months ago |
Related Modules
chart
JS@robinpathv0.1.2
Generate chart images (PNG/JPEG) using Chart.js. Supports bar, line, pie, doughnut, scatter, radar, polarArea, and bubble charts with auto-coloring and customizable titles, legends, and dimensions.
graph
JS@robinpathv0.1.1
Graph data structures with BFS, DFS, Dijkstra's shortest path, topological sort, cycle detection, and connectivity
hotjar
JS@robinpathv0.1.1
Hotjar module for RobinPath.
mixpanel
JS@robinpathv0.1.2
Mixpanel module for RobinPath.
$ robinpath add @robinpath/firebase
