@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.
Files changed (51) hide show
  1. package/README.md +107 -97
  2. package/dist/examples/env-config-example.d.ts +2 -0
  3. package/dist/examples/env-config-example.d.ts.map +1 -0
  4. package/dist/examples/env-config-example.js +31 -0
  5. package/dist/examples/env-config-example.js.map +1 -0
  6. package/dist/examples/manual-config-example.d.ts +2 -0
  7. package/dist/examples/manual-config-example.d.ts.map +1 -0
  8. package/dist/examples/manual-config-example.js +34 -0
  9. package/dist/examples/manual-config-example.js.map +1 -0
  10. package/dist/examples/step-3-authentication.d.ts.map +1 -1
  11. package/dist/examples/step-3-authentication.js +4 -8
  12. package/dist/examples/step-3-authentication.js.map +1 -1
  13. package/dist/examples/step-4-rbac.d.ts.map +1 -1
  14. package/dist/examples/step-4-rbac.js +3 -11
  15. package/dist/examples/step-4-rbac.js.map +1 -1
  16. package/dist/examples/step-5-logging.d.ts.map +1 -1
  17. package/dist/examples/step-5-logging.js +2 -11
  18. package/dist/examples/step-5-logging.js.map +1 -1
  19. package/dist/examples/step-6-audit.d.ts.map +1 -1
  20. package/dist/examples/step-6-audit.js +3 -17
  21. package/dist/examples/step-6-audit.js.map +1 -1
  22. package/dist/src/index.d.ts +19 -0
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +37 -6
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/services/auth.service.d.ts +12 -2
  27. package/dist/src/services/auth.service.d.ts.map +1 -1
  28. package/dist/src/services/auth.service.js +84 -17
  29. package/dist/src/services/auth.service.js.map +1 -1
  30. package/dist/src/services/logger.service.d.ts +2 -2
  31. package/dist/src/services/logger.service.d.ts.map +1 -1
  32. package/dist/src/services/logger.service.js +18 -15
  33. package/dist/src/services/logger.service.js.map +1 -1
  34. package/dist/src/services/permission.service.d.ts +7 -2
  35. package/dist/src/services/permission.service.d.ts.map +1 -1
  36. package/dist/src/services/permission.service.js +49 -23
  37. package/dist/src/services/permission.service.js.map +1 -1
  38. package/dist/src/services/role.service.d.ts +7 -2
  39. package/dist/src/services/role.service.d.ts.map +1 -1
  40. package/dist/src/services/role.service.js +47 -21
  41. package/dist/src/services/role.service.js.map +1 -1
  42. package/dist/src/types/config.types.d.ts +8 -4
  43. package/dist/src/types/config.types.d.ts.map +1 -1
  44. package/dist/src/utils/config-loader.d.ts.map +1 -1
  45. package/dist/src/utils/config-loader.js +11 -6
  46. package/dist/src/utils/config-loader.js.map +1 -1
  47. package/dist/src/utils/http-client.d.ts +16 -2
  48. package/dist/src/utils/http-client.d.ts.map +1 -1
  49. package/dist/src/utils/http-client.js +90 -9
  50. package/dist/src/utils/http-client.js.map +1 -1
  51. 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 6 steps.
94
+ Get your application secured in 30 seconds.
95
95
 
96
- ### Step 1: Set Up Your Environment
96
+ ### Step 1: Install
97
97
 
98
- **What you need:**
99
- - Keycloak running for authentication
100
- - AI Fabrix Miso Controller running
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
- **First time setting up?** Use the [AI Fabrix Builder Quick Start](https://github.com/esystemsdev/aifabrix-builder/blob/main/docs/QUICK-START.md):
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?** Skip to Step 2.
151
+ **Already have Keycloak and Controller?** Use the Quick Start above.
122
152
 
123
153
  ---
124
154
 
125
- ### Step 2: Install Miso Client
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
- // Validate token from request
157
- const token = req.headers.authorization?.replace('Bearer ', '');
158
- const isValid = await client.validateToken(token);
166
+ // Get token from request (helper method)
167
+ const token = client.getToken(req);
159
168
 
160
- if (isValid) {
161
- const user = await client.getUser(token);
162
- console.log('User:', user);
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
- // Build on Step 3 - add Redis for caching
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 = req.headers.authorization?.replace('Bearer ', '');
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
- → [RBAC Configuration](https://github.com/esystemsdev/aifabrix-builder/blob/main/docs/QUICK-START.md#step-3-create-your-app)
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 API key authentication.
216
+ **What happens:** Application logs are sent to the Miso Controller with client token authentication.
210
217
 
211
218
  ```typescript
212
- // Add API key for logging
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 = req.headers.authorization?.replace('Bearer ', '');
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
- **API key format:** `{environment}-{applicationKey}-{applicationId}-{randomString}`
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
- // Complete configuration
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 = req.headers.authorization?.replace('Bearer ', '');
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
- environment: 'dev' | 'tst' | 'pro'; // Required: Environment
300
- applicationKey: string; // Required: App identifier
301
- applicationId: string; // Required: App GUID
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
- ## 🌐 Environments
332
+ ## 🌐 Setup Your Application
341
333
 
342
- The SDK supports three environments:
334
+ **First time setup?** Use the AI Fabrix Builder:
343
335
 
344
- - **`dev`** - Development environment
345
- - **`tst`** - Test environment
346
- - **`pro`** - Production environment
336
+ 1. **Create your app:**
337
+ ```bash
338
+ aifabrix create myapp --port 3000 --database --language typescript
339
+ ```
347
340
 
348
- Each environment uses different controller endpoints and API keys.
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 = req.headers.authorization?.replace('Bearer ', '');
366
- const isValid = await client.validateToken(token);
367
- if (isValid) {
368
- req.user = await client.getUser(token);
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 = req.headers.authorization?.replace('Bearer ', '');
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
- MISO_CONTROLLER_URL=https://controller.aifabrix.ai
387
- MISO_ENVIRONMENT=dev
388
- MISO_APPLICATION_KEY=my-app
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
- **"Invalid API key for logging"**
408
- → Check API key format: `{environment}-{applicationKey}-{applicationId}-{randomString}`
409
- → Verify key is configured in controller
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=env-config-example.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=manual-config-example.d.ts.map
@@ -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,kBAoCnC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
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 with controller configuration
12
- const client = new index_1.MisoClient({
13
- controllerUrl: 'https://controller.aifabrix.ai',
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 = req.headers.authorization?.replace('Bearer ', '');
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;;AA0CM,sDAAqB;AAxC9B,wCAA0C;AAE1C,KAAK,UAAU,qBAAqB;IAClC,8CAA8C;IAC9C,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC;QAC5B,aAAa,EAAE,gCAAgC;QAC/C,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,QAAQ;QACxB,aAAa,EAAE,eAAe;KAC/B,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEjD,mEAAmE;QACnE,kFAAkF;QAClF,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
+ {"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,kBAiDzB;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
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 (same as Step 3)
12
- const client = new index_1.MisoClient({
13
- controllerUrl: 'https://controller.aifabrix.ai',
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;;AAuDM,kCAAW;AArDpB,wCAA0C;AAE1C,KAAK,UAAU,WAAW;IACxB,iCAAiC;IACjC,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC;QAC5B,aAAa,EAAE,gCAAgC;QAC/C,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,QAAQ;QACxB,aAAa,EAAE,eAAe;QAC9B,KAAK,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI;SACX;KACF,CAAC,CAAC;IAEH,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
+ {"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,kBAuD5B;AAQD,OAAO,EAAE,cAAc,EAAE,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
- const client = new index_1.MisoClient({
12
- controllerUrl: 'https://controller.aifabrix.ai',
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;;AAmEM,wCAAc;AAjEvB,wCAA0C;AAE1C,KAAK,UAAU,cAAc;IAC3B,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC;QAC5B,aAAa,EAAE,gCAAgC;QAC/C,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,QAAQ;QACxB,aAAa,EAAE,eAAe;QAC9B,MAAM,EAAE,uCAAuC,EAAE,uBAAuB;QACxE,KAAK,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI;SACX;KACF,CAAC,CAAC;IAEH,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
+ {"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,kBAgG7B;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
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
- const client = new index_1.MisoClient({
12
- controllerUrl: 'https://controller.aifabrix.ai',
13
- environment: 'dev',
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;;AAsGM,0CAAe;AApGxB,wCAA0C;AAE1C,KAAK,UAAU,eAAe;IAC5B,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC;QAC5B,aAAa,EAAE,gCAAgC;QAC/C,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,QAAQ;QACxB,aAAa,EAAE,eAAe;QAC9B,MAAM,EAAE,uCAAuC;QAC/C,KAAK,EAAE;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,qBAAqB;SAChC;QACD,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE;YACL,OAAO,EAAE,GAAG,EAAO,aAAa;YAChC,aAAa,EAAE,GAAG,EAAE,aAAa;SAClC;KACF,CAAC,CAAC;IAEH,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"}
1
+ {"version":3,"file":"step-6-audit.js","sourceRoot":"","sources":["../../examples/step-6-audit.ts"],"names":[],"mappings":"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"}
@@ -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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}