@nahisaho/musubix-core 1.0.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 (214) hide show
  1. package/bin/musubix.js +18 -0
  2. package/dist/__tests__/index.test.d.ts +2 -0
  3. package/dist/__tests__/index.test.d.ts.map +1 -0
  4. package/dist/__tests__/index.test.js +27 -0
  5. package/dist/__tests__/index.test.js.map +1 -0
  6. package/dist/auth/auth-manager.d.ts +320 -0
  7. package/dist/auth/auth-manager.d.ts.map +1 -0
  8. package/dist/auth/auth-manager.js +580 -0
  9. package/dist/auth/auth-manager.js.map +1 -0
  10. package/dist/cli/base.d.ts +58 -0
  11. package/dist/cli/base.d.ts.map +1 -0
  12. package/dist/cli/base.js +93 -0
  13. package/dist/cli/base.js.map +1 -0
  14. package/dist/cli/commands/help.d.ts +17 -0
  15. package/dist/cli/commands/help.d.ts.map +1 -0
  16. package/dist/cli/commands/help.js +228 -0
  17. package/dist/cli/commands/help.js.map +1 -0
  18. package/dist/cli/commands/index.d.ts +14 -0
  19. package/dist/cli/commands/index.d.ts.map +1 -0
  20. package/dist/cli/commands/index.js +25 -0
  21. package/dist/cli/commands/index.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +38 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -0
  24. package/dist/cli/commands/init.js +258 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/index.d.ts +9 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +9 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/codegen/coding-standards.d.ts +250 -0
  31. package/dist/codegen/coding-standards.d.ts.map +1 -0
  32. package/dist/codegen/coding-standards.js +976 -0
  33. package/dist/codegen/coding-standards.js.map +1 -0
  34. package/dist/codegen/coverage-reporter.d.ts +264 -0
  35. package/dist/codegen/coverage-reporter.d.ts.map +1 -0
  36. package/dist/codegen/coverage-reporter.js +697 -0
  37. package/dist/codegen/coverage-reporter.js.map +1 -0
  38. package/dist/codegen/dependency-analyzer.d.ts +271 -0
  39. package/dist/codegen/dependency-analyzer.d.ts.map +1 -0
  40. package/dist/codegen/dependency-analyzer.js +661 -0
  41. package/dist/codegen/dependency-analyzer.js.map +1 -0
  42. package/dist/codegen/generator.d.ts +275 -0
  43. package/dist/codegen/generator.d.ts.map +1 -0
  44. package/dist/codegen/generator.js +781 -0
  45. package/dist/codegen/generator.js.map +1 -0
  46. package/dist/codegen/index.d.ts +18 -0
  47. package/dist/codegen/index.d.ts.map +1 -0
  48. package/dist/codegen/index.js +27 -0
  49. package/dist/codegen/index.js.map +1 -0
  50. package/dist/codegen/integration-test-generator.d.ts +312 -0
  51. package/dist/codegen/integration-test-generator.d.ts.map +1 -0
  52. package/dist/codegen/integration-test-generator.js +765 -0
  53. package/dist/codegen/integration-test-generator.js.map +1 -0
  54. package/dist/codegen/pattern-conformance.d.ts +309 -0
  55. package/dist/codegen/pattern-conformance.d.ts.map +1 -0
  56. package/dist/codegen/pattern-conformance.js +590 -0
  57. package/dist/codegen/pattern-conformance.js.map +1 -0
  58. package/dist/codegen/quality-metrics.d.ts +235 -0
  59. package/dist/codegen/quality-metrics.d.ts.map +1 -0
  60. package/dist/codegen/quality-metrics.js +439 -0
  61. package/dist/codegen/quality-metrics.js.map +1 -0
  62. package/dist/codegen/security-scanner.d.ts +179 -0
  63. package/dist/codegen/security-scanner.d.ts.map +1 -0
  64. package/dist/codegen/security-scanner.js +495 -0
  65. package/dist/codegen/security-scanner.js.map +1 -0
  66. package/dist/codegen/static-analyzer.d.ts +188 -0
  67. package/dist/codegen/static-analyzer.d.ts.map +1 -0
  68. package/dist/codegen/static-analyzer.js +490 -0
  69. package/dist/codegen/static-analyzer.js.map +1 -0
  70. package/dist/codegen/unit-test-generator.d.ts +289 -0
  71. package/dist/codegen/unit-test-generator.d.ts.map +1 -0
  72. package/dist/codegen/unit-test-generator.js +634 -0
  73. package/dist/codegen/unit-test-generator.js.map +1 -0
  74. package/dist/design/adr-generator.d.ts +227 -0
  75. package/dist/design/adr-generator.d.ts.map +1 -0
  76. package/dist/design/adr-generator.js +423 -0
  77. package/dist/design/adr-generator.js.map +1 -0
  78. package/dist/design/c4-generator.d.ts +267 -0
  79. package/dist/design/c4-generator.d.ts.map +1 -0
  80. package/dist/design/c4-generator.js +453 -0
  81. package/dist/design/c4-generator.js.map +1 -0
  82. package/dist/design/framework-optimizer.d.ts +190 -0
  83. package/dist/design/framework-optimizer.d.ts.map +1 -0
  84. package/dist/design/framework-optimizer.js +589 -0
  85. package/dist/design/framework-optimizer.js.map +1 -0
  86. package/dist/design/index.d.ts +12 -0
  87. package/dist/design/index.d.ts.map +1 -0
  88. package/dist/design/index.js +13 -0
  89. package/dist/design/index.js.map +1 -0
  90. package/dist/design/pattern-detector.d.ts +270 -0
  91. package/dist/design/pattern-detector.d.ts.map +1 -0
  92. package/dist/design/pattern-detector.js +621 -0
  93. package/dist/design/pattern-detector.js.map +1 -0
  94. package/dist/design/solid-validator.d.ts +188 -0
  95. package/dist/design/solid-validator.d.ts.map +1 -0
  96. package/dist/design/solid-validator.js +579 -0
  97. package/dist/design/solid-validator.js.map +1 -0
  98. package/dist/error/data-persistence.d.ts +311 -0
  99. package/dist/error/data-persistence.d.ts.map +1 -0
  100. package/dist/error/data-persistence.js +586 -0
  101. package/dist/error/data-persistence.js.map +1 -0
  102. package/dist/error/graceful-degradation.d.ts +309 -0
  103. package/dist/error/graceful-degradation.d.ts.map +1 -0
  104. package/dist/error/graceful-degradation.js +510 -0
  105. package/dist/error/graceful-degradation.js.map +1 -0
  106. package/dist/error/index.d.ts +11 -0
  107. package/dist/error/index.d.ts.map +1 -0
  108. package/dist/error/index.js +19 -0
  109. package/dist/error/index.js.map +1 -0
  110. package/dist/explanation/explanation-generator.d.ts +228 -0
  111. package/dist/explanation/explanation-generator.d.ts.map +1 -0
  112. package/dist/explanation/explanation-generator.js +662 -0
  113. package/dist/explanation/explanation-generator.js.map +1 -0
  114. package/dist/explanation/index.d.ts +11 -0
  115. package/dist/explanation/index.d.ts.map +1 -0
  116. package/dist/explanation/index.js +19 -0
  117. package/dist/explanation/index.js.map +1 -0
  118. package/dist/explanation/reasoning-chain.d.ts +314 -0
  119. package/dist/explanation/reasoning-chain.d.ts.map +1 -0
  120. package/dist/explanation/reasoning-chain.js +414 -0
  121. package/dist/explanation/reasoning-chain.js.map +1 -0
  122. package/dist/explanation/visual-explanation.d.ts +315 -0
  123. package/dist/explanation/visual-explanation.d.ts.map +1 -0
  124. package/dist/explanation/visual-explanation.js +667 -0
  125. package/dist/explanation/visual-explanation.js.map +1 -0
  126. package/dist/index.d.ts +33 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +47 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/requirements/decomposer.d.ts +235 -0
  131. package/dist/requirements/decomposer.d.ts.map +1 -0
  132. package/dist/requirements/decomposer.js +587 -0
  133. package/dist/requirements/decomposer.js.map +1 -0
  134. package/dist/requirements/related-finder.d.ts +261 -0
  135. package/dist/requirements/related-finder.d.ts.map +1 -0
  136. package/dist/requirements/related-finder.js +629 -0
  137. package/dist/requirements/related-finder.js.map +1 -0
  138. package/dist/traceability/impact.d.ts +196 -0
  139. package/dist/traceability/impact.d.ts.map +1 -0
  140. package/dist/traceability/impact.js +438 -0
  141. package/dist/traceability/impact.js.map +1 -0
  142. package/dist/traceability/index.d.ts +9 -0
  143. package/dist/traceability/index.d.ts.map +1 -0
  144. package/dist/traceability/index.js +10 -0
  145. package/dist/traceability/index.js.map +1 -0
  146. package/dist/traceability/manager.d.ts +266 -0
  147. package/dist/traceability/manager.d.ts.map +1 -0
  148. package/dist/traceability/manager.js +412 -0
  149. package/dist/traceability/manager.js.map +1 -0
  150. package/dist/types/common.d.ts +294 -0
  151. package/dist/types/common.d.ts.map +1 -0
  152. package/dist/types/common.js +15 -0
  153. package/dist/types/common.js.map +1 -0
  154. package/dist/types/ears.d.ts +158 -0
  155. package/dist/types/ears.d.ts.map +1 -0
  156. package/dist/types/ears.js +33 -0
  157. package/dist/types/ears.js.map +1 -0
  158. package/dist/types/errors.d.ts +176 -0
  159. package/dist/types/errors.d.ts.map +1 -0
  160. package/dist/types/errors.js +55 -0
  161. package/dist/types/errors.js.map +1 -0
  162. package/dist/types/index.d.ts +10 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +10 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/utils/data-protector.d.ts +122 -0
  167. package/dist/utils/data-protector.d.ts.map +1 -0
  168. package/dist/utils/data-protector.js +275 -0
  169. package/dist/utils/data-protector.js.map +1 -0
  170. package/dist/utils/error-handler.d.ts +101 -0
  171. package/dist/utils/error-handler.d.ts.map +1 -0
  172. package/dist/utils/error-handler.js +324 -0
  173. package/dist/utils/error-handler.js.map +1 -0
  174. package/dist/utils/i18n-manager.d.ts +259 -0
  175. package/dist/utils/i18n-manager.d.ts.map +1 -0
  176. package/dist/utils/i18n-manager.js +554 -0
  177. package/dist/utils/i18n-manager.js.map +1 -0
  178. package/dist/utils/index.d.ts +10 -0
  179. package/dist/utils/index.d.ts.map +1 -0
  180. package/dist/utils/index.js +10 -0
  181. package/dist/utils/index.js.map +1 -0
  182. package/dist/utils/logger.d.ts +120 -0
  183. package/dist/utils/logger.d.ts.map +1 -0
  184. package/dist/utils/logger.js +237 -0
  185. package/dist/utils/logger.js.map +1 -0
  186. package/dist/utils/performance-profiler.d.ts +251 -0
  187. package/dist/utils/performance-profiler.d.ts.map +1 -0
  188. package/dist/utils/performance-profiler.js +458 -0
  189. package/dist/utils/performance-profiler.js.map +1 -0
  190. package/dist/utils/scalability-optimizer.d.ts +294 -0
  191. package/dist/utils/scalability-optimizer.d.ts.map +1 -0
  192. package/dist/utils/scalability-optimizer.js +606 -0
  193. package/dist/utils/scalability-optimizer.js.map +1 -0
  194. package/dist/utils/structured-logger.d.ts +294 -0
  195. package/dist/utils/structured-logger.d.ts.map +1 -0
  196. package/dist/utils/structured-logger.js +630 -0
  197. package/dist/utils/structured-logger.js.map +1 -0
  198. package/dist/utils/version-compatibility.d.ts +217 -0
  199. package/dist/utils/version-compatibility.d.ts.map +1 -0
  200. package/dist/utils/version-compatibility.js +443 -0
  201. package/dist/utils/version-compatibility.js.map +1 -0
  202. package/dist/validators/ears-validator.d.ts +182 -0
  203. package/dist/validators/ears-validator.d.ts.map +1 -0
  204. package/dist/validators/ears-validator.js +357 -0
  205. package/dist/validators/ears-validator.js.map +1 -0
  206. package/dist/validators/index.d.ts +8 -0
  207. package/dist/validators/index.d.ts.map +1 -0
  208. package/dist/validators/index.js +9 -0
  209. package/dist/validators/index.js.map +1 -0
  210. package/dist/version.d.ts +8 -0
  211. package/dist/version.d.ts.map +1 -0
  212. package/dist/version.js +8 -0
  213. package/dist/version.js.map +1 -0
  214. package/package.json +100 -0
@@ -0,0 +1,580 @@
1
+ /**
2
+ * Authentication Manager
3
+ *
4
+ * Manages authentication and authorization
5
+ *
6
+ * @packageDocumentation
7
+ * @module auth/auth-manager
8
+ *
9
+ * @see REQ-SEC-002 - Authentication & Authorization
10
+ * @see Article VIII - Human Oversight
11
+ */
12
+ /**
13
+ * Default configuration
14
+ */
15
+ export const DEFAULT_AUTH_CONFIG = {
16
+ providers: ['local', 'api-key'],
17
+ accessTokenLifetime: 15 * 60 * 1000, // 15 minutes
18
+ refreshTokenLifetime: 7 * 24 * 60 * 60 * 1000, // 7 days
19
+ sessionLifetime: 24 * 60 * 60 * 1000, // 24 hours
20
+ maxSessionsPerUser: 5,
21
+ requireMfa: false,
22
+ passwordPolicy: {
23
+ minLength: 8,
24
+ requireUppercase: true,
25
+ requireLowercase: true,
26
+ requireNumbers: true,
27
+ requireSpecial: false,
28
+ },
29
+ };
30
+ /**
31
+ * Built-in roles
32
+ */
33
+ export const BUILTIN_ROLES = [
34
+ {
35
+ name: 'viewer',
36
+ description: 'Read-only access',
37
+ permissions: [
38
+ 'read',
39
+ 'requirements:read',
40
+ 'design:read',
41
+ 'explain:access',
42
+ 'config:read',
43
+ ],
44
+ },
45
+ {
46
+ name: 'developer',
47
+ description: 'Development access',
48
+ permissions: [
49
+ 'read',
50
+ 'write',
51
+ 'requirements:read',
52
+ 'requirements:write',
53
+ 'design:read',
54
+ 'design:write',
55
+ 'code:generate',
56
+ 'explain:access',
57
+ 'config:read',
58
+ ],
59
+ inherits: ['viewer'],
60
+ },
61
+ {
62
+ name: 'admin',
63
+ description: 'Full administrative access',
64
+ permissions: [
65
+ 'read',
66
+ 'write',
67
+ 'delete',
68
+ 'admin',
69
+ 'requirements:read',
70
+ 'requirements:write',
71
+ 'design:read',
72
+ 'design:write',
73
+ 'code:generate',
74
+ 'code:execute',
75
+ 'explain:access',
76
+ 'config:read',
77
+ 'config:write',
78
+ ],
79
+ inherits: ['developer'],
80
+ },
81
+ ];
82
+ /**
83
+ * Authentication Manager
84
+ */
85
+ export class AuthManager {
86
+ config;
87
+ users = new Map();
88
+ passwords = new Map(); // userId -> hashed password
89
+ sessions = new Map();
90
+ tokens = new Map();
91
+ apiKeys = new Map();
92
+ roles = new Map();
93
+ userCounter = 0;
94
+ sessionCounter = 0;
95
+ constructor(config) {
96
+ this.config = { ...DEFAULT_AUTH_CONFIG, ...config };
97
+ this.initializeRoles();
98
+ }
99
+ /**
100
+ * Initialize built-in roles
101
+ */
102
+ initializeRoles() {
103
+ for (const role of BUILTIN_ROLES) {
104
+ this.roles.set(role.name, role);
105
+ }
106
+ }
107
+ /**
108
+ * Register a new user
109
+ */
110
+ async register(username, password, email, roles = ['viewer']) {
111
+ // Check if username exists
112
+ const existingUser = Array.from(this.users.values()).find((u) => u.username === username || u.email === email);
113
+ if (existingUser) {
114
+ return { success: false, error: 'Username or email already exists' };
115
+ }
116
+ // Validate password
117
+ const passwordValidation = this.validatePassword(password);
118
+ if (!passwordValidation.valid) {
119
+ return { success: false, error: passwordValidation.error };
120
+ }
121
+ // Create user
122
+ const userId = `user-${++this.userCounter}-${Date.now()}`;
123
+ const permissions = this.resolvePermissions(roles);
124
+ const user = {
125
+ id: userId,
126
+ username,
127
+ email,
128
+ displayName: username,
129
+ roles,
130
+ permissions,
131
+ provider: 'local',
132
+ createdAt: new Date(),
133
+ active: true,
134
+ };
135
+ // Store user and password
136
+ this.users.set(userId, user);
137
+ this.passwords.set(userId, await this.hashPassword(password));
138
+ return { success: true, user };
139
+ }
140
+ /**
141
+ * Login with credentials
142
+ */
143
+ async login(credentials) {
144
+ // Find user
145
+ const user = Array.from(this.users.values()).find((u) => u.username === credentials.username || u.email === credentials.username);
146
+ if (!user) {
147
+ return { success: false, error: 'Invalid credentials' };
148
+ }
149
+ if (!user.active) {
150
+ return { success: false, error: 'Account is disabled' };
151
+ }
152
+ // Verify password
153
+ const storedHash = this.passwords.get(user.id);
154
+ if (!storedHash || !(await this.verifyPassword(credentials.password, storedHash))) {
155
+ return { success: false, error: 'Invalid credentials' };
156
+ }
157
+ // Check MFA if required
158
+ if (this.config.requireMfa && !credentials.mfaCode) {
159
+ return { success: false, requiresMfa: true, error: 'MFA code required' };
160
+ }
161
+ // Clean up old sessions
162
+ await this.cleanupSessions(user.id);
163
+ // Create session
164
+ const session = await this.createSession(user, credentials.rememberMe);
165
+ // Update last login
166
+ user.lastLogin = new Date();
167
+ return { success: true, session, user };
168
+ }
169
+ /**
170
+ * Logout
171
+ */
172
+ async logout(sessionId) {
173
+ const session = this.sessions.get(sessionId);
174
+ if (!session)
175
+ return false;
176
+ // Invalidate tokens
177
+ this.tokens.delete(session.accessToken.token);
178
+ if (session.refreshToken) {
179
+ this.tokens.delete(session.refreshToken.token);
180
+ }
181
+ // Remove session
182
+ this.sessions.delete(sessionId);
183
+ return true;
184
+ }
185
+ /**
186
+ * Validate token
187
+ */
188
+ validateToken(tokenString) {
189
+ const token = this.tokens.get(tokenString);
190
+ if (!token)
191
+ return null;
192
+ if (!token.valid || new Date() > token.expiresAt) {
193
+ token.valid = false;
194
+ return null;
195
+ }
196
+ return token;
197
+ }
198
+ /**
199
+ * Refresh session
200
+ */
201
+ async refreshSession(refreshTokenString) {
202
+ const refreshToken = this.validateToken(refreshTokenString);
203
+ if (!refreshToken || refreshToken.type !== 'refresh') {
204
+ return { success: false, error: 'Invalid refresh token' };
205
+ }
206
+ const user = this.users.get(refreshToken.userId);
207
+ if (!user || !user.active) {
208
+ return { success: false, error: 'User not found or inactive' };
209
+ }
210
+ // Find and invalidate old session
211
+ const oldSession = Array.from(this.sessions.values()).find((s) => s.refreshToken?.token === refreshTokenString);
212
+ if (oldSession) {
213
+ this.tokens.delete(oldSession.accessToken.token);
214
+ this.sessions.delete(oldSession.id);
215
+ }
216
+ // Create new session
217
+ const session = await this.createSession(user, true);
218
+ return { success: true, session, user };
219
+ }
220
+ /**
221
+ * Create API key
222
+ */
223
+ createApiKey(userId, scopes) {
224
+ const user = this.users.get(userId);
225
+ if (!user) {
226
+ throw new Error('User not found');
227
+ }
228
+ const apiKey = `msbx_${this.generateToken(32)}`;
229
+ this.apiKeys.set(apiKey, { userId, scopes });
230
+ // Create token record
231
+ const token = {
232
+ token: apiKey,
233
+ type: 'api-key',
234
+ userId,
235
+ issuedAt: new Date(),
236
+ expiresAt: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000), // 1 year
237
+ scopes,
238
+ valid: true,
239
+ };
240
+ this.tokens.set(apiKey, token);
241
+ return apiKey;
242
+ }
243
+ /**
244
+ * Validate API key
245
+ */
246
+ validateApiKey(apiKey) {
247
+ const keyInfo = this.apiKeys.get(apiKey);
248
+ if (!keyInfo)
249
+ return null;
250
+ const user = this.users.get(keyInfo.userId);
251
+ if (!user || !user.active)
252
+ return null;
253
+ return { user, scopes: keyInfo.scopes };
254
+ }
255
+ /**
256
+ * Check permission
257
+ */
258
+ hasPermission(userId, permission) {
259
+ const user = this.users.get(userId);
260
+ if (!user || !user.active)
261
+ return false;
262
+ return user.permissions.includes(permission) || user.permissions.includes('admin');
263
+ }
264
+ /**
265
+ * Check multiple permissions (all required)
266
+ */
267
+ hasAllPermissions(userId, permissions) {
268
+ return permissions.every((p) => this.hasPermission(userId, p));
269
+ }
270
+ /**
271
+ * Check multiple permissions (any required)
272
+ */
273
+ hasAnyPermission(userId, permissions) {
274
+ return permissions.some((p) => this.hasPermission(userId, p));
275
+ }
276
+ /**
277
+ * Get user from token
278
+ */
279
+ getUserFromToken(tokenString) {
280
+ const token = this.validateToken(tokenString);
281
+ if (!token)
282
+ return null;
283
+ const user = this.users.get(token.userId);
284
+ if (!user || !user.active)
285
+ return null;
286
+ return user;
287
+ }
288
+ /**
289
+ * Add role to user
290
+ */
291
+ addRole(userId, roleName) {
292
+ const user = this.users.get(userId);
293
+ if (!user)
294
+ return false;
295
+ if (!user.roles.includes(roleName)) {
296
+ user.roles.push(roleName);
297
+ user.permissions = this.resolvePermissions(user.roles);
298
+ }
299
+ return true;
300
+ }
301
+ /**
302
+ * Remove role from user
303
+ */
304
+ removeRole(userId, roleName) {
305
+ const user = this.users.get(userId);
306
+ if (!user)
307
+ return false;
308
+ const index = user.roles.indexOf(roleName);
309
+ if (index > -1) {
310
+ user.roles.splice(index, 1);
311
+ user.permissions = this.resolvePermissions(user.roles);
312
+ }
313
+ return true;
314
+ }
315
+ /**
316
+ * Define custom role
317
+ */
318
+ defineRole(role) {
319
+ this.roles.set(role.name, role);
320
+ }
321
+ /**
322
+ * Get all sessions for user
323
+ */
324
+ getUserSessions(userId) {
325
+ return Array.from(this.sessions.values()).filter((s) => s.userId === userId && s.active);
326
+ }
327
+ /**
328
+ * Revoke all sessions for user
329
+ */
330
+ revokeAllSessions(userId) {
331
+ let count = 0;
332
+ for (const [sessionId, session] of this.sessions) {
333
+ if (session.userId === userId) {
334
+ this.tokens.delete(session.accessToken.token);
335
+ if (session.refreshToken) {
336
+ this.tokens.delete(session.refreshToken.token);
337
+ }
338
+ this.sessions.delete(sessionId);
339
+ count++;
340
+ }
341
+ }
342
+ return count;
343
+ }
344
+ /**
345
+ * Deactivate user
346
+ */
347
+ deactivateUser(userId) {
348
+ const user = this.users.get(userId);
349
+ if (!user)
350
+ return false;
351
+ user.active = false;
352
+ this.revokeAllSessions(userId);
353
+ return true;
354
+ }
355
+ /**
356
+ * Activate user
357
+ */
358
+ activateUser(userId) {
359
+ const user = this.users.get(userId);
360
+ if (!user)
361
+ return false;
362
+ user.active = true;
363
+ return true;
364
+ }
365
+ /**
366
+ * Change password
367
+ */
368
+ async changePassword(userId, oldPassword, newPassword) {
369
+ const user = this.users.get(userId);
370
+ if (!user) {
371
+ return { success: false, error: 'User not found' };
372
+ }
373
+ const storedHash = this.passwords.get(userId);
374
+ if (!storedHash || !(await this.verifyPassword(oldPassword, storedHash))) {
375
+ return { success: false, error: 'Invalid current password' };
376
+ }
377
+ const validation = this.validatePassword(newPassword);
378
+ if (!validation.valid) {
379
+ return { success: false, error: validation.error };
380
+ }
381
+ this.passwords.set(userId, await this.hashPassword(newPassword));
382
+ // Revoke all sessions (force re-login)
383
+ this.revokeAllSessions(userId);
384
+ return { success: true };
385
+ }
386
+ /**
387
+ * Create session
388
+ */
389
+ async createSession(user, longLived = false) {
390
+ const sessionId = `session-${++this.sessionCounter}-${Date.now()}`;
391
+ const now = new Date();
392
+ const accessTokenExpiry = new Date(now.getTime() + this.config.accessTokenLifetime);
393
+ const refreshTokenExpiry = longLived
394
+ ? new Date(now.getTime() + this.config.refreshTokenLifetime)
395
+ : new Date(now.getTime() + this.config.sessionLifetime);
396
+ const sessionExpiry = longLived
397
+ ? refreshTokenExpiry
398
+ : new Date(now.getTime() + this.config.sessionLifetime);
399
+ // Create access token
400
+ const accessToken = {
401
+ token: this.generateToken(64),
402
+ type: 'access',
403
+ userId: user.id,
404
+ issuedAt: now,
405
+ expiresAt: accessTokenExpiry,
406
+ scopes: user.permissions,
407
+ valid: true,
408
+ };
409
+ // Create refresh token
410
+ const refreshToken = {
411
+ token: this.generateToken(64),
412
+ type: 'refresh',
413
+ userId: user.id,
414
+ issuedAt: now,
415
+ expiresAt: refreshTokenExpiry,
416
+ scopes: ['refresh'],
417
+ valid: true,
418
+ };
419
+ // Store tokens
420
+ this.tokens.set(accessToken.token, accessToken);
421
+ this.tokens.set(refreshToken.token, refreshToken);
422
+ // Create session
423
+ const session = {
424
+ id: sessionId,
425
+ userId: user.id,
426
+ accessToken,
427
+ refreshToken,
428
+ createdAt: now,
429
+ expiresAt: sessionExpiry,
430
+ active: true,
431
+ };
432
+ this.sessions.set(sessionId, session);
433
+ return session;
434
+ }
435
+ /**
436
+ * Cleanup old sessions for user
437
+ */
438
+ async cleanupSessions(userId) {
439
+ const userSessions = this.getUserSessions(userId);
440
+ // Remove expired sessions
441
+ const now = new Date();
442
+ for (const session of userSessions) {
443
+ if (session.expiresAt < now) {
444
+ await this.logout(session.id);
445
+ }
446
+ }
447
+ // Enforce max sessions limit
448
+ const activeSessions = this.getUserSessions(userId);
449
+ if (activeSessions.length >= this.config.maxSessionsPerUser) {
450
+ // Remove oldest sessions
451
+ activeSessions
452
+ .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())
453
+ .slice(0, activeSessions.length - this.config.maxSessionsPerUser + 1)
454
+ .forEach((s) => this.logout(s.id));
455
+ }
456
+ }
457
+ /**
458
+ * Resolve permissions from roles
459
+ */
460
+ resolvePermissions(roleNames) {
461
+ const permissions = new Set();
462
+ const processRole = (roleName, visited) => {
463
+ if (visited.has(roleName))
464
+ return;
465
+ visited.add(roleName);
466
+ const role = this.roles.get(roleName);
467
+ if (!role)
468
+ return;
469
+ for (const perm of role.permissions) {
470
+ permissions.add(perm);
471
+ }
472
+ if (role.inherits) {
473
+ for (const parentRole of role.inherits) {
474
+ processRole(parentRole, visited);
475
+ }
476
+ }
477
+ };
478
+ for (const roleName of roleNames) {
479
+ processRole(roleName, new Set());
480
+ }
481
+ return Array.from(permissions);
482
+ }
483
+ /**
484
+ * Validate password against policy
485
+ */
486
+ validatePassword(password) {
487
+ const { passwordPolicy } = this.config;
488
+ if (password.length < passwordPolicy.minLength) {
489
+ return { valid: false, error: `Password must be at least ${passwordPolicy.minLength} characters` };
490
+ }
491
+ if (passwordPolicy.requireUppercase && !/[A-Z]/.test(password)) {
492
+ return { valid: false, error: 'Password must contain uppercase letters' };
493
+ }
494
+ if (passwordPolicy.requireLowercase && !/[a-z]/.test(password)) {
495
+ return { valid: false, error: 'Password must contain lowercase letters' };
496
+ }
497
+ if (passwordPolicy.requireNumbers && !/[0-9]/.test(password)) {
498
+ return { valid: false, error: 'Password must contain numbers' };
499
+ }
500
+ if (passwordPolicy.requireSpecial && !/[!@#$%^&*(),.?":{}|<>]/.test(password)) {
501
+ return { valid: false, error: 'Password must contain special characters' };
502
+ }
503
+ return { valid: true };
504
+ }
505
+ /**
506
+ * Hash password (simplified - in production use bcrypt/argon2)
507
+ */
508
+ async hashPassword(password) {
509
+ // In production, use proper hashing like bcrypt
510
+ const encoder = new TextEncoder();
511
+ const data = encoder.encode(password + 'musubix-salt');
512
+ if (typeof crypto !== 'undefined' && crypto.subtle) {
513
+ const hashBuffer = await crypto.subtle.digest('SHA-256', data);
514
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
515
+ return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
516
+ }
517
+ // Fallback (not secure, for demo only)
518
+ return Buffer.from(data).toString('base64');
519
+ }
520
+ /**
521
+ * Verify password
522
+ */
523
+ async verifyPassword(password, hash) {
524
+ const computed = await this.hashPassword(password);
525
+ return computed === hash;
526
+ }
527
+ /**
528
+ * Generate random token
529
+ */
530
+ generateToken(length) {
531
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
532
+ let result = '';
533
+ for (let i = 0; i < length; i++) {
534
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
535
+ }
536
+ return result;
537
+ }
538
+ /**
539
+ * Get user by ID
540
+ */
541
+ getUser(userId) {
542
+ return this.users.get(userId);
543
+ }
544
+ /**
545
+ * Get all users
546
+ */
547
+ getAllUsers() {
548
+ return Array.from(this.users.values());
549
+ }
550
+ /**
551
+ * Get role definition
552
+ */
553
+ getRole(roleName) {
554
+ return this.roles.get(roleName);
555
+ }
556
+ /**
557
+ * Get all roles
558
+ */
559
+ getAllRoles() {
560
+ return Array.from(this.roles.values());
561
+ }
562
+ }
563
+ /**
564
+ * Create auth manager instance
565
+ */
566
+ export function createAuthManager(config) {
567
+ return new AuthManager(config);
568
+ }
569
+ /**
570
+ * Middleware helper for permission check
571
+ */
572
+ export function requirePermission(authManager, ...permissions) {
573
+ return (token) => {
574
+ const user = authManager.getUserFromToken(token);
575
+ if (!user)
576
+ return false;
577
+ return authManager.hasAllPermissions(user.id, permissions);
578
+ };
579
+ }
580
+ //# sourceMappingURL=auth-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-manager.js","sourceRoot":"","sources":["../../src/auth/auth-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4KH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IAC/B,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IAClD,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;IACxD,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;IACjD,kBAAkB,EAAE,CAAC;IACrB,UAAU,EAAE,KAAK;IACjB,cAAc,EAAE;QACd,SAAS,EAAE,CAAC;QACZ,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,KAAK;KACtB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;YACX,MAAM;YACN,mBAAmB;YACnB,aAAa;YACb,gBAAgB;YAChB,aAAa;SACd;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE;YACX,MAAM;YACN,OAAO;YACP,mBAAmB;YACnB,oBAAoB;YACpB,aAAa;YACb,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,aAAa;SACd;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE;YACX,MAAM;YACN,OAAO;YACP,QAAQ;YACR,OAAO;YACP,mBAAmB;YACnB,oBAAoB;YACpB,aAAa;YACb,cAAc;YACd,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,aAAa;YACb,cAAc;SACf;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,MAAM,CAAoB;IAC1B,KAAK,GAA0B,IAAI,GAAG,EAAE,CAAC;IACzC,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC,CAAC,4BAA4B;IACxE,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC/C,MAAM,GAA2B,IAAI,GAAG,EAAE,CAAC;IAC3C,OAAO,GAAsD,IAAI,GAAG,EAAE,CAAC;IACvE,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC/C,WAAW,GAAG,CAAC,CAAC;IAChB,cAAc,GAAG,CAAC,CAAC;IAE3B,YAAY,MAAmC;QAC7C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,QAAgB,EAChB,KAAc,EACd,QAAkB,CAAC,QAAQ,CAAC;QAE5B,2BAA2B;QAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CACpD,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;QACvE,CAAC;QAED,oBAAoB;QACpB,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC7D,CAAC;QAED,cAAc;QACd,MAAM,MAAM,GAAG,QAAQ,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAa;YACrB,EAAE,EAAE,MAAM;YACV,QAAQ;YACR,KAAK;YACL,WAAW,EAAE,QAAQ;YACrB,KAAK;YACL,WAAW;YACX,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,0BAA0B;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,WAA6B;QACvC,YAAY;QACZ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,QAAQ,CAC/E,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1D,CAAC;QAED,kBAAkB;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAClF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1D,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;QAC3E,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpC,iBAAiB;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;QAEvE,oBAAoB;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAE3B,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,WAAmB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,kBAA0B;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QACjE,CAAC;QAED,kCAAkC;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,KAAK,kBAAkB,CACpD,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAErD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc,EAAE,MAAgB;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7C,sBAAsB;QACtB,MAAM,KAAK,GAAc;YACvB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;YACf,MAAM;YACN,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS;YACtE,MAAM;YACN,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAc;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,UAAsB;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAExC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAAc,EAAE,WAAyB;QACzD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAc,EAAE,WAAyB;QACxD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,WAAmB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAc,EAAE,QAAgB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc,EAAE,QAAgB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAoB;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAAc;QAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAAc;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChC,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAEjE,uCAAuC;QACvC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,IAAc,EAAE,YAAqB,KAAK;QACpE,MAAM,SAAS,GAAG,WAAW,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACnE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACpF,MAAM,kBAAkB,GAAG,SAAS;YAClC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC5D,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,SAAS;YAC7B,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE1D,sBAAsB;QACtB,MAAM,WAAW,GAAc;YAC7B,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7B,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,KAAK,EAAE,IAAI;SACZ,CAAC;QAEF,uBAAuB;QACvB,MAAM,YAAY,GAAc;YAC9B,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7B,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,kBAAkB;YAC7B,MAAM,EAAE,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,IAAI;SACZ,CAAC;QAEF,eAAe;QACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAElD,iBAAiB;QACjB,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,SAAS;YACb,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,WAAW;YACX,YAAY;YACZ,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,MAAc;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAElD,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC5D,yBAAyB;YACzB,cAAc;iBACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;iBAC7D,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;iBACpE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,SAAmB;QAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAc,CAAC;QAE1C,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,OAAoB,EAAE,EAAE;YAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACvC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAAgB;QACvC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAEvC,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,cAAc,CAAC,SAAS,aAAa,EAAE,CAAC;QACrG,CAAC;QAED,IAAI,cAAc,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QAC5E,CAAC;QAED,IAAI,cAAc,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QAC5E,CAAC;QAED,IAAI,cAAc,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC;QAClE,CAAC;QAED,IAAI,cAAc,CAAC,cAAc,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;QAC7E,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,QAAgB;QACzC,gDAAgD;QAChD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC;QAEvD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YACzD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,uCAAuC;QACvC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,IAAY;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,QAAQ,KAAK,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAc;QAClC,MAAM,KAAK,GAAG,gEAAgE,CAAC;QAC/E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmC;IACnE,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAwB,EACxB,GAAG,WAAyB;IAE5B,OAAO,CAAC,KAAa,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * CLI Base Module
3
+ *
4
+ * Provides the foundation for MUSUBIX command-line interface
5
+ *
6
+ * @packageDocumentation
7
+ * @module cli
8
+ *
9
+ * @see REQ-ARC-002 - CLI Interface
10
+ * @see DES-MUSUBIX-001 Section 3.2 - CLI Interface Design
11
+ */
12
+ import { Command } from 'commander';
13
+ /**
14
+ * Exit codes for CLI commands
15
+ * @see DES-MUSUBIX-001 Section 3.2.3
16
+ */
17
+ export declare const ExitCode: {
18
+ readonly SUCCESS: 0;
19
+ readonly GENERAL_ERROR: 1;
20
+ readonly ARGUMENT_ERROR: 2;
21
+ readonly FILE_NOT_FOUND: 3;
22
+ readonly VALIDATION_ERROR: 4;
23
+ readonly SERVICE_ERROR: 5;
24
+ };
25
+ export type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];
26
+ /**
27
+ * CLI output format options
28
+ */
29
+ export type OutputFormat = 'text' | 'json' | 'yaml';
30
+ /**
31
+ * Global CLI options
32
+ */
33
+ export interface GlobalOptions {
34
+ verbose: boolean;
35
+ json: boolean;
36
+ config?: string;
37
+ quiet: boolean;
38
+ }
39
+ /**
40
+ * Create the main CLI program
41
+ */
42
+ export declare function createProgram(): Command;
43
+ /**
44
+ * Get global options from command
45
+ */
46
+ export declare function getGlobalOptions(command: Command): GlobalOptions;
47
+ /**
48
+ * Output result based on format option
49
+ */
50
+ export declare function outputResult<T>(data: T, options: {
51
+ json?: boolean;
52
+ quiet?: boolean;
53
+ }): void;
54
+ /**
55
+ * Handle CLI errors
56
+ */
57
+ export declare function handleError(error: Error, options: GlobalOptions): never;
58
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/cli/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;GAGG;AACH,eAAO,MAAM,QAAQ;;;;;;;CAOX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAiBvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAQhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EACP,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,IAAI,CAUN;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,CAiBvE"}