@andrebuzeli/git-mcp 2.27.3 → 2.28.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.
Files changed (112) hide show
  1. package/dist/client.d.ts +306 -306
  2. package/dist/client.js +298 -298
  3. package/dist/config.d.ts +310 -310
  4. package/dist/config.js +392 -392
  5. package/dist/index.d.ts +22 -22
  6. package/dist/index.js +89 -89
  7. package/dist/providers/base-provider.d.ts +160 -156
  8. package/dist/providers/base-provider.d.ts.map +1 -1
  9. package/dist/providers/base-provider.js +274 -260
  10. package/dist/providers/base-provider.js.map +1 -1
  11. package/dist/providers/error-handler.d.ts +50 -50
  12. package/dist/providers/error-handler.js +175 -175
  13. package/dist/providers/gitea-provider.d.ts +97 -97
  14. package/dist/providers/gitea-provider.js +1001 -1001
  15. package/dist/providers/github-provider.d.ts +104 -104
  16. package/dist/providers/github-provider.js +1234 -1234
  17. package/dist/providers/index.d.ts +12 -12
  18. package/dist/providers/index.js +40 -40
  19. package/dist/providers/provider-factory.d.ts +74 -74
  20. package/dist/providers/provider-factory.js +311 -311
  21. package/dist/providers/types.d.ts +318 -298
  22. package/dist/providers/types.d.ts.map +1 -1
  23. package/dist/providers/types.js +6 -6
  24. package/dist/server.d.ts +76 -76
  25. package/dist/server.d.ts.map +1 -1
  26. package/dist/server.js +306 -357
  27. package/dist/server.js.map +1 -1
  28. package/dist/tools/gh-actions.d.ts +252 -252
  29. package/dist/tools/gh-actions.js +389 -389
  30. package/dist/tools/gh-analytics.d.ts +263 -263
  31. package/dist/tools/gh-analytics.js +401 -401
  32. package/dist/tools/gh-code-review.d.ts +304 -304
  33. package/dist/tools/gh-code-review.js +512 -512
  34. package/dist/tools/gh-codespaces.d.ts +138 -138
  35. package/dist/tools/gh-codespaces.js +282 -282
  36. package/dist/tools/gh-deployments.d.ts +300 -300
  37. package/dist/tools/gh-deployments.js +367 -367
  38. package/dist/tools/gh-gists.d.ts +174 -174
  39. package/dist/tools/gh-gists.js +321 -321
  40. package/dist/tools/gh-projects.d.ts +205 -205
  41. package/dist/tools/gh-projects.js +358 -358
  42. package/dist/tools/gh-security.d.ts +274 -274
  43. package/dist/tools/gh-security.js +395 -395
  44. package/dist/tools/gh-sync.d.ts +213 -213
  45. package/dist/tools/gh-sync.js +378 -378
  46. package/dist/tools/gh-workflows.d.ts +290 -290
  47. package/dist/tools/gh-workflows.js +432 -432
  48. package/dist/tools/git-archive.d.ts +165 -165
  49. package/dist/tools/git-archive.js +233 -233
  50. package/dist/tools/git-branches.d.ts +430 -430
  51. package/dist/tools/git-branches.d.ts.map +1 -1
  52. package/dist/tools/git-branches.js +627 -530
  53. package/dist/tools/git-branches.js.map +1 -1
  54. package/dist/tools/git-bundle.d.ts +171 -171
  55. package/dist/tools/git-bundle.js +241 -241
  56. package/dist/tools/git-cherry-pick.d.ts +158 -158
  57. package/dist/tools/git-cherry-pick.js +224 -224
  58. package/dist/tools/git-commits.d.ts +485 -485
  59. package/dist/tools/git-commits.d.ts.map +1 -1
  60. package/dist/tools/git-commits.js +735 -625
  61. package/dist/tools/git-commits.js.map +1 -1
  62. package/dist/tools/git-config.d.ts +140 -140
  63. package/dist/tools/git-config.js +268 -268
  64. package/dist/tools/git-files.d.ts +486 -486
  65. package/dist/tools/git-files.js +607 -607
  66. package/dist/tools/git-issues.d.ts +571 -571
  67. package/dist/tools/git-issues.d.ts.map +1 -1
  68. package/dist/tools/git-issues.js +740 -693
  69. package/dist/tools/git-issues.js.map +1 -1
  70. package/dist/tools/git-pulls.d.ts +694 -694
  71. package/dist/tools/git-pulls.js +732 -732
  72. package/dist/tools/git-rebase.d.ts +137 -137
  73. package/dist/tools/git-rebase.js +213 -213
  74. package/dist/tools/git-releases.d.ts +487 -487
  75. package/dist/tools/git-releases.js +557 -557
  76. package/dist/tools/git-remote.d.ts +138 -138
  77. package/dist/tools/git-remote.js +274 -274
  78. package/dist/tools/git-repositories.d.ts +483 -483
  79. package/dist/tools/git-repositories.js +640 -640
  80. package/dist/tools/git-reset.d.ts +130 -130
  81. package/dist/tools/git-reset.js +223 -223
  82. package/dist/tools/git-revert.d.ts +149 -149
  83. package/dist/tools/git-revert.js +198 -198
  84. package/dist/tools/git-stash.d.ts +140 -140
  85. package/dist/tools/git-stash.js +269 -269
  86. package/dist/tools/git-submodule.d.ts +152 -152
  87. package/dist/tools/git-submodule.js +289 -289
  88. package/dist/tools/git-sync.d.ts +178 -166
  89. package/dist/tools/git-sync.d.ts.map +1 -1
  90. package/dist/tools/git-sync.js +312 -117
  91. package/dist/tools/git-sync.js.map +1 -1
  92. package/dist/tools/git-tags.d.ts +411 -411
  93. package/dist/tools/git-tags.js +485 -485
  94. package/dist/tools/git-webhooks.d.ts +470 -482
  95. package/dist/tools/git-webhooks.d.ts.map +1 -1
  96. package/dist/tools/git-webhooks.js +543 -555
  97. package/dist/tools/git-webhooks.js.map +1 -1
  98. package/dist/tools/git-worktree.d.ts +159 -159
  99. package/dist/tools/git-worktree.js +269 -269
  100. package/dist/tools/repositories.d.ts +405 -405
  101. package/dist/tools/repositories.js +569 -569
  102. package/dist/tools/users.d.ts +372 -372
  103. package/dist/tools/users.js +499 -499
  104. package/dist/tools/validator.d.ts +170 -170
  105. package/dist/tools/validator.js +194 -194
  106. package/dist/tools/version-control.d.ts +136 -136
  107. package/dist/tools/version-control.js +164 -164
  108. package/dist/utils/terminal-controller.d.ts +80 -80
  109. package/dist/utils/terminal-controller.js +345 -345
  110. package/dist/utils/user-detection.d.ts +24 -24
  111. package/dist/utils/user-detection.js +53 -53
  112. package/package.json +59 -59
@@ -1,312 +1,312 @@
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
- /**
9
- * Factory para criar e gerenciar providers VCS
10
- * Suporta Gitea e GitHub com configuração flexível
11
- */
12
- class ProviderFactory {
13
- providers = new Map();
14
- defaultProviderName = '';
15
- 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
- }
28
- }
29
- /**
30
- * Cria um novo provider baseado na configuração
31
- */
32
- createProvider(config) {
33
- let provider;
34
- switch (config.type) {
35
- case 'gitea':
36
- provider = new gitea_provider_js_1.GiteaProvider(config);
37
- break;
38
- case 'github':
39
- provider = new github_provider_js_1.GitHubProvider(config);
40
- break;
41
- 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;
59
- }
60
- return provider;
61
- }
62
- /**
63
- * Lista todos os nomes de providers disponíveis
64
- */
65
- listProviders() {
66
- return Array.from(this.providers.keys());
67
- }
68
- /**
69
- * Obtém o provider padrão
70
- */
71
- getDefaultProvider() {
72
- if (this.providers.size === 0) {
73
- throw new Error('No providers configured - this should not happen');
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
- console.log(`[PROVIDER FACTORY] Usando provider '${firstKey}' como fallback padrão`);
86
- this.defaultProviderName = firstKey;
87
- return this.providers.get(firstKey);
88
- }
89
- throw new Error('No valid providers available');
90
- }
91
- /**
92
- * Define o provider padrão
93
- */
94
- setDefaultProvider(name) {
95
- if (!this.providers.has(name)) {
96
- throw new Error(`Provider '${name}' not found`);
97
- }
98
- this.defaultProviderName = name;
99
- }
100
- /**
101
- * Remove um provider
102
- */
103
- removeProvider(name) {
104
- const removed = this.providers.delete(name);
105
- // Se o provider removido era o padrão, redefine o padrão
106
- if (removed && name === this.defaultProviderName) {
107
- if (this.providers.size > 0) {
108
- const firstKey = this.providers.keys().next().value;
109
- if (firstKey) {
110
- this.defaultProviderName = firstKey;
111
- }
112
- else {
113
- this.defaultProviderName = '';
114
- }
115
- }
116
- else {
117
- this.defaultProviderName = '';
118
- }
119
- }
120
- return removed;
121
- }
122
- /**
123
- * Verifica se um provider existe
124
- */
125
- hasProvider(name) {
126
- return this.providers.has(name);
127
- }
128
- /**
129
- * Obtém informações sobre todos os providers
130
- */
131
- getProvidersInfo() {
132
- return Array.from(this.providers.entries()).map(([name, provider]) => ({
133
- name,
134
- type: provider.config?.type || 'unknown',
135
- isDefault: name === this.defaultProviderName
136
- }));
137
- }
138
- /**
139
- * Limpa todos os providers
140
- */
141
- clear() {
142
- this.providers.clear();
143
- this.defaultProviderName = '';
144
- }
145
- /**
146
- * Obtém o número total de providers
147
- */
148
- getProviderCount() {
149
- return this.providers.size;
150
- }
151
- /**
152
- * Verifica se há providers configurados
153
- */
154
- isEmpty() {
155
- return this.providers.size === 0;
156
- }
157
- }
158
- exports.ProviderFactory = ProviderFactory;
159
- /**
160
- * Factory singleton global para uso em todo o sistema
161
- */
162
- // Inicializar o provider factory global com configuração do ambiente
163
- exports.globalProviderFactory = initializeFactoryFromEnv();
164
- /**
165
- * Função helper para criar provider a partir de variáveis de ambiente
166
- */
167
- function createProviderFromEnv(providerName, providerType) {
168
- let apiUrl;
169
- let token;
170
- let username;
171
- switch (providerType) {
172
- case 'gitea':
173
- apiUrl = process.env.GITEA_URL || process.env.API_URL || '';
174
- token = process.env.GITEA_TOKEN || process.env.API_TOKEN || '';
175
- username = process.env.GITEA_USERNAME || process.env.USERNAME;
176
- break;
177
- case 'github':
178
- apiUrl = process.env.GITHUB_URL || process.env.API_URL || 'https://api.github.com';
179
- token = process.env.GITHUB_TOKEN || process.env.API_TOKEN || '';
180
- username = process.env.GITHUB_USERNAME || process.env.USERNAME;
181
- break;
182
- default:
183
- throw new Error(`Provider type '${providerType}' not supported`);
184
- }
185
- if (!apiUrl) {
186
- throw new Error(`API URL not configured for ${providerType}`);
187
- }
188
- if (!token) {
189
- throw new Error(`API token not configured for ${providerType}`);
190
- }
191
- const config = {
192
- name: providerName,
193
- type: providerType,
194
- apiUrl,
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
- token: process.env.GITEA_TOKEN,
234
- username: process.env.GITEA_USERNAME
235
- });
236
- providers.push({
237
- name: 'github',
238
- type: 'github',
239
- apiUrl: process.env.GITHUB_URL || 'https://api.github.com',
240
- token: process.env.GITHUB_TOKEN,
241
- username: process.env.GITHUB_USERNAME
242
- });
243
- defaultProvider = 'gitea';
244
- }
245
- else {
246
- // Só configura GitHub se token válido estiver disponível
247
- if (process.env.GITHUB_TOKEN) {
248
- providers.push({
249
- name: 'github',
250
- type: 'github',
251
- apiUrl: process.env.GITHUB_URL || 'https://api.github.com',
252
- token: process.env.GITHUB_TOKEN,
253
- username: process.env.GITHUB_USERNAME
254
- });
255
- defaultProvider = 'github';
256
- console.log('[PROVIDER FACTORY] Provider GitHub configurado');
257
- }
258
- // Tenta Gitea se disponível
259
- if (process.env.GITEA_URL && process.env.GITEA_TOKEN) {
260
- // Valida URL do Gitea
261
- const giteaUrl = process.env.GITEA_URL;
262
- if (!giteaUrl.includes('://')) {
263
- console.warn('[PROVIDER FACTORY] GITEA_URL deve incluir protocolo (http:// ou https://)');
264
- }
265
- else {
266
- providers.push({
267
- name: 'gitea',
268
- type: 'gitea',
269
- apiUrl: giteaUrl,
270
- token: process.env.GITEA_TOKEN,
271
- username: process.env.GITEA_USERNAME
272
- });
273
- // Se não há provider padrão, usa Gitea
274
- if (!defaultProvider) {
275
- defaultProvider = 'gitea';
276
- }
277
- console.log('[PROVIDER FACTORY] Provider Gitea configurado');
278
- }
279
- }
280
- }
281
- // Tenta configuração genérica
282
- if (process.env.API_URL && process.env.API_TOKEN && providers.length === 0) {
283
- const providerType = process.env.PROVIDER || 'gitea';
284
- providers.push({
285
- name: providerType,
286
- type: providerType,
287
- apiUrl: process.env.API_URL,
288
- token: process.env.API_TOKEN,
289
- username: process.env.USERNAME
290
- });
291
- defaultProvider = providerType;
292
- }
293
- }
294
- // Se não há providers configurados, cria um provider demo
295
- if (providers.length === 0) {
296
- console.warn('[PROVIDER FACTORY] Nenhum provider configurado, usando modo demo');
297
- providers.push({
298
- name: 'demo',
299
- type: 'gitea',
300
- apiUrl: 'https://demo.gitea.io/api/v1',
301
- token: 'demo-token',
302
- username: 'demo-user'
303
- });
304
- defaultProvider = 'demo';
305
- }
306
- const config = {
307
- defaultProvider,
308
- providers
309
- };
310
- return new ProviderFactory(config);
311
- }
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
+ /**
9
+ * Factory para criar e gerenciar providers VCS
10
+ * Suporta Gitea e GitHub com configuração flexível
11
+ */
12
+ class ProviderFactory {
13
+ providers = new Map();
14
+ defaultProviderName = '';
15
+ 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
+ }
28
+ }
29
+ /**
30
+ * Cria um novo provider baseado na configuração
31
+ */
32
+ createProvider(config) {
33
+ let provider;
34
+ switch (config.type) {
35
+ case 'gitea':
36
+ provider = new gitea_provider_js_1.GiteaProvider(config);
37
+ break;
38
+ case 'github':
39
+ provider = new github_provider_js_1.GitHubProvider(config);
40
+ break;
41
+ 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;
59
+ }
60
+ return provider;
61
+ }
62
+ /**
63
+ * Lista todos os nomes de providers disponíveis
64
+ */
65
+ listProviders() {
66
+ return Array.from(this.providers.keys());
67
+ }
68
+ /**
69
+ * Obtém o provider padrão
70
+ */
71
+ getDefaultProvider() {
72
+ if (this.providers.size === 0) {
73
+ throw new Error('No providers configured - this should not happen');
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
+ console.log(`[PROVIDER FACTORY] Usando provider '${firstKey}' como fallback padrão`);
86
+ this.defaultProviderName = firstKey;
87
+ return this.providers.get(firstKey);
88
+ }
89
+ throw new Error('No valid providers available');
90
+ }
91
+ /**
92
+ * Define o provider padrão
93
+ */
94
+ setDefaultProvider(name) {
95
+ if (!this.providers.has(name)) {
96
+ throw new Error(`Provider '${name}' not found`);
97
+ }
98
+ this.defaultProviderName = name;
99
+ }
100
+ /**
101
+ * Remove um provider
102
+ */
103
+ removeProvider(name) {
104
+ const removed = this.providers.delete(name);
105
+ // Se o provider removido era o padrão, redefine o padrão
106
+ if (removed && name === this.defaultProviderName) {
107
+ if (this.providers.size > 0) {
108
+ const firstKey = this.providers.keys().next().value;
109
+ if (firstKey) {
110
+ this.defaultProviderName = firstKey;
111
+ }
112
+ else {
113
+ this.defaultProviderName = '';
114
+ }
115
+ }
116
+ else {
117
+ this.defaultProviderName = '';
118
+ }
119
+ }
120
+ return removed;
121
+ }
122
+ /**
123
+ * Verifica se um provider existe
124
+ */
125
+ hasProvider(name) {
126
+ return this.providers.has(name);
127
+ }
128
+ /**
129
+ * Obtém informações sobre todos os providers
130
+ */
131
+ getProvidersInfo() {
132
+ return Array.from(this.providers.entries()).map(([name, provider]) => ({
133
+ name,
134
+ type: provider.config?.type || 'unknown',
135
+ isDefault: name === this.defaultProviderName
136
+ }));
137
+ }
138
+ /**
139
+ * Limpa todos os providers
140
+ */
141
+ clear() {
142
+ this.providers.clear();
143
+ this.defaultProviderName = '';
144
+ }
145
+ /**
146
+ * Obtém o número total de providers
147
+ */
148
+ getProviderCount() {
149
+ return this.providers.size;
150
+ }
151
+ /**
152
+ * Verifica se há providers configurados
153
+ */
154
+ isEmpty() {
155
+ return this.providers.size === 0;
156
+ }
157
+ }
158
+ exports.ProviderFactory = ProviderFactory;
159
+ /**
160
+ * Factory singleton global para uso em todo o sistema
161
+ */
162
+ // Inicializar o provider factory global com configuração do ambiente
163
+ exports.globalProviderFactory = initializeFactoryFromEnv();
164
+ /**
165
+ * Função helper para criar provider a partir de variáveis de ambiente
166
+ */
167
+ function createProviderFromEnv(providerName, providerType) {
168
+ let apiUrl;
169
+ let token;
170
+ let username;
171
+ switch (providerType) {
172
+ case 'gitea':
173
+ apiUrl = process.env.GITEA_URL || process.env.API_URL || '';
174
+ token = process.env.GITEA_TOKEN || process.env.API_TOKEN || '';
175
+ username = process.env.GITEA_USERNAME || process.env.USERNAME;
176
+ break;
177
+ case 'github':
178
+ apiUrl = process.env.GITHUB_URL || process.env.API_URL || 'https://api.github.com';
179
+ token = process.env.GITHUB_TOKEN || process.env.API_TOKEN || '';
180
+ username = process.env.GITHUB_USERNAME || process.env.USERNAME;
181
+ break;
182
+ default:
183
+ throw new Error(`Provider type '${providerType}' not supported`);
184
+ }
185
+ if (!apiUrl) {
186
+ throw new Error(`API URL not configured for ${providerType}`);
187
+ }
188
+ if (!token) {
189
+ throw new Error(`API token not configured for ${providerType}`);
190
+ }
191
+ const config = {
192
+ name: providerName,
193
+ type: providerType,
194
+ apiUrl,
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
+ token: process.env.GITEA_TOKEN,
234
+ username: process.env.GITEA_USERNAME
235
+ });
236
+ providers.push({
237
+ name: 'github',
238
+ type: 'github',
239
+ apiUrl: process.env.GITHUB_URL || 'https://api.github.com',
240
+ token: process.env.GITHUB_TOKEN,
241
+ username: process.env.GITHUB_USERNAME
242
+ });
243
+ defaultProvider = 'gitea';
244
+ }
245
+ else {
246
+ // Só configura GitHub se token válido estiver disponível
247
+ if (process.env.GITHUB_TOKEN) {
248
+ providers.push({
249
+ name: 'github',
250
+ type: 'github',
251
+ apiUrl: process.env.GITHUB_URL || 'https://api.github.com',
252
+ token: process.env.GITHUB_TOKEN,
253
+ username: process.env.GITHUB_USERNAME
254
+ });
255
+ defaultProvider = 'github';
256
+ console.log('[PROVIDER FACTORY] Provider GitHub configurado');
257
+ }
258
+ // Tenta Gitea se disponível
259
+ if (process.env.GITEA_URL && process.env.GITEA_TOKEN) {
260
+ // Valida URL do Gitea
261
+ const giteaUrl = process.env.GITEA_URL;
262
+ if (!giteaUrl.includes('://')) {
263
+ console.warn('[PROVIDER FACTORY] GITEA_URL deve incluir protocolo (http:// ou https://)');
264
+ }
265
+ else {
266
+ providers.push({
267
+ name: 'gitea',
268
+ type: 'gitea',
269
+ apiUrl: giteaUrl,
270
+ token: process.env.GITEA_TOKEN,
271
+ username: process.env.GITEA_USERNAME
272
+ });
273
+ // Se não há provider padrão, usa Gitea
274
+ if (!defaultProvider) {
275
+ defaultProvider = 'gitea';
276
+ }
277
+ console.log('[PROVIDER FACTORY] Provider Gitea configurado');
278
+ }
279
+ }
280
+ }
281
+ // Tenta configuração genérica
282
+ if (process.env.API_URL && process.env.API_TOKEN && providers.length === 0) {
283
+ const providerType = process.env.PROVIDER || 'gitea';
284
+ providers.push({
285
+ name: providerType,
286
+ type: providerType,
287
+ apiUrl: process.env.API_URL,
288
+ token: process.env.API_TOKEN,
289
+ username: process.env.USERNAME
290
+ });
291
+ defaultProvider = providerType;
292
+ }
293
+ }
294
+ // Se não há providers configurados, cria um provider demo
295
+ if (providers.length === 0) {
296
+ console.warn('[PROVIDER FACTORY] Nenhum provider configurado, usando modo demo');
297
+ providers.push({
298
+ name: 'demo',
299
+ type: 'gitea',
300
+ apiUrl: 'https://demo.gitea.io/api/v1',
301
+ token: 'demo-token',
302
+ username: 'demo-user'
303
+ });
304
+ defaultProvider = 'demo';
305
+ }
306
+ const config = {
307
+ defaultProvider,
308
+ providers
309
+ };
310
+ return new ProviderFactory(config);
311
+ }
312
312
  //# sourceMappingURL=provider-factory.js.map