@andrebuzeli/git-mcp 5.0.4 → 5.0.6
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/LICENSE +21 -0
- package/README.md +143 -89
- package/dist/config.d.ts +72 -71
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +226 -139
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +15 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +133 -128
- package/dist/index.js.map +1 -1
- package/dist/providers/base-provider.d.ts +42 -153
- package/dist/providers/base-provider.d.ts.map +1 -1
- package/dist/providers/base-provider.js +42 -302
- package/dist/providers/base-provider.js.map +1 -1
- package/dist/providers/gitea-provider.d.ts +67 -118
- package/dist/providers/gitea-provider.d.ts.map +1 -1
- package/dist/providers/gitea-provider.js +487 -1161
- package/dist/providers/gitea-provider.js.map +1 -1
- package/dist/providers/github-provider.d.ts +70 -81
- package/dist/providers/github-provider.d.ts.map +1 -1
- package/dist/providers/github-provider.js +641 -278
- package/dist/providers/github-provider.js.map +1 -1
- package/dist/providers/index.d.ts +9 -9
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +13 -19
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/provider-factory.d.ts +29 -59
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +134 -265
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/providers/provider-operation-handler.d.ts +93 -0
- package/dist/providers/provider-operation-handler.d.ts.map +1 -0
- package/dist/providers/provider-operation-handler.js +280 -0
- package/dist/providers/provider-operation-handler.js.map +1 -0
- package/dist/providers/types.d.ts +201 -355
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +3 -2
- package/dist/providers/types.js.map +1 -1
- package/dist/server.d.ts +34 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +439 -262
- package/dist/server.js.map +1 -1
- package/dist/tools/git-analytics.d.ts +239 -16
- package/dist/tools/git-analytics.d.ts.map +1 -1
- package/dist/tools/git-analytics.js +737 -25
- package/dist/tools/git-analytics.js.map +1 -1
- package/dist/tools/git-archive.d.ts +109 -15
- package/dist/tools/git-archive.d.ts.map +1 -1
- package/dist/tools/git-archive.js +462 -10
- package/dist/tools/git-archive.js.map +1 -1
- package/dist/tools/git-backup.d.ts +101 -15
- package/dist/tools/git-backup.d.ts.map +1 -1
- package/dist/tools/git-backup.js +410 -10
- package/dist/tools/git-backup.js.map +1 -1
- package/dist/tools/git-branches.d.ts +141 -15
- package/dist/tools/git-branches.d.ts.map +1 -1
- package/dist/tools/git-branches.js +466 -11
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-config.d.ts +115 -15
- package/dist/tools/git-config.d.ts.map +1 -1
- package/dist/tools/git-config.js +446 -11
- package/dist/tools/git-config.js.map +1 -1
- package/dist/tools/git-files.d.ts +179 -59
- package/dist/tools/git-files.d.ts.map +1 -1
- package/dist/tools/git-files.js +682 -222
- package/dist/tools/git-files.js.map +1 -1
- package/dist/tools/git-issues.d.ts +158 -15
- package/dist/tools/git-issues.d.ts.map +1 -1
- package/dist/tools/git-issues.js +323 -11
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-monitor.d.ts +149 -14
- package/dist/tools/git-monitor.d.ts.map +1 -1
- package/dist/tools/git-monitor.js +528 -11
- package/dist/tools/git-monitor.js.map +1 -1
- package/dist/tools/git-packages.d.ts +163 -15
- package/dist/tools/git-packages.d.ts.map +1 -1
- package/dist/tools/git-packages.js +526 -11
- package/dist/tools/git-packages.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +174 -15
- package/dist/tools/git-pulls.d.ts.map +1 -1
- package/dist/tools/git-pulls.js +352 -11
- package/dist/tools/git-pulls.js.map +1 -1
- package/dist/tools/git-release.d.ts +167 -15
- package/dist/tools/git-release.d.ts.map +1 -1
- package/dist/tools/git-release.js +465 -11
- package/dist/tools/git-release.js.map +1 -1
- package/dist/tools/git-remote.d.ts +124 -15
- package/dist/tools/git-remote.d.ts.map +1 -1
- package/dist/tools/git-remote.js +539 -11
- package/dist/tools/git-remote.js.map +1 -1
- package/dist/tools/git-reset.d.ts +100 -15
- package/dist/tools/git-reset.d.ts.map +1 -1
- package/dist/tools/git-reset.js +409 -11
- package/dist/tools/git-reset.js.map +1 -1
- package/dist/tools/git-stash.d.ts +120 -15
- package/dist/tools/git-stash.d.ts.map +1 -1
- package/dist/tools/git-stash.js +503 -11
- package/dist/tools/git-stash.js.map +1 -1
- package/dist/tools/git-sync.d.ts +160 -16
- package/dist/tools/git-sync.d.ts.map +1 -1
- package/dist/tools/git-sync.js +462 -113
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +142 -15
- package/dist/tools/git-tags.d.ts.map +1 -1
- package/dist/tools/git-tags.js +471 -11
- package/dist/tools/git-tags.js.map +1 -1
- package/dist/tools/git-workflow.d.ts +151 -80
- package/dist/tools/git-workflow.d.ts.map +1 -1
- package/dist/tools/git-workflow.js +407 -912
- package/dist/tools/git-workflow.js.map +1 -1
- package/dist/utils/credential-manager.d.ts +119 -0
- package/dist/utils/credential-manager.d.ts.map +1 -0
- package/dist/utils/credential-manager.js +450 -0
- package/dist/utils/credential-manager.js.map +1 -0
- package/dist/utils/git-command-executor.d.ts +326 -0
- package/dist/utils/git-command-executor.d.ts.map +1 -0
- package/dist/utils/git-command-executor.js +877 -0
- package/dist/utils/git-command-executor.js.map +1 -0
- package/dist/utils/logger.d.ts +143 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +473 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/operation-error-handler.d.ts +54 -41
- package/dist/utils/operation-error-handler.d.ts.map +1 -1
- package/dist/utils/operation-error-handler.js +211 -227
- package/dist/utils/operation-error-handler.js.map +1 -1
- package/dist/utils/parameter-validator.d.ts +41 -0
- package/dist/utils/parameter-validator.d.ts.map +1 -0
- package/dist/utils/parameter-validator.js +464 -0
- package/dist/utils/parameter-validator.js.map +1 -0
- package/dist/utils/repository-detector.d.ts +128 -0
- package/dist/utils/repository-detector.d.ts.map +1 -0
- package/dist/utils/repository-detector.js +422 -0
- package/dist/utils/repository-detector.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +146 -0
- package/dist/utils/response-formatter.d.ts.map +1 -0
- package/dist/utils/response-formatter.js +378 -0
- package/dist/utils/response-formatter.js.map +1 -0
- package/dist/utils/retry.d.ts +12 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +28 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/terminal-controller.d.ts +73 -139
- package/dist/utils/terminal-controller.d.ts.map +1 -1
- package/dist/utils/terminal-controller.js +234 -459
- package/dist/utils/terminal-controller.js.map +1 -1
- package/package.json +79 -60
- package/dist/providers/error-handler.d.ts +0 -51
- package/dist/providers/error-handler.d.ts.map +0 -1
- package/dist/providers/error-handler.js +0 -176
- package/dist/providers/error-handler.js.map +0 -1
- package/dist/providers/github-provider-backup.d.ts +0 -81
- package/dist/providers/github-provider-backup.d.ts.map +0 -1
- package/dist/providers/github-provider-backup.js +0 -1179
- package/dist/providers/github-provider-backup.js.map +0 -1
- package/dist/providers/github-provider-complete.d.ts +0 -1
- package/dist/providers/github-provider-complete.d.ts.map +0 -1
- package/dist/providers/github-provider-complete.js +0 -2
- package/dist/providers/github-provider-complete.js.map +0 -1
- package/dist/tools/git-init.d.ts +0 -50
- package/dist/tools/git-init.d.ts.map +0 -1
- package/dist/tools/git-init.js +0 -258
- package/dist/tools/git-init.js.map +0 -1
- package/dist/tools/git-log.d.ts +0 -67
- package/dist/tools/git-log.d.ts.map +0 -1
- package/dist/tools/git-log.js +0 -320
- package/dist/tools/git-log.js.map +0 -1
- package/dist/tools/git-status.d.ts +0 -29
- package/dist/tools/git-status.d.ts.map +0 -1
- package/dist/tools/git-status.js +0 -182
- package/dist/tools/git-status.js.map +0 -1
- package/dist/tools/git-update.d.ts +0 -34
- package/dist/tools/git-update.d.ts.map +0 -1
- package/dist/tools/git-update.js +0 -191
- package/dist/tools/git-update.js.map +0 -1
- package/dist/utils/auto-detection.d.ts +0 -120
- package/dist/utils/auto-detection.d.ts.map +0 -1
- package/dist/utils/auto-detection.js +0 -259
- package/dist/utils/auto-detection.js.map +0 -1
- package/dist/utils/configuration-error-generator.d.ts +0 -41
- package/dist/utils/configuration-error-generator.d.ts.map +0 -1
- package/dist/utils/configuration-error-generator.js +0 -168
- package/dist/utils/configuration-error-generator.js.map +0 -1
- package/dist/utils/configuration-validator.d.ts +0 -67
- package/dist/utils/configuration-validator.d.ts.map +0 -1
- package/dist/utils/configuration-validator.js +0 -257
- package/dist/utils/configuration-validator.js.map +0 -1
- package/dist/utils/error-handler.d.ts +0 -107
- package/dist/utils/error-handler.d.ts.map +0 -1
- package/dist/utils/error-handler.js +0 -331
- package/dist/utils/error-handler.js.map +0 -1
- package/dist/utils/git-operations.d.ts +0 -200
- package/dist/utils/git-operations.d.ts.map +0 -1
- package/dist/utils/git-operations.js +0 -836
- package/dist/utils/git-operations.js.map +0 -1
- package/dist/utils/multi-provider-error-handler.d.ts +0 -75
- package/dist/utils/multi-provider-error-handler.d.ts.map +0 -1
- package/dist/utils/multi-provider-error-handler.js +0 -276
- package/dist/utils/multi-provider-error-handler.js.map +0 -1
- package/dist/utils/multi-provider-operation-handler.d.ts +0 -113
- package/dist/utils/multi-provider-operation-handler.d.ts.map +0 -1
- package/dist/utils/multi-provider-operation-handler.js +0 -303
- package/dist/utils/multi-provider-operation-handler.js.map +0 -1
- package/dist/utils/provider-operation-handler.d.ts +0 -80
- package/dist/utils/provider-operation-handler.d.ts.map +0 -1
- package/dist/utils/provider-operation-handler.js +0 -201
- package/dist/utils/provider-operation-handler.js.map +0 -1
- package/dist/utils/response-helper.d.ts +0 -57
- package/dist/utils/response-helper.d.ts.map +0 -1
- package/dist/utils/response-helper.js +0 -54
- package/dist/utils/response-helper.js.map +0 -1
- package/dist/utils/user-detection.d.ts +0 -25
- package/dist/utils/user-detection.d.ts.map +0 -1
- package/dist/utils/user-detection.js +0 -54
- package/dist/utils/user-detection.js.map +0 -1
|
@@ -1,309 +1,178 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.globalProviderFactory = exports.ProviderFactory = void 0;
|
|
4
|
-
exports.createProviderFromEnv = createProviderFromEnv;
|
|
5
|
-
exports.initializeFactoryFromEnv = initializeFactoryFromEnv;
|
|
6
|
-
const gitea_provider_js_1 = require("./gitea-provider.js");
|
|
7
|
-
const github_provider_js_1 = require("./github-provider.js");
|
|
8
2
|
/**
|
|
9
|
-
* Factory
|
|
10
|
-
*
|
|
3
|
+
* Provider Factory
|
|
4
|
+
*
|
|
5
|
+
* Factory for creating VCS provider instances dynamically.
|
|
6
|
+
* Supports GitHub, Gitea, and multi-provider configurations.
|
|
11
7
|
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ProviderFactory = void 0;
|
|
12
10
|
class ProviderFactory {
|
|
13
|
-
|
|
14
|
-
defaultProviderName = '';
|
|
11
|
+
config;
|
|
15
12
|
constructor(config) {
|
|
16
|
-
|
|
17
|
-
this.initializeFromConfig(config);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Inicializa a factory a partir de uma configuração
|
|
22
|
-
*/
|
|
23
|
-
initializeFromConfig(config) {
|
|
24
|
-
this.defaultProviderName = config.defaultProvider;
|
|
25
|
-
for (const providerConfig of config.providers) {
|
|
26
|
-
this.createProvider(providerConfig);
|
|
27
|
-
}
|
|
13
|
+
this.config = config;
|
|
28
14
|
}
|
|
29
15
|
/**
|
|
30
|
-
*
|
|
16
|
+
* Create a single provider instance
|
|
31
17
|
*/
|
|
32
|
-
createProvider(
|
|
33
|
-
|
|
34
|
-
switch (config.type) {
|
|
35
|
-
case 'gitea':
|
|
36
|
-
provider = new gitea_provider_js_1.GiteaProvider(config);
|
|
37
|
-
break;
|
|
18
|
+
createProvider(type) {
|
|
19
|
+
switch (type) {
|
|
38
20
|
case 'github':
|
|
39
|
-
|
|
40
|
-
|
|
21
|
+
return this.createGitHubProvider();
|
|
22
|
+
case 'gitea':
|
|
23
|
+
return this.createGiteaProvider();
|
|
41
24
|
default:
|
|
42
|
-
throw new Error(`
|
|
43
|
-
}
|
|
44
|
-
this.providers.set(config.name, provider);
|
|
45
|
-
// Se for o primeiro provider, define como padrão
|
|
46
|
-
if (this.providers.size === 1) {
|
|
47
|
-
this.defaultProviderName = config.name;
|
|
48
|
-
}
|
|
49
|
-
return provider;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Obtém um provider pelo nome
|
|
53
|
-
*/
|
|
54
|
-
getProvider(name) {
|
|
55
|
-
const provider = this.providers.get(name);
|
|
56
|
-
if (!provider && name) {
|
|
57
|
-
console.error(`Provider '${name}' não encontrado. Providers disponíveis:`, Array.from(this.providers.keys()));
|
|
58
|
-
return undefined;
|
|
25
|
+
throw new Error(`Unsupported provider type: ${type}`);
|
|
59
26
|
}
|
|
60
|
-
return provider;
|
|
61
27
|
}
|
|
62
28
|
/**
|
|
63
|
-
*
|
|
29
|
+
* Create a multi-provider instance that handles multiple providers
|
|
64
30
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
31
|
+
createMultiProvider(types) {
|
|
32
|
+
const providers = types.map(type => this.createProvider(type));
|
|
33
|
+
return new MultiProviderImpl(providers);
|
|
67
34
|
}
|
|
68
35
|
/**
|
|
69
|
-
*
|
|
36
|
+
* Create provider based on string identifier
|
|
70
37
|
*/
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
// Fallback: usa o primeiro provider disponível
|
|
83
|
-
const firstKey = this.providers.keys().next().value;
|
|
84
|
-
if (firstKey) {
|
|
85
|
-
this.defaultProviderName = firstKey;
|
|
86
|
-
return this.providers.get(firstKey);
|
|
38
|
+
createProviderFromString(provider) {
|
|
39
|
+
switch (provider) {
|
|
40
|
+
case 'github':
|
|
41
|
+
return this.createProvider('github');
|
|
42
|
+
case 'gitea':
|
|
43
|
+
return this.createProvider('gitea');
|
|
44
|
+
case 'both':
|
|
45
|
+
return this.createMultiProvider(['github', 'gitea']);
|
|
46
|
+
default:
|
|
47
|
+
throw new Error(`Invalid provider: ${provider}. Valid options: github, gitea, both`);
|
|
87
48
|
}
|
|
88
|
-
return null;
|
|
89
49
|
}
|
|
90
50
|
/**
|
|
91
|
-
*
|
|
51
|
+
* Get available providers based on configuration
|
|
92
52
|
*/
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
53
|
+
getAvailableProviders() {
|
|
54
|
+
const available = [];
|
|
55
|
+
if (this.config.github?.token && this.config.github?.username) {
|
|
56
|
+
available.push('github');
|
|
96
57
|
}
|
|
97
|
-
this.
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Remove um provider
|
|
101
|
-
*/
|
|
102
|
-
removeProvider(name) {
|
|
103
|
-
const removed = this.providers.delete(name);
|
|
104
|
-
// Se o provider removido era o padrão, redefine o padrão
|
|
105
|
-
if (removed && name === this.defaultProviderName) {
|
|
106
|
-
if (this.providers.size > 0) {
|
|
107
|
-
const firstKey = this.providers.keys().next().value;
|
|
108
|
-
if (firstKey) {
|
|
109
|
-
this.defaultProviderName = firstKey;
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
this.defaultProviderName = '';
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
this.defaultProviderName = '';
|
|
117
|
-
}
|
|
58
|
+
if (this.config.gitea?.url && this.config.gitea?.token && this.config.gitea?.username) {
|
|
59
|
+
available.push('gitea');
|
|
118
60
|
}
|
|
119
|
-
return
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Verifica se um provider existe
|
|
123
|
-
*/
|
|
124
|
-
hasProvider(name) {
|
|
125
|
-
return this.providers.has(name);
|
|
61
|
+
return available;
|
|
126
62
|
}
|
|
127
63
|
/**
|
|
128
|
-
*
|
|
64
|
+
* Check if a provider type is available
|
|
129
65
|
*/
|
|
130
|
-
|
|
131
|
-
return
|
|
132
|
-
name,
|
|
133
|
-
type: provider.config?.type || 'unknown',
|
|
134
|
-
isDefault: name === this.defaultProviderName
|
|
135
|
-
}));
|
|
66
|
+
isProviderAvailable(type) {
|
|
67
|
+
return this.getAvailableProviders().includes(type);
|
|
136
68
|
}
|
|
137
69
|
/**
|
|
138
|
-
*
|
|
70
|
+
* Validate provider configuration
|
|
139
71
|
*/
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
72
|
+
validateProviderConfig(type) {
|
|
73
|
+
switch (type) {
|
|
74
|
+
case 'github':
|
|
75
|
+
return this.validateGitHubConfig();
|
|
76
|
+
case 'gitea':
|
|
77
|
+
return this.validateGiteaConfig();
|
|
78
|
+
default:
|
|
79
|
+
return { valid: false, missingFields: ['Invalid provider type'] };
|
|
80
|
+
}
|
|
143
81
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
82
|
+
createGitHubProvider() {
|
|
83
|
+
if (!this.config.github) {
|
|
84
|
+
throw new Error('GitHub configuration is missing');
|
|
85
|
+
}
|
|
86
|
+
// Import GitHubProvider dynamically to avoid circular dependencies
|
|
87
|
+
const { GitHubProvider } = require('./github-provider.js');
|
|
88
|
+
return new GitHubProvider(this.config.github);
|
|
149
89
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
90
|
+
createGiteaProvider() {
|
|
91
|
+
if (!this.config.gitea) {
|
|
92
|
+
throw new Error('Gitea configuration is missing');
|
|
93
|
+
}
|
|
94
|
+
// Import GiteaProvider dynamically to avoid circular dependencies
|
|
95
|
+
const { GiteaProvider } = require('./gitea-provider.js');
|
|
96
|
+
return new GiteaProvider(this.config.gitea);
|
|
97
|
+
}
|
|
98
|
+
validateGitHubConfig() {
|
|
99
|
+
const missing = [];
|
|
100
|
+
if (!this.config.github?.token) {
|
|
101
|
+
missing.push('GITHUB_TOKEN');
|
|
102
|
+
}
|
|
103
|
+
if (!this.config.github?.username) {
|
|
104
|
+
missing.push('GITHUB_USERNAME');
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
valid: missing.length === 0,
|
|
108
|
+
missingFields: missing
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
validateGiteaConfig() {
|
|
112
|
+
const missing = [];
|
|
113
|
+
if (!this.config.gitea?.url) {
|
|
114
|
+
missing.push('GITEA_URL');
|
|
115
|
+
}
|
|
116
|
+
if (!this.config.gitea?.token) {
|
|
117
|
+
missing.push('GITEA_TOKEN');
|
|
118
|
+
}
|
|
119
|
+
if (!this.config.gitea?.username) {
|
|
120
|
+
missing.push('GITEA_USERNAME');
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
valid: missing.length === 0,
|
|
124
|
+
missingFields: missing
|
|
125
|
+
};
|
|
155
126
|
}
|
|
156
127
|
}
|
|
157
128
|
exports.ProviderFactory = ProviderFactory;
|
|
158
129
|
/**
|
|
159
|
-
*
|
|
160
|
-
*/
|
|
161
|
-
// Inicializar o provider factory global com configuração do ambiente
|
|
162
|
-
exports.globalProviderFactory = initializeFactoryFromEnv();
|
|
163
|
-
/**
|
|
164
|
-
* Função helper para criar provider a partir de variáveis de ambiente
|
|
130
|
+
* Multi-provider implementation
|
|
165
131
|
*/
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
switch (providerType) {
|
|
171
|
-
case 'gitea':
|
|
172
|
-
apiUrl = process.env.GITEA_URL || process.env.API_URL || '';
|
|
173
|
-
token = process.env.GITEA_TOKEN || process.env.API_TOKEN || '';
|
|
174
|
-
username = process.env.GITEA_USERNAME || process.env.USERNAME;
|
|
175
|
-
break;
|
|
176
|
-
case 'github':
|
|
177
|
-
apiUrl = process.env.GITHUB_URL || process.env.API_URL || 'https://api.github.com';
|
|
178
|
-
token = process.env.GITHUB_TOKEN || process.env.API_TOKEN || '';
|
|
179
|
-
username = process.env.GITHUB_USERNAME || process.env.USERNAME;
|
|
180
|
-
break;
|
|
181
|
-
default:
|
|
182
|
-
throw new Error(`Provider type '${providerType}' not supported`);
|
|
183
|
-
}
|
|
184
|
-
if (!apiUrl) {
|
|
185
|
-
throw new Error(`API URL not configured for ${providerType}`);
|
|
132
|
+
class MultiProviderImpl {
|
|
133
|
+
providers;
|
|
134
|
+
constructor(providers) {
|
|
135
|
+
this.providers = providers;
|
|
186
136
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
baseUrl: providerType === 'github' ? 'https://github.com' : apiUrl.replace('/api/v1', ''),
|
|
195
|
-
token,
|
|
196
|
-
username
|
|
197
|
-
};
|
|
198
|
-
return exports.globalProviderFactory.createProvider(config);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Função helper para inicializar factory a partir de variáveis de ambiente
|
|
202
|
-
*/
|
|
203
|
-
function initializeFactoryFromEnv() {
|
|
204
|
-
const providers = [];
|
|
205
|
-
let defaultProvider = '';
|
|
206
|
-
// Verifica se há configuração multi-provider
|
|
207
|
-
const providersJson = process.env.PROVIDERS_JSON;
|
|
208
|
-
if (providersJson) {
|
|
209
|
-
try {
|
|
210
|
-
const config = JSON.parse(providersJson);
|
|
211
|
-
if (config.providers && Array.isArray(config.providers)) {
|
|
212
|
-
for (const providerConfig of config.providers) {
|
|
213
|
-
if (providerConfig.name && providerConfig.type && providerConfig.apiUrl && providerConfig.token) {
|
|
214
|
-
providers.push(providerConfig);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
defaultProvider = config.defaultProvider || (providers[0]?.name || '');
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
catch (error) {
|
|
221
|
-
console.error('Error parsing PROVIDERS_JSON:', error);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
// Se não há configuração multi-provider, tenta configuração individual
|
|
225
|
-
if (providers.length === 0) {
|
|
226
|
-
// Auto-detectar configuração multi-provider se ambos Gitea e GitHub estão configurados
|
|
227
|
-
if (process.env.GITEA_URL && process.env.GITEA_TOKEN && process.env.GITHUB_TOKEN) {
|
|
228
|
-
// Configuração multi-provider com Gitea como padrão
|
|
229
|
-
providers.push({
|
|
230
|
-
name: 'gitea',
|
|
231
|
-
type: 'gitea',
|
|
232
|
-
apiUrl: process.env.GITEA_URL,
|
|
233
|
-
baseUrl: process.env.GITEA_URL?.replace('/api/v1', '') || process.env.GITEA_URL,
|
|
234
|
-
token: process.env.GITEA_TOKEN,
|
|
235
|
-
username: process.env.GITEA_USERNAME
|
|
236
|
-
});
|
|
237
|
-
providers.push({
|
|
238
|
-
name: 'github',
|
|
239
|
-
type: 'github',
|
|
240
|
-
apiUrl: process.env.GITHUB_URL || 'https://api.github.com',
|
|
241
|
-
baseUrl: 'https://github.com',
|
|
242
|
-
token: process.env.GITHUB_TOKEN,
|
|
243
|
-
username: process.env.GITHUB_USERNAME
|
|
244
|
-
});
|
|
245
|
-
defaultProvider = 'gitea';
|
|
137
|
+
/**
|
|
138
|
+
* Execute operation on all configured providers in parallel
|
|
139
|
+
*/
|
|
140
|
+
async executeOperation(operation, params) {
|
|
141
|
+
const configuredProviders = this.getConfiguredProviders();
|
|
142
|
+
if (configuredProviders.length === 0) {
|
|
143
|
+
throw new Error('No providers are configured');
|
|
246
144
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
name: 'github',
|
|
252
|
-
type: 'github',
|
|
253
|
-
apiUrl: process.env.GITHUB_URL || 'https://api.github.com',
|
|
254
|
-
baseUrl: 'https://github.com',
|
|
255
|
-
token: process.env.GITHUB_TOKEN,
|
|
256
|
-
username: process.env.GITHUB_USERNAME
|
|
257
|
-
});
|
|
258
|
-
defaultProvider = 'github';
|
|
259
|
-
// console.log('[PROVIDER FACTORY] Provider GitHub configurado');
|
|
145
|
+
// Execute operations in parallel
|
|
146
|
+
const promises = configuredProviders.map(async (provider) => {
|
|
147
|
+
try {
|
|
148
|
+
return await provider.executeOperation(operation, params);
|
|
260
149
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
apiUrl: giteaUrl,
|
|
273
|
-
baseUrl: giteaUrl.replace('/api/v1', ''),
|
|
274
|
-
token: process.env.GITEA_TOKEN,
|
|
275
|
-
username: process.env.GITEA_USERNAME
|
|
276
|
-
});
|
|
277
|
-
// Se não há provider padrão, usa Gitea
|
|
278
|
-
if (!defaultProvider) {
|
|
279
|
-
defaultProvider = 'gitea';
|
|
280
|
-
}
|
|
281
|
-
// console.log('[PROVIDER FACTORY] Provider Gitea configurado');
|
|
282
|
-
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
152
|
+
return {
|
|
153
|
+
success: false,
|
|
154
|
+
error: {
|
|
155
|
+
code: 'PROVIDER_ERROR',
|
|
156
|
+
message: `Provider ${provider.getName()} failed: ${errorMessage}`,
|
|
157
|
+
details: error
|
|
158
|
+
},
|
|
159
|
+
provider: provider.getName()
|
|
160
|
+
};
|
|
283
161
|
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
if (process.env.API_URL && process.env.API_TOKEN && providers.length === 0) {
|
|
287
|
-
const providerType = process.env.PROVIDER || 'gitea';
|
|
288
|
-
providers.push({
|
|
289
|
-
name: providerType,
|
|
290
|
-
type: providerType,
|
|
291
|
-
apiUrl: process.env.API_URL,
|
|
292
|
-
baseUrl: providerType === 'github' ? 'https://github.com' : process.env.API_URL?.replace('/api/v1', '') || process.env.API_URL,
|
|
293
|
-
token: process.env.API_TOKEN,
|
|
294
|
-
username: process.env.USERNAME
|
|
295
|
-
});
|
|
296
|
-
defaultProvider = providerType;
|
|
297
|
-
}
|
|
162
|
+
});
|
|
163
|
+
return Promise.all(promises);
|
|
298
164
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
165
|
+
/**
|
|
166
|
+
* Get only the configured providers
|
|
167
|
+
*/
|
|
168
|
+
getConfiguredProviders() {
|
|
169
|
+
return this.providers.filter(provider => provider.isConfigured());
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Check if any provider is configured
|
|
173
|
+
*/
|
|
174
|
+
isAnyProviderConfigured() {
|
|
175
|
+
return this.getConfiguredProviders().length > 0;
|
|
302
176
|
}
|
|
303
|
-
const config = {
|
|
304
|
-
defaultProvider,
|
|
305
|
-
providers
|
|
306
|
-
};
|
|
307
|
-
return new ProviderFactory(config);
|
|
308
177
|
}
|
|
309
178
|
//# sourceMappingURL=provider-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../../src/providers/provider-factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../../src/providers/provider-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Operation Handler
|
|
3
|
+
*
|
|
4
|
+
* Unified interface for handling operations across multiple providers.
|
|
5
|
+
* Supports provider="both" with parallel execution, result aggregation,
|
|
6
|
+
* and partial failure handling.
|
|
7
|
+
*/
|
|
8
|
+
import { ProviderConfig, ProviderResult, ProviderOperation } from './types.js';
|
|
9
|
+
export interface OperationResult {
|
|
10
|
+
success: boolean;
|
|
11
|
+
results: ProviderResult[];
|
|
12
|
+
partialFailure: boolean;
|
|
13
|
+
errors: ProviderResult[];
|
|
14
|
+
metadata: {
|
|
15
|
+
operation: string;
|
|
16
|
+
provider: string;
|
|
17
|
+
executionTime: number;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare class ProviderOperationHandler {
|
|
22
|
+
private factory;
|
|
23
|
+
private config;
|
|
24
|
+
constructor(config: ProviderConfig);
|
|
25
|
+
/**
|
|
26
|
+
* Execute operation with unified interface
|
|
27
|
+
*/
|
|
28
|
+
executeOperation(operation: ProviderOperation): Promise<OperationResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Execute operation on single provider
|
|
31
|
+
*/
|
|
32
|
+
private executeSingleProviderOperation;
|
|
33
|
+
/**
|
|
34
|
+
* Execute operation on multiple providers in parallel
|
|
35
|
+
*/
|
|
36
|
+
private executeMultiProviderOperation;
|
|
37
|
+
/**
|
|
38
|
+
* Validate operation before execution
|
|
39
|
+
*/
|
|
40
|
+
validateOperation(operation: ProviderOperation): {
|
|
41
|
+
valid: boolean;
|
|
42
|
+
errors: string[];
|
|
43
|
+
warnings: string[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Get provider status and configuration
|
|
47
|
+
*/
|
|
48
|
+
getProviderStatus(): {
|
|
49
|
+
github: {
|
|
50
|
+
configured: boolean;
|
|
51
|
+
available: boolean;
|
|
52
|
+
missingFields: string[];
|
|
53
|
+
};
|
|
54
|
+
gitea: {
|
|
55
|
+
configured: boolean;
|
|
56
|
+
available: boolean;
|
|
57
|
+
missingFields: string[];
|
|
58
|
+
};
|
|
59
|
+
multiProvider: {
|
|
60
|
+
available: boolean;
|
|
61
|
+
configuredProviders: string[];
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Aggregate results from multiple providers
|
|
66
|
+
*/
|
|
67
|
+
aggregateResults(results: ProviderResult[]): {
|
|
68
|
+
combinedData: any;
|
|
69
|
+
summary: {
|
|
70
|
+
totalProviders: number;
|
|
71
|
+
successfulProviders: number;
|
|
72
|
+
failedProviders: number;
|
|
73
|
+
providers: string[];
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Handle partial failures with retry logic
|
|
78
|
+
*/
|
|
79
|
+
handlePartialFailure(operation: ProviderOperation, results: ProviderResult[], retryOptions?: {
|
|
80
|
+
maxRetries: number;
|
|
81
|
+
retryDelay: number;
|
|
82
|
+
retryFailedOnly: boolean;
|
|
83
|
+
}): Promise<OperationResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Check if provider is multi-provider
|
|
86
|
+
*/
|
|
87
|
+
private isMultiProvider;
|
|
88
|
+
/**
|
|
89
|
+
* Format operation error
|
|
90
|
+
*/
|
|
91
|
+
private formatOperationError;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=provider-operation-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-operation-handler.d.ts","sourceRoot":"","sources":["../../src/providers/provider-operation-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;IAKlC;;OAEG;IACG,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IAiB9E;;OAEG;YACW,8BAA8B;IA+C5C;;OAEG;YACW,6BAA6B;IAiC3C;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,GAAG;QAC/C,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB;IAwDD;;OAEG;IACH,iBAAiB,IAAI;QACnB,MAAM,EAAE;YACN,UAAU,EAAE,OAAO,CAAC;YACpB,SAAS,EAAE,OAAO,CAAC;YACnB,aAAa,EAAE,MAAM,EAAE,CAAC;SACzB,CAAC;QACF,KAAK,EAAE;YACL,UAAU,EAAE,OAAO,CAAC;YACpB,SAAS,EAAE,OAAO,CAAC;YACnB,aAAa,EAAE,MAAM,EAAE,CAAC;SACzB,CAAC;QACF,aAAa,EAAE;YACb,SAAS,EAAE,OAAO,CAAC;YACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;SAC/B,CAAC;KACH;IAuBD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG;QAC3C,YAAY,EAAE,GAAG,CAAC;QAClB,OAAO,EAAE;YACP,cAAc,EAAE,MAAM,CAAC;YACvB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,eAAe,EAAE,MAAM,CAAC;YACxB,SAAS,EAAE,MAAM,EAAE,CAAC;SACrB,CAAC;KACH;IA4BD;;OAEG;IACG,oBAAoB,CACxB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,CAAC,EAAE;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,OAAO,CAAC;KAC1B,GACA,OAAO,CAAC,eAAe,CAAC;IAiC3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CA6B7B"}
|