@@ -43,6 +43,7 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
43
43
44
44
final Ref ref;
45
45
late final JavascriptRuntime _runtime;
46
+ String ? _currentRequestId;
46
47
47
48
void _initialize () {
48
49
if (state.initialized) return ;
@@ -90,6 +91,7 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
90
91
})> executePreRequestScript ({
91
92
required RequestModel currentRequestModel,
92
93
required Map <String , dynamic > activeEnvironment,
94
+ required String requestId,
93
95
}) async {
94
96
if ((currentRequestModel.preRequestScript ?? '' ).trim ().isEmpty) {
95
97
return (
@@ -119,6 +121,7 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
119
121
HttpRequestModel resultingRequest = httpRequest! ;
120
122
Map <String , dynamic > resultingEnvironment = Map .from (activeEnvironment);
121
123
try {
124
+ _currentRequestId = requestId;
122
125
final term = ref.read (terminalStateProvider.notifier);
123
126
final res = _runtime.evaluate (fullScript);
124
127
state = state.copyWith (
@@ -128,7 +131,9 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
128
131
if (res.isError) {
129
132
term.logJs (
130
133
level: 'error' ,
131
- args: ['Pre-request script error' , res.stringResult]);
134
+ args: ['Pre-request script error' , res.stringResult],
135
+ context: 'preRequest' ,
136
+ contextRequestId: requestId);
132
137
} else if (res.stringResult.isNotEmpty) {
133
138
final decoded = jsonDecode (res.stringResult);
134
139
if (decoded is Map <String , dynamic >) {
@@ -140,7 +145,9 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
140
145
} catch (e) {
141
146
term.logJs (
142
147
level: 'error' ,
143
- args: ['Deserialize modified request failed' , e.toString ()]);
148
+ args: ['Deserialize modified request failed' , e.toString ()],
149
+ context: 'preRequest' ,
150
+ contextRequestId: requestId);
144
151
}
145
152
}
146
153
if (decoded['environment' ] is Map ) {
@@ -152,9 +159,13 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
152
159
} catch (e) {
153
160
final msg = 'Dart-level error during pre-request script execution: $e ' ;
154
161
state = state.copyWith (lastError: msg);
155
- ref
156
- .read (terminalStateProvider.notifier)
157
- .logJs (level: 'error' , args: [msg]);
162
+ ref.read (terminalStateProvider.notifier).logJs (
163
+ level: 'error' ,
164
+ args: [msg],
165
+ context: 'preRequest' ,
166
+ contextRequestId: requestId);
167
+ } finally {
168
+ _currentRequestId = null ;
158
169
}
159
170
return (
160
171
updatedRequest: resultingRequest,
@@ -169,6 +180,7 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
169
180
})> executePostResponseScript ({
170
181
required RequestModel currentRequestModel,
171
182
required Map <String , dynamic > activeEnvironment,
183
+ required String requestId,
172
184
}) async {
173
185
if ((currentRequestModel.postRequestScript ?? '' ).trim ().isEmpty) {
174
186
return (
@@ -200,6 +212,7 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
200
212
HttpResponseModel resultingResponse = httpResponse! ;
201
213
Map <String , dynamic > resultingEnvironment = Map .from (activeEnvironment);
202
214
try {
215
+ _currentRequestId = requestId;
203
216
final term = ref.read (terminalStateProvider.notifier);
204
217
final res = _runtime.evaluate (fullScript);
205
218
state = state.copyWith (
@@ -209,7 +222,9 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
209
222
if (res.isError) {
210
223
term.logJs (
211
224
level: 'error' ,
212
- args: ['Post-response script error' , res.stringResult]);
225
+ args: ['Post-response script error' , res.stringResult],
226
+ context: 'postResponse' ,
227
+ contextRequestId: requestId);
213
228
} else if (res.stringResult.isNotEmpty) {
214
229
final decoded = jsonDecode (res.stringResult);
215
230
if (decoded is Map <String , dynamic >) {
@@ -221,7 +236,9 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
221
236
} catch (e) {
222
237
term.logJs (
223
238
level: 'error' ,
224
- args: ['Deserialize modified response failed' , e.toString ()]);
239
+ args: ['Deserialize modified response failed' , e.toString ()],
240
+ context: 'postResponse' ,
241
+ contextRequestId: requestId);
225
242
}
226
243
}
227
244
if (decoded['environment' ] is Map ) {
@@ -233,18 +250,20 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
233
250
} catch (e) {
234
251
final msg = 'Dart-level error during post-response script execution: $e ' ;
235
252
state = state.copyWith (lastError: msg);
236
- ref
237
- .read (terminalStateProvider.notifier)
238
- .logJs (level: 'error' , args: [msg]);
253
+ ref.read (terminalStateProvider.notifier).logJs (
254
+ level: 'error' ,
255
+ args: [msg],
256
+ context: 'postResponse' ,
257
+ contextRequestId: requestId);
258
+ } finally {
259
+ _currentRequestId = null ;
239
260
}
240
261
return (
241
262
updatedResponse: resultingResponse,
242
263
updatedEnvironment: resultingEnvironment,
243
264
);
244
265
}
245
266
246
- // High-level helpers (migrated from pre_post_script_utils) -----------------
247
-
248
267
Future <RequestModel > handlePreRequestScript (
249
268
RequestModel requestModel,
250
269
EnvironmentModel ? originalEnvironmentModel,
@@ -253,6 +272,7 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
253
272
final scriptResult = await executePreRequestScript (
254
273
currentRequestModel: requestModel,
255
274
activeEnvironment: originalEnvironmentModel? .toJson () ?? {},
275
+ requestId: requestModel.id,
256
276
);
257
277
final newRequestModel =
258
278
requestModel.copyWith (httpRequestModel: scriptResult.updatedRequest);
@@ -304,6 +324,7 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
304
324
final scriptResult = await executePostResponseScript (
305
325
currentRequestModel: requestModel,
306
326
activeEnvironment: originalEnvironmentModel? .toJson () ?? {'values' : []},
327
+ requestId: requestModel.id,
307
328
);
308
329
final newRequestModel =
309
330
requestModel.copyWith (httpResponseModel: scriptResult.updatedResponse);
@@ -374,7 +395,8 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
374
395
} else {
375
396
argList = [args.toString ()];
376
397
}
377
- term.logJs (level: level, args: argList);
398
+ term.logJs (
399
+ level: level, args: argList, contextRequestId: _currentRequestId);
378
400
} catch (e) {
379
401
print ('[JS ${level .toUpperCase ()} HANDLER ERROR]: $args , Error: $e ' );
380
402
}
@@ -391,9 +413,15 @@ class JsRuntimeNotifier extends StateNotifier<JsRuntimeState> {
391
413
level: 'fatal' ,
392
414
args: [if (error != null ) error, message],
393
415
stack: stack,
416
+ context: 'global' ,
417
+ contextRequestId: _currentRequestId,
394
418
);
395
419
} else {
396
- term.logJs (level: 'fatal' , args: ['Malformed fatal payload' , '$args ' ]);
420
+ term.logJs (
421
+ level: 'fatal' ,
422
+ args: ['Malformed fatal payload' , '$args ' ],
423
+ context: 'global' ,
424
+ contextRequestId: _currentRequestId);
397
425
}
398
426
} catch (e) {
399
427
print ('[JS FATAL ERROR decoding error]: $args , Error: $e ' );
0 commit comments