@aerokit/sdk 12.82.0 → 12.85.0

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.
@@ -21,47 +21,134 @@ __export(junit_exports, {
21
21
  assertFalse: () => assertFalse,
22
22
  assertNotEquals: () => assertNotEquals,
23
23
  assertTrue: () => assertTrue,
24
+ clearResults: () => clearResults,
24
25
  fail: () => fail,
26
+ getResults: () => getResults,
27
+ getResultsSummary: () => getResultsSummary,
28
+ storeResults: () => storeResults,
25
29
  test: () => test
26
30
  });
27
31
  module.exports = __toCommonJS(junit_exports);
28
- const Assert = Java.type("org.junit.Assert");
32
+ var import_http = require("@aerokit/sdk/http");
33
+ const Assertions = Java.type("org.junit.jupiter.api.Assertions");
34
+ const TestResultsService = Java.type("org.eclipse.dirigible.components.ide.junit.service.TestResultsService");
35
+ const ArrayList = Java.type("java.util.ArrayList");
36
+ const TestResult = Java.type("org.eclipse.dirigible.components.ide.junit.domain.TestResult");
37
+ class TestResultCollector {
38
+ results = [];
39
+ currentTest = null;
40
+ haveFailedTests = false;
41
+ hasFailedTests() {
42
+ return this.haveFailedTests;
43
+ }
44
+ recordTestStart(name) {
45
+ this.currentTest = { name, startTime: (/* @__PURE__ */ new Date()).getTime() };
46
+ }
47
+ recordTestComplete(status, error) {
48
+ if (!this.currentTest) return;
49
+ const result = {
50
+ name: this.currentTest.name,
51
+ status,
52
+ duration: (/* @__PURE__ */ new Date()).getTime() - this.currentTest.startTime,
53
+ timestamp: (/* @__PURE__ */ new Date()).getTime()
54
+ };
55
+ if (error) {
56
+ result.error = error.message;
57
+ result.stackTrace = error.stackTrace;
58
+ }
59
+ this.results.push(result);
60
+ this.currentTest = null;
61
+ if (status === "failed" || error) {
62
+ this.haveFailedTests = true;
63
+ }
64
+ }
65
+ getResults() {
66
+ return [...this.results];
67
+ }
68
+ storeResults() {
69
+ const resultsList = new ArrayList();
70
+ this.results.forEach((e) => resultsList.add(new TestResult(e.name, e.status, e.duration, e.error, e.stackTrace, e.timestamp)));
71
+ TestResultsService.get().storeResults(resultsList);
72
+ import_http.Response.sendRedirect("/services/web/ide-junit-results/junit-results");
73
+ }
74
+ getSummary() {
75
+ const results = this.results;
76
+ const total = results.length;
77
+ const passed = results.filter((r) => r.status === "passed").length;
78
+ const failed = results.filter((r) => r.status === "failed").length;
79
+ const skipped = results.filter((r) => r.status === "skipped").length;
80
+ const duration = results.reduce((sum, r) => sum + r.duration, 0);
81
+ return { total, passed, failed, skipped, duration };
82
+ }
83
+ clearResults() {
84
+ this.results = [];
85
+ this.currentTest = null;
86
+ this.haveFailedTests = false;
87
+ }
88
+ }
89
+ const resultCollector = new TestResultCollector();
29
90
  function test(name, testFn) {
30
- globalThis.test(name, testFn);
91
+ resultCollector.recordTestStart(name);
92
+ if (resultCollector.hasFailedTests()) {
93
+ resultCollector.recordTestComplete("skipped");
94
+ console.log(`- Skipping test "${name}" due to previous failures`);
95
+ } else {
96
+ try {
97
+ testFn();
98
+ resultCollector.recordTestComplete("passed");
99
+ } catch (error) {
100
+ resultCollector.recordTestComplete("failed", {
101
+ message: error?.message || String(error),
102
+ stackTrace: error?.stack
103
+ });
104
+ }
105
+ }
31
106
  }
32
107
  function assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined) {
33
108
  if (arguments.length === 3) {
34
- Assert.assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined);
109
+ Assertions.assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined);
35
110
  } else {
36
- Assert.assertEquals(messageOrExpected, expectedOrActual);
111
+ Assertions.assertEquals(messageOrExpected, expectedOrActual);
37
112
  }
38
113
  }
39
114
  function assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined) {
40
115
  if (arguments.length === 3) {
41
- Assert.assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined);
116
+ Assertions.assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined);
42
117
  } else {
43
- Assert.assertNotEquals(messageOrUnexpected, unexpectedOrActual);
118
+ Assertions.assertNotEquals(messageOrUnexpected, unexpectedOrActual);
44
119
  }
45
120
  }
46
121
  function assertTrue(messageOrCondition, conditionOrUndefined) {
47
122
  if (arguments.length === 2) {
48
- Assert.assertTrue(messageOrCondition, conditionOrUndefined);
123
+ Assertions.assertTrue(messageOrCondition, conditionOrUndefined);
49
124
  } else {
50
- Assert.assertTrue(messageOrCondition);
125
+ Assertions.assertTrue(messageOrCondition);
51
126
  }
52
127
  }
53
128
  function assertFalse(messageOrCondition, conditionOrUndefined) {
54
129
  if (arguments.length === 2) {
55
- Assert.assertFalse(messageOrCondition, conditionOrUndefined);
130
+ Assertions.assertFalse(messageOrCondition, conditionOrUndefined);
56
131
  } else {
57
- Assert.assertFalse(messageOrCondition);
132
+ Assertions.assertFalse(messageOrCondition);
58
133
  }
59
134
  }
60
135
  function fail(message) {
61
136
  if (message) {
62
- Assert.fail(message);
137
+ Assertions.fail(message);
63
138
  } else {
64
- Assert.fail();
139
+ Assertions.fail();
65
140
  }
66
141
  }
67
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2p1bml0L2p1bml0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUganVuaXQvanVuaXRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9qdW5pdFxuICogQG5hbWUgSlVuaXRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSlVuaXQgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWZpbmluZyB0ZXN0cyBhbmQgcGVyZm9ybWluZyBhc3NlcnRpb25zLCB3cmFwcGluZyB0aGUgbmF0aXZlIEpVbml0IEFzc2VydGlvbnMgZm9yIHVzZSBpbiBUeXBlU2NyaXB0L0phdmFTY3JpcHQgdGVzdHMuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHdyaXRlIHRlc3QgY2FzZXMgaW4gYSBmYW1pbGlhciBmb3JtYXQgd2hpbGUgbGV2ZXJhZ2luZyB0aGUgcG93ZXJmdWwgYXNzZXJ0aW9uIGNhcGFiaWxpdGllcyBvZiBKVW5pdCwgbWFraW5nIGl0IGVhc2llciB0byB2YWxpZGF0ZSBjb2RlIGJlaGF2aW9yIGFuZCBlbnN1cmUgY29ycmVjdG5lc3MuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqVGVzdCBEZWZpbml0aW9uKio6IFRoZSBgdGVzdGAgZnVuY3Rpb24gYWxsb3dzIGRldmVsb3BlcnMgdG8gZGVmaW5lIGluZGl2aWR1YWwgdGVzdCBjYXNlcyB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSBhbmQgYSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSB0ZXN0IGxvZ2ljLlxuICogLSAqKkFzc2VydGlvbnMqKjogRnVuY3Rpb25zIHN1Y2ggYXMgYGFzc2VydEVxdWFsc2AsIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0VHJ1ZWAsIGBhc3NlcnRGYWxzZWAsIGFuZCBgZmFpbGAgcHJvdmlkZSBhIHZhcmlldHkgb2YgYXNzZXJ0aW9uIG1ldGhvZHMgdG8gdmFsaWRhdGUgY29uZGl0aW9ucyBhbmQgY29tcGFyZSB2YWx1ZXMgd2l0aGluIHRlc3RzLlxuICogXG4gKiAjIyMgVXNlIENhc2VzOlxuICogLSAqKlVuaXQgVGVzdGluZyoqOiBUaGVzZSB1dGlsaXRpZXMgYXJlIHByaW1hcmlseSB1c2VkIGZvciB3cml0aW5nIHVuaXQgdGVzdHMgdG8gdmVyaWZ5IHRoZSBmdW5jdGlvbmFsaXR5IG9mIGluZGl2aWR1YWwgY29tcG9uZW50cyBvciBmdW5jdGlvbnMgaW4gaXNvbGF0aW9uLlxuICogLSAqKkludGVncmF0aW9uIFRlc3RpbmcqKjogVGhleSBjYW4gYWxzbyBiZSB1c2VkIGluIGludGVncmF0aW9uIHRlc3RzIHRvIHZhbGlkYXRlIHRoZSBiZWhhdmlvciBvZiBtdWx0aXBsZSBjb21wb25lbnRzIHdvcmtpbmcgdG9nZXRoZXIsIGVuc3VyaW5nIHRoYXQgdGhleSBpbnRlcmFjdCBjb3JyZWN0bHkuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRlc3QsIGFzc2VydEVxdWFscywgYXNzZXJ0VHJ1ZSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvanVuaXRcIjtcbiAqIFxuICogdGVzdChcInNob3VsZCBhZGQgdHdvIG51bWJlcnMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAqICAgICBjb25zdCByZXN1bHQgPSBhZGQoMiwgMyk7XG4gKiAgICAgYXNzZXJ0RXF1YWxzKDUsIHJlc3VsdCk7XG4gKiB9KTtcbiAqIFxuICogdGVzdChcInNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgdmFsaWQgaW5wdXRcIiwgKCkgPT4ge1xuICogICAgIGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0ZUlucHV0KFwidmFsaWQgaW5wdXRcIik7XG4gKiAgICAgYXNzZXJ0VHJ1ZShpc1ZhbGlkKTtcbiAqIH0pO1xuICogYGBgXG4gKi9cblxuY29uc3QgQXNzZXJ0ID0gSmF2YS50eXBlKCdvcmcuanVuaXQuQXNzZXJ0Jyk7XG5cbi8qKlxuICogRGVmaW5lcyBhIHRlc3QgY2FzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlLlxuICogQHBhcmFtIHRlc3RGbiBUaGUgZnVuY3Rpb24gY29udGFpbmluZyB0aGUgdGVzdCBsb2dpYyBhbmQgYXNzZXJ0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCB0ZXN0Rm46ICgpID0+IHZvaWQpIHtcbiAgICAvLyBDYWxscyB0aGUgZ2xvYmFsIHRlc3QgcnVubmVyIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRoZSBTREsgZW52aXJvbm1lbnQuXG4gICAgKGdsb2JhbFRoaXMgYXMgYW55KS50ZXN0KG5hbWUsIHRlc3RGbik7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHR3byBvYmplY3RzIG9yIHByaW1pdGl2ZSB2YWx1ZXMgYXJlIGVxdWFsLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZXMgYmVpbmcgY29tcGFyZWQuXG4gKiBAcGFyYW0gZXhwZWN0ZWQgVGhlIGV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4oZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4obWVzc2FnZTogc3RyaW5nLCBleHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEVxdWFsczxUPihtZXNzYWdlT3JFeHBlY3RlZD86IHN0cmluZyB8IFQsIGV4cGVjdGVkT3JBY3R1YWw/OiBULCBhY3R1YWxPclVuZGVmaW5lZD86IFQpOiB2b2lkIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBBc3NlcnQuYXNzZXJ0RXF1YWxzKG1lc3NhZ2VPckV4cGVjdGVkLCBleHBlY3RlZE9yQWN0dWFsLCBhY3R1YWxPclVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmFzc2VydEVxdWFscyhtZXNzYWdlT3JFeHBlY3RlZCwgZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBiZWluZyBjb21wYXJlZC5cbiAqIEBwYXJhbSB1bmV4cGVjdGVkIFRoZSB1bmV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4odW5leHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsczxUPihtZXNzYWdlOiBzdHJpbmcsIHVuZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4obWVzc2FnZU9yVW5leHBlY3RlZD86IHN0cmluZyB8IFQsIHVuZXhwZWN0ZWRPckFjdHVhbD86IFQsIGFjdHVhbE9yVW5kZWZpbmVkPzogVCk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnROb3RFcXVhbHMobWVzc2FnZU9yVW5leHBlY3RlZCwgdW5leHBlY3RlZE9yQWN0dWFsLCBhY3R1YWxPclVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmFzc2VydE5vdEVxdWFscyhtZXNzYWdlT3JVbmV4cGVjdGVkLCB1bmV4cGVjdGVkT3JBY3R1YWwpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgdHJ1ZS5cbiAqXG4gKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBjb25kaXRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShjb25kaXRpb246IGJvb2xlYW4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShtZXNzYWdlOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbj86IHN0cmluZyB8IGJvb2xlYW4sIGNvbmRpdGlvbk9yVW5kZWZpbmVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbik7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIGNvbmRpdGlvbiBpcyBmYWxzZS5cbiAqXG4gKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBjb25kaXRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RmFsc2UoY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKG1lc3NhZ2U6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKG1lc3NhZ2VPckNvbmRpdGlvbj86IHN0cmluZyB8IGJvb2xlYW4sIGNvbmRpdGlvbk9yVW5kZWZpbmVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRGYWxzZShtZXNzYWdlT3JDb25kaXRpb24sIGNvbmRpdGlvbk9yVW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBBc3NlcnQuYXNzZXJ0RmFsc2UobWVzc2FnZU9yQ29uZGl0aW9uKTtcbiAgICB9XG59XG5cbi8qKlxuICogRmFpbHMgYSB0ZXN0IGltbWVkaWF0ZWx5LlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbCgpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgQXNzZXJ0LmZhaWwobWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmZhaWwoKTtcbiAgICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdDQSxNQUFNLFNBQVMsS0FBSyxLQUFLLGtCQUFrQjtBQVFwQyxTQUFTLEtBQUssTUFBYyxRQUFvQjtBQUVuRCxFQUFDLFdBQW1CLEtBQUssTUFBTSxNQUFNO0FBQ3pDO0FBWU8sU0FBUyxhQUFnQixtQkFBZ0Msa0JBQXNCLG1CQUE2QjtBQUMvRyxNQUFJLFVBQVUsV0FBVyxHQUFHO0FBQ3hCLFdBQU8sYUFBYSxtQkFBbUIsa0JBQWtCLGlCQUFpQjtBQUFBLEVBQzlFLE9BQU87QUFDSCxXQUFPLGFBQWEsbUJBQW1CLGdCQUFnQjtBQUFBLEVBQzNEO0FBQ0o7QUFZTyxTQUFTLGdCQUFtQixxQkFBa0Msb0JBQXdCLG1CQUE2QjtBQUN0SCxNQUFJLFVBQVUsV0FBVyxHQUFHO0FBQ3hCLFdBQU8sZ0JBQWdCLHFCQUFxQixvQkFBb0IsaUJBQWlCO0FBQUEsRUFDckYsT0FBTztBQUNILFdBQU8sZ0JBQWdCLHFCQUFxQixrQkFBa0I7QUFBQSxFQUNsRTtBQUNKO0FBVU8sU0FBUyxXQUFXLG9CQUF1QyxzQkFBc0M7QUFDcEcsTUFBSSxVQUFVLFdBQVcsR0FBRztBQUN4QixXQUFPLFdBQVcsb0JBQW9CLG9CQUFvQjtBQUFBLEVBQzlELE9BQU87QUFDSCxXQUFPLFdBQVcsa0JBQWtCO0FBQUEsRUFDeEM7QUFDSjtBQVVPLFNBQVMsWUFBWSxvQkFBdUMsc0JBQXNDO0FBQ3JHLE1BQUksVUFBVSxXQUFXLEdBQUc7QUFDeEIsV0FBTyxZQUFZLG9CQUFvQixvQkFBb0I7QUFBQSxFQUMvRCxPQUFPO0FBQ0gsV0FBTyxZQUFZLGtCQUFrQjtBQUFBLEVBQ3pDO0FBQ0o7QUFTTyxTQUFTLEtBQUssU0FBd0I7QUFDekMsTUFBSSxTQUFTO0FBQ1QsV0FBTyxLQUFLLE9BQU87QUFBQSxFQUN2QixPQUFPO0FBQ0gsV0FBTyxLQUFLO0FBQUEsRUFDaEI7QUFDSjsiLAogICJuYW1lcyI6IFtdCn0K
142
+ function getResults() {
143
+ return resultCollector.getResults();
144
+ }
145
+ function getResultsSummary() {
146
+ return resultCollector.getSummary();
147
+ }
148
+ function clearResults() {
149
+ resultCollector.clearResults();
150
+ }
151
+ function storeResults() {
152
+ resultCollector.storeResults();
153
+ }
154
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2p1bml0L2p1bml0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUganVuaXQvanVuaXRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9qdW5pdFxuICogQG5hbWUgSlVuaXRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSlVuaXQgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWZpbmluZyB0ZXN0cyBhbmQgcGVyZm9ybWluZyBhc3NlcnRpb25zLCB3cmFwcGluZyB0aGUgbmF0aXZlIEpVbml0IEFzc2VydGlvbnMgZm9yIHVzZSBpbiBUeXBlU2NyaXB0L0phdmFTY3JpcHQgdGVzdHMuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHdyaXRlIHRlc3QgY2FzZXMgaW4gYSBmYW1pbGlhciBmb3JtYXQgd2hpbGUgbGV2ZXJhZ2luZyB0aGUgcG93ZXJmdWwgYXNzZXJ0aW9uIGNhcGFiaWxpdGllcyBvZiBKVW5pdCwgbWFraW5nIGl0IGVhc2llciB0byB2YWxpZGF0ZSBjb2RlIGJlaGF2aW9yIGFuZCBlbnN1cmUgY29ycmVjdG5lc3MuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqVGVzdCBEZWZpbml0aW9uKio6IFRoZSBgdGVzdGAgZnVuY3Rpb24gYWxsb3dzIGRldmVsb3BlcnMgdG8gZGVmaW5lIGluZGl2aWR1YWwgdGVzdCBjYXNlcyB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSBhbmQgYSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSB0ZXN0IGxvZ2ljLlxuICogLSAqKkFzc2VydGlvbnMqKjogRnVuY3Rpb25zIHN1Y2ggYXMgYGFzc2VydEVxdWFsc2AsIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0VHJ1ZWAsIGBhc3NlcnRGYWxzZWAsIGFuZCBgZmFpbGAgcHJvdmlkZSBhIHZhcmlldHkgb2YgYXNzZXJ0aW9uIG1ldGhvZHMgdG8gdmFsaWRhdGUgY29uZGl0aW9ucyBhbmQgY29tcGFyZSB2YWx1ZXMgd2l0aGluIHRlc3RzLlxuICogLSAqKlJlc3VsdCBUcmFja2luZyoqOiBUZXN0IHJlc3VsdHMgYXJlIGF1dG9tYXRpY2FsbHkgY2FwdHVyZWQgYW5kIGNhbiBiZSByZXRyaWV2ZWQgdmlhIHRoZSByZXN1bHRzIEFQSS5cbiAqIFxuICogIyMjIFVzZSBDYXNlczpcbiAqIC0gKipVbml0IFRlc3RpbmcqKjogVGhlc2UgdXRpbGl0aWVzIGFyZSBwcmltYXJpbHkgdXNlZCBmb3Igd3JpdGluZyB1bml0IHRlc3RzIHRvIHZlcmlmeSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBpbmRpdmlkdWFsIGNvbXBvbmVudHMgb3IgZnVuY3Rpb25zIGluIGlzb2xhdGlvbi5cbiAqIC0gKipJbnRlZ3JhdGlvbiBUZXN0aW5nKio6IFRoZXkgY2FuIGFsc28gYmUgdXNlZCBpbiBpbnRlZ3JhdGlvbiB0ZXN0cyB0byB2YWxpZGF0ZSB0aGUgYmVoYXZpb3Igb2YgbXVsdGlwbGUgY29tcG9uZW50cyB3b3JraW5nIHRvZ2V0aGVyLCBlbnN1cmluZyB0aGF0IHRoZXkgaW50ZXJhY3QgY29ycmVjdGx5LlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0ZXN0LCBhc3NlcnRFcXVhbHMsIGFzc2VydFRydWUsIHN0b3JlUmVzdWx0cyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvanVuaXRcIjtcbiAqIFxuICogdGVzdChcInNob3VsZCBhZGQgdHdvIG51bWJlcnMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAqICAgICBjb25zdCByZXN1bHQgPSAyICsgMztcbiAqICAgICBhc3NlcnRFcXVhbHMoNSwgcmVzdWx0KTtcbiAqIH0pO1xuICogXG4gKiB0ZXN0KFwic2hvdWxkIHJldHVybiB0cnVlIGZvciB2YWxpZCBpbnB1dFwiLCAoKSA9PiB7XG4gKiAgICAgY29uc3QgaXNWYWxpZCA9IGZhbHNlOyAvLyBSZXBsYWNlIHdpdGggYWN0dWFsIHZhbGlkYXRpb24gbG9naWNcbiAqICAgICBhc3NlcnRUcnVlKGlzVmFsaWQpO1xuICogfSk7XG4gKiBcbiAqIC8vIEFmdGVyIHJ1bm5pbmcgdGVzdHMsIHN0b3JlIHJlc3VsdHMgZm9yIGxhdGVyIHJldHJpZXZhbFxuICogc3RvcmVSZXN1bHRzKCk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ0BhZXJva2l0L3Nkay9odHRwJztcblxuY29uc3QgQXNzZXJ0aW9ucyA9IEphdmEudHlwZSgnb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLkFzc2VydGlvbnMnKTtcbmNvbnN0IFRlc3RSZXN1bHRzU2VydmljZSA9IEphdmEudHlwZSgnb3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuaWRlLmp1bml0LnNlcnZpY2UuVGVzdFJlc3VsdHNTZXJ2aWNlJyk7XG5jb25zdCBBcnJheUxpc3QgPSBKYXZhLnR5cGUoJ2phdmEudXRpbC5BcnJheUxpc3QnKTtcbmNvbnN0IFRlc3RSZXN1bHQgPSBKYXZhLnR5cGUoJ29yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmlkZS5qdW5pdC5kb21haW4uVGVzdFJlc3VsdCcpO1xuXG4vLyBUZXN0IFJlc3VsdCBUcmFja2luZ1xuaW50ZXJmYWNlIFRlc3RSZXN1bHQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdGF0dXM6ICdwYXNzZWQnIHwgJ2ZhaWxlZCcgfCAnc2tpcHBlZCc7XG4gICAgZHVyYXRpb246IG51bWJlcjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBzdGFja1RyYWNlPzogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5jbGFzcyBUZXN0UmVzdWx0Q29sbGVjdG9yIHtcbiAgICBwcml2YXRlIHJlc3VsdHM6IFRlc3RSZXN1bHRbXSA9IFtdO1xuICAgIHByaXZhdGUgY3VycmVudFRlc3Q6IHsgbmFtZTogc3RyaW5nOyBzdGFydFRpbWU6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBoYXZlRmFpbGVkVGVzdHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBoYXNGYWlsZWRUZXN0cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGF2ZUZhaWxlZFRlc3RzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWNvcmRUZXN0U3RhcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFRlc3QgPSB7IG5hbWUsIHN0YXJ0VGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVjb3JkVGVzdENvbXBsZXRlKHN0YXR1czogJ3Bhc3NlZCcgfCAnZmFpbGVkJyB8ICdza2lwcGVkJywgZXJyb3I/OiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2tUcmFjZT86IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50VGVzdCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVGVzdFJlc3VsdCA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuY3VycmVudFRlc3QubmFtZSxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuY3VycmVudFRlc3Quc3RhcnRUaW1lLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlc3VsdC5lcnJvciA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICByZXN1bHQuc3RhY2tUcmFjZSA9IGVycm9yLnN0YWNrVHJhY2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gbnVsbDtcblxuICAgICAgICBpZiAoc3RhdHVzID09PSAnZmFpbGVkJyB8fCBlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5oYXZlRmFpbGVkVGVzdHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlc3VsdHMoKTogVGVzdFJlc3VsdFtdIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnJlc3VsdHNdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9yZVJlc3VsdHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHNMaXN0ID0gbmV3IEFycmF5TGlzdCgpO1xuICAgICAgICB0aGlzLnJlc3VsdHMuZm9yRWFjaChlID0+IHJlc3VsdHNMaXN0LmFkZChuZXcgVGVzdFJlc3VsdChlLm5hbWUsIGUuc3RhdHVzLCBlLmR1cmF0aW9uLCBlLmVycm9yLCBlLnN0YWNrVHJhY2UsIGUudGltZXN0YW1wKSkpO1xuICAgICAgICBUZXN0UmVzdWx0c1NlcnZpY2UuZ2V0KCkuc3RvcmVSZXN1bHRzKHJlc3VsdHNMaXN0KTtcbiAgICAgICAgUmVzcG9uc2Uuc2VuZFJlZGlyZWN0KCcvc2VydmljZXMvd2ViL2lkZS1qdW5pdC1yZXN1bHRzL2p1bml0LXJlc3VsdHMnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3VtbWFyeSgpOiB7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHBhc3NlZDogbnVtYmVyO1xuICAgICAgICBmYWlsZWQ6IG51bWJlcjtcbiAgICAgICAgc2tpcHBlZDogbnVtYmVyO1xuICAgICAgICBkdXJhdGlvbjogbnVtYmVyO1xuICAgIH0ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5yZXN1bHRzO1xuICAgICAgICBjb25zdCB0b3RhbCA9IHJlc3VsdHMubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXNzZWQgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAncGFzc2VkJykubGVuZ3RoO1xuICAgICAgICBjb25zdCBmYWlsZWQgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAnZmFpbGVkJykubGVuZ3RoO1xuICAgICAgICBjb25zdCBza2lwcGVkID0gcmVzdWx0cy5maWx0ZXIociA9PiByLnN0YXR1cyA9PT0gJ3NraXBwZWQnKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gcmVzdWx0cy5yZWR1Y2UoKHN1bSwgcikgPT4gc3VtICsgci5kdXJhdGlvbiwgMCk7XG5cbiAgICAgICAgcmV0dXJuIHsgdG90YWwsIHBhc3NlZCwgZmFpbGVkLCBza2lwcGVkLCBkdXJhdGlvbiB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclJlc3VsdHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYXZlRmFpbGVkVGVzdHMgPSBmYWxzZTtcbiAgICB9XG59XG5cbmNvbnN0IHJlc3VsdENvbGxlY3RvciA9IG5ldyBUZXN0UmVzdWx0Q29sbGVjdG9yKCk7XG5cbi8qKlxuICogRGVmaW5lcyBhIHRlc3QgY2FzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlLlxuICogQHBhcmFtIHRlc3RGbiBUaGUgZnVuY3Rpb24gY29udGFpbmluZyB0aGUgdGVzdCBsb2dpYyBhbmQgYXNzZXJ0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCB0ZXN0Rm46ICgpID0+IHZvaWQpIHtcbiAgICByZXN1bHRDb2xsZWN0b3IucmVjb3JkVGVzdFN0YXJ0KG5hbWUpO1xuICAgIGlmIChyZXN1bHRDb2xsZWN0b3IuaGFzRmFpbGVkVGVzdHMoKSkge1xuICAgICAgICByZXN1bHRDb2xsZWN0b3IucmVjb3JkVGVzdENvbXBsZXRlKCdza2lwcGVkJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAtIFNraXBwaW5nIHRlc3QgXCIke25hbWV9XCIgZHVlIHRvIHByZXZpb3VzIGZhaWx1cmVzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRlc3RGbigpO1xuICAgICAgICAgICAgcmVzdWx0Q29sbGVjdG9yLnJlY29yZFRlc3RDb21wbGV0ZSgncGFzc2VkJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5yZWNvcmRUZXN0Q29tcGxldGUoJ2ZhaWxlZCcsIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgICAgIHN0YWNrVHJhY2U6IGVycm9yPy5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgdmFsdWVzIGJlaW5nIGNvbXBhcmVkLlxuICogQHBhcmFtIGV4cGVjdGVkIFRoZSBleHBlY3RlZCB2YWx1ZS5cbiAqIEBwYXJhbSBhY3R1YWwgVGhlIGFjdHVhbCB2YWx1ZS5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzPFQ+KGV4cGVjdGVkOiBULCBhY3R1YWw6IFQpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzPFQ+KG1lc3NhZ2U6IHN0cmluZywgZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4obWVzc2FnZU9yRXhwZWN0ZWQ/OiBzdHJpbmcgfCBULCBleHBlY3RlZE9yQWN0dWFsPzogVCwgYWN0dWFsT3JVbmRlZmluZWQ/OiBUKTogdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMobWVzc2FnZU9yRXhwZWN0ZWQsIGV4cGVjdGVkT3JBY3R1YWwsIGFjdHVhbE9yVW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscyhtZXNzYWdlT3JFeHBlY3RlZCwgZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBiZWluZyBjb21wYXJlZC5cbiAqIEBwYXJhbSB1bmV4cGVjdGVkIFRoZSB1bmV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4odW5leHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsczxUPihtZXNzYWdlOiBzdHJpbmcsIHVuZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4obWVzc2FnZU9yVW5leHBlY3RlZD86IHN0cmluZyB8IFQsIHVuZXhwZWN0ZWRPckFjdHVhbD86IFQsIGFjdHVhbE9yVW5kZWZpbmVkPzogVCk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90RXF1YWxzKG1lc3NhZ2VPclVuZXhwZWN0ZWQsIHVuZXhwZWN0ZWRPckFjdHVhbCwgYWN0dWFsT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90RXF1YWxzKG1lc3NhZ2VPclVuZXhwZWN0ZWQsIHVuZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIGNvbmRpdGlvbiBpcyB0cnVlLlxuICpcbiAqIEBwYXJhbSBjb25kaXRpb24gVGhlIGNvbmRpdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKG1lc3NhZ2U6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFRydWUobWVzc2FnZU9yQ29uZGl0aW9uPzogc3RyaW5nIHwgYm9vbGVhbiwgY29uZGl0aW9uT3JVbmRlZmluZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0VHJ1ZShtZXNzYWdlT3JDb25kaXRpb24pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgZmFsc2UuXG4gKlxuICogQHBhcmFtIGNvbmRpdGlvbiBUaGUgY29uZGl0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gbWVzc2FnZSBPcHRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkgaWYgdGhlIGFzc2VydGlvbiBmYWlscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWxzZShtZXNzYWdlOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWxzZShtZXNzYWdlT3JDb25kaXRpb24/OiBzdHJpbmcgfCBib29sZWFuLCBjb25kaXRpb25PclVuZGVmaW5lZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBBc3NlcnRpb25zLmFzc2VydEZhbHNlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RmFsc2UobWVzc2FnZU9yQ29uZGl0aW9uKTtcbiAgICB9XG59XG5cbi8qKlxuICogRmFpbHMgYSB0ZXN0IGltbWVkaWF0ZWx5LlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbCgpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5mYWlsKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuZmFpbCgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIHRlc3QgcmVzdWx0cyBjb2xsZWN0ZWQgZHVyaW5nIHRoaXMgc2Vzc2lvbi5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0ZXN0IHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXN1bHRzKCk6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3RhdHVzOiAncGFzc2VkJyB8ICdmYWlsZWQnIHwgJ3NraXBwZWQnO1xuICAgIGR1cmF0aW9uOiBudW1iZXI7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgc3RhY2tUcmFjZT86IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IG51bWJlcjtcbn0+IHtcbiAgICByZXR1cm4gcmVzdWx0Q29sbGVjdG9yLmdldFJlc3VsdHMoKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBzdW1tYXJ5IG9mIHRlc3QgZXhlY3V0aW9uLlxuICpcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIGNvdW50cyBhbmQgdG90YWwgZHVyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXN1bHRzU3VtbWFyeSgpOiB7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBwYXNzZWQ6IG51bWJlcjtcbiAgICBmYWlsZWQ6IG51bWJlcjtcbiAgICBza2lwcGVkOiBudW1iZXI7XG4gICAgZHVyYXRpb246IG51bWJlcjtcbn0ge1xuICAgIHJldHVybiByZXN1bHRDb2xsZWN0b3IuZ2V0U3VtbWFyeSgpO1xufVxuXG4vKipcbiAqIENsZWFycyBhbGwgY29sbGVjdGVkIHRlc3QgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyUmVzdWx0cygpOiB2b2lkIHtcbiAgICByZXN1bHRDb2xsZWN0b3IuY2xlYXJSZXN1bHRzKCk7XG59XG5cbi8qKlxuICogQ2xlYXJzIGFsbCBjb2xsZWN0ZWQgdGVzdCByZXN1bHRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcmVSZXN1bHRzKCk6IHZvaWQge1xuICAgIHJlc3VsdENvbGxlY3Rvci5zdG9yZVJlc3VsdHMoKTtcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQ0Esa0JBQXlCO0FBRXpCLE1BQU0sYUFB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
@@ -9,6 +9,7 @@
9
9
  * ### Key Features:
10
10
  * - **Test Definition**: The `test` function allows developers to define individual test cases with a descriptive name and a function containing the test logic.
11
11
  * - **Assertions**: Functions such as `assertEquals`, `assertNotEquals`, `assertTrue`, `assertFalse`, and `fail` provide a variety of assertion methods to validate conditions and compare values within tests.
12
+ * - **Result Tracking**: Test results are automatically captured and can be retrieved via the results API.
12
13
  *
13
14
  * ### Use Cases:
14
15
  * - **Unit Testing**: These utilities are primarily used for writing unit tests to verify the functionality of individual components or functions in isolation.
@@ -16,17 +17,20 @@
16
17
  *
17
18
  * ### Example Usage:
18
19
  * ```ts
19
- * import { test, assertEquals, assertTrue } from "@aerokit/sdk/junit";
20
+ * import { test, assertEquals, assertTrue, storeResults } from "@aerokit/sdk/junit";
20
21
  *
21
22
  * test("should add two numbers correctly", () => {
22
- * const result = add(2, 3);
23
+ * const result = 2 + 3;
23
24
  * assertEquals(5, result);
24
25
  * });
25
26
  *
26
27
  * test("should return true for valid input", () => {
27
- * const isValid = validateInput("valid input");
28
+ * const isValid = false; // Replace with actual validation logic
28
29
  * assertTrue(isValid);
29
30
  * });
31
+ *
32
+ * // After running tests, store results for later retrieval
33
+ * storeResults();
30
34
  * ```
31
35
  */
32
36
  /**
@@ -79,3 +83,36 @@ export declare function assertFalse(message: string, condition: boolean): void;
79
83
  */
80
84
  export declare function fail(): void;
81
85
  export declare function fail(message: string): void;
86
+ /**
87
+ * Retrieves all test results collected during this session.
88
+ *
89
+ * @returns An array of test results.
90
+ */
91
+ export declare function getResults(): Array<{
92
+ name: string;
93
+ status: 'passed' | 'failed' | 'skipped';
94
+ duration: number;
95
+ error?: string;
96
+ stackTrace?: string;
97
+ timestamp: number;
98
+ }>;
99
+ /**
100
+ * Retrieves a summary of test execution.
101
+ *
102
+ * @returns An object containing counts and total duration.
103
+ */
104
+ export declare function getResultsSummary(): {
105
+ total: number;
106
+ passed: number;
107
+ failed: number;
108
+ skipped: number;
109
+ duration: number;
110
+ };
111
+ /**
112
+ * Clears all collected test results.
113
+ */
114
+ export declare function clearResults(): void;
115
+ /**
116
+ * Clears all collected test results.
117
+ */
118
+ export declare function storeResults(): void;
@@ -1,48 +1,135 @@
1
- const Assert = Java.type("org.junit.Assert");
1
+ import { Response } from "@aerokit/sdk/http";
2
+ const Assertions = Java.type("org.junit.jupiter.api.Assertions");
3
+ const TestResultsService = Java.type("org.eclipse.dirigible.components.ide.junit.service.TestResultsService");
4
+ const ArrayList = Java.type("java.util.ArrayList");
5
+ const TestResult = Java.type("org.eclipse.dirigible.components.ide.junit.domain.TestResult");
6
+ class TestResultCollector {
7
+ results = [];
8
+ currentTest = null;
9
+ haveFailedTests = false;
10
+ hasFailedTests() {
11
+ return this.haveFailedTests;
12
+ }
13
+ recordTestStart(name) {
14
+ this.currentTest = { name, startTime: (/* @__PURE__ */ new Date()).getTime() };
15
+ }
16
+ recordTestComplete(status, error) {
17
+ if (!this.currentTest) return;
18
+ const result = {
19
+ name: this.currentTest.name,
20
+ status,
21
+ duration: (/* @__PURE__ */ new Date()).getTime() - this.currentTest.startTime,
22
+ timestamp: (/* @__PURE__ */ new Date()).getTime()
23
+ };
24
+ if (error) {
25
+ result.error = error.message;
26
+ result.stackTrace = error.stackTrace;
27
+ }
28
+ this.results.push(result);
29
+ this.currentTest = null;
30
+ if (status === "failed" || error) {
31
+ this.haveFailedTests = true;
32
+ }
33
+ }
34
+ getResults() {
35
+ return [...this.results];
36
+ }
37
+ storeResults() {
38
+ const resultsList = new ArrayList();
39
+ this.results.forEach((e) => resultsList.add(new TestResult(e.name, e.status, e.duration, e.error, e.stackTrace, e.timestamp)));
40
+ TestResultsService.get().storeResults(resultsList);
41
+ Response.sendRedirect("/services/web/ide-junit-results/junit-results");
42
+ }
43
+ getSummary() {
44
+ const results = this.results;
45
+ const total = results.length;
46
+ const passed = results.filter((r) => r.status === "passed").length;
47
+ const failed = results.filter((r) => r.status === "failed").length;
48
+ const skipped = results.filter((r) => r.status === "skipped").length;
49
+ const duration = results.reduce((sum, r) => sum + r.duration, 0);
50
+ return { total, passed, failed, skipped, duration };
51
+ }
52
+ clearResults() {
53
+ this.results = [];
54
+ this.currentTest = null;
55
+ this.haveFailedTests = false;
56
+ }
57
+ }
58
+ const resultCollector = new TestResultCollector();
2
59
  function test(name, testFn) {
3
- globalThis.test(name, testFn);
60
+ resultCollector.recordTestStart(name);
61
+ if (resultCollector.hasFailedTests()) {
62
+ resultCollector.recordTestComplete("skipped");
63
+ console.log(`- Skipping test "${name}" due to previous failures`);
64
+ } else {
65
+ try {
66
+ testFn();
67
+ resultCollector.recordTestComplete("passed");
68
+ } catch (error) {
69
+ resultCollector.recordTestComplete("failed", {
70
+ message: error?.message || String(error),
71
+ stackTrace: error?.stack
72
+ });
73
+ }
74
+ }
4
75
  }
5
76
  function assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined) {
6
77
  if (arguments.length === 3) {
7
- Assert.assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined);
78
+ Assertions.assertEquals(messageOrExpected, expectedOrActual, actualOrUndefined);
8
79
  } else {
9
- Assert.assertEquals(messageOrExpected, expectedOrActual);
80
+ Assertions.assertEquals(messageOrExpected, expectedOrActual);
10
81
  }
11
82
  }
12
83
  function assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined) {
13
84
  if (arguments.length === 3) {
14
- Assert.assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined);
85
+ Assertions.assertNotEquals(messageOrUnexpected, unexpectedOrActual, actualOrUndefined);
15
86
  } else {
16
- Assert.assertNotEquals(messageOrUnexpected, unexpectedOrActual);
87
+ Assertions.assertNotEquals(messageOrUnexpected, unexpectedOrActual);
17
88
  }
18
89
  }
19
90
  function assertTrue(messageOrCondition, conditionOrUndefined) {
20
91
  if (arguments.length === 2) {
21
- Assert.assertTrue(messageOrCondition, conditionOrUndefined);
92
+ Assertions.assertTrue(messageOrCondition, conditionOrUndefined);
22
93
  } else {
23
- Assert.assertTrue(messageOrCondition);
94
+ Assertions.assertTrue(messageOrCondition);
24
95
  }
25
96
  }
26
97
  function assertFalse(messageOrCondition, conditionOrUndefined) {
27
98
  if (arguments.length === 2) {
28
- Assert.assertFalse(messageOrCondition, conditionOrUndefined);
99
+ Assertions.assertFalse(messageOrCondition, conditionOrUndefined);
29
100
  } else {
30
- Assert.assertFalse(messageOrCondition);
101
+ Assertions.assertFalse(messageOrCondition);
31
102
  }
32
103
  }
33
104
  function fail(message) {
34
105
  if (message) {
35
- Assert.fail(message);
106
+ Assertions.fail(message);
36
107
  } else {
37
- Assert.fail();
108
+ Assertions.fail();
38
109
  }
39
110
  }
111
+ function getResults() {
112
+ return resultCollector.getResults();
113
+ }
114
+ function getResultsSummary() {
115
+ return resultCollector.getSummary();
116
+ }
117
+ function clearResults() {
118
+ resultCollector.clearResults();
119
+ }
120
+ function storeResults() {
121
+ resultCollector.storeResults();
122
+ }
40
123
  export {
41
124
  assertEquals,
42
125
  assertFalse,
43
126
  assertNotEquals,
44
127
  assertTrue,
128
+ clearResults,
45
129
  fail,
130
+ getResults,
131
+ getResultsSummary,
132
+ storeResults,
46
133
  test
47
134
  };
48
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2p1bml0L2p1bml0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUganVuaXQvanVuaXRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9qdW5pdFxuICogQG5hbWUgSlVuaXRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSlVuaXQgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWZpbmluZyB0ZXN0cyBhbmQgcGVyZm9ybWluZyBhc3NlcnRpb25zLCB3cmFwcGluZyB0aGUgbmF0aXZlIEpVbml0IEFzc2VydGlvbnMgZm9yIHVzZSBpbiBUeXBlU2NyaXB0L0phdmFTY3JpcHQgdGVzdHMuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHdyaXRlIHRlc3QgY2FzZXMgaW4gYSBmYW1pbGlhciBmb3JtYXQgd2hpbGUgbGV2ZXJhZ2luZyB0aGUgcG93ZXJmdWwgYXNzZXJ0aW9uIGNhcGFiaWxpdGllcyBvZiBKVW5pdCwgbWFraW5nIGl0IGVhc2llciB0byB2YWxpZGF0ZSBjb2RlIGJlaGF2aW9yIGFuZCBlbnN1cmUgY29ycmVjdG5lc3MuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqVGVzdCBEZWZpbml0aW9uKio6IFRoZSBgdGVzdGAgZnVuY3Rpb24gYWxsb3dzIGRldmVsb3BlcnMgdG8gZGVmaW5lIGluZGl2aWR1YWwgdGVzdCBjYXNlcyB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSBhbmQgYSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSB0ZXN0IGxvZ2ljLlxuICogLSAqKkFzc2VydGlvbnMqKjogRnVuY3Rpb25zIHN1Y2ggYXMgYGFzc2VydEVxdWFsc2AsIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0VHJ1ZWAsIGBhc3NlcnRGYWxzZWAsIGFuZCBgZmFpbGAgcHJvdmlkZSBhIHZhcmlldHkgb2YgYXNzZXJ0aW9uIG1ldGhvZHMgdG8gdmFsaWRhdGUgY29uZGl0aW9ucyBhbmQgY29tcGFyZSB2YWx1ZXMgd2l0aGluIHRlc3RzLlxuICogXG4gKiAjIyMgVXNlIENhc2VzOlxuICogLSAqKlVuaXQgVGVzdGluZyoqOiBUaGVzZSB1dGlsaXRpZXMgYXJlIHByaW1hcmlseSB1c2VkIGZvciB3cml0aW5nIHVuaXQgdGVzdHMgdG8gdmVyaWZ5IHRoZSBmdW5jdGlvbmFsaXR5IG9mIGluZGl2aWR1YWwgY29tcG9uZW50cyBvciBmdW5jdGlvbnMgaW4gaXNvbGF0aW9uLlxuICogLSAqKkludGVncmF0aW9uIFRlc3RpbmcqKjogVGhleSBjYW4gYWxzbyBiZSB1c2VkIGluIGludGVncmF0aW9uIHRlc3RzIHRvIHZhbGlkYXRlIHRoZSBiZWhhdmlvciBvZiBtdWx0aXBsZSBjb21wb25lbnRzIHdvcmtpbmcgdG9nZXRoZXIsIGVuc3VyaW5nIHRoYXQgdGhleSBpbnRlcmFjdCBjb3JyZWN0bHkuXG4gKiBcbiAqICMjIyBFeGFtcGxlIFVzYWdlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRlc3QsIGFzc2VydEVxdWFscywgYXNzZXJ0VHJ1ZSB9IGZyb20gXCJAYWVyb2tpdC9zZGsvanVuaXRcIjtcbiAqIFxuICogdGVzdChcInNob3VsZCBhZGQgdHdvIG51bWJlcnMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAqICAgICBjb25zdCByZXN1bHQgPSBhZGQoMiwgMyk7XG4gKiAgICAgYXNzZXJ0RXF1YWxzKDUsIHJlc3VsdCk7XG4gKiB9KTtcbiAqIFxuICogdGVzdChcInNob3VsZCByZXR1cm4gdHJ1ZSBmb3IgdmFsaWQgaW5wdXRcIiwgKCkgPT4ge1xuICogICAgIGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0ZUlucHV0KFwidmFsaWQgaW5wdXRcIik7XG4gKiAgICAgYXNzZXJ0VHJ1ZShpc1ZhbGlkKTtcbiAqIH0pO1xuICogYGBgXG4gKi9cblxuY29uc3QgQXNzZXJ0ID0gSmF2YS50eXBlKCdvcmcuanVuaXQuQXNzZXJ0Jyk7XG5cbi8qKlxuICogRGVmaW5lcyBhIHRlc3QgY2FzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlLlxuICogQHBhcmFtIHRlc3RGbiBUaGUgZnVuY3Rpb24gY29udGFpbmluZyB0aGUgdGVzdCBsb2dpYyBhbmQgYXNzZXJ0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCB0ZXN0Rm46ICgpID0+IHZvaWQpIHtcbiAgICAvLyBDYWxscyB0aGUgZ2xvYmFsIHRlc3QgcnVubmVyIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRoZSBTREsgZW52aXJvbm1lbnQuXG4gICAgKGdsb2JhbFRoaXMgYXMgYW55KS50ZXN0KG5hbWUsIHRlc3RGbik7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHR3byBvYmplY3RzIG9yIHByaW1pdGl2ZSB2YWx1ZXMgYXJlIGVxdWFsLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZXMgYmVpbmcgY29tcGFyZWQuXG4gKiBAcGFyYW0gZXhwZWN0ZWQgVGhlIGV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4oZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4obWVzc2FnZTogc3RyaW5nLCBleHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEVxdWFsczxUPihtZXNzYWdlT3JFeHBlY3RlZD86IHN0cmluZyB8IFQsIGV4cGVjdGVkT3JBY3R1YWw/OiBULCBhY3R1YWxPclVuZGVmaW5lZD86IFQpOiB2b2lkIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBBc3NlcnQuYXNzZXJ0RXF1YWxzKG1lc3NhZ2VPckV4cGVjdGVkLCBleHBlY3RlZE9yQWN0dWFsLCBhY3R1YWxPclVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmFzc2VydEVxdWFscyhtZXNzYWdlT3JFeHBlY3RlZCwgZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBiZWluZyBjb21wYXJlZC5cbiAqIEBwYXJhbSB1bmV4cGVjdGVkIFRoZSB1bmV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4odW5leHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsczxUPihtZXNzYWdlOiBzdHJpbmcsIHVuZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4obWVzc2FnZU9yVW5leHBlY3RlZD86IHN0cmluZyB8IFQsIHVuZXhwZWN0ZWRPckFjdHVhbD86IFQsIGFjdHVhbE9yVW5kZWZpbmVkPzogVCk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnROb3RFcXVhbHMobWVzc2FnZU9yVW5leHBlY3RlZCwgdW5leHBlY3RlZE9yQWN0dWFsLCBhY3R1YWxPclVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmFzc2VydE5vdEVxdWFscyhtZXNzYWdlT3JVbmV4cGVjdGVkLCB1bmV4cGVjdGVkT3JBY3R1YWwpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgdHJ1ZS5cbiAqXG4gKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBjb25kaXRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShjb25kaXRpb246IGJvb2xlYW4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VHJ1ZShtZXNzYWdlOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbj86IHN0cmluZyB8IGJvb2xlYW4sIGNvbmRpdGlvbk9yVW5kZWZpbmVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbik7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIGNvbmRpdGlvbiBpcyBmYWxzZS5cbiAqXG4gKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBjb25kaXRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RmFsc2UoY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKG1lc3NhZ2U6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKG1lc3NhZ2VPckNvbmRpdGlvbj86IHN0cmluZyB8IGJvb2xlYW4sIGNvbmRpdGlvbk9yVW5kZWZpbmVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIEFzc2VydC5hc3NlcnRGYWxzZShtZXNzYWdlT3JDb25kaXRpb24sIGNvbmRpdGlvbk9yVW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBBc3NlcnQuYXNzZXJ0RmFsc2UobWVzc2FnZU9yQ29uZGl0aW9uKTtcbiAgICB9XG59XG5cbi8qKlxuICogRmFpbHMgYSB0ZXN0IGltbWVkaWF0ZWx5LlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbCgpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgQXNzZXJ0LmZhaWwobWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXNzZXJ0LmZhaWwoKTtcbiAgICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBZ0NBLE1BQU0sU0FBUyxLQUFLLEtBQUssa0JBQWtCO0FBUXBDLFNBQVMsS0FBSyxNQUFjLFFBQW9CO0FBRW5ELEVBQUMsV0FBbUIsS0FBSyxNQUFNLE1BQU07QUFDekM7QUFZTyxTQUFTLGFBQWdCLG1CQUFnQyxrQkFBc0IsbUJBQTZCO0FBQy9HLE1BQUksVUFBVSxXQUFXLEdBQUc7QUFDeEIsV0FBTyxhQUFhLG1CQUFtQixrQkFBa0IsaUJBQWlCO0FBQUEsRUFDOUUsT0FBTztBQUNILFdBQU8sYUFBYSxtQkFBbUIsZ0JBQWdCO0FBQUEsRUFDM0Q7QUFDSjtBQVlPLFNBQVMsZ0JBQW1CLHFCQUFrQyxvQkFBd0IsbUJBQTZCO0FBQ3RILE1BQUksVUFBVSxXQUFXLEdBQUc7QUFDeEIsV0FBTyxnQkFBZ0IscUJBQXFCLG9CQUFvQixpQkFBaUI7QUFBQSxFQUNyRixPQUFPO0FBQ0gsV0FBTyxnQkFBZ0IscUJBQXFCLGtCQUFrQjtBQUFBLEVBQ2xFO0FBQ0o7QUFVTyxTQUFTLFdBQVcsb0JBQXVDLHNCQUFzQztBQUNwRyxNQUFJLFVBQVUsV0FBVyxHQUFHO0FBQ3hCLFdBQU8sV0FBVyxvQkFBb0Isb0JBQW9CO0FBQUEsRUFDOUQsT0FBTztBQUNILFdBQU8sV0FBVyxrQkFBa0I7QUFBQSxFQUN4QztBQUNKO0FBVU8sU0FBUyxZQUFZLG9CQUF1QyxzQkFBc0M7QUFDckcsTUFBSSxVQUFVLFdBQVcsR0FBRztBQUN4QixXQUFPLFlBQVksb0JBQW9CLG9CQUFvQjtBQUFBLEVBQy9ELE9BQU87QUFDSCxXQUFPLFlBQVksa0JBQWtCO0FBQUEsRUFDekM7QUFDSjtBQVNPLFNBQVMsS0FBSyxTQUF3QjtBQUN6QyxNQUFJLFNBQVM7QUFDVCxXQUFPLEtBQUssT0FBTztBQUFBLEVBQ3ZCLE9BQU87QUFDSCxXQUFPLEtBQUs7QUFBQSxFQUNoQjtBQUNKOyIsCiAgIm5hbWVzIjogW10KfQo=
135
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2p1bml0L2p1bml0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBtb2R1bGUganVuaXQvanVuaXRcbiAqIEBwYWNrYWdlIEBhZXJva2l0L3Nkay9qdW5pdFxuICogQG5hbWUgSlVuaXRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgSlVuaXQgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZWZpbmluZyB0ZXN0cyBhbmQgcGVyZm9ybWluZyBhc3NlcnRpb25zLCB3cmFwcGluZyB0aGUgbmF0aXZlIEpVbml0IEFzc2VydGlvbnMgZm9yIHVzZSBpbiBUeXBlU2NyaXB0L0phdmFTY3JpcHQgdGVzdHMuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHdyaXRlIHRlc3QgY2FzZXMgaW4gYSBmYW1pbGlhciBmb3JtYXQgd2hpbGUgbGV2ZXJhZ2luZyB0aGUgcG93ZXJmdWwgYXNzZXJ0aW9uIGNhcGFiaWxpdGllcyBvZiBKVW5pdCwgbWFraW5nIGl0IGVhc2llciB0byB2YWxpZGF0ZSBjb2RlIGJlaGF2aW9yIGFuZCBlbnN1cmUgY29ycmVjdG5lc3MuXG4gKiBcbiAqICMjIyBLZXkgRmVhdHVyZXM6XG4gKiAtICoqVGVzdCBEZWZpbml0aW9uKio6IFRoZSBgdGVzdGAgZnVuY3Rpb24gYWxsb3dzIGRldmVsb3BlcnMgdG8gZGVmaW5lIGluZGl2aWR1YWwgdGVzdCBjYXNlcyB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSBhbmQgYSBmdW5jdGlvbiBjb250YWluaW5nIHRoZSB0ZXN0IGxvZ2ljLlxuICogLSAqKkFzc2VydGlvbnMqKjogRnVuY3Rpb25zIHN1Y2ggYXMgYGFzc2VydEVxdWFsc2AsIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0VHJ1ZWAsIGBhc3NlcnRGYWxzZWAsIGFuZCBgZmFpbGAgcHJvdmlkZSBhIHZhcmlldHkgb2YgYXNzZXJ0aW9uIG1ldGhvZHMgdG8gdmFsaWRhdGUgY29uZGl0aW9ucyBhbmQgY29tcGFyZSB2YWx1ZXMgd2l0aGluIHRlc3RzLlxuICogLSAqKlJlc3VsdCBUcmFja2luZyoqOiBUZXN0IHJlc3VsdHMgYXJlIGF1dG9tYXRpY2FsbHkgY2FwdHVyZWQgYW5kIGNhbiBiZSByZXRyaWV2ZWQgdmlhIHRoZSByZXN1bHRzIEFQSS5cbiAqIFxuICogIyMjIFVzZSBDYXNlczpcbiAqIC0gKipVbml0IFRlc3RpbmcqKjogVGhlc2UgdXRpbGl0aWVzIGFyZSBwcmltYXJpbHkgdXNlZCBmb3Igd3JpdGluZyB1bml0IHRlc3RzIHRvIHZlcmlmeSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBpbmRpdmlkdWFsIGNvbXBvbmVudHMgb3IgZnVuY3Rpb25zIGluIGlzb2xhdGlvbi5cbiAqIC0gKipJbnRlZ3JhdGlvbiBUZXN0aW5nKio6IFRoZXkgY2FuIGFsc28gYmUgdXNlZCBpbiBpbnRlZ3JhdGlvbiB0ZXN0cyB0byB2YWxpZGF0ZSB0aGUgYmVoYXZpb3Igb2YgbXVsdGlwbGUgY29tcG9uZW50cyB3b3JraW5nIHRvZ2V0aGVyLCBlbnN1cmluZyB0aGF0IHRoZXkgaW50ZXJhY3QgY29ycmVjdGx5LlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0ZXN0LCBhc3NlcnRFcXVhbHMsIGFzc2VydFRydWUsIHN0b3JlUmVzdWx0cyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvanVuaXRcIjtcbiAqIFxuICogdGVzdChcInNob3VsZCBhZGQgdHdvIG51bWJlcnMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAqICAgICBjb25zdCByZXN1bHQgPSAyICsgMztcbiAqICAgICBhc3NlcnRFcXVhbHMoNSwgcmVzdWx0KTtcbiAqIH0pO1xuICogXG4gKiB0ZXN0KFwic2hvdWxkIHJldHVybiB0cnVlIGZvciB2YWxpZCBpbnB1dFwiLCAoKSA9PiB7XG4gKiAgICAgY29uc3QgaXNWYWxpZCA9IGZhbHNlOyAvLyBSZXBsYWNlIHdpdGggYWN0dWFsIHZhbGlkYXRpb24gbG9naWNcbiAqICAgICBhc3NlcnRUcnVlKGlzVmFsaWQpO1xuICogfSk7XG4gKiBcbiAqIC8vIEFmdGVyIHJ1bm5pbmcgdGVzdHMsIHN0b3JlIHJlc3VsdHMgZm9yIGxhdGVyIHJldHJpZXZhbFxuICogc3RvcmVSZXN1bHRzKCk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ0BhZXJva2l0L3Nkay9odHRwJztcblxuY29uc3QgQXNzZXJ0aW9ucyA9IEphdmEudHlwZSgnb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLkFzc2VydGlvbnMnKTtcbmNvbnN0IFRlc3RSZXN1bHRzU2VydmljZSA9IEphdmEudHlwZSgnb3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuaWRlLmp1bml0LnNlcnZpY2UuVGVzdFJlc3VsdHNTZXJ2aWNlJyk7XG5jb25zdCBBcnJheUxpc3QgPSBKYXZhLnR5cGUoJ2phdmEudXRpbC5BcnJheUxpc3QnKTtcbmNvbnN0IFRlc3RSZXN1bHQgPSBKYXZhLnR5cGUoJ29yZy5lY2xpcHNlLmRpcmlnaWJsZS5jb21wb25lbnRzLmlkZS5qdW5pdC5kb21haW4uVGVzdFJlc3VsdCcpO1xuXG4vLyBUZXN0IFJlc3VsdCBUcmFja2luZ1xuaW50ZXJmYWNlIFRlc3RSZXN1bHQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdGF0dXM6ICdwYXNzZWQnIHwgJ2ZhaWxlZCcgfCAnc2tpcHBlZCc7XG4gICAgZHVyYXRpb246IG51bWJlcjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBzdGFja1RyYWNlPzogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5jbGFzcyBUZXN0UmVzdWx0Q29sbGVjdG9yIHtcbiAgICBwcml2YXRlIHJlc3VsdHM6IFRlc3RSZXN1bHRbXSA9IFtdO1xuICAgIHByaXZhdGUgY3VycmVudFRlc3Q6IHsgbmFtZTogc3RyaW5nOyBzdGFydFRpbWU6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBoYXZlRmFpbGVkVGVzdHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBoYXNGYWlsZWRUZXN0cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGF2ZUZhaWxlZFRlc3RzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWNvcmRUZXN0U3RhcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFRlc3QgPSB7IG5hbWUsIHN0YXJ0VGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVjb3JkVGVzdENvbXBsZXRlKHN0YXR1czogJ3Bhc3NlZCcgfCAnZmFpbGVkJyB8ICdza2lwcGVkJywgZXJyb3I/OiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2tUcmFjZT86IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50VGVzdCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVGVzdFJlc3VsdCA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuY3VycmVudFRlc3QubmFtZSxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuY3VycmVudFRlc3Quc3RhcnRUaW1lLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlc3VsdC5lcnJvciA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICByZXN1bHQuc3RhY2tUcmFjZSA9IGVycm9yLnN0YWNrVHJhY2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gbnVsbDtcblxuICAgICAgICBpZiAoc3RhdHVzID09PSAnZmFpbGVkJyB8fCBlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5oYXZlRmFpbGVkVGVzdHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlc3VsdHMoKTogVGVzdFJlc3VsdFtdIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLnJlc3VsdHNdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9yZVJlc3VsdHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHNMaXN0ID0gbmV3IEFycmF5TGlzdCgpO1xuICAgICAgICB0aGlzLnJlc3VsdHMuZm9yRWFjaChlID0+IHJlc3VsdHNMaXN0LmFkZChuZXcgVGVzdFJlc3VsdChlLm5hbWUsIGUuc3RhdHVzLCBlLmR1cmF0aW9uLCBlLmVycm9yLCBlLnN0YWNrVHJhY2UsIGUudGltZXN0YW1wKSkpO1xuICAgICAgICBUZXN0UmVzdWx0c1NlcnZpY2UuZ2V0KCkuc3RvcmVSZXN1bHRzKHJlc3VsdHNMaXN0KTtcbiAgICAgICAgUmVzcG9uc2Uuc2VuZFJlZGlyZWN0KCcvc2VydmljZXMvd2ViL2lkZS1qdW5pdC1yZXN1bHRzL2p1bml0LXJlc3VsdHMnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3VtbWFyeSgpOiB7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHBhc3NlZDogbnVtYmVyO1xuICAgICAgICBmYWlsZWQ6IG51bWJlcjtcbiAgICAgICAgc2tpcHBlZDogbnVtYmVyO1xuICAgICAgICBkdXJhdGlvbjogbnVtYmVyO1xuICAgIH0ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5yZXN1bHRzO1xuICAgICAgICBjb25zdCB0b3RhbCA9IHJlc3VsdHMubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXNzZWQgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAncGFzc2VkJykubGVuZ3RoO1xuICAgICAgICBjb25zdCBmYWlsZWQgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAnZmFpbGVkJykubGVuZ3RoO1xuICAgICAgICBjb25zdCBza2lwcGVkID0gcmVzdWx0cy5maWx0ZXIociA9PiByLnN0YXR1cyA9PT0gJ3NraXBwZWQnKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gcmVzdWx0cy5yZWR1Y2UoKHN1bSwgcikgPT4gc3VtICsgci5kdXJhdGlvbiwgMCk7XG5cbiAgICAgICAgcmV0dXJuIHsgdG90YWwsIHBhc3NlZCwgZmFpbGVkLCBza2lwcGVkLCBkdXJhdGlvbiB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclJlc3VsdHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzdWx0cyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYXZlRmFpbGVkVGVzdHMgPSBmYWxzZTtcbiAgICB9XG59XG5cbmNvbnN0IHJlc3VsdENvbGxlY3RvciA9IG5ldyBUZXN0UmVzdWx0Q29sbGVjdG9yKCk7XG5cbi8qKlxuICogRGVmaW5lcyBhIHRlc3QgY2FzZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlLlxuICogQHBhcmFtIHRlc3RGbiBUaGUgZnVuY3Rpb24gY29udGFpbmluZyB0aGUgdGVzdCBsb2dpYyBhbmQgYXNzZXJ0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCB0ZXN0Rm46ICgpID0+IHZvaWQpIHtcbiAgICByZXN1bHRDb2xsZWN0b3IucmVjb3JkVGVzdFN0YXJ0KG5hbWUpO1xuICAgIGlmIChyZXN1bHRDb2xsZWN0b3IuaGFzRmFpbGVkVGVzdHMoKSkge1xuICAgICAgICByZXN1bHRDb2xsZWN0b3IucmVjb3JkVGVzdENvbXBsZXRlKCdza2lwcGVkJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAtIFNraXBwaW5nIHRlc3QgXCIke25hbWV9XCIgZHVlIHRvIHByZXZpb3VzIGZhaWx1cmVzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRlc3RGbigpO1xuICAgICAgICAgICAgcmVzdWx0Q29sbGVjdG9yLnJlY29yZFRlc3RDb21wbGV0ZSgncGFzc2VkJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rvci5yZWNvcmRUZXN0Q29tcGxldGUoJ2ZhaWxlZCcsIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgICAgIHN0YWNrVHJhY2U6IGVycm9yPy5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBlcXVhbC5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgdmFsdWVzIGJlaW5nIGNvbXBhcmVkLlxuICogQHBhcmFtIGV4cGVjdGVkIFRoZSBleHBlY3RlZCB2YWx1ZS5cbiAqIEBwYXJhbSBhY3R1YWwgVGhlIGFjdHVhbCB2YWx1ZS5cbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzPFQ+KGV4cGVjdGVkOiBULCBhY3R1YWw6IFQpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzPFQ+KG1lc3NhZ2U6IHN0cmluZywgZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFcXVhbHM8VD4obWVzc2FnZU9yRXhwZWN0ZWQ/OiBzdHJpbmcgfCBULCBleHBlY3RlZE9yQWN0dWFsPzogVCwgYWN0dWFsT3JVbmRlZmluZWQ/OiBUKTogdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMobWVzc2FnZU9yRXhwZWN0ZWQsIGV4cGVjdGVkT3JBY3R1YWwsIGFjdHVhbE9yVW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscyhtZXNzYWdlT3JFeHBlY3RlZCwgZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCB0d28gb2JqZWN0cyBvciBwcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBiZWluZyBjb21wYXJlZC5cbiAqIEBwYXJhbSB1bmV4cGVjdGVkIFRoZSB1bmV4cGVjdGVkIHZhbHVlLlxuICogQHBhcmFtIGFjdHVhbCBUaGUgYWN0dWFsIHZhbHVlLlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4odW5leHBlY3RlZDogVCwgYWN0dWFsOiBUKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vdEVxdWFsczxUPihtZXNzYWdlOiBzdHJpbmcsIHVuZXhwZWN0ZWQ6IFQsIGFjdHVhbDogVCk6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbHM8VD4obWVzc2FnZU9yVW5leHBlY3RlZD86IHN0cmluZyB8IFQsIHVuZXhwZWN0ZWRPckFjdHVhbD86IFQsIGFjdHVhbE9yVW5kZWZpbmVkPzogVCk6IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90RXF1YWxzKG1lc3NhZ2VPclVuZXhwZWN0ZWQsIHVuZXhwZWN0ZWRPckFjdHVhbCwgYWN0dWFsT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90RXF1YWxzKG1lc3NhZ2VPclVuZXhwZWN0ZWQsIHVuZXhwZWN0ZWRPckFjdHVhbCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIGNvbmRpdGlvbiBpcyB0cnVlLlxuICpcbiAqIEBwYXJhbSBjb25kaXRpb24gVGhlIGNvbmRpdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIG1lc3NhZ2UgT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUcnVlKG1lc3NhZ2U6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFRydWUobWVzc2FnZU9yQ29uZGl0aW9uPzogc3RyaW5nIHwgYm9vbGVhbiwgY29uZGl0aW9uT3JVbmRlZmluZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRUcnVlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0VHJ1ZShtZXNzYWdlT3JDb25kaXRpb24pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgZmFsc2UuXG4gKlxuICogQHBhcmFtIGNvbmRpdGlvbiBUaGUgY29uZGl0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gbWVzc2FnZSBPcHRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkgaWYgdGhlIGFzc2VydGlvbiBmYWlscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZhbHNlKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWxzZShtZXNzYWdlOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRGYWxzZShtZXNzYWdlT3JDb25kaXRpb24/OiBzdHJpbmcgfCBib29sZWFuLCBjb25kaXRpb25PclVuZGVmaW5lZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBBc3NlcnRpb25zLmFzc2VydEZhbHNlKG1lc3NhZ2VPckNvbmRpdGlvbiwgY29uZGl0aW9uT3JVbmRlZmluZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RmFsc2UobWVzc2FnZU9yQ29uZGl0aW9uKTtcbiAgICB9XG59XG5cbi8qKlxuICogRmFpbHMgYSB0ZXN0IGltbWVkaWF0ZWx5LlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbCgpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZmFpbChtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgQXNzZXJ0aW9ucy5mYWlsKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIEFzc2VydGlvbnMuZmFpbCgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYWxsIHRlc3QgcmVzdWx0cyBjb2xsZWN0ZWQgZHVyaW5nIHRoaXMgc2Vzc2lvbi5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0ZXN0IHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXN1bHRzKCk6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3RhdHVzOiAncGFzc2VkJyB8ICdmYWlsZWQnIHwgJ3NraXBwZWQnO1xuICAgIGR1cmF0aW9uOiBudW1iZXI7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgc3RhY2tUcmFjZT86IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IG51bWJlcjtcbn0+IHtcbiAgICByZXR1cm4gcmVzdWx0Q29sbGVjdG9yLmdldFJlc3VsdHMoKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBzdW1tYXJ5IG9mIHRlc3QgZXhlY3V0aW9uLlxuICpcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIGNvdW50cyBhbmQgdG90YWwgZHVyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXN1bHRzU3VtbWFyeSgpOiB7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBwYXNzZWQ6IG51bWJlcjtcbiAgICBmYWlsZWQ6IG51bWJlcjtcbiAgICBza2lwcGVkOiBudW1iZXI7XG4gICAgZHVyYXRpb246IG51bWJlcjtcbn0ge1xuICAgIHJldHVybiByZXN1bHRDb2xsZWN0b3IuZ2V0U3VtbWFyeSgpO1xufVxuXG4vKipcbiAqIENsZWFycyBhbGwgY29sbGVjdGVkIHRlc3QgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyUmVzdWx0cygpOiB2b2lkIHtcbiAgICByZXN1bHRDb2xsZWN0b3IuY2xlYXJSZXN1bHRzKCk7XG59XG5cbi8qKlxuICogQ2xlYXJzIGFsbCBjb2xsZWN0ZWQgdGVzdCByZXN1bHRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcmVSZXN1bHRzKCk6IHZvaWQge1xuICAgIHJlc3VsdENvbGxlY3Rvci5zdG9yZVJlc3VsdHMoKTtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUFvQ0EsU0FBUyxnQkFBZ0I7QUFFekIsTUFBTSxhQUFhLEtBQUssS0FBSyxrQ0FBa0M7QUFDL0QsTUFBTSxxQkFBcUIsS0FBSyxLQUFLLHVFQUF1RTtBQUM1RyxNQUFNLFlBQVksS0FBSyxLQUFLLHFC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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aerokit/sdk",
3
- "version": "12.82.0",
3
+ "version": "12.85.0",
4
4
  "description": "Unified TypeScript SDK for modern cloud platforms.",
5
5
  "scripts": {
6
6
  "clean": "rm -rf dist",