baseguard 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.
- package/.eslintrc.json +25 -0
- package/.prettierrc +8 -0
- package/README.md +94 -0
- package/bin/base.js +494 -0
- package/dist/ai/fix-manager.d.ts +67 -0
- package/dist/ai/fix-manager.d.ts.map +1 -0
- package/dist/ai/fix-manager.js +326 -0
- package/dist/ai/fix-manager.js.map +1 -0
- package/dist/ai/gemini-analyzer.d.ts +116 -0
- package/dist/ai/gemini-analyzer.d.ts.map +1 -0
- package/dist/ai/gemini-analyzer.js +572 -0
- package/dist/ai/gemini-analyzer.js.map +1 -0
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +5 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/jules-implementer.d.ts +115 -0
- package/dist/ai/jules-implementer.d.ts.map +1 -0
- package/dist/ai/jules-implementer.js +387 -0
- package/dist/ai/jules-implementer.js.map +1 -0
- package/dist/commands/automation.d.ts +5 -0
- package/dist/commands/automation.d.ts.map +1 -0
- package/dist/commands/automation.js +305 -0
- package/dist/commands/automation.js.map +1 -0
- package/dist/commands/check.d.ts +9 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +113 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +11 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +324 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/fix.d.ts +9 -0
- package/dist/commands/fix.d.ts.map +1 -0
- package/dist/commands/fix.js +207 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +125 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/core/api-key-manager.d.ts +83 -0
- package/dist/core/api-key-manager.d.ts.map +1 -0
- package/dist/core/api-key-manager.js +244 -0
- package/dist/core/api-key-manager.js.map +1 -0
- package/dist/core/baseguard.d.ts +46 -0
- package/dist/core/baseguard.d.ts.map +1 -0
- package/dist/core/baseguard.js +132 -0
- package/dist/core/baseguard.js.map +1 -0
- package/dist/core/baseline-checker.d.ts +63 -0
- package/dist/core/baseline-checker.d.ts.map +1 -0
- package/dist/core/baseline-checker.js +502 -0
- package/dist/core/baseline-checker.js.map +1 -0
- package/dist/core/cache-manager.d.ts +88 -0
- package/dist/core/cache-manager.d.ts.map +1 -0
- package/dist/core/cache-manager.js +213 -0
- package/dist/core/cache-manager.js.map +1 -0
- package/dist/core/configuration.d.ts +140 -0
- package/dist/core/configuration.d.ts.map +1 -0
- package/dist/core/configuration.js +474 -0
- package/dist/core/configuration.js.map +1 -0
- package/dist/core/directory-filter.d.ts +90 -0
- package/dist/core/directory-filter.d.ts.map +1 -0
- package/dist/core/directory-filter.js +319 -0
- package/dist/core/directory-filter.js.map +1 -0
- package/dist/core/error-handler.d.ts +110 -0
- package/dist/core/error-handler.d.ts.map +1 -0
- package/dist/core/error-handler.js +392 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/file-processor.d.ts +80 -0
- package/dist/core/file-processor.d.ts.map +1 -0
- package/dist/core/file-processor.js +259 -0
- package/dist/core/file-processor.js.map +1 -0
- package/dist/core/gitignore-manager.d.ts +44 -0
- package/dist/core/gitignore-manager.d.ts.map +1 -0
- package/dist/core/gitignore-manager.js +147 -0
- package/dist/core/gitignore-manager.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lazy-loader.d.ts +68 -0
- package/dist/core/lazy-loader.d.ts.map +1 -0
- package/dist/core/lazy-loader.js +260 -0
- package/dist/core/lazy-loader.js.map +1 -0
- package/dist/core/memory-manager.d.ts +1 -0
- package/dist/core/memory-manager.d.ts.map +1 -0
- package/dist/core/memory-manager.js +2 -0
- package/dist/core/memory-manager.js.map +1 -0
- package/dist/core/startup-optimizer.d.ts +45 -0
- package/dist/core/startup-optimizer.d.ts.map +1 -0
- package/dist/core/startup-optimizer.js +140 -0
- package/dist/core/startup-optimizer.js.map +1 -0
- package/dist/git/automation-engine.d.ts +58 -0
- package/dist/git/automation-engine.d.ts.map +1 -0
- package/dist/git/automation-engine.js +318 -0
- package/dist/git/automation-engine.js.map +1 -0
- package/dist/git/github-manager.d.ts +71 -0
- package/dist/git/github-manager.d.ts.map +1 -0
- package/dist/git/github-manager.js +226 -0
- package/dist/git/github-manager.js.map +1 -0
- package/dist/git/hook-manager.d.ts +43 -0
- package/dist/git/hook-manager.d.ts.map +1 -0
- package/dist/git/hook-manager.js +191 -0
- package/dist/git/hook-manager.js.map +1 -0
- package/dist/git/index.d.ts +4 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +5 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/feature-validator.d.ts +60 -0
- package/dist/parsers/feature-validator.d.ts.map +1 -0
- package/dist/parsers/feature-validator.js +483 -0
- package/dist/parsers/feature-validator.js.map +1 -0
- package/dist/parsers/index.d.ts +8 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +9 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/parser-manager.d.ts +103 -0
- package/dist/parsers/parser-manager.d.ts.map +1 -0
- package/dist/parsers/parser-manager.js +321 -0
- package/dist/parsers/parser-manager.js.map +1 -0
- package/dist/parsers/parser.d.ts +23 -0
- package/dist/parsers/parser.d.ts.map +1 -0
- package/dist/parsers/parser.js +6 -0
- package/dist/parsers/parser.js.map +1 -0
- package/dist/parsers/react-parser.d.ts +22 -0
- package/dist/parsers/react-parser.d.ts.map +1 -0
- package/dist/parsers/react-parser.js +307 -0
- package/dist/parsers/react-parser.js.map +1 -0
- package/dist/parsers/svelte-parser.d.ts +33 -0
- package/dist/parsers/svelte-parser.d.ts.map +1 -0
- package/dist/parsers/svelte-parser.js +408 -0
- package/dist/parsers/svelte-parser.js.map +1 -0
- package/dist/parsers/vanilla-parser.d.ts +31 -0
- package/dist/parsers/vanilla-parser.d.ts.map +1 -0
- package/dist/parsers/vanilla-parser.js +590 -0
- package/dist/parsers/vanilla-parser.js.map +1 -0
- package/dist/parsers/vue-parser.d.ts +9 -0
- package/dist/parsers/vue-parser.d.ts.map +1 -0
- package/dist/parsers/vue-parser.js +16 -0
- package/dist/parsers/vue-parser.js.map +1 -0
- package/dist/terminal-header.d.ts +12 -0
- package/dist/terminal-header.js +45 -0
- package/dist/types/index.d.ts +83 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/components.d.ts +133 -0
- package/dist/ui/components.d.ts.map +1 -0
- package/dist/ui/components.js +482 -0
- package/dist/ui/components.js.map +1 -0
- package/dist/ui/help.d.ts +11 -0
- package/dist/ui/help.d.ts.map +1 -0
- package/dist/ui/help.js +161 -0
- package/dist/ui/help.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/prompts.d.ts +63 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +611 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/terminal-header.d.ts +13 -0
- package/dist/ui/terminal-header.d.ts.map +1 -0
- package/dist/ui/terminal-header.js +46 -0
- package/dist/ui/terminal-header.js.map +1 -0
- package/package.json +80 -0
- package/src/ai/__tests__/gemini-analyzer.test.ts +181 -0
- package/src/ai/fix-manager.ts +362 -0
- package/src/ai/gemini-analyzer.ts +671 -0
- package/src/ai/index.ts +4 -0
- package/src/ai/jules-implementer.ts +459 -0
- package/src/commands/automation.ts +344 -0
- package/src/commands/check.ts +299 -0
- package/src/commands/config.ts +365 -0
- package/src/commands/fix.ts +234 -0
- package/src/commands/index.ts +6 -0
- package/src/commands/init.ts +142 -0
- package/src/commands/status.ts +0 -0
- package/src/core/api-key-manager.ts +298 -0
- package/src/core/baseguard.ts +742 -0
- package/src/core/baseline-checker.ts +563 -0
- package/src/core/cache-manager.ts +270 -0
- package/src/core/configuration-recovery.ts +676 -0
- package/src/core/configuration.ts +559 -0
- package/src/core/debug-logger.ts +590 -0
- package/src/core/directory-filter.ts +421 -0
- package/src/core/error-handler.ts +517 -0
- package/src/core/file-processor.ts +331 -0
- package/src/core/gitignore-manager.ts +169 -0
- package/src/core/graceful-degradation-manager.ts +596 -0
- package/src/core/index.ts +13 -0
- package/src/core/lazy-loader.ts +307 -0
- package/src/core/logger.ts +0 -0
- package/src/core/memory-manager.ts +294 -0
- package/src/core/startup-optimizer.ts +173 -0
- package/src/core/system-error-handler.ts +746 -0
- package/src/git/automation-engine.ts +361 -0
- package/src/git/github-manager.ts +260 -0
- package/src/git/hook-manager.ts +210 -0
- package/src/git/index.ts +4 -0
- package/src/index.ts +8 -0
- package/src/parsers/feature-validator.ts +559 -0
- package/src/parsers/index.ts +8 -0
- package/src/parsers/parser-manager.ts +419 -0
- package/src/parsers/parser.ts +26 -0
- package/src/parsers/react-parser-optimized.ts +161 -0
- package/src/parsers/react-parser.ts +359 -0
- package/src/parsers/svelte-parser.ts +506 -0
- package/src/parsers/vanilla-parser.ts +682 -0
- package/src/parsers/vue-parser.ts +472 -0
- package/src/types/index.ts +92 -0
- package/src/ui/components.ts +567 -0
- package/src/ui/help.ts +193 -0
- package/src/ui/index.ts +4 -0
- package/src/ui/prompts.ts +688 -0
- package/src/ui/terminal-header.ts +59 -0
- package/test-config-commands.js +56 -0
- package/test-header-simple.js +33 -0
- package/test-terminal-header.js +12 -0
- package/test-ui.js +29 -0
- package/tests/e2e/baseguard.e2e.test.ts +516 -0
- package/tests/e2e/cross-platform.e2e.test.ts +420 -0
- package/tests/e2e/git-integration.e2e.test.ts +487 -0
- package/tests/fixtures/react-project/package.json +14 -0
- package/tests/fixtures/react-project/src/App.css +76 -0
- package/tests/fixtures/react-project/src/App.tsx +77 -0
- package/tests/fixtures/svelte-project/package.json +11 -0
- package/tests/fixtures/svelte-project/src/App.svelte +369 -0
- package/tests/fixtures/vanilla-project/index.html +76 -0
- package/tests/fixtures/vanilla-project/script.js +331 -0
- package/tests/fixtures/vanilla-project/styles.css +359 -0
- package/tests/fixtures/vue-project/package.json +12 -0
- package/tests/fixtures/vue-project/src/App.vue +216 -0
- package/tsconfig.json +36 -0
- package/vitest.config.ts +10 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { UIComponents, Prompts } from '../ui/index.js';
|
|
2
|
+
import { ConfigurationManager, BROWSER_TARGET_PRESETS } from '../core/index.js';
|
|
3
|
+
import { ErrorHandler } from '../core/error-handler.js';
|
|
4
|
+
/**
|
|
5
|
+
* Initialize BaseGuard in a project
|
|
6
|
+
*/
|
|
7
|
+
export async function init(options) {
|
|
8
|
+
try {
|
|
9
|
+
UIComponents.showHeader();
|
|
10
|
+
// Check if already initialized
|
|
11
|
+
const configExists = await ConfigurationManager.exists();
|
|
12
|
+
if (configExists) {
|
|
13
|
+
const { default: inquirer } = await import('inquirer');
|
|
14
|
+
const { overwrite } = await inquirer.prompt([
|
|
15
|
+
{
|
|
16
|
+
type: 'confirm',
|
|
17
|
+
name: 'overwrite',
|
|
18
|
+
message: 'BaseGuard is already initialized. Overwrite existing configuration?',
|
|
19
|
+
default: false
|
|
20
|
+
}
|
|
21
|
+
]);
|
|
22
|
+
if (!overwrite) {
|
|
23
|
+
UIComponents.showInfoBox('Initialization cancelled. Use "base config" to modify settings.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const spinner = UIComponents.createSpinner('Setting up BaseGuard configuration...');
|
|
28
|
+
spinner.start();
|
|
29
|
+
// Create configuration based on options or run setup wizard
|
|
30
|
+
let config;
|
|
31
|
+
if (options.preset && options.preset !== 'custom') {
|
|
32
|
+
// Use preset configuration
|
|
33
|
+
const presetName = options.preset;
|
|
34
|
+
if (BROWSER_TARGET_PRESETS[presetName]) {
|
|
35
|
+
config = ConfigurationManager.createWithPreset(presetName);
|
|
36
|
+
spinner.text = `Using ${presetName} preset...`;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
spinner.fail(`Invalid preset: ${options.preset}`);
|
|
40
|
+
UIComponents.showErrorBox(`Available presets: ${Object.keys(BROWSER_TARGET_PRESETS).join(', ')}`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Run interactive setup wizard
|
|
46
|
+
spinner.stop();
|
|
47
|
+
const setupResult = await Prompts.setupWizard();
|
|
48
|
+
spinner.start();
|
|
49
|
+
config = ConfigurationManager.createWithCustomTargets(setupResult.targets);
|
|
50
|
+
// Set up automation if requested and not skipped
|
|
51
|
+
if (setupResult.installHooks && !options.skipHooks) {
|
|
52
|
+
config.automation = {
|
|
53
|
+
enabled: true,
|
|
54
|
+
trigger: setupResult.hookTrigger,
|
|
55
|
+
autoAnalyze: true,
|
|
56
|
+
autoFix: false,
|
|
57
|
+
blockCommit: true
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Set up API keys if not skipped
|
|
62
|
+
if (!options.skipApiKeys) {
|
|
63
|
+
spinner.stop();
|
|
64
|
+
const apiKeys = await Prompts.setupApiKeys();
|
|
65
|
+
spinner.start();
|
|
66
|
+
if (apiKeys.julesApiKey) {
|
|
67
|
+
config.apiKeys.jules = apiKeys.julesApiKey;
|
|
68
|
+
}
|
|
69
|
+
if (apiKeys.geminiApiKey) {
|
|
70
|
+
config.apiKeys.gemini = apiKeys.geminiApiKey;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
await ConfigurationManager.save(config);
|
|
74
|
+
spinner.succeed('BaseGuard configuration created');
|
|
75
|
+
UIComponents.showSuccessBox('BaseGuard has been successfully initialized!');
|
|
76
|
+
// Show configuration summary
|
|
77
|
+
console.log('\n📋 Configuration Summary:');
|
|
78
|
+
UIComponents.showList([
|
|
79
|
+
`Browser targets: ${config.targets.map(t => `${t.browser} ${t.minVersion}`).join(', ')}`,
|
|
80
|
+
`API keys: ${config.apiKeys.jules ? '✅' : '❌'} Jules, ${config.apiKeys.gemini ? '✅' : '❌'} Gemini`,
|
|
81
|
+
`Automation: ${config.automation.enabled ? '✅ Enabled' : '❌ Disabled'}`
|
|
82
|
+
]);
|
|
83
|
+
console.log('\n🚀 Next steps:');
|
|
84
|
+
const nextSteps = ['Run `base check` to scan for compatibility issues'];
|
|
85
|
+
if (config.apiKeys.jules && config.apiKeys.gemini) {
|
|
86
|
+
nextSteps.push('Run `base fix` to automatically fix issues with AI');
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
nextSteps.push('Run `base config set-keys` to configure AI services');
|
|
90
|
+
}
|
|
91
|
+
if (!config.automation.enabled) {
|
|
92
|
+
nextSteps.push('Run `base automation enable` to set up git hooks');
|
|
93
|
+
}
|
|
94
|
+
UIComponents.showList(nextSteps);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
const apiError = ErrorHandler.handleAPIError(error);
|
|
98
|
+
ErrorHandler.displayError(apiError);
|
|
99
|
+
// Provide specific help for common init issues
|
|
100
|
+
console.log('\n💡 Common solutions:');
|
|
101
|
+
if (apiError.type === 'network') {
|
|
102
|
+
UIComponents.showList([
|
|
103
|
+
'Check your internet connection',
|
|
104
|
+
'Try running init again with --skip-api-keys to set up offline',
|
|
105
|
+
'Configure API keys later with "base config set-keys"'
|
|
106
|
+
]);
|
|
107
|
+
}
|
|
108
|
+
else if (apiError.type === 'configuration') {
|
|
109
|
+
UIComponents.showList([
|
|
110
|
+
'Delete .baseguardrc.json and try again',
|
|
111
|
+
'Check file permissions in the current directory',
|
|
112
|
+
'Run "base config validate" to check for issues'
|
|
113
|
+
]);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
UIComponents.showList([
|
|
117
|
+
'Try running "base init --skip-api-keys" for offline setup',
|
|
118
|
+
'Check the documentation at https://github.com/baseguard/baseguard#readme',
|
|
119
|
+
'Report this issue if it persists'
|
|
120
|
+
]);
|
|
121
|
+
}
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAmB,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAI1B;IACC,IAAI,CAAC;QACH,YAAY,CAAC,UAAU,EAAE,CAAC;QAE1B,+BAA+B;QAC/B,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,CAAC;QACzD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,qEAAqE;oBAC9E,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,YAAY,CAAC,WAAW,CAAC,iEAAiE,CAAC,CAAC;gBAC5F,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAAC;QACpF,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,4DAA4D;QAC5D,IAAI,MAAM,CAAC;QAEX,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClD,2BAA2B;YAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAoB,CAAC;YAChD,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,GAAG,SAAS,UAAU,YAAY,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClD,YAAY,CAAC,YAAY,CAAC,sBAAsB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClG,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,MAAM,GAAG,oBAAoB,CAAC,uBAAuB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAE3E,iDAAiD;YACjD,IAAI,WAAW,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnD,MAAM,CAAC,UAAU,GAAG;oBAClB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,WAAW,CAAC,WAAW;oBAChC,WAAW,EAAE,IAAI;oBACjB,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,IAAI;iBAClB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;YAC7C,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;YAC7C,CAAC;YACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QAEnD,YAAY,CAAC,cAAc,CAAC,8CAA8C,CAAC,CAAC;QAE5E,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,YAAY,CAAC,QAAQ,CAAC;YACpB,oBAAoB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxF,aAAa,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;YAClG,eAAe,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE;SACxE,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAExE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClD,SAAS,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACrE,CAAC;QAED,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACpD,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEpC,+CAA+C;QAC/C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC;gBACpB,gCAAgC;gBAChC,+DAA+D;gBAC/D,sDAAsD;aACvD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC7C,YAAY,CAAC,QAAQ,CAAC;gBACpB,wCAAwC;gBACxC,iDAAiD;gBACjD,gDAAgD;aACjD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,QAAQ,CAAC;gBACpB,2DAA2D;gBAC3D,0EAA0E;gBAC1E,kCAAkC;aACnC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API key validation patterns and utilities
|
|
3
|
+
*/
|
|
4
|
+
export declare class ApiKeyManager {
|
|
5
|
+
/**
|
|
6
|
+
* Validate Jules API key format
|
|
7
|
+
*/
|
|
8
|
+
static validateJulesApiKey(apiKey: string): {
|
|
9
|
+
valid: boolean;
|
|
10
|
+
error?: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Validate Gemini API key format
|
|
14
|
+
*/
|
|
15
|
+
static validateGeminiApiKey(apiKey: string): {
|
|
16
|
+
valid: boolean;
|
|
17
|
+
error?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Test Jules API key connectivity
|
|
21
|
+
*/
|
|
22
|
+
static testJulesApiKey(apiKey: string): Promise<{
|
|
23
|
+
success: boolean;
|
|
24
|
+
error?: string;
|
|
25
|
+
}>;
|
|
26
|
+
/**
|
|
27
|
+
* Test Gemini API key connectivity
|
|
28
|
+
*/
|
|
29
|
+
static testGeminiApiKey(apiKey: string): Promise<{
|
|
30
|
+
success: boolean;
|
|
31
|
+
error?: string;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Store API keys securely in configuration
|
|
35
|
+
*/
|
|
36
|
+
static storeApiKeys(keys: {
|
|
37
|
+
jules?: string;
|
|
38
|
+
gemini?: string;
|
|
39
|
+
}): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Get stored API keys
|
|
42
|
+
*/
|
|
43
|
+
static getStoredApiKeys(): Promise<{
|
|
44
|
+
jules: string | null;
|
|
45
|
+
gemini: string | null;
|
|
46
|
+
}>;
|
|
47
|
+
/**
|
|
48
|
+
* Check if API keys are configured
|
|
49
|
+
*/
|
|
50
|
+
static hasApiKeys(): Promise<{
|
|
51
|
+
jules: boolean;
|
|
52
|
+
gemini: boolean;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Clear stored API keys
|
|
56
|
+
*/
|
|
57
|
+
static clearApiKeys(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Validate and test all stored API keys
|
|
60
|
+
*/
|
|
61
|
+
static validateStoredKeys(): Promise<{
|
|
62
|
+
jules: {
|
|
63
|
+
valid: boolean;
|
|
64
|
+
error?: string;
|
|
65
|
+
};
|
|
66
|
+
gemini: {
|
|
67
|
+
valid: boolean;
|
|
68
|
+
error?: string;
|
|
69
|
+
};
|
|
70
|
+
}>;
|
|
71
|
+
/**
|
|
72
|
+
* Get API key status for display
|
|
73
|
+
*/
|
|
74
|
+
static getApiKeyStatus(): Promise<{
|
|
75
|
+
jules: 'configured' | 'missing' | 'invalid';
|
|
76
|
+
gemini: 'configured' | 'missing' | 'invalid';
|
|
77
|
+
}>;
|
|
78
|
+
/**
|
|
79
|
+
* Show helpful error messages for API failures
|
|
80
|
+
*/
|
|
81
|
+
static showApiErrorHelp(service: 'jules' | 'gemini', error: string): void;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=api-key-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key-manager.d.ts","sourceRoot":"","sources":["../../src/core/api-key-manager.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAuB9E;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IA4B/E;;OAEG;WACU,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA+C3F;;OAEG;WACU,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAmD5F;;OAEG;WACU,YAAY,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnF;;OAEG;WACU,gBAAgB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAQzF;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAQvE;;OAEG;WACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1C;;OAEG;WACU,kBAAkB,IAAI,OAAO,CAAC;QACzC,KAAK,EAAE;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1C,MAAM,EAAE;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5C,CAAC;IAqBF;;OAEG;WACU,eAAe,IAAI,OAAO,CAAC;QACtC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;QAC5C,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;KAC9C,CAAC;IAuBF;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAqB1E"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { ConfigurationManager } from './configuration.js';
|
|
2
|
+
import { UIComponents } from '../ui/components.js';
|
|
3
|
+
/**
|
|
4
|
+
* API key validation patterns and utilities
|
|
5
|
+
*/
|
|
6
|
+
export class ApiKeyManager {
|
|
7
|
+
/**
|
|
8
|
+
* Validate Jules API key format
|
|
9
|
+
*/
|
|
10
|
+
static validateJulesApiKey(apiKey) {
|
|
11
|
+
if (!apiKey || typeof apiKey !== 'string') {
|
|
12
|
+
return { valid: false, error: 'API key is required' };
|
|
13
|
+
}
|
|
14
|
+
const trimmed = apiKey.trim();
|
|
15
|
+
if (trimmed.length < 10) {
|
|
16
|
+
return { valid: false, error: 'API key seems too short' };
|
|
17
|
+
}
|
|
18
|
+
if (trimmed.length > 200) {
|
|
19
|
+
return { valid: false, error: 'API key seems too long' };
|
|
20
|
+
}
|
|
21
|
+
// Basic format validation - Jules keys might have specific patterns
|
|
22
|
+
if (!/^[A-Za-z0-9_\-\.]+$/.test(trimmed)) {
|
|
23
|
+
return { valid: false, error: 'API key contains invalid characters' };
|
|
24
|
+
}
|
|
25
|
+
return { valid: true };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Validate Gemini API key format
|
|
29
|
+
*/
|
|
30
|
+
static validateGeminiApiKey(apiKey) {
|
|
31
|
+
if (!apiKey || typeof apiKey !== 'string') {
|
|
32
|
+
return { valid: false, error: 'API key is required' };
|
|
33
|
+
}
|
|
34
|
+
const trimmed = apiKey.trim();
|
|
35
|
+
if (trimmed.length < 30) {
|
|
36
|
+
return { valid: false, error: 'Gemini API key seems too short' };
|
|
37
|
+
}
|
|
38
|
+
if (trimmed.length > 100) {
|
|
39
|
+
return { valid: false, error: 'Gemini API key seems too long' };
|
|
40
|
+
}
|
|
41
|
+
// Gemini API keys typically start with "AIza"
|
|
42
|
+
if (!trimmed.startsWith('AIza')) {
|
|
43
|
+
return { valid: false, error: 'Gemini API keys typically start with "AIza"' };
|
|
44
|
+
}
|
|
45
|
+
// Basic format validation
|
|
46
|
+
if (!/^[A-Za-z0-9_\-]+$/.test(trimmed)) {
|
|
47
|
+
return { valid: false, error: 'API key contains invalid characters' };
|
|
48
|
+
}
|
|
49
|
+
return { valid: true };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Test Jules API key connectivity
|
|
53
|
+
*/
|
|
54
|
+
static async testJulesApiKey(apiKey) {
|
|
55
|
+
try {
|
|
56
|
+
// Validate format first
|
|
57
|
+
const validation = this.validateJulesApiKey(apiKey);
|
|
58
|
+
if (!validation.valid) {
|
|
59
|
+
return { success: false, error: validation.error };
|
|
60
|
+
}
|
|
61
|
+
// Test connectivity with a simple API call
|
|
62
|
+
const response = await fetch('https://jules.googleapis.com/v1alpha/sessions', {
|
|
63
|
+
method: 'GET',
|
|
64
|
+
headers: {
|
|
65
|
+
'X-Goog-Api-Key': apiKey.trim(),
|
|
66
|
+
'Content-Type': 'application/json'
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
if (response.status === 401) {
|
|
70
|
+
return { success: false, error: 'Invalid API key or insufficient permissions' };
|
|
71
|
+
}
|
|
72
|
+
if (response.status === 403) {
|
|
73
|
+
return { success: false, error: 'API key does not have required permissions' };
|
|
74
|
+
}
|
|
75
|
+
if (response.status === 429) {
|
|
76
|
+
return { success: false, error: 'Rate limit exceeded. Please try again later' };
|
|
77
|
+
}
|
|
78
|
+
if (!response.ok && response.status !== 404) {
|
|
79
|
+
return { success: false, error: `API error: ${response.status} ${response.statusText}` };
|
|
80
|
+
}
|
|
81
|
+
// 404 is acceptable for a test call to sessions endpoint
|
|
82
|
+
return { success: true };
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (error instanceof Error) {
|
|
86
|
+
if (error.message.includes('fetch')) {
|
|
87
|
+
return { success: false, error: 'Network error. Please check your internet connection' };
|
|
88
|
+
}
|
|
89
|
+
return { success: false, error: error.message };
|
|
90
|
+
}
|
|
91
|
+
return { success: false, error: 'Unknown error occurred during API test' };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Test Gemini API key connectivity
|
|
96
|
+
*/
|
|
97
|
+
static async testGeminiApiKey(apiKey) {
|
|
98
|
+
try {
|
|
99
|
+
// Validate format first
|
|
100
|
+
const validation = this.validateGeminiApiKey(apiKey);
|
|
101
|
+
if (!validation.valid) {
|
|
102
|
+
return { success: false, error: validation.error };
|
|
103
|
+
}
|
|
104
|
+
// Test connectivity with a simple API call
|
|
105
|
+
const response = await fetch('https://generativelanguage.googleapis.com/v1beta/models', {
|
|
106
|
+
method: 'GET',
|
|
107
|
+
headers: {
|
|
108
|
+
'x-goog-api-key': apiKey.trim()
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
if (response.status === 401) {
|
|
112
|
+
return { success: false, error: 'Invalid API key' };
|
|
113
|
+
}
|
|
114
|
+
if (response.status === 403) {
|
|
115
|
+
return { success: false, error: 'API key does not have required permissions' };
|
|
116
|
+
}
|
|
117
|
+
if (response.status === 429) {
|
|
118
|
+
return { success: false, error: 'Rate limit exceeded. Please try again later' };
|
|
119
|
+
}
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
return { success: false, error: `API error: ${response.status} ${response.statusText}` };
|
|
122
|
+
}
|
|
123
|
+
// Verify we can parse the response
|
|
124
|
+
const data = await response.json();
|
|
125
|
+
if (!data.models || !Array.isArray(data.models)) {
|
|
126
|
+
return { success: false, error: 'Unexpected API response format' };
|
|
127
|
+
}
|
|
128
|
+
return { success: true };
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (error instanceof Error) {
|
|
132
|
+
if (error.message.includes('fetch')) {
|
|
133
|
+
return { success: false, error: 'Network error. Please check your internet connection' };
|
|
134
|
+
}
|
|
135
|
+
return { success: false, error: error.message };
|
|
136
|
+
}
|
|
137
|
+
return { success: false, error: 'Unknown error occurred during API test' };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Store API keys securely in configuration
|
|
142
|
+
*/
|
|
143
|
+
static async storeApiKeys(keys) {
|
|
144
|
+
const config = await ConfigurationManager.load();
|
|
145
|
+
if (keys.jules) {
|
|
146
|
+
config.apiKeys.jules = keys.jules.trim();
|
|
147
|
+
}
|
|
148
|
+
if (keys.gemini) {
|
|
149
|
+
config.apiKeys.gemini = keys.gemini.trim();
|
|
150
|
+
}
|
|
151
|
+
await ConfigurationManager.save(config);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get stored API keys
|
|
155
|
+
*/
|
|
156
|
+
static async getStoredApiKeys() {
|
|
157
|
+
const config = await ConfigurationManager.load();
|
|
158
|
+
return {
|
|
159
|
+
jules: config.apiKeys.jules,
|
|
160
|
+
gemini: config.apiKeys.gemini
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if API keys are configured
|
|
165
|
+
*/
|
|
166
|
+
static async hasApiKeys() {
|
|
167
|
+
const keys = await this.getStoredApiKeys();
|
|
168
|
+
return {
|
|
169
|
+
jules: !!keys.jules,
|
|
170
|
+
gemini: !!keys.gemini
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Clear stored API keys
|
|
175
|
+
*/
|
|
176
|
+
static async clearApiKeys() {
|
|
177
|
+
const config = await ConfigurationManager.load();
|
|
178
|
+
config.apiKeys.jules = null;
|
|
179
|
+
config.apiKeys.gemini = null;
|
|
180
|
+
await ConfigurationManager.save(config);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Validate and test all stored API keys
|
|
184
|
+
*/
|
|
185
|
+
static async validateStoredKeys() {
|
|
186
|
+
const keys = await this.getStoredApiKeys();
|
|
187
|
+
const results = {
|
|
188
|
+
jules: { valid: false, error: 'No API key configured' },
|
|
189
|
+
gemini: { valid: false, error: 'No API key configured' }
|
|
190
|
+
};
|
|
191
|
+
if (keys.jules) {
|
|
192
|
+
const julesResult = await this.testJulesApiKey(keys.jules);
|
|
193
|
+
results.jules = { valid: julesResult.success, error: julesResult.error || '' };
|
|
194
|
+
}
|
|
195
|
+
if (keys.gemini) {
|
|
196
|
+
const geminiResult = await this.testGeminiApiKey(keys.gemini);
|
|
197
|
+
results.gemini = { valid: geminiResult.success, error: geminiResult.error || '' };
|
|
198
|
+
}
|
|
199
|
+
return results;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get API key status for display
|
|
203
|
+
*/
|
|
204
|
+
static async getApiKeyStatus() {
|
|
205
|
+
const keys = await this.getStoredApiKeys();
|
|
206
|
+
const status = {
|
|
207
|
+
jules: 'missing',
|
|
208
|
+
gemini: 'missing'
|
|
209
|
+
};
|
|
210
|
+
if (keys.jules) {
|
|
211
|
+
const validation = this.validateJulesApiKey(keys.jules);
|
|
212
|
+
status.jules = validation.valid ? 'configured' : 'invalid';
|
|
213
|
+
}
|
|
214
|
+
if (keys.gemini) {
|
|
215
|
+
const validation = this.validateGeminiApiKey(keys.gemini);
|
|
216
|
+
status.gemini = validation.valid ? 'configured' : 'invalid';
|
|
217
|
+
}
|
|
218
|
+
return status;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Show helpful error messages for API failures
|
|
222
|
+
*/
|
|
223
|
+
static showApiErrorHelp(service, error) {
|
|
224
|
+
UIComponents.showErrorBox(`${service.toUpperCase()} API Error: ${error}`);
|
|
225
|
+
console.log('\nTroubleshooting steps:');
|
|
226
|
+
if (service === 'jules') {
|
|
227
|
+
UIComponents.showList([
|
|
228
|
+
'Verify your Jules API key at https://jules.google.com',
|
|
229
|
+
'Check that the Jules GitHub app is installed on your repository',
|
|
230
|
+
'Ensure your API key has the required permissions',
|
|
231
|
+
'Try regenerating your API key if the issue persists'
|
|
232
|
+
]);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
UIComponents.showList([
|
|
236
|
+
'Verify your Gemini API key at https://aistudio.google.com/app/apikey',
|
|
237
|
+
'Check that the Gemini API is enabled in your Google Cloud project',
|
|
238
|
+
'Ensure you have sufficient quota remaining',
|
|
239
|
+
'Try regenerating your API key if the issue persists'
|
|
240
|
+
]);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=api-key-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key-manager.js","sourceRoot":"","sources":["../../src/core/api-key-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Violation, Analysis, Fix, Configuration } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Main BaseGuard class that orchestrates compatibility checking and fixing
|
|
4
|
+
*/
|
|
5
|
+
export declare class BaseGuard {
|
|
6
|
+
private config;
|
|
7
|
+
private parserManager;
|
|
8
|
+
private baselineChecker;
|
|
9
|
+
private fileProcessor;
|
|
10
|
+
private directoryFilter;
|
|
11
|
+
private cacheManager;
|
|
12
|
+
constructor(config: Configuration);
|
|
13
|
+
/**
|
|
14
|
+
* Check files for compatibility violations with performance optimizations
|
|
15
|
+
*/
|
|
16
|
+
checkViolations(patterns?: string[]): Promise<Violation[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Get processing statistics
|
|
19
|
+
*/
|
|
20
|
+
getProcessingStats(directories?: string[]): Promise<{
|
|
21
|
+
directoryStats: any;
|
|
22
|
+
processorStats: any;
|
|
23
|
+
cacheStats: any;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Clear all caches
|
|
27
|
+
*/
|
|
28
|
+
clearCache(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Cleanup resources
|
|
31
|
+
*/
|
|
32
|
+
cleanup(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Analyze violations using AI
|
|
35
|
+
*/
|
|
36
|
+
analyzeViolations(violations: Violation[]): Promise<Analysis[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Generate fixes for violations
|
|
39
|
+
*/
|
|
40
|
+
generateFixes(violations: Violation[], analyses: Analysis[]): Promise<Fix[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Apply fixes to files
|
|
43
|
+
*/
|
|
44
|
+
applyFixes(fixes: Fix[]): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=baseguard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseguard.d.ts","sourceRoot":"","sources":["../../src/core/baseguard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOjF;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,EAAE,aAAa;IAkBjC;;OAEG;IACG,eAAe,CAAC,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8CpE;;OAEG;IACG,kBAAkB,CAAC,WAAW,GAAE,MAAM,EAAY,GAAG,OAAO,CAAC;QACjE,cAAc,EAAE,GAAG,CAAC;QACpB,cAAc,EAAE,GAAG,CAAC;QACpB,UAAU,EAAE,GAAG,CAAC;KACjB,CAAC;IA0BF;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKrE;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAKlF;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAI9C"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { ParserManager } from '../parsers/parser-manager.js';
|
|
2
|
+
import { BaselineChecker } from './baseline-checker.js';
|
|
3
|
+
import { FileProcessor } from './file-processor.js';
|
|
4
|
+
import { DirectoryFilter } from './directory-filter.js';
|
|
5
|
+
import { CacheManager } from './cache-manager.js';
|
|
6
|
+
/**
|
|
7
|
+
* Main BaseGuard class that orchestrates compatibility checking and fixing
|
|
8
|
+
*/
|
|
9
|
+
export class BaseGuard {
|
|
10
|
+
config;
|
|
11
|
+
parserManager;
|
|
12
|
+
baselineChecker;
|
|
13
|
+
fileProcessor;
|
|
14
|
+
directoryFilter;
|
|
15
|
+
cacheManager;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.config = config;
|
|
18
|
+
this.cacheManager = new CacheManager({
|
|
19
|
+
maxCacheSize: 2000,
|
|
20
|
+
cacheValidityMs: 10 * 60 * 1000 // 10 minutes
|
|
21
|
+
});
|
|
22
|
+
this.parserManager = new ParserManager();
|
|
23
|
+
this.baselineChecker = new BaselineChecker();
|
|
24
|
+
this.fileProcessor = new FileProcessor({
|
|
25
|
+
maxWorkers: 8,
|
|
26
|
+
cacheManager: this.cacheManager
|
|
27
|
+
});
|
|
28
|
+
this.directoryFilter = new DirectoryFilter({
|
|
29
|
+
maxDepth: 8,
|
|
30
|
+
maxFiles: 5000
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check files for compatibility violations with performance optimizations
|
|
35
|
+
*/
|
|
36
|
+
async checkViolations(patterns = []) {
|
|
37
|
+
const violations = [];
|
|
38
|
+
// Find files using smart filtering and caching
|
|
39
|
+
const allFiles = patterns.length > 0
|
|
40
|
+
? await this.directoryFilter.findFilesWithGlob(patterns)
|
|
41
|
+
: await this.directoryFilter.findFiles(['src', 'app', 'pages', 'components'], {
|
|
42
|
+
includeHidden: false
|
|
43
|
+
});
|
|
44
|
+
if (allFiles.length === 0) {
|
|
45
|
+
console.warn('No supported files found to check');
|
|
46
|
+
return violations;
|
|
47
|
+
}
|
|
48
|
+
console.log(`Processing ${allFiles.length} files...`);
|
|
49
|
+
// Process files concurrently with caching
|
|
50
|
+
const allFeatures = await this.fileProcessor.processFiles(allFiles);
|
|
51
|
+
// Check each feature for compatibility violations
|
|
52
|
+
for (const feature of allFeatures) {
|
|
53
|
+
try {
|
|
54
|
+
const compatibilityResult = await this.baselineChecker.checkCompatibility(feature, this.config.targets);
|
|
55
|
+
// Add violations with file context
|
|
56
|
+
for (const violation of compatibilityResult.violations) {
|
|
57
|
+
violations.push({
|
|
58
|
+
...violation,
|
|
59
|
+
file: feature.file || 'unknown',
|
|
60
|
+
line: feature.line,
|
|
61
|
+
column: feature.column,
|
|
62
|
+
context: feature.context
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.warn(`Warning: Could not check compatibility for feature ${feature.feature}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return violations;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get processing statistics
|
|
74
|
+
*/
|
|
75
|
+
async getProcessingStats(directories = ['src']) {
|
|
76
|
+
const directoryStats = await Promise.all(directories.map(dir => this.directoryFilter.getDirectoryStats(dir)));
|
|
77
|
+
return {
|
|
78
|
+
directoryStats: directoryStats.reduce((acc, stats) => ({
|
|
79
|
+
totalFiles: acc.totalFiles + stats.totalFiles,
|
|
80
|
+
supportedFiles: acc.supportedFiles + stats.supportedFiles,
|
|
81
|
+
directories: acc.directories + stats.directories,
|
|
82
|
+
excludedDirectories: acc.excludedDirectories + stats.excludedDirectories,
|
|
83
|
+
largestFiles: [...acc.largestFiles, ...stats.largestFiles]
|
|
84
|
+
.sort((a, b) => b.size - a.size)
|
|
85
|
+
.slice(0, 10)
|
|
86
|
+
}), {
|
|
87
|
+
totalFiles: 0,
|
|
88
|
+
supportedFiles: 0,
|
|
89
|
+
directories: 0,
|
|
90
|
+
excludedDirectories: 0,
|
|
91
|
+
largestFiles: []
|
|
92
|
+
}),
|
|
93
|
+
processorStats: this.fileProcessor.getStats(),
|
|
94
|
+
cacheStats: this.cacheManager.getStats()
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Clear all caches
|
|
99
|
+
*/
|
|
100
|
+
clearCache() {
|
|
101
|
+
this.cacheManager.clearAll();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Cleanup resources
|
|
105
|
+
*/
|
|
106
|
+
async cleanup() {
|
|
107
|
+
await this.fileProcessor.cleanup();
|
|
108
|
+
this.cacheManager.clearAll();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Analyze violations using AI
|
|
112
|
+
*/
|
|
113
|
+
async analyzeViolations(violations) {
|
|
114
|
+
// Implementation will be added in task 4
|
|
115
|
+
throw new Error('Not implemented yet');
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Generate fixes for violations
|
|
119
|
+
*/
|
|
120
|
+
async generateFixes(violations, analyses) {
|
|
121
|
+
// Implementation will be added in task 5
|
|
122
|
+
throw new Error('Not implemented yet');
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Apply fixes to files
|
|
126
|
+
*/
|
|
127
|
+
async applyFixes(fixes) {
|
|
128
|
+
// Implementation will be added in task 5
|
|
129
|
+
throw new Error('Not implemented yet');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=baseguard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseguard.js","sourceRoot":"","sources":["../../src/core/baseguard.ts"],"names":[],"mappings":"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"}
|