xypriss 1.1.2 → 1.1.4

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 (55) hide show
  1. package/README.md +13 -13
  2. package/dist/cjs/index.js +2 -0
  3. package/dist/cjs/mods/security/src/index.js +35 -12
  4. package/dist/cjs/mods/security/src/index.js.map +1 -1
  5. package/dist/cjs/src/plugins/modules/PluginEngine.js +378 -0
  6. package/dist/cjs/src/plugins/modules/PluginEngine.js.map +1 -0
  7. package/dist/cjs/src/plugins/modules/PluginRegistry.js +339 -0
  8. package/dist/cjs/src/plugins/modules/PluginRegistry.js.map +1 -0
  9. package/dist/cjs/src/plugins/modules/builtin/JWTAuthPlugin.js +591 -0
  10. package/dist/cjs/src/plugins/modules/builtin/JWTAuthPlugin.js.map +1 -0
  11. package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js +413 -0
  12. package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -0
  13. package/dist/cjs/src/plugins/modules/builtin/SmartCachePlugin.js +843 -0
  14. package/dist/cjs/src/plugins/modules/builtin/SmartCachePlugin.js.map +1 -0
  15. package/dist/cjs/src/plugins/modules/core/CachePlugin.js +1975 -0
  16. package/dist/cjs/src/plugins/modules/core/CachePlugin.js.map +1 -0
  17. package/dist/cjs/src/plugins/modules/core/PerformancePlugin.js +894 -0
  18. package/dist/cjs/src/plugins/modules/core/PerformancePlugin.js.map +1 -0
  19. package/dist/cjs/src/plugins/modules/core/SecurityPlugin.js +799 -0
  20. package/dist/cjs/src/plugins/modules/core/SecurityPlugin.js.map +1 -0
  21. package/dist/cjs/src/plugins/modules/types/PluginTypes.js +47 -0
  22. package/dist/cjs/src/plugins/modules/types/PluginTypes.js.map +1 -0
  23. package/dist/cjs/src/server/FastServer.js +22 -3
  24. package/dist/cjs/src/server/FastServer.js.map +1 -1
  25. package/dist/cjs/src/server/components/fastapi/PluginManager.js +5 -5
  26. package/dist/cjs/src/server/components/fastapi/PluginManager.js.map +1 -1
  27. package/dist/cjs/src/server/components/fastapi/RequestProcessor.js +1 -1
  28. package/dist/esm/index.js +2 -0
  29. package/dist/esm/mods/security/src/index.js +14 -10
  30. package/dist/esm/mods/security/src/index.js.map +1 -1
  31. package/dist/esm/src/plugins/modules/PluginEngine.js +376 -0
  32. package/dist/esm/src/plugins/modules/PluginEngine.js.map +1 -0
  33. package/dist/esm/src/plugins/modules/PluginRegistry.js +337 -0
  34. package/dist/esm/src/plugins/modules/PluginRegistry.js.map +1 -0
  35. package/dist/esm/src/plugins/modules/builtin/JWTAuthPlugin.js +589 -0
  36. package/dist/esm/src/plugins/modules/builtin/JWTAuthPlugin.js.map +1 -0
  37. package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js +411 -0
  38. package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -0
  39. package/dist/esm/src/plugins/modules/builtin/SmartCachePlugin.js +841 -0
  40. package/dist/esm/src/plugins/modules/builtin/SmartCachePlugin.js.map +1 -0
  41. package/dist/esm/src/plugins/modules/core/CachePlugin.js +1973 -0
  42. package/dist/esm/src/plugins/modules/core/CachePlugin.js.map +1 -0
  43. package/dist/esm/src/plugins/modules/core/PerformancePlugin.js +872 -0
  44. package/dist/esm/src/plugins/modules/core/PerformancePlugin.js.map +1 -0
  45. package/dist/esm/src/plugins/modules/core/SecurityPlugin.js +797 -0
  46. package/dist/esm/src/plugins/modules/core/SecurityPlugin.js.map +1 -0
  47. package/dist/esm/src/plugins/modules/types/PluginTypes.js +47 -0
  48. package/dist/esm/src/plugins/modules/types/PluginTypes.js.map +1 -0
  49. package/dist/esm/src/server/FastServer.js +22 -3
  50. package/dist/esm/src/server/FastServer.js.map +1 -1
  51. package/dist/esm/src/server/components/fastapi/PluginManager.js +5 -5
  52. package/dist/esm/src/server/components/fastapi/PluginManager.js.map +1 -1
  53. package/dist/esm/src/server/components/fastapi/RequestProcessor.js +1 -1
  54. package/dist/index.d.ts +5 -0
  55. package/package.json +4 -4
@@ -0,0 +1,589 @@
1
+ import { SecurityPlugin } from '../core/SecurityPlugin.js';
2
+ import { PluginPriority } from '../types/PluginTypes.js';
3
+
4
+ /**
5
+ * JWT Authentication Plugin
6
+ *
7
+ * High-performance JWT authentication plugin leveraging XyPrissJS security utilities
8
+ * with <2ms execution time for token validation and user authentication.
9
+ */
10
+ /**
11
+ * JWT Authentication Plugin for ultra-fast token validation
12
+ */
13
+ class JWTAuthPlugin extends SecurityPlugin {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.id = "XyPriss.auth.jwt";
17
+ this.name = "JWT Authentication Plugin";
18
+ this.version = "1.0.0";
19
+ this.priority = PluginPriority.HIGH; // Authentication is high priority
20
+ this.jwtAlgorithm = "HS256";
21
+ this.tokenExpiry = 3600; // 1 hour
22
+ this.issuer = "XyPrissjs";
23
+ this.audience = "XyPrissjs-app";
24
+ // Performance optimization: Token cache for validated tokens
25
+ this.tokenCache = new Map();
26
+ // Rate limiting for authentication attempts
27
+ this.authAttempts = new Map();
28
+ }
29
+ /**
30
+ * Initialize JWT authentication plugin
31
+ */
32
+ async initializeSecurityPlugin(context) {
33
+ // Get JWT secret from environment or configuration
34
+ this.jwtSecret =
35
+ process.env.JWT_SECRET || context.config.customSettings.jwtSecret;
36
+ if (!this.jwtSecret) {
37
+ throw new Error("JWT secret is required for JWT authentication plugin");
38
+ }
39
+ // Configure JWT settings from context
40
+ if (context.config.customSettings.jwtAlgorithm) {
41
+ this.jwtAlgorithm = context.config.customSettings.jwtAlgorithm;
42
+ }
43
+ if (context.config.customSettings.tokenExpiry) {
44
+ this.tokenExpiry = context.config.customSettings.tokenExpiry;
45
+ }
46
+ if (context.config.customSettings.issuer) {
47
+ this.issuer = context.config.customSettings.issuer;
48
+ }
49
+ if (context.config.customSettings.audience) {
50
+ this.audience = context.config.customSettings.audience;
51
+ }
52
+ // Setup token cache cleanup
53
+ this.setupTokenCacheCleanup();
54
+ // Setup rate limiting cleanup
55
+ this.setupRateLimitingCleanup();
56
+ context.logger.info(`JWT Authentication Plugin initialized with algorithm: ${this.jwtAlgorithm}`);
57
+ }
58
+ /**
59
+ * Execute JWT authentication logic
60
+ */
61
+ async executeSecurityLogic(context) {
62
+ const { req } = context;
63
+ // Check if authentication is required for this route
64
+ if (!this.requiresAuthentication(req.path)) {
65
+ return { authenticated: false, required: false };
66
+ }
67
+ // Check rate limiting
68
+ const clientIp = req.ip || req.connection?.remoteAddress || "unknown";
69
+ if (this.isRateLimited(clientIp)) {
70
+ throw new Error("Too many authentication attempts. Please try again later.");
71
+ }
72
+ // Extract JWT token
73
+ const token = this.extractJWTToken(req);
74
+ if (!token) {
75
+ this.recordAuthAttempt(clientIp, false);
76
+ throw new Error("Authentication token is required");
77
+ }
78
+ // Check token cache first for performance
79
+ const cachedAuth = this.getCachedAuthentication(token);
80
+ if (cachedAuth) {
81
+ // Update security context with cached data
82
+ context.security.isAuthenticated = true;
83
+ context.security.userId = cachedAuth.userId;
84
+ context.security.roles = cachedAuth.roles;
85
+ context.security.permissions = cachedAuth.permissions;
86
+ return {
87
+ authenticated: true,
88
+ userId: cachedAuth.userId,
89
+ roles: cachedAuth.roles,
90
+ permissions: cachedAuth.permissions,
91
+ source: "cache",
92
+ };
93
+ }
94
+ // Validate JWT token
95
+ const authResult = await this.validateJWTToken(token);
96
+ if (!authResult.valid) {
97
+ this.recordAuthAttempt(clientIp, false);
98
+ throw new Error(authResult.error || "Invalid authentication token");
99
+ }
100
+ // Cache the authentication result
101
+ this.cacheAuthentication(token, authResult.payload);
102
+ // Update security context
103
+ context.security.isAuthenticated = true;
104
+ context.security.userId = authResult.payload.userId;
105
+ context.security.roles = authResult.payload.roles || [];
106
+ context.security.permissions = authResult.payload.permissions || [];
107
+ // Record successful authentication
108
+ this.recordAuthAttempt(clientIp, true);
109
+ return {
110
+ authenticated: true,
111
+ userId: authResult.payload.userId,
112
+ roles: authResult.payload.roles || [],
113
+ permissions: authResult.payload.permissions || [],
114
+ source: "token",
115
+ };
116
+ }
117
+ /**
118
+ * Perform authentication logic
119
+ */
120
+ async performAuthentication(authData, context) {
121
+ try {
122
+ const result = await this.executeSecurityLogic(context);
123
+ return result.authenticated;
124
+ }
125
+ catch (error) {
126
+ return false;
127
+ }
128
+ }
129
+ /**
130
+ * Perform authorization logic
131
+ */
132
+ async performAuthorization(context, resource) {
133
+ if (!context.security.isAuthenticated) {
134
+ return false;
135
+ }
136
+ // Check if user has required permissions for the resource
137
+ return await this.checkResourcePermissions(context, resource);
138
+ }
139
+ // ===== JWT-SPECIFIC METHODS =====
140
+ /**
141
+ * Extract JWT token from request
142
+ */
143
+ extractJWTToken(req) {
144
+ // Check Authorization header
145
+ const authHeader = req.headers.authorization;
146
+ if (authHeader && authHeader.startsWith("Bearer ")) {
147
+ return authHeader.substring(7);
148
+ }
149
+ // Check cookies
150
+ if (req.cookies && req.cookies.token) {
151
+ return req.cookies.token;
152
+ }
153
+ // Check query parameter (less secure, but sometimes needed)
154
+ if (req.query && req.query.token) {
155
+ return req.query.token;
156
+ }
157
+ return null;
158
+ }
159
+ /**
160
+ * Validate JWT token using XyPrissJS Hash utilities
161
+ */
162
+ async validateJWTToken(token) {
163
+ try {
164
+ // Split token into parts
165
+ const parts = token.split(".");
166
+ if (parts.length !== 3) {
167
+ return { valid: false, error: "Invalid token format" };
168
+ }
169
+ const [headerB64, payloadB64, signatureB64] = parts;
170
+ // Decode header and payload
171
+ const header = JSON.parse(this.base64UrlDecode(headerB64));
172
+ const payload = JSON.parse(this.base64UrlDecode(payloadB64));
173
+ // Verify algorithm
174
+ if (header.alg !== this.jwtAlgorithm) {
175
+ return { valid: false, error: "Invalid algorithm" };
176
+ }
177
+ // Verify signature using XyPrissJS Hash
178
+ const signatureData = `${headerB64}.${payloadB64}`;
179
+ const expectedSignature = this.hashUtil.create(signatureData + this.jwtSecret, {
180
+ algorithm: "sha256",
181
+ outputFormat: "base64",
182
+ });
183
+ const expectedSignatureB64 = this.base64UrlEncode(expectedSignature);
184
+ if (signatureB64 !== expectedSignatureB64) {
185
+ return { valid: false, error: "Invalid signature" };
186
+ }
187
+ // Verify expiration
188
+ if (payload.exp && Date.now() / 1000 > payload.exp) {
189
+ return { valid: false, error: "Token expired" };
190
+ }
191
+ // Verify issuer
192
+ if (payload.iss && payload.iss !== this.issuer) {
193
+ return { valid: false, error: "Invalid issuer" };
194
+ }
195
+ // Verify audience
196
+ if (payload.aud && payload.aud !== this.audience) {
197
+ return { valid: false, error: "Invalid audience" };
198
+ }
199
+ return { valid: true, payload };
200
+ }
201
+ catch (error) {
202
+ return { valid: false, error: error.message };
203
+ }
204
+ }
205
+ /**
206
+ * Check if route requires authentication
207
+ */
208
+ requiresAuthentication(path) {
209
+ // Public routes that don't require authentication
210
+ const publicRoutes = [
211
+ "/",
212
+ "/health",
213
+ "/login",
214
+ "/register",
215
+ "/public",
216
+ "/XyPriss/health",
217
+ ];
218
+ // Check if path starts with any public route
219
+ return !publicRoutes.some((route) => path.startsWith(route));
220
+ }
221
+ /**
222
+ * Check resource permissions (override from SecurityPlugin)
223
+ */
224
+ async checkResourcePermissions(context, resource) {
225
+ // Simple permission checking - can be enhanced based on requirements
226
+ const userPermissions = context.security.permissions;
227
+ const requiredPermissions = this.getRequiredPermissions(resource);
228
+ return requiredPermissions.every((permission) => userPermissions.includes(permission) ||
229
+ userPermissions.includes("admin"));
230
+ }
231
+ /**
232
+ * Get required permissions for resource
233
+ */
234
+ getRequiredPermissions(resource) {
235
+ // Map resources to required permissions
236
+ const permissionMap = {
237
+ "/api/users": ["user.read"],
238
+ "/api/users/create": ["user.write"],
239
+ "/api/users/delete": ["user.delete"],
240
+ "/api/admin": ["admin"],
241
+ "/api/reports": ["report.read"],
242
+ };
243
+ return permissionMap[resource] || ["authenticated"];
244
+ }
245
+ // ===== CACHING METHODS =====
246
+ /**
247
+ * Get cached authentication result
248
+ */
249
+ getCachedAuthentication(token) {
250
+ const cached = this.tokenCache.get(token);
251
+ if (!cached)
252
+ return null;
253
+ // Check if cached token is expired
254
+ if (Date.now() > cached.expiry) {
255
+ this.tokenCache.delete(token);
256
+ return null;
257
+ }
258
+ return cached;
259
+ }
260
+ /**
261
+ * Cache authentication result
262
+ */
263
+ cacheAuthentication(token, payload) {
264
+ const expiry = Date.now() + this.tokenExpiry * 1000;
265
+ this.tokenCache.set(token, {
266
+ userId: payload.userId || payload.sub,
267
+ roles: payload.roles || [],
268
+ permissions: payload.permissions || [],
269
+ expiry,
270
+ });
271
+ }
272
+ /**
273
+ * Setup token cache cleanup
274
+ */
275
+ setupTokenCacheCleanup() {
276
+ // Clean up expired tokens every 5 minutes
277
+ setInterval(() => {
278
+ const now = Date.now();
279
+ for (const [token, cached] of this.tokenCache.entries()) {
280
+ if (now > cached.expiry) {
281
+ this.tokenCache.delete(token);
282
+ }
283
+ }
284
+ }, 300000); // 5 minutes
285
+ }
286
+ // ===== RATE LIMITING METHODS =====
287
+ /**
288
+ * Check if IP is rate limited
289
+ */
290
+ isRateLimited(ip) {
291
+ const attempt = this.authAttempts.get(ip);
292
+ if (!attempt)
293
+ return false;
294
+ // Reset after 15 minutes
295
+ if (Date.now() - attempt.lastAttempt > 900000) {
296
+ this.authAttempts.delete(ip);
297
+ return false;
298
+ }
299
+ return attempt.blocked;
300
+ }
301
+ /**
302
+ * Record authentication attempt
303
+ */
304
+ recordAuthAttempt(ip, success) {
305
+ const now = Date.now();
306
+ const attempt = this.authAttempts.get(ip) || {
307
+ count: 0,
308
+ lastAttempt: now,
309
+ blocked: false,
310
+ };
311
+ if (success) {
312
+ // Reset on successful authentication
313
+ this.authAttempts.delete(ip);
314
+ }
315
+ else {
316
+ attempt.count++;
317
+ attempt.lastAttempt = now;
318
+ // Block after 5 failed attempts
319
+ if (attempt.count >= 5) {
320
+ attempt.blocked = true;
321
+ }
322
+ this.authAttempts.set(ip, attempt);
323
+ }
324
+ }
325
+ /**
326
+ * Setup rate limiting cleanup
327
+ */
328
+ setupRateLimitingCleanup() {
329
+ // Clean up old rate limiting records every 10 minutes
330
+ setInterval(() => {
331
+ const now = Date.now();
332
+ for (const [ip, attempt] of this.authAttempts.entries()) {
333
+ if (now - attempt.lastAttempt > 900000) {
334
+ // 15 minutes
335
+ this.authAttempts.delete(ip);
336
+ }
337
+ }
338
+ }, 600000); // 10 minutes
339
+ }
340
+ // ===== UTILITY METHODS =====
341
+ /**
342
+ * Base64 URL decode
343
+ */
344
+ base64UrlDecode(str) {
345
+ // Add padding if needed
346
+ str += "=".repeat((4 - (str.length % 4)) % 4);
347
+ // Replace URL-safe characters
348
+ str = str.replace(/-/g, "+").replace(/_/g, "/");
349
+ return Buffer.from(str, "base64").toString("utf8");
350
+ }
351
+ /**
352
+ * Base64 URL encode
353
+ */
354
+ base64UrlEncode(str) {
355
+ return Buffer.from(str)
356
+ .toString("base64")
357
+ .replace(/\+/g, "-")
358
+ .replace(/\//g, "_")
359
+ .replace(/=/g, "");
360
+ }
361
+ // ===== SECURITY VALIDATION OVERRIDES =====
362
+ /**
363
+ * Validate request body for security threats
364
+ */
365
+ validateRequestBody(body) {
366
+ if (!body || typeof body !== "object") {
367
+ return true; // No body to validate
368
+ }
369
+ try {
370
+ // Check for suspicious patterns in body
371
+ const bodyString = JSON.stringify(body);
372
+ // Check for SQL injection patterns
373
+ const sqlPatterns = [
374
+ /(\b(SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC|UNION)\b)/i,
375
+ /(--|\/\*|\*\/|;)/,
376
+ /(\b(OR|AND)\s+\d+\s*=\s*\d+)/i,
377
+ ];
378
+ for (const pattern of sqlPatterns) {
379
+ if (pattern.test(bodyString)) {
380
+ console.warn(`SQL injection pattern detected in request body: ${this.id}`);
381
+ return false;
382
+ }
383
+ }
384
+ // Check for XSS patterns
385
+ const xssPatterns = [
386
+ /<script[^>]*>.*?<\/script>/gi,
387
+ /javascript:/gi,
388
+ /on\w+\s*=/gi,
389
+ /<iframe[^>]*>.*?<\/iframe>/gi,
390
+ ];
391
+ for (const pattern of xssPatterns) {
392
+ if (pattern.test(bodyString)) {
393
+ console.warn(`XSS pattern detected in request body: ${this.id}`);
394
+ return false;
395
+ }
396
+ }
397
+ return true;
398
+ }
399
+ catch (error) {
400
+ console.error(`Error validating request body: ${error}`);
401
+ return false;
402
+ }
403
+ }
404
+ /**
405
+ * Validate query parameters for security threats
406
+ */
407
+ validateQueryParameters(query) {
408
+ if (!query || typeof query !== "object") {
409
+ return true; // No query params to validate
410
+ }
411
+ try {
412
+ for (const [key, value] of Object.entries(query)) {
413
+ if (typeof value === "string") {
414
+ // Check for path traversal
415
+ if (value.includes("../") || value.includes("..\\")) {
416
+ console.warn(`Path traversal detected in query param ${key}: ${this.id}`);
417
+ return false;
418
+ }
419
+ // Check for command injection
420
+ const cmdPatterns = [
421
+ /[;&|`$()]/,
422
+ /\b(cat|ls|pwd|whoami|id|uname|ps|netstat|ifconfig)\b/i,
423
+ ];
424
+ for (const pattern of cmdPatterns) {
425
+ if (pattern.test(value)) {
426
+ console.warn(`Command injection pattern detected in query param ${key}: ${this.id}`);
427
+ return false;
428
+ }
429
+ }
430
+ }
431
+ }
432
+ return true;
433
+ }
434
+ catch (error) {
435
+ console.error(`Error validating query parameters: ${error}`);
436
+ return false;
437
+ }
438
+ }
439
+ /**
440
+ * Validate headers for security threats
441
+ */
442
+ validateHeaders(headers) {
443
+ if (!headers || typeof headers !== "object") {
444
+ return true; // No headers to validate
445
+ }
446
+ try {
447
+ // Check for suspicious user agents
448
+ const userAgent = headers["user-agent"];
449
+ if (userAgent) {
450
+ const suspiciousPatterns = [
451
+ /sqlmap/i,
452
+ /nikto/i,
453
+ /nessus/i,
454
+ /burp/i,
455
+ /scanner/i,
456
+ ];
457
+ for (const pattern of suspiciousPatterns) {
458
+ if (pattern.test(userAgent)) {
459
+ console.warn(`Suspicious user agent detected: ${this.id}`);
460
+ return false;
461
+ }
462
+ }
463
+ }
464
+ // Check for header injection
465
+ for (const [key, value] of Object.entries(headers)) {
466
+ if (typeof value === "string") {
467
+ if (value.includes("\r") || value.includes("\n")) {
468
+ console.warn(`Header injection detected in ${key}: ${this.id}`);
469
+ return false;
470
+ }
471
+ }
472
+ }
473
+ return true;
474
+ }
475
+ catch (error) {
476
+ console.error(`Error validating headers: ${error}`);
477
+ return false;
478
+ }
479
+ }
480
+ /**
481
+ * Apply data sanitization rules
482
+ */
483
+ applySanitizationRules(data) {
484
+ if (!data || typeof data !== "object") {
485
+ return data;
486
+ }
487
+ try {
488
+ // Use fObject for secure data handling
489
+ const secureData = this.secureObjectUtil(data);
490
+ // Get sanitized data
491
+ const sanitized = secureData.getAll();
492
+ // Additional sanitization for JWT-specific data
493
+ if (sanitized.token) {
494
+ // Remove any non-JWT token patterns
495
+ sanitized.token = sanitized.token.replace(/[^A-Za-z0-9._-]/g, "");
496
+ }
497
+ if (sanitized.userId) {
498
+ // Sanitize user ID to alphanumeric only
499
+ sanitized.userId = sanitized.userId
500
+ .toString()
501
+ .replace(/[^A-Za-z0-9-_]/g, "");
502
+ }
503
+ return sanitized;
504
+ }
505
+ catch (error) {
506
+ console.error(`Error applying sanitization rules: ${error}`);
507
+ return data; // Return original data if sanitization fails
508
+ }
509
+ }
510
+ /**
511
+ * Parse authorization header
512
+ */
513
+ parseAuthorizationHeader(header) {
514
+ try {
515
+ if (header.startsWith("Bearer ")) {
516
+ const token = header.substring(7);
517
+ return {
518
+ type: "bearer",
519
+ token: token,
520
+ userId: null, // Will be extracted from token
521
+ };
522
+ }
523
+ if (header.startsWith("Basic ")) {
524
+ const credentials = Buffer.from(header.substring(6), "base64").toString("utf8");
525
+ const [username, password] = credentials.split(":");
526
+ return {
527
+ type: "basic",
528
+ username,
529
+ password,
530
+ userId: username,
531
+ };
532
+ }
533
+ return null;
534
+ }
535
+ catch (error) {
536
+ console.error(`Error parsing authorization header: ${error}`);
537
+ return null;
538
+ }
539
+ }
540
+ /**
541
+ * Parse authentication cookies
542
+ */
543
+ parseAuthenticationCookies(cookies) {
544
+ try {
545
+ if (cookies.token) {
546
+ return {
547
+ type: "cookie",
548
+ token: cookies.token,
549
+ userId: null, // Will be extracted from token
550
+ };
551
+ }
552
+ if (cookies.sessionId) {
553
+ return {
554
+ type: "session",
555
+ sessionId: cookies.sessionId,
556
+ userId: null, // Will be extracted from session
557
+ };
558
+ }
559
+ return null;
560
+ }
561
+ catch (error) {
562
+ console.error(`Error parsing authentication cookies: ${error}`);
563
+ return null;
564
+ }
565
+ }
566
+ /**
567
+ * Parse session data
568
+ */
569
+ parseSessionData(session) {
570
+ try {
571
+ if (session.userId) {
572
+ return {
573
+ type: "session",
574
+ userId: session.userId,
575
+ roles: session.roles || [],
576
+ permissions: session.permissions || [],
577
+ };
578
+ }
579
+ return null;
580
+ }
581
+ catch (error) {
582
+ console.error(`Error parsing session data: ${error}`);
583
+ return null;
584
+ }
585
+ }
586
+ }
587
+
588
+ export { JWTAuthPlugin };
589
+ //# sourceMappingURL=JWTAuthPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JWTAuthPlugin.js","sources":["../../../../../../src/plugins/modules/builtin/JWTAuthPlugin.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AASH;;AAEG;AACG,MAAO,aAAc,SAAQ,cAAc,CAAA;AAAjD,IAAA,WAAA,GAAA;;QACoB,IAAE,CAAA,EAAA,GAAG,kBAAkB,CAAC;QACxB,IAAI,CAAA,IAAA,GAAG,2BAA2B,CAAC;QACnC,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;AAClB,QAAA,IAAA,CAAA,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;QAIvC,IAAY,CAAA,YAAA,GAAG,OAAO,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC;QACnB,IAAM,CAAA,MAAA,GAAG,WAAW,CAAC;QACrB,IAAQ,CAAA,QAAA,GAAG,eAAe,CAAC;;AAG3B,QAAA,IAAA,CAAA,UAAU,GAQd,IAAI,GAAG,EAAE,CAAC;;AAGN,QAAA,IAAA,CAAA,YAAY,GAOhB,IAAI,GAAG,EAAE,CAAC;KAirBjB;AA/qBG;;AAEG;IACO,MAAM,wBAAwB,CACpC,OAAoC,EAAA;;AAGpC,QAAA,IAAI,CAAC,SAAS;AACV,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;AAEtE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CACX,sDAAsD,CACzD,CAAC;SACL;;QAGD,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE;YAC5C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC;SAClE;QAED,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE;YAC3C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC;SAChE;QAED,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;YACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;SACtD;QAED,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;SAC1D;;QAGD,IAAI,CAAC,sBAAsB,EAAE,CAAC;;QAG9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,OAAO,CAAC,MAAM,CAAC,IAAI,CACf,CAAyD,sDAAA,EAAA,IAAI,CAAC,YAAY,CAAE,CAAA,CAC/E,CAAC;KACL;AAED;;AAEG;IACO,MAAM,oBAAoB,CAChC,OAA+B,EAAA;AAE/B,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;;QAGxB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACxC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;SACpD;;AAGD,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,SAAS,CAAC;AACtE,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CACX,2DAA2D,CAC9D,CAAC;SACL;;QAGD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACxC,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACvD;;QAGD,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,UAAU,EAAE;;AAEZ,YAAA,OAAO,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;YACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;YAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;YAEtD,OAAO;AACH,gBAAA,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,WAAW,EAAE,UAAU,CAAC,WAAW;AACnC,gBAAA,MAAM,EAAE,OAAO;aAClB,CAAC;SACL;;QAGD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,8BAA8B,CAAC,CAAC;SACvE;;QAGD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;;AAGpD,QAAA,OAAO,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;QACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;AACpD,QAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACxD,QAAA,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;;AAGpE,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEvC,OAAO;AACH,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;AACjC,YAAA,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;AACrC,YAAA,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACjD,YAAA,MAAM,EAAE,OAAO;SAClB,CAAC;KACL;AAED;;AAEG;AACO,IAAA,MAAM,qBAAqB,CACjC,QAAa,EACb,OAA+B,EAAA;AAE/B,QAAA,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,aAAa,CAAC;SAC/B;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ;AAED;;AAEG;AACO,IAAA,MAAM,oBAAoB,CAChC,OAA+B,EAC/B,QAAgB,EAAA;AAEhB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;AACnC,YAAA,OAAO,KAAK,CAAC;SAChB;;QAGD,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACjE;;AAID;;AAEG;AACK,IAAA,eAAe,CAAC,GAAQ,EAAA;;AAE5B,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAChD,YAAA,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAClC;;QAGD,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;AAClC,YAAA,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;SAC5B;;QAGD,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;AAC9B,YAAA,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;SAC1B;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACK,MAAM,gBAAgB,CAAC,KAAa,EAAA;AAKxC,QAAA,IAAI;;YAEA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;aAC1D;YAED,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC;;AAGpD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;;YAG7D,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,EAAE;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;aACvD;;AAGD,YAAA,MAAM,aAAa,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,UAAU,EAAE,CAAC;AACnD,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAS,CAAC,MAAM,CAC3C,aAAa,GAAG,IAAI,CAAC,SAAS,EAC9B;AACI,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,YAAY,EAAE,QAAQ;AACzB,aAAA,CACM,CAAC;YAEZ,MAAM,oBAAoB,GACtB,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;AAC5C,YAAA,IAAI,YAAY,KAAK,oBAAoB,EAAE;gBACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;aACvD;;AAGD,YAAA,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;gBAChD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;aACnD;;AAGD,YAAA,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE;gBAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;aACpD;;AAGD,YAAA,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;aACtD;AAED,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SACnC;QAAC,OAAO,KAAU,EAAE;YACjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;SACjD;KACJ;AAED;;AAEG;AACK,IAAA,sBAAsB,CAAC,IAAY,EAAA;;AAEvC,QAAA,MAAM,YAAY,GAAG;YACjB,GAAG;YACH,SAAS;YACT,QAAQ;YACR,WAAW;YACX,SAAS;YACT,iBAAiB;SACpB,CAAC;;AAGF,QAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;KAChE;AAED;;AAEG;AACO,IAAA,MAAM,wBAAwB,CACpC,OAA+B,EAC/B,QAAgB,EAAA;;AAGhB,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAElE,QAAA,OAAO,mBAAmB,CAAC,KAAK,CAC5B,CAAC,UAAU,KACP,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;AACpC,YAAA,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CACxC,CAAC;KACL;AAED;;AAEG;AACK,IAAA,sBAAsB,CAAC,QAAgB,EAAA;;AAE3C,QAAA,MAAM,aAAa,GAA6B;YAC5C,YAAY,EAAE,CAAC,WAAW,CAAC;YAC3B,mBAAmB,EAAE,CAAC,YAAY,CAAC;YACnC,mBAAmB,EAAE,CAAC,aAAa,CAAC;YACpC,YAAY,EAAE,CAAC,OAAO,CAAC;YACvB,cAAc,EAAE,CAAC,aAAa,CAAC;SAClC,CAAC;QAEF,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACvD;;AAID;;AAEG;AACK,IAAA,uBAAuB,CAAC,KAAa,EAAA;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;;QAGzB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,YAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;AAEG;IACK,mBAAmB,CAAC,KAAa,EAAE,OAAY,EAAA;AACnD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAEpD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE;AACvB,YAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG;AACrC,YAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;AAC1B,YAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YACtC,MAAM;AACT,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACK,sBAAsB,GAAA;;QAE1B,WAAW,CAAC,MAAK;AACb,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE;AACrD,gBAAA,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE;AACrB,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjC;aACJ;AACL,SAAC,EAAE,MAAM,CAAC,CAAC;KACd;;AAID;;AAEG;AACK,IAAA,aAAa,CAAC,EAAU,EAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK,CAAC;;QAG3B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7B,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,OAAO,CAAC,OAAO,CAAC;KAC1B;AAED;;AAEG;IACK,iBAAiB,CAAC,EAAU,EAAE,OAAgB,EAAA;AAClD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AACzC,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,OAAO,EAAE,KAAK;SACjB,CAAC;QAEF,IAAI,OAAO,EAAE;;AAET,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAChC;aAAM;YACH,OAAO,CAAC,KAAK,EAAE,CAAC;AAChB,YAAA,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC;;AAG1B,YAAA,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE;AACpB,gBAAA,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;aAC1B;YAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;SACtC;KACJ;AAED;;AAEG;IACK,wBAAwB,GAAA;;QAE5B,WAAW,CAAC,MAAK;AACb,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,YAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE;gBACrD,IAAI,GAAG,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,EAAE;;AAEpC,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;iBAChC;aACJ;AACL,SAAC,EAAE,MAAM,CAAC,CAAC;KACd;;AAID;;AAEG;AACK,IAAA,eAAe,CAAC,GAAW,EAAA;;AAE/B,QAAA,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;AAE9C,QAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAChD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACtD;AAED;;AAEG;AACK,IAAA,eAAe,CAAC,GAAW,EAAA;AAC/B,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAClB,QAAQ,CAAC,QAAQ,CAAC;AAClB,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,aAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KAC1B;;AAID;;AAEG;AACO,IAAA,mBAAmB,CAAC,IAAS,EAAA;QACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACnC,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAI;;YAEA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;AAGxC,YAAA,MAAM,WAAW,GAAG;gBAChB,mEAAmE;gBACnE,kBAAkB;gBAClB,+BAA+B;aAClC,CAAC;AAEF,YAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AAC/B,gBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC1B,OAAO,CAAC,IAAI,CACR,CAAA,gDAAA,EAAmD,IAAI,CAAC,EAAE,CAAE,CAAA,CAC/D,CAAC;AACF,oBAAA,OAAO,KAAK,CAAC;iBAChB;aACJ;;AAGD,YAAA,MAAM,WAAW,GAAG;gBAChB,8BAA8B;gBAC9B,eAAe;gBACf,aAAa;gBACb,8BAA8B;aACjC,CAAC;AAEF,YAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AAC/B,gBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC1B,OAAO,CAAC,IAAI,CACR,CAAA,sCAAA,EAAyC,IAAI,CAAC,EAAE,CAAE,CAAA,CACrD,CAAC;AACF,oBAAA,OAAO,KAAK,CAAC;iBAChB;aACJ;AAED,YAAA,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAA,CAAE,CAAC,CAAC;AACzD,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ;AAED;;AAEG;AACO,IAAA,uBAAuB,CAAC,KAAU,EAAA;QACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACrC,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAI;AACA,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9C,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAE3B,oBAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;wBACjD,OAAO,CAAC,IAAI,CACR,CAA0C,uCAAA,EAAA,GAAG,CAAK,EAAA,EAAA,IAAI,CAAC,EAAE,CAAE,CAAA,CAC9D,CAAC;AACF,wBAAA,OAAO,KAAK,CAAC;qBAChB;;AAGD,oBAAA,MAAM,WAAW,GAAG;wBAChB,WAAW;wBACX,uDAAuD;qBAC1D,CAAC;AAEF,oBAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AAC/B,wBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;4BACrB,OAAO,CAAC,IAAI,CACR,CAAqD,kDAAA,EAAA,GAAG,CAAK,EAAA,EAAA,IAAI,CAAC,EAAE,CAAE,CAAA,CACzE,CAAC;AACF,4BAAA,OAAO,KAAK,CAAC;yBAChB;qBACJ;iBACJ;aACJ;AAED,YAAA,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,KAAK,CAAA,CAAE,CAAC,CAAC;AAC7D,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ;AAED;;AAEG;AACO,IAAA,eAAe,CAAC,OAAY,EAAA;QAClC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACzC,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAI;;AAEA,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,SAAS,EAAE;AACX,gBAAA,MAAM,kBAAkB,GAAG;oBACvB,SAAS;oBACT,QAAQ;oBACR,SAAS;oBACT,OAAO;oBACP,UAAU;iBACb,CAAC;AAEF,gBAAA,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE;AACtC,oBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;wBACzB,OAAO,CAAC,IAAI,CACR,CAAA,gCAAA,EAAmC,IAAI,CAAC,EAAE,CAAE,CAAA,CAC/C,CAAC;AACF,wBAAA,OAAO,KAAK,CAAC;qBAChB;iBACJ;aACJ;;AAGD,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAChD,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,oBAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAC9C,OAAO,CAAC,IAAI,CACR,CAAgC,6BAAA,EAAA,GAAG,CAAK,EAAA,EAAA,IAAI,CAAC,EAAE,CAAE,CAAA,CACpD,CAAC;AACF,wBAAA,OAAO,KAAK,CAAC;qBAChB;iBACJ;aACJ;AAED,YAAA,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAA,CAAE,CAAC,CAAC;AACpD,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ;AAED;;AAEG;AACO,IAAA,sBAAsB,CAAC,IAAS,EAAA;QACtC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAI;;YAEA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAiB,CAAC,IAAI,CAAC,CAAC;;AAGhD,YAAA,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;;AAGtC,YAAA,IAAI,SAAS,CAAC,KAAK,EAAE;;AAEjB,gBAAA,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CACrC,kBAAkB,EAClB,EAAE,CACL,CAAC;aACL;AAED,YAAA,IAAI,SAAS,CAAC,MAAM,EAAE;;AAElB,gBAAA,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;AAC9B,qBAAA,QAAQ,EAAE;AACV,qBAAA,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;aACvC;AAED,YAAA,OAAO,SAAS,CAAC;SACpB;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,KAAK,CAAA,CAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;SACf;KACJ;AAED;;AAEG;AACO,IAAA,wBAAwB,CAAC,MAAc,EAAA;AAC7C,QAAA,IAAI;AACA,YAAA,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAClC,OAAO;AACH,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,IAAI;iBACf,CAAC;aACL;AAED,YAAA,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAC3B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EACnB,QAAQ,CACX,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnB,gBAAA,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpD,OAAO;AACH,oBAAA,IAAI,EAAE,OAAO;oBACb,QAAQ;oBACR,QAAQ;AACR,oBAAA,MAAM,EAAE,QAAQ;iBACnB,CAAC;aACL;AAED,YAAA,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,KAAK,CAAA,CAAE,CAAC,CAAC;AAC9D,YAAA,OAAO,IAAI,CAAC;SACf;KACJ;AAED;;AAEG;AACO,IAAA,0BAA0B,CAAC,OAAY,EAAA;AAC7C,QAAA,IAAI;AACA,YAAA,IAAI,OAAO,CAAC,KAAK,EAAE;gBACf,OAAO;AACH,oBAAA,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,MAAM,EAAE,IAAI;iBACf,CAAC;aACL;AAED,YAAA,IAAI,OAAO,CAAC,SAAS,EAAE;gBACnB,OAAO;AACH,oBAAA,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,MAAM,EAAE,IAAI;iBACf,CAAC;aACL;AAED,YAAA,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,KAAK,CAAA,CAAE,CAAC,CAAC;AAChE,YAAA,OAAO,IAAI,CAAC;SACf;KACJ;AAED;;AAEG;AACO,IAAA,gBAAgB,CAAC,OAAY,EAAA;AACnC,QAAA,IAAI;AACA,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChB,OAAO;AACH,oBAAA,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,oBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;AAC1B,oBAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;iBACzC,CAAC;aACL;AAED,YAAA,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,CAAA,CAAE,CAAC,CAAC;AACtD,YAAA,OAAO,IAAI,CAAC;SACf;KACJ;AACJ;;;;"}