@insforge/sdk 0.0.58-dev.0 → 0.0.58-dev.10
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/LICENSE +201 -201
- package/README.md +249 -249
- package/dist/index.d.mts +76 -41
- package/dist/index.d.ts +76 -41
- package/dist/index.js +138 -62
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +138 -62
- package/dist/index.mjs.map +1 -1
- package/package.json +67 -67
package/README.md
CHANGED
|
@@ -1,249 +1,249 @@
|
|
|
1
|
-
# insforge-sdk-js
|
|
2
|
-
|
|
3
|
-
[](https://www.npmjs.com/package/@insforge/sdk)
|
|
4
|
-
[](https://opensource.org/licenses/Apache-2.0)
|
|
5
|
-
|
|
6
|
-
Official TypeScript/JavaScript SDK for [InsForge](https://github.com/InsForge/InsForge) - A powerful, open-source Backend-as-a-Service (BaaS) platform.
|
|
7
|
-
|
|
8
|
-
## Features
|
|
9
|
-
|
|
10
|
-
- **Authentication** - Email/password, OAuth (Google, GitHub), session management
|
|
11
|
-
- **Database** - Full PostgreSQL database access with PostgREST
|
|
12
|
-
- **Storage** - File upload and management with S3-compatible storage
|
|
13
|
-
- **Edge Functions** - Serverless function invocation
|
|
14
|
-
- **AI Integration** - Built-in AI capabilities
|
|
15
|
-
- **TypeScript** - Full TypeScript support with type definitions
|
|
16
|
-
- **Automatic OAuth Handling** - Seamless OAuth callback detection
|
|
17
|
-
|
|
18
|
-
## Installation
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npm install @insforge/sdk
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Or with yarn:
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
yarn add @insforge/sdk
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## Quick Start
|
|
31
|
-
|
|
32
|
-
### Initialize the Client
|
|
33
|
-
|
|
34
|
-
```javascript
|
|
35
|
-
import { createClient } from '@insforge/sdk';
|
|
36
|
-
|
|
37
|
-
const insforge = createClient({
|
|
38
|
-
baseUrl: 'http://localhost:7130' // Your InsForge backend URL
|
|
39
|
-
});
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Authentication
|
|
43
|
-
|
|
44
|
-
```javascript
|
|
45
|
-
// Sign up a new user
|
|
46
|
-
const { data, error } = await insforge.auth.signUp({
|
|
47
|
-
email: 'user@example.com',
|
|
48
|
-
password: 'securePassword123',
|
|
49
|
-
name: 'John Doe' // optional
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// Sign in with email/password
|
|
53
|
-
const { data, error } = await insforge.auth.signInWithPassword({
|
|
54
|
-
email: 'user@example.com',
|
|
55
|
-
password: 'securePassword123'
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// OAuth authentication (Google, GitHub)
|
|
59
|
-
await insforge.auth.signInWithOAuth({
|
|
60
|
-
provider: 'google',
|
|
61
|
-
redirectTo: 'http://localhost:3000/dashboard'
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
// Get current user
|
|
65
|
-
const { data: user } = await insforge.auth.getCurrentUser();
|
|
66
|
-
|
|
67
|
-
// Sign out
|
|
68
|
-
await insforge.auth.signOut();
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Database Operations
|
|
72
|
-
|
|
73
|
-
```javascript
|
|
74
|
-
// Insert data
|
|
75
|
-
const { data, error } = await insforge.database
|
|
76
|
-
.from('posts')
|
|
77
|
-
.insert([
|
|
78
|
-
{ title: 'My First Post', content: 'Hello World!' }
|
|
79
|
-
]);
|
|
80
|
-
|
|
81
|
-
// Query data
|
|
82
|
-
const { data, error } = await insforge.database
|
|
83
|
-
.from('posts')
|
|
84
|
-
.select('*')
|
|
85
|
-
.eq('author_id', userId);
|
|
86
|
-
|
|
87
|
-
// Update data
|
|
88
|
-
const { data, error } = await insforge.database
|
|
89
|
-
.from('posts')
|
|
90
|
-
.update({ title: 'Updated Title' })
|
|
91
|
-
.eq('id', postId);
|
|
92
|
-
|
|
93
|
-
// Delete data
|
|
94
|
-
const { data, error } = await insforge.database
|
|
95
|
-
.from('posts')
|
|
96
|
-
.delete()
|
|
97
|
-
.eq('id', postId);
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### File Storage
|
|
101
|
-
|
|
102
|
-
```javascript
|
|
103
|
-
// Upload a file
|
|
104
|
-
const file = document.querySelector('input[type="file"]').files[0];
|
|
105
|
-
const { data, error } = await insforge.storage
|
|
106
|
-
.from('avatars')
|
|
107
|
-
.upload(file);
|
|
108
|
-
|
|
109
|
-
// Download a file
|
|
110
|
-
const { data, error } = await insforge.storage
|
|
111
|
-
.from('avatars')
|
|
112
|
-
.download('user-avatar.png');
|
|
113
|
-
|
|
114
|
-
// Delete a file
|
|
115
|
-
const { data, error } = await insforge.storage
|
|
116
|
-
.from('avatars')
|
|
117
|
-
.remove(['user-avatar.png']);
|
|
118
|
-
|
|
119
|
-
// List files
|
|
120
|
-
const { data, error } = await insforge.storage
|
|
121
|
-
.from('avatars')
|
|
122
|
-
.list();
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### Edge Functions
|
|
126
|
-
|
|
127
|
-
```javascript
|
|
128
|
-
// Invoke an edge function
|
|
129
|
-
const { data, error } = await insforge.functions.invoke('my-function', {
|
|
130
|
-
body: { key: 'value' }
|
|
131
|
-
});
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### AI Integration
|
|
135
|
-
|
|
136
|
-
```javascript
|
|
137
|
-
// Generate text completion
|
|
138
|
-
const { data, error } = await insforge.ai.completion({
|
|
139
|
-
model: 'gpt-3.5-turbo',
|
|
140
|
-
prompt: 'Write a hello world program'
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
// Analyze an image
|
|
144
|
-
const { data, error } = await insforge.ai.vision({
|
|
145
|
-
imageUrl: 'https://example.com/image.jpg',
|
|
146
|
-
prompt: 'Describe this image'
|
|
147
|
-
});
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## Documentation
|
|
151
|
-
|
|
152
|
-
For complete API reference and advanced usage, see:
|
|
153
|
-
|
|
154
|
-
- **[SDK Reference](./SDK-REFERENCE.md)** - Complete API documentation
|
|
155
|
-
- **[InsForge Main Repository](https://github.com/InsForge/InsForge)** - Backend platform and setup guides
|
|
156
|
-
|
|
157
|
-
## Configuration
|
|
158
|
-
|
|
159
|
-
The SDK supports the following configuration options:
|
|
160
|
-
|
|
161
|
-
```javascript
|
|
162
|
-
const insforge = createClient({
|
|
163
|
-
baseUrl: 'http://localhost:7130', // Required: Your InsForge backend URL
|
|
164
|
-
storageStrategy: 'localStorage' // Optional: 'localStorage' or 'memory' (default: 'localStorage')
|
|
165
|
-
});
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## TypeScript Support
|
|
169
|
-
|
|
170
|
-
The SDK is written in TypeScript and provides full type definitions:
|
|
171
|
-
|
|
172
|
-
```typescript
|
|
173
|
-
import { createClient, InsForgeClient, User, Session } from '@insforge/sdk';
|
|
174
|
-
|
|
175
|
-
const insforge: InsForgeClient = createClient({
|
|
176
|
-
baseUrl: 'http://localhost:7130'
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
// Type-safe API calls
|
|
180
|
-
const response: { data: User | null; error: Error | null } =
|
|
181
|
-
await insforge.auth.getCurrentUser();
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
## Error Handling
|
|
185
|
-
|
|
186
|
-
All SDK methods return a consistent response format:
|
|
187
|
-
|
|
188
|
-
```javascript
|
|
189
|
-
const { data, error } = await insforge.auth.signUp({...});
|
|
190
|
-
|
|
191
|
-
if (error) {
|
|
192
|
-
console.error('Error:', error.message);
|
|
193
|
-
console.error('Status:', error.statusCode);
|
|
194
|
-
} else {
|
|
195
|
-
console.log('Success:', data);
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
## Browser Support
|
|
200
|
-
|
|
201
|
-
The SDK works in all modern browsers that support:
|
|
202
|
-
- ES6+ features
|
|
203
|
-
- Fetch API
|
|
204
|
-
- LocalStorage (for session management)
|
|
205
|
-
|
|
206
|
-
For Node.js environments, ensure you're using Node.js 18 or higher.
|
|
207
|
-
|
|
208
|
-
## Contributing
|
|
209
|
-
|
|
210
|
-
We welcome contributions! Please see our [Contributing Guide](./CONTRIBUTING.md) for details.
|
|
211
|
-
|
|
212
|
-
### Development Setup
|
|
213
|
-
|
|
214
|
-
```bash
|
|
215
|
-
# Clone the repository
|
|
216
|
-
git clone https://github.com/InsForge/insforge-sdk-js.git
|
|
217
|
-
cd insforge-sdk-js
|
|
218
|
-
|
|
219
|
-
# Install dependencies
|
|
220
|
-
npm install
|
|
221
|
-
|
|
222
|
-
# Build the SDK
|
|
223
|
-
npm run build
|
|
224
|
-
|
|
225
|
-
# Run tests
|
|
226
|
-
npm test
|
|
227
|
-
|
|
228
|
-
# Run integration tests
|
|
229
|
-
npm run test:integration
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
## License
|
|
233
|
-
|
|
234
|
-
This project is licensed under the Apache License 2.0 - see the [LICENSE](./LICENSE) file for details.
|
|
235
|
-
|
|
236
|
-
## Community & Support
|
|
237
|
-
|
|
238
|
-
- **GitHub Issues**: [Report bugs or request features](https://github.com/InsForge/insforge-sdk-js/issues)
|
|
239
|
-
- **Documentation**: [https://docs.insforge.com](https://docs.insforge.com)
|
|
240
|
-
- **Main Repository**: [InsForge Backend Platform](https://github.com/InsForge/InsForge)
|
|
241
|
-
|
|
242
|
-
## Related Projects
|
|
243
|
-
|
|
244
|
-
- **[InsForge](https://github.com/InsForge/InsForge)** - The main InsForge backend platform
|
|
245
|
-
- **[InsForge MCP](https://github.com/InsForge/insforge-mcp)** - Model Context Protocol server for InsForge
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
Built with ❤️ by the InsForge team
|
|
1
|
+
# insforge-sdk-js
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@insforge/sdk)
|
|
4
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
5
|
+
|
|
6
|
+
Official TypeScript/JavaScript SDK for [InsForge](https://github.com/InsForge/InsForge) - A powerful, open-source Backend-as-a-Service (BaaS) platform.
|
|
7
|
+
|
|
8
|
+
## Features
|
|
9
|
+
|
|
10
|
+
- **Authentication** - Email/password, OAuth (Google, GitHub), session management
|
|
11
|
+
- **Database** - Full PostgreSQL database access with PostgREST
|
|
12
|
+
- **Storage** - File upload and management with S3-compatible storage
|
|
13
|
+
- **Edge Functions** - Serverless function invocation
|
|
14
|
+
- **AI Integration** - Built-in AI capabilities
|
|
15
|
+
- **TypeScript** - Full TypeScript support with type definitions
|
|
16
|
+
- **Automatic OAuth Handling** - Seamless OAuth callback detection
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @insforge/sdk
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Or with yarn:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
yarn add @insforge/sdk
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
### Initialize the Client
|
|
33
|
+
|
|
34
|
+
```javascript
|
|
35
|
+
import { createClient } from '@insforge/sdk';
|
|
36
|
+
|
|
37
|
+
const insforge = createClient({
|
|
38
|
+
baseUrl: 'http://localhost:7130' // Your InsForge backend URL
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Authentication
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
// Sign up a new user
|
|
46
|
+
const { data, error } = await insforge.auth.signUp({
|
|
47
|
+
email: 'user@example.com',
|
|
48
|
+
password: 'securePassword123',
|
|
49
|
+
name: 'John Doe' // optional
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Sign in with email/password
|
|
53
|
+
const { data, error } = await insforge.auth.signInWithPassword({
|
|
54
|
+
email: 'user@example.com',
|
|
55
|
+
password: 'securePassword123'
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// OAuth authentication (Google, GitHub)
|
|
59
|
+
await insforge.auth.signInWithOAuth({
|
|
60
|
+
provider: 'google',
|
|
61
|
+
redirectTo: 'http://localhost:3000/dashboard'
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Get current user
|
|
65
|
+
const { data: user } = await insforge.auth.getCurrentUser();
|
|
66
|
+
|
|
67
|
+
// Sign out
|
|
68
|
+
await insforge.auth.signOut();
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Database Operations
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
// Insert data
|
|
75
|
+
const { data, error } = await insforge.database
|
|
76
|
+
.from('posts')
|
|
77
|
+
.insert([
|
|
78
|
+
{ title: 'My First Post', content: 'Hello World!' }
|
|
79
|
+
]);
|
|
80
|
+
|
|
81
|
+
// Query data
|
|
82
|
+
const { data, error } = await insforge.database
|
|
83
|
+
.from('posts')
|
|
84
|
+
.select('*')
|
|
85
|
+
.eq('author_id', userId);
|
|
86
|
+
|
|
87
|
+
// Update data
|
|
88
|
+
const { data, error } = await insforge.database
|
|
89
|
+
.from('posts')
|
|
90
|
+
.update({ title: 'Updated Title' })
|
|
91
|
+
.eq('id', postId);
|
|
92
|
+
|
|
93
|
+
// Delete data
|
|
94
|
+
const { data, error } = await insforge.database
|
|
95
|
+
.from('posts')
|
|
96
|
+
.delete()
|
|
97
|
+
.eq('id', postId);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### File Storage
|
|
101
|
+
|
|
102
|
+
```javascript
|
|
103
|
+
// Upload a file
|
|
104
|
+
const file = document.querySelector('input[type="file"]').files[0];
|
|
105
|
+
const { data, error } = await insforge.storage
|
|
106
|
+
.from('avatars')
|
|
107
|
+
.upload(file);
|
|
108
|
+
|
|
109
|
+
// Download a file
|
|
110
|
+
const { data, error } = await insforge.storage
|
|
111
|
+
.from('avatars')
|
|
112
|
+
.download('user-avatar.png');
|
|
113
|
+
|
|
114
|
+
// Delete a file
|
|
115
|
+
const { data, error } = await insforge.storage
|
|
116
|
+
.from('avatars')
|
|
117
|
+
.remove(['user-avatar.png']);
|
|
118
|
+
|
|
119
|
+
// List files
|
|
120
|
+
const { data, error } = await insforge.storage
|
|
121
|
+
.from('avatars')
|
|
122
|
+
.list();
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Edge Functions
|
|
126
|
+
|
|
127
|
+
```javascript
|
|
128
|
+
// Invoke an edge function
|
|
129
|
+
const { data, error } = await insforge.functions.invoke('my-function', {
|
|
130
|
+
body: { key: 'value' }
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### AI Integration
|
|
135
|
+
|
|
136
|
+
```javascript
|
|
137
|
+
// Generate text completion
|
|
138
|
+
const { data, error } = await insforge.ai.completion({
|
|
139
|
+
model: 'gpt-3.5-turbo',
|
|
140
|
+
prompt: 'Write a hello world program'
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// Analyze an image
|
|
144
|
+
const { data, error } = await insforge.ai.vision({
|
|
145
|
+
imageUrl: 'https://example.com/image.jpg',
|
|
146
|
+
prompt: 'Describe this image'
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Documentation
|
|
151
|
+
|
|
152
|
+
For complete API reference and advanced usage, see:
|
|
153
|
+
|
|
154
|
+
- **[SDK Reference](./SDK-REFERENCE.md)** - Complete API documentation
|
|
155
|
+
- **[InsForge Main Repository](https://github.com/InsForge/InsForge)** - Backend platform and setup guides
|
|
156
|
+
|
|
157
|
+
## Configuration
|
|
158
|
+
|
|
159
|
+
The SDK supports the following configuration options:
|
|
160
|
+
|
|
161
|
+
```javascript
|
|
162
|
+
const insforge = createClient({
|
|
163
|
+
baseUrl: 'http://localhost:7130', // Required: Your InsForge backend URL
|
|
164
|
+
storageStrategy: 'localStorage' // Optional: 'localStorage' or 'memory' (default: 'localStorage')
|
|
165
|
+
});
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## TypeScript Support
|
|
169
|
+
|
|
170
|
+
The SDK is written in TypeScript and provides full type definitions:
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
import { createClient, InsForgeClient, User, Session } from '@insforge/sdk';
|
|
174
|
+
|
|
175
|
+
const insforge: InsForgeClient = createClient({
|
|
176
|
+
baseUrl: 'http://localhost:7130'
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// Type-safe API calls
|
|
180
|
+
const response: { data: User | null; error: Error | null } =
|
|
181
|
+
await insforge.auth.getCurrentUser();
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Error Handling
|
|
185
|
+
|
|
186
|
+
All SDK methods return a consistent response format:
|
|
187
|
+
|
|
188
|
+
```javascript
|
|
189
|
+
const { data, error } = await insforge.auth.signUp({...});
|
|
190
|
+
|
|
191
|
+
if (error) {
|
|
192
|
+
console.error('Error:', error.message);
|
|
193
|
+
console.error('Status:', error.statusCode);
|
|
194
|
+
} else {
|
|
195
|
+
console.log('Success:', data);
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Browser Support
|
|
200
|
+
|
|
201
|
+
The SDK works in all modern browsers that support:
|
|
202
|
+
- ES6+ features
|
|
203
|
+
- Fetch API
|
|
204
|
+
- LocalStorage (for session management)
|
|
205
|
+
|
|
206
|
+
For Node.js environments, ensure you're using Node.js 18 or higher.
|
|
207
|
+
|
|
208
|
+
## Contributing
|
|
209
|
+
|
|
210
|
+
We welcome contributions! Please see our [Contributing Guide](./CONTRIBUTING.md) for details.
|
|
211
|
+
|
|
212
|
+
### Development Setup
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Clone the repository
|
|
216
|
+
git clone https://github.com/InsForge/insforge-sdk-js.git
|
|
217
|
+
cd insforge-sdk-js
|
|
218
|
+
|
|
219
|
+
# Install dependencies
|
|
220
|
+
npm install
|
|
221
|
+
|
|
222
|
+
# Build the SDK
|
|
223
|
+
npm run build
|
|
224
|
+
|
|
225
|
+
# Run tests
|
|
226
|
+
npm test
|
|
227
|
+
|
|
228
|
+
# Run integration tests
|
|
229
|
+
npm run test:integration
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## License
|
|
233
|
+
|
|
234
|
+
This project is licensed under the Apache License 2.0 - see the [LICENSE](./LICENSE) file for details.
|
|
235
|
+
|
|
236
|
+
## Community & Support
|
|
237
|
+
|
|
238
|
+
- **GitHub Issues**: [Report bugs or request features](https://github.com/InsForge/insforge-sdk-js/issues)
|
|
239
|
+
- **Documentation**: [https://docs.insforge.com](https://docs.insforge.com)
|
|
240
|
+
- **Main Repository**: [InsForge Backend Platform](https://github.com/InsForge/InsForge)
|
|
241
|
+
|
|
242
|
+
## Related Projects
|
|
243
|
+
|
|
244
|
+
- **[InsForge](https://github.com/InsForge/InsForge)** - The main InsForge backend platform
|
|
245
|
+
- **[InsForge MCP](https://github.com/InsForge/insforge-mcp)** - Model Context Protocol server for InsForge
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
Built with ❤️ by the InsForge team
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UserSchema, CreateUserRequest, CreateUserResponse, CreateSessionRequest, CreateSessionResponse, OAuthProvidersSchema, StorageFileSchema, ListObjectsResponseSchema, ChatCompletionRequest, ImageGenerationRequest } from '@insforge/shared-schemas';
|
|
1
|
+
import { UserSchema, CreateUserRequest, CreateUserResponse, CreateSessionRequest, CreateSessionResponse, OAuthProvidersSchema, GetPublicAuthConfigResponse, UserIdSchema, EmailSchema, RoleSchema, StorageFileSchema, ListObjectsResponseSchema, ChatCompletionRequest, ImageGenerationRequest } from '@insforge/shared-schemas';
|
|
2
2
|
export { AuthErrorResponse, CreateSessionRequest, CreateUserRequest, UserSchema } from '@insforge/shared-schemas';
|
|
3
3
|
import * as _supabase_postgrest_js from '@supabase/postgrest-js';
|
|
4
4
|
|
|
@@ -106,6 +106,21 @@ declare class TokenManager {
|
|
|
106
106
|
* Uses shared schemas for type safety
|
|
107
107
|
*/
|
|
108
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Dynamic profile type - represents flexible profile data from database
|
|
111
|
+
* Fields can vary based on database schema configuration.
|
|
112
|
+
* All fields are converted from snake_case (database) to camelCase (API)
|
|
113
|
+
*/
|
|
114
|
+
type ProfileData = Record<string, any> & {
|
|
115
|
+
id: string;
|
|
116
|
+
createdAt?: string;
|
|
117
|
+
updatedAt?: string;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Dynamic profile update type - for updating profile fields
|
|
121
|
+
* Supports any fields that exist in the profile table
|
|
122
|
+
*/
|
|
123
|
+
type UpdateProfileData = Partial<Record<string, any>>;
|
|
109
124
|
declare class Auth {
|
|
110
125
|
private http;
|
|
111
126
|
private tokenManager;
|
|
@@ -151,23 +166,47 @@ declare class Auth {
|
|
|
151
166
|
signOut(): Promise<{
|
|
152
167
|
error: InsForgeError | null;
|
|
153
168
|
}>;
|
|
169
|
+
/**
|
|
170
|
+
* Get all public authentication configuration (OAuth + Email)
|
|
171
|
+
* Returns both OAuth providers and email authentication settings in one request
|
|
172
|
+
* This is a public endpoint that doesn't require authentication
|
|
173
|
+
*
|
|
174
|
+
* @returns Complete public authentication configuration including OAuth providers and email auth settings
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```ts
|
|
178
|
+
* const { data, error } = await insforge.auth.getPublicAuthConfig();
|
|
179
|
+
* if (data) {
|
|
180
|
+
* console.log(`OAuth providers: ${data.oauth.data.length}`);
|
|
181
|
+
* console.log(`Password min length: ${data.email.passwordMinLength}`);
|
|
182
|
+
* }
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
getPublicAuthConfig(): Promise<{
|
|
186
|
+
data: GetPublicAuthConfigResponse | null;
|
|
187
|
+
error: InsForgeError | null;
|
|
188
|
+
}>;
|
|
154
189
|
/**
|
|
155
190
|
* Get the current user with full profile information
|
|
156
|
-
* Returns both auth info (id, email, role) and profile data (
|
|
191
|
+
* Returns both auth info (id, email, role) and profile data (dynamic fields from users table)
|
|
157
192
|
*/
|
|
158
193
|
getCurrentUser(): Promise<{
|
|
159
194
|
data: {
|
|
160
|
-
user:
|
|
161
|
-
|
|
195
|
+
user: {
|
|
196
|
+
id: UserIdSchema;
|
|
197
|
+
email: EmailSchema;
|
|
198
|
+
role: RoleSchema;
|
|
199
|
+
};
|
|
200
|
+
profile: ProfileData | null;
|
|
162
201
|
} | null;
|
|
163
202
|
error: any | null;
|
|
164
203
|
}>;
|
|
165
204
|
/**
|
|
166
205
|
* Get any user's profile by ID
|
|
167
|
-
* Returns profile information from the users table (
|
|
206
|
+
* Returns profile information from the users table (dynamic fields)
|
|
168
207
|
*/
|
|
169
208
|
getProfile(userId: string): Promise<{
|
|
170
|
-
data:
|
|
209
|
+
data: ProfileData | null;
|
|
171
210
|
error: any | null;
|
|
172
211
|
}>;
|
|
173
212
|
/**
|
|
@@ -182,24 +221,19 @@ declare class Auth {
|
|
|
182
221
|
};
|
|
183
222
|
/**
|
|
184
223
|
* Set/Update the current user's profile
|
|
185
|
-
* Updates profile information in the users table (
|
|
186
|
-
*/
|
|
187
|
-
setProfile(profile: {
|
|
188
|
-
|
|
189
|
-
avatar_url?: string;
|
|
190
|
-
bio?: string;
|
|
191
|
-
birthday?: string;
|
|
192
|
-
[key: string]: any;
|
|
193
|
-
}): Promise<{
|
|
194
|
-
data: any | null;
|
|
224
|
+
* Updates profile information in the users table (supports any dynamic fields)
|
|
225
|
+
*/
|
|
226
|
+
setProfile(profile: UpdateProfileData): Promise<{
|
|
227
|
+
data: ProfileData | null;
|
|
195
228
|
error: any | null;
|
|
196
229
|
}>;
|
|
197
230
|
/**
|
|
198
|
-
* Send
|
|
199
|
-
*
|
|
200
|
-
* @param email - Email address to send verification to
|
|
231
|
+
* Send password reset code to user's email
|
|
232
|
+
* Always returns success to prevent user enumeration
|
|
201
233
|
*/
|
|
202
|
-
|
|
234
|
+
sendPasswordResetCode(request: {
|
|
235
|
+
email: string;
|
|
236
|
+
}): Promise<{
|
|
203
237
|
data: {
|
|
204
238
|
success: boolean;
|
|
205
239
|
message: string;
|
|
@@ -207,38 +241,39 @@ declare class Auth {
|
|
|
207
241
|
error: InsForgeError | null;
|
|
208
242
|
}>;
|
|
209
243
|
/**
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
* @param email - Optional email address (required for code verification)
|
|
213
|
-
*/
|
|
214
|
-
verifyEmail(otp: string, email?: string): Promise<{
|
|
215
|
-
data: CreateSessionResponse | null;
|
|
216
|
-
error: InsForgeError | null;
|
|
217
|
-
}>;
|
|
218
|
-
/**
|
|
219
|
-
* Send password reset code or link
|
|
220
|
-
* @param type - 'code' for numeric OTP (6 digits) or 'link' for reset link
|
|
221
|
-
* @param email - Email address to send reset instructions to
|
|
244
|
+
* Reset password with OTP token
|
|
245
|
+
* Token can be from magic link or from code verification
|
|
222
246
|
*/
|
|
223
|
-
|
|
247
|
+
resetPassword(request: {
|
|
248
|
+
newPassword: string;
|
|
249
|
+
otp: string;
|
|
250
|
+
}): Promise<{
|
|
224
251
|
data: {
|
|
225
|
-
success: boolean;
|
|
226
252
|
message: string;
|
|
253
|
+
redirectTo?: string;
|
|
227
254
|
} | null;
|
|
228
255
|
error: InsForgeError | null;
|
|
229
256
|
}>;
|
|
230
257
|
/**
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
234
|
-
* @param email - Optional email address (required for code-based reset)
|
|
258
|
+
* Verify email with OTP token
|
|
259
|
+
* If email is provided: uses numeric OTP verification (6-digit code)
|
|
260
|
+
* If email is NOT provided: uses link OTP verification (64-char token)
|
|
235
261
|
*/
|
|
236
|
-
|
|
262
|
+
verifyEmail(request: {
|
|
263
|
+
email?: string;
|
|
264
|
+
otp: string;
|
|
265
|
+
}): Promise<{
|
|
237
266
|
data: {
|
|
238
|
-
|
|
267
|
+
accessToken: string;
|
|
268
|
+
user?: any;
|
|
239
269
|
} | null;
|
|
240
270
|
error: InsForgeError | null;
|
|
241
271
|
}>;
|
|
272
|
+
/**
|
|
273
|
+
* Set the current session
|
|
274
|
+
* This is used to set the session from the OAuth callback
|
|
275
|
+
*/
|
|
276
|
+
setSession(session: AuthSession): Promise<void>;
|
|
242
277
|
}
|
|
243
278
|
|
|
244
279
|
/**
|
|
@@ -572,4 +607,4 @@ declare class InsForgeClient {
|
|
|
572
607
|
|
|
573
608
|
declare function createClient(config: InsForgeConfig): InsForgeClient;
|
|
574
609
|
|
|
575
|
-
export { AI, type ApiError, Auth, type AuthSession, type InsForgeConfig as ClientOptions, Database, type FunctionInvokeOptions, Functions, HttpClient, InsForgeClient, type InsForgeConfig, InsForgeError, Storage, StorageBucket, type StorageResponse, TokenManager, type TokenStorage, createClient, InsForgeClient as default };
|
|
610
|
+
export { AI, type ApiError, Auth, type AuthSession, type InsForgeConfig as ClientOptions, Database, type FunctionInvokeOptions, Functions, HttpClient, InsForgeClient, type InsForgeConfig, InsForgeError, type ProfileData, Storage, StorageBucket, type StorageResponse, TokenManager, type TokenStorage, type UpdateProfileData, createClient, InsForgeClient as default };
|