@fluwa-tool/sdk 1.0.52 → 1.0.54

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/dist/index.d.ts CHANGED
@@ -9,21 +9,10 @@
9
9
  import { FluwaConfig } from './types';
10
10
  /**
11
11
  * Inicializar Fluwa-Tool
12
- * Deve ser chamado no início da aplicação
13
12
  */
14
13
  export declare function initFluwaTool(partialConfig?: Partial<FluwaConfig>): Promise<void>;
15
- /**
16
- * Desativar Fluwa
17
- */
18
14
  export declare function disableFluwaTool(): void;
19
- /**
20
- * Habilitar Fluwa
21
- */
22
15
  export declare function enableFluwaTool(): Promise<void>;
23
- /**
24
- * Verificar se Fluwa está ativo
25
- */
26
- export declare function isFluwaTooIialized(): boolean;
27
16
  export * from './types';
28
17
  export { Logger, LogLevel } from './core/Logger';
29
18
  export { ConfigManager } from './core/Config';
package/dist/index.js CHANGED
@@ -26,7 +26,6 @@ exports.FLUWA_INTERNAL_PATHS = exports.createFluwaSdkFilter = exports.UrlFilter
26
26
  exports.initFluwaTool = initFluwaTool;
27
27
  exports.disableFluwaTool = disableFluwaTool;
28
28
  exports.enableFluwaTool = enableFluwaTool;
29
- exports.isFluwaTooIialized = isFluwaTooIialized;
30
29
  const types_1 = require("./types");
31
30
  const Logger_1 = require("./core/Logger");
32
31
  const Config_1 = require("./core/Config");
@@ -38,9 +37,6 @@ const RequestLogger_1 = require("./features/network/RequestLogger");
38
37
  const MockResolver_1 = require("./features/network/MockResolver");
39
38
  const UrlFilter_1 = require("./features/network/UrlFilter");
40
39
  const IdGenerator_1 = require("./core/IdGenerator");
41
- // ============================================
42
- // ESTADO GLOBAL
43
- // ============================================
44
40
  let isInitialized = false;
45
41
  let logger = Logger_1.defaultLogger;
46
42
  let config;
@@ -51,53 +47,8 @@ let fetchInterceptor;
51
47
  let xmlHttpRequestInterceptor;
52
48
  let mockResolver;
53
49
  let urlFilter = null; // URL filter para evitar loops infinitos
54
- // ============================================
55
- // CONFIGURAÇÃO DE AXIOS
56
- // ============================================
57
- /**
58
- * Forçar axios a usar fetch em vez de XMLHttpRequest
59
- * Permite que FetchInterceptor mocke requisições de axios
60
- */
61
- function configureAxiosToUseFetch(logger) {
62
- try {
63
- // Verificar se axios está disponível globalmente
64
- const globalObj = typeof window !== 'undefined' ? window : globalThis;
65
- const axios = globalObj.axios;
66
- if (!axios) {
67
- logger.debug('axios não encontrado globalmente - vai ser necessário importar manualmente');
68
- return;
69
- }
70
- // Configurar axios para usar fetch adapter
71
- // Isso faz com que axios use fetch internamente, que é interceptado por FetchInterceptor
72
- axios.defaults.adapter = async (config) => {
73
- logger.debug(`📡 [axios -> fetch] Usando fetch para: ${config.method?.toUpperCase()} ${config.url}`);
74
- const fetchConfig = {
75
- method: config.method?.toUpperCase() || 'GET',
76
- headers: config.headers || {},
77
- body: config.data,
78
- };
79
- const response = await fetch(config.url, fetchConfig);
80
- return {
81
- data: await response.json(),
82
- status: response.status,
83
- statusText: response.statusText,
84
- headers: response.headers,
85
- config,
86
- request: {},
87
- };
88
- };
89
- logger.success('✅ axios configurado para usar fetch (FetchInterceptor ativo)');
90
- }
91
- catch (error) {
92
- logger.debug('Erro ao configurar axios para fetch:', error);
93
- }
94
- }
95
- // ============================================
96
- // INICIALIZAÇÃO
97
- // ============================================
98
50
  /**
99
51
  * Inicializar Fluwa-Tool
100
- * Deve ser chamado no início da aplicação
101
52
  */
102
53
  async function initFluwaTool(partialConfig = {}) {
103
54
  if (isInitialized) {
@@ -105,41 +56,25 @@ async function initFluwaTool(partialConfig = {}) {
105
56
  return;
106
57
  }
107
58
  try {
108
- // 1. Configurar
109
59
  config = (0, Config_1.getConfigManager)(partialConfig);
110
60
  logger = new Logger_1.Logger('Fluwa', config.getConfig().debug ? Logger_1.LogLevel.DEBUG : Logger_1.LogLevel.INFO);
111
61
  logger.success('Inicializando Fluwa-Tool');
112
- logger.debug('Configuração', config.getConfig());
113
62
  if (!config.isEnabled()) {
114
63
  logger.warn('Fluwa desativado via config.enabled=false');
115
64
  return;
116
65
  }
117
- // 2. Gerar session ID
118
66
  sessionId = IdGenerator_1.idGenerator.generate();
119
- logger.debug(`Session ID: ${sessionId}`);
120
- // 3. Criar clientes HTTP e WebSocket
121
67
  const { requestTimeout, serverUrl } = config.getConfig();
122
68
  httpClient = new HttpClient_1.HttpClient(serverUrl, logger, requestTimeout || 5000);
123
69
  wsClient = new WebSocketClient_1.WebSocketClient(serverUrl, logger, config.getAppName());
124
- // 4. Criar resolvedor de mocks
125
70
  mockResolver = new MockResolver_1.MockResolver(httpClient, logger);
126
- // 5. Criar logger de requisições
127
71
  const requestLogger = new RequestLogger_1.RequestLogger(httpClient, logger);
128
- // 6. ✅ Criar URL Filter para evitar loops infinitos
129
- // Automatically excludes Fluwa server URLs and internal endpoints
130
72
  const { excludedUrls } = config.getConfig();
131
73
  urlFilter = (0, UrlFilter_1.createFluwaSdkFilter)(serverUrl, excludedUrls, config.getConfig().debug);
132
- logger.debug(`URL Filter configurado com ${urlFilter.getExcludedPatterns().length} padrões excluídos`);
133
- // 7. Criar interceptador de fetch
134
74
  fetchInterceptor = new FetchInterceptor_1.FetchInterceptor(logger, requestLogger, mockResolver, sessionId, config.getAppName(), urlFilter);
135
- // 7b. Criar interceptador de XMLHttpRequest (DESABILITADO)
136
- // axios agora usa fetch via configureAxiosToUseFetch(), então não precisa mais de XHR
137
75
  xmlHttpRequestInterceptor = new XMLHttpRequestInterceptor_1.XMLHttpRequestInterceptor(logger, requestLogger, mockResolver, sessionId, config.getAppName(), urlFilter);
138
- // 8. Instalar interceptadores
139
76
  fetchInterceptor.install();
140
- // xmlHttpRequestInterceptor.install(); // ❌ Desabilitado - axios agora usa fetch
141
- // 9. Conectar WebSocket
142
- logger.debug('Conectando ao WebSocket...');
77
+ xmlHttpRequestInterceptor.install();
143
78
  try {
144
79
  await wsClient.connect();
145
80
  setupWebSocketListeners();
@@ -147,7 +82,6 @@ async function initFluwaTool(partialConfig = {}) {
147
82
  catch (error) {
148
83
  logger.warn('Falha ao conectar WebSocket, continuando em modo offline', error);
149
84
  }
150
- // 10. Enviar init session
151
85
  wsClient.send({
152
86
  type: types_1.WebSocketMessageType.INIT_SESSION,
153
87
  sessionId,
@@ -155,18 +89,12 @@ async function initFluwaTool(partialConfig = {}) {
155
89
  });
156
90
  isInitialized = true;
157
91
  logger.success('Fluwa-Tool inicializado com sucesso!');
158
- // ✅ FORÇA AXIOS USAR FETCH EM VEZ DE XMLHttpRequest
159
- // Isso permite que FetchInterceptor mocke requisições de axios
160
- configureAxiosToUseFetch(logger);
161
92
  }
162
93
  catch (error) {
163
94
  logger.error('Erro ao inicializar Fluwa', error);
164
95
  throw error;
165
96
  }
166
97
  }
167
- /**
168
- * Configurar listeners do WebSocket
169
- */
170
98
  function setupWebSocketListeners() {
171
99
  wsClient.on('message', (message) => {
172
100
  try {
@@ -185,12 +113,6 @@ function setupWebSocketListeners() {
185
113
  logger.error('Erro no WebSocket', error);
186
114
  });
187
115
  }
188
- // ============================================
189
- // CONTROLE
190
- // ============================================
191
- /**
192
- * Desativar Fluwa
193
- */
194
116
  function disableFluwaTool() {
195
117
  if (!isInitialized) {
196
118
  return;
@@ -201,9 +123,6 @@ function disableFluwaTool() {
201
123
  isInitialized = false;
202
124
  logger.success('Fluwa-Tool desativado');
203
125
  }
204
- /**
205
- * Habilitar Fluwa
206
- */
207
126
  async function enableFluwaTool() {
208
127
  if (isInitialized) {
209
128
  return;
@@ -219,15 +138,6 @@ async function enableFluwaTool() {
219
138
  isInitialized = true;
220
139
  logger.success('Fluwa-Tool habilitado');
221
140
  }
222
- /**
223
- * Verificar se Fluwa está ativo
224
- */
225
- function isFluwaTooIialized() {
226
- return isInitialized;
227
- }
228
- // ============================================
229
- // EXPORTS
230
- // ============================================
231
141
  __exportStar(require("./types"), exports);
232
142
  var Logger_2 = require("./core/Logger");
233
143
  Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return Logger_2.Logger; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluwa-tool/sdk",
3
- "version": "1.0.52",
3
+ "version": "1.0.54",
4
4
  "description": "Fluwa DevTools SDK for network interception and mocking",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",