@saferun/cli 0.6.19 → 0.6.20
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/README.md +43 -4
- package/dist/commands/hook.js +8 -0
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/shell-init.js +9 -0
- package/dist/commands/shell-init.js.map +1 -1
- package/dist/interceptors/rebase.d.ts +2 -0
- package/dist/interceptors/rebase.js +116 -0
- package/dist/interceptors/rebase.js.map +1 -0
- package/dist/utils/git-parser.d.ts +2 -1
- package/dist/utils/git-parser.js +26 -0
- package/dist/utils/git-parser.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -49,13 +49,52 @@ saferun uninstall --global # Remove completely
|
|
|
49
49
|
|
|
50
50
|
## How It Works
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
SafeRun uses **multiple layers** of protection:
|
|
53
|
+
|
|
54
|
+
1. **Shell Wrapper** — Intercepts `git` commands in interactive shells
|
|
55
|
+
2. **Git Hooks** — `pre-commit`, `pre-push`, `post-checkout`
|
|
56
|
+
3. **reference-transaction Hook** — Intercepts ALL ref changes at Git core level (Git 2.29+)
|
|
57
|
+
|
|
58
|
+
The `reference-transaction` hook is the **most reliable** layer — it catches operations even when AI agents call `/usr/bin/git` directly, bypassing shell aliases and PATH wrappers.
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
AI Agent → /usr/bin/git reset --hard → Git internals → reference-transaction hook → SafeRun blocks!
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
When a dangerous operation is detected:
|
|
65
|
+
1. SafeRun calculates risk score and detects AI agent
|
|
66
|
+
2. Slack notification sent with Approve/Reject buttons
|
|
67
|
+
3. You approve → command executes. You reject → command blocked.
|
|
56
68
|
|
|
57
69
|
Approval timeout: 2 hours.
|
|
58
70
|
|
|
71
|
+
## Requirements
|
|
72
|
+
|
|
73
|
+
- **Node.js** 18+
|
|
74
|
+
- **Git** 2.29+ (for `reference-transaction` hook)
|
|
75
|
+
- **Slack** workspace with bot token
|
|
76
|
+
|
|
77
|
+
## Known Limitations (Help Wanted! 🙏)
|
|
78
|
+
|
|
79
|
+
SafeRun protects **Git ref-changing operations**. Some operations are outside our scope:
|
|
80
|
+
|
|
81
|
+
**✅ Protected Operations** (ref-changing):
|
|
82
|
+
- `git reset --hard` — changes branch ref
|
|
83
|
+
- `git branch -D` — deletes branch ref
|
|
84
|
+
- `git push --force` — changes remote ref
|
|
85
|
+
- `git rebase` — rewrites branch ref
|
|
86
|
+
- `git checkout` to different branch — updates HEAD ref
|
|
87
|
+
|
|
88
|
+
**❌ Not Protected** (no ref change):
|
|
89
|
+
- `git clean -fd` — deletes untracked files only → *use `.gitignore`*
|
|
90
|
+
- `rm -rf .git` — filesystem operation → *use Docker/sandbox*
|
|
91
|
+
- Deleting `.git/hooks/` — filesystem operation → *use Docker/sandbox*
|
|
92
|
+
|
|
93
|
+
**Why can't we protect `git clean`?**
|
|
94
|
+
Git's `reference-transaction` hook only fires when refs change. `git clean` deletes untracked files without touching refs.
|
|
95
|
+
|
|
96
|
+
**Community contributions welcome!** If you know how to intercept these operations, please open an issue or PR.
|
|
97
|
+
|
|
59
98
|
## Documentation
|
|
60
99
|
|
|
61
100
|
Full documentation: [github.com/Cocabadger/saferun-api](https://github.com/Cocabadger/saferun-api)
|
package/dist/commands/hook.js
CHANGED
|
@@ -93,6 +93,10 @@ class HookCommand {
|
|
|
93
93
|
const { interceptCommit } = await Promise.resolve().then(() => __importStar(require('../interceptors/commit')));
|
|
94
94
|
return await interceptCommit(context);
|
|
95
95
|
}
|
|
96
|
+
case 'git-rebase': {
|
|
97
|
+
const { interceptRebase } = await Promise.resolve().then(() => __importStar(require('../interceptors/rebase')));
|
|
98
|
+
return await interceptRebase(context);
|
|
99
|
+
}
|
|
96
100
|
default: {
|
|
97
101
|
console.warn(chalk_1.default.yellow(`Unknown SafeRun hook handler: ${handler}`));
|
|
98
102
|
return (0, git_1.runGitCommand)(this.mapHandlerToGitCommand(handler, forwarded), {
|
|
@@ -118,6 +122,8 @@ class HookCommand {
|
|
|
118
122
|
return 'push';
|
|
119
123
|
case 'git-commit':
|
|
120
124
|
return 'commit';
|
|
125
|
+
case 'git-rebase':
|
|
126
|
+
return 'rebase';
|
|
121
127
|
default:
|
|
122
128
|
return handler;
|
|
123
129
|
}
|
|
@@ -134,6 +140,8 @@ class HookCommand {
|
|
|
134
140
|
return ['push', ...args];
|
|
135
141
|
case 'git-commit':
|
|
136
142
|
return ['commit', ...args];
|
|
143
|
+
case 'git-rebase':
|
|
144
|
+
return ['rebase', ...args];
|
|
137
145
|
default: {
|
|
138
146
|
const command = handler.startsWith('git-') ? handler.slice(4) : handler;
|
|
139
147
|
return [command, ...args];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,11 @@ git() {
|
|
|
110
110
|
return \$?
|
|
111
111
|
fi
|
|
112
112
|
;;
|
|
113
|
+
rebase)
|
|
114
|
+
# Intercept all rebase operations (especially interactive)
|
|
115
|
+
saferun hook git-rebase "\${@:2}"
|
|
116
|
+
return \$?
|
|
117
|
+
;;
|
|
113
118
|
config)
|
|
114
119
|
# Block attempts to disable hooks
|
|
115
120
|
if [[ "\$all_args" == *"core.hooksPath"* ]]; then
|
|
@@ -180,6 +185,10 @@ function git --wraps git
|
|
|
180
185
|
saferun hook git-clean $argv[2..-1]
|
|
181
186
|
return $status
|
|
182
187
|
end
|
|
188
|
+
case rebase
|
|
189
|
+
# Intercept all rebase operations
|
|
190
|
+
saferun hook git-rebase $argv[2..-1]
|
|
191
|
+
return $status
|
|
183
192
|
case config
|
|
184
193
|
if string match -q "*core.hooksPath*" $all_args
|
|
185
194
|
echo "🛑 SafeRun: Blocked attempt to modify hooks path"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-init.js","sourceRoot":"","sources":["../../src/commands/shell-init.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,kDAA0B;AAC1B,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AAExB,MAAa,gBAAgB;IAC3B,KAAK,CAAC,GAAG,CAAC,OAA4D;QACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5C,sEAAsE;QACtE,oDAAoD;QACpD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAEtC,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7B,kCAAkC;YAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC;QAEpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAE1C,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAE9C,OAAO,MAAM,CAAC,CAAC,UAAU;IAC3B,CAAC;IAEO,eAAe,CAAC,KAAa;QACnC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpC,CAAC;QAED,mBAAmB;QACnB,OAAO
|
|
1
|
+
{"version":3,"file":"shell-init.js","sourceRoot":"","sources":["../../src/commands/shell-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.interceptRebase = interceptRebase;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const approval_flow_1 = require("../utils/approval-flow");
|
|
9
|
+
const git_1 = require("../utils/git");
|
|
10
|
+
const logger_1 = require("../utils/logger");
|
|
11
|
+
function parseRebaseArgs(args) {
|
|
12
|
+
const interactiveFlags = new Set(['-i', '--interactive']);
|
|
13
|
+
let isInteractive = false;
|
|
14
|
+
let hasOnto = false;
|
|
15
|
+
let target;
|
|
16
|
+
const nonFlags = [];
|
|
17
|
+
for (const arg of args) {
|
|
18
|
+
if (interactiveFlags.has(arg)) {
|
|
19
|
+
isInteractive = true;
|
|
20
|
+
}
|
|
21
|
+
else if (arg === '--onto') {
|
|
22
|
+
hasOnto = true;
|
|
23
|
+
}
|
|
24
|
+
else if (!arg.startsWith('-')) {
|
|
25
|
+
nonFlags.push(arg);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// First non-flag arg is usually the target (upstream or branch)
|
|
29
|
+
if (nonFlags.length > 0) {
|
|
30
|
+
target = nonFlags[0];
|
|
31
|
+
}
|
|
32
|
+
return { isInteractive, hasOnto, target };
|
|
33
|
+
}
|
|
34
|
+
async function interceptRebase(context) {
|
|
35
|
+
var _a, _b, _c;
|
|
36
|
+
const params = parseRebaseArgs(context.args);
|
|
37
|
+
const repoSlug = context.config.github.repo === 'auto'
|
|
38
|
+
? (_a = context.gitInfo.repoSlug) !== null && _a !== void 0 ? _a : 'local/repo'
|
|
39
|
+
: context.config.github.repo;
|
|
40
|
+
// Calculate risk score based on rebase type
|
|
41
|
+
let riskScore = 6.0; // Base risk for rebase
|
|
42
|
+
const reasons = ['git_rebase'];
|
|
43
|
+
if (params.isInteractive) {
|
|
44
|
+
riskScore = 8.5; // Interactive rebase is higher risk
|
|
45
|
+
reasons.push('interactive_mode');
|
|
46
|
+
}
|
|
47
|
+
if (params.hasOnto) {
|
|
48
|
+
riskScore = Math.max(riskScore, 7.5);
|
|
49
|
+
reasons.push('onto_mode');
|
|
50
|
+
}
|
|
51
|
+
const humanPreview = params.isInteractive
|
|
52
|
+
? 'Interactive rebase will allow rewriting, combining, or dropping commits. This can corrupt history if done incorrectly.'
|
|
53
|
+
: `Rebase will move your commits on top of ${params.target || 'the target branch'}, rewriting local history.`;
|
|
54
|
+
// Check if blocking is disabled
|
|
55
|
+
if (((_b = context.modeSettings) === null || _b === void 0 ? void 0 : _b.block_operations) === false) {
|
|
56
|
+
if ((_c = context.modeSettings) === null || _c === void 0 ? void 0 : _c.show_warnings) {
|
|
57
|
+
console.warn(chalk_1.default.yellow('SafeRun warning: git rebase will run without approval (block_operations=false).'));
|
|
58
|
+
}
|
|
59
|
+
return (0, git_1.runGitCommand)(['rebase', ...context.args], {
|
|
60
|
+
cwd: context.gitInfo.repoRoot,
|
|
61
|
+
disableAliases: ['rebase'],
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const dryRun = await context.client.gitOperation({
|
|
66
|
+
operationType: 'rebase',
|
|
67
|
+
target: repoSlug,
|
|
68
|
+
command: `git rebase ${context.args.join(' ')}`,
|
|
69
|
+
riskScore: riskScore / 10,
|
|
70
|
+
humanPreview,
|
|
71
|
+
requiresApproval: true,
|
|
72
|
+
reasons,
|
|
73
|
+
});
|
|
74
|
+
const flow = new approval_flow_1.ApprovalFlow({
|
|
75
|
+
client: context.client,
|
|
76
|
+
metrics: context.metrics,
|
|
77
|
+
config: context.config,
|
|
78
|
+
modeSettings: context.modeSettings,
|
|
79
|
+
});
|
|
80
|
+
const outcome = await flow.requestApproval(dryRun);
|
|
81
|
+
if (outcome !== approval_flow_1.ApprovalOutcome.Approved) {
|
|
82
|
+
console.error(chalk_1.default.red('SafeRun blocked git rebase. Approval denied or timed out.'));
|
|
83
|
+
(0, logger_1.logOperation)(context.gitInfo.repoRoot, {
|
|
84
|
+
event: 'rebase_blocked',
|
|
85
|
+
operation: 'rebase',
|
|
86
|
+
command: `git rebase ${context.args.join(' ')}`,
|
|
87
|
+
status: 'blocked',
|
|
88
|
+
reason: 'approval_denied',
|
|
89
|
+
});
|
|
90
|
+
return 1;
|
|
91
|
+
}
|
|
92
|
+
(0, logger_1.logOperation)(context.gitInfo.repoRoot, {
|
|
93
|
+
event: 'rebase_approved',
|
|
94
|
+
operation: 'rebase',
|
|
95
|
+
command: `git rebase ${context.args.join(' ')}`,
|
|
96
|
+
status: 'approved',
|
|
97
|
+
changeId: dryRun.changeId,
|
|
98
|
+
});
|
|
99
|
+
return await (0, git_1.runGitCommand)(['rebase', ...context.args], {
|
|
100
|
+
cwd: context.gitInfo.repoRoot,
|
|
101
|
+
disableAliases: ['rebase'],
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error(chalk_1.default.red('SafeRun error: API unreachable. Blocking rebase for safety.'));
|
|
106
|
+
(0, logger_1.logOperation)(context.gitInfo.repoRoot, {
|
|
107
|
+
event: 'rebase_blocked',
|
|
108
|
+
operation: 'rebase',
|
|
109
|
+
command: `git rebase ${context.args.join(' ')}`,
|
|
110
|
+
status: 'blocked',
|
|
111
|
+
reason: 'api_error',
|
|
112
|
+
});
|
|
113
|
+
return 1;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=rebase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rebase.js","sourceRoot":"","sources":["../../src/interceptors/rebase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type GitOperationType = 'push' | 'branch' | 'reset' | 'clean' | 'unknown';
|
|
1
|
+
export type GitOperationType = 'push' | 'branch' | 'reset' | 'clean' | 'rebase' | 'unknown';
|
|
2
2
|
export interface GitOperation {
|
|
3
3
|
type: GitOperationType;
|
|
4
4
|
action: string;
|
|
@@ -14,5 +14,6 @@ export declare class GitCommandParser {
|
|
|
14
14
|
parseBranch(args: string[]): GitOperation;
|
|
15
15
|
parseReset(args: string[]): GitOperation;
|
|
16
16
|
parseClean(args: string[]): GitOperation;
|
|
17
|
+
parseRebase(args: string[]): GitOperation;
|
|
17
18
|
resolveAlias(command: string, cwd?: string): Promise<string[] | null>;
|
|
18
19
|
}
|
package/dist/utils/git-parser.js
CHANGED
|
@@ -15,6 +15,8 @@ class GitCommandParser {
|
|
|
15
15
|
return this.parseReset(args);
|
|
16
16
|
case 'clean':
|
|
17
17
|
return this.parseClean(args);
|
|
18
|
+
case 'rebase':
|
|
19
|
+
return this.parseRebase(args);
|
|
18
20
|
default:
|
|
19
21
|
return {
|
|
20
22
|
type: 'unknown',
|
|
@@ -170,6 +172,30 @@ class GitCommandParser {
|
|
|
170
172
|
}
|
|
171
173
|
return operation;
|
|
172
174
|
}
|
|
175
|
+
parseRebase(args) {
|
|
176
|
+
const operation = {
|
|
177
|
+
type: 'rebase',
|
|
178
|
+
action: 'rebase',
|
|
179
|
+
targets: [],
|
|
180
|
+
flags: [],
|
|
181
|
+
risk: 'medium',
|
|
182
|
+
};
|
|
183
|
+
const interactiveFlags = new Set(['-i', '--interactive']);
|
|
184
|
+
args.forEach((arg) => {
|
|
185
|
+
if (interactiveFlags.has(arg)) {
|
|
186
|
+
operation.flags.push('interactive');
|
|
187
|
+
operation.risk = 'high';
|
|
188
|
+
}
|
|
189
|
+
if (arg === '--onto') {
|
|
190
|
+
operation.flags.push('onto');
|
|
191
|
+
operation.risk = 'high';
|
|
192
|
+
}
|
|
193
|
+
if (!arg.startsWith('-')) {
|
|
194
|
+
operation.targets.push(arg);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
return operation;
|
|
198
|
+
}
|
|
173
199
|
async resolveAlias(command, cwd = process.cwd()) {
|
|
174
200
|
try {
|
|
175
201
|
const { stdout } = await execFileAsync('git', ['config', '--get', `alias.${command}`], { cwd });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-parser.js","sourceRoot":"","sources":["../../src/utils/git-parser.ts"],"names":[],"mappings":";;;AAYA,iDAAyC;AACzC,+BAAiC;AAEjC,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,wBAAQ,CAAC,CAAC;AAE1C,MAAa,gBAAgB;IAC3B,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B;gBACE,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE,EAAE;oBACT,IAAI,EAAE,KAAK;iBACZ,CAAC;QACN,CAAC;IACH,CAAC;IAED,SAAS,CAAC,IAAc;QACtB,MAAM,SAAS,GAAiB;YAC9B,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,KAAK;SACZ,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YAC1B,CAAC;YACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvC,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YAC1B,CAAC;YACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/B,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,4DAA4D;QAC5D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACtC,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YAC1B,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,SAAS,CAAC,MAAM,GAAG,sBAAsB,CAAC;gBAC1C,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,IAAc;QACxB,MAAM,SAAS,GAAiB;YAC9B,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,KAAK;SACZ,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC5B,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;gBACxB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,CAAC,IAAI,CAAC,CAAC;gBACT,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACvC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC5B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;gBAC1B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,CAAC,IAAI,CAAC,CAAC;gBACT,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxE,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC5B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;gBAC1B,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YAED,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,SAAS,CAAC,MAAM,GAAG,cAAc,CAAC;gBAClC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;gBACxB,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,IAAc;QACvB,MAAM,SAAS,GAAiB;YAC9B,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,KAAK;SACZ,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;QAC1B,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3E,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;wBACjB,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;oBAC1B,CAAC;yBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACrC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;oBAC5B,CAAC;gBACH,CAAC;qBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACrC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,IAAc;QACvB,MAAM,SAAS,GAAiB;YAC9B,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,QAAQ;SACf,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1D,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAChG,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"git-parser.js","sourceRoot":"","sources":["../../src/utils/git-parser.ts"],"names":[],"mappings":"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"}
|