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,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git hook installation and management using husky
|
|
3
|
+
*/
|
|
4
|
+
export declare class GitHookManager {
|
|
5
|
+
private huskyDir;
|
|
6
|
+
/**
|
|
7
|
+
* Install git hooks for BaseGuard automation
|
|
8
|
+
*/
|
|
9
|
+
installHooks(trigger: 'pre-commit' | 'pre-push'): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Uninstall git hooks
|
|
12
|
+
*/
|
|
13
|
+
uninstallHooks(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Check if hooks are installed
|
|
16
|
+
*/
|
|
17
|
+
areHooksInstalled(): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Get currently installed hook types
|
|
20
|
+
*/
|
|
21
|
+
getInstalledHooks(): Promise<('pre-commit' | 'pre-push')[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Update existing hook configuration
|
|
24
|
+
*/
|
|
25
|
+
updateHookConfiguration(oldTrigger: 'pre-commit' | 'pre-push', newTrigger: 'pre-commit' | 'pre-push'): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Ensure we're in a git repository
|
|
28
|
+
*/
|
|
29
|
+
private ensureGitRepository;
|
|
30
|
+
/**
|
|
31
|
+
* Ensure husky is installed and configured
|
|
32
|
+
*/
|
|
33
|
+
private ensureHuskyInstalled;
|
|
34
|
+
/**
|
|
35
|
+
* Add prepare script to package.json for husky
|
|
36
|
+
*/
|
|
37
|
+
private addPrepareScript;
|
|
38
|
+
/**
|
|
39
|
+
* Create hook script content
|
|
40
|
+
*/
|
|
41
|
+
private createHookScript;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=hook-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-manager.d.ts","sourceRoot":"","sources":["../../src/git/hook-manager.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAY;IAE5B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAmB3C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;IAqBjE;;OAEG;IACG,uBAAuB,CAAC,UAAU,EAAE,YAAY,GAAG,UAAU,EAAE,UAAU,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1H;;OAEG;YACW,mBAAmB;IAQjC;;OAEG;YACW,oBAAoB;IAiBlC;;OAEG;YACW,gBAAgB;IAsB9B;;OAEG;YACW,gBAAgB;CA4B/B"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import { existsSync, mkdirSync, writeFileSync, unlinkSync, readFileSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
/**
|
|
6
|
+
* Git hook installation and management using husky
|
|
7
|
+
*/
|
|
8
|
+
export class GitHookManager {
|
|
9
|
+
huskyDir = '.husky';
|
|
10
|
+
/**
|
|
11
|
+
* Install git hooks for BaseGuard automation
|
|
12
|
+
*/
|
|
13
|
+
async installHooks(trigger) {
|
|
14
|
+
try {
|
|
15
|
+
// Ensure we're in a git repository
|
|
16
|
+
await this.ensureGitRepository();
|
|
17
|
+
// Ensure husky is installed and configured
|
|
18
|
+
await this.ensureHuskyInstalled();
|
|
19
|
+
// Create the hook script
|
|
20
|
+
await this.createHookScript(trigger);
|
|
21
|
+
console.log(chalk.green(`✅ ${trigger} hook installed successfully`));
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
throw new Error(`Failed to install ${trigger} hook: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Uninstall git hooks
|
|
29
|
+
*/
|
|
30
|
+
async uninstallHooks() {
|
|
31
|
+
try {
|
|
32
|
+
const hooks = ['pre-commit', 'pre-push'];
|
|
33
|
+
for (const hook of hooks) {
|
|
34
|
+
const hookPath = join(this.huskyDir, hook);
|
|
35
|
+
if (existsSync(hookPath)) {
|
|
36
|
+
unlinkSync(hookPath);
|
|
37
|
+
console.log(chalk.yellow(`🗑️ Removed ${hook} hook`));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// If no hooks remain, we could optionally remove husky entirely
|
|
41
|
+
// but we'll leave it in case user has other hooks
|
|
42
|
+
console.log(chalk.green('✅ BaseGuard hooks uninstalled'));
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
throw new Error(`Failed to uninstall hooks: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if hooks are installed
|
|
50
|
+
*/
|
|
51
|
+
async areHooksInstalled() {
|
|
52
|
+
const preCommitPath = join(this.huskyDir, 'pre-commit');
|
|
53
|
+
const prePushPath = join(this.huskyDir, 'pre-push');
|
|
54
|
+
// Check if either hook exists and contains BaseGuard automation
|
|
55
|
+
const checkHook = (path) => {
|
|
56
|
+
if (!existsSync(path))
|
|
57
|
+
return false;
|
|
58
|
+
try {
|
|
59
|
+
const content = readFileSync(path, 'utf-8');
|
|
60
|
+
return content.includes('base automation run');
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
return checkHook(preCommitPath) || checkHook(prePushPath);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get currently installed hook types
|
|
70
|
+
*/
|
|
71
|
+
async getInstalledHooks() {
|
|
72
|
+
const hooks = [];
|
|
73
|
+
const checkHook = (hookType) => {
|
|
74
|
+
const hookPath = join(this.huskyDir, hookType);
|
|
75
|
+
if (!existsSync(hookPath))
|
|
76
|
+
return false;
|
|
77
|
+
try {
|
|
78
|
+
const content = readFileSync(hookPath, 'utf-8');
|
|
79
|
+
return content.includes('base automation run');
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
if (checkHook('pre-commit'))
|
|
86
|
+
hooks.push('pre-commit');
|
|
87
|
+
if (checkHook('pre-push'))
|
|
88
|
+
hooks.push('pre-push');
|
|
89
|
+
return hooks;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Update existing hook configuration
|
|
93
|
+
*/
|
|
94
|
+
async updateHookConfiguration(oldTrigger, newTrigger) {
|
|
95
|
+
try {
|
|
96
|
+
// Remove old hook if different
|
|
97
|
+
if (oldTrigger !== newTrigger) {
|
|
98
|
+
const oldHookPath = join(this.huskyDir, oldTrigger);
|
|
99
|
+
if (existsSync(oldHookPath)) {
|
|
100
|
+
unlinkSync(oldHookPath);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Install new hook
|
|
104
|
+
await this.createHookScript(newTrigger);
|
|
105
|
+
console.log(chalk.green(`✅ Hook configuration updated to ${newTrigger}`));
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
throw new Error(`Failed to update hook configuration: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Ensure we're in a git repository
|
|
113
|
+
*/
|
|
114
|
+
async ensureGitRepository() {
|
|
115
|
+
try {
|
|
116
|
+
execSync('git rev-parse --git-dir', { stdio: 'ignore' });
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
throw new Error('Not in a git repository. Please run this command from within a git repository.');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Ensure husky is installed and configured
|
|
124
|
+
*/
|
|
125
|
+
async ensureHuskyInstalled() {
|
|
126
|
+
try {
|
|
127
|
+
// Check if husky is already initialized
|
|
128
|
+
if (!existsSync(this.huskyDir)) {
|
|
129
|
+
console.log(chalk.blue('🔧 Initializing husky...'));
|
|
130
|
+
// Initialize husky
|
|
131
|
+
execSync('npx husky install', { stdio: 'inherit' });
|
|
132
|
+
// Add husky install to package.json prepare script if not already there
|
|
133
|
+
await this.addPrepareScript();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
throw new Error(`Failed to initialize husky: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Add prepare script to package.json for husky
|
|
142
|
+
*/
|
|
143
|
+
async addPrepareScript() {
|
|
144
|
+
try {
|
|
145
|
+
const packageJsonPath = 'package.json';
|
|
146
|
+
if (!existsSync(packageJsonPath))
|
|
147
|
+
return;
|
|
148
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
149
|
+
// Add prepare script if it doesn't exist or doesn't include husky
|
|
150
|
+
if (!packageJson.scripts) {
|
|
151
|
+
packageJson.scripts = {};
|
|
152
|
+
}
|
|
153
|
+
if (!packageJson.scripts.prepare || !packageJson.scripts.prepare.includes('husky install')) {
|
|
154
|
+
packageJson.scripts.prepare = 'husky install';
|
|
155
|
+
writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
|
|
156
|
+
console.log(chalk.blue('📝 Added husky install to package.json prepare script'));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.warn(chalk.yellow(`⚠️ Could not update package.json: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Create hook script content
|
|
165
|
+
*/
|
|
166
|
+
async createHookScript(trigger) {
|
|
167
|
+
const hookPath = join(this.huskyDir, trigger);
|
|
168
|
+
// Create .husky directory if it doesn't exist
|
|
169
|
+
if (!existsSync(this.huskyDir)) {
|
|
170
|
+
mkdirSync(this.huskyDir, { recursive: true });
|
|
171
|
+
}
|
|
172
|
+
const hookContent = `#!/usr/bin/env sh
|
|
173
|
+
. "$(dirname -- "$0")/_/husky.sh"
|
|
174
|
+
|
|
175
|
+
# BaseGuard automation
|
|
176
|
+
base automation run --trigger ${trigger}
|
|
177
|
+
`;
|
|
178
|
+
writeFileSync(hookPath, hookContent);
|
|
179
|
+
// Make the hook executable (Unix systems)
|
|
180
|
+
if (process.platform !== 'win32') {
|
|
181
|
+
try {
|
|
182
|
+
execSync(`chmod +x "${hookPath}"`);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.warn(chalk.yellow(`⚠️ Could not make hook executable: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
console.log(chalk.blue(`📝 Created ${trigger} hook script`));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=hook-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-manager.js","sourceRoot":"","sources":["../../src/git/hook-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './core/index.js';
|
|
2
|
+
export * from './parsers/index.js';
|
|
3
|
+
export * from './ai/index.js';
|
|
4
|
+
export * from './git/index.js';
|
|
5
|
+
export * from './commands/index.js';
|
|
6
|
+
export * from './ui/index.js';
|
|
7
|
+
export * from './types/index.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Main BaseGuard exports
|
|
2
|
+
export * from './core/index.js';
|
|
3
|
+
export * from './parsers/index.js';
|
|
4
|
+
export * from './ai/index.js';
|
|
5
|
+
export * from './git/index.js';
|
|
6
|
+
export * from './commands/index.js';
|
|
7
|
+
export * from './ui/index.js';
|
|
8
|
+
export * from './types/index.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { DetectedFeature } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Comprehensive web-features validation and filtering system
|
|
4
|
+
* Validates detected features against the complete web-features package
|
|
5
|
+
* and filters out framework-specific features while capturing all web platform scope
|
|
6
|
+
*/
|
|
7
|
+
export declare class FeatureValidator {
|
|
8
|
+
private readonly FEATURE_ID_MAP;
|
|
9
|
+
private readonly FRAMEWORK_SPECIFIC_PATTERNS;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Validate and filter detected features against web-features package
|
|
13
|
+
*/
|
|
14
|
+
validateFeatures(detectedFeatures: DetectedFeature[], concurrency?: number): Promise<DetectedFeature[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Validate a single feature against web-features package
|
|
17
|
+
*/
|
|
18
|
+
private validateSingleFeature;
|
|
19
|
+
/**
|
|
20
|
+
* Build comprehensive feature ID mapping for ALL web platform technologies
|
|
21
|
+
*/
|
|
22
|
+
private buildFeatureIdMap;
|
|
23
|
+
/**
|
|
24
|
+
* Build patterns to identify framework-specific features
|
|
25
|
+
*/
|
|
26
|
+
private buildFrameworkPatterns;
|
|
27
|
+
/**
|
|
28
|
+
* Check if a feature is framework-specific
|
|
29
|
+
*/
|
|
30
|
+
private isFrameworkSpecific;
|
|
31
|
+
/**
|
|
32
|
+
* Map detected feature to web-features ID
|
|
33
|
+
*/
|
|
34
|
+
private mapToWebFeatureId;
|
|
35
|
+
/**
|
|
36
|
+
* Enhance context information for better display
|
|
37
|
+
*/
|
|
38
|
+
private enhanceContext;
|
|
39
|
+
/**
|
|
40
|
+
* Create batches for concurrent processing
|
|
41
|
+
*/
|
|
42
|
+
private createBatches;
|
|
43
|
+
/**
|
|
44
|
+
* Remove duplicate features based on feature ID, file, and line
|
|
45
|
+
*/
|
|
46
|
+
private deduplicateFeatures;
|
|
47
|
+
/**
|
|
48
|
+
* Get all supported web-features IDs for validation
|
|
49
|
+
*/
|
|
50
|
+
getSupportedFeatures(): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Check if a specific feature ID is supported by web-features
|
|
53
|
+
*/
|
|
54
|
+
isFeatureSupported(featureId: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Get feature data from web-features package
|
|
57
|
+
*/
|
|
58
|
+
getFeatureData(featureId: string): any;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=feature-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-validator.d.ts","sourceRoot":"","sources":["../../src/parsers/feature-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAW;;IAOvD;;OAEG;IACG,gBAAgB,CACpB,gBAAgB,EAAE,eAAe,EAAE,EACnC,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,eAAe,EAAE,CAAC;IAiB7B;;OAEG;YACW,qBAAqB;IAgCnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgSzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqE9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI9C;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;CAGvC"}
|