automation_model 1.0.511-dev → 1.0.511

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 (79) hide show
  1. package/README.md +133 -0
  2. package/lib/analyze_helper.js.map +1 -1
  3. package/lib/api.d.ts +2 -2
  4. package/lib/api.js +162 -121
  5. package/lib/api.js.map +1 -1
  6. package/lib/auto_page.d.ts +7 -2
  7. package/lib/auto_page.js +308 -20
  8. package/lib/auto_page.js.map +1 -1
  9. package/lib/browser_manager.d.ts +4 -2
  10. package/lib/browser_manager.js +229 -58
  11. package/lib/browser_manager.js.map +1 -1
  12. package/lib/bruno.d.ts +2 -0
  13. package/lib/bruno.js +381 -0
  14. package/lib/bruno.js.map +1 -0
  15. package/lib/check_performance.d.ts +1 -0
  16. package/lib/check_performance.js +57 -0
  17. package/lib/check_performance.js.map +1 -0
  18. package/lib/command_common.d.ts +5 -4
  19. package/lib/command_common.js +104 -20
  20. package/lib/command_common.js.map +1 -1
  21. package/lib/constants.d.ts +4 -0
  22. package/lib/constants.js +2 -0
  23. package/lib/constants.js.map +1 -0
  24. package/lib/date_time.js.map +1 -1
  25. package/lib/drawRect.js.map +1 -1
  26. package/lib/environment.d.ts +1 -0
  27. package/lib/environment.js +1 -0
  28. package/lib/environment.js.map +1 -1
  29. package/lib/error-messages.js +26 -2
  30. package/lib/error-messages.js.map +1 -1
  31. package/lib/file_checker.d.ts +1 -0
  32. package/lib/file_checker.js +172 -0
  33. package/lib/file_checker.js.map +1 -0
  34. package/lib/find_function.js.map +1 -1
  35. package/lib/generation_scripts.d.ts +4 -0
  36. package/lib/generation_scripts.js +2 -0
  37. package/lib/generation_scripts.js.map +1 -0
  38. package/lib/index.d.ts +3 -0
  39. package/lib/index.js +4 -0
  40. package/lib/index.js.map +1 -1
  41. package/lib/init_browser.d.ts +4 -3
  42. package/lib/init_browser.js +173 -98
  43. package/lib/init_browser.js.map +1 -1
  44. package/lib/locate_element.js +16 -14
  45. package/lib/locate_element.js.map +1 -1
  46. package/lib/locator.d.ts +37 -0
  47. package/lib/locator.js +172 -0
  48. package/lib/locator.js.map +1 -1
  49. package/lib/locator_log.d.ts +26 -0
  50. package/lib/locator_log.js +69 -0
  51. package/lib/locator_log.js.map +1 -0
  52. package/lib/network.d.ts +3 -1
  53. package/lib/network.js +418 -68
  54. package/lib/network.js.map +1 -1
  55. package/lib/route.d.ts +83 -0
  56. package/lib/route.js +695 -0
  57. package/lib/route.js.map +1 -0
  58. package/lib/scripts/axe.mini.js +23989 -0
  59. package/lib/snapshot_validation.d.ts +37 -0
  60. package/lib/snapshot_validation.js +360 -0
  61. package/lib/snapshot_validation.js.map +1 -0
  62. package/lib/stable_browser.d.ts +141 -41
  63. package/lib/stable_browser.js +2444 -666
  64. package/lib/stable_browser.js.map +1 -1
  65. package/lib/table.d.ts +15 -0
  66. package/lib/table.js +257 -0
  67. package/lib/table.js.map +1 -0
  68. package/lib/table_analyze.js.map +1 -1
  69. package/lib/table_helper.d.ts +19 -0
  70. package/lib/table_helper.js +130 -0
  71. package/lib/table_helper.js.map +1 -0
  72. package/lib/test_context.d.ts +6 -0
  73. package/lib/test_context.js +5 -0
  74. package/lib/test_context.js.map +1 -1
  75. package/lib/utils.d.ts +38 -3
  76. package/lib/utils.js +777 -35
  77. package/lib/utils.js.map +1 -1
  78. package/package.json +32 -13
  79. package/lib/axe/axe.mini.js +0 -12
package/lib/network.js CHANGED
@@ -1,12 +1,69 @@
1
1
  import path from "path";
2
2
  import fs from "fs";
3
- function _getNetworkFile(world = null, stable = null, context = null) {
3
+ import { _stepNameToTemplate } from "./route.js";
4
+ import crypto from "crypto";
5
+ import { tmpdir } from "os";
6
+ import createDebug from "debug";
7
+ const debug = createDebug("automation_model:network");
8
+ class SaveQueue {
9
+ queue = [];
10
+ isProcessing = false;
11
+ maxRetries = 3;
12
+ async enqueueSave(current) {
13
+ this.queue.push({ current, retryCount: 0 });
14
+ if (!this.isProcessing) {
15
+ await this.processQueue();
16
+ }
17
+ }
18
+ async processQueue() {
19
+ this.isProcessing = true;
20
+ while (this.queue.length > 0) {
21
+ const item = this.queue.shift();
22
+ try {
23
+ await this.saveSafely(item.current);
24
+ }
25
+ catch (error) {
26
+ console.error(`Save failed for ${item.current ? "current" : "previous"} step:`, error);
27
+ // Retry logic
28
+ if (item.retryCount < this.maxRetries) {
29
+ item.retryCount++;
30
+ this.queue.unshift(item); // Put it back at the front
31
+ await new Promise((resolve) => setTimeout(resolve, 100 * item.retryCount)); // Exponential backoff
32
+ }
33
+ }
34
+ }
35
+ this.isProcessing = false;
36
+ }
37
+ async saveSafely(current) {
38
+ const stepHash = current ? executionState.currentStepHash : executionState.previousStepHash;
39
+ if (!stepHash)
40
+ return;
41
+ const file = path.join(detailedNetworkFolder, `${stepHash}.json`);
42
+ const entries = current
43
+ ? Array.from(executionState.liveRequestsMap.values())
44
+ : Array.from(executionState.liveRequestsMapPrevious.values());
45
+ // Ensure all entries are JSON-serializable
46
+ const validEntries = entries.filter((entry) => {
47
+ try {
48
+ JSON.stringify(entry);
49
+ return true;
50
+ }
51
+ catch {
52
+ console.warn(`Skipping non-serializable entry: ${entry.requestId}`);
53
+ return false;
54
+ }
55
+ });
56
+ const jsonString = JSON.stringify(validEntries, null, 2);
57
+ await fs.promises.writeFile(file, jsonString, "utf8");
58
+ }
59
+ }
60
+ function _getNetworkFile(world = null, web = null, context = null) {
4
61
  let networkFile = null;
5
62
  if (world && world.reportFolder) {
6
63
  networkFile = path.join(world.reportFolder, "network.json");
7
64
  }
8
- else if (stable.reportFolder) {
9
- networkFile = path.join(stable.reportFolder, "network.json");
65
+ else if (web.reportFolder) {
66
+ networkFile = path.join(web.reportFolder, "network.json");
10
67
  }
11
68
  else if (context && context.reportFolder) {
12
69
  networkFile = path.join(context.reportFolder, "network.json");
@@ -26,7 +83,12 @@ function registerDownloadEvent(page, world, context) {
26
83
  downloadPath = context.downloadsPath;
27
84
  }
28
85
  if (!fs.existsSync(downloadPath)) {
29
- fs.mkdirSync(downloadPath);
86
+ try {
87
+ fs.mkdirSync(downloadPath);
88
+ }
89
+ catch (e) {
90
+ // ignore
91
+ }
30
92
  }
31
93
  page.on("download", async (download) => {
32
94
  const suggestedFilename = download.suggestedFilename(); // Get the original file name
@@ -37,18 +99,23 @@ function registerDownloadEvent(page, world, context) {
37
99
  });
38
100
  }
39
101
  }
40
- function registerNetworkEvents(world, stable, context, page) {
41
- const networkFile = _getNetworkFile(world, stable, context);
102
+ function registerNetworkEvents(world, web, context, page) {
103
+ // Map to hold request start times and IDs
104
+ const networkFile = _getNetworkFile(world, web, context);
42
105
  function saveNetworkData() {
43
106
  if (context && context.networkData) {
44
- fs.writeFileSync(networkFile, JSON.stringify(context.networkData, null, 2), "utf8");
107
+ try {
108
+ fs.writeFileSync(networkFile, JSON.stringify(context.networkData, null, 2), "utf8");
109
+ }
110
+ catch (error) {
111
+ console.error("Error saving network data:", error);
112
+ }
45
113
  }
46
114
  }
47
115
  if (!context) {
48
116
  console.error("No context found to register network events");
49
117
  return;
50
118
  }
51
- // Map to hold request start times and IDs
52
119
  const requestTimes = new Map();
53
120
  let requestIdCounter = 0;
54
121
  if (page) {
@@ -57,81 +124,144 @@ function registerNetworkEvents(world, stable, context, page) {
57
124
  const networkData = context.networkData;
58
125
  // Event listener for when a request is made
59
126
  page.on("request", (request) => {
60
- const requestId = requestIdCounter++;
61
- request.requestId = requestId; // Assign a unique ID to the request
62
- const startTime = Date.now();
63
- requestTimes.set(requestId, startTime);
64
- // Initialize data for this request
65
- networkData.push({
66
- requestId,
67
- requestStart: startTime,
68
- requestUrl: request.url(),
69
- method: request.method(),
70
- status: "Pending",
71
- responseTime: null,
72
- responseReceived: null,
73
- responseEnd: null,
74
- size: null,
75
- });
76
- saveNetworkData();
127
+ try {
128
+ // console.log("Request started:", request.url());
129
+ const requestId = requestIdCounter++;
130
+ request.requestId = requestId; // Assign a unique ID to the request
131
+ handleRequest(request, context);
132
+ const startTime = Date.now();
133
+ requestTimes.set(requestId, startTime);
134
+ // Initialize data for this request
135
+ networkData.push({
136
+ requestId,
137
+ requestStart: startTime,
138
+ requestUrl: request.url(),
139
+ method: request.method(),
140
+ status: "Pending",
141
+ responseTime: null,
142
+ responseReceived: null,
143
+ responseEnd: null,
144
+ size: null,
145
+ });
146
+ saveNetworkData();
147
+ }
148
+ catch (error) {
149
+ // console.error("Error handling request:", error);
150
+ }
77
151
  });
78
152
  // Event listener for when a response is received
79
153
  page.on("response", async (response) => {
80
- const request = response.request();
81
- const requestId = request.requestId;
82
- const receivedTime = Date.now();
83
- // Find the corresponding data object
84
- const data = networkData.find((item) => item.requestId === requestId);
85
- if (data) {
86
- data.status = response.status();
87
- data.responseReceived = receivedTime;
88
- saveNetworkData();
154
+ try {
155
+ const request = response.request();
156
+ const requestId = request.requestId;
157
+ const receivedTime = Date.now();
158
+ // await handleRequestFinishedOrFailed(request, false);
159
+ // Find the corresponding data object
160
+ const data = networkData.find((item) => item.requestId === requestId);
161
+ if (data) {
162
+ data.status = response.status();
163
+ data.responseReceived = receivedTime;
164
+ saveNetworkData();
165
+ }
166
+ else {
167
+ // console.error("No data found for request ID", requestId);
168
+ }
89
169
  }
90
- else {
91
- console.error("No data found for request ID", requestId);
170
+ catch (error) {
171
+ // console.error("Error handling response:", error);
92
172
  }
93
173
  });
94
174
  // Event listener for when a request is finished
95
175
  page.on("requestfinished", async (request) => {
96
- const requestId = request.requestId;
97
- const endTime = Date.now();
98
- const startTime = requestTimes.get(requestId);
99
- const response = await request.response();
100
- // Find the corresponding data object
101
- const data = networkData.find((item) => item.requestId === requestId);
102
- if (data) {
103
- data.responseEnd = endTime;
104
- data.responseTime = endTime - startTime;
105
- // Get response size
106
- try {
107
- const body = await response.body();
108
- data.size = body.length;
176
+ try {
177
+ const requestId = request.requestId;
178
+ const endTime = Date.now();
179
+ const startTime = requestTimes.get(requestId);
180
+ await handleRequestFinishedOrFailed(request, false, context);
181
+ const response = await request.response();
182
+ const timing = request.timing();
183
+ // Find the corresponding data object
184
+ const data = networkData.find((item) => item.requestId === requestId);
185
+ if (data) {
186
+ data.responseEnd = endTime;
187
+ data.responseTime = endTime - startTime;
188
+ // Get response size
189
+ try {
190
+ let size = 0;
191
+ if (responseHasBody(response)) {
192
+ const buf = await response.body();
193
+ size = buf?.length ?? 0;
194
+ }
195
+ data.size = size;
196
+ }
197
+ catch {
198
+ data.size = 0;
199
+ }
200
+ const type = request.resourceType();
201
+ /*
202
+ domainLookupStart: 80.655,
203
+ domainLookupEnd: 80.668,
204
+ connectStart: 80.668,
205
+ secureConnectionStart: 106.688,
206
+ connectEnd: 129.69,
207
+ requestStart: 129.81,
208
+ responseStart: 187.006,
209
+ responseEnd: 188.209
210
+ */
211
+ data.type = type;
212
+ data.domainLookupStart = timing.domainLookupStart;
213
+ data.domainLookupEnd = timing.domainLookupEnd;
214
+ data.connectStart = timing.connectStart;
215
+ data.secureConnectionStart = timing.secureConnectionStart;
216
+ data.connectEnd = timing.connectEnd;
217
+ data.requestStart = timing.requestStart;
218
+ data.responseStart = timing.responseStart;
219
+ data.responseEnd = timing.responseEnd;
220
+ saveNetworkData();
221
+ if (world && world.attach) {
222
+ world.attach(JSON.stringify(data), { mediaType: "application/json+network" });
223
+ }
109
224
  }
110
- catch (e) {
111
- data.size = 0;
225
+ else {
226
+ // console.error("No data found for request ID", requestId);
112
227
  }
113
- saveNetworkData();
114
228
  }
115
- else {
116
- console.error("No data found for request ID", requestId);
229
+ catch (error) {
230
+ // console.error("Error handling request finished:", error);
117
231
  }
118
232
  });
119
233
  // Event listener for when a request fails
120
- page.on("requestfailed", (request) => {
121
- const requestId = request.requestId;
122
- const endTime = Date.now();
123
- const startTime = requestTimes.get(requestId);
124
- // Find the corresponding data object
125
- const data = networkData.find((item) => item.requestId === requestId);
126
- if (data) {
127
- data.responseEnd = endTime;
128
- data.responseTime = endTime - startTime;
129
- data.status = "Failed";
130
- data.size = 0;
131
- saveNetworkData();
234
+ page.on("requestfailed", async (request) => {
235
+ try {
236
+ const requestId = request.requestId;
237
+ const endTime = Date.now();
238
+ const startTime = requestTimes.get(requestId);
239
+ await handleRequestFinishedOrFailed(request, true, context);
240
+ try {
241
+ const res = await request.response();
242
+ const statusCode = res ? res.status() : request.failure().errorText;
243
+ // Find the corresponding data object
244
+ const data = networkData.find((item) => item.requestId === requestId);
245
+ if (data) {
246
+ data.responseEnd = endTime;
247
+ data.responseTime = endTime - startTime;
248
+ data.status = statusCode;
249
+ data.size = 0;
250
+ saveNetworkData();
251
+ if (world && world.attach) {
252
+ world.attach(JSON.stringify(data), { mediaType: "application/json+network" });
253
+ }
254
+ }
255
+ else {
256
+ // console.error("No data found for request ID", requestId);
257
+ }
258
+ }
259
+ catch (error) {
260
+ // ignore
261
+ }
132
262
  }
133
- else {
134
- console.error("No data found for request ID", requestId);
263
+ catch (error) {
264
+ // console.error("Error handling request failed:", error);
135
265
  }
136
266
  });
137
267
  }
@@ -140,5 +270,225 @@ function registerNetworkEvents(world, stable, context, page) {
140
270
  console.error("No page found to register network events");
141
271
  }
142
272
  }
273
+ async function appendEntryToStepFile(stepHash, entry) {
274
+ if (!stepHash)
275
+ return;
276
+ const debug = createDebug("network:appendEntryToStepFile");
277
+ const file = path.join(detailedNetworkFolder, `${stepHash}.json`);
278
+ debug("appending to step file:", file);
279
+ let data = [];
280
+ try {
281
+ /* read if it already exists */
282
+ const txt = await fs.promises.readFile(file, "utf8");
283
+ data = JSON.parse(txt);
284
+ }
285
+ catch {
286
+ /* ignore – file does not exist or cannot be parsed */
287
+ }
288
+ data.push(entry);
289
+ try {
290
+ debug("writing to step file:", file);
291
+ await fs.promises.writeFile(file, JSON.stringify(data, null, 2), "utf8");
292
+ }
293
+ catch (error) {
294
+ debug("Error writing to step file:", error);
295
+ }
296
+ }
297
+ const detailedNetworkFolder = path.join(tmpdir(), "blinq_network_events");
298
+ let outOfStep = true;
299
+ let timeoutId = null;
300
+ const executionState = {
301
+ currentStepHash: null,
302
+ previousStepHash: null,
303
+ liveRequestsMap: new Map(),
304
+ liveRequestsMapPrevious: new Map(),
305
+ };
306
+ const storeDetailedNetworkData = (context) => context && context.STORE_DETAILED_NETWORK_DATA === true;
307
+ export function networkBeforeStep(stepName, context) {
308
+ if (timeoutId) {
309
+ clearTimeout(timeoutId);
310
+ timeoutId = null;
311
+ }
312
+ outOfStep = false;
313
+ if (!storeDetailedNetworkData(context)) {
314
+ return;
315
+ }
316
+ // check if the folder exists, if not create it
317
+ if (!fs.existsSync(detailedNetworkFolder)) {
318
+ fs.mkdirSync(detailedNetworkFolder, { recursive: true });
319
+ }
320
+ // const stepHash = stepNameToHash(stepName);
321
+ let stepHash = "";
322
+ executionState.liveRequestsMapPrevious = executionState.liveRequestsMap;
323
+ executionState.liveRequestsMap = new Map();
324
+ stepHash = stepNameToHash(stepName);
325
+ executionState.previousStepHash = executionState.currentStepHash; // ➊ NEW
326
+ executionState.currentStepHash = stepHash;
327
+ // check if the file exists, if exists delete it
328
+ const networkFile = path.join(detailedNetworkFolder, `${stepHash}.json`);
329
+ try {
330
+ fs.rmSync(path.join(networkFile), { force: true });
331
+ }
332
+ catch (err) {
333
+ // Ignore error if file does not exist
334
+ }
335
+ }
336
+ const saveQueue = new SaveQueue();
337
+ async function saveMap(current) {
338
+ await saveQueue.enqueueSave(current);
339
+ }
340
+ export async function networkAfterStep(stepName, context) {
341
+ if (!storeDetailedNetworkData(context)) {
342
+ return;
343
+ }
344
+ //await new Promise((r) => setTimeout(r, 1000));
345
+ await saveMap(true);
346
+ /* reset for next step */
347
+ //executionState.previousStepHash = executionState.currentStepHash; // ➋ NEW
348
+ //executionState.liveRequestsMap.clear();
349
+ outOfStep = true;
350
+ // set a timer of 60 seconds to the outOfStep, after that it will be set to false so no network collection will happen
351
+ timeoutId = setTimeout(() => {
352
+ outOfStep = false;
353
+ context.STORE_DETAILED_NETWORK_DATA = false;
354
+ }, 60000);
355
+ }
356
+ function stepNameToHash(stepName) {
357
+ const templateName = _stepNameToTemplate(stepName);
358
+ // create hash from the template name
359
+ return crypto.createHash("sha256").update(templateName).digest("hex");
360
+ }
361
+ function handleRequest(request, context) {
362
+ const debug = createDebug("automation_model:network:handleRequest");
363
+ if (!storeDetailedNetworkData(context))
364
+ return;
365
+ const entry = {
366
+ requestId: request.requestId,
367
+ url: request.url(),
368
+ method: request.method(),
369
+ headers: request.headers(),
370
+ postData: request.postData(),
371
+ requestTimestamp: Date.now(),
372
+ stepHash: executionState.currentStepHash,
373
+ };
374
+ executionState.liveRequestsMap.set(request, entry);
375
+ debug("Request to", request.url(), "with", request.requestId, "added to current step map at", Date.now());
376
+ }
377
+ async function handleRequestFinishedOrFailed(request, failed, context) {
378
+ const debug = createDebug("automation_model:network:handleRequestFinishedOrFailed");
379
+ if (!storeDetailedNetworkData(context))
380
+ return;
381
+ const requestId = request.requestId;
382
+ debug("Request id in handleRequestFinishedOrFailed:", requestId, "at", Date.now());
383
+ // const response = await request.response(); // This may be null if the request failed
384
+ let entry = executionState.liveRequestsMap.get(request);
385
+ debug("Request entry found in current map:", entry?.requestId || false);
386
+ if (!entry) {
387
+ // check if the request is in the previous step's map
388
+ entry = executionState.liveRequestsMapPrevious.get(request);
389
+ debug("Request entry found in previous map:", entry?.requestId || false);
390
+ if (!entry) {
391
+ debug("No entry, creating fallback! for url:", request.url());
392
+ entry = {
393
+ requestId: request.requestId,
394
+ url: request.url(),
395
+ method: request.method?.() ?? "GET",
396
+ headers: request.headers?.() ?? {},
397
+ postData: request.postData?.() ?? undefined,
398
+ stepHash: executionState.previousStepHash ?? "unknown",
399
+ requestTimestamp: Date.now(),
400
+ };
401
+ }
402
+ }
403
+ // Remove the request from the live requests map
404
+ let respData;
405
+ // executionState.liveRequestsMap.delete(request);
406
+ if (failed) {
407
+ // Handle failed request
408
+ respData = {
409
+ status: null,
410
+ headers: {},
411
+ url: request.url(),
412
+ timestamp: Date.now(),
413
+ body: null,
414
+ contentType: null,
415
+ error: "Request failed",
416
+ };
417
+ }
418
+ else {
419
+ const response = await request.response();
420
+ const headers = response?.headers?.() || {};
421
+ let contentType = headers["content-type"] || null;
422
+ let body = null;
423
+ try {
424
+ if (responseHasBody(response)) {
425
+ if (contentType && contentType.includes("application/json")) {
426
+ body = JSON.parse(await response.text());
427
+ }
428
+ else if ((contentType && contentType.includes("text")) ||
429
+ (contentType && contentType.includes("application/csv"))) {
430
+ body = await response.text();
431
+ if (contentType.includes("application/csv"))
432
+ contentType = "text/csv";
433
+ }
434
+ else {
435
+ // If you want binary, you could read it here—but only when responseHasBody(response) is true
436
+ // const buffer = await response.body();
437
+ // body = buffer.toString("base64");
438
+ }
439
+ }
440
+ else {
441
+ // For redirects / no-body statuses, it's useful to keep redirect info
442
+ // e.g., include Location header if present
443
+ // body stays null
444
+ }
445
+ }
446
+ catch (err) {
447
+ console.error("Error reading response body:", err);
448
+ body = await response.text();
449
+ }
450
+ respData = {
451
+ status: response.status(),
452
+ headers,
453
+ url: response.url(),
454
+ timestamp: Date.now(),
455
+ body,
456
+ contentType,
457
+ };
458
+ }
459
+ if (executionState.liveRequestsMap.has(request)) {
460
+ /* “normal” path – keep it in the buffer */
461
+ entry.response = respData;
462
+ if (outOfStep && executionState.currentStepHash) {
463
+ await saveMap(true);
464
+ }
465
+ }
466
+ else {
467
+ if (executionState.liveRequestsMapPrevious.has(request)) {
468
+ entry.response = respData;
469
+ await saveMap(false);
470
+ }
471
+ else {
472
+ /* orphan response – append directly to the previous step file */
473
+ entry.response = respData;
474
+ await appendEntryToStepFile(entry.stepHash, entry); // ➍ NEW
475
+ }
476
+ }
477
+ entry.response = respData;
478
+ return;
479
+ }
480
+ function responseHasBody(response) {
481
+ if (!response)
482
+ return false;
483
+ const s = response.status?.() ?? 0;
484
+ // RFC 7231: 1xx, 204, 205, 304 have no body. Playwright: 3xx (redirect) body is unavailable.
485
+ if ((s >= 100 && s < 200) || s === 204 || s === 205 || s === 304 || (s >= 300 && s < 400))
486
+ return false;
487
+ // HEAD responses have no body by definition
488
+ const method = response.request?.().method?.() ?? "GET";
489
+ if (method === "HEAD")
490
+ return false;
491
+ return true;
492
+ }
143
493
  export { registerNetworkEvents, registerDownloadEvent };
144
494
  //# sourceMappingURL=network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"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"}