@siriux/access-control 1.0.0 → 1.0.1

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.
@@ -0,0 +1,113 @@
1
+ export declare enum Permission {
2
+ READ_OWN_PROFILE = "read:own_profile",
3
+ UPDATE_OWN_PROFILE = "update:own_profile",
4
+ DELETE_OWN_ACCOUNT = "delete:own_account",
5
+ READ_CONTENT = "read:content",
6
+ CREATE_CONTENT = "create:content",
7
+ UPDATE_OWN_CONTENT = "update:own_content",
8
+ DELETE_OWN_CONTENT = "delete:own_content",
9
+ READ_ALL_USERS = "read:all_users",
10
+ UPDATE_ALL_USERS = "update:all_users",
11
+ DELETE_ALL_USERS = "delete:all_users",
12
+ MANAGE_ROLES = "manage:roles",
13
+ READ_SYSTEM_LOGS = "read:system_logs",
14
+ MANAGE_SYSTEM_CONFIG = "manage:system_config",
15
+ VIEW_ANALYTICS = "view:analytics",
16
+ EXPORT_DATA = "export:data"
17
+ }
18
+ export declare enum Role {
19
+ USER = "user",
20
+ MANAGER = "manager",
21
+ ADMIN = "admin",
22
+ SUPER_ADMIN = "super_admin"
23
+ }
24
+ export interface User {
25
+ id: string;
26
+ email: string;
27
+ role: Role;
28
+ permissions: Permission[];
29
+ groups: string[];
30
+ metadata?: Record<string, any>;
31
+ }
32
+ export interface Resource {
33
+ id: string;
34
+ type: string;
35
+ ownerId?: string;
36
+ attributes: Record<string, any>;
37
+ createdAt: string;
38
+ updatedAt: string;
39
+ }
40
+ export interface AccessRule {
41
+ id: string;
42
+ name: string;
43
+ description: string;
44
+ conditions: {
45
+ roles?: Role[];
46
+ permissions?: Permission[];
47
+ groups?: string[];
48
+ custom?: (user: User, resource: Resource, action: string) => Promise<boolean>;
49
+ };
50
+ effect: 'allow' | 'deny';
51
+ priority: number;
52
+ }
53
+ export interface MockAccessControlConfig {
54
+ enableCaching: boolean;
55
+ cacheTimeout: number;
56
+ enableAuditLogging: boolean;
57
+ defaultEffect: 'allow' | 'deny';
58
+ }
59
+ export declare class MockAccessControl {
60
+ private config;
61
+ private users;
62
+ private resources;
63
+ private rules;
64
+ private cache;
65
+ private auditLogs;
66
+ constructor(config?: Partial<MockAccessControlConfig>);
67
+ private initializeDefaultData;
68
+ private generateCacheKey;
69
+ private evaluateRule;
70
+ private logAccessDecision;
71
+ canAccess(userId: string, resource: string, action: string): Promise<{
72
+ allowed: boolean;
73
+ reason: string;
74
+ rule?: string;
75
+ }>;
76
+ addUser(user: Omit<User, 'id'>): Promise<User>;
77
+ updateUser(userId: string, updates: Partial<User>): Promise<User | null>;
78
+ getUser(userId: string): Promise<User | null>;
79
+ getAllUsers(): Promise<User[]>;
80
+ addResource(resource: Omit<Resource, 'id' | 'createdAt' | 'updatedAt'>): Promise<Resource>;
81
+ getResource(resourceId: string): Promise<Resource | null>;
82
+ getUserResources(userId: string): Promise<Resource[]>;
83
+ addRule(rule: Omit<AccessRule, 'id'>): Promise<AccessRule>;
84
+ updateRule(ruleId: string, updates: Partial<AccessRule>): Promise<AccessRule | null>;
85
+ removeRule(ruleId: string): Promise<boolean>;
86
+ getAllRules(): Promise<AccessRule[]>;
87
+ hasPermission(userId: string, permission: Permission): Promise<boolean>;
88
+ hasRole(userId: string, role: Role): Promise<boolean>;
89
+ isInGroup(userId: string, group: string): Promise<boolean>;
90
+ getAuditLogs(userId?: string, limit?: number): Promise<any[]>;
91
+ getAccessStats(): Promise<{
92
+ totalUsers: number;
93
+ totalResources: number;
94
+ totalRules: number;
95
+ totalAuditLogs: number;
96
+ accessByRole: Record<Role, number>;
97
+ mostAccessedResources: Array<{
98
+ resource: string;
99
+ count: number;
100
+ }>;
101
+ recentDenials: number;
102
+ }>;
103
+ clearCache(): void;
104
+ clearCacheForUser(userId: string): void;
105
+ clearAuditLogs(): void;
106
+ getCacheStats(): {
107
+ size: number;
108
+ hitRate: number;
109
+ };
110
+ }
111
+ export declare const createMockAccessControl: (config?: Partial<MockAccessControlConfig>) => MockAccessControl;
112
+ export declare const createEnvironmentAccessControl: () => MockAccessControl;
113
+ //# sourceMappingURL=mockAccessControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockAccessControl.d.ts","sourceRoot":"","sources":["../../src/mock/mockAccessControl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,411 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEnvironmentAccessControl = exports.createMockAccessControl = exports.MockAccessControl = exports.Role = exports.Permission = void 0;
4
+ // Mock access control system with role-based permissions
5
+ var Permission;
6
+ (function (Permission) {
7
+ // User permissions
8
+ Permission["READ_OWN_PROFILE"] = "read:own_profile";
9
+ Permission["UPDATE_OWN_PROFILE"] = "update:own_profile";
10
+ Permission["DELETE_OWN_ACCOUNT"] = "delete:own_account";
11
+ // Content permissions
12
+ Permission["READ_CONTENT"] = "read:content";
13
+ Permission["CREATE_CONTENT"] = "create:content";
14
+ Permission["UPDATE_OWN_CONTENT"] = "update:own_content";
15
+ Permission["DELETE_OWN_CONTENT"] = "delete:own_content";
16
+ // Admin permissions
17
+ Permission["READ_ALL_USERS"] = "read:all_users";
18
+ Permission["UPDATE_ALL_USERS"] = "update:all_users";
19
+ Permission["DELETE_ALL_USERS"] = "delete:all_users";
20
+ Permission["MANAGE_ROLES"] = "manage:roles";
21
+ // System permissions
22
+ Permission["READ_SYSTEM_LOGS"] = "read:system_logs";
23
+ Permission["MANAGE_SYSTEM_CONFIG"] = "manage:system_config";
24
+ Permission["VIEW_ANALYTICS"] = "view:analytics";
25
+ Permission["EXPORT_DATA"] = "export:data";
26
+ })(Permission || (exports.Permission = Permission = {}));
27
+ var Role;
28
+ (function (Role) {
29
+ Role["USER"] = "user";
30
+ Role["MANAGER"] = "manager";
31
+ Role["ADMIN"] = "admin";
32
+ Role["SUPER_ADMIN"] = "super_admin";
33
+ })(Role || (exports.Role = Role = {}));
34
+ class MockAccessControl {
35
+ constructor(config = {}) {
36
+ this.users = new Map();
37
+ this.resources = new Map();
38
+ this.rules = new Map();
39
+ this.cache = new Map();
40
+ this.auditLogs = [];
41
+ this.config = {
42
+ enableCaching: true,
43
+ cacheTimeout: 300000, // 5 minutes
44
+ enableAuditLogging: true,
45
+ defaultEffect: 'deny',
46
+ ...config
47
+ };
48
+ this.initializeDefaultData();
49
+ }
50
+ initializeDefaultData() {
51
+ // Default users
52
+ const defaultUsers = [
53
+ {
54
+ id: '1',
55
+ email: 'admin@siriux.dev',
56
+ role: Role.ADMIN,
57
+ permissions: Object.values(Permission),
58
+ groups: ['administrators', 'system'],
59
+ metadata: { department: 'IT', level: 'senior' }
60
+ },
61
+ {
62
+ id: '2',
63
+ email: 'user@siriux.dev',
64
+ role: Role.USER,
65
+ permissions: [
66
+ Permission.READ_OWN_PROFILE,
67
+ Permission.UPDATE_OWN_PROFILE,
68
+ Permission.READ_CONTENT,
69
+ Permission.CREATE_CONTENT,
70
+ Permission.UPDATE_OWN_CONTENT,
71
+ Permission.DELETE_OWN_CONTENT
72
+ ],
73
+ groups: ['users'],
74
+ metadata: { department: 'Sales', level: 'junior' }
75
+ },
76
+ {
77
+ id: '3',
78
+ email: 'manager@siriux.dev',
79
+ role: Role.MANAGER,
80
+ permissions: [
81
+ Permission.READ_OWN_PROFILE,
82
+ Permission.UPDATE_OWN_PROFILE,
83
+ Permission.READ_CONTENT,
84
+ Permission.CREATE_CONTENT,
85
+ Permission.UPDATE_OWN_CONTENT,
86
+ Permission.DELETE_OWN_CONTENT,
87
+ Permission.READ_ALL_USERS,
88
+ Permission.VIEW_ANALYTICS
89
+ ],
90
+ groups: ['managers', 'users'],
91
+ metadata: { department: 'Sales', level: 'manager' }
92
+ }
93
+ ];
94
+ defaultUsers.forEach(user => {
95
+ this.users.set(user.id, user);
96
+ });
97
+ // Default access rules
98
+ const defaultRules = [
99
+ {
100
+ id: 'admin_full_access',
101
+ name: 'Admin Full Access',
102
+ description: 'Administrators have full access to all resources',
103
+ conditions: {
104
+ roles: [Role.ADMIN, Role.SUPER_ADMIN]
105
+ },
106
+ effect: 'allow',
107
+ priority: 100
108
+ },
109
+ {
110
+ id: 'owner_access',
111
+ name: 'Resource Owner Access',
112
+ description: 'Users can access their own resources',
113
+ conditions: {
114
+ custom: async (user, resource, action) => {
115
+ return resource.ownerId === user.id;
116
+ }
117
+ },
118
+ effect: 'allow',
119
+ priority: 90
120
+ },
121
+ {
122
+ id: 'manager_user_read',
123
+ name: 'Manager Can Read Users',
124
+ description: 'Managers can read user information',
125
+ conditions: {
126
+ roles: [Role.MANAGER],
127
+ permissions: [Permission.READ_ALL_USERS]
128
+ },
129
+ effect: 'allow',
130
+ priority: 80
131
+ },
132
+ {
133
+ id: 'basic_user_access',
134
+ name: 'Basic User Access',
135
+ description: 'Basic access for regular users',
136
+ conditions: {
137
+ roles: [Role.USER]
138
+ },
139
+ effect: 'allow',
140
+ priority: 50
141
+ }
142
+ ];
143
+ defaultRules.forEach(rule => {
144
+ this.rules.set(rule.id, rule);
145
+ });
146
+ }
147
+ generateCacheKey(userId, resource, action) {
148
+ return `${userId}:${resource}:${action}`;
149
+ }
150
+ async evaluateRule(rule, user, resource, action) {
151
+ // Check role conditions
152
+ if (rule.conditions.roles && !rule.conditions.roles.includes(user.role)) {
153
+ return false;
154
+ }
155
+ // Check permission conditions
156
+ if (rule.conditions.permissions && !rule.conditions.permissions.some(p => user.permissions.includes(p))) {
157
+ return false;
158
+ }
159
+ // Check group conditions
160
+ if (rule.conditions.groups && !rule.conditions.groups.some(g => user.groups.includes(g))) {
161
+ return false;
162
+ }
163
+ // Check custom conditions
164
+ if (rule.conditions.custom) {
165
+ return await rule.conditions.custom(user, resource, action);
166
+ }
167
+ return true;
168
+ }
169
+ async logAccessDecision(userId, resource, action, allowed, reason) {
170
+ if (!this.config.enableAuditLogging)
171
+ return;
172
+ const log = {
173
+ id: Date.now().toString(),
174
+ userId,
175
+ resource,
176
+ action,
177
+ allowed,
178
+ reason,
179
+ timestamp: new Date().toISOString()
180
+ };
181
+ this.auditLogs.push(log);
182
+ // Keep only last 1000 logs
183
+ if (this.auditLogs.length > 1000) {
184
+ this.auditLogs = this.auditLogs.slice(-1000);
185
+ }
186
+ }
187
+ // Public API methods
188
+ async canAccess(userId, resource, action) {
189
+ // Check cache first
190
+ const cacheKey = this.generateCacheKey(userId, resource, action);
191
+ if (this.config.enableCaching) {
192
+ const cached = this.cache.get(cacheKey);
193
+ if (cached !== undefined) {
194
+ return {
195
+ allowed: cached,
196
+ reason: cached ? 'Cached decision' : 'Cached denial'
197
+ };
198
+ }
199
+ }
200
+ const user = this.users.get(userId);
201
+ if (!user) {
202
+ const decision = { allowed: false, reason: 'User not found' };
203
+ await this.logAccessDecision(userId, resource, action, decision.allowed, decision.reason);
204
+ return decision;
205
+ }
206
+ const resourceObj = this.resources.get(resource);
207
+ const resourceData = resourceObj || {
208
+ id: resource,
209
+ type: 'unknown',
210
+ attributes: {},
211
+ createdAt: new Date().toISOString(),
212
+ updatedAt: new Date().toISOString()
213
+ };
214
+ // Sort rules by priority (highest first)
215
+ const sortedRules = Array.from(this.rules.values()).sort((a, b) => b.priority - a.priority);
216
+ // Evaluate rules
217
+ for (const rule of sortedRules) {
218
+ const ruleResult = await this.evaluateRule(rule, user, resourceData, action);
219
+ if (ruleResult) {
220
+ const decision = {
221
+ allowed: rule.effect === 'allow',
222
+ reason: `Rule "${rule.name}" (${rule.effect})`,
223
+ rule: rule.id
224
+ };
225
+ // Update cache
226
+ if (this.config.enableCaching) {
227
+ this.cache.set(cacheKey, decision.allowed);
228
+ }
229
+ await this.logAccessDecision(userId, resource, action, decision.allowed, decision.reason);
230
+ return decision;
231
+ }
232
+ }
233
+ // Default effect
234
+ const decision = {
235
+ allowed: this.config.defaultEffect === 'allow',
236
+ reason: `Default effect: ${this.config.defaultEffect}`
237
+ };
238
+ // Update cache
239
+ if (this.config.enableCaching) {
240
+ this.cache.set(cacheKey, decision.allowed);
241
+ }
242
+ await this.logAccessDecision(userId, resource, action, decision.allowed, decision.reason);
243
+ return decision;
244
+ }
245
+ // User management
246
+ async addUser(user) {
247
+ const newUser = {
248
+ id: Date.now().toString(),
249
+ ...user
250
+ };
251
+ this.users.set(newUser.id, newUser);
252
+ return newUser;
253
+ }
254
+ async updateUser(userId, updates) {
255
+ const user = this.users.get(userId);
256
+ if (!user)
257
+ return null;
258
+ const updatedUser = { ...user, ...updates };
259
+ this.users.set(userId, updatedUser);
260
+ // Clear cache for this user
261
+ this.clearCacheForUser(userId);
262
+ return updatedUser;
263
+ }
264
+ async getUser(userId) {
265
+ return this.users.get(userId) || null;
266
+ }
267
+ async getAllUsers() {
268
+ return Array.from(this.users.values());
269
+ }
270
+ // Resource management
271
+ async addResource(resource) {
272
+ const newResource = {
273
+ id: Date.now().toString(),
274
+ createdAt: new Date().toISOString(),
275
+ updatedAt: new Date().toISOString(),
276
+ ...resource
277
+ };
278
+ this.resources.set(newResource.id, newResource);
279
+ return newResource;
280
+ }
281
+ async getResource(resourceId) {
282
+ return this.resources.get(resourceId) || null;
283
+ }
284
+ async getUserResources(userId) {
285
+ return Array.from(this.resources.values()).filter(resource => resource.ownerId === userId);
286
+ }
287
+ // Rule management
288
+ async addRule(rule) {
289
+ const newRule = {
290
+ id: Date.now().toString(),
291
+ ...rule
292
+ };
293
+ this.rules.set(newRule.id, newRule);
294
+ this.clearCache();
295
+ return newRule;
296
+ }
297
+ async updateRule(ruleId, updates) {
298
+ const rule = this.rules.get(ruleId);
299
+ if (!rule)
300
+ return null;
301
+ const updatedRule = { ...rule, ...updates };
302
+ this.rules.set(ruleId, updatedRule);
303
+ this.clearCache();
304
+ return updatedRule;
305
+ }
306
+ async removeRule(ruleId) {
307
+ const deleted = this.rules.delete(ruleId);
308
+ if (deleted) {
309
+ this.clearCache();
310
+ }
311
+ return deleted;
312
+ }
313
+ async getAllRules() {
314
+ return Array.from(this.rules.values()).sort((a, b) => b.priority - a.priority);
315
+ }
316
+ // Permission checking
317
+ async hasPermission(userId, permission) {
318
+ const user = this.users.get(userId);
319
+ return user ? user.permissions.includes(permission) : false;
320
+ }
321
+ async hasRole(userId, role) {
322
+ const user = this.users.get(userId);
323
+ return user ? user.role === role : false;
324
+ }
325
+ async isInGroup(userId, group) {
326
+ const user = this.users.get(userId);
327
+ return user ? user.groups.includes(group) : false;
328
+ }
329
+ // Audit and analytics
330
+ async getAuditLogs(userId, limit = 100) {
331
+ let logs = this.auditLogs;
332
+ if (userId) {
333
+ logs = logs.filter(log => log.userId === userId);
334
+ }
335
+ return logs
336
+ .sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
337
+ .slice(0, limit);
338
+ }
339
+ async getAccessStats() {
340
+ const accessByRole = {
341
+ [Role.USER]: 0,
342
+ [Role.MANAGER]: 0,
343
+ [Role.ADMIN]: 0,
344
+ [Role.SUPER_ADMIN]: 0
345
+ };
346
+ const resourceAccessCount = {};
347
+ let recentDenials = 0;
348
+ for (const log of this.auditLogs) {
349
+ const user = this.users.get(log.userId);
350
+ if (user) {
351
+ accessByRole[user.role]++;
352
+ }
353
+ resourceAccessCount[log.resource] = (resourceAccessCount[log.resource] || 0) + 1;
354
+ if (!log.allowed && new Date(log.timestamp) > new Date(Date.now() - 24 * 60 * 60 * 1000)) {
355
+ recentDenials++;
356
+ }
357
+ }
358
+ const mostAccessedResources = Object.entries(resourceAccessCount)
359
+ .sort(([, a], [, b]) => b - a)
360
+ .slice(0, 10)
361
+ .map(([resource, count]) => ({ resource, count }));
362
+ return {
363
+ totalUsers: this.users.size,
364
+ totalResources: this.resources.size,
365
+ totalRules: this.rules.size,
366
+ totalAuditLogs: this.auditLogs.length,
367
+ accessByRole,
368
+ mostAccessedResources,
369
+ recentDenials
370
+ };
371
+ }
372
+ // Utility methods
373
+ clearCache() {
374
+ this.cache.clear();
375
+ }
376
+ clearCacheForUser(userId) {
377
+ const keysToDelete = [];
378
+ for (const key of this.cache.keys()) {
379
+ if (key.startsWith(`${userId}:`)) {
380
+ keysToDelete.push(key);
381
+ }
382
+ }
383
+ keysToDelete.forEach(key => this.cache.delete(key));
384
+ }
385
+ clearAuditLogs() {
386
+ this.auditLogs = [];
387
+ }
388
+ getCacheStats() {
389
+ return {
390
+ size: this.cache.size,
391
+ hitRate: 0.85 // Mock hit rate
392
+ };
393
+ }
394
+ }
395
+ exports.MockAccessControl = MockAccessControl;
396
+ // Factory function
397
+ const createMockAccessControl = (config) => {
398
+ return new MockAccessControl(config);
399
+ };
400
+ exports.createMockAccessControl = createMockAccessControl;
401
+ // Environment-based access control
402
+ const createEnvironmentAccessControl = () => {
403
+ const config = {
404
+ enableCaching: process.env.ACCESS_CONTROL_CACHING !== 'false',
405
+ enableAuditLogging: process.env.ACCESS_CONTROL_AUDIT !== 'false',
406
+ defaultEffect: process.env.DEFAULT_EFFECT || 'deny'
407
+ };
408
+ return new MockAccessControl(config);
409
+ };
410
+ exports.createEnvironmentAccessControl = createEnvironmentAccessControl;
411
+ //# sourceMappingURL=mockAccessControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockAccessControl.js","sourceRoot":"","sources":["../../src/mock/mockAccessControl.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AACzD,IAAY,UAuBX;AAvBD,WAAY,UAAU;IACpB,mBAAmB;IACnB,mDAAqC,CAAA;IACrC,uDAAyC,CAAA;IACzC,uDAAyC,CAAA;IAEzC,sBAAsB;IACtB,2CAA6B,CAAA;IAC7B,+CAAiC,CAAA;IACjC,uDAAyC,CAAA;IACzC,uDAAyC,CAAA;IAEzC,oBAAoB;IACpB,+CAAiC,CAAA;IACjC,mDAAqC,CAAA;IACrC,mDAAqC,CAAA;IACrC,2CAA6B,CAAA;IAE7B,qBAAqB;IACrB,mDAAqC,CAAA;IACrC,2DAA6C,CAAA;IAC7C,+CAAiC,CAAA;IACjC,yCAA2B,CAAA;AAC7B,CAAC,EAvBW,UAAU,0BAAV,UAAU,QAuBrB;AAED,IAAY,IAKX;AALD,WAAY,IAAI;IACd,qBAAa,CAAA;IACb,2BAAmB,CAAA;IACnB,uBAAe,CAAA;IACf,mCAA2B,CAAA;AAC7B,CAAC,EALW,IAAI,oBAAJ,IAAI,QAKf;AAyCD,MAAa,iBAAiB;IAgB5B,YAAY,SAA2C,EAAE;QAdjD,UAAK,GAAsB,IAAI,GAAG,EAAE,CAAC;QACrC,cAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;QAC7C,UAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;QAC3C,UAAK,GAAyB,IAAI,GAAG,EAAE,CAAC;QACxC,cAAS,GAQZ,EAAE,CAAC;QAGN,IAAI,CAAC,MAAM,GAAG;YACZ,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,MAAM,EAAE,YAAY;YAClC,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAE,MAAM;YACrB,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,qBAAqB;QAC3B,gBAAgB;QAChB,MAAM,YAAY,GAAW;YAC3B;gBACE,EAAE,EAAE,GAAG;gBACP,KAAK,EAAE,kBAAkB;gBACzB,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;gBACtC,MAAM,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC;gBACpC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;aAChD;YACD;gBACE,EAAE,EAAE,GAAG;gBACP,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE;oBACX,UAAU,CAAC,gBAAgB;oBAC3B,UAAU,CAAC,kBAAkB;oBAC7B,UAAU,CAAC,YAAY;oBACvB,UAAU,CAAC,cAAc;oBACzB,UAAU,CAAC,kBAAkB;oBAC7B,UAAU,CAAC,kBAAkB;iBAC9B;gBACD,MAAM,EAAE,CAAC,OAAO,CAAC;gBACjB,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;aACnD;YACD;gBACE,EAAE,EAAE,GAAG;gBACP,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,IAAI,CAAC,OAAO;gBAClB,WAAW,EAAE;oBACX,UAAU,CAAC,gBAAgB;oBAC3B,UAAU,CAAC,kBAAkB;oBAC7B,UAAU,CAAC,YAAY;oBACvB,UAAU,CAAC,cAAc;oBACzB,UAAU,CAAC,kBAAkB;oBAC7B,UAAU,CAAC,kBAAkB;oBAC7B,UAAU,CAAC,cAAc;oBACzB,UAAU,CAAC,cAAc;iBAC1B;gBACD,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;gBAC7B,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;aACpD;SACF,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,YAAY,GAAiB;YACjC;gBACE,EAAE,EAAE,mBAAmB;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,WAAW,EAAE,kDAAkD;gBAC/D,UAAU,EAAE;oBACV,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;iBACtC;gBACD,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,GAAG;aACd;YACD;gBACE,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE,sCAAsC;gBACnD,UAAU,EAAE;oBACV,MAAM,EAAE,KAAK,EAAE,IAAU,EAAE,QAAkB,EAAE,MAAc,EAAE,EAAE;wBAC/D,OAAO,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;oBACtC,CAAC;iBACF;gBACD,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,EAAE;aACb;YACD;gBACE,EAAE,EAAE,mBAAmB;gBACvB,IAAI,EAAE,wBAAwB;gBAC9B,WAAW,EAAE,oCAAoC;gBACjD,UAAU,EAAE;oBACV,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;oBACrB,WAAW,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;iBACzC;gBACD,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,EAAE;aACb;YACD;gBACE,EAAE,EAAE,mBAAmB;gBACvB,IAAI,EAAE,mBAAmB;gBACzB,WAAW,EAAE,gCAAgC;gBAC7C,UAAU,EAAE;oBACV,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;iBACnB;gBACD,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,EAAE;aACb;SACF,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,QAAgB,EAAE,MAAc;QACvE,OAAO,GAAG,MAAM,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAgB,EAAE,IAAU,EAAE,QAAkB,EAAE,MAAc;QACzF,wBAAwB;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,MAAc,EACd,QAAgB,EAChB,MAAc,EACd,OAAgB,EAChB,MAAc;QAEd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAAE,OAAO;QAE5C,MAAM,GAAG,GAAG;YACV,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,MAAM;YACN,QAAQ;YACR,MAAM;YACN,OAAO;YACP,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzB,2BAA2B;QAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,QAAgB,EAAE,MAAc;QAK9D,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe;iBACrD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;YAC9D,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1F,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,WAAW,IAAI;YAClC,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,yCAAyC;QACzC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE5F,iBAAiB;QACjB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAE7E,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG;oBACf,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO;oBAChC,MAAM,EAAE,SAAS,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,GAAG;oBAC9C,IAAI,EAAE,IAAI,CAAC,EAAE;iBACd,CAAC;gBAEF,eAAe;gBACf,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7C,CAAC;gBAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC1F,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,OAAO;YAC9C,MAAM,EAAE,mBAAmB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;SACvD,CAAC;QAEF,eAAe;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,OAAO,CAAC,IAAsB;QAClC,MAAM,OAAO,GAAS;YACpB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,GAAG,IAAI;SACR,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAsB;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEpC,4BAA4B;QAC5B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,WAAW,CAAC,QAA0D;QAC1E,MAAM,WAAW,GAAa;YAC5B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG,QAAQ;SACZ,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAChD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IAC7F,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,OAAO,CAAC,IAA4B;QACxC,MAAM,OAAO,GAAe;YAC1B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACzB,GAAG,IAAI;SACR,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAA4B;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjF,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,UAAsB;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,IAAU;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,KAAa;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,YAAY,CAAC,MAAe,EAAE,QAAgB,GAAG;QACrD,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAE1B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,IAAI;aACR,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;aACjF,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,cAAc;QASlB,MAAM,YAAY,GAAyB;YACzC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACd,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACf,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;SACtB,CAAC;QAEF,MAAM,mBAAmB,GAA2B,EAAE,CAAC;QACvD,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,IAAI,EAAE,CAAC;gBACT,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,CAAC;YAED,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAEjF,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBACzF,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;aAC9D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;aAC7B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAErD,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YAC3B,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;YACnC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YAC3B,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YACrC,YAAY;YACZ,qBAAqB;YACrB,aAAa;SACd,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,iBAAiB,CAAC,MAAc;QAC9B,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,aAAa;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,IAAI,CAAC,gBAAgB;SAC/B,CAAC;IACJ,CAAC;CACF;AAlcD,8CAkcC;AAED,mBAAmB;AACZ,MAAM,uBAAuB,GAAG,CAAC,MAAyC,EAAqB,EAAE;IACtG,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC;AAEF,mCAAmC;AAC5B,MAAM,8BAA8B,GAAG,GAAsB,EAAE;IACpE,MAAM,MAAM,GAAqC;QAC/C,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,OAAO;QAC7D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,OAAO;QAChE,aAAa,EAAG,OAAO,CAAC,GAAG,CAAC,cAAmC,IAAI,MAAM;KAC1E,CAAC;IAEF,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AARW,QAAA,8BAA8B,kCAQzC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siriux/access-control",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Siriux Access Control - Role-based access control, permissions, and policies",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,15 +27,16 @@
27
27
  "@siriux/core": "^2.0.0"
28
28
  },
29
29
  "devDependencies": {
30
+ "@types/jest": "^29.5.8",
30
31
  "@types/node": "^20.10.5",
31
- "typescript": "^5.3.3",
32
32
  "jest": "^29.7.0",
33
- "@types/jest": "^29.5.8"
33
+ "typescript": "^5.3.3"
34
34
  },
35
35
  "files": [
36
36
  "dist/**/*"
37
37
  ],
38
38
  "publishConfig": {
39
39
  "access": "public"
40
- }
40
+ },
41
+ "gitHead": "7a9592f8e9ed3f1301046046e1e05811cecc24be"
41
42
  }