@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 +0 -11
- package/dist/index.js +1 -91
- package/package.json +1 -1
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
|
-
|
|
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; } });
|