@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.
Files changed (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -89
  3. package/dist/config.d.ts +72 -71
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +226 -139
  6. package/dist/config.js.map +1 -1
  7. package/dist/index.d.ts +15 -17
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +133 -128
  10. package/dist/index.js.map +1 -1
  11. package/dist/providers/base-provider.d.ts +42 -153
  12. package/dist/providers/base-provider.d.ts.map +1 -1
  13. package/dist/providers/base-provider.js +42 -302
  14. package/dist/providers/base-provider.js.map +1 -1
  15. package/dist/providers/gitea-provider.d.ts +67 -118
  16. package/dist/providers/gitea-provider.d.ts.map +1 -1
  17. package/dist/providers/gitea-provider.js +487 -1161
  18. package/dist/providers/gitea-provider.js.map +1 -1
  19. package/dist/providers/github-provider.d.ts +70 -81
  20. package/dist/providers/github-provider.d.ts.map +1 -1
  21. package/dist/providers/github-provider.js +641 -278
  22. package/dist/providers/github-provider.js.map +1 -1
  23. package/dist/providers/index.d.ts +9 -9
  24. package/dist/providers/index.d.ts.map +1 -1
  25. package/dist/providers/index.js +13 -19
  26. package/dist/providers/index.js.map +1 -1
  27. package/dist/providers/provider-factory.d.ts +29 -59
  28. package/dist/providers/provider-factory.d.ts.map +1 -1
  29. package/dist/providers/provider-factory.js +134 -265
  30. package/dist/providers/provider-factory.js.map +1 -1
  31. package/dist/providers/provider-operation-handler.d.ts +93 -0
  32. package/dist/providers/provider-operation-handler.d.ts.map +1 -0
  33. package/dist/providers/provider-operation-handler.js +280 -0
  34. package/dist/providers/provider-operation-handler.js.map +1 -0
  35. package/dist/providers/types.d.ts +201 -355
  36. package/dist/providers/types.d.ts.map +1 -1
  37. package/dist/providers/types.js +3 -2
  38. package/dist/providers/types.js.map +1 -1
  39. package/dist/server.d.ts +34 -4
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +439 -262
  42. package/dist/server.js.map +1 -1
  43. package/dist/tools/git-analytics.d.ts +239 -16
  44. package/dist/tools/git-analytics.d.ts.map +1 -1
  45. package/dist/tools/git-analytics.js +737 -25
  46. package/dist/tools/git-analytics.js.map +1 -1
  47. package/dist/tools/git-archive.d.ts +109 -15
  48. package/dist/tools/git-archive.d.ts.map +1 -1
  49. package/dist/tools/git-archive.js +462 -10
  50. package/dist/tools/git-archive.js.map +1 -1
  51. package/dist/tools/git-backup.d.ts +101 -15
  52. package/dist/tools/git-backup.d.ts.map +1 -1
  53. package/dist/tools/git-backup.js +410 -10
  54. package/dist/tools/git-backup.js.map +1 -1
  55. package/dist/tools/git-branches.d.ts +141 -15
  56. package/dist/tools/git-branches.d.ts.map +1 -1
  57. package/dist/tools/git-branches.js +466 -11
  58. package/dist/tools/git-branches.js.map +1 -1
  59. package/dist/tools/git-config.d.ts +115 -15
  60. package/dist/tools/git-config.d.ts.map +1 -1
  61. package/dist/tools/git-config.js +446 -11
  62. package/dist/tools/git-config.js.map +1 -1
  63. package/dist/tools/git-files.d.ts +179 -59
  64. package/dist/tools/git-files.d.ts.map +1 -1
  65. package/dist/tools/git-files.js +682 -222
  66. package/dist/tools/git-files.js.map +1 -1
  67. package/dist/tools/git-issues.d.ts +158 -15
  68. package/dist/tools/git-issues.d.ts.map +1 -1
  69. package/dist/tools/git-issues.js +323 -11
  70. package/dist/tools/git-issues.js.map +1 -1
  71. package/dist/tools/git-monitor.d.ts +149 -14
  72. package/dist/tools/git-monitor.d.ts.map +1 -1
  73. package/dist/tools/git-monitor.js +528 -11
  74. package/dist/tools/git-monitor.js.map +1 -1
  75. package/dist/tools/git-packages.d.ts +163 -15
  76. package/dist/tools/git-packages.d.ts.map +1 -1
  77. package/dist/tools/git-packages.js +526 -11
  78. package/dist/tools/git-packages.js.map +1 -1
  79. package/dist/tools/git-pulls.d.ts +174 -15
  80. package/dist/tools/git-pulls.d.ts.map +1 -1
  81. package/dist/tools/git-pulls.js +352 -11
  82. package/dist/tools/git-pulls.js.map +1 -1
  83. package/dist/tools/git-release.d.ts +167 -15
  84. package/dist/tools/git-release.d.ts.map +1 -1
  85. package/dist/tools/git-release.js +465 -11
  86. package/dist/tools/git-release.js.map +1 -1
  87. package/dist/tools/git-remote.d.ts +124 -15
  88. package/dist/tools/git-remote.d.ts.map +1 -1
  89. package/dist/tools/git-remote.js +539 -11
  90. package/dist/tools/git-remote.js.map +1 -1
  91. package/dist/tools/git-reset.d.ts +100 -15
  92. package/dist/tools/git-reset.d.ts.map +1 -1
  93. package/dist/tools/git-reset.js +409 -11
  94. package/dist/tools/git-reset.js.map +1 -1
  95. package/dist/tools/git-stash.d.ts +120 -15
  96. package/dist/tools/git-stash.d.ts.map +1 -1
  97. package/dist/tools/git-stash.js +503 -11
  98. package/dist/tools/git-stash.js.map +1 -1
  99. package/dist/tools/git-sync.d.ts +160 -16
  100. package/dist/tools/git-sync.d.ts.map +1 -1
  101. package/dist/tools/git-sync.js +462 -113
  102. package/dist/tools/git-sync.js.map +1 -1
  103. package/dist/tools/git-tags.d.ts +142 -15
  104. package/dist/tools/git-tags.d.ts.map +1 -1
  105. package/dist/tools/git-tags.js +471 -11
  106. package/dist/tools/git-tags.js.map +1 -1
  107. package/dist/tools/git-workflow.d.ts +151 -80
  108. package/dist/tools/git-workflow.d.ts.map +1 -1
  109. package/dist/tools/git-workflow.js +407 -912
  110. package/dist/tools/git-workflow.js.map +1 -1
  111. package/dist/utils/credential-manager.d.ts +119 -0
  112. package/dist/utils/credential-manager.d.ts.map +1 -0
  113. package/dist/utils/credential-manager.js +450 -0
  114. package/dist/utils/credential-manager.js.map +1 -0
  115. package/dist/utils/git-command-executor.d.ts +326 -0
  116. package/dist/utils/git-command-executor.d.ts.map +1 -0
  117. package/dist/utils/git-command-executor.js +877 -0
  118. package/dist/utils/git-command-executor.js.map +1 -0
  119. package/dist/utils/logger.d.ts +143 -0
  120. package/dist/utils/logger.d.ts.map +1 -0
  121. package/dist/utils/logger.js +473 -0
  122. package/dist/utils/logger.js.map +1 -0
  123. package/dist/utils/operation-error-handler.d.ts +54 -41
  124. package/dist/utils/operation-error-handler.d.ts.map +1 -1
  125. package/dist/utils/operation-error-handler.js +211 -227
  126. package/dist/utils/operation-error-handler.js.map +1 -1
  127. package/dist/utils/parameter-validator.d.ts +41 -0
  128. package/dist/utils/parameter-validator.d.ts.map +1 -0
  129. package/dist/utils/parameter-validator.js +464 -0
  130. package/dist/utils/parameter-validator.js.map +1 -0
  131. package/dist/utils/repository-detector.d.ts +128 -0
  132. package/dist/utils/repository-detector.d.ts.map +1 -0
  133. package/dist/utils/repository-detector.js +422 -0
  134. package/dist/utils/repository-detector.js.map +1 -0
  135. package/dist/utils/response-formatter.d.ts +146 -0
  136. package/dist/utils/response-formatter.d.ts.map +1 -0
  137. package/dist/utils/response-formatter.js +378 -0
  138. package/dist/utils/response-formatter.js.map +1 -0
  139. package/dist/utils/retry.d.ts +12 -0
  140. package/dist/utils/retry.d.ts.map +1 -0
  141. package/dist/utils/retry.js +28 -0
  142. package/dist/utils/retry.js.map +1 -0
  143. package/dist/utils/terminal-controller.d.ts +73 -139
  144. package/dist/utils/terminal-controller.d.ts.map +1 -1
  145. package/dist/utils/terminal-controller.js +234 -459
  146. package/dist/utils/terminal-controller.js.map +1 -1
  147. package/package.json +79 -60
  148. package/dist/providers/error-handler.d.ts +0 -51
  149. package/dist/providers/error-handler.d.ts.map +0 -1
  150. package/dist/providers/error-handler.js +0 -176
  151. package/dist/providers/error-handler.js.map +0 -1
  152. package/dist/providers/github-provider-backup.d.ts +0 -81
  153. package/dist/providers/github-provider-backup.d.ts.map +0 -1
  154. package/dist/providers/github-provider-backup.js +0 -1179
  155. package/dist/providers/github-provider-backup.js.map +0 -1
  156. package/dist/providers/github-provider-complete.d.ts +0 -1
  157. package/dist/providers/github-provider-complete.d.ts.map +0 -1
  158. package/dist/providers/github-provider-complete.js +0 -2
  159. package/dist/providers/github-provider-complete.js.map +0 -1
  160. package/dist/tools/git-init.d.ts +0 -50
  161. package/dist/tools/git-init.d.ts.map +0 -1
  162. package/dist/tools/git-init.js +0 -258
  163. package/dist/tools/git-init.js.map +0 -1
  164. package/dist/tools/git-log.d.ts +0 -67
  165. package/dist/tools/git-log.d.ts.map +0 -1
  166. package/dist/tools/git-log.js +0 -320
  167. package/dist/tools/git-log.js.map +0 -1
  168. package/dist/tools/git-status.d.ts +0 -29
  169. package/dist/tools/git-status.d.ts.map +0 -1
  170. package/dist/tools/git-status.js +0 -182
  171. package/dist/tools/git-status.js.map +0 -1
  172. package/dist/tools/git-update.d.ts +0 -34
  173. package/dist/tools/git-update.d.ts.map +0 -1
  174. package/dist/tools/git-update.js +0 -191
  175. package/dist/tools/git-update.js.map +0 -1
  176. package/dist/utils/auto-detection.d.ts +0 -120
  177. package/dist/utils/auto-detection.d.ts.map +0 -1
  178. package/dist/utils/auto-detection.js +0 -259
  179. package/dist/utils/auto-detection.js.map +0 -1
  180. package/dist/utils/configuration-error-generator.d.ts +0 -41
  181. package/dist/utils/configuration-error-generator.d.ts.map +0 -1
  182. package/dist/utils/configuration-error-generator.js +0 -168
  183. package/dist/utils/configuration-error-generator.js.map +0 -1
  184. package/dist/utils/configuration-validator.d.ts +0 -67
  185. package/dist/utils/configuration-validator.d.ts.map +0 -1
  186. package/dist/utils/configuration-validator.js +0 -257
  187. package/dist/utils/configuration-validator.js.map +0 -1
  188. package/dist/utils/error-handler.d.ts +0 -107
  189. package/dist/utils/error-handler.d.ts.map +0 -1
  190. package/dist/utils/error-handler.js +0 -331
  191. package/dist/utils/error-handler.js.map +0 -1
  192. package/dist/utils/git-operations.d.ts +0 -200
  193. package/dist/utils/git-operations.d.ts.map +0 -1
  194. package/dist/utils/git-operations.js +0 -836
  195. package/dist/utils/git-operations.js.map +0 -1
  196. package/dist/utils/multi-provider-error-handler.d.ts +0 -75
  197. package/dist/utils/multi-provider-error-handler.d.ts.map +0 -1
  198. package/dist/utils/multi-provider-error-handler.js +0 -276
  199. package/dist/utils/multi-provider-error-handler.js.map +0 -1
  200. package/dist/utils/multi-provider-operation-handler.d.ts +0 -113
  201. package/dist/utils/multi-provider-operation-handler.d.ts.map +0 -1
  202. package/dist/utils/multi-provider-operation-handler.js +0 -303
  203. package/dist/utils/multi-provider-operation-handler.js.map +0 -1
  204. package/dist/utils/provider-operation-handler.d.ts +0 -80
  205. package/dist/utils/provider-operation-handler.d.ts.map +0 -1
  206. package/dist/utils/provider-operation-handler.js +0 -201
  207. package/dist/utils/provider-operation-handler.js.map +0 -1
  208. package/dist/utils/response-helper.d.ts +0 -57
  209. package/dist/utils/response-helper.d.ts.map +0 -1
  210. package/dist/utils/response-helper.js +0 -54
  211. package/dist/utils/response-helper.js.map +0 -1
  212. package/dist/utils/user-detection.d.ts +0 -25
  213. package/dist/utils/user-detection.d.ts.map +0 -1
  214. package/dist/utils/user-detection.js +0 -54
  215. 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 para criar e gerenciar providers VCS
10
- * Suporta Gitea e GitHub com configuração flexível
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
- providers = new Map();
14
- defaultProviderName = '';
11
+ config;
15
12
  constructor(config) {
16
- if (config) {
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
- * Cria um novo provider baseado na configuração
16
+ * Create a single provider instance
31
17
  */
32
- createProvider(config) {
33
- let provider;
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
- provider = new github_provider_js_1.GitHubProvider(config);
40
- break;
21
+ return this.createGitHubProvider();
22
+ case 'gitea':
23
+ return this.createGiteaProvider();
41
24
  default:
42
- throw new Error(`Provider type '${config.type}' not supported. Supported types: gitea, github`);
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
- * Lista todos os nomes de providers disponíveis
29
+ * Create a multi-provider instance that handles multiple providers
64
30
  */
65
- listProviders() {
66
- return Array.from(this.providers.keys());
31
+ createMultiProvider(types) {
32
+ const providers = types.map(type => this.createProvider(type));
33
+ return new MultiProviderImpl(providers);
67
34
  }
68
35
  /**
69
- * Obtém o provider padrão
36
+ * Create provider based on string identifier
70
37
  */
71
- getDefaultProvider() {
72
- if (this.providers.size === 0) {
73
- return null;
74
- }
75
- // Primeiro tenta o provider padrão configurado
76
- if (this.defaultProviderName && this.providers.has(this.defaultProviderName)) {
77
- const provider = this.providers.get(this.defaultProviderName);
78
- if (provider) {
79
- return provider;
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
- * Define o provider padrão
51
+ * Get available providers based on configuration
92
52
  */
93
- setDefaultProvider(name) {
94
- if (!this.providers.has(name)) {
95
- throw new Error(`Provider '${name}' not found`);
53
+ getAvailableProviders() {
54
+ const available = [];
55
+ if (this.config.github?.token && this.config.github?.username) {
56
+ available.push('github');
96
57
  }
97
- this.defaultProviderName = name;
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 removed;
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
- * Obtém informações sobre todos os providers
64
+ * Check if a provider type is available
129
65
  */
130
- getProvidersInfo() {
131
- return Array.from(this.providers.entries()).map(([name, provider]) => ({
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
- * Limpa todos os providers
70
+ * Validate provider configuration
139
71
  */
140
- clear() {
141
- this.providers.clear();
142
- this.defaultProviderName = '';
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
- * Obtém o número total de providers
146
- */
147
- getProviderCount() {
148
- return this.providers.size;
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
- * Verifica se há providers configurados
152
- */
153
- isEmpty() {
154
- return this.providers.size === 0;
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
- * Factory singleton global para uso em todo o sistema
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
- function createProviderFromEnv(providerName, providerType) {
167
- let apiUrl;
168
- let token;
169
- let username;
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
- if (!token) {
188
- throw new Error(`API token not configured for ${providerType}`);
189
- }
190
- const config = {
191
- name: providerName,
192
- type: providerType,
193
- apiUrl,
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
- else {
248
- // configura GitHub se token válido estiver disponível
249
- if (process.env.GITHUB_TOKEN) {
250
- providers.push({
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
- // Tenta Gitea se disponível
262
- if (process.env.GITEA_URL && process.env.GITEA_TOKEN) {
263
- // Valida URL do Gitea
264
- const giteaUrl = process.env.GITEA_URL;
265
- if (!giteaUrl.includes('://')) {
266
- console.warn('[PROVIDER FACTORY] GITEA_URL deve incluir protocolo (http:// ou https://)');
267
- }
268
- else {
269
- providers.push({
270
- name: 'gitea',
271
- type: 'gitea',
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
- // Tenta configuração genérica
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
- // Se não há providers configurados, deixa vazio
300
- if (providers.length === 0) {
301
- console.warn('[PROVIDER FACTORY] Nenhum provider configurado');
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":"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"}
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"}