@robinpath/firebase 0.1.0 → 0.1.1
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 +115 -115
- package/package.json +35 -7
- package/dist/firebase.d.ts +0 -277
- package/dist/firebase.d.ts.map +0 -1
- package/dist/firebase.js +0 -678
- package/dist/firebase.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -12
- package/dist/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
# @robinpath/firebase
|
|
2
|
-
|
|
3
|
-
> Firebase module for RobinPath.
|
|
4
|
-
|
|
5
|
-
   
|
|
6
|
-
|
|
7
|
-
## Why use this module?
|
|
8
|
-
|
|
9
|
-
The `firebase` module lets you:
|
|
10
|
-
|
|
11
|
-
- Get a Firestore document by collection and document ID
|
|
12
|
-
- List Firestore documents in a collection
|
|
13
|
-
- Create a Firestore document with auto or specified ID
|
|
14
|
-
- Update a Firestore document's fields
|
|
15
|
-
- Delete a Firestore document
|
|
16
|
-
|
|
17
|
-
All functions are callable directly from RobinPath scripts with a simple, consistent API.
|
|
18
|
-
|
|
19
|
-
## Installation
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
npm install @robinpath/firebase
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Quick Start
|
|
26
|
-
|
|
27
|
-
**1. Set up credentials**
|
|
28
|
-
|
|
29
|
-
```robinpath
|
|
30
|
-
firebase.setCredentials "my-project-id" "AIzaSy..."
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**2. Get a Firestore document by collection and document ID**
|
|
34
|
-
|
|
35
|
-
```robinpath
|
|
36
|
-
firebase.getDocument "users" "user123"
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Available Functions
|
|
40
|
-
|
|
41
|
-
| Function | Description |
|
|
42
|
-
|----------|-------------|
|
|
43
|
-
| `firebase.setCredentials` | Set Firebase project ID and API key for client-side REST operations |
|
|
44
|
-
| `firebase.setServiceToken` | Set Firebase project ID and OAuth2 access token for admin operations |
|
|
45
|
-
| `firebase.getDocument` | Get a Firestore document by collection and document ID |
|
|
46
|
-
| `firebase.listDocuments` | List Firestore documents in a collection |
|
|
47
|
-
| `firebase.createDocument` | Create a Firestore document with auto or specified ID |
|
|
48
|
-
| `firebase.updateDocument` | Update a Firestore document's fields |
|
|
49
|
-
| `firebase.deleteDocument` | Delete a Firestore document |
|
|
50
|
-
| `firebase.queryDocuments` | Query Firestore documents with structured query (where, orderBy, limit) |
|
|
51
|
-
| `firebase.batchGet` | Get multiple Firestore documents by IDs |
|
|
52
|
-
| `firebase.signUp` | Create a new user with email and password |
|
|
53
|
-
| `firebase.signIn` | Sign in a user with email and password |
|
|
54
|
-
| `firebase.signInAnonymously` | Sign in anonymously |
|
|
55
|
-
| `firebase.sendPasswordReset` | Send a password reset email |
|
|
56
|
-
| `firebase.verifyEmail` | Send an email verification to the user |
|
|
57
|
-
| `firebase.getUserByToken` | Get user data from an ID token |
|
|
58
|
-
| `firebase.deleteAccount` | Delete a user account |
|
|
59
|
-
| `firebase.rtdbGet` | Read data from Realtime Database at a path |
|
|
60
|
-
| `firebase.rtdbSet` | Write data to Realtime Database at a path (overwrites) |
|
|
61
|
-
| `firebase.rtdbUpdate` | Update data at a Realtime Database path (merge) |
|
|
62
|
-
| `firebase.rtdbPush` | Push a new child to a Realtime Database path |
|
|
63
|
-
| `firebase.rtdbDelete` | Delete data at a Realtime Database path |
|
|
64
|
-
|
|
65
|
-
## Examples
|
|
66
|
-
|
|
67
|
-
### Get a Firestore document by collection and document ID
|
|
68
|
-
|
|
69
|
-
```robinpath
|
|
70
|
-
firebase.getDocument "users" "user123"
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### List Firestore documents in a collection
|
|
74
|
-
|
|
75
|
-
```robinpath
|
|
76
|
-
firebase.listDocuments "users" {"pageSize": 10}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Create a Firestore document with auto or specified ID
|
|
80
|
-
|
|
81
|
-
```robinpath
|
|
82
|
-
firebase.createDocument "users" {"name": "Alice", "age": 30}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Integration with RobinPath
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
import { RobinPath } from "@wiredwp/robinpath";
|
|
89
|
-
import Module from "@robinpath/firebase";
|
|
90
|
-
|
|
91
|
-
const rp = new RobinPath();
|
|
92
|
-
rp.registerModule(Module.name, Module.functions);
|
|
93
|
-
rp.registerModuleMeta(Module.name, Module.functionMetadata);
|
|
94
|
-
|
|
95
|
-
const result = await rp.executeScript(`
|
|
96
|
-
firebase.setCredentials "my-project-id" "AIzaSy..."
|
|
97
|
-
firebase.getDocument "users" "user123"
|
|
98
|
-
`);
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Full API Reference
|
|
102
|
-
|
|
103
|
-
See [MODULE.md](./MODULE.md) for complete documentation including all parameters, return types, error handling, and advanced examples.
|
|
104
|
-
|
|
105
|
-
## Related Modules
|
|
106
|
-
|
|
107
|
-
- [`@robinpath/mysql`](../mysql) — MySQL module for complementary functionality
|
|
108
|
-
- [`@robinpath/postgres`](../postgres) — PostgreSQL module for complementary functionality
|
|
109
|
-
- [`@robinpath/mongo`](../mongo) — Mongo module for complementary functionality
|
|
110
|
-
- [`@robinpath/redis`](../redis) — Redis module for complementary functionality
|
|
111
|
-
- [`@robinpath/supabase`](../supabase) — Supabase module for complementary functionality
|
|
112
|
-
|
|
113
|
-
## License
|
|
114
|
-
|
|
115
|
-
MIT
|
|
1
|
+
# @robinpath/firebase
|
|
2
|
+
|
|
3
|
+
> Firebase module for RobinPath.
|
|
4
|
+
|
|
5
|
+
   
|
|
6
|
+
|
|
7
|
+
## Why use this module?
|
|
8
|
+
|
|
9
|
+
The `firebase` module lets you:
|
|
10
|
+
|
|
11
|
+
- Get a Firestore document by collection and document ID
|
|
12
|
+
- List Firestore documents in a collection
|
|
13
|
+
- Create a Firestore document with auto or specified ID
|
|
14
|
+
- Update a Firestore document's fields
|
|
15
|
+
- Delete a Firestore document
|
|
16
|
+
|
|
17
|
+
All functions are callable directly from RobinPath scripts with a simple, consistent API.
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @robinpath/firebase
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
**1. Set up credentials**
|
|
28
|
+
|
|
29
|
+
```robinpath
|
|
30
|
+
firebase.setCredentials "my-project-id" "AIzaSy..."
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**2. Get a Firestore document by collection and document ID**
|
|
34
|
+
|
|
35
|
+
```robinpath
|
|
36
|
+
firebase.getDocument "users" "user123"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Available Functions
|
|
40
|
+
|
|
41
|
+
| Function | Description |
|
|
42
|
+
|----------|-------------|
|
|
43
|
+
| `firebase.setCredentials` | Set Firebase project ID and API key for client-side REST operations |
|
|
44
|
+
| `firebase.setServiceToken` | Set Firebase project ID and OAuth2 access token for admin operations |
|
|
45
|
+
| `firebase.getDocument` | Get a Firestore document by collection and document ID |
|
|
46
|
+
| `firebase.listDocuments` | List Firestore documents in a collection |
|
|
47
|
+
| `firebase.createDocument` | Create a Firestore document with auto or specified ID |
|
|
48
|
+
| `firebase.updateDocument` | Update a Firestore document's fields |
|
|
49
|
+
| `firebase.deleteDocument` | Delete a Firestore document |
|
|
50
|
+
| `firebase.queryDocuments` | Query Firestore documents with structured query (where, orderBy, limit) |
|
|
51
|
+
| `firebase.batchGet` | Get multiple Firestore documents by IDs |
|
|
52
|
+
| `firebase.signUp` | Create a new user with email and password |
|
|
53
|
+
| `firebase.signIn` | Sign in a user with email and password |
|
|
54
|
+
| `firebase.signInAnonymously` | Sign in anonymously |
|
|
55
|
+
| `firebase.sendPasswordReset` | Send a password reset email |
|
|
56
|
+
| `firebase.verifyEmail` | Send an email verification to the user |
|
|
57
|
+
| `firebase.getUserByToken` | Get user data from an ID token |
|
|
58
|
+
| `firebase.deleteAccount` | Delete a user account |
|
|
59
|
+
| `firebase.rtdbGet` | Read data from Realtime Database at a path |
|
|
60
|
+
| `firebase.rtdbSet` | Write data to Realtime Database at a path (overwrites) |
|
|
61
|
+
| `firebase.rtdbUpdate` | Update data at a Realtime Database path (merge) |
|
|
62
|
+
| `firebase.rtdbPush` | Push a new child to a Realtime Database path |
|
|
63
|
+
| `firebase.rtdbDelete` | Delete data at a Realtime Database path |
|
|
64
|
+
|
|
65
|
+
## Examples
|
|
66
|
+
|
|
67
|
+
### Get a Firestore document by collection and document ID
|
|
68
|
+
|
|
69
|
+
```robinpath
|
|
70
|
+
firebase.getDocument "users" "user123"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### List Firestore documents in a collection
|
|
74
|
+
|
|
75
|
+
```robinpath
|
|
76
|
+
firebase.listDocuments "users" {"pageSize": 10}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Create a Firestore document with auto or specified ID
|
|
80
|
+
|
|
81
|
+
```robinpath
|
|
82
|
+
firebase.createDocument "users" {"name": "Alice", "age": 30}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Integration with RobinPath
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { RobinPath } from "@wiredwp/robinpath";
|
|
89
|
+
import Module from "@robinpath/firebase";
|
|
90
|
+
|
|
91
|
+
const rp = new RobinPath();
|
|
92
|
+
rp.registerModule(Module.name, Module.functions);
|
|
93
|
+
rp.registerModuleMeta(Module.name, Module.functionMetadata);
|
|
94
|
+
|
|
95
|
+
const result = await rp.executeScript(`
|
|
96
|
+
firebase.setCredentials "my-project-id" "AIzaSy..."
|
|
97
|
+
firebase.getDocument "users" "user123"
|
|
98
|
+
`);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Full API Reference
|
|
102
|
+
|
|
103
|
+
See [MODULE.md](./MODULE.md) for complete documentation including all parameters, return types, error handling, and advanced examples.
|
|
104
|
+
|
|
105
|
+
## Related Modules
|
|
106
|
+
|
|
107
|
+
- [`@robinpath/mysql`](../mysql) — MySQL module for complementary functionality
|
|
108
|
+
- [`@robinpath/postgres`](../postgres) — PostgreSQL module for complementary functionality
|
|
109
|
+
- [`@robinpath/mongo`](../mongo) — Mongo module for complementary functionality
|
|
110
|
+
- [`@robinpath/redis`](../redis) — Redis module for complementary functionality
|
|
111
|
+
- [`@robinpath/supabase`](../supabase) — Supabase module for complementary functionality
|
|
112
|
+
|
|
113
|
+
## License
|
|
114
|
+
|
|
115
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,13 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@robinpath/firebase",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"publishConfig": {
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
5
7
|
"type": "module",
|
|
6
8
|
"main": "dist/index.js",
|
|
7
9
|
"types": "dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc"
|
|
21
|
+
},
|
|
22
|
+
"peerDependencies": {
|
|
23
|
+
"@robinpath/core": ">=0.20.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@robinpath/core": "^0.30.1",
|
|
27
|
+
"typescript": "^5.6.0"
|
|
28
|
+
},
|
|
29
|
+
"description": "Firebase module for RobinPath.",
|
|
30
|
+
"keywords": [
|
|
31
|
+
"firebase",
|
|
32
|
+
"database"
|
|
33
|
+
],
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"robinpath": {
|
|
36
|
+
"category": "database",
|
|
37
|
+
"type": "utility",
|
|
38
|
+
"auth": "api-key",
|
|
39
|
+
"functionCount": 21
|
|
40
|
+
}
|
|
13
41
|
}
|
package/dist/firebase.d.ts
DELETED
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
import type { BuiltinHandler } from "@wiredwp/robinpath";
|
|
2
|
-
export declare const FirebaseFunctions: Record<string, BuiltinHandler>;
|
|
3
|
-
export declare const FirebaseFunctionMetadata: {
|
|
4
|
-
setCredentials: {
|
|
5
|
-
description: string;
|
|
6
|
-
parameters: {
|
|
7
|
-
name: string;
|
|
8
|
-
dataType: string;
|
|
9
|
-
description: string;
|
|
10
|
-
formInputType: string;
|
|
11
|
-
required: boolean;
|
|
12
|
-
}[];
|
|
13
|
-
returnType: string;
|
|
14
|
-
returnDescription: string;
|
|
15
|
-
example: string;
|
|
16
|
-
};
|
|
17
|
-
setServiceToken: {
|
|
18
|
-
description: string;
|
|
19
|
-
parameters: {
|
|
20
|
-
name: string;
|
|
21
|
-
dataType: string;
|
|
22
|
-
description: string;
|
|
23
|
-
formInputType: string;
|
|
24
|
-
required: boolean;
|
|
25
|
-
}[];
|
|
26
|
-
returnType: string;
|
|
27
|
-
returnDescription: string;
|
|
28
|
-
example: string;
|
|
29
|
-
};
|
|
30
|
-
getDocument: {
|
|
31
|
-
description: string;
|
|
32
|
-
parameters: {
|
|
33
|
-
name: string;
|
|
34
|
-
dataType: string;
|
|
35
|
-
description: string;
|
|
36
|
-
formInputType: string;
|
|
37
|
-
required: boolean;
|
|
38
|
-
}[];
|
|
39
|
-
returnType: string;
|
|
40
|
-
returnDescription: string;
|
|
41
|
-
example: string;
|
|
42
|
-
};
|
|
43
|
-
listDocuments: {
|
|
44
|
-
description: string;
|
|
45
|
-
parameters: {
|
|
46
|
-
name: string;
|
|
47
|
-
dataType: string;
|
|
48
|
-
description: string;
|
|
49
|
-
formInputType: string;
|
|
50
|
-
required: boolean;
|
|
51
|
-
}[];
|
|
52
|
-
returnType: string;
|
|
53
|
-
returnDescription: string;
|
|
54
|
-
example: string;
|
|
55
|
-
};
|
|
56
|
-
createDocument: {
|
|
57
|
-
description: string;
|
|
58
|
-
parameters: {
|
|
59
|
-
name: string;
|
|
60
|
-
dataType: string;
|
|
61
|
-
description: string;
|
|
62
|
-
formInputType: string;
|
|
63
|
-
required: boolean;
|
|
64
|
-
}[];
|
|
65
|
-
returnType: string;
|
|
66
|
-
returnDescription: string;
|
|
67
|
-
example: string;
|
|
68
|
-
};
|
|
69
|
-
updateDocument: {
|
|
70
|
-
description: string;
|
|
71
|
-
parameters: {
|
|
72
|
-
name: string;
|
|
73
|
-
dataType: string;
|
|
74
|
-
description: string;
|
|
75
|
-
formInputType: string;
|
|
76
|
-
required: boolean;
|
|
77
|
-
}[];
|
|
78
|
-
returnType: string;
|
|
79
|
-
returnDescription: string;
|
|
80
|
-
example: string;
|
|
81
|
-
};
|
|
82
|
-
deleteDocument: {
|
|
83
|
-
description: string;
|
|
84
|
-
parameters: {
|
|
85
|
-
name: string;
|
|
86
|
-
dataType: string;
|
|
87
|
-
description: string;
|
|
88
|
-
formInputType: string;
|
|
89
|
-
required: boolean;
|
|
90
|
-
}[];
|
|
91
|
-
returnType: string;
|
|
92
|
-
returnDescription: string;
|
|
93
|
-
example: string;
|
|
94
|
-
};
|
|
95
|
-
queryDocuments: {
|
|
96
|
-
description: string;
|
|
97
|
-
parameters: {
|
|
98
|
-
name: string;
|
|
99
|
-
dataType: string;
|
|
100
|
-
description: string;
|
|
101
|
-
formInputType: string;
|
|
102
|
-
required: boolean;
|
|
103
|
-
}[];
|
|
104
|
-
returnType: string;
|
|
105
|
-
returnDescription: string;
|
|
106
|
-
example: string;
|
|
107
|
-
};
|
|
108
|
-
batchGet: {
|
|
109
|
-
description: string;
|
|
110
|
-
parameters: {
|
|
111
|
-
name: string;
|
|
112
|
-
dataType: string;
|
|
113
|
-
description: string;
|
|
114
|
-
formInputType: string;
|
|
115
|
-
required: boolean;
|
|
116
|
-
}[];
|
|
117
|
-
returnType: string;
|
|
118
|
-
returnDescription: string;
|
|
119
|
-
example: string;
|
|
120
|
-
};
|
|
121
|
-
signUp: {
|
|
122
|
-
description: string;
|
|
123
|
-
parameters: {
|
|
124
|
-
name: string;
|
|
125
|
-
dataType: string;
|
|
126
|
-
description: string;
|
|
127
|
-
formInputType: string;
|
|
128
|
-
required: boolean;
|
|
129
|
-
}[];
|
|
130
|
-
returnType: string;
|
|
131
|
-
returnDescription: string;
|
|
132
|
-
example: string;
|
|
133
|
-
};
|
|
134
|
-
signIn: {
|
|
135
|
-
description: string;
|
|
136
|
-
parameters: {
|
|
137
|
-
name: string;
|
|
138
|
-
dataType: string;
|
|
139
|
-
description: string;
|
|
140
|
-
formInputType: string;
|
|
141
|
-
required: boolean;
|
|
142
|
-
}[];
|
|
143
|
-
returnType: string;
|
|
144
|
-
returnDescription: string;
|
|
145
|
-
example: string;
|
|
146
|
-
};
|
|
147
|
-
signInAnonymously: {
|
|
148
|
-
description: string;
|
|
149
|
-
parameters: never[];
|
|
150
|
-
returnType: string;
|
|
151
|
-
returnDescription: string;
|
|
152
|
-
example: string;
|
|
153
|
-
};
|
|
154
|
-
sendPasswordReset: {
|
|
155
|
-
description: string;
|
|
156
|
-
parameters: {
|
|
157
|
-
name: string;
|
|
158
|
-
dataType: string;
|
|
159
|
-
description: string;
|
|
160
|
-
formInputType: string;
|
|
161
|
-
required: boolean;
|
|
162
|
-
}[];
|
|
163
|
-
returnType: string;
|
|
164
|
-
returnDescription: string;
|
|
165
|
-
example: string;
|
|
166
|
-
};
|
|
167
|
-
verifyEmail: {
|
|
168
|
-
description: string;
|
|
169
|
-
parameters: {
|
|
170
|
-
name: string;
|
|
171
|
-
dataType: string;
|
|
172
|
-
description: string;
|
|
173
|
-
formInputType: string;
|
|
174
|
-
required: boolean;
|
|
175
|
-
}[];
|
|
176
|
-
returnType: string;
|
|
177
|
-
returnDescription: string;
|
|
178
|
-
example: string;
|
|
179
|
-
};
|
|
180
|
-
getUserByToken: {
|
|
181
|
-
description: string;
|
|
182
|
-
parameters: {
|
|
183
|
-
name: string;
|
|
184
|
-
dataType: string;
|
|
185
|
-
description: string;
|
|
186
|
-
formInputType: string;
|
|
187
|
-
required: boolean;
|
|
188
|
-
}[];
|
|
189
|
-
returnType: string;
|
|
190
|
-
returnDescription: string;
|
|
191
|
-
example: string;
|
|
192
|
-
};
|
|
193
|
-
deleteAccount: {
|
|
194
|
-
description: string;
|
|
195
|
-
parameters: {
|
|
196
|
-
name: string;
|
|
197
|
-
dataType: string;
|
|
198
|
-
description: string;
|
|
199
|
-
formInputType: string;
|
|
200
|
-
required: boolean;
|
|
201
|
-
}[];
|
|
202
|
-
returnType: string;
|
|
203
|
-
returnDescription: string;
|
|
204
|
-
example: string;
|
|
205
|
-
};
|
|
206
|
-
rtdbGet: {
|
|
207
|
-
description: string;
|
|
208
|
-
parameters: {
|
|
209
|
-
name: string;
|
|
210
|
-
dataType: string;
|
|
211
|
-
description: string;
|
|
212
|
-
formInputType: string;
|
|
213
|
-
required: boolean;
|
|
214
|
-
}[];
|
|
215
|
-
returnType: string;
|
|
216
|
-
returnDescription: string;
|
|
217
|
-
example: string;
|
|
218
|
-
};
|
|
219
|
-
rtdbSet: {
|
|
220
|
-
description: string;
|
|
221
|
-
parameters: {
|
|
222
|
-
name: string;
|
|
223
|
-
dataType: string;
|
|
224
|
-
description: string;
|
|
225
|
-
formInputType: string;
|
|
226
|
-
required: boolean;
|
|
227
|
-
}[];
|
|
228
|
-
returnType: string;
|
|
229
|
-
returnDescription: string;
|
|
230
|
-
example: string;
|
|
231
|
-
};
|
|
232
|
-
rtdbUpdate: {
|
|
233
|
-
description: string;
|
|
234
|
-
parameters: {
|
|
235
|
-
name: string;
|
|
236
|
-
dataType: string;
|
|
237
|
-
description: string;
|
|
238
|
-
formInputType: string;
|
|
239
|
-
required: boolean;
|
|
240
|
-
}[];
|
|
241
|
-
returnType: string;
|
|
242
|
-
returnDescription: string;
|
|
243
|
-
example: string;
|
|
244
|
-
};
|
|
245
|
-
rtdbPush: {
|
|
246
|
-
description: string;
|
|
247
|
-
parameters: {
|
|
248
|
-
name: string;
|
|
249
|
-
dataType: string;
|
|
250
|
-
description: string;
|
|
251
|
-
formInputType: string;
|
|
252
|
-
required: boolean;
|
|
253
|
-
}[];
|
|
254
|
-
returnType: string;
|
|
255
|
-
returnDescription: string;
|
|
256
|
-
example: string;
|
|
257
|
-
};
|
|
258
|
-
rtdbDelete: {
|
|
259
|
-
description: string;
|
|
260
|
-
parameters: {
|
|
261
|
-
name: string;
|
|
262
|
-
dataType: string;
|
|
263
|
-
description: string;
|
|
264
|
-
formInputType: string;
|
|
265
|
-
required: boolean;
|
|
266
|
-
}[];
|
|
267
|
-
returnType: string;
|
|
268
|
-
returnDescription: string;
|
|
269
|
-
example: string;
|
|
270
|
-
};
|
|
271
|
-
};
|
|
272
|
-
export declare const FirebaseModuleMetadata: {
|
|
273
|
-
description: string;
|
|
274
|
-
methods: string[];
|
|
275
|
-
category: string;
|
|
276
|
-
};
|
|
277
|
-
//# sourceMappingURL=firebase.d.ts.map
|
package/dist/firebase.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.d.ts","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AA4dlG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAK5D,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwLpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;CAIlC,CAAC"}
|
package/dist/firebase.js
DELETED
|
@@ -1,678 +0,0 @@
|
|
|
1
|
-
let credentials = null;
|
|
2
|
-
function getCredentials() {
|
|
3
|
-
if (!credentials)
|
|
4
|
-
throw new Error("Firebase not configured. Call firebase.setCredentials or firebase.setServiceToken first.");
|
|
5
|
-
return credentials;
|
|
6
|
-
}
|
|
7
|
-
function requireApiKey() {
|
|
8
|
-
const creds = getCredentials();
|
|
9
|
-
if (!creds.apiKey)
|
|
10
|
-
throw new Error("API key not set. Call firebase.setCredentials with projectId and apiKey.");
|
|
11
|
-
return { projectId: creds.projectId, apiKey: creds.apiKey };
|
|
12
|
-
}
|
|
13
|
-
function requireAccessToken() {
|
|
14
|
-
const creds = getCredentials();
|
|
15
|
-
if (!creds.accessToken)
|
|
16
|
-
throw new Error("Access token not set. Call firebase.setServiceToken with projectId and accessToken.");
|
|
17
|
-
return { projectId: creds.projectId, accessToken: creds.accessToken };
|
|
18
|
-
}
|
|
19
|
-
function getAuthHeader() {
|
|
20
|
-
const creds = getCredentials();
|
|
21
|
-
if (creds.accessToken)
|
|
22
|
-
return { Authorization: `Bearer ${creds.accessToken}` };
|
|
23
|
-
return {};
|
|
24
|
-
}
|
|
25
|
-
// --- Firestore helpers ---
|
|
26
|
-
const FIRESTORE_BASE = "https://firestore.googleapis.com/v1";
|
|
27
|
-
function firestoreUrl(projectId, path) {
|
|
28
|
-
return `${FIRESTORE_BASE}/projects/${projectId}/databases/(default)/documents/${path}`;
|
|
29
|
-
}
|
|
30
|
-
function toFirestoreValue(value) {
|
|
31
|
-
if (value === null || value === undefined)
|
|
32
|
-
return { nullValue: null };
|
|
33
|
-
if (typeof value === "boolean")
|
|
34
|
-
return { booleanValue: value };
|
|
35
|
-
if (typeof value === "number") {
|
|
36
|
-
if (Number.isInteger(value))
|
|
37
|
-
return { integerValue: String(value) };
|
|
38
|
-
return { doubleValue: value };
|
|
39
|
-
}
|
|
40
|
-
if (typeof value === "string")
|
|
41
|
-
return { stringValue: value };
|
|
42
|
-
if (Array.isArray(value))
|
|
43
|
-
return { arrayValue: { values: value.map(toFirestoreValue) } };
|
|
44
|
-
if (typeof value === "object") {
|
|
45
|
-
const fields = {};
|
|
46
|
-
for (const [k, v] of Object.entries(value)) {
|
|
47
|
-
fields[k] = toFirestoreValue(v);
|
|
48
|
-
}
|
|
49
|
-
return { mapValue: { fields } };
|
|
50
|
-
}
|
|
51
|
-
return { stringValue: String(value) };
|
|
52
|
-
}
|
|
53
|
-
function fromFirestoreValue(val) {
|
|
54
|
-
if ("nullValue" in val)
|
|
55
|
-
return null;
|
|
56
|
-
if ("booleanValue" in val)
|
|
57
|
-
return val.booleanValue;
|
|
58
|
-
if ("integerValue" in val)
|
|
59
|
-
return Number(val.integerValue);
|
|
60
|
-
if ("doubleValue" in val)
|
|
61
|
-
return val.doubleValue;
|
|
62
|
-
if ("stringValue" in val)
|
|
63
|
-
return val.stringValue;
|
|
64
|
-
if ("timestampValue" in val)
|
|
65
|
-
return val.timestampValue;
|
|
66
|
-
if ("geoPointValue" in val)
|
|
67
|
-
return val.geoPointValue;
|
|
68
|
-
if ("bytesValue" in val)
|
|
69
|
-
return val.bytesValue;
|
|
70
|
-
if ("referenceValue" in val)
|
|
71
|
-
return val.referenceValue;
|
|
72
|
-
if ("arrayValue" in val) {
|
|
73
|
-
const arr = val.arrayValue;
|
|
74
|
-
return (arr.values ?? []).map(fromFirestoreValue);
|
|
75
|
-
}
|
|
76
|
-
if ("mapValue" in val) {
|
|
77
|
-
const map = val.mapValue;
|
|
78
|
-
return fromFirestoreFields(map.fields ?? {});
|
|
79
|
-
}
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
function fromFirestoreFields(fields) {
|
|
83
|
-
const result = {};
|
|
84
|
-
for (const [k, v] of Object.entries(fields)) {
|
|
85
|
-
result[k] = fromFirestoreValue(v);
|
|
86
|
-
}
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
function fromFirestoreDocument(doc) {
|
|
90
|
-
const name = String(doc.name ?? "");
|
|
91
|
-
const parts = name.split("/");
|
|
92
|
-
const id = parts[parts.length - 1] ?? "";
|
|
93
|
-
const fields = (doc.fields ?? {});
|
|
94
|
-
return {
|
|
95
|
-
_id: id,
|
|
96
|
-
_path: name,
|
|
97
|
-
_createTime: doc.createTime ?? null,
|
|
98
|
-
_updateTime: doc.updateTime ?? null,
|
|
99
|
-
...fromFirestoreFields(fields),
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
function buildFirestoreFields(data) {
|
|
103
|
-
const obj = (typeof data === "object" && data !== null ? data : {});
|
|
104
|
-
const fields = {};
|
|
105
|
-
for (const [k, v] of Object.entries(obj)) {
|
|
106
|
-
fields[k] = toFirestoreValue(v);
|
|
107
|
-
}
|
|
108
|
-
return fields;
|
|
109
|
-
}
|
|
110
|
-
async function firebaseRequest(url, options = {}) {
|
|
111
|
-
const headers = {
|
|
112
|
-
"Content-Type": "application/json",
|
|
113
|
-
...getAuthHeader(),
|
|
114
|
-
...(options.headers ?? {}),
|
|
115
|
-
};
|
|
116
|
-
const response = await fetch(url, { ...options, headers });
|
|
117
|
-
const text = await response.text();
|
|
118
|
-
let body;
|
|
119
|
-
try {
|
|
120
|
-
body = JSON.parse(text);
|
|
121
|
-
}
|
|
122
|
-
catch {
|
|
123
|
-
body = text;
|
|
124
|
-
}
|
|
125
|
-
if (!response.ok) {
|
|
126
|
-
const errMsg = typeof body === "object" && body !== null && "error" in body
|
|
127
|
-
? JSON.stringify(body.error)
|
|
128
|
-
: String(body);
|
|
129
|
-
throw new Error(`Firebase API error (${response.status}): ${errMsg}`);
|
|
130
|
-
}
|
|
131
|
-
return body;
|
|
132
|
-
}
|
|
133
|
-
// --- Credential functions ---
|
|
134
|
-
const setCredentials = (args) => {
|
|
135
|
-
const projectId = String(args[0] ?? "");
|
|
136
|
-
const apiKey = String(args[1] ?? "");
|
|
137
|
-
if (!projectId)
|
|
138
|
-
throw new Error("projectId is required");
|
|
139
|
-
if (!apiKey)
|
|
140
|
-
throw new Error("apiKey is required");
|
|
141
|
-
credentials = { ...credentials, projectId, apiKey };
|
|
142
|
-
return { configured: true, projectId };
|
|
143
|
-
};
|
|
144
|
-
const setServiceToken = (args) => {
|
|
145
|
-
const projectId = String(args[0] ?? "");
|
|
146
|
-
const accessToken = String(args[1] ?? "");
|
|
147
|
-
if (!projectId)
|
|
148
|
-
throw new Error("projectId is required");
|
|
149
|
-
if (!accessToken)
|
|
150
|
-
throw new Error("accessToken is required");
|
|
151
|
-
credentials = { ...credentials, projectId, accessToken };
|
|
152
|
-
return { configured: true, projectId, hasAccessToken: true };
|
|
153
|
-
};
|
|
154
|
-
// --- Firestore CRUD ---
|
|
155
|
-
const getDocument = async (args) => {
|
|
156
|
-
const collection = String(args[0] ?? "");
|
|
157
|
-
const documentId = String(args[1] ?? "");
|
|
158
|
-
if (!collection || !documentId)
|
|
159
|
-
throw new Error("collection and documentId are required");
|
|
160
|
-
const { projectId } = requireAccessToken();
|
|
161
|
-
const url = firestoreUrl(projectId, `${collection}/${documentId}`);
|
|
162
|
-
const doc = await firebaseRequest(url);
|
|
163
|
-
return fromFirestoreDocument(doc);
|
|
164
|
-
};
|
|
165
|
-
const listDocuments = async (args) => {
|
|
166
|
-
const collection = String(args[0] ?? "");
|
|
167
|
-
if (!collection)
|
|
168
|
-
throw new Error("collection is required");
|
|
169
|
-
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
|
|
170
|
-
const { projectId } = requireAccessToken();
|
|
171
|
-
const params = new URLSearchParams();
|
|
172
|
-
if (opts.pageSize)
|
|
173
|
-
params.set("pageSize", String(opts.pageSize));
|
|
174
|
-
if (opts.pageToken)
|
|
175
|
-
params.set("pageToken", String(opts.pageToken));
|
|
176
|
-
if (opts.orderBy)
|
|
177
|
-
params.set("orderBy", String(opts.orderBy));
|
|
178
|
-
const qs = params.toString();
|
|
179
|
-
const url = firestoreUrl(projectId, collection) + (qs ? `?${qs}` : "");
|
|
180
|
-
const result = await firebaseRequest(url);
|
|
181
|
-
const documents = (result.documents ?? []);
|
|
182
|
-
return {
|
|
183
|
-
documents: documents.map(fromFirestoreDocument),
|
|
184
|
-
nextPageToken: result.nextPageToken ?? null,
|
|
185
|
-
};
|
|
186
|
-
};
|
|
187
|
-
const createDocument = async (args) => {
|
|
188
|
-
const collection = String(args[0] ?? "");
|
|
189
|
-
const fields = args[1];
|
|
190
|
-
const documentId = args[2] ? String(args[2]) : undefined;
|
|
191
|
-
if (!collection)
|
|
192
|
-
throw new Error("collection is required");
|
|
193
|
-
const { projectId } = requireAccessToken();
|
|
194
|
-
const params = new URLSearchParams();
|
|
195
|
-
if (documentId)
|
|
196
|
-
params.set("documentId", documentId);
|
|
197
|
-
const qs = params.toString();
|
|
198
|
-
const url = firestoreUrl(projectId, collection) + (qs ? `?${qs}` : "");
|
|
199
|
-
const body = { fields: buildFirestoreFields(fields) };
|
|
200
|
-
const doc = await firebaseRequest(url, { method: "POST", body: JSON.stringify(body) });
|
|
201
|
-
return fromFirestoreDocument(doc);
|
|
202
|
-
};
|
|
203
|
-
const updateDocument = async (args) => {
|
|
204
|
-
const collection = String(args[0] ?? "");
|
|
205
|
-
const documentId = String(args[1] ?? "");
|
|
206
|
-
const fields = args[2];
|
|
207
|
-
const updateMask = args[3];
|
|
208
|
-
if (!collection || !documentId)
|
|
209
|
-
throw new Error("collection and documentId are required");
|
|
210
|
-
const { projectId } = requireAccessToken();
|
|
211
|
-
const params = new URLSearchParams();
|
|
212
|
-
if (updateMask) {
|
|
213
|
-
const maskFields = Array.isArray(updateMask) ? updateMask : [updateMask];
|
|
214
|
-
for (const f of maskFields)
|
|
215
|
-
params.append("updateMask.fieldPaths", String(f));
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
const obj = (typeof fields === "object" && fields !== null ? fields : {});
|
|
219
|
-
for (const key of Object.keys(obj))
|
|
220
|
-
params.append("updateMask.fieldPaths", key);
|
|
221
|
-
}
|
|
222
|
-
const qs = params.toString();
|
|
223
|
-
const url = firestoreUrl(projectId, `${collection}/${documentId}`) + (qs ? `?${qs}` : "");
|
|
224
|
-
const body = { fields: buildFirestoreFields(fields) };
|
|
225
|
-
const doc = await firebaseRequest(url, { method: "PATCH", body: JSON.stringify(body) });
|
|
226
|
-
return fromFirestoreDocument(doc);
|
|
227
|
-
};
|
|
228
|
-
const deleteDocument = async (args) => {
|
|
229
|
-
const collection = String(args[0] ?? "");
|
|
230
|
-
const documentId = String(args[1] ?? "");
|
|
231
|
-
if (!collection || !documentId)
|
|
232
|
-
throw new Error("collection and documentId are required");
|
|
233
|
-
const { projectId } = requireAccessToken();
|
|
234
|
-
const url = firestoreUrl(projectId, `${collection}/${documentId}`);
|
|
235
|
-
await firebaseRequest(url, { method: "DELETE" });
|
|
236
|
-
return { deleted: true, collection, documentId };
|
|
237
|
-
};
|
|
238
|
-
const queryDocuments = async (args) => {
|
|
239
|
-
const collection = String(args[0] ?? "");
|
|
240
|
-
const query = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
|
|
241
|
-
if (!collection)
|
|
242
|
-
throw new Error("collection is required");
|
|
243
|
-
const { projectId } = requireAccessToken();
|
|
244
|
-
const url = `${FIRESTORE_BASE}/projects/${projectId}/databases/(default)/documents:runQuery`;
|
|
245
|
-
const structuredQuery = {
|
|
246
|
-
from: [{ collectionId: collection }],
|
|
247
|
-
};
|
|
248
|
-
if (query.where) {
|
|
249
|
-
const where = query.where;
|
|
250
|
-
const filters = [];
|
|
251
|
-
for (const [field, condition] of Object.entries(where)) {
|
|
252
|
-
if (typeof condition === "object" && condition !== null) {
|
|
253
|
-
for (const [op, val] of Object.entries(condition)) {
|
|
254
|
-
const opMap = {
|
|
255
|
-
"==": "EQUAL", "!=": "NOT_EQUAL",
|
|
256
|
-
"<": "LESS_THAN", "<=": "LESS_THAN_OR_EQUAL",
|
|
257
|
-
">": "GREATER_THAN", ">=": "GREATER_THAN_OR_EQUAL",
|
|
258
|
-
"in": "IN", "not-in": "NOT_IN",
|
|
259
|
-
"array-contains": "ARRAY_CONTAINS",
|
|
260
|
-
"array-contains-any": "ARRAY_CONTAINS_ANY",
|
|
261
|
-
};
|
|
262
|
-
const firestoreOp = opMap[op] ?? "EQUAL";
|
|
263
|
-
if (firestoreOp === "IN" || firestoreOp === "NOT_IN" || firestoreOp === "ARRAY_CONTAINS_ANY") {
|
|
264
|
-
const values = Array.isArray(val) ? val : [val];
|
|
265
|
-
filters.push({
|
|
266
|
-
fieldFilter: {
|
|
267
|
-
field: { fieldPath: field },
|
|
268
|
-
op: firestoreOp,
|
|
269
|
-
value: { arrayValue: { values: values.map(toFirestoreValue) } },
|
|
270
|
-
},
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
filters.push({
|
|
275
|
-
fieldFilter: {
|
|
276
|
-
field: { fieldPath: field },
|
|
277
|
-
op: firestoreOp,
|
|
278
|
-
value: toFirestoreValue(val),
|
|
279
|
-
},
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
filters.push({
|
|
286
|
-
fieldFilter: {
|
|
287
|
-
field: { fieldPath: field },
|
|
288
|
-
op: "EQUAL",
|
|
289
|
-
value: toFirestoreValue(condition),
|
|
290
|
-
},
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
if (filters.length === 1) {
|
|
295
|
-
structuredQuery.where = filters[0];
|
|
296
|
-
}
|
|
297
|
-
else if (filters.length > 1) {
|
|
298
|
-
structuredQuery.where = { compositeFilter: { op: "AND", filters } };
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
if (query.orderBy) {
|
|
302
|
-
const orderBy = Array.isArray(query.orderBy) ? query.orderBy : [query.orderBy];
|
|
303
|
-
structuredQuery.orderBy = orderBy.map((o) => {
|
|
304
|
-
if (typeof o === "string")
|
|
305
|
-
return { field: { fieldPath: o }, direction: "ASCENDING" };
|
|
306
|
-
const obj = o;
|
|
307
|
-
return { field: { fieldPath: String(obj.field ?? "") }, direction: String(obj.direction ?? "ASCENDING").toUpperCase() };
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
if (query.limit)
|
|
311
|
-
structuredQuery.limit = Number(query.limit);
|
|
312
|
-
if (query.offset)
|
|
313
|
-
structuredQuery.offset = Number(query.offset);
|
|
314
|
-
const body = { structuredQuery };
|
|
315
|
-
const results = await firebaseRequest(url, { method: "POST", body: JSON.stringify(body) });
|
|
316
|
-
return results
|
|
317
|
-
.filter((r) => r.document)
|
|
318
|
-
.map((r) => fromFirestoreDocument(r.document));
|
|
319
|
-
};
|
|
320
|
-
const batchGet = async (args) => {
|
|
321
|
-
const collection = String(args[0] ?? "");
|
|
322
|
-
const documentIds = (Array.isArray(args[1]) ? args[1] : []).map(String);
|
|
323
|
-
if (!collection || documentIds.length === 0)
|
|
324
|
-
throw new Error("collection and documentIds array are required");
|
|
325
|
-
const { projectId } = requireAccessToken();
|
|
326
|
-
const url = `${FIRESTORE_BASE}/projects/${projectId}/databases/(default)/documents:batchGet`;
|
|
327
|
-
const documents = documentIds.map((id) => `projects/${projectId}/databases/(default)/documents/${collection}/${id}`);
|
|
328
|
-
const body = { documents };
|
|
329
|
-
const results = await firebaseRequest(url, { method: "POST", body: JSON.stringify(body) });
|
|
330
|
-
return results.map((r) => {
|
|
331
|
-
if (r.found)
|
|
332
|
-
return fromFirestoreDocument(r.found);
|
|
333
|
-
if (r.missing)
|
|
334
|
-
return { _missing: true, _path: r.missing };
|
|
335
|
-
return null;
|
|
336
|
-
});
|
|
337
|
-
};
|
|
338
|
-
// --- Auth operations ---
|
|
339
|
-
const AUTH_BASE = "https://identitytoolkit.googleapis.com/v1";
|
|
340
|
-
async function authRequest(endpoint, body) {
|
|
341
|
-
const { apiKey } = requireApiKey();
|
|
342
|
-
const url = `${AUTH_BASE}/${endpoint}?key=${apiKey}`;
|
|
343
|
-
const response = await fetch(url, {
|
|
344
|
-
method: "POST",
|
|
345
|
-
headers: { "Content-Type": "application/json" },
|
|
346
|
-
body: JSON.stringify(body),
|
|
347
|
-
});
|
|
348
|
-
const text = await response.text();
|
|
349
|
-
let data;
|
|
350
|
-
try {
|
|
351
|
-
data = JSON.parse(text);
|
|
352
|
-
}
|
|
353
|
-
catch {
|
|
354
|
-
data = text;
|
|
355
|
-
}
|
|
356
|
-
if (!response.ok) {
|
|
357
|
-
const errMsg = typeof data === "object" && data !== null && "error" in data
|
|
358
|
-
? JSON.stringify(data.error)
|
|
359
|
-
: String(data);
|
|
360
|
-
throw new Error(`Firebase Auth error (${response.status}): ${errMsg}`);
|
|
361
|
-
}
|
|
362
|
-
return data;
|
|
363
|
-
}
|
|
364
|
-
const signUp = async (args) => {
|
|
365
|
-
const email = String(args[0] ?? "");
|
|
366
|
-
const password = String(args[1] ?? "");
|
|
367
|
-
if (!email || !password)
|
|
368
|
-
throw new Error("email and password are required");
|
|
369
|
-
const result = await authRequest("accounts:signUp", { email, password, returnSecureToken: true });
|
|
370
|
-
return { idToken: result.idToken, email: result.email, localId: result.localId, refreshToken: result.refreshToken, expiresIn: result.expiresIn };
|
|
371
|
-
};
|
|
372
|
-
const signIn = async (args) => {
|
|
373
|
-
const email = String(args[0] ?? "");
|
|
374
|
-
const password = String(args[1] ?? "");
|
|
375
|
-
if (!email || !password)
|
|
376
|
-
throw new Error("email and password are required");
|
|
377
|
-
const result = await authRequest("accounts:signInWithPassword", { email, password, returnSecureToken: true });
|
|
378
|
-
return { idToken: result.idToken, email: result.email, localId: result.localId, refreshToken: result.refreshToken, expiresIn: result.expiresIn, registered: result.registered };
|
|
379
|
-
};
|
|
380
|
-
const signInAnonymously = async () => {
|
|
381
|
-
const result = await authRequest("accounts:signUp", { returnSecureToken: true });
|
|
382
|
-
return { idToken: result.idToken, localId: result.localId, refreshToken: result.refreshToken, expiresIn: result.expiresIn };
|
|
383
|
-
};
|
|
384
|
-
const sendPasswordReset = async (args) => {
|
|
385
|
-
const email = String(args[0] ?? "");
|
|
386
|
-
if (!email)
|
|
387
|
-
throw new Error("email is required");
|
|
388
|
-
const result = await authRequest("accounts:sendOobCode", { requestType: "PASSWORD_RESET", email });
|
|
389
|
-
return { email: result.email, sent: true };
|
|
390
|
-
};
|
|
391
|
-
const verifyEmail = async (args) => {
|
|
392
|
-
const idToken = String(args[0] ?? "");
|
|
393
|
-
if (!idToken)
|
|
394
|
-
throw new Error("idToken is required");
|
|
395
|
-
const result = await authRequest("accounts:sendOobCode", { requestType: "VERIFY_EMAIL", idToken });
|
|
396
|
-
return { email: result.email, sent: true };
|
|
397
|
-
};
|
|
398
|
-
const getUserByToken = async (args) => {
|
|
399
|
-
const idToken = String(args[0] ?? "");
|
|
400
|
-
if (!idToken)
|
|
401
|
-
throw new Error("idToken is required");
|
|
402
|
-
const result = await authRequest("accounts:lookup", { idToken });
|
|
403
|
-
const users = (result.users ?? []);
|
|
404
|
-
if (users.length === 0)
|
|
405
|
-
throw new Error("No user found for the provided idToken");
|
|
406
|
-
const user = users[0];
|
|
407
|
-
return {
|
|
408
|
-
localId: user.localId, email: user.email, emailVerified: user.emailVerified,
|
|
409
|
-
displayName: user.displayName ?? null, photoUrl: user.photoUrl ?? null,
|
|
410
|
-
createdAt: user.createdAt ?? null, lastLoginAt: user.lastLoginAt ?? null,
|
|
411
|
-
providerUserInfo: user.providerUserInfo ?? [],
|
|
412
|
-
};
|
|
413
|
-
};
|
|
414
|
-
const deleteAccount = async (args) => {
|
|
415
|
-
const idToken = String(args[0] ?? "");
|
|
416
|
-
if (!idToken)
|
|
417
|
-
throw new Error("idToken is required");
|
|
418
|
-
await authRequest("accounts:delete", { idToken });
|
|
419
|
-
return { deleted: true };
|
|
420
|
-
};
|
|
421
|
-
// --- Realtime Database ---
|
|
422
|
-
function rtdbUrl(projectId, path, token) {
|
|
423
|
-
const cleanPath = path.replace(/^\/+|\/+$/g, "");
|
|
424
|
-
const base = `https://${projectId}-default-rtdb.firebaseio.com/${cleanPath}.json`;
|
|
425
|
-
if (token)
|
|
426
|
-
return `${base}?auth=${token}`;
|
|
427
|
-
return base;
|
|
428
|
-
}
|
|
429
|
-
function getRtdbAuth() {
|
|
430
|
-
const creds = getCredentials();
|
|
431
|
-
return { projectId: creds.projectId, token: creds.accessToken ?? creds.apiKey };
|
|
432
|
-
}
|
|
433
|
-
const rtdbGet = async (args) => {
|
|
434
|
-
const rtdbPath = String(args[0] ?? "");
|
|
435
|
-
const { projectId, token } = getRtdbAuth();
|
|
436
|
-
const url = rtdbUrl(projectId, rtdbPath, token);
|
|
437
|
-
const response = await fetch(url);
|
|
438
|
-
if (!response.ok)
|
|
439
|
-
throw new Error(`RTDB error (${response.status}): ${await response.text()}`);
|
|
440
|
-
return await response.json();
|
|
441
|
-
};
|
|
442
|
-
const rtdbSet = async (args) => {
|
|
443
|
-
const rtdbPath = String(args[0] ?? "");
|
|
444
|
-
const data = args[1];
|
|
445
|
-
const { projectId, token } = getRtdbAuth();
|
|
446
|
-
const url = rtdbUrl(projectId, rtdbPath, token);
|
|
447
|
-
const response = await fetch(url, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) });
|
|
448
|
-
if (!response.ok)
|
|
449
|
-
throw new Error(`RTDB error (${response.status}): ${await response.text()}`);
|
|
450
|
-
return await response.json();
|
|
451
|
-
};
|
|
452
|
-
const rtdbUpdate = async (args) => {
|
|
453
|
-
const rtdbPath = String(args[0] ?? "");
|
|
454
|
-
const data = args[1];
|
|
455
|
-
const { projectId, token } = getRtdbAuth();
|
|
456
|
-
const url = rtdbUrl(projectId, rtdbPath, token);
|
|
457
|
-
const response = await fetch(url, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) });
|
|
458
|
-
if (!response.ok)
|
|
459
|
-
throw new Error(`RTDB error (${response.status}): ${await response.text()}`);
|
|
460
|
-
return await response.json();
|
|
461
|
-
};
|
|
462
|
-
const rtdbPush = async (args) => {
|
|
463
|
-
const rtdbPath = String(args[0] ?? "");
|
|
464
|
-
const data = args[1];
|
|
465
|
-
const { projectId, token } = getRtdbAuth();
|
|
466
|
-
const url = rtdbUrl(projectId, rtdbPath, token);
|
|
467
|
-
const response = await fetch(url, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) });
|
|
468
|
-
if (!response.ok)
|
|
469
|
-
throw new Error(`RTDB error (${response.status}): ${await response.text()}`);
|
|
470
|
-
return await response.json();
|
|
471
|
-
};
|
|
472
|
-
const rtdbDelete = async (args) => {
|
|
473
|
-
const rtdbPath = String(args[0] ?? "");
|
|
474
|
-
const { projectId, token } = getRtdbAuth();
|
|
475
|
-
const url = rtdbUrl(projectId, rtdbPath, token);
|
|
476
|
-
const response = await fetch(url, { method: "DELETE" });
|
|
477
|
-
if (!response.ok)
|
|
478
|
-
throw new Error(`RTDB error (${response.status}): ${await response.text()}`);
|
|
479
|
-
return { deleted: true, path: rtdbPath };
|
|
480
|
-
};
|
|
481
|
-
// --- Exports ---
|
|
482
|
-
export const FirebaseFunctions = {
|
|
483
|
-
setCredentials, setServiceToken,
|
|
484
|
-
getDocument, listDocuments, createDocument, updateDocument, deleteDocument, queryDocuments, batchGet,
|
|
485
|
-
signUp, signIn, signInAnonymously, sendPasswordReset, verifyEmail, getUserByToken, deleteAccount,
|
|
486
|
-
rtdbGet, rtdbSet, rtdbUpdate, rtdbPush, rtdbDelete,
|
|
487
|
-
};
|
|
488
|
-
export const FirebaseFunctionMetadata = {
|
|
489
|
-
setCredentials: {
|
|
490
|
-
description: "Set Firebase project ID and API key for client-side REST operations",
|
|
491
|
-
parameters: [
|
|
492
|
-
{ name: "projectId", dataType: "string", description: "Firebase project ID", formInputType: "text", required: true },
|
|
493
|
-
{ name: "apiKey", dataType: "string", description: "Firebase Web API key", formInputType: "text", required: true },
|
|
494
|
-
],
|
|
495
|
-
returnType: "object", returnDescription: "{configured, projectId}",
|
|
496
|
-
example: 'firebase.setCredentials "my-project-id" "AIzaSy..."',
|
|
497
|
-
},
|
|
498
|
-
setServiceToken: {
|
|
499
|
-
description: "Set Firebase project ID and OAuth2 access token for admin operations",
|
|
500
|
-
parameters: [
|
|
501
|
-
{ name: "projectId", dataType: "string", description: "Firebase project ID", formInputType: "text", required: true },
|
|
502
|
-
{ name: "accessToken", dataType: "string", description: "OAuth2 access token", formInputType: "text", required: true },
|
|
503
|
-
],
|
|
504
|
-
returnType: "object", returnDescription: "{configured, projectId, hasAccessToken}",
|
|
505
|
-
example: 'firebase.setServiceToken "my-project-id" "ya29.a0..."',
|
|
506
|
-
},
|
|
507
|
-
getDocument: {
|
|
508
|
-
description: "Get a Firestore document by collection and document ID",
|
|
509
|
-
parameters: [
|
|
510
|
-
{ name: "collection", dataType: "string", description: "Collection name", formInputType: "text", required: true },
|
|
511
|
-
{ name: "documentId", dataType: "string", description: "Document ID", formInputType: "text", required: true },
|
|
512
|
-
],
|
|
513
|
-
returnType: "object", returnDescription: "Document with _id, _path, and fields",
|
|
514
|
-
example: 'firebase.getDocument "users" "user123"',
|
|
515
|
-
},
|
|
516
|
-
listDocuments: {
|
|
517
|
-
description: "List Firestore documents in a collection",
|
|
518
|
-
parameters: [
|
|
519
|
-
{ name: "collection", dataType: "string", description: "Collection name", formInputType: "text", required: true },
|
|
520
|
-
{ name: "options", dataType: "object", description: "{pageSize, pageToken, orderBy}", formInputType: "json", required: false },
|
|
521
|
-
],
|
|
522
|
-
returnType: "object", returnDescription: "{documents, nextPageToken}",
|
|
523
|
-
example: 'firebase.listDocuments "users" {"pageSize": 10}',
|
|
524
|
-
},
|
|
525
|
-
createDocument: {
|
|
526
|
-
description: "Create a Firestore document with auto or specified ID",
|
|
527
|
-
parameters: [
|
|
528
|
-
{ name: "collection", dataType: "string", description: "Collection name", formInputType: "text", required: true },
|
|
529
|
-
{ name: "fields", dataType: "object", description: "Document fields", formInputType: "json", required: true },
|
|
530
|
-
{ name: "documentId", dataType: "string", description: "Optional document ID (auto-generated if omitted)", formInputType: "text", required: false },
|
|
531
|
-
],
|
|
532
|
-
returnType: "object", returnDescription: "Created document with _id and fields",
|
|
533
|
-
example: 'firebase.createDocument "users" {"name": "Alice", "age": 30}',
|
|
534
|
-
},
|
|
535
|
-
updateDocument: {
|
|
536
|
-
description: "Update a Firestore document's fields",
|
|
537
|
-
parameters: [
|
|
538
|
-
{ name: "collection", dataType: "string", description: "Collection name", formInputType: "text", required: true },
|
|
539
|
-
{ name: "documentId", dataType: "string", description: "Document ID", formInputType: "text", required: true },
|
|
540
|
-
{ name: "fields", dataType: "object", description: "Fields to update", formInputType: "json", required: true },
|
|
541
|
-
{ name: "updateMask", dataType: "array", description: "Specific field paths to update (optional)", formInputType: "json", required: false },
|
|
542
|
-
],
|
|
543
|
-
returnType: "object", returnDescription: "Updated document",
|
|
544
|
-
example: 'firebase.updateDocument "users" "user123" {"name": "Bob"}',
|
|
545
|
-
},
|
|
546
|
-
deleteDocument: {
|
|
547
|
-
description: "Delete a Firestore document",
|
|
548
|
-
parameters: [
|
|
549
|
-
{ name: "collection", dataType: "string", description: "Collection name", formInputType: "text", required: true },
|
|
550
|
-
{ name: "documentId", dataType: "string", description: "Document ID", formInputType: "text", required: true },
|
|
551
|
-
],
|
|
552
|
-
returnType: "object", returnDescription: "{deleted, collection, documentId}",
|
|
553
|
-
example: 'firebase.deleteDocument "users" "user123"',
|
|
554
|
-
},
|
|
555
|
-
queryDocuments: {
|
|
556
|
-
description: "Query Firestore documents with structured query (where, orderBy, limit)",
|
|
557
|
-
parameters: [
|
|
558
|
-
{ name: "collection", dataType: "string", description: "Collection name", formInputType: "text", required: true },
|
|
559
|
-
{ name: "query", dataType: "object", description: "{where, orderBy, limit, offset}", formInputType: "json", required: true },
|
|
560
|
-
],
|
|
561
|
-
returnType: "array", returnDescription: "Array of matching documents",
|
|
562
|
-
example: 'firebase.queryDocuments "users" {"where": {"age": {">=": 18}}, "limit": 10}',
|
|
563
|
-
},
|
|
564
|
-
batchGet: {
|
|
565
|
-
description: "Get multiple Firestore documents by IDs",
|
|
566
|
-
parameters: [
|
|
567
|
-
{ name: "collection", dataType: "string", description: "Collection name", formInputType: "text", required: true },
|
|
568
|
-
{ name: "documentIds", dataType: "array", description: "Array of document IDs", formInputType: "json", required: true },
|
|
569
|
-
],
|
|
570
|
-
returnType: "array", returnDescription: "Array of documents (or {_missing: true} for not found)",
|
|
571
|
-
example: 'firebase.batchGet "users" ["user1", "user2", "user3"]',
|
|
572
|
-
},
|
|
573
|
-
signUp: {
|
|
574
|
-
description: "Create a new user with email and password",
|
|
575
|
-
parameters: [
|
|
576
|
-
{ name: "email", dataType: "string", description: "User email", formInputType: "text", required: true },
|
|
577
|
-
{ name: "password", dataType: "string", description: "User password", formInputType: "text", required: true },
|
|
578
|
-
],
|
|
579
|
-
returnType: "object", returnDescription: "{idToken, email, localId, refreshToken, expiresIn}",
|
|
580
|
-
example: 'firebase.signUp "user@example.com" "securePass123"',
|
|
581
|
-
},
|
|
582
|
-
signIn: {
|
|
583
|
-
description: "Sign in a user with email and password",
|
|
584
|
-
parameters: [
|
|
585
|
-
{ name: "email", dataType: "string", description: "User email", formInputType: "text", required: true },
|
|
586
|
-
{ name: "password", dataType: "string", description: "User password", formInputType: "text", required: true },
|
|
587
|
-
],
|
|
588
|
-
returnType: "object", returnDescription: "{idToken, email, localId, refreshToken, expiresIn, registered}",
|
|
589
|
-
example: 'firebase.signIn "user@example.com" "securePass123"',
|
|
590
|
-
},
|
|
591
|
-
signInAnonymously: {
|
|
592
|
-
description: "Sign in anonymously",
|
|
593
|
-
parameters: [],
|
|
594
|
-
returnType: "object", returnDescription: "{idToken, localId, refreshToken, expiresIn}",
|
|
595
|
-
example: "firebase.signInAnonymously",
|
|
596
|
-
},
|
|
597
|
-
sendPasswordReset: {
|
|
598
|
-
description: "Send a password reset email",
|
|
599
|
-
parameters: [
|
|
600
|
-
{ name: "email", dataType: "string", description: "User email", formInputType: "text", required: true },
|
|
601
|
-
],
|
|
602
|
-
returnType: "object", returnDescription: "{email, sent}",
|
|
603
|
-
example: 'firebase.sendPasswordReset "user@example.com"',
|
|
604
|
-
},
|
|
605
|
-
verifyEmail: {
|
|
606
|
-
description: "Send an email verification to the user",
|
|
607
|
-
parameters: [
|
|
608
|
-
{ name: "idToken", dataType: "string", description: "User ID token from sign in", formInputType: "text", required: true },
|
|
609
|
-
],
|
|
610
|
-
returnType: "object", returnDescription: "{email, sent}",
|
|
611
|
-
example: 'firebase.verifyEmail "eyJhbGciOi..."',
|
|
612
|
-
},
|
|
613
|
-
getUserByToken: {
|
|
614
|
-
description: "Get user data from an ID token",
|
|
615
|
-
parameters: [
|
|
616
|
-
{ name: "idToken", dataType: "string", description: "User ID token from sign in", formInputType: "text", required: true },
|
|
617
|
-
],
|
|
618
|
-
returnType: "object", returnDescription: "{localId, email, emailVerified, displayName, ...}",
|
|
619
|
-
example: 'firebase.getUserByToken "eyJhbGciOi..."',
|
|
620
|
-
},
|
|
621
|
-
deleteAccount: {
|
|
622
|
-
description: "Delete a user account",
|
|
623
|
-
parameters: [
|
|
624
|
-
{ name: "idToken", dataType: "string", description: "User ID token from sign in", formInputType: "text", required: true },
|
|
625
|
-
],
|
|
626
|
-
returnType: "object", returnDescription: "{deleted}",
|
|
627
|
-
example: 'firebase.deleteAccount "eyJhbGciOi..."',
|
|
628
|
-
},
|
|
629
|
-
rtdbGet: {
|
|
630
|
-
description: "Read data from Realtime Database at a path",
|
|
631
|
-
parameters: [
|
|
632
|
-
{ name: "path", dataType: "string", description: "Database path", formInputType: "text", required: true },
|
|
633
|
-
],
|
|
634
|
-
returnType: "any", returnDescription: "Data at the path",
|
|
635
|
-
example: 'firebase.rtdbGet "users/user123"',
|
|
636
|
-
},
|
|
637
|
-
rtdbSet: {
|
|
638
|
-
description: "Write data to Realtime Database at a path (overwrites)",
|
|
639
|
-
parameters: [
|
|
640
|
-
{ name: "path", dataType: "string", description: "Database path", formInputType: "text", required: true },
|
|
641
|
-
{ name: "data", dataType: "any", description: "Data to write", formInputType: "json", required: true },
|
|
642
|
-
],
|
|
643
|
-
returnType: "any", returnDescription: "Written data",
|
|
644
|
-
example: 'firebase.rtdbSet "users/user123" {"name": "Alice", "age": 30}',
|
|
645
|
-
},
|
|
646
|
-
rtdbUpdate: {
|
|
647
|
-
description: "Update data at a Realtime Database path (merge)",
|
|
648
|
-
parameters: [
|
|
649
|
-
{ name: "path", dataType: "string", description: "Database path", formInputType: "text", required: true },
|
|
650
|
-
{ name: "data", dataType: "object", description: "Fields to update", formInputType: "json", required: true },
|
|
651
|
-
],
|
|
652
|
-
returnType: "any", returnDescription: "Updated data",
|
|
653
|
-
example: 'firebase.rtdbUpdate "users/user123" {"age": 31}',
|
|
654
|
-
},
|
|
655
|
-
rtdbPush: {
|
|
656
|
-
description: "Push a new child to a Realtime Database path",
|
|
657
|
-
parameters: [
|
|
658
|
-
{ name: "path", dataType: "string", description: "Database path", formInputType: "text", required: true },
|
|
659
|
-
{ name: "data", dataType: "any", description: "Data for the new child", formInputType: "json", required: true },
|
|
660
|
-
],
|
|
661
|
-
returnType: "object", returnDescription: "{name} with the generated key",
|
|
662
|
-
example: 'firebase.rtdbPush "messages" {"text": "Hello", "sender": "Alice"}',
|
|
663
|
-
},
|
|
664
|
-
rtdbDelete: {
|
|
665
|
-
description: "Delete data at a Realtime Database path",
|
|
666
|
-
parameters: [
|
|
667
|
-
{ name: "path", dataType: "string", description: "Database path", formInputType: "text", required: true },
|
|
668
|
-
],
|
|
669
|
-
returnType: "object", returnDescription: "{deleted, path}",
|
|
670
|
-
example: 'firebase.rtdbDelete "users/user123"',
|
|
671
|
-
},
|
|
672
|
-
};
|
|
673
|
-
export const FirebaseModuleMetadata = {
|
|
674
|
-
description: "Firebase REST API client for Firestore, Authentication, and Realtime Database operations",
|
|
675
|
-
methods: Object.keys(FirebaseFunctions),
|
|
676
|
-
category: "cloud",
|
|
677
|
-
};
|
|
678
|
-
//# sourceMappingURL=firebase.js.map
|
package/dist/firebase.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { ModuleAdapter } from "@wiredwp/robinpath";
|
|
2
|
-
declare const FirebaseModule: ModuleAdapter;
|
|
3
|
-
export default FirebaseModule;
|
|
4
|
-
export { FirebaseModule };
|
|
5
|
-
export { FirebaseFunctions, FirebaseFunctionMetadata, FirebaseModuleMetadata } from "./firebase.js";
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,cAAc,EAAE,aAMrB,CAAC;AAEF,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FirebaseFunctions, FirebaseFunctionMetadata, FirebaseModuleMetadata } from "./firebase.js";
|
|
2
|
-
const FirebaseModule = {
|
|
3
|
-
name: "firebase",
|
|
4
|
-
functions: FirebaseFunctions,
|
|
5
|
-
functionMetadata: FirebaseFunctionMetadata,
|
|
6
|
-
moduleMetadata: FirebaseModuleMetadata,
|
|
7
|
-
global: false,
|
|
8
|
-
}; // as ModuleAdapter
|
|
9
|
-
export default FirebaseModule;
|
|
10
|
-
export { FirebaseModule };
|
|
11
|
-
export { FirebaseFunctions, FirebaseFunctionMetadata, FirebaseModuleMetadata } from "./firebase.js";
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEpG,MAAM,cAAc,GAAkB;IACpC,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,iBAAiB;IAC5B,gBAAgB,EAAE,wBAA+B;IACjD,cAAc,EAAE,sBAA6B;IAC7C,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
|