@aifabrix/miso-client 1.0.2 → 1.0.3
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 +107 -97
- package/dist/examples/env-config-example.d.ts +2 -0
- package/dist/examples/env-config-example.d.ts.map +1 -0
- package/dist/examples/env-config-example.js +31 -0
- package/dist/examples/env-config-example.js.map +1 -0
- package/dist/examples/manual-config-example.d.ts +2 -0
- package/dist/examples/manual-config-example.d.ts.map +1 -0
- package/dist/examples/manual-config-example.js +34 -0
- package/dist/examples/manual-config-example.js.map +1 -0
- package/dist/examples/step-3-authentication.d.ts.map +1 -1
- package/dist/examples/step-3-authentication.js +4 -8
- package/dist/examples/step-3-authentication.js.map +1 -1
- package/dist/examples/step-4-rbac.d.ts.map +1 -1
- package/dist/examples/step-4-rbac.js +3 -11
- package/dist/examples/step-4-rbac.js.map +1 -1
- package/dist/examples/step-5-logging.d.ts.map +1 -1
- package/dist/examples/step-5-logging.js +2 -11
- package/dist/examples/step-5-logging.js.map +1 -1
- package/dist/examples/step-6-audit.d.ts.map +1 -1
- package/dist/examples/step-6-audit.js +3 -17
- package/dist/examples/step-6-audit.js.map +1 -1
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +37 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/auth.service.d.ts +12 -2
- package/dist/src/services/auth.service.d.ts.map +1 -1
- package/dist/src/services/auth.service.js +84 -17
- package/dist/src/services/auth.service.js.map +1 -1
- package/dist/src/services/logger.service.d.ts +2 -2
- package/dist/src/services/logger.service.d.ts.map +1 -1
- package/dist/src/services/logger.service.js +18 -15
- package/dist/src/services/logger.service.js.map +1 -1
- package/dist/src/services/permission.service.d.ts +7 -2
- package/dist/src/services/permission.service.d.ts.map +1 -1
- package/dist/src/services/permission.service.js +49 -23
- package/dist/src/services/permission.service.js.map +1 -1
- package/dist/src/services/role.service.d.ts +7 -2
- package/dist/src/services/role.service.d.ts.map +1 -1
- package/dist/src/services/role.service.js +47 -21
- package/dist/src/services/role.service.js.map +1 -1
- package/dist/src/types/config.types.d.ts +8 -4
- package/dist/src/types/config.types.d.ts.map +1 -1
- package/dist/src/utils/config-loader.d.ts.map +1 -1
- package/dist/src/utils/config-loader.js +11 -6
- package/dist/src/utils/config-loader.js.map +1 -1
- package/dist/src/utils/http-client.d.ts +16 -2
- package/dist/src/utils/http-client.d.ts.map +1 -1
- package/dist/src/utils/http-client.js +90 -9
- package/dist/src/utils/http-client.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -91,15 +91,45 @@ The **AI Fabrix Miso Client SDK** provides authentication, authorization, and lo
|
|
|
91
91
|
|
|
92
92
|
## 🚀 Quick Start
|
|
93
93
|
|
|
94
|
-
Get your application secured in
|
|
94
|
+
Get your application secured in 30 seconds.
|
|
95
95
|
|
|
96
|
-
### Step 1:
|
|
96
|
+
### Step 1: Install
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
```bash
|
|
99
|
+
npm install @aifabrix/miso-client
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Step 2: Create `.env`
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
MISO_CLIENTID=ctrl-dev-my-app
|
|
106
|
+
MISO_CLIENTSECRET=your-secret
|
|
107
|
+
MISO_CONTROLLER_URL=http://localhost:3000
|
|
108
|
+
REDIS_HOST=localhost
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Step 3: Use It
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { MisoClient, loadConfig } from '@aifabrix/miso-client';
|
|
115
|
+
|
|
116
|
+
const client = new MisoClient(loadConfig());
|
|
117
|
+
await client.initialize();
|
|
118
|
+
|
|
119
|
+
const isValid = await client.auth.validateToken(token);
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**That's it!** You now have authentication, roles, and logging.
|
|
123
|
+
|
|
124
|
+
→ [Full Getting Started Guide](docs/getting-started.md)
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### Infrastructure Setup
|
|
129
|
+
|
|
130
|
+
**First time?** You'll need Keycloak and Miso Controller running.
|
|
101
131
|
|
|
102
|
-
|
|
132
|
+
Use the [AI Fabrix Builder](https://github.com/esystemsdev/aifabrix-builder/blob/main/docs/QUICK-START.md):
|
|
103
133
|
|
|
104
134
|
```bash
|
|
105
135
|
# Start infrastructure (Postgres, Redis)
|
|
@@ -118,48 +148,30 @@ aifabrix run miso-controller
|
|
|
118
148
|
|
|
119
149
|
→ [Infrastructure Guide](https://github.com/esystemsdev/aifabrix-builder/blob/main/docs/INFRASTRUCTURE.md)
|
|
120
150
|
|
|
121
|
-
**Already have Keycloak and Controller?**
|
|
151
|
+
**Already have Keycloak and Controller?** Use the Quick Start above.
|
|
122
152
|
|
|
123
153
|
---
|
|
124
154
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
npm install @aifabrix/miso-client
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**What you get:**
|
|
132
|
-
- Authentication with Keycloak
|
|
133
|
-
- Role-based access control (RBAC)
|
|
134
|
-
- Centralized logging
|
|
135
|
-
- Redis caching for performance
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
### Step 3: Activate Authentication
|
|
155
|
+
## 📚 Documentation
|
|
140
156
|
|
|
141
157
|
**What happens:** Your app validates user tokens from Keycloak.
|
|
142
158
|
|
|
143
159
|
```typescript
|
|
144
|
-
import { MisoClient } from '@aifabrix/miso-client';
|
|
145
|
-
|
|
146
|
-
// Create client
|
|
147
|
-
const client = new MisoClient({
|
|
148
|
-
controllerUrl: 'https://controller.aifabrix.ai',
|
|
149
|
-
environment: 'dev',
|
|
150
|
-
applicationKey: 'my-app',
|
|
151
|
-
applicationId: 'my-app-id-123',
|
|
152
|
-
});
|
|
160
|
+
import { MisoClient, loadConfig } from '@aifabrix/miso-client';
|
|
153
161
|
|
|
162
|
+
// Create client (loads from .env automatically)
|
|
163
|
+
const client = new MisoClient(loadConfig());
|
|
154
164
|
await client.initialize();
|
|
155
165
|
|
|
156
|
-
//
|
|
157
|
-
const token =
|
|
158
|
-
const isValid = await client.validateToken(token);
|
|
166
|
+
// Get token from request (helper method)
|
|
167
|
+
const token = client.getToken(req);
|
|
159
168
|
|
|
160
|
-
if (
|
|
161
|
-
const
|
|
162
|
-
|
|
169
|
+
if (token) {
|
|
170
|
+
const isValid = await client.validateToken(token);
|
|
171
|
+
if (isValid) {
|
|
172
|
+
const user = await client.getUser(token);
|
|
173
|
+
console.log('User:', user);
|
|
174
|
+
}
|
|
163
175
|
}
|
|
164
176
|
```
|
|
165
177
|
|
|
@@ -174,18 +186,13 @@ if (isValid) {
|
|
|
174
186
|
**What happens:** Check user roles to control access. Roles are cached in Redis for performance.
|
|
175
187
|
|
|
176
188
|
```typescript
|
|
177
|
-
|
|
178
|
-
const client = new MisoClient({
|
|
179
|
-
controllerUrl: 'https://controller.aifabrix.ai',
|
|
180
|
-
environment: 'dev',
|
|
181
|
-
applicationKey: 'my-app',
|
|
182
|
-
applicationId: 'my-app-id-123',
|
|
183
|
-
redis: { host: 'localhost', port: 6379 }, // Add Redis
|
|
184
|
-
});
|
|
189
|
+
import { MisoClient, loadConfig } from '@aifabrix/miso-client';
|
|
185
190
|
|
|
191
|
+
// Build on Step 3 - add Redis in .env file
|
|
192
|
+
const client = new MisoClient(loadConfig());
|
|
186
193
|
await client.initialize();
|
|
187
194
|
|
|
188
|
-
const token =
|
|
195
|
+
const token = client.getToken(req);
|
|
189
196
|
|
|
190
197
|
// Check if user has role
|
|
191
198
|
const isAdmin = await client.hasRole(token, 'admin');
|
|
@@ -200,28 +207,22 @@ if (isAdmin) {
|
|
|
200
207
|
**Pro tip:** Without Redis, checks go to the controller. Add Redis to cache role lookups (15-minute default TTL).
|
|
201
208
|
|
|
202
209
|
→ [Complete RBAC example](examples/step-4-rbac.ts)
|
|
203
|
-
→ [
|
|
210
|
+
→ [AI Fabrix Builder Quick Start](https://github.com/esystemsdev/aifabrix-builder/blob/main/docs/QUICK-START.md)
|
|
204
211
|
|
|
205
212
|
---
|
|
206
213
|
|
|
207
214
|
### Step 5: Activate Logging
|
|
208
215
|
|
|
209
|
-
**What happens:** Application logs are sent to the Miso Controller with
|
|
216
|
+
**What happens:** Application logs are sent to the Miso Controller with client token authentication.
|
|
210
217
|
|
|
211
218
|
```typescript
|
|
212
|
-
|
|
213
|
-
const client = new MisoClient({
|
|
214
|
-
controllerUrl: 'https://controller.aifabrix.ai',
|
|
215
|
-
environment: 'dev',
|
|
216
|
-
applicationKey: 'my-app',
|
|
217
|
-
applicationId: 'my-app-id-123',
|
|
218
|
-
apiKey: 'dev-my-app-my-app-id-123-a1b2c3d4e5f6', // NEW: API key
|
|
219
|
-
redis: { host: 'localhost', port: 6379 },
|
|
220
|
-
});
|
|
219
|
+
import { MisoClient, loadConfig } from '@aifabrix/miso-client';
|
|
221
220
|
|
|
221
|
+
// Client token is automatically managed - no API key needed
|
|
222
|
+
const client = new MisoClient(loadConfig());
|
|
222
223
|
await client.initialize();
|
|
223
224
|
|
|
224
|
-
const token =
|
|
225
|
+
const token = client.getToken(req);
|
|
225
226
|
const user = await client.getUser(token);
|
|
226
227
|
|
|
227
228
|
// Log messages
|
|
@@ -230,9 +231,7 @@ await client.log.error('Operation failed', { error: err.message });
|
|
|
230
231
|
await client.log.warn('Unusual activity', { details: '...' });
|
|
231
232
|
```
|
|
232
233
|
|
|
233
|
-
**
|
|
234
|
-
|
|
235
|
-
**What happens to logs?** They're sent to the Miso Controller for centralized monitoring and analysis.
|
|
234
|
+
**What happens to logs?** They're sent to the Miso Controller for centralized monitoring and analysis. Client token is automatically included.
|
|
236
235
|
|
|
237
236
|
→ [Complete logging example](examples/step-5-logging.ts)
|
|
238
237
|
→ [Logging Reference](docs/api-reference.md#logger-service)
|
|
@@ -244,23 +243,16 @@ await client.log.warn('Unusual activity', { details: '...' });
|
|
|
244
243
|
**What happens:** Create audit trails for compliance and security monitoring.
|
|
245
244
|
|
|
246
245
|
```typescript
|
|
247
|
-
|
|
248
|
-
const client = new MisoClient({
|
|
249
|
-
controllerUrl: 'https://controller.aifabrix.ai',
|
|
250
|
-
environment: 'dev',
|
|
251
|
-
applicationKey: 'my-app',
|
|
252
|
-
applicationId: 'my-app-id-123',
|
|
253
|
-
apiKey: 'dev-my-app-my-app-id-123-a1b2c3d4e5f6',
|
|
254
|
-
redis: { host: 'localhost', port: 6379, password: 'optional' },
|
|
255
|
-
logLevel: 'info',
|
|
256
|
-
cache: { roleTTL: 900, permissionTTL: 900 },
|
|
257
|
-
});
|
|
246
|
+
import { MisoClient, loadConfig } from '@aifabrix/miso-client';
|
|
258
247
|
|
|
248
|
+
// Complete configuration (all in .env)
|
|
249
|
+
const client = new MisoClient(loadConfig());
|
|
259
250
|
await client.initialize();
|
|
260
251
|
|
|
261
|
-
const token =
|
|
252
|
+
const token = client.getToken(req);
|
|
262
253
|
const isValid = await client.validateToken(token);
|
|
263
254
|
const canEdit = await client.hasPermission(token, 'edit:content');
|
|
255
|
+
const user = await client.getUser(token);
|
|
264
256
|
|
|
265
257
|
// Audit: User actions
|
|
266
258
|
await client.log.audit('user.login', 'authentication', {
|
|
@@ -296,11 +288,9 @@ await client.log.audit('access.denied', 'authorization', {
|
|
|
296
288
|
```typescript
|
|
297
289
|
interface MisoClientConfig {
|
|
298
290
|
controllerUrl: string; // Required: Controller URL
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
apiKey?: string; // Optional: For logging
|
|
303
|
-
redis?: RedisConfig; // Optional: For caching
|
|
291
|
+
clientId: string; // Required: Client ID (e.g., 'ctrl-dev-my-app')
|
|
292
|
+
clientSecret: string; // Required: Client secret
|
|
293
|
+
redis?: RedisConfig; // Optional: For caching
|
|
304
294
|
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
305
295
|
cache?: {
|
|
306
296
|
roleTTL?: number; // Role cache TTL (default: 900s)
|
|
@@ -309,6 +299,8 @@ interface MisoClientConfig {
|
|
|
309
299
|
}
|
|
310
300
|
```
|
|
311
301
|
|
|
302
|
+
**Recommended:** Use `loadConfig()` to load from `.env` file automatically.
|
|
303
|
+
|
|
312
304
|
→ [Complete Configuration Reference](docs/configuration.md)
|
|
313
305
|
|
|
314
306
|
---
|
|
@@ -337,15 +329,28 @@ The SDK consists of five core services:
|
|
|
337
329
|
|
|
338
330
|
---
|
|
339
331
|
|
|
340
|
-
## 🌐
|
|
332
|
+
## 🌐 Setup Your Application
|
|
341
333
|
|
|
342
|
-
|
|
334
|
+
**First time setup?** Use the AI Fabrix Builder:
|
|
343
335
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
336
|
+
1. **Create your app:**
|
|
337
|
+
```bash
|
|
338
|
+
aifabrix create myapp --port 3000 --database --language typescript
|
|
339
|
+
```
|
|
347
340
|
|
|
348
|
-
|
|
341
|
+
2. **Login to controller:**
|
|
342
|
+
```bash
|
|
343
|
+
aifabrix login
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
3. **Register your application:**
|
|
347
|
+
```bash
|
|
348
|
+
aifabrix app register myapp --environment dev
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
4. **Start development** and then deploy to Docker or Azure.
|
|
352
|
+
|
|
353
|
+
→ [Full Quick Start Guide](https://github.com/esystemsdev/aifabrix-builder/blob/main/docs/QUICK-START.md)
|
|
349
354
|
|
|
350
355
|
---
|
|
351
356
|
|
|
@@ -362,10 +367,12 @@ Each environment uses different controller endpoints and API keys.
|
|
|
362
367
|
**Add authentication middleware:**
|
|
363
368
|
```typescript
|
|
364
369
|
app.use(async (req, res, next) => {
|
|
365
|
-
const token =
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
370
|
+
const token = client.getToken(req);
|
|
371
|
+
if (token) {
|
|
372
|
+
const isValid = await client.validateToken(token);
|
|
373
|
+
if (isValid) {
|
|
374
|
+
req.user = await client.getUser(token);
|
|
375
|
+
}
|
|
369
376
|
}
|
|
370
377
|
next();
|
|
371
378
|
});
|
|
@@ -374,22 +381,25 @@ app.use(async (req, res, next) => {
|
|
|
374
381
|
**Protect routes by role:**
|
|
375
382
|
```typescript
|
|
376
383
|
app.get('/admin', async (req, res) => {
|
|
377
|
-
const token =
|
|
384
|
+
const token = client.getToken(req);
|
|
385
|
+
if (!token) return res.status(401).json({ error: 'Unauthorized' });
|
|
386
|
+
|
|
378
387
|
const isAdmin = await client.hasRole(token, 'admin');
|
|
379
388
|
if (!isAdmin) return res.status(403).json({ error: 'Forbidden' });
|
|
389
|
+
|
|
380
390
|
// Admin only code
|
|
391
|
+
res.json({ message: 'Admin panel' });
|
|
381
392
|
});
|
|
382
393
|
```
|
|
383
394
|
|
|
384
395
|
**Use environment variables:**
|
|
385
396
|
```bash
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
MISO_APPLICATION_ID=my-app-id-123
|
|
390
|
-
MISO_API_KEY=dev-my-app-my-app-id-123-a1b2c3d4e5f6
|
|
397
|
+
MISO_CLIENTID=ctrl-dev-my-app
|
|
398
|
+
MISO_CLIENTSECRET=your-secret
|
|
399
|
+
MISO_CONTROLLER_URL=http://localhost:3000
|
|
391
400
|
REDIS_HOST=localhost
|
|
392
401
|
REDIS_PORT=6379
|
|
402
|
+
MISO_LOG_LEVEL=info
|
|
393
403
|
```
|
|
394
404
|
|
|
395
405
|
---
|
|
@@ -404,9 +414,9 @@ REDIS_PORT=6379
|
|
|
404
414
|
→ SDK falls back to controller-only mode (slower but works)
|
|
405
415
|
→ Fix: `aifabrix up` to start Redis
|
|
406
416
|
|
|
407
|
-
**"
|
|
408
|
-
→ Check
|
|
409
|
-
→ Verify
|
|
417
|
+
**"Client token fetch failed"**
|
|
418
|
+
→ Check `MISO_CLIENTID` and `MISO_CLIENTSECRET` are correct
|
|
419
|
+
→ Verify credentials are configured in controller
|
|
410
420
|
|
|
411
421
|
**"Token validation fails"**
|
|
412
422
|
→ Ensure Keycloak is running and configured correctly
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-config-example.d.ts","sourceRoot":"","sources":["../../examples/env-config-example.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Example: Configuration from .env
|
|
5
|
+
* Shows how to use loadConfig() for automatic .env loading
|
|
6
|
+
*/
|
|
7
|
+
const index_1 = require("../src/index");
|
|
8
|
+
async function envConfigExample() {
|
|
9
|
+
// Auto-load from .env file - that's it!
|
|
10
|
+
const client = new index_1.MisoClient((0, index_1.loadConfig)());
|
|
11
|
+
try {
|
|
12
|
+
await client.initialize();
|
|
13
|
+
console.log('✅ Client initialized from .env');
|
|
14
|
+
const token = 'your-jwt-token';
|
|
15
|
+
const isValid = await client.validateToken(token);
|
|
16
|
+
if (isValid) {
|
|
17
|
+
const user = await client.getUser(token);
|
|
18
|
+
const roles = await client.getRoles(token);
|
|
19
|
+
console.log('👤 User:', user);
|
|
20
|
+
console.log('🔑 Roles:', roles);
|
|
21
|
+
await client.log.info('User accessed app', {
|
|
22
|
+
userId: user?.id,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
await client.disconnect();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
envConfigExample().catch(console.error);
|
|
31
|
+
//# sourceMappingURL=env-config-example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-config-example.js","sourceRoot":"","sources":["../../examples/env-config-example.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,wCAAsD;AAEtD,KAAK,UAAU,gBAAgB;IAC7B,wCAAwC;IACxC,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAEhC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACzC,MAAM,EAAE,IAAI,EAAE,EAAE;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manual-config-example.d.ts","sourceRoot":"","sources":["../../examples/manual-config-example.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Example: Manual Configuration
|
|
5
|
+
* Shows how to configure client with explicit parameters
|
|
6
|
+
*/
|
|
7
|
+
const index_1 = require("../src/index");
|
|
8
|
+
async function manualConfigExample() {
|
|
9
|
+
const client = new index_1.MisoClient({
|
|
10
|
+
controllerUrl: 'http://localhost:3000',
|
|
11
|
+
clientId: 'ctrl-dev-my-app',
|
|
12
|
+
clientSecret: 'your-secret-here',
|
|
13
|
+
redis: {
|
|
14
|
+
host: 'localhost',
|
|
15
|
+
port: 6379,
|
|
16
|
+
},
|
|
17
|
+
logLevel: 'info',
|
|
18
|
+
});
|
|
19
|
+
try {
|
|
20
|
+
await client.initialize();
|
|
21
|
+
console.log('✅ Client initialized');
|
|
22
|
+
const token = 'your-jwt-token';
|
|
23
|
+
const isValid = await client.validateToken(token);
|
|
24
|
+
if (isValid) {
|
|
25
|
+
const user = await client.getUser(token);
|
|
26
|
+
console.log('👤 User:', user);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
await client.disconnect();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
manualConfigExample().catch(console.error);
|
|
34
|
+
//# sourceMappingURL=manual-config-example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manual-config-example.js","sourceRoot":"","sources":["../../examples/manual-config-example.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,wCAA0C;AAE1C,KAAK,UAAU,mBAAmB;IAChC,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC;QAC5B,aAAa,EAAE,uBAAuB;QACtC,QAAQ,EAAE,iBAAiB;QAC3B,YAAY,EAAE,kBAAkB;QAChC,KAAK,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI;SACX;QACD,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,mBAAmB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-3-authentication.d.ts","sourceRoot":"","sources":["../../examples/step-3-authentication.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,qBAAqB,
|
|
1
|
+
{"version":3,"file":"step-3-authentication.d.ts","sourceRoot":"","sources":["../../examples/step-3-authentication.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,qBAAqB,kBAgCnC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -8,19 +8,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.authenticationExample = authenticationExample;
|
|
9
9
|
const index_1 = require("../src/index");
|
|
10
10
|
async function authenticationExample() {
|
|
11
|
-
// Create client
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
environment: 'dev',
|
|
15
|
-
applicationKey: 'my-app',
|
|
16
|
-
applicationId: 'my-app-id-123',
|
|
17
|
-
});
|
|
11
|
+
// Create client - loads from .env automatically
|
|
12
|
+
// Or manually: new MisoClient({ controllerUrl, clientId, clientSecret })
|
|
13
|
+
const client = new index_1.MisoClient((0, index_1.loadConfig)());
|
|
18
14
|
try {
|
|
19
15
|
// Initialize the client
|
|
20
16
|
await client.initialize();
|
|
21
17
|
console.log('✅ Client initialized successfully');
|
|
22
18
|
// Get token from your application (e.g., from HTTP request header)
|
|
23
|
-
// In real usage: const token =
|
|
19
|
+
// In real usage: const token = client.getToken(req);
|
|
24
20
|
const token = 'your-jwt-token-here';
|
|
25
21
|
// Validate the token
|
|
26
22
|
const isValid = await client.validateToken(token);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-3-authentication.js","sourceRoot":"","sources":["../../examples/step-3-authentication.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"step-3-authentication.js","sourceRoot":"","sources":["../../examples/step-3-authentication.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAsCM,sDAAqB;AApC9B,wCAAsD;AAEtD,KAAK,UAAU,qBAAqB;IAClC,gDAAgD;IAChD,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEjD,mEAAmE;QACnE,qDAAqD;QACrD,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAEpC,qBAAqB;QACrB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAEhC,uBAAuB;YACvB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;YAAS,CAAC;QACT,uBAAuB;QACvB,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-4-rbac.d.ts","sourceRoot":"","sources":["../../examples/step-4-rbac.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,WAAW,
|
|
1
|
+
{"version":3,"file":"step-4-rbac.d.ts","sourceRoot":"","sources":["../../examples/step-4-rbac.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,WAAW,kBAyCzB;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -8,17 +8,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.rbacExample = rbacExample;
|
|
9
9
|
const index_1 = require("../src/index");
|
|
10
10
|
async function rbacExample() {
|
|
11
|
-
// Create client
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
environment: 'dev',
|
|
15
|
-
applicationKey: 'my-app',
|
|
16
|
-
applicationId: 'my-app-id-123',
|
|
17
|
-
redis: {
|
|
18
|
-
host: 'localhost',
|
|
19
|
-
port: 6379,
|
|
20
|
-
},
|
|
21
|
-
});
|
|
11
|
+
// Create client - loads from .env automatically
|
|
12
|
+
// Redis config goes in .env: REDIS_HOST=localhost, REDIS_PORT=6379
|
|
13
|
+
const client = new index_1.MisoClient((0, index_1.loadConfig)());
|
|
22
14
|
try {
|
|
23
15
|
await client.initialize();
|
|
24
16
|
console.log('✅ Client initialized with Redis caching');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-4-rbac.js","sourceRoot":"","sources":["../../examples/step-4-rbac.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"step-4-rbac.js","sourceRoot":"","sources":["../../examples/step-4-rbac.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AA+CM,kCAAW;AA7CpB,wCAAsD;AAEtD,KAAK,UAAU,WAAW;IACxB,gDAAgD;IAChD,mEAAmE;IACnE,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAEpC,+BAA+B;QAC/B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAErC,2BAA2B;QAC3B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAErC,sDAAsD;QACtD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAEzC,wCAAwC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,6BAA6B;QAC/B,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-5-logging.d.ts","sourceRoot":"","sources":["../../examples/step-5-logging.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,cAAc,
|
|
1
|
+
{"version":3,"file":"step-5-logging.d.ts","sourceRoot":"","sources":["../../examples/step-5-logging.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,cAAc,kBA8C5B;AAQD,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -8,17 +8,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.loggingExample = loggingExample;
|
|
9
9
|
const index_1 = require("../src/index");
|
|
10
10
|
async function loggingExample() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
environment: 'dev',
|
|
14
|
-
applicationKey: 'my-app',
|
|
15
|
-
applicationId: 'my-app-id-123',
|
|
16
|
-
apiKey: 'dev-my-app-my-app-id-123-a1b2c3d4e5f6', // Required for logging
|
|
17
|
-
redis: {
|
|
18
|
-
host: 'localhost',
|
|
19
|
-
port: 6379,
|
|
20
|
-
},
|
|
21
|
-
});
|
|
11
|
+
// Create client - loads from .env automatically
|
|
12
|
+
const client = new index_1.MisoClient((0, index_1.loadConfig)());
|
|
22
13
|
try {
|
|
23
14
|
await client.initialize();
|
|
24
15
|
const token = 'your-jwt-token-here';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-5-logging.js","sourceRoot":"","sources":["../../examples/step-5-logging.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"step-5-logging.js","sourceRoot":"","sources":["../../examples/step-5-logging.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AA0DM,wCAAc;AAxDvB,wCAAsD;AAEtD,KAAK,UAAU,cAAc;IAC3B,gDAAgD;IAChD,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAEpC,0CAA0C;QAC1C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzC,kCAAkC;QAClC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAC/C,MAAM,EAAE,IAAI,EAAE,EAAE;YAChB,QAAQ,EAAE,IAAI,EAAE,QAAQ;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,gBAAgB,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE;gBACzC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;gBAC/D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBACvD,MAAM,EAAE,IAAI,EAAE,EAAE;aACjB,CAAC,CAAC;QACL,CAAC;QAED,qDAAqD;QACrD,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE;YAChD,MAAM,EAAE,IAAI,EAAE,EAAE;YAChB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,yBAAyB;AAC3B,CAAC;AAED,IAAI,aAAa,GAAG,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-6-audit.d.ts","sourceRoot":"","sources":["../../examples/step-6-audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,eAAe,
|
|
1
|
+
{"version":3,"file":"step-6-audit.d.ts","sourceRoot":"","sources":["../../examples/step-6-audit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,eAAe,kBAkF7B;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -8,23 +8,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.completeExample = completeExample;
|
|
9
9
|
const index_1 = require("../src/index");
|
|
10
10
|
async function completeExample() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
applicationKey: 'my-app',
|
|
15
|
-
applicationId: 'my-app-id-123',
|
|
16
|
-
apiKey: 'dev-my-app-my-app-id-123-a1b2c3d4e5f6',
|
|
17
|
-
redis: {
|
|
18
|
-
host: 'localhost',
|
|
19
|
-
port: 6379,
|
|
20
|
-
password: 'your-redis-password',
|
|
21
|
-
},
|
|
22
|
-
logLevel: 'info',
|
|
23
|
-
cache: {
|
|
24
|
-
roleTTL: 900, // 15 minutes
|
|
25
|
-
permissionTTL: 900, // 15 minutes
|
|
26
|
-
},
|
|
27
|
-
});
|
|
11
|
+
// Create client - loads from .env automatically
|
|
12
|
+
// All config (Redis, logLevel, cache) goes in .env file
|
|
13
|
+
const client = new index_1.MisoClient((0, index_1.loadConfig)());
|
|
28
14
|
try {
|
|
29
15
|
await client.initialize();
|
|
30
16
|
console.log('✅ Client fully configured');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-6-audit.js","sourceRoot":"","sources":["../../examples/step-6-audit.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"step-6-audit.js","sourceRoot":"","sources":["../../examples/step-6-audit.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAwFM,0CAAe;AAtFxB,wCAAsD;AAEtD,KAAK,UAAU,eAAe;IAC5B,gDAAgD;IAChD,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAEpC,yBAAyB;QACzB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,gBAAgB,EAAE;gBACxD,MAAM,EAAE,eAAe;gBACvB,EAAE,EAAE,aAAa;aAClB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzC,eAAe;QACf,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,eAAe,EAAE;gBACvD,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChB,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACnD,MAAM,EAAE,IAAI,EAAE,EAAE;YAChB,QAAQ,EAAE,IAAI,EAAE,QAAQ;YACxB,KAAK,EAAE,IAAI,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,gBAAgB,EAAE;YACrD,MAAM,EAAE,IAAI,EAAE,EAAE;YAChB,EAAE,EAAE,aAAa;YACjB,SAAS,EAAE,gBAAgB;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,iCAAiC;QACjC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE;YAChD,MAAM,EAAE,IAAI,EAAE,EAAE;YAChB,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,aAAa;YACxB,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAC;QAEH,mCAAmC;QACnC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,eAAe,EAAE;YACtD,MAAM,EAAE,IAAI,EAAE,EAAE;YAChB,WAAW,EAAE,OAAO;YACpB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,sCAAsC;QACtC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,gBAAgB,EAAE;YACvD,MAAM,EAAE,IAAI,EAAE,EAAE;YAChB,aAAa,EAAE,UAAU;YACzB,MAAM,EAAE,kBAAkB;SAC3B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAEhE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAC1C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAC/D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACxD,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { LoggerService } from './services/logger.service';
|
|
|
5
5
|
import { MisoClientConfig, UserInfo } from './types/config.types';
|
|
6
6
|
export declare class MisoClient {
|
|
7
7
|
private config;
|
|
8
|
+
private httpClient;
|
|
8
9
|
private redis;
|
|
9
10
|
private auth;
|
|
10
11
|
private roles;
|
|
@@ -24,6 +25,20 @@ export declare class MisoClient {
|
|
|
24
25
|
* Check if client is initialized
|
|
25
26
|
*/
|
|
26
27
|
isInitialized(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Extract Bearer token from request headers
|
|
30
|
+
* Supports common request object patterns (Express, Fastify, Next.js)
|
|
31
|
+
*/
|
|
32
|
+
getToken(req: {
|
|
33
|
+
headers: {
|
|
34
|
+
authorization?: string;
|
|
35
|
+
};
|
|
36
|
+
}): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Get environment token using client credentials
|
|
39
|
+
* This is called automatically by HttpClient but can be called manually
|
|
40
|
+
*/
|
|
41
|
+
getEnvironmentToken(): Promise<string>;
|
|
27
42
|
/**
|
|
28
43
|
* Initiate login flow by redirecting to controller
|
|
29
44
|
* Returns the login URL for browser redirect or manual navigation
|
|
@@ -37,6 +52,10 @@ export declare class MisoClient {
|
|
|
37
52
|
* Get user information from token
|
|
38
53
|
*/
|
|
39
54
|
getUser(token: string): Promise<UserInfo | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Get user information from GET /api/auth/user endpoint
|
|
57
|
+
*/
|
|
58
|
+
getUserInfo(token: string): Promise<UserInfo | null>;
|
|
40
59
|
/**
|
|
41
60
|
* Check if user is authenticated
|
|
42
61
|
*/
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|