polyv-live-cli 1.1.5 → 1.1.7

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 (118) hide show
  1. package/dist/commands/account.commands.d.ts +3 -0
  2. package/dist/commands/account.commands.d.ts.map +1 -0
  3. package/dist/commands/account.commands.js +386 -0
  4. package/dist/commands/account.commands.js.map +1 -0
  5. package/dist/commands/channel.commands.d.ts.map +1 -1
  6. package/dist/commands/channel.commands.js +84 -60
  7. package/dist/commands/channel.commands.js.map +1 -1
  8. package/dist/commands/index.d.ts +2 -0
  9. package/dist/commands/index.d.ts.map +1 -1
  10. package/dist/commands/index.js +5 -1
  11. package/dist/commands/index.js.map +1 -1
  12. package/dist/commands/stream.commands.d.ts.map +1 -1
  13. package/dist/commands/stream.commands.js +141 -63
  14. package/dist/commands/stream.commands.js.map +1 -1
  15. package/dist/commands/use.commands.d.ts +9 -0
  16. package/dist/commands/use.commands.d.ts.map +1 -0
  17. package/dist/commands/use.commands.js +66 -0
  18. package/dist/commands/use.commands.js.map +1 -0
  19. package/dist/components/alert.panel.d.ts.map +1 -1
  20. package/dist/components/alert.panel.js +3 -2
  21. package/dist/components/alert.panel.js.map +1 -1
  22. package/dist/components/index.d.ts +2 -1
  23. package/dist/components/index.d.ts.map +1 -1
  24. package/dist/components/index.js.map +1 -1
  25. package/dist/config/account-config.d.ts +27 -0
  26. package/dist/config/account-config.d.ts.map +1 -0
  27. package/dist/config/account-config.js +358 -0
  28. package/dist/config/account-config.js.map +1 -0
  29. package/dist/config/account-crypto.d.ts +17 -0
  30. package/dist/config/account-crypto.d.ts.map +1 -0
  31. package/dist/config/account-crypto.js +129 -0
  32. package/dist/config/account-crypto.js.map +1 -0
  33. package/dist/config/account-encryption.d.ts +35 -0
  34. package/dist/config/account-encryption.d.ts.map +1 -0
  35. package/dist/config/account-encryption.js +207 -0
  36. package/dist/config/account-encryption.js.map +1 -0
  37. package/dist/config/auth-adapter.d.ts +23 -0
  38. package/dist/config/auth-adapter.d.ts.map +1 -0
  39. package/dist/config/auth-adapter.js +49 -0
  40. package/dist/config/auth-adapter.js.map +1 -0
  41. package/dist/config/auth-provider.d.ts +27 -0
  42. package/dist/config/auth-provider.d.ts.map +1 -0
  43. package/dist/config/auth-provider.js +54 -0
  44. package/dist/config/auth-provider.js.map +1 -0
  45. package/dist/config/auth-source-manager.d.ts +61 -0
  46. package/dist/config/auth-source-manager.d.ts.map +1 -0
  47. package/dist/config/auth-source-manager.js +402 -0
  48. package/dist/config/auth-source-manager.js.map +1 -0
  49. package/dist/config/config-recovery-manager.d.ts +67 -0
  50. package/dist/config/config-recovery-manager.d.ts.map +1 -0
  51. package/dist/config/config-recovery-manager.js +593 -0
  52. package/dist/config/config-recovery-manager.js.map +1 -0
  53. package/dist/config/config-version-manager.d.ts +44 -0
  54. package/dist/config/config-version-manager.d.ts.map +1 -0
  55. package/dist/config/config-version-manager.js +319 -0
  56. package/dist/config/config-version-manager.js.map +1 -0
  57. package/dist/config/file-permission-manager.d.ts +41 -0
  58. package/dist/config/file-permission-manager.d.ts.map +1 -0
  59. package/dist/config/file-permission-manager.js +290 -0
  60. package/dist/config/file-permission-manager.js.map +1 -0
  61. package/dist/config/layout-manager.d.ts.map +1 -1
  62. package/dist/config/layout-manager.js +2 -1
  63. package/dist/config/layout-manager.js.map +1 -1
  64. package/dist/config/secure-account-manager.d.ts +54 -0
  65. package/dist/config/secure-account-manager.d.ts.map +1 -0
  66. package/dist/config/secure-account-manager.js +438 -0
  67. package/dist/config/secure-account-manager.js.map +1 -0
  68. package/dist/config/session-state.d.ts +37 -0
  69. package/dist/config/session-state.d.ts.map +1 -0
  70. package/dist/config/session-state.js +207 -0
  71. package/dist/config/session-state.js.map +1 -0
  72. package/dist/config/session-storage.d.ts +21 -0
  73. package/dist/config/session-storage.d.ts.map +1 -0
  74. package/dist/config/session-storage.js +235 -0
  75. package/dist/config/session-storage.js.map +1 -0
  76. package/dist/config/theme-manager.d.ts.map +1 -1
  77. package/dist/config/theme-manager.js +2 -1
  78. package/dist/config/theme-manager.js.map +1 -1
  79. package/dist/handlers/stream.handler.d.ts.map +1 -1
  80. package/dist/handlers/stream.handler.js +6 -0
  81. package/dist/handlers/stream.handler.js.map +1 -1
  82. package/dist/handlers/use.handler.d.ts +13 -0
  83. package/dist/handlers/use.handler.d.ts.map +1 -0
  84. package/dist/handlers/use.handler.js +118 -0
  85. package/dist/handlers/use.handler.js.map +1 -0
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +19 -12
  88. package/dist/index.js.map +1 -1
  89. package/dist/performance/batch-request-manager.d.ts +1 -0
  90. package/dist/performance/batch-request-manager.d.ts.map +1 -1
  91. package/dist/performance/batch-request-manager.js +7 -3
  92. package/dist/performance/batch-request-manager.js.map +1 -1
  93. package/dist/performance/change-detector.d.ts.map +1 -1
  94. package/dist/performance/change-detector.js +32 -3
  95. package/dist/performance/change-detector.js.map +1 -1
  96. package/dist/performance/index.d.ts +24 -12
  97. package/dist/performance/index.d.ts.map +1 -1
  98. package/dist/performance/index.js.map +1 -1
  99. package/dist/services/index.d.ts +4 -2
  100. package/dist/services/index.d.ts.map +1 -1
  101. package/dist/services/index.js.map +1 -1
  102. package/dist/types/account.types.d.ts +79 -0
  103. package/dist/types/account.types.d.ts.map +1 -0
  104. package/dist/types/account.types.js +23 -0
  105. package/dist/types/account.types.js.map +1 -0
  106. package/dist/types/auth-source.types.d.ts +62 -0
  107. package/dist/types/auth-source.types.d.ts.map +1 -0
  108. package/dist/types/auth-source.types.js +25 -0
  109. package/dist/types/auth-source.types.js.map +1 -0
  110. package/dist/types/session.types.d.ts +43 -0
  111. package/dist/types/session.types.d.ts.map +1 -0
  112. package/dist/types/session.types.js +27 -0
  113. package/dist/types/session.types.js.map +1 -0
  114. package/dist/utils/auth-diagnostics.d.ts +47 -0
  115. package/dist/utils/auth-diagnostics.d.ts.map +1 -0
  116. package/dist/utils/auth-diagnostics.js +245 -0
  117. package/dist/utils/auth-diagnostics.js.map +1 -0
  118. package/package.json +19 -7
@@ -0,0 +1,402 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthenticationSourceManager = exports.ConfigAuthDetector = exports.EnvironmentAuthDetector = exports.DefaultAccountAuthDetector = exports.SessionAuthDetector = exports.CommandLineAuthDetector = void 0;
4
+ const auth_source_types_1 = require("../types/auth-source.types");
5
+ const session_state_1 = require("./session-state");
6
+ const account_config_1 = require("./account-config");
7
+ const auth_1 = require("../types/auth");
8
+ class CommandLineAuthDetector {
9
+ constructor() {
10
+ this.type = 'command-line';
11
+ this.priority = auth_source_types_1.AUTH_PRIORITY.COMMAND_LINE;
12
+ }
13
+ detect(options) {
14
+ if (!options) {
15
+ return null;
16
+ }
17
+ const appId = options[auth_1.AUTH_CLI_OPTIONS.APP_ID];
18
+ const appSecret = options[auth_1.AUTH_CLI_OPTIONS.APP_SECRET];
19
+ const userId = options[auth_1.AUTH_CLI_OPTIONS.USER_ID];
20
+ if (!appId && !appSecret && !userId) {
21
+ return null;
22
+ }
23
+ return {
24
+ type: this.type,
25
+ priority: this.priority,
26
+ appId,
27
+ appSecret,
28
+ userId,
29
+ metadata: {
30
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
31
+ setAt: new Date(),
32
+ context: {
33
+ providedParams: {
34
+ appId: !!appId,
35
+ appSecret: !!appSecret,
36
+ userId: !!userId,
37
+ },
38
+ },
39
+ },
40
+ };
41
+ }
42
+ isAvailable(options) {
43
+ if (!options) {
44
+ return false;
45
+ }
46
+ const appId = options[auth_1.AUTH_CLI_OPTIONS.APP_ID];
47
+ const appSecret = options[auth_1.AUTH_CLI_OPTIONS.APP_SECRET];
48
+ return !!(appId && appSecret);
49
+ }
50
+ }
51
+ exports.CommandLineAuthDetector = CommandLineAuthDetector;
52
+ class SessionAuthDetector {
53
+ constructor(sessionManager, accountManager) {
54
+ this.type = 'session';
55
+ this.priority = auth_source_types_1.AUTH_PRIORITY.SESSION;
56
+ this.sessionManager = sessionManager || new session_state_1.SessionStateManager();
57
+ this.accountManager = accountManager || new account_config_1.AccountConfigManager();
58
+ }
59
+ detect(_options) {
60
+ try {
61
+ const sessionAccount = this.sessionManager.getCurrentSessionAccount();
62
+ if (!sessionAccount) {
63
+ return null;
64
+ }
65
+ if (!this.accountManager.accountExists(sessionAccount)) {
66
+ return {
67
+ type: this.type,
68
+ priority: this.priority,
69
+ metadata: {
70
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
71
+ accountName: sessionAccount,
72
+ setAt: new Date(),
73
+ context: {
74
+ error: 'account_not_found',
75
+ message: `会话账号 '${sessionAccount}' 不存在`,
76
+ },
77
+ },
78
+ };
79
+ }
80
+ const account = this.accountManager.getAccount(sessionAccount);
81
+ if (!account) {
82
+ return null;
83
+ }
84
+ return {
85
+ type: this.type,
86
+ priority: this.priority,
87
+ appId: account.appId,
88
+ appSecret: account.appSecret,
89
+ userId: account.userId,
90
+ metadata: {
91
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
92
+ accountName: sessionAccount,
93
+ setAt: new Date(),
94
+ context: {
95
+ sessionState: this.sessionManager.getSessionState(),
96
+ },
97
+ },
98
+ };
99
+ }
100
+ catch (error) {
101
+ return {
102
+ type: this.type,
103
+ priority: this.priority,
104
+ metadata: {
105
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
106
+ setAt: new Date(),
107
+ context: {
108
+ error: 'detection_failed',
109
+ message: error instanceof Error ? error.message : '会话账号检测失败',
110
+ },
111
+ },
112
+ };
113
+ }
114
+ }
115
+ isAvailable(options) {
116
+ const source = this.detect(options);
117
+ return source !== null && !!source.appId && !!source.appSecret;
118
+ }
119
+ }
120
+ exports.SessionAuthDetector = SessionAuthDetector;
121
+ class DefaultAccountAuthDetector {
122
+ constructor(accountManager) {
123
+ this.type = 'default-account';
124
+ this.priority = auth_source_types_1.AUTH_PRIORITY.DEFAULT_ACCOUNT;
125
+ this.accountManager = accountManager || new account_config_1.AccountConfigManager();
126
+ }
127
+ detect(_options) {
128
+ try {
129
+ const defaultAccountName = this.accountManager.getDefaultAccount();
130
+ if (!defaultAccountName) {
131
+ return null;
132
+ }
133
+ if (!this.accountManager.accountExists(defaultAccountName)) {
134
+ return {
135
+ type: this.type,
136
+ priority: this.priority,
137
+ metadata: {
138
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
139
+ accountName: defaultAccountName,
140
+ setAt: new Date(),
141
+ context: {
142
+ error: 'default_account_not_found',
143
+ message: `默认账号 '${defaultAccountName}' 不存在`,
144
+ },
145
+ },
146
+ };
147
+ }
148
+ const account = this.accountManager.getAccount(defaultAccountName);
149
+ if (!account) {
150
+ return null;
151
+ }
152
+ return {
153
+ type: this.type,
154
+ priority: this.priority,
155
+ appId: account.appId,
156
+ appSecret: account.appSecret,
157
+ userId: account.userId,
158
+ metadata: {
159
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
160
+ accountName: defaultAccountName,
161
+ setAt: new Date(),
162
+ context: {
163
+ defaultAccount: defaultAccountName,
164
+ },
165
+ },
166
+ };
167
+ }
168
+ catch (error) {
169
+ return {
170
+ type: this.type,
171
+ priority: this.priority,
172
+ metadata: {
173
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
174
+ setAt: new Date(),
175
+ context: {
176
+ error: 'detection_failed',
177
+ message: error instanceof Error ? error.message : '默认账号检测失败',
178
+ },
179
+ },
180
+ };
181
+ }
182
+ }
183
+ isAvailable(options) {
184
+ const source = this.detect(options);
185
+ return source !== null && !!source.appId && !!source.appSecret;
186
+ }
187
+ }
188
+ exports.DefaultAccountAuthDetector = DefaultAccountAuthDetector;
189
+ class EnvironmentAuthDetector {
190
+ constructor() {
191
+ this.type = 'environment';
192
+ this.priority = auth_source_types_1.AUTH_PRIORITY.ENVIRONMENT;
193
+ }
194
+ detect(_options) {
195
+ const appId = process.env[auth_1.AUTH_ENV_VARS.APP_ID];
196
+ const appSecret = process.env[auth_1.AUTH_ENV_VARS.APP_SECRET];
197
+ const userId = process.env[auth_1.AUTH_ENV_VARS.USER_ID];
198
+ if (!appId && !appSecret && !userId) {
199
+ return null;
200
+ }
201
+ return {
202
+ type: this.type,
203
+ priority: this.priority,
204
+ appId: appId?.trim(),
205
+ appSecret: appSecret?.trim(),
206
+ userId: userId?.trim(),
207
+ metadata: {
208
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
209
+ setAt: new Date(),
210
+ context: {
211
+ envVars: {
212
+ [auth_1.AUTH_ENV_VARS.APP_ID]: !!appId,
213
+ [auth_1.AUTH_ENV_VARS.APP_SECRET]: !!appSecret,
214
+ [auth_1.AUTH_ENV_VARS.USER_ID]: !!userId,
215
+ },
216
+ },
217
+ },
218
+ };
219
+ }
220
+ isAvailable(options) {
221
+ const source = this.detect(options);
222
+ return source !== null && !!source.appId && !!source.appSecret;
223
+ }
224
+ }
225
+ exports.EnvironmentAuthDetector = EnvironmentAuthDetector;
226
+ class ConfigAuthDetector {
227
+ constructor() {
228
+ this.type = 'config';
229
+ this.priority = auth_source_types_1.AUTH_PRIORITY.CONFIG;
230
+ }
231
+ detect(_options) {
232
+ try {
233
+ const { globalConfig } = require('./global');
234
+ if (!globalConfig.exists()) {
235
+ return null;
236
+ }
237
+ const config = globalConfig.load();
238
+ const appId = config.appId;
239
+ const appSecret = config.appSecret;
240
+ const userId = config.userId;
241
+ if (!appId && !appSecret && !userId) {
242
+ return null;
243
+ }
244
+ return {
245
+ type: this.type,
246
+ priority: this.priority,
247
+ appId,
248
+ appSecret,
249
+ userId,
250
+ metadata: {
251
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
252
+ setAt: new Date(),
253
+ context: {
254
+ configFile: globalConfig.getConfigPath(),
255
+ configExists: globalConfig.exists(),
256
+ validation: globalConfig.validate(config),
257
+ },
258
+ },
259
+ };
260
+ }
261
+ catch (error) {
262
+ return {
263
+ type: this.type,
264
+ priority: this.priority,
265
+ metadata: {
266
+ source: auth_source_types_1.SOURCE_DESCRIPTIONS[this.type],
267
+ setAt: new Date(),
268
+ context: {
269
+ error: 'detection_failed',
270
+ message: error instanceof Error ? error.message : '全局配置检测失败',
271
+ },
272
+ },
273
+ };
274
+ }
275
+ }
276
+ isAvailable(options) {
277
+ const source = this.detect(options);
278
+ return source !== null && !!source.appId && !!source.appSecret;
279
+ }
280
+ }
281
+ exports.ConfigAuthDetector = ConfigAuthDetector;
282
+ class AuthenticationSourceManager {
283
+ constructor(sessionManager, accountManager) {
284
+ this.detectors = [
285
+ new CommandLineAuthDetector(),
286
+ new SessionAuthDetector(sessionManager, accountManager),
287
+ new DefaultAccountAuthDetector(accountManager),
288
+ new EnvironmentAuthDetector(),
289
+ new ConfigAuthDetector(),
290
+ ];
291
+ this.detectors.sort((a, b) => a.priority - b.priority);
292
+ }
293
+ getAvailableSources(options) {
294
+ const sources = [];
295
+ for (const detector of this.detectors) {
296
+ try {
297
+ const source = detector.detect(options);
298
+ if (source) {
299
+ sources.push(source);
300
+ }
301
+ }
302
+ catch (error) {
303
+ console.warn(`Warning: Authentication source detection failed for ${detector.type}: ${error}`);
304
+ }
305
+ }
306
+ return sources;
307
+ }
308
+ getAuthenticationSource(options) {
309
+ const sources = this.getAvailableSources(options);
310
+ for (const source of sources) {
311
+ if (this.isCompleteAuthentication(source)) {
312
+ return source;
313
+ }
314
+ }
315
+ return null;
316
+ }
317
+ isCompleteAuthentication(source) {
318
+ return !!(source.appId && source.appSecret);
319
+ }
320
+ getCredentials(options) {
321
+ const source = this.getAuthenticationSource(options);
322
+ if (!source || !this.isCompleteAuthentication(source)) {
323
+ return null;
324
+ }
325
+ return {
326
+ appId: source.appId,
327
+ appSecret: source.appSecret,
328
+ ...(source.userId && { userId: source.userId }),
329
+ };
330
+ }
331
+ getDiagnostics(options) {
332
+ const availableSources = this.getAvailableSources(options);
333
+ const selectedSource = this.getAuthenticationSource(options);
334
+ const errors = [];
335
+ const warnings = [];
336
+ const suggestions = [];
337
+ for (const source of availableSources) {
338
+ if (!this.isCompleteAuthentication(source)) {
339
+ const missing = [];
340
+ if (!source.appId)
341
+ missing.push('appId');
342
+ if (!source.appSecret)
343
+ missing.push('appSecret');
344
+ warnings.push(`${source.metadata.source} 缺少必需参数: ${missing.join(', ')}`);
345
+ }
346
+ if (source.metadata.context?.['error']) {
347
+ errors.push(`${source.metadata.source}: ${source.metadata.context['message'] || source.metadata.context['error']}`);
348
+ }
349
+ }
350
+ if (!selectedSource) {
351
+ if (availableSources.length === 0) {
352
+ suggestions.push('使用 \'polyv-cli account add <account-name>\' 添加账号');
353
+ suggestions.push('设置环境变量: POLYV_APP_ID, POLYV_APP_SECRET');
354
+ suggestions.push('使用命令行参数: --app-id, --app-secret');
355
+ }
356
+ else {
357
+ suggestions.push('检查认证参数是否完整 (需要 appId 和 appSecret)');
358
+ const sessionSource = availableSources.find(s => s.type === 'session');
359
+ if (sessionSource && sessionSource.metadata.context?.['error'] === 'account_not_found') {
360
+ suggestions.push(`会话账号 '${sessionSource.metadata.accountName}' 不存在,使用 'polyv-cli use <valid-account>' 切换`);
361
+ }
362
+ }
363
+ }
364
+ const result = {
365
+ availableSources,
366
+ errors,
367
+ warnings,
368
+ suggestions,
369
+ };
370
+ if (selectedSource) {
371
+ result.selectedSource = selectedSource;
372
+ }
373
+ return result;
374
+ }
375
+ getStatusMessage(options) {
376
+ const diagnostics = this.getDiagnostics(options);
377
+ if (diagnostics.selectedSource) {
378
+ const source = diagnostics.selectedSource;
379
+ const sourceDesc = source.metadata.accountName
380
+ ? `${source.metadata.source} (${source.metadata.accountName})`
381
+ : source.metadata.source;
382
+ return `使用认证来源: ${sourceDesc}`;
383
+ }
384
+ if (diagnostics.errors.length > 0) {
385
+ return `认证错误:\n${diagnostics.errors.join('\n')}\n\n建议解决方案:\n${diagnostics.suggestions.join('\n')}`;
386
+ }
387
+ if (diagnostics.warnings.length > 0) {
388
+ return `认证不完整:\n${diagnostics.warnings.join('\n')}\n\n建议解决方案:\n${diagnostics.suggestions.join('\n')}`;
389
+ }
390
+ return `未找到认证信息。\n\n建议解决方案:\n${diagnostics.suggestions.join('\n')}`;
391
+ }
392
+ getSourceByType(type, options) {
393
+ const detector = this.detectors.find(d => d.type === type);
394
+ return detector ? detector.detect(options) : null;
395
+ }
396
+ isSourceAvailable(type, options) {
397
+ const detector = this.detectors.find(d => d.type === type);
398
+ return detector ? detector.isAvailable(options) : false;
399
+ }
400
+ }
401
+ exports.AuthenticationSourceManager = AuthenticationSourceManager;
402
+ //# sourceMappingURL=auth-source-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-source-manager.js","sourceRoot":"","sources":["../../src/config/auth-source-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { AccountsStore } from '../types/account.types';
2
+ export interface IntegrityCheckResult {
3
+ isValid: boolean;
4
+ message: string;
5
+ issues: ConfigurationIssue[];
6
+ validationDetails: {
7
+ fileAccessible: boolean;
8
+ validJson: boolean;
9
+ validStructure: boolean;
10
+ validEncryption: boolean;
11
+ securePermissions: boolean;
12
+ };
13
+ }
14
+ export interface ConfigurationIssue {
15
+ type: 'file_access' | 'json_format' | 'structure' | 'encryption' | 'permissions' | 'version';
16
+ severity: 'critical' | 'warning' | 'info';
17
+ description: string;
18
+ suggestedFix: string;
19
+ autoFixable: boolean;
20
+ }
21
+ export interface RecoveryStrategy {
22
+ id: string;
23
+ name: string;
24
+ description: string;
25
+ steps: string[];
26
+ riskLevel: 'low' | 'medium' | 'high';
27
+ dataPreservation: 'full' | 'partial' | 'none';
28
+ }
29
+ export interface RecoveryResult {
30
+ success: boolean;
31
+ message: string;
32
+ strategyUsed: string;
33
+ stepsExecuted: string[];
34
+ warnings: string[];
35
+ recoveredConfig?: AccountsStore;
36
+ backupFile?: string;
37
+ }
38
+ export interface BackupInfo {
39
+ path: string;
40
+ createdAt: string;
41
+ size: number;
42
+ isValid: boolean;
43
+ version?: string;
44
+ }
45
+ export declare class ConfigRecoveryManager {
46
+ private versionManager;
47
+ private permissionManager;
48
+ constructor();
49
+ checkIntegrity(configPath: string): IntegrityCheckResult;
50
+ private validateConfigStructure;
51
+ private validateEncryptionData;
52
+ getRecoveryStrategies(integrityResult: IntegrityCheckResult): RecoveryStrategy[];
53
+ executeRecovery(strategyId: string, configPath: string, options?: {
54
+ backupPath?: string;
55
+ newMasterKey?: string;
56
+ }): RecoveryResult;
57
+ private executeAutoFix;
58
+ private executeBackupRestore;
59
+ private executeManualFix;
60
+ private executeRecreate;
61
+ private executeKeyRecovery;
62
+ findBackupFiles(configPath: string): BackupInfo[];
63
+ createBackup(configPath: string): string | null;
64
+ getRecoveryGuidance(integrityResult: IntegrityCheckResult): string[];
65
+ }
66
+ export declare const defaultConfigRecoveryManager: ConfigRecoveryManager;
67
+ //# sourceMappingURL=config-recovery-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-recovery-manager.d.ts","sourceRoot":"","sources":["../../src/config/config-recovery-manager.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAOvD,MAAM,WAAW,oBAAoB;IAEnC,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iBAAiB,EAAE;QAEjB,cAAc,EAAE,OAAO,CAAC;QAExB,SAAS,EAAE,OAAO,CAAC;QAEnB,cAAc,EAAE,OAAO,CAAC;QAExB,eAAe,EAAE,OAAO,CAAC;QAEzB,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH;AAKD,MAAM,WAAW,kBAAkB;IAEjC,IAAI,EAAE,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;IAE7F,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAE1C,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,EAAE,OAAO,CAAC;CACtB;AAKD,MAAM,WAAW,gBAAgB;IAE/B,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,CAAC;IAEpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAErC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;CAC/C;AAKD,MAAM,WAAW,cAAc;IAE7B,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;IAErB,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,eAAe,CAAC,EAAE,aAAa,CAAC;IAEhC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,MAAM,WAAW,UAAU;IAEzB,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,iBAAiB,CAAwB;;IAe1C,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB;IAsK/D,OAAO,CAAC,uBAAuB;IA+D/B,OAAO,CAAC,sBAAsB;IA8CvB,qBAAqB,CAAC,eAAe,EAAE,oBAAoB,GAAG,gBAAgB,EAAE;IAgGhF,eAAe,CACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,cAAc;IA4CjB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,oBAAoB;IAiE5B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,kBAAkB;IAuBnB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE;IA4CjD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqB/C,mBAAmB,CAAC,eAAe,EAAE,oBAAoB,GAAG,MAAM,EAAE;CAsD5E;AAKD,eAAO,MAAM,4BAA4B,uBAA8B,CAAC"}