@fluwa-tool/sdk 1.0.44 → 1.0.45
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.
|
@@ -83,12 +83,17 @@ class XMLHttpRequestInterceptor {
|
|
|
83
83
|
checkMockWithRetry().then(mockResponse => {
|
|
84
84
|
if (mockResponse) {
|
|
85
85
|
// Mock encontrado - simular resposta XHR
|
|
86
|
+
self.logger.debug(`🎯 [XMLHttpRequestInterceptor] Mock encontrado para ${method} ${url}`, {
|
|
87
|
+
status: mockResponse.status,
|
|
88
|
+
hasResponse: !!mockResponse.response,
|
|
89
|
+
});
|
|
86
90
|
requestMetadata.source = types_1.RequestSource.MOCK;
|
|
87
91
|
requestMetadata.status = mockResponse.status || 200;
|
|
88
92
|
requestMetadata.response = mockResponse.response;
|
|
89
93
|
const delay = mockResponse.delay || 0;
|
|
90
94
|
// Aguardar axios anexar seus handlers (envolver em Promise.resolve para dar tempo)
|
|
91
95
|
Promise.resolve().then(() => {
|
|
96
|
+
self.logger.debug(`⏱️ [XMLHttpRequestInterceptor] Iniciando simulação de resposta com delay: ${delay}ms`);
|
|
92
97
|
setTimeout(() => {
|
|
93
98
|
const duration = Date.now() - (xhr._fluwaStartTime || 0);
|
|
94
99
|
requestMetadata.duration = duration;
|
|
@@ -101,13 +106,16 @@ class XMLHttpRequestInterceptor {
|
|
|
101
106
|
writable: true,
|
|
102
107
|
configurable: true,
|
|
103
108
|
});
|
|
109
|
+
self.logger.debug(`📊 [XMLHttpRequestInterceptor] readyState = ${state}`);
|
|
104
110
|
}
|
|
105
111
|
catch (e) {
|
|
106
112
|
// Fallback: try direct assignment se defineProperty falhar
|
|
107
113
|
xhr.readyState = state;
|
|
114
|
+
self.logger.debug(`📊 [XMLHttpRequestInterceptor] readyState = ${state} (fallback)`);
|
|
108
115
|
}
|
|
109
116
|
};
|
|
110
117
|
// Primeiro: configurar todas as propriedades de resposta ANTES de começar readyState
|
|
118
|
+
self.logger.debug(`🔧 [XMLHttpRequestInterceptor] Configurando propriedades de resposta`);
|
|
111
119
|
try {
|
|
112
120
|
// Override status (read-only property in Hermes)
|
|
113
121
|
if (!Object.getOwnPropertyDescriptor(xhr, 'status')) {
|
|
@@ -116,6 +124,7 @@ class XMLHttpRequestInterceptor {
|
|
|
116
124
|
writable: true,
|
|
117
125
|
configurable: true,
|
|
118
126
|
});
|
|
127
|
+
self.logger.debug(`✅ [XMLHttpRequestInterceptor] status = ${mockResponse.status || 200}`);
|
|
119
128
|
}
|
|
120
129
|
// Override responseText (read-only property in Hermes)
|
|
121
130
|
if (!Object.getOwnPropertyDescriptor(xhr, 'responseText')) {
|
|
@@ -124,6 +133,7 @@ class XMLHttpRequestInterceptor {
|
|
|
124
133
|
writable: true,
|
|
125
134
|
configurable: true,
|
|
126
135
|
});
|
|
136
|
+
self.logger.debug(`✅ [XMLHttpRequestInterceptor] responseText configurado`);
|
|
127
137
|
}
|
|
128
138
|
// Override response (read-only property in Hermes)
|
|
129
139
|
if (!Object.getOwnPropertyDescriptor(xhr, 'response')) {
|
|
@@ -132,37 +142,47 @@ class XMLHttpRequestInterceptor {
|
|
|
132
142
|
writable: true,
|
|
133
143
|
configurable: true,
|
|
134
144
|
});
|
|
145
|
+
self.logger.debug(`✅ [XMLHttpRequestInterceptor] response configurado`);
|
|
135
146
|
}
|
|
136
147
|
}
|
|
137
148
|
catch (e) {
|
|
138
|
-
self.logger.debug('Erro ao injetar propriedades mock:', e);
|
|
149
|
+
self.logger.debug('❌ Erro ao injetar propriedades mock:', e);
|
|
139
150
|
}
|
|
140
151
|
// Agora simular readyState progression
|
|
141
152
|
setTimeout(() => {
|
|
142
153
|
setReadyState(1);
|
|
143
154
|
if (xhr.onreadystatechange) {
|
|
144
155
|
try {
|
|
156
|
+
self.logger.debug(`📞 [XMLHttpRequestInterceptor] Chamando onreadystatechange para readyState=1`);
|
|
145
157
|
xhr.onreadystatechange();
|
|
146
158
|
}
|
|
147
|
-
catch (e) {
|
|
159
|
+
catch (e) {
|
|
160
|
+
self.logger.debug(`❌ Erro ao chamar onreadystatechange(1):`, e);
|
|
161
|
+
}
|
|
148
162
|
}
|
|
149
163
|
}, 0);
|
|
150
164
|
setTimeout(() => {
|
|
151
165
|
setReadyState(2);
|
|
152
166
|
if (xhr.onreadystatechange) {
|
|
153
167
|
try {
|
|
168
|
+
self.logger.debug(`📞 [XMLHttpRequestInterceptor] Chamando onreadystatechange para readyState=2`);
|
|
154
169
|
xhr.onreadystatechange();
|
|
155
170
|
}
|
|
156
|
-
catch (e) {
|
|
171
|
+
catch (e) {
|
|
172
|
+
self.logger.debug(`❌ Erro ao chamar onreadystatechange(2):`, e);
|
|
173
|
+
}
|
|
157
174
|
}
|
|
158
175
|
}, 5);
|
|
159
176
|
setTimeout(() => {
|
|
160
177
|
setReadyState(3);
|
|
161
178
|
if (xhr.onreadystatechange) {
|
|
162
179
|
try {
|
|
180
|
+
self.logger.debug(`📞 [XMLHttpRequestInterceptor] Chamando onreadystatechange para readyState=3`);
|
|
163
181
|
xhr.onreadystatechange();
|
|
164
182
|
}
|
|
165
|
-
catch (e) {
|
|
183
|
+
catch (e) {
|
|
184
|
+
self.logger.debug(`❌ Erro ao chamar onreadystatechange(3):`, e);
|
|
185
|
+
}
|
|
166
186
|
}
|
|
167
187
|
}, 10);
|
|
168
188
|
// Final: readyState = 4 com propriedades já configuradas
|
|
@@ -170,16 +190,23 @@ class XMLHttpRequestInterceptor {
|
|
|
170
190
|
setReadyState(4);
|
|
171
191
|
if (xhr.onreadystatechange) {
|
|
172
192
|
try {
|
|
193
|
+
self.logger.debug(`📞 [XMLHttpRequestInterceptor] Chamando onreadystatechange para readyState=4`);
|
|
173
194
|
xhr.onreadystatechange();
|
|
174
195
|
}
|
|
175
|
-
catch (e) {
|
|
196
|
+
catch (e) {
|
|
197
|
+
self.logger.debug(`❌ Erro ao chamar onreadystatechange(4):`, e);
|
|
198
|
+
}
|
|
176
199
|
}
|
|
177
200
|
if (xhr.onload) {
|
|
178
201
|
try {
|
|
202
|
+
self.logger.debug(`📞 [XMLHttpRequestInterceptor] Chamando onload`);
|
|
179
203
|
xhr.onload();
|
|
180
204
|
}
|
|
181
|
-
catch (e) {
|
|
205
|
+
catch (e) {
|
|
206
|
+
self.logger.debug(`❌ Erro ao chamar onload:`, e);
|
|
207
|
+
}
|
|
182
208
|
}
|
|
209
|
+
self.logger.debug(`✅ [XMLHttpRequestInterceptor] Simulação de resposta COMPLETA`);
|
|
183
210
|
}, 15);
|
|
184
211
|
}, delay);
|
|
185
212
|
});
|