From b7ae4ffa37c3f2608d488957dc2cf777bae5e6e9 Mon Sep 17 00:00:00 2001 From: Jason Cheatham Date: Tue, 7 Nov 2017 22:30:06 -0500 Subject: [PATCH] Ensure `emit` notifies listeners serially The intention has always been for listeners to be notified serially. However, the initial implementation didn't wait for each listener to finish before going to the next. --- docs/api.json | 626 +++++++++++++-------------- src/lib/executors/Executor.ts | 34 +- tests/unit/lib/executors/Executor.ts | 101 +++-- tests/unit/lib/executors/Node.ts | 75 ++-- 4 files changed, 437 insertions(+), 399 deletions(-) diff --git a/docs/api.json b/docs/api.json index f5dd6601a..7261253a0 100644 --- a/docs/api.json +++ b/docs/api.json @@ -24229,7 +24229,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1330, + "line": 1340, "character": 5 } ], @@ -24258,7 +24258,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1338, + "line": 1348, "character": 9 } ], @@ -24284,7 +24284,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1332, + "line": 1342, "character": 9 } ], @@ -24313,7 +24313,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1345, + "line": 1355, "character": 10 } ], @@ -24340,7 +24340,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1347, + "line": 1357, "character": 16 } ], @@ -24367,7 +24367,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1349, + "line": 1359, "character": 8 } ], @@ -24397,7 +24397,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1354, + "line": 1364, "character": 17 } ], @@ -24426,7 +24426,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1361, + "line": 1371, "character": 6 } ], @@ -24455,7 +24455,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1369, + "line": 1379, "character": 15 } ], @@ -24484,7 +24484,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1372, + "line": 1382, "character": 12 } ], @@ -24513,7 +24513,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1378, + "line": 1388, "character": 17 } ], @@ -24542,7 +24542,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1386, + "line": 1396, "character": 5 } ], @@ -24571,7 +24571,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1391, + "line": 1401, "character": 11 } ], @@ -24601,7 +24601,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1266, + "line": 1276, "character": 7 } ], @@ -24631,7 +24631,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1394, + "line": 1404, "character": 5 } ], @@ -24657,7 +24657,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1396, + "line": 1406, "character": 5 } ], @@ -24687,7 +24687,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1293, + "line": 1303, "character": 8 } ], @@ -24721,7 +24721,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1288, + "line": 1298, "character": 10 } ], @@ -24751,7 +24751,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1314, + "line": 1324, "character": 8 } ], @@ -24777,7 +24777,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1315, + "line": 1325, "character": 9 } ], @@ -24804,7 +24804,7 @@ "sources": [ { "fileName": "lib/RemoteSuite.ts", - "line": 317, + "line": 318, "character": 10 } ], @@ -24838,7 +24838,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1316, + "line": 1326, "character": 8 } ], @@ -24864,7 +24864,7 @@ "sources": [ { "fileName": "lib/RemoteSuite.ts", - "line": 315, + "line": 316, "character": 10 } ], @@ -24885,7 +24885,7 @@ "sources": [ { "fileName": "lib/RemoteSuite.ts", - "line": 316, + "line": 317, "character": 10 } ], @@ -24914,7 +24914,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1405, + "line": 1415, "character": 11 } ], @@ -24941,7 +24941,7 @@ "sources": [ { "fileName": "lib/RemoteSuite.ts", - "line": 318, + "line": 319, "character": 11 } ], @@ -24975,7 +24975,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1311, + "line": 1321, "character": 7 } ], @@ -25031,7 +25031,7 @@ "sources": [ { "fileName": "lib/RemoteSuite.ts", - "line": 314, + "line": 315, "character": 29 } ], @@ -25065,7 +25065,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1459, + "line": 1469, "character": 4 } ], @@ -25095,7 +25095,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1462, + "line": 1472, "character": 9 } ], @@ -25124,7 +25124,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1465, + "line": 1475, "character": 10 } ], @@ -25153,7 +25153,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1468, + "line": 1478, "character": 9 } ], @@ -25183,7 +25183,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1471, + "line": 1481, "character": 11 } ], @@ -25213,7 +25213,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1474, + "line": 1484, "character": 6 } ], @@ -25242,7 +25242,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1477, + "line": 1487, "character": 4 } ], @@ -25268,7 +25268,7 @@ "sources": [ { "fileName": "lib/RemoteSuite.ts", - "line": 311, + "line": 312, "character": 13 } ], @@ -25292,7 +25292,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1480, + "line": 1490, "character": 7 } ], @@ -25321,7 +25321,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1483, + "line": 1493, "character": 9 } ], @@ -25410,7 +25410,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1486, + "line": 1496, "character": 9 } ], @@ -25440,7 +25440,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1489, + "line": 1499, "character": 9 } ], @@ -25470,7 +25470,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1492, + "line": 1502, "character": 11 } ], @@ -25500,7 +25500,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1495, + "line": 1505, "character": 8 } ], @@ -25530,7 +25530,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1498, + "line": 1508, "character": 8 } ], @@ -25560,7 +25560,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1501, + "line": 1511, "character": 10 } ], @@ -25710,7 +25710,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1504, + "line": 1514, "character": 8 } ], @@ -25759,7 +25759,7 @@ "sources": [ { "fileName": "lib/RemoteSuite.ts", - "line": 310, + "line": 311, "character": 29 } ], @@ -26693,7 +26693,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 307, + "line": 304, "character": 31 } ] @@ -26720,7 +26720,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 300, + "line": 297, "character": 9 } ], @@ -26741,7 +26741,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 301, + "line": 298, "character": 9 } ], @@ -26763,7 +26763,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 302, + "line": 299, "character": 5 } ], @@ -26784,7 +26784,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 303, + "line": 300, "character": 10 } ], @@ -26805,7 +26805,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 304, + "line": 301, "character": 11 } ], @@ -26831,7 +26831,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 299, + "line": 296, "character": 33 } ], @@ -26855,7 +26855,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 311, + "line": 308, "character": 25 } ], @@ -26895,7 +26895,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 311, + "line": 308, "character": 66 } ], @@ -26918,7 +26918,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 311, + "line": 308, "character": 55 } ] @@ -26938,7 +26938,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 313, + "line": 310, "character": 21 } ], @@ -27021,7 +27021,7 @@ "sources": [ { "fileName": "lib/Server.ts", - "line": 319, + "line": 316, "character": 22 } ] @@ -38930,7 +38930,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 741, + "line": 751, "character": 20 } ], @@ -39005,7 +39005,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 748, + "line": 758, "character": 24 } ], @@ -39059,7 +39059,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 763, + "line": 773, "character": 21 } ], @@ -39112,7 +39112,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 812, + "line": 822, "character": 27 } ], @@ -39196,7 +39196,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 823, + "line": 833, "character": 24 } ], @@ -39266,7 +39266,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 837, + "line": 847, "character": 24 } ], @@ -39319,7 +39319,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 776, + "line": 786, "character": 25 } ], @@ -39372,7 +39372,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 848, + "line": 858, "character": 22 } ], @@ -39425,7 +39425,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 904, + "line": 914, "character": 23 } ], @@ -39478,7 +39478,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 892, + "line": 902, "character": 33 } ], @@ -39586,7 +39586,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 918, + "line": 928, "character": 9 } ] @@ -39614,7 +39614,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 916, + "line": 926, "character": 23 } ], @@ -39667,7 +39667,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 952, + "line": 962, "character": 22 } ], @@ -39755,7 +39755,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 965, + "line": 975, "character": 25 } ], @@ -39858,7 +39858,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1227, + "line": 1237, "character": 20 } ], @@ -39962,7 +39962,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1171, + "line": 1181, "character": 21 } ], @@ -40598,27 +40598,27 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 309, + "line": 319, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 310, + "line": 320, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 311, + "line": 321, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 312, + "line": 322, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 313, + "line": 323, "character": 13 } ], @@ -40931,42 +40931,42 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 325, + "line": 335, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 326, + "line": 336, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 327, + "line": 337, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 328, + "line": 338, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 329, + "line": 339, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 330, + "line": 340, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 331, + "line": 341, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 332, + "line": 342, "character": 10 } ], @@ -41143,7 +41143,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 356, + "line": 366, "character": 4 } ], @@ -41298,7 +41298,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 43 } ], @@ -41319,7 +41319,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 29 } ], @@ -41342,7 +41342,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 23 } ] @@ -41371,17 +41371,17 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 415, + "line": 425, "character": 3 }, { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 3 }, { "fileName": "lib/executors/Executor.ts", - "line": 417, + "line": 427, "character": 3 } ], @@ -41461,7 +41461,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 453, + "line": 463, "character": 18 } ], @@ -41527,7 +41527,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 482, + "line": 492, "character": 15 } ], @@ -41694,17 +41694,17 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 525, + "line": 535, "character": 15 }, { "fileName": "lib/executors/Executor.ts", - "line": 530, + "line": 540, "character": 15 }, { "fileName": "lib/executors/Executor.ts", - "line": 531, + "line": 541, "character": 15 } ], @@ -41783,7 +41783,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 571, + "line": 581, "character": 17 } ], @@ -41836,7 +41836,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 581, + "line": 591, "character": 4 } ], @@ -43096,7 +43096,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 741, + "line": 751, "character": 20 } ] @@ -43161,7 +43161,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 748, + "line": 758, "character": 24 } ] @@ -43205,7 +43205,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 763, + "line": 773, "character": 21 } ] @@ -43248,7 +43248,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 812, + "line": 822, "character": 27 } ] @@ -43322,7 +43322,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 823, + "line": 833, "character": 24 } ] @@ -43386,7 +43386,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 837, + "line": 847, "character": 24 } ] @@ -43429,7 +43429,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 776, + "line": 786, "character": 25 } ] @@ -43472,7 +43472,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 848, + "line": 858, "character": 22 } ] @@ -43515,7 +43515,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 904, + "line": 914, "character": 23 } ] @@ -43558,7 +43558,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 892, + "line": 902, "character": 33 } ] @@ -43661,7 +43661,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 918, + "line": 928, "character": 9 } ] @@ -43684,7 +43684,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 916, + "line": 926, "character": 23 } ] @@ -43727,7 +43727,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 952, + "line": 962, "character": 22 } ] @@ -43805,7 +43805,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 965, + "line": 975, "character": 25 } ] @@ -43848,7 +43848,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1195, + "line": 1205, "character": 25 } ] @@ -43891,7 +43891,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1227, + "line": 1237, "character": 20 } ] @@ -43985,7 +43985,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1171, + "line": 1181, "character": 21 } ] @@ -44551,27 +44551,27 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 309, + "line": 319, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 310, + "line": 320, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 311, + "line": 321, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 312, + "line": 322, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 313, + "line": 323, "character": 13 } ] @@ -44844,42 +44844,42 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 325, + "line": 335, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 326, + "line": 336, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 327, + "line": 337, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 328, + "line": 338, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 329, + "line": 339, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 330, + "line": 340, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 331, + "line": 341, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 332, + "line": 342, "character": 10 } ] @@ -45022,7 +45022,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 356, + "line": 366, "character": 4 } ], @@ -45167,7 +45167,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 43 } ], @@ -45188,7 +45188,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 29 } ], @@ -45211,7 +45211,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 23 } ] @@ -45235,17 +45235,17 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 415, + "line": 425, "character": 3 }, { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 3 }, { "fileName": "lib/executors/Executor.ts", - "line": 417, + "line": 427, "character": 3 } ], @@ -45315,7 +45315,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 453, + "line": 463, "character": 18 } ] @@ -45371,7 +45371,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 482, + "line": 492, "character": 15 } ] @@ -45523,17 +45523,17 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 525, + "line": 535, "character": 15 }, { "fileName": "lib/executors/Executor.ts", - "line": 530, + "line": 540, "character": 15 }, { "fileName": "lib/executors/Executor.ts", - "line": 531, + "line": 541, "character": 15 } ] @@ -45602,7 +45602,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 571, + "line": 581, "character": 17 } ] @@ -45645,7 +45645,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 581, + "line": 591, "character": 4 } ] @@ -45780,7 +45780,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1240, + "line": 1250, "character": 3 } ], @@ -45802,7 +45802,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1239, + "line": 1249, "character": 32 } ], @@ -45820,7 +45820,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1239, + "line": 1249, "character": 40 } ] @@ -45858,7 +45858,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1330, + "line": 1340, "character": 5 } ], @@ -45883,7 +45883,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1338, + "line": 1348, "character": 9 } ], @@ -45905,7 +45905,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1332, + "line": 1342, "character": 9 } ], @@ -45930,7 +45930,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1345, + "line": 1355, "character": 10 } ], @@ -45953,7 +45953,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1347, + "line": 1357, "character": 16 } ], @@ -45976,7 +45976,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1349, + "line": 1359, "character": 8 } ], @@ -46002,7 +46002,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1354, + "line": 1364, "character": 17 } ], @@ -46027,7 +46027,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1361, + "line": 1371, "character": 6 } ], @@ -46052,7 +46052,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1369, + "line": 1379, "character": 15 } ], @@ -46077,7 +46077,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1372, + "line": 1382, "character": 12 } ], @@ -46102,7 +46102,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1378, + "line": 1388, "character": 17 } ], @@ -46127,7 +46127,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1386, + "line": 1396, "character": 5 } ], @@ -46152,7 +46152,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1391, + "line": 1401, "character": 11 } ], @@ -46178,7 +46178,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1266, + "line": 1276, "character": 7 } ], @@ -46209,7 +46209,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1394, + "line": 1404, "character": 5 } ], @@ -46231,7 +46231,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1396, + "line": 1406, "character": 5 } ], @@ -46257,7 +46257,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1293, + "line": 1303, "character": 8 } ], @@ -46292,7 +46292,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1288, + "line": 1298, "character": 10 } ], @@ -46323,7 +46323,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1314, + "line": 1324, "character": 8 } ], @@ -46350,7 +46350,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1315, + "line": 1325, "character": 9 } ], @@ -46377,7 +46377,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1316, + "line": 1326, "character": 8 } ], @@ -46407,7 +46407,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1402, + "line": 1412, "character": 10 } ], @@ -46432,7 +46432,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1405, + "line": 1415, "character": 11 } ], @@ -46458,7 +46458,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1311, + "line": 1321, "character": 7 } ], @@ -46511,7 +46511,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1325, + "line": 1335, "character": 23 } ], @@ -46562,7 +46562,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1440, + "line": 1450, "character": 9 } ], @@ -46585,7 +46585,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1438, + "line": 1448, "character": 10 } ], @@ -46617,7 +46617,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1439, + "line": 1449, "character": 7 } ], @@ -46650,7 +46650,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1437, + "line": 1447, "character": 32 } ] @@ -46680,7 +46680,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1446, + "line": 1456, "character": 8 } ], @@ -46711,7 +46711,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1444, + "line": 1454, "character": 9 } ], @@ -46734,7 +46734,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1445, + "line": 1455, "character": 12 } ], @@ -46767,7 +46767,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1443, + "line": 1453, "character": 35 } ] @@ -46812,7 +46812,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1546, + "line": 1556, "character": 14 } ], @@ -46834,7 +46834,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1545, + "line": 1555, "character": 5 } ], @@ -46857,7 +46857,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1544, + "line": 1554, "character": 34 } ] @@ -46889,7 +46889,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1459, + "line": 1469, "character": 4 } ], @@ -46915,7 +46915,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1462, + "line": 1472, "character": 9 } ], @@ -46940,7 +46940,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1465, + "line": 1475, "character": 10 } ], @@ -46965,7 +46965,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1468, + "line": 1478, "character": 9 } ], @@ -46991,7 +46991,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1471, + "line": 1481, "character": 11 } ], @@ -47017,7 +47017,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1474, + "line": 1484, "character": 6 } ], @@ -47042,7 +47042,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1477, + "line": 1487, "character": 4 } ], @@ -47067,7 +47067,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1480, + "line": 1490, "character": 7 } ], @@ -47092,7 +47092,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1483, + "line": 1493, "character": 9 } ], @@ -47117,7 +47117,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1486, + "line": 1496, "character": 9 } ], @@ -47143,7 +47143,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1489, + "line": 1499, "character": 9 } ], @@ -47169,7 +47169,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1492, + "line": 1502, "character": 11 } ], @@ -47195,7 +47195,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1495, + "line": 1505, "character": 8 } ], @@ -47221,7 +47221,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1498, + "line": 1508, "character": 8 } ], @@ -47247,7 +47247,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1501, + "line": 1511, "character": 10 } ], @@ -47273,7 +47273,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1504, + "line": 1514, "character": 8 } ], @@ -47310,7 +47310,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1458, + "line": 1468, "character": 23 } ], @@ -48368,7 +48368,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1451, + "line": 1461, "character": 5 } ], @@ -48390,7 +48390,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1450, + "line": 1460, "character": 5 } ], @@ -48478,7 +48478,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1449, + "line": 1459, "character": 30 } ] @@ -48524,7 +48524,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1234, + "line": 1244, "character": 5 } ], @@ -48546,7 +48546,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1233, + "line": 1243, "character": 10 } ], @@ -48569,7 +48569,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1232, + "line": 1242, "character": 28 } ] @@ -48649,7 +48649,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1430, + "line": 1440, "character": 25 } ] @@ -48712,7 +48712,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1520, + "line": 1530, "character": 23 } ] @@ -48742,7 +48742,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1533, + "line": 1543, "character": 8 } ], @@ -48811,7 +48811,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1532, + "line": 1542, "character": 7 } ], @@ -48834,7 +48834,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1531, + "line": 1541, "character": 33 } ] @@ -48916,7 +48916,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1528, + "line": 1538, "character": 10 } ] @@ -48950,7 +48950,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1527, + "line": 1537, "character": 27 } ] @@ -48983,7 +48983,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1424, + "line": 1434, "character": 8 } ], @@ -49005,7 +49005,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1422, + "line": 1432, "character": 7 } ], @@ -49028,7 +49028,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1423, + "line": 1433, "character": 10 } ], @@ -49065,7 +49065,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1421, + "line": 1431, "character": 33 } ] @@ -49199,7 +49199,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1536, + "line": 1546, "character": 34 } ] @@ -49231,7 +49231,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1514, + "line": 1524, "character": 9 } ], @@ -49254,7 +49254,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1513, + "line": 1523, "character": 24 } ], @@ -49293,7 +49293,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1412, + "line": 1422, "character": 5 } ], @@ -49316,7 +49316,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1413, + "line": 1423, "character": 8 } ], @@ -49340,7 +49340,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1411, + "line": 1421, "character": 35 } ] @@ -49390,7 +49390,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1540, + "line": 1550, "character": 36 } ] @@ -49423,7 +49423,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1266, + "line": 1276, "character": 7 } ], @@ -49449,7 +49449,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1293, + "line": 1303, "character": 8 } ], @@ -49479,7 +49479,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1288, + "line": 1298, "character": 10 } ], @@ -49505,7 +49505,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1314, + "line": 1324, "character": 8 } ], @@ -49527,7 +49527,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1315, + "line": 1325, "character": 9 } ], @@ -49549,7 +49549,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1316, + "line": 1326, "character": 8 } ], @@ -49575,7 +49575,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1311, + "line": 1321, "character": 7 } ], @@ -49606,7 +49606,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1243, + "line": 1253, "character": 31 } ], @@ -49634,7 +49634,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1508, + "line": 1518, "character": 24 } ], @@ -51683,7 +51683,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 748, + "line": 758, "character": 24 } ], @@ -51829,7 +51829,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 812, + "line": 822, "character": 27 } ], @@ -51913,7 +51913,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 823, + "line": 833, "character": 24 } ], @@ -51983,7 +51983,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 837, + "line": 847, "character": 24 } ], @@ -52036,7 +52036,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 776, + "line": 786, "character": 25 } ], @@ -52132,7 +52132,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 848, + "line": 858, "character": 22 } ], @@ -52185,7 +52185,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 904, + "line": 914, "character": 23 } ], @@ -52238,7 +52238,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 892, + "line": 902, "character": 33 } ], @@ -52346,7 +52346,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 918, + "line": 928, "character": 9 } ] @@ -52374,7 +52374,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 916, + "line": 926, "character": 23 } ], @@ -53007,7 +53007,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1171, + "line": 1181, "character": 21 } ], @@ -53639,27 +53639,27 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 309, + "line": 319, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 310, + "line": 320, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 311, + "line": 321, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 312, + "line": 322, "character": 13 }, { "fileName": "lib/executors/Executor.ts", - "line": 313, + "line": 323, "character": 13 } ], @@ -53972,42 +53972,42 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 325, + "line": 335, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 326, + "line": 336, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 327, + "line": 337, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 328, + "line": 338, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 329, + "line": 339, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 330, + "line": 340, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 331, + "line": 341, "character": 10 }, { "fileName": "lib/executors/Executor.ts", - "line": 332, + "line": 342, "character": 10 } ], @@ -54282,7 +54282,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 356, + "line": 366, "character": 4 } ], @@ -54437,7 +54437,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 43 } ], @@ -54458,7 +54458,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 29 } ], @@ -54481,7 +54481,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 23 } ] @@ -54510,17 +54510,17 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 415, + "line": 425, "character": 3 }, { "fileName": "lib/executors/Executor.ts", - "line": 416, + "line": 426, "character": 3 }, { "fileName": "lib/executors/Executor.ts", - "line": 417, + "line": 427, "character": 3 } ], @@ -54600,7 +54600,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 453, + "line": 463, "character": 18 } ], @@ -54666,7 +54666,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 482, + "line": 492, "character": 15 } ], @@ -54833,17 +54833,17 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 525, + "line": 535, "character": 15 }, { "fileName": "lib/executors/Executor.ts", - "line": 530, + "line": 540, "character": 15 }, { "fileName": "lib/executors/Executor.ts", - "line": 531, + "line": 541, "character": 15 } ], @@ -54922,7 +54922,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 571, + "line": 581, "character": 17 } ], @@ -55039,7 +55039,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 581, + "line": 591, "character": 4 } ], @@ -55269,7 +55269,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1330, + "line": 1340, "character": 5 } ], @@ -55299,7 +55299,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1338, + "line": 1348, "character": 9 } ], @@ -55326,7 +55326,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1332, + "line": 1342, "character": 9 } ], @@ -55356,7 +55356,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1345, + "line": 1355, "character": 10 } ], @@ -55384,7 +55384,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1347, + "line": 1357, "character": 16 } ], @@ -55412,7 +55412,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1349, + "line": 1359, "character": 8 } ], @@ -55648,7 +55648,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1354, + "line": 1364, "character": 17 } ], @@ -55678,7 +55678,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1361, + "line": 1371, "character": 6 } ], @@ -55708,7 +55708,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1369, + "line": 1379, "character": 15 } ], @@ -55738,7 +55738,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1372, + "line": 1382, "character": 12 } ], @@ -55820,7 +55820,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1378, + "line": 1388, "character": 17 } ], @@ -56130,7 +56130,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1386, + "line": 1396, "character": 5 } ], @@ -56230,7 +56230,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1391, + "line": 1401, "character": 11 } ], @@ -56296,7 +56296,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1266, + "line": 1276, "character": 7 } ], @@ -56353,7 +56353,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1394, + "line": 1404, "character": 5 } ], @@ -56380,7 +56380,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1396, + "line": 1406, "character": 5 } ], @@ -56411,7 +56411,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1293, + "line": 1303, "character": 8 } ], @@ -56481,7 +56481,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1288, + "line": 1298, "character": 10 } ], @@ -56512,7 +56512,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1314, + "line": 1324, "character": 8 } ], @@ -56539,7 +56539,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1315, + "line": 1325, "character": 9 } ], @@ -56591,7 +56591,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1316, + "line": 1326, "character": 8 } ], @@ -56696,7 +56696,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1402, + "line": 1412, "character": 10 } ], @@ -56726,7 +56726,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1405, + "line": 1415, "character": 11 } ], @@ -56792,7 +56792,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1311, + "line": 1321, "character": 7 } ], @@ -57047,7 +57047,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1459, + "line": 1469, "character": 4 } ], @@ -57078,7 +57078,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1462, + "line": 1472, "character": 9 } ], @@ -57108,7 +57108,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1465, + "line": 1475, "character": 10 } ], @@ -57138,7 +57138,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1468, + "line": 1478, "character": 9 } ], @@ -57169,7 +57169,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1471, + "line": 1481, "character": 11 } ], @@ -57200,7 +57200,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1474, + "line": 1484, "character": 6 } ], @@ -57230,7 +57230,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1477, + "line": 1487, "character": 4 } ], @@ -57260,7 +57260,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1480, + "line": 1490, "character": 7 } ], @@ -57290,7 +57290,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1483, + "line": 1493, "character": 9 } ], @@ -57372,7 +57372,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1486, + "line": 1496, "character": 9 } ], @@ -57403,7 +57403,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1489, + "line": 1499, "character": 9 } ], @@ -57434,7 +57434,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1492, + "line": 1502, "character": 11 } ], @@ -57465,7 +57465,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1495, + "line": 1505, "character": 8 } ], @@ -57496,7 +57496,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1498, + "line": 1508, "character": 8 } ], @@ -57527,7 +57527,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1501, + "line": 1511, "character": 10 } ], @@ -57662,7 +57662,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1504, + "line": 1514, "character": 8 } ], @@ -57753,7 +57753,7 @@ "sources": [ { "fileName": "lib/executors/Executor.ts", - "line": 1514, + "line": 1524, "character": 9 } ], diff --git a/src/lib/executors/Executor.ts b/src/lib/executors/Executor.ts index 8186adaec..d2b355b7c 100644 --- a/src/lib/executors/Executor.ts +++ b/src/lib/executors/Executor.ts @@ -253,18 +253,28 @@ export default abstract class BaseExecutor< return Task.resolve(); } - const notifications: Promise[] = []; - - (this._listeners[eventName] || []).forEach(listener => { - notifications.push(Task.resolve(listener(data))); - }); + let notifications = Task.resolve(); + let hasNotifications = false; + + const listeners = this._listeners[eventName]; + if (listeners && listeners.length > 0) { + hasNotifications = true; + for (const listener of listeners) { + notifications = notifications.then(() => + Task.resolve(listener(data)) + ); + } + } - const starListeners = this._listeners['*'] || []; - if (starListeners.length > 0) { + const starListeners = this._listeners['*']; + if (starListeners && starListeners.length > 0) { + hasNotifications = true; const starEvent = { name: eventName, data }; - starListeners.forEach(listener => { - notifications.push(Task.resolve(listener(starEvent))); - }); + for (const listener of starListeners) { + notifications = notifications.then(() => + Task.resolve(listener(starEvent)) + ); + } } let error: InternError | undefined; @@ -272,7 +282,7 @@ export default abstract class BaseExecutor< error = data; } - if (notifications.length === 0) { + if (!hasNotifications) { // If reporters haven't been loaded yet, cache the event if (error) { // Report errors, warnings, deprecation messages when no listeners are registered @@ -290,7 +300,7 @@ export default abstract class BaseExecutor< return Task.resolve(); } - return Task.all(notifications).then(() => { + return notifications.then(() => { if (error) { error.reported = true; } diff --git a/tests/unit/lib/executors/Executor.ts b/tests/unit/lib/executors/Executor.ts index c78eafd4a..7a2973c4c 100644 --- a/tests/unit/lib/executors/Executor.ts +++ b/tests/unit/lib/executors/Executor.ts @@ -539,23 +539,20 @@ registerSuite('lib/executors/Executor', function() { const debugExecutor = createExecutor({ debug: true }); return debugExecutor.run().then(() => { debugExecutor.on('log', logger); - debugExecutor.log( - 'testing', - new Error('foo'), - () => {}, - /bar/, - 5 - ); - assert.equal( - logger.callCount, - 1, - 'log should have been emitted' - ); - assert.match( - logger.getCall(0).args[0], - /^testing .*Error.*foo.* function \(\) {[^]*} \/bar\/ 5$/, - 'expected all args to have been serialized in log message' - ); + return debugExecutor + .log('testing', new Error('foo'), () => {}, /bar/, 5) + .then(() => { + assert.equal( + logger.callCount, + 1, + 'log should have been emitted' + ); + assert.match( + logger.getCall(0).args[0], + /^testing .*Error.*foo.* function \(\) {[^]*} \/bar\/ 5$/, + 'expected all args to have been serialized in log message' + ); + }); }); }, @@ -564,24 +561,29 @@ registerSuite('lib/executors/Executor', function() { const logger = spy(() => {}); const handle = executor.on('testStart', logger); return executor.run().then(() => { - executor.emit('testStart', {}); - assert.equal( - logger.callCount, - 1, - 'listener should have been called' - ); - handle.destroy(); - executor.emit('testStart', {}); - assert.equal( - logger.callCount, - 1, - 'listener should not have been called' - ); - - // Calling handle again should be fine - assert.doesNotThrow(() => { - handle.destroy(); - }); + return executor + .emit('testStart', {}) + .then(() => { + assert.equal( + logger.callCount, + 1, + 'listener should have been called' + ); + handle.destroy(); + return executor.emit('testStart', {}); + }) + .then(() => { + assert.equal( + logger.callCount, + 1, + 'listener should not have been called' + ); + + // Calling handle again should be fine + assert.doesNotThrow(() => { + handle.destroy(); + }); + }); }); }, @@ -589,18 +591,23 @@ registerSuite('lib/executors/Executor', function() { const logger = spy(() => {}); return executor.run().then(() => { executor.on(logger); - executor.emit('testStart', {}); - assert.equal( - logger.callCount, - 1, - 'listener should have been called' - ); - executor.emit('testEnd', {}); - assert.equal( - logger.callCount, - 2, - 'listener should have been called' - ); + return executor + .emit('testStart', {}) + .then(() => { + assert.equal( + logger.callCount, + 1, + 'listener should have been called' + ); + return executor.emit('testEnd', {}); + }) + .then(() => { + assert.equal( + logger.callCount, + 2, + 'listener should have been called' + ); + }); }); } }, diff --git a/tests/unit/lib/executors/Node.ts b/tests/unit/lib/executors/Node.ts index 27ed04b65..53d773ceb 100644 --- a/tests/unit/lib/executors/Node.ts +++ b/tests/unit/lib/executors/Node.ts @@ -351,58 +351,71 @@ registerSuite('lib/executors/Node', function() { 'unhandled rejection': { 'with reason'() { - const logger = spy(() => {}); const handler = mockGlobal.process.on.getCall(0) .args[1]; const reason = new Error('foo'); return executor.run().then(() => { handler(reason); - assert.equal(logger.callCount, 0); assert.strictEqual( mockConsole.warn.callCount, 1, 'expected warning to have been logged' ); - executor.on('error', logger); + const promise = new Promise((resolve, reject) => { + executor.on('error', error => { + try { + assert.strictEqual( + error, + reason, + 'expected emitted error to be error passed to listener' + ); + resolve(); + } catch (err) { + reject(err); + } + }); + }); + handler(reason); - assert.equal(logger.callCount, 1); - assert.strictEqual( - logger.getCall(0).args[0], - reason, - 'expected emitted error to be error passed to listener' - ); + return promise; }); }, 'no reason'() { - const logger = spy(() => {}); const handler = mockGlobal.process.on.getCall(0) .args[1]; return executor.run().then(() => { handler(); - assert.equal(logger.callCount, 0); assert.strictEqual( mockConsole.warn.callCount, 1, 'expected warning to have been logged' ); - executor.on('error', logger); + const promise = new Promise((resolve, reject) => { + executor.on('error', error => { + try { + assert.isUndefined( + error, + 'expected emitted error to be error passed to listener' + ); + resolve(); + } catch (err) { + reject(err); + } + }); + }); + handler(); - assert.equal(logger.callCount, 1); - assert.isUndefined( - logger.getCall(0).args[0], - 'expected emitted error to be error passed to listener' - ); + return promise; }); } }, 'unhandled error'() { - const logger = spy(() => {}); const handler = mockGlobal.process.on.getCall(1).args[1]; assert.strictEqual( mockConsole.warn.callCount, @@ -412,22 +425,30 @@ registerSuite('lib/executors/Node', function() { return executor.run().then(() => { handler({ message: 'foo' }); - assert.equal(logger.callCount, 0); assert.strictEqual( mockConsole.warn.callCount, 1, 'expected warning to have been logged' ); - executor.on('error', logger); + const promise = new Promise((resolve, reject) => { + executor.on('error', error => { + try { + assert.propertyVal( + error, + 'message', + 'foo', + 'expected emitted error to be error passed to listener' + ); + resolve(); + } catch (err) { + reject(err); + } + }); + }); + handler({ message: 'foo' }); - assert.equal(logger.callCount, 1); - assert.propertyVal( - logger.getCall(0).args[0], - 'message', - 'foo', - 'expected emitted error to be error passed to listener' - ); + return promise; }); } },