@aifabrix/miso-client 1.0.3 → 1.2.0

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 (41) hide show
  1. package/README.md +49 -2
  2. package/dist/examples/manual-config-example.js +2 -0
  3. package/dist/examples/manual-config-example.js.map +1 -1
  4. package/dist/examples/step-5-logging.js +2 -1
  5. package/dist/examples/step-5-logging.js.map +1 -1
  6. package/dist/examples/step-7-encryption-cache.d.ts +8 -0
  7. package/dist/examples/step-7-encryption-cache.d.ts.map +1 -0
  8. package/dist/examples/step-7-encryption-cache.js +131 -0
  9. package/dist/examples/step-7-encryption-cache.js.map +1 -0
  10. package/dist/examples/usage.js +3 -3
  11. package/dist/examples/usage.js.map +1 -1
  12. package/dist/src/index.d.ts +15 -0
  13. package/dist/src/index.d.ts.map +1 -1
  14. package/dist/src/index.js +37 -3
  15. package/dist/src/index.js.map +1 -1
  16. package/dist/src/services/auth.service.d.ts +8 -0
  17. package/dist/src/services/auth.service.d.ts.map +1 -1
  18. package/dist/src/services/auth.service.js +22 -0
  19. package/dist/src/services/auth.service.js.map +1 -1
  20. package/dist/src/services/cache.service.d.ts +58 -0
  21. package/dist/src/services/cache.service.d.ts.map +1 -0
  22. package/dist/src/services/cache.service.js +171 -0
  23. package/dist/src/services/cache.service.js.map +1 -0
  24. package/dist/src/services/encryption.service.d.ts +32 -0
  25. package/dist/src/services/encryption.service.d.ts.map +1 -0
  26. package/dist/src/services/encryption.service.js +135 -0
  27. package/dist/src/services/encryption.service.js.map +1 -0
  28. package/dist/src/services/permission.service.d.ts +5 -5
  29. package/dist/src/services/permission.service.d.ts.map +1 -1
  30. package/dist/src/services/permission.service.js +14 -27
  31. package/dist/src/services/permission.service.js.map +1 -1
  32. package/dist/src/services/role.service.d.ts +4 -4
  33. package/dist/src/services/role.service.d.ts.map +1 -1
  34. package/dist/src/services/role.service.js +11 -22
  35. package/dist/src/services/role.service.js.map +1 -1
  36. package/dist/src/types/config.types.d.ts +2 -0
  37. package/dist/src/types/config.types.d.ts.map +1 -1
  38. package/dist/src/utils/config-loader.d.ts.map +1 -1
  39. package/dist/src/utils/config-loader.js +8 -0
  40. package/dist/src/utils/config-loader.js.map +1 -1
  41. package/package.json +1 -1
package/README.md CHANGED
@@ -26,6 +26,7 @@ The **AI Fabrix Miso Client SDK** provides authentication, authorization, and lo
26
26
  - API key authentication
27
27
  - Token revocation support
28
28
  - Secure token storage
29
+ - Data encryption/decryption (AES-256-GCM)
29
30
 
30
31
  ### 📊 Compliance & Audit
31
32
 
@@ -51,6 +52,7 @@ The **AI Fabrix Miso Client SDK** provides authentication, authorization, and lo
51
52
 
52
53
  **Intelligent Caching**
53
54
  - Redis-based role and permission caching
55
+ - Generic cache service with Redis and in-memory fallback
54
56
  - Configurable cache TTL (default: 15 minutes)
55
57
  - Automatic cache invalidation
56
58
  - Fallback to controller when Redis unavailable
@@ -108,6 +110,8 @@ MISO_CONTROLLER_URL=http://localhost:3000
108
110
  REDIS_HOST=localhost
109
111
  ```
110
112
 
113
+ → [Environment configuration example](examples/env-config-example.ts)
114
+
111
115
  ### Step 3: Use It
112
116
 
113
117
  ```typescript
@@ -121,7 +125,9 @@ const isValid = await client.auth.validateToken(token);
121
125
 
122
126
  **That's it!** You now have authentication, roles, and logging.
123
127
 
124
- → [Full Getting Started Guide](docs/getting-started.md)
128
+ → [Full Getting Started Guide](docs/getting-started.md)
129
+ → [Environment configuration example](examples/env-config-example.ts)
130
+ → [Manual configuration example](examples/manual-config-example.ts)
125
131
 
126
132
  ---
127
133
 
@@ -177,7 +183,8 @@ if (token) {
177
183
 
178
184
  **Where to get tokens?** Users authenticate via Keycloak, then your app receives JWTs in the `Authorization` header.
179
185
 
180
- → [Complete authentication example](examples/step-3-authentication.ts)
186
+ → [Complete authentication example](examples/step-3-authentication.ts)
187
+ → [Quick start example](examples/usage.ts)
181
188
 
182
189
  ---
183
190
 
@@ -281,6 +288,45 @@ await client.log.audit('access.denied', 'authorization', {
281
288
  → [Complete audit example](examples/step-6-audit.ts)
282
289
  → [Best Practices](docs/getting-started.md#common-patterns)
283
290
 
291
+ ---
292
+
293
+ ### Step 7: Encryption & Caching
294
+
295
+ **What happens:** Use encryption for sensitive data and generic caching for improved performance.
296
+
297
+ ```typescript
298
+ import { MisoClient, loadConfig } from '@aifabrix/miso-client';
299
+
300
+ const client = new MisoClient(loadConfig());
301
+ await client.initialize();
302
+
303
+ // Encryption (requires ENCRYPTION_KEY in .env or config.encryptionKey)
304
+ if (client.encryption) {
305
+ const encrypted = client.encryption.encrypt('sensitive-data');
306
+ const decrypted = client.encryption.decrypt(encrypted);
307
+ console.log('Decrypted:', decrypted);
308
+ }
309
+
310
+ // Generic caching (automatically uses Redis if available, falls back to memory)
311
+ await client.cache.set('user:123', { name: 'John', age: 30 }, 600); // 10 minutes TTL
312
+ const user = await client.cache.get<{ name: string; age: number }>('user:123');
313
+ if (user) {
314
+ console.log('Cached user:', user);
315
+ }
316
+ ```
317
+
318
+ **Configuration:**
319
+
320
+ ```bash
321
+ # Add to .env
322
+ ENCRYPTION_KEY=your-32-byte-encryption-key
323
+ ```
324
+
325
+ → [Complete encryption & caching example](examples/step-7-encryption-cache.ts)
326
+ → [API Reference](docs/api-reference.md#encryption-methods)
327
+ → [Cache Methods](docs/api-reference.md#cache-methods)
328
+
329
+
284
330
  ---
285
331
 
286
332
  ## 🔧 Configuration
@@ -292,6 +338,7 @@ interface MisoClientConfig {
292
338
  clientSecret: string; // Required: Client secret
293
339
  redis?: RedisConfig; // Optional: For caching
294
340
  logLevel?: 'debug' | 'info' | 'warn' | 'error';
341
+ encryptionKey?: string; // Optional: Encryption key (or use ENCRYPTION_KEY env var)
295
342
  cache?: {
296
343
  roleTTL?: number; // Role cache TTL (default: 900s)
297
344
  permissionTTL?: number; // Permission cache TTL (default: 900s)
@@ -15,6 +15,8 @@ async function manualConfigExample() {
15
15
  port: 6379,
16
16
  },
17
17
  logLevel: 'info',
18
+ // Optional: Encryption key (or set ENCRYPTION_KEY env var)
19
+ encryptionKey: 'your-encryption-key-here', // 32-byte key in hex/base64/raw string
18
20
  });
19
21
  try {
20
22
  await client.initialize();
@@ -1 +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
+ {"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;QAChB,2DAA2D;QAC3D,aAAa,EAAE,0BAA0B,EAAE,uCAAuC;KACnF,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"}
@@ -52,6 +52,7 @@ async function loggingExample() {
52
52
  }
53
53
  async function performOperation() {
54
54
  // Your application logic
55
+ // This is a placeholder for any operation that might fail
56
+ throw new Error('Operation failed');
55
57
  }
56
- let someCondition = false;
57
58
  //# sourceMappingURL=step-5-logging.js.map
@@ -1 +1 @@
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
+ {"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;IACzB,0DAA0D;IAC1D,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Step 7: Encryption & Caching
3
+ *
4
+ * Examples of encrypting sensitive data and using generic caching.
5
+ */
6
+ declare function encryptionCacheExample(): Promise<void>;
7
+ export { encryptionCacheExample };
8
+ //# sourceMappingURL=step-7-encryption-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-7-encryption-cache.d.ts","sourceRoot":"","sources":["../../examples/step-7-encryption-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iBAAe,sBAAsB,kBA6JpC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ /**
3
+ * Step 7: Encryption & Caching
4
+ *
5
+ * Examples of encrypting sensitive data and using generic caching.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.encryptionCacheExample = encryptionCacheExample;
9
+ const index_1 = require("../src/index");
10
+ async function encryptionCacheExample() {
11
+ // Create client - loads from .env automatically
12
+ // Make sure ENCRYPTION_KEY is set in .env for encryption to work
13
+ const client = new index_1.MisoClient((0, index_1.loadConfig)());
14
+ try {
15
+ await client.initialize();
16
+ console.log('✅ Client initialized');
17
+ const token = 'your-jwt-token-here';
18
+ // ==================== ENCRYPTION ====================
19
+ // Check if encryption is available (requires ENCRYPTION_KEY in .env)
20
+ if (client.encryption) {
21
+ console.log('🔒 Encryption service is available');
22
+ // Encrypt sensitive data
23
+ const sensitiveData = JSON.stringify({
24
+ creditCard: '4532-1234-5678-9010',
25
+ ssn: '123-45-6789',
26
+ apiKey: 'secret-api-key-123'
27
+ });
28
+ const encrypted = client.encryption.encrypt(sensitiveData);
29
+ console.log('🔐 Encrypted data:', encrypted);
30
+ // Decrypt when needed
31
+ const decrypted = client.encryption.decrypt(encrypted);
32
+ console.log('🔓 Decrypted data:', JSON.parse(decrypted));
33
+ // Example: Storing encrypted user preferences
34
+ const userPreferences = {
35
+ theme: 'dark',
36
+ notifications: true,
37
+ language: 'en'
38
+ };
39
+ const encryptedPreferences = client.encryption.encrypt(JSON.stringify(userPreferences));
40
+ console.log('💾 Encrypted preferences ready for storage');
41
+ // Later, decrypt when retrieving
42
+ const decryptedPreferences = JSON.parse(client.encryption.decrypt(encryptedPreferences));
43
+ console.log('📖 Retrieved preferences:', decryptedPreferences);
44
+ }
45
+ else {
46
+ console.log('⚠️ Encryption not available - set ENCRYPTION_KEY in .env');
47
+ }
48
+ // ==================== GENERIC CACHING ====================
49
+ console.log('\n📦 Generic caching examples:');
50
+ // Example 1: Cache expensive computation results
51
+ const userId = 'user-123';
52
+ const cacheKey = `user:${userId}:computed-data`;
53
+ // Check cache first
54
+ const cachedData = await client.cache.get(cacheKey);
55
+ if (cachedData) {
56
+ console.log('⚡ Got data from cache:', cachedData);
57
+ }
58
+ else {
59
+ console.log('💭 Computing expensive data...');
60
+ // Simulate expensive computation
61
+ const computedData = {
62
+ result: Math.random() * 1000,
63
+ computedAt: new Date().toISOString()
64
+ };
65
+ // Cache for 10 minutes (600 seconds)
66
+ await client.cache.set(cacheKey, computedData, 600);
67
+ console.log('💾 Cached computed data');
68
+ }
69
+ async function getProduct(id) {
70
+ const productCacheKey = `product:${id}`;
71
+ // Check cache
72
+ const cachedProduct = await client.cache.get(productCacheKey);
73
+ if (cachedProduct) {
74
+ console.log('⚡ Product from cache:', cachedProduct);
75
+ return cachedProduct;
76
+ }
77
+ // Simulate database fetch
78
+ console.log('💭 Fetching product from database...');
79
+ const product = {
80
+ id,
81
+ name: `Product ${id}`,
82
+ price: 99.99
83
+ };
84
+ // Cache for 5 minutes (300 seconds)
85
+ await client.cache.set(productCacheKey, product, 300);
86
+ console.log('💾 Product cached');
87
+ return product;
88
+ }
89
+ // Use the cached product function
90
+ await getProduct('prod-123');
91
+ await getProduct('prod-123'); // Second call uses cache
92
+ // Example 3: Cache user session data
93
+ if (await client.validateToken(token)) {
94
+ const user = await client.getUser(token);
95
+ if (user) {
96
+ const sessionCacheKey = `session:${user.id}`;
97
+ const sessionData = {
98
+ userId: user.id,
99
+ username: user.username,
100
+ lastAccess: new Date().toISOString(),
101
+ preferences: {
102
+ theme: 'dark',
103
+ language: 'en'
104
+ }
105
+ };
106
+ // Cache session for 30 minutes (1800 seconds)
107
+ await client.cache.set(sessionCacheKey, sessionData, 1800);
108
+ console.log('💾 User session cached');
109
+ // Retrieve later
110
+ const cachedSession = await client.cache.get(sessionCacheKey);
111
+ if (cachedSession) {
112
+ console.log('📖 Retrieved session:', cachedSession);
113
+ }
114
+ }
115
+ }
116
+ // Example 4: Delete from cache
117
+ await client.cache.delete(cacheKey);
118
+ console.log('🗑️ Deleted from cache');
119
+ // Example 5: Clear all cache (use with caution)
120
+ // await client.cache.clear();
121
+ // console.log('🧹 All cache cleared');
122
+ console.log('\n✅ Encryption & caching examples completed');
123
+ }
124
+ catch (error) {
125
+ console.error('❌ Error:', error);
126
+ }
127
+ finally {
128
+ await client.disconnect();
129
+ }
130
+ }
131
+ //# sourceMappingURL=step-7-encryption-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-7-encryption-cache.js","sourceRoot":"","sources":["../../examples/step-7-encryption-cache.ts"],"names":[],"mappings":"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"}
@@ -29,11 +29,11 @@ async function example() {
29
29
  const isAdmin = await client.hasRole(token, 'admin');
30
30
  console.log('Is admin:', isAdmin);
31
31
  // Log some events
32
- client.log.info('User accessed application', {
32
+ await client.log.info('User accessed application', {
33
33
  userId: user?.id,
34
34
  username: user?.username
35
35
  });
36
- client.log.audit('user.login', 'authentication', {
36
+ await client.log.audit('user.login', 'authentication', {
37
37
  userId: user?.id,
38
38
  ip: '192.168.1.1'
39
39
  });
@@ -43,7 +43,7 @@ async function example() {
43
43
  throw new Error('Something went wrong');
44
44
  }
45
45
  catch (error) {
46
- client.log.error('Application error', {
46
+ await client.log.error('Application error', {
47
47
  error: error instanceof Error ? error.message : 'Unknown error',
48
48
  stack: error instanceof Error ? error.stack : undefined
49
49
  });
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../examples/usage.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAqEM,0BAAO;AAnEhB,wCAAsD;AAEtD,KAAK,UAAU,OAAO;IACpB,uDAAuD;IACvD,wEAAwE;IACxE,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,iCAAiC,CAAC,CAAC;QAE/C,sEAAsE;QACtE,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAEpC,iBAAiB;QACjB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAErC,IAAI,OAAO,EAAE,CAAC;YACZ,gBAAgB;YAChB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAE3B,iBAAiB;YACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAElC,sBAAsB;YACtB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAElC,kBAAkB;YAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBAC3C,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChB,QAAQ,EAAE,IAAI,EAAE,QAAQ;aACzB,CAAC,CAAC;YAEH,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,gBAAgB,EAAE;gBAC/C,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChB,EAAE,EAAE,aAAa;aAClB,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBACpC,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;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;YAAS,CAAC;QACT,UAAU;QACV,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../examples/usage.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAqEM,0BAAO;AAnEhB,wCAAsD;AAEtD,KAAK,UAAU,OAAO;IACpB,uDAAuD;IACvD,wEAAwE;IACxE,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,iCAAiC,CAAC,CAAC;QAE/C,sEAAsE;QACtE,MAAM,KAAK,GAAG,qBAAqB,CAAC;QAEpC,iBAAiB;QACjB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAErC,IAAI,OAAO,EAAE,CAAC;YACZ,gBAAgB;YAChB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAE3B,iBAAiB;YACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAElC,sBAAsB;YACtB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAElC,kBAAkB;YAClB,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACjD,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChB,QAAQ,EAAE,IAAI,EAAE,QAAQ;aACzB,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,gBAAgB,EAAE;gBACrD,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChB,EAAE,EAAE,aAAa;aAClB,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBAC1C,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;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;YAAS,CAAC;QACT,UAAU;QACV,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
@@ -2,6 +2,8 @@
2
2
  * Main MisoClient SDK class
3
3
  */
4
4
  import { LoggerService } from './services/logger.service';
5
+ import { EncryptionService } from './services/encryption.service';
6
+ import { CacheService } from './services/cache.service';
5
7
  import { MisoClientConfig, UserInfo } from './types/config.types';
6
8
  export declare class MisoClient {
7
9
  private config;
@@ -11,6 +13,8 @@ export declare class MisoClient {
11
13
  private roles;
12
14
  private permissions;
13
15
  private logger;
16
+ private encryptionService?;
17
+ private cacheService;
14
18
  private initialized;
15
19
  constructor(config: MisoClientConfig);
16
20
  /**
@@ -112,6 +116,15 @@ export declare class MisoClient {
112
116
  * Get logger service for application logging
113
117
  */
114
118
  get log(): LoggerService;
119
+ /**
120
+ * Get encryption service for data encryption/decryption
121
+ * Returns undefined if encryption key is not configured
122
+ */
123
+ get encryption(): EncryptionService | undefined;
124
+ /**
125
+ * Get cache service for generic caching
126
+ */
127
+ get cache(): CacheService;
115
128
  /**
116
129
  * Get current configuration
117
130
  */
@@ -126,6 +139,8 @@ export { AuthService } from './services/auth.service';
126
139
  export { RoleService } from './services/role.service';
127
140
  export { LoggerService } from './services/logger.service';
128
141
  export { RedisService } from './services/redis.service';
142
+ export { EncryptionService } from './services/encryption.service';
143
+ export { CacheService } from './services/cache.service';
129
144
  export { HttpClient } from './utils/http-client';
130
145
  export { loadConfig } from './utils/config-loader';
131
146
  //# sourceMappingURL=index.d.ts.map
@@ -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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"}
package/dist/src/index.js CHANGED
@@ -17,12 +17,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
17
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.loadConfig = exports.HttpClient = exports.RedisService = exports.LoggerService = exports.RoleService = exports.AuthService = exports.MisoClient = void 0;
20
+ exports.loadConfig = exports.HttpClient = exports.CacheService = exports.EncryptionService = exports.RedisService = exports.LoggerService = exports.RoleService = exports.AuthService = exports.MisoClient = void 0;
21
21
  const auth_service_1 = require("./services/auth.service");
22
22
  const role_service_1 = require("./services/role.service");
23
23
  const permission_service_1 = require("./services/permission.service");
24
24
  const logger_service_1 = require("./services/logger.service");
25
25
  const redis_service_1 = require("./services/redis.service");
26
+ const encryption_service_1 = require("./services/encryption.service");
27
+ const cache_service_1 = require("./services/cache.service");
26
28
  const http_client_1 = require("./utils/http-client");
27
29
  class MisoClient {
28
30
  constructor(config) {
@@ -31,9 +33,22 @@ class MisoClient {
31
33
  this.httpClient = new http_client_1.HttpClient(config);
32
34
  this.redis = new redis_service_1.RedisService(config.redis);
33
35
  this.auth = new auth_service_1.AuthService(this.httpClient, this.redis);
34
- this.roles = new role_service_1.RoleService(this.httpClient, this.redis);
35
- this.permissions = new permission_service_1.PermissionService(this.httpClient, this.redis);
36
36
  this.logger = new logger_service_1.LoggerService(this.httpClient, this.redis);
37
+ // Initialize cache service with Redis support (used by roles and permissions)
38
+ this.cacheService = new cache_service_1.CacheService(this.redis);
39
+ // Initialize services that use cache
40
+ this.roles = new role_service_1.RoleService(this.httpClient, this.cacheService);
41
+ this.permissions = new permission_service_1.PermissionService(this.httpClient, this.cacheService);
42
+ // Initialize encryption service if key is provided (optional)
43
+ if (config.encryptionKey || process.env.ENCRYPTION_KEY) {
44
+ try {
45
+ this.encryptionService = new encryption_service_1.EncryptionService(config.encryptionKey);
46
+ }
47
+ catch (error) {
48
+ // Encryption service not initialized if key is missing
49
+ // This is okay - encryption is optional
50
+ }
51
+ }
37
52
  }
38
53
  /**
39
54
  * Initialize the client (connect to Redis if configured)
@@ -199,6 +214,21 @@ class MisoClient {
199
214
  get log() {
200
215
  return this.logger;
201
216
  }
217
+ // ==================== ENCRYPTION METHODS ====================
218
+ /**
219
+ * Get encryption service for data encryption/decryption
220
+ * Returns undefined if encryption key is not configured
221
+ */
222
+ get encryption() {
223
+ return this.encryptionService;
224
+ }
225
+ // ==================== CACHE METHODS ====================
226
+ /**
227
+ * Get cache service for generic caching
228
+ */
229
+ get cache() {
230
+ return this.cacheService;
231
+ }
202
232
  // ==================== UTILITY METHODS ====================
203
233
  /**
204
234
  * Get current configuration
@@ -225,6 +255,10 @@ var logger_service_2 = require("./services/logger.service");
225
255
  Object.defineProperty(exports, "LoggerService", { enumerable: true, get: function () { return logger_service_2.LoggerService; } });
226
256
  var redis_service_2 = require("./services/redis.service");
227
257
  Object.defineProperty(exports, "RedisService", { enumerable: true, get: function () { return redis_service_2.RedisService; } });
258
+ var encryption_service_2 = require("./services/encryption.service");
259
+ Object.defineProperty(exports, "EncryptionService", { enumerable: true, get: function () { return encryption_service_2.EncryptionService; } });
260
+ var cache_service_2 = require("./services/cache.service");
261
+ Object.defineProperty(exports, "CacheService", { enumerable: true, get: function () { return cache_service_2.CacheService; } });
228
262
  var http_client_2 = require("./utils/http-client");
229
263
  Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_client_2.HttpClient; } });
230
264
  // Export utilities
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,11 @@ export declare class AuthService {
9
9
  private redis;
10
10
  private config;
11
11
  constructor(httpClient: HttpClient, redis: RedisService);
12
+ /**
13
+ * Check if token matches configured API key for testing
14
+ * @private
15
+ */
16
+ private isApiKeyToken;
12
17
  /**
13
18
  * Get environment token using client credentials
14
19
  * This is called automatically by HttpClient, but can be called manually if needed
@@ -21,14 +26,17 @@ export declare class AuthService {
21
26
  login(redirectUri: string): string;
22
27
  /**
23
28
  * Validate token with controller
29
+ * If API_KEY is configured and token matches, returns true without calling controller
24
30
  */
25
31
  validateToken(token: string): Promise<boolean>;
26
32
  /**
27
33
  * Get user information from token
34
+ * If API_KEY is configured and token matches, returns null (by design for testing)
28
35
  */
29
36
  getUser(token: string): Promise<UserInfo | null>;
30
37
  /**
31
38
  * Get user information from GET /api/auth/user endpoint
39
+ * If API_KEY is configured and token matches, returns null (by design for testing)
32
40
  */
33
41
  getUserInfo(token: string): Promise<UserInfo | null>;
34
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/services/auth.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAoB,QAAQ,EAAc,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAmB;gBAErB,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;IAMvD;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IA+B5C;;;OAGG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAKlC;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAepD;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAmBtD;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAe1D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAGvD"}
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/services/auth.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAoB,QAAQ,EAAc,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAmB;gBAErB,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;IAMvD;;;OAGG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IA+B5C;;;OAGG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAKlC;;;OAGG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBtD;;;OAGG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAoB1D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAGvD"}
@@ -43,6 +43,13 @@ class AuthService {
43
43
  this.redis = redis;
44
44
  this.httpClient = httpClient;
45
45
  }
46
+ /**
47
+ * Check if token matches configured API key for testing
48
+ * @private
49
+ */
50
+ isApiKeyToken(token) {
51
+ return this.config.apiKey !== undefined && token === this.config.apiKey;
52
+ }
46
53
  /**
47
54
  * Get environment token using client credentials
48
55
  * This is called automatically by HttpClient, but can be called manually if needed
@@ -81,8 +88,13 @@ class AuthService {
81
88
  }
82
89
  /**
83
90
  * Validate token with controller
91
+ * If API_KEY is configured and token matches, returns true without calling controller
84
92
  */
85
93
  async validateToken(token) {
94
+ // Check API_KEY bypass for testing
95
+ if (this.isApiKeyToken(token)) {
96
+ return true;
97
+ }
86
98
  try {
87
99
  const result = await this.httpClient.authenticatedRequest('POST', '/api/auth/validate', // Backend knows app/env from client token
88
100
  token);
@@ -95,8 +107,13 @@ class AuthService {
95
107
  }
96
108
  /**
97
109
  * Get user information from token
110
+ * If API_KEY is configured and token matches, returns null (by design for testing)
98
111
  */
99
112
  async getUser(token) {
113
+ // Check API_KEY bypass for testing - return null by design
114
+ if (this.isApiKeyToken(token)) {
115
+ return null;
116
+ }
100
117
  try {
101
118
  const result = await this.httpClient.authenticatedRequest('POST', '/api/auth/validate', token);
102
119
  if (result.authenticated && result.user) {
@@ -111,8 +128,13 @@ class AuthService {
111
128
  }
112
129
  /**
113
130
  * Get user information from GET /api/auth/user endpoint
131
+ * If API_KEY is configured and token matches, returns null (by design for testing)
114
132
  */
115
133
  async getUserInfo(token) {
134
+ // Check API_KEY bypass for testing - return null by design
135
+ if (this.isApiKeyToken(token)) {
136
+ return null;
137
+ }
116
138
  try {
117
139
  const user = await this.httpClient.authenticatedRequest('GET', '/api/auth/user', token);
118
140
  return user;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/services/auth.service.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMH,MAAa,WAAW;IAKtB,YAAY,UAAsB,EAAE,KAAmB;QACrD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,KAAK,GAAG,CAAC,wDAAa,OAAO,GAAC,CAAC,CAAC,OAAO,CAAC;YAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC7B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;gBAClC,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;oBACnC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;iBAC5C;aACF,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CACnC,iBAAiB,CAClB,CAAC;YAEF,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,mCAAmC;gBACjC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAmB;QACvB,qEAAqE;QACrE,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,4BAA4B,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;IACnG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CACvD,MAAM,EACN,oBAAoB,EAAE,0CAA0C;YAChE,KAAK,CACN,CAAC;YAEF,OAAO,MAAM,CAAC,aAAa,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wCAAwC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,KAAa;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CACvD,MAAM,EACN,oBAAoB,EACpB,KAAK,CACN,CAAC;YAEF,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACxC,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uCAAuC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CACrD,KAAK,EACL,gBAAgB,EAChB,KAAK,CACN,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uCAAuC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0DAA0D;YAC1D,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF;AAtID,kCAsIC"}
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/services/auth.service.ts"],"names":[],"mappings":"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"}