@azure-rest/load-testing 1.1.0-beta.1 → 1.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +1 -1
  3. package/README.md +12 -13
  4. package/dist/browser/azureLoadTesting.js +14 -12
  5. package/dist/browser/azureLoadTesting.js.map +1 -1
  6. package/dist/browser/clientDefinitions.d.ts +66 -34
  7. package/dist/browser/clientDefinitions.js.map +1 -1
  8. package/dist/browser/getFileValidationPoller.js +16 -11
  9. package/dist/browser/getFileValidationPoller.js.map +1 -1
  10. package/dist/browser/getTestProfileRunCompletionPoller.js +16 -11
  11. package/dist/browser/getTestProfileRunCompletionPoller.js.map +1 -1
  12. package/dist/browser/getTestRunCompletionPoller.js +16 -11
  13. package/dist/browser/getTestRunCompletionPoller.js.map +1 -1
  14. package/dist/browser/index.d.ts +6 -6
  15. package/dist/browser/index.js +1 -7
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/browser/isUnexpected.d.ts +15 -9
  18. package/dist/browser/isUnexpected.js +21 -13
  19. package/dist/browser/isUnexpected.js.map +1 -1
  20. package/dist/browser/models.d.ts +205 -172
  21. package/dist/browser/models.js.map +1 -1
  22. package/dist/browser/outputModels.d.ts +290 -208
  23. package/dist/browser/outputModels.js.map +1 -1
  24. package/dist/browser/paginateHelper.js +43 -73
  25. package/dist/browser/paginateHelper.js.map +1 -1
  26. package/dist/browser/parameters.d.ts +107 -66
  27. package/dist/browser/parameters.js.map +1 -1
  28. package/dist/browser/pollingHelper.d.ts +82 -4
  29. package/dist/browser/pollingHelper.js +119 -15
  30. package/dist/browser/pollingHelper.js.map +1 -1
  31. package/dist/browser/responses.d.ts +234 -121
  32. package/dist/browser/responses.js.map +1 -1
  33. package/dist/commonjs/azureLoadTesting.js +53 -45
  34. package/dist/commonjs/azureLoadTesting.js.map +7 -1
  35. package/dist/commonjs/clientDefinitions.d.ts +66 -34
  36. package/dist/commonjs/clientDefinitions.js +15 -5
  37. package/dist/commonjs/clientDefinitions.js.map +7 -1
  38. package/dist/commonjs/getFileValidationPoller.js +151 -137
  39. package/dist/commonjs/getFileValidationPoller.js.map +7 -1
  40. package/dist/commonjs/getTestProfileRunCompletionPoller.js +139 -127
  41. package/dist/commonjs/getTestProfileRunCompletionPoller.js.map +7 -1
  42. package/dist/commonjs/getTestRunCompletionPoller.js +139 -125
  43. package/dist/commonjs/getTestRunCompletionPoller.js.map +7 -1
  44. package/dist/commonjs/index.d.ts +6 -6
  45. package/dist/commonjs/index.js +46 -20
  46. package/dist/commonjs/index.js.map +7 -1
  47. package/dist/commonjs/isUnexpected.d.ts +15 -9
  48. package/dist/commonjs/isUnexpected.js +118 -105
  49. package/dist/commonjs/isUnexpected.js.map +7 -1
  50. package/dist/commonjs/logger.js +28 -8
  51. package/dist/commonjs/logger.js.map +7 -1
  52. package/dist/commonjs/models.d.ts +205 -172
  53. package/dist/commonjs/models.js +15 -5
  54. package/dist/commonjs/models.js.map +7 -1
  55. package/dist/commonjs/outputModels.d.ts +290 -208
  56. package/dist/commonjs/outputModels.js +15 -5
  57. package/dist/commonjs/outputModels.js.map +7 -1
  58. package/dist/commonjs/paginateHelper.js +118 -158
  59. package/dist/commonjs/paginateHelper.js.map +7 -1
  60. package/dist/commonjs/parameters.d.ts +107 -66
  61. package/dist/commonjs/parameters.js +15 -5
  62. package/dist/commonjs/parameters.js.map +7 -1
  63. package/dist/commonjs/pollingHelper.d.ts +82 -4
  64. package/dist/commonjs/pollingHelper.js +143 -24
  65. package/dist/commonjs/pollingHelper.js.map +7 -1
  66. package/dist/commonjs/responses.d.ts +234 -121
  67. package/dist/commonjs/responses.js +15 -5
  68. package/dist/commonjs/responses.js.map +7 -1
  69. package/dist/commonjs/tsdoc-metadata.json +11 -11
  70. package/dist/commonjs/util/LROUtil.js +76 -54
  71. package/dist/commonjs/util/LROUtil.js.map +7 -1
  72. package/dist/esm/azureLoadTesting.js +32 -40
  73. package/dist/esm/azureLoadTesting.js.map +7 -1
  74. package/dist/esm/clientDefinitions.d.ts +66 -34
  75. package/dist/esm/clientDefinitions.js +0 -4
  76. package/dist/esm/clientDefinitions.js.map +7 -1
  77. package/dist/esm/getFileValidationPoller.js +126 -132
  78. package/dist/esm/getFileValidationPoller.js.map +7 -1
  79. package/dist/esm/getTestProfileRunCompletionPoller.js +114 -122
  80. package/dist/esm/getTestProfileRunCompletionPoller.js.map +7 -1
  81. package/dist/esm/getTestRunCompletionPoller.js +114 -120
  82. package/dist/esm/getTestRunCompletionPoller.js.map +7 -1
  83. package/dist/esm/index.d.ts +6 -6
  84. package/dist/esm/index.js +5 -11
  85. package/dist/esm/index.js.map +7 -1
  86. package/dist/esm/isUnexpected.d.ts +15 -9
  87. package/dist/esm/isUnexpected.js +96 -103
  88. package/dist/esm/isUnexpected.js.map +7 -1
  89. package/dist/esm/logger.js +4 -4
  90. package/dist/esm/logger.js.map +7 -1
  91. package/dist/esm/models.d.ts +205 -172
  92. package/dist/esm/models.js +0 -4
  93. package/dist/esm/models.js.map +7 -1
  94. package/dist/esm/outputModels.d.ts +290 -208
  95. package/dist/esm/outputModels.js +0 -4
  96. package/dist/esm/outputModels.js.map +7 -1
  97. package/dist/esm/paginateHelper.js +95 -155
  98. package/dist/esm/paginateHelper.js.map +7 -1
  99. package/dist/esm/parameters.d.ts +107 -66
  100. package/dist/esm/parameters.js +0 -4
  101. package/dist/esm/parameters.js.map +7 -1
  102. package/dist/esm/pollingHelper.d.ts +82 -4
  103. package/dist/esm/pollingHelper.js +117 -18
  104. package/dist/esm/pollingHelper.js.map +7 -1
  105. package/dist/esm/responses.d.ts +234 -121
  106. package/dist/esm/responses.js +0 -4
  107. package/dist/esm/responses.js.map +7 -1
  108. package/dist/esm/util/LROUtil.js +52 -50
  109. package/dist/esm/util/LROUtil.js.map +7 -1
  110. package/dist/react-native/azureLoadTesting.js +14 -12
  111. package/dist/react-native/azureLoadTesting.js.map +1 -1
  112. package/dist/react-native/clientDefinitions.d.ts +66 -34
  113. package/dist/react-native/clientDefinitions.js.map +1 -1
  114. package/dist/react-native/getFileValidationPoller.js +16 -11
  115. package/dist/react-native/getFileValidationPoller.js.map +1 -1
  116. package/dist/react-native/getTestProfileRunCompletionPoller.js +16 -11
  117. package/dist/react-native/getTestProfileRunCompletionPoller.js.map +1 -1
  118. package/dist/react-native/getTestRunCompletionPoller.js +16 -11
  119. package/dist/react-native/getTestRunCompletionPoller.js.map +1 -1
  120. package/dist/react-native/index.d.ts +6 -6
  121. package/dist/react-native/index.js +1 -7
  122. package/dist/react-native/index.js.map +1 -1
  123. package/dist/react-native/isUnexpected.d.ts +15 -9
  124. package/dist/react-native/isUnexpected.js +21 -13
  125. package/dist/react-native/isUnexpected.js.map +1 -1
  126. package/dist/react-native/models.d.ts +205 -172
  127. package/dist/react-native/models.js.map +1 -1
  128. package/dist/react-native/outputModels.d.ts +290 -208
  129. package/dist/react-native/outputModels.js.map +1 -1
  130. package/dist/react-native/paginateHelper.js +43 -73
  131. package/dist/react-native/paginateHelper.js.map +1 -1
  132. package/dist/react-native/parameters.d.ts +107 -66
  133. package/dist/react-native/parameters.js.map +1 -1
  134. package/dist/react-native/pollingHelper.d.ts +82 -4
  135. package/dist/react-native/pollingHelper.js +119 -15
  136. package/dist/react-native/pollingHelper.js.map +1 -1
  137. package/dist/react-native/responses.d.ts +234 -121
  138. package/dist/react-native/responses.js.map +1 -1
  139. package/package.json +69 -86
  140. package/review/{load-testing.api.md → load-testing-node.api.md} +420 -23
  141. package/dist/browser/azureLoadTesting.d.ts.map +0 -1
  142. package/dist/browser/clientDefinitions.d.ts.map +0 -1
  143. package/dist/browser/getFileValidationPoller.d.ts.map +0 -1
  144. package/dist/browser/getTestProfileRunCompletionPoller.d.ts.map +0 -1
  145. package/dist/browser/getTestRunCompletionPoller.d.ts.map +0 -1
  146. package/dist/browser/index.d.ts.map +0 -1
  147. package/dist/browser/isUnexpected.d.ts.map +0 -1
  148. package/dist/browser/logger.d.ts.map +0 -1
  149. package/dist/browser/models.d.ts.map +0 -1
  150. package/dist/browser/outputModels.d.ts.map +0 -1
  151. package/dist/browser/paginateHelper.d.ts.map +0 -1
  152. package/dist/browser/parameters.d.ts.map +0 -1
  153. package/dist/browser/pollingHelper.d.ts.map +0 -1
  154. package/dist/browser/responses.d.ts.map +0 -1
  155. package/dist/browser/util/LROUtil.d.ts.map +0 -1
  156. package/dist/commonjs/azureLoadTesting.d.ts.map +0 -1
  157. package/dist/commonjs/clientDefinitions.d.ts.map +0 -1
  158. package/dist/commonjs/getFileValidationPoller.d.ts.map +0 -1
  159. package/dist/commonjs/getTestProfileRunCompletionPoller.d.ts.map +0 -1
  160. package/dist/commonjs/getTestRunCompletionPoller.d.ts.map +0 -1
  161. package/dist/commonjs/index.d.ts.map +0 -1
  162. package/dist/commonjs/isUnexpected.d.ts.map +0 -1
  163. package/dist/commonjs/logger.d.ts.map +0 -1
  164. package/dist/commonjs/models.d.ts.map +0 -1
  165. package/dist/commonjs/outputModels.d.ts.map +0 -1
  166. package/dist/commonjs/paginateHelper.d.ts.map +0 -1
  167. package/dist/commonjs/parameters.d.ts.map +0 -1
  168. package/dist/commonjs/pollingHelper.d.ts.map +0 -1
  169. package/dist/commonjs/responses.d.ts.map +0 -1
  170. package/dist/commonjs/util/LROUtil.d.ts.map +0 -1
  171. package/dist/esm/azureLoadTesting.d.ts.map +0 -1
  172. package/dist/esm/clientDefinitions.d.ts.map +0 -1
  173. package/dist/esm/getFileValidationPoller.d.ts.map +0 -1
  174. package/dist/esm/getTestProfileRunCompletionPoller.d.ts.map +0 -1
  175. package/dist/esm/getTestRunCompletionPoller.d.ts.map +0 -1
  176. package/dist/esm/index.d.ts.map +0 -1
  177. package/dist/esm/isUnexpected.d.ts.map +0 -1
  178. package/dist/esm/logger.d.ts.map +0 -1
  179. package/dist/esm/models.d.ts.map +0 -1
  180. package/dist/esm/outputModels.d.ts.map +0 -1
  181. package/dist/esm/paginateHelper.d.ts.map +0 -1
  182. package/dist/esm/parameters.d.ts.map +0 -1
  183. package/dist/esm/pollingHelper.d.ts.map +0 -1
  184. package/dist/esm/responses.d.ts.map +0 -1
  185. package/dist/esm/util/LROUtil.d.ts.map +0 -1
  186. package/dist/react-native/azureLoadTesting.d.ts.map +0 -1
  187. package/dist/react-native/clientDefinitions.d.ts.map +0 -1
  188. package/dist/react-native/getFileValidationPoller.d.ts.map +0 -1
  189. package/dist/react-native/getTestProfileRunCompletionPoller.d.ts.map +0 -1
  190. package/dist/react-native/getTestRunCompletionPoller.d.ts.map +0 -1
  191. package/dist/react-native/index.d.ts.map +0 -1
  192. package/dist/react-native/isUnexpected.d.ts.map +0 -1
  193. package/dist/react-native/logger.d.ts.map +0 -1
  194. package/dist/react-native/models.d.ts.map +0 -1
  195. package/dist/react-native/outputModels.d.ts.map +0 -1
  196. package/dist/react-native/paginateHelper.d.ts.map +0 -1
  197. package/dist/react-native/parameters.d.ts.map +0 -1
  198. package/dist/react-native/pollingHelper.d.ts.map +0 -1
  199. package/dist/react-native/responses.d.ts.map +0 -1
  200. package/dist/react-native/util/LROUtil.d.ts.map +0 -1
@@ -1,127 +1,119 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
1
  import { AbortError } from "@azure/abort-controller";
4
2
  import { isUnexpected } from "./isUnexpected.js";
5
3
  import { sleep, isTestProfileRunInProgress } from "./util/LROUtil.js";
6
- /**
7
- * Creates a poller to poll for test run status.
8
- * @param client - The Load Testing client.
9
- * @param options - The operation options.
10
- * @returns A poller which can be called to poll until completion of the job.
11
- */
12
- export async function getTestProfileRunCompletionPoller(client, createTestProfileRunResponse, polledOperationOptions = {}) {
13
- var _a;
14
- const state = {
15
- status: "notStarted",
16
- };
17
- const progressCallbacks = new Map();
18
- const processProgressCallbacks = async () => progressCallbacks.forEach((h) => h(state));
19
- let resultPromise;
20
- let cancelJob;
21
- const abortController = new AbortController();
22
- const currentPollIntervalInMs = (_a = polledOperationOptions.updateIntervalInMs) !== null && _a !== void 0 ? _a : 10000;
23
- const testProfileRunId = createTestProfileRunResponse.body.testProfileRunId;
24
- const poller = {
25
- async poll(options) {
26
- var _a;
27
- if ((_a = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
28
- throw new AbortError("The polling was aborted.");
4
+ async function getTestProfileRunCompletionPoller(client, createTestProfileRunResponse, polledOperationOptions = {}) {
5
+ const state = {
6
+ status: "notStarted"
7
+ };
8
+ const progressCallbacks = /* @__PURE__ */ new Map();
9
+ const processProgressCallbacks = async () => progressCallbacks.forEach((h) => h(state));
10
+ let resultPromise;
11
+ let cancelJob;
12
+ const abortController = new AbortController();
13
+ const currentPollIntervalInMs = polledOperationOptions.updateIntervalInMs ?? 1e4;
14
+ const testProfileRunId = createTestProfileRunResponse.body.testProfileRunId;
15
+ const poller = {
16
+ async poll(options) {
17
+ if (options?.abortSignal?.aborted) {
18
+ throw new AbortError("The polling was aborted.");
19
+ }
20
+ if (testProfileRunId) {
21
+ const getTestProfileRunResult = await client.path("/test-profile-runs/{testProfileRunId}", testProfileRunId).get();
22
+ if (isUnexpected(getTestProfileRunResult)) {
23
+ state.status = "failed";
24
+ state.error = new Error(getTestProfileRunResult.body.error.message);
25
+ return state;
26
+ }
27
+ if (getTestProfileRunResult.body.status === "FAILED") {
28
+ state.status = "failed";
29
+ state.error = new Error(getTestProfileRunResult.body.status);
30
+ }
31
+ if (getTestProfileRunResult.body.status === "CANCELLED") {
32
+ state.status = "canceled";
33
+ }
34
+ if (getTestProfileRunResult.body.status === "DONE") {
35
+ state.status = "succeeded";
36
+ }
37
+ if (isTestProfileRunInProgress(getTestProfileRunResult.body)) {
38
+ state.status = "running";
39
+ }
40
+ state.result = getTestProfileRunResult;
41
+ await processProgressCallbacks();
42
+ }
43
+ return state;
44
+ },
45
+ pollUntilDone(pollOptions) {
46
+ return resultPromise ??= (async () => {
47
+ const { abortSignal: inputAbortSignal } = pollOptions || {};
48
+ function abortListener() {
49
+ abortController.abort();
50
+ }
51
+ const abortSignal = abortController.signal;
52
+ if (inputAbortSignal?.aborted) {
53
+ abortController.abort();
54
+ } else if (!abortSignal.aborted) {
55
+ inputAbortSignal?.addEventListener("abort", abortListener, { once: true });
56
+ }
57
+ try {
58
+ if (!poller.isDone()) {
59
+ await poller.poll({ abortSignal });
60
+ while (!poller.isDone()) {
61
+ const delay = sleep(currentPollIntervalInMs, abortSignal);
62
+ cancelJob = () => abortController.abort();
63
+ await delay;
64
+ await poller.poll({ abortSignal });
29
65
  }
30
- if (testProfileRunId) {
31
- const getTestProfileRunResult = await client
32
- .path("/test-profile-runs/{testProfileRunId}", testProfileRunId)
33
- .get();
34
- if (isUnexpected(getTestProfileRunResult)) {
35
- state.status = "failed";
36
- state.error = new Error(getTestProfileRunResult.body.error.message);
37
- return;
38
- }
39
- if (getTestProfileRunResult.body.status === "FAILED") {
40
- state.status = "failed";
41
- state.error = new Error(getTestProfileRunResult.body.status);
42
- }
43
- if (getTestProfileRunResult.body.status === "CANCELLED") {
44
- state.status = "canceled";
45
- }
46
- if (getTestProfileRunResult.body.status === "DONE") {
47
- state.status = "succeeded";
48
- }
49
- if (isTestProfileRunInProgress(getTestProfileRunResult.body)) {
50
- state.status = "running";
51
- }
52
- state.result = getTestProfileRunResult;
53
- await processProgressCallbacks();
54
- }
55
- },
56
- pollUntilDone(pollOptions) {
57
- return (resultPromise !== null && resultPromise !== void 0 ? resultPromise : (resultPromise = (async () => {
58
- const { abortSignal: inputAbortSignal } = pollOptions || {};
59
- // In the future we can use AbortSignal.any() instead
60
- function abortListener() {
61
- abortController.abort();
62
- }
63
- const abortSignal = abortController.signal;
64
- if (inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.aborted) {
65
- abortController.abort();
66
- }
67
- else if (!abortSignal.aborted) {
68
- inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.addEventListener("abort", abortListener, { once: true });
69
- }
70
- try {
71
- if (!poller.isDone()) {
72
- await poller.poll({ abortSignal });
73
- while (!poller.isDone()) {
74
- const delay = sleep(currentPollIntervalInMs, abortSignal);
75
- cancelJob = () => abortController.abort();
76
- await delay;
77
- await poller.poll({ abortSignal });
78
- }
79
- }
80
- }
81
- finally {
82
- inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.removeEventListener("abort", abortListener);
83
- }
84
- switch (state.status) {
85
- case "succeeded":
86
- case "failed":
87
- case "canceled": {
88
- return poller.getResult();
89
- }
90
- case "notStarted":
91
- case "running": {
92
- // Unreachable
93
- throw new Error(`polling completed without succeeding or failing`);
94
- }
95
- }
96
- })().finally(() => {
97
- resultPromise = undefined;
98
- })));
99
- },
100
- onProgress(callback) {
101
- const s = Symbol();
102
- progressCallbacks.set(s, callback);
103
- return () => progressCallbacks.delete(s);
104
- },
105
- isDone() {
106
- return ["succeeded", "failed", "canceled"].includes(state.status);
107
- },
108
- stopPolling() {
109
- abortController.abort();
110
- cancelJob === null || cancelJob === void 0 ? void 0 : cancelJob();
111
- },
112
- isStopped() {
113
- return resultPromise === undefined;
114
- },
115
- getOperationState() {
116
- return state;
117
- },
118
- getResult() {
119
- return state.result;
120
- },
121
- toString() {
122
- return JSON.stringify({ state });
123
- },
124
- };
125
- return poller;
66
+ }
67
+ } finally {
68
+ inputAbortSignal?.removeEventListener("abort", abortListener);
69
+ }
70
+ switch (state.status) {
71
+ case "succeeded":
72
+ case "failed":
73
+ case "canceled": {
74
+ return poller.getResult();
75
+ }
76
+ case "notStarted":
77
+ case "running": {
78
+ throw new Error(`polling completed without succeeding or failing`);
79
+ }
80
+ }
81
+ })().finally(() => {
82
+ resultPromise = void 0;
83
+ });
84
+ },
85
+ onProgress(callback) {
86
+ const s = /* @__PURE__ */ Symbol();
87
+ progressCallbacks.set(s, callback);
88
+ return () => progressCallbacks.delete(s);
89
+ },
90
+ isDone() {
91
+ return ["succeeded", "failed", "canceled"].includes(state.status);
92
+ },
93
+ stopPolling() {
94
+ abortController.abort();
95
+ cancelJob?.();
96
+ },
97
+ isStopped() {
98
+ return resultPromise === void 0;
99
+ },
100
+ getOperationState() {
101
+ return state;
102
+ },
103
+ getResult() {
104
+ return state.result;
105
+ },
106
+ toString() {
107
+ return JSON.stringify({ state });
108
+ },
109
+ async serialize() {
110
+ return JSON.stringify({ state });
111
+ },
112
+ async submitted() {
113
+ }
114
+ };
115
+ return poller;
126
116
  }
127
- //# sourceMappingURL=getTestProfileRunCompletionPoller.js.map
117
+ export {
118
+ getTestProfileRunCompletionPoller
119
+ };
@@ -1 +1,7 @@
1
- {"version":3,"file":"getTestProfileRunCompletionPoller.js","sourceRoot":"","sources":["../../src/getTestProfileRunCompletionPoller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { CancelOnProgress, OperationState, SimplePollerLike } from \"@azure/core-lro\";\nimport type { PolledOperationOptions, TestProfileRunCompletionPoller } from \"./models.js\";\nimport type { AzureLoadTestingClient } from \"./clientDefinitions.js\";\nimport type {\n TestProfileRunAdministrationCreateOrUpdateTestProfileRun200Response,\n TestProfileRunAdministrationCreateOrUpdateTestProfileRun201Response,\n TestProfileRunAdministrationGetTestProfileRun200Response,\n} from \"./responses.js\";\nimport { isUnexpected } from \"./isUnexpected.js\";\nimport { sleep, isTestProfileRunInProgress } from \"./util/LROUtil.js\";\n\n/**\n * Creates a poller to poll for test run status.\n * @param client - The Load Testing client.\n * @param options - The operation options.\n * @returns A poller which can be called to poll until completion of the job.\n */\nexport async function getTestProfileRunCompletionPoller(\n client: AzureLoadTestingClient,\n createTestProfileRunResponse:\n | TestProfileRunAdministrationCreateOrUpdateTestProfileRun200Response\n | TestProfileRunAdministrationCreateOrUpdateTestProfileRun201Response,\n polledOperationOptions: PolledOperationOptions = {},\n): Promise<TestProfileRunCompletionPoller> {\n type Handler = (\n state: OperationState<TestProfileRunAdministrationGetTestProfileRun200Response>,\n ) => void;\n\n const state: OperationState<TestProfileRunAdministrationGetTestProfileRun200Response> = {\n status: \"notStarted\",\n };\n\n const progressCallbacks = new Map<symbol, Handler>();\n const processProgressCallbacks = async (): Promise<void> =>\n progressCallbacks.forEach((h) => h(state));\n let resultPromise: Promise<TestProfileRunAdministrationGetTestProfileRun200Response> | undefined;\n let cancelJob: (() => void) | undefined;\n const abortController = new AbortController();\n const currentPollIntervalInMs = polledOperationOptions.updateIntervalInMs ?? 10000;\n const testProfileRunId = createTestProfileRunResponse.body.testProfileRunId;\n\n const poller: SimplePollerLike<\n OperationState<TestProfileRunAdministrationGetTestProfileRun200Response>,\n TestProfileRunAdministrationGetTestProfileRun200Response\n > = {\n async poll(options?: { abortSignal?: AbortSignalLike }): Promise<void> {\n if (options?.abortSignal?.aborted) {\n throw new AbortError(\"The polling was aborted.\");\n }\n\n if (testProfileRunId) {\n const getTestProfileRunResult = await client\n .path(\"/test-profile-runs/{testProfileRunId}\", testProfileRunId)\n .get();\n if (isUnexpected(getTestProfileRunResult)) {\n state.status = \"failed\";\n state.error = new Error(getTestProfileRunResult.body.error.message);\n return;\n }\n\n if (getTestProfileRunResult.body.status === \"FAILED\") {\n state.status = \"failed\";\n state.error = new Error(getTestProfileRunResult.body.status);\n }\n\n if (getTestProfileRunResult.body.status === \"CANCELLED\") {\n state.status = \"canceled\";\n }\n\n if (getTestProfileRunResult.body.status === \"DONE\") {\n state.status = \"succeeded\";\n }\n\n if (isTestProfileRunInProgress(getTestProfileRunResult.body)) {\n state.status = \"running\";\n }\n state.result = getTestProfileRunResult;\n await processProgressCallbacks();\n }\n },\n\n pollUntilDone(pollOptions?: {\n abortSignal?: AbortSignalLike;\n }): Promise<TestProfileRunAdministrationGetTestProfileRun200Response> {\n return (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n const delay = sleep(currentPollIntervalInMs, abortSignal);\n cancelJob = () => abortController.abort();\n await delay;\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n switch (state.status) {\n case \"succeeded\":\n case \"failed\":\n case \"canceled\": {\n return poller.getResult() as TestProfileRunAdministrationGetTestProfileRun200Response;\n }\n case \"notStarted\":\n case \"running\": {\n // Unreachable\n throw new Error(`polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n }));\n },\n\n onProgress(\n callback: (\n state: OperationState<TestProfileRunAdministrationGetTestProfileRun200Response>,\n ) => void,\n ): CancelOnProgress {\n const s = Symbol();\n progressCallbacks.set(s, callback);\n\n return () => progressCallbacks.delete(s);\n },\n\n isDone(): boolean {\n return [\"succeeded\", \"failed\", \"canceled\"].includes(state.status);\n },\n\n stopPolling(): void {\n abortController.abort();\n cancelJob?.();\n },\n\n isStopped(): boolean {\n return resultPromise === undefined;\n },\n\n getOperationState(): OperationState<TestProfileRunAdministrationGetTestProfileRun200Response> {\n return state;\n },\n\n getResult(): TestProfileRunAdministrationGetTestProfileRun200Response | undefined {\n return state.result;\n },\n\n toString() {\n return JSON.stringify({ state });\n },\n };\n\n return poller;\n}\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/load-testing-rest/src/getTestProfileRunCompletionPoller.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { CancelOnProgress, OperationState } from \"@azure/core-lro\";\nimport type { SimplePollerLike } from \"./pollingHelper.js\";\nimport type { PolledOperationOptions, TestProfileRunCompletionPoller } from \"./models.js\";\nimport type { AzureLoadTestingClient } from \"./clientDefinitions.js\";\nimport type {\n TestProfileRunAdministrationCreateOrUpdateTestProfileRun200Response,\n TestProfileRunAdministrationCreateOrUpdateTestProfileRun201Response,\n TestProfileRunAdministrationGetTestProfileRun200Response,\n} from \"./responses.js\";\nimport { isUnexpected } from \"./isUnexpected.js\";\nimport { sleep, isTestProfileRunInProgress } from \"./util/LROUtil.js\";\n\n/**\n * Creates a poller to poll for test run status.\n * @param client - The Load Testing client.\n * @param options - The operation options.\n * @returns A poller which can be called to poll until completion of the job.\n */\nexport async function getTestProfileRunCompletionPoller(\n client: AzureLoadTestingClient,\n createTestProfileRunResponse:\n | TestProfileRunAdministrationCreateOrUpdateTestProfileRun200Response\n | TestProfileRunAdministrationCreateOrUpdateTestProfileRun201Response,\n polledOperationOptions: PolledOperationOptions = {},\n): Promise<TestProfileRunCompletionPoller> {\n type Handler = (\n state: OperationState<TestProfileRunAdministrationGetTestProfileRun200Response>,\n ) => void;\n\n const state: OperationState<TestProfileRunAdministrationGetTestProfileRun200Response> = {\n status: \"notStarted\",\n };\n\n const progressCallbacks = new Map<symbol, Handler>();\n const processProgressCallbacks = async (): Promise<void> =>\n progressCallbacks.forEach((h) => h(state));\n let resultPromise: Promise<TestProfileRunAdministrationGetTestProfileRun200Response> | undefined;\n let cancelJob: (() => void) | undefined;\n const abortController = new AbortController();\n const currentPollIntervalInMs = polledOperationOptions.updateIntervalInMs ?? 10000;\n const testProfileRunId = createTestProfileRunResponse.body.testProfileRunId;\n\n const poller: SimplePollerLike<\n OperationState<TestProfileRunAdministrationGetTestProfileRun200Response>,\n TestProfileRunAdministrationGetTestProfileRun200Response\n > = {\n async poll(options?: {\n abortSignal?: AbortSignalLike;\n }): Promise<OperationState<TestProfileRunAdministrationGetTestProfileRun200Response>> {\n if (options?.abortSignal?.aborted) {\n throw new AbortError(\"The polling was aborted.\");\n }\n\n if (testProfileRunId) {\n const getTestProfileRunResult = await client\n .path(\"/test-profile-runs/{testProfileRunId}\", testProfileRunId)\n .get();\n if (isUnexpected(getTestProfileRunResult)) {\n state.status = \"failed\";\n state.error = new Error(getTestProfileRunResult.body.error.message);\n return state;\n }\n\n if (getTestProfileRunResult.body.status === \"FAILED\") {\n state.status = \"failed\";\n state.error = new Error(getTestProfileRunResult.body.status);\n }\n\n if (getTestProfileRunResult.body.status === \"CANCELLED\") {\n state.status = \"canceled\";\n }\n\n if (getTestProfileRunResult.body.status === \"DONE\") {\n state.status = \"succeeded\";\n }\n\n if (isTestProfileRunInProgress(getTestProfileRunResult.body)) {\n state.status = \"running\";\n }\n state.result = getTestProfileRunResult;\n await processProgressCallbacks();\n }\n\n return state;\n },\n\n pollUntilDone(pollOptions?: {\n abortSignal?: AbortSignalLike;\n }): Promise<TestProfileRunAdministrationGetTestProfileRun200Response> {\n return (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n const delay = sleep(currentPollIntervalInMs, abortSignal);\n cancelJob = () => abortController.abort();\n await delay;\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n switch (state.status) {\n case \"succeeded\":\n case \"failed\":\n case \"canceled\": {\n return poller.getResult() as TestProfileRunAdministrationGetTestProfileRun200Response;\n }\n case \"notStarted\":\n case \"running\": {\n // Unreachable\n throw new Error(`polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n }));\n },\n\n onProgress(\n callback: (\n state: OperationState<TestProfileRunAdministrationGetTestProfileRun200Response>,\n ) => void,\n ): CancelOnProgress {\n const s = Symbol();\n progressCallbacks.set(s, callback);\n\n return () => progressCallbacks.delete(s);\n },\n\n isDone(): boolean {\n return [\"succeeded\", \"failed\", \"canceled\"].includes(state.status);\n },\n\n stopPolling(): void {\n abortController.abort();\n cancelJob?.();\n },\n\n isStopped(): boolean {\n return resultPromise === undefined;\n },\n\n getOperationState(): OperationState<TestProfileRunAdministrationGetTestProfileRun200Response> {\n return state;\n },\n\n getResult(): TestProfileRunAdministrationGetTestProfileRun200Response | undefined {\n return state.result;\n },\n\n toString() {\n return JSON.stringify({ state });\n },\n\n async serialize(): Promise<string> {\n return JSON.stringify({ state });\n },\n\n async submitted(): Promise<void> {\n // No-op: the test profile run is a custom poller\n },\n };\n\n return poller;\n}\n"],
5
+ "mappings": "AAIA,SAAS,kBAAkB;AAU3B,SAAS,oBAAoB;AAC7B,SAAS,OAAO,kCAAkC;AAQlD,eAAsB,kCACpB,QACA,8BAGA,yBAAiD,CAAC,GACT;AAKzC,QAAM,QAAkF;AAAA,IACtF,QAAQ;AAAA,EACV;AAEA,QAAM,oBAAoB,oBAAI,IAAqB;AACnD,QAAM,2BAA2B,YAC/B,kBAAkB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;AAC3C,MAAI;AACJ,MAAI;AACJ,QAAM,kBAAkB,IAAI,gBAAgB;AAC5C,QAAM,0BAA0B,uBAAuB,sBAAsB;AAC7E,QAAM,mBAAmB,6BAA6B,KAAK;AAE3D,QAAM,SAGF;AAAA,IACF,MAAM,KAAK,SAE2E;AACpF,UAAI,SAAS,aAAa,SAAS;AACjC,cAAM,IAAI,WAAW,0BAA0B;AAAA,MACjD;AAEA,UAAI,kBAAkB;AACpB,cAAM,0BAA0B,MAAM,OACnC,KAAK,yCAAyC,gBAAgB,EAC9D,IAAI;AACP,YAAI,aAAa,uBAAuB,GAAG;AACzC,gBAAM,SAAS;AACf,gBAAM,QAAQ,IAAI,MAAM,wBAAwB,KAAK,MAAM,OAAO;AAClE,iBAAO;AAAA,QACT;AAEA,YAAI,wBAAwB,KAAK,WAAW,UAAU;AACpD,gBAAM,SAAS;AACf,gBAAM,QAAQ,IAAI,MAAM,wBAAwB,KAAK,MAAM;AAAA,QAC7D;AAEA,YAAI,wBAAwB,KAAK,WAAW,aAAa;AACvD,gBAAM,SAAS;AAAA,QACjB;AAEA,YAAI,wBAAwB,KAAK,WAAW,QAAQ;AAClD,gBAAM,SAAS;AAAA,QACjB;AAEA,YAAI,2BAA2B,wBAAwB,IAAI,GAAG;AAC5D,gBAAM,SAAS;AAAA,QACjB;AACA,cAAM,SAAS;AACf,cAAM,yBAAyB;AAAA,MACjC;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,cAAc,aAEwD;AACpE,aAAQ,mBAAmB,YAAY;AACrC,cAAM,EAAE,aAAa,iBAAiB,IAAI,eAAe,CAAC;AAE1D,iBAAS,gBAAsB;AAC7B,0BAAgB,MAAM;AAAA,QACxB;AACA,cAAM,cAAc,gBAAgB;AACpC,YAAI,kBAAkB,SAAS;AAC7B,0BAAgB,MAAM;AAAA,QACxB,WAAW,CAAC,YAAY,SAAS;AAC/B,4BAAkB,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;AAAA,QAC3E;AAEA,YAAI;AACF,cAAI,CAAC,OAAO,OAAO,GAAG;AACpB,kBAAM,OAAO,KAAK,EAAE,YAAY,CAAC;AACjC,mBAAO,CAAC,OAAO,OAAO,GAAG;AACvB,oBAAM,QAAQ,MAAM,yBAAyB,WAAW;AACxD,0BAAY,MAAM,gBAAgB,MAAM;AACxC,oBAAM;AACN,oBAAM,OAAO,KAAK,EAAE,YAAY,CAAC;AAAA,YACnC;AAAA,UACF;AAAA,QACF,UAAE;AACA,4BAAkB,oBAAoB,SAAS,aAAa;AAAA,QAC9D;AACA,gBAAQ,MAAM,QAAQ;AAAA,UACpB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK,YAAY;AACf,mBAAO,OAAO,UAAU;AAAA,UAC1B;AAAA,UACA,KAAK;AAAA,UACL,KAAK,WAAW;AAEd,kBAAM,IAAI,MAAM,iDAAiD;AAAA,UACnE;AAAA,QACF;AAAA,MACF,GAAG,EAAE,QAAQ,MAAM;AACjB,wBAAgB;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,IAEA,WACE,UAGkB;AAClB,YAAM,IAAI,uBAAO;AACjB,wBAAkB,IAAI,GAAG,QAAQ;AAEjC,aAAO,MAAM,kBAAkB,OAAO,CAAC;AAAA,IACzC;AAAA,IAEA,SAAkB;AAChB,aAAO,CAAC,aAAa,UAAU,UAAU,EAAE,SAAS,MAAM,MAAM;AAAA,IAClE;AAAA,IAEA,cAAoB;AAClB,sBAAgB,MAAM;AACtB,kBAAY;AAAA,IACd;AAAA,IAEA,YAAqB;AACnB,aAAO,kBAAkB;AAAA,IAC3B;AAAA,IAEA,oBAA8F;AAC5F,aAAO;AAAA,IACT;AAAA,IAEA,YAAkF;AAChF,aAAO,MAAM;AAAA,IACf;AAAA,IAEA,WAAW;AACT,aAAO,KAAK,UAAU,EAAE,MAAM,CAAC;AAAA,IACjC;AAAA,IAEA,MAAM,YAA6B;AACjC,aAAO,KAAK,UAAU,EAAE,MAAM,CAAC;AAAA,IACjC;AAAA,IAEA,MAAM,YAA2B;AAAA,IAEjC;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -1,125 +1,119 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
1
  import { AbortError } from "@azure/abort-controller";
4
2
  import { isUnexpected } from "./isUnexpected.js";
5
3
  import { sleep, isTestRunInProgress } from "./util/LROUtil.js";
6
- /**
7
- * Creates a poller to poll for test run status.
8
- * @param client - The Load Testing client.
9
- * @param options - The operation options.
10
- * @returns A poller which can be called to poll until completion of the job.
11
- */
12
- export async function getTestRunCompletionPoller(client, createTestRunResponse, polledOperationOptions = {}) {
13
- var _a;
14
- const state = {
15
- status: "notStarted",
16
- };
17
- const progressCallbacks = new Map();
18
- const processProgressCallbacks = async () => progressCallbacks.forEach((h) => h(state));
19
- let resultPromise;
20
- let cancelJob;
21
- const abortController = new AbortController();
22
- const currentPollIntervalInMs = (_a = polledOperationOptions.updateIntervalInMs) !== null && _a !== void 0 ? _a : 2000;
23
- const testRunId = createTestRunResponse.body.testRunId;
24
- const poller = {
25
- async poll(options) {
26
- var _a;
27
- if ((_a = options === null || options === void 0 ? void 0 : options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
28
- throw new AbortError("The polling was aborted.");
4
+ async function getTestRunCompletionPoller(client, createTestRunResponse, polledOperationOptions = {}) {
5
+ const state = {
6
+ status: "notStarted"
7
+ };
8
+ const progressCallbacks = /* @__PURE__ */ new Map();
9
+ const processProgressCallbacks = async () => progressCallbacks.forEach((h) => h(state));
10
+ let resultPromise;
11
+ let cancelJob;
12
+ const abortController = new AbortController();
13
+ const currentPollIntervalInMs = polledOperationOptions.updateIntervalInMs ?? 2e3;
14
+ const testRunId = createTestRunResponse.body.testRunId;
15
+ const poller = {
16
+ async poll(options) {
17
+ if (options?.abortSignal?.aborted) {
18
+ throw new AbortError("The polling was aborted.");
19
+ }
20
+ if (testRunId) {
21
+ const getTestRunResult = await client.path("/test-runs/{testRunId}", testRunId).get();
22
+ if (isUnexpected(getTestRunResult)) {
23
+ state.status = "failed";
24
+ state.error = new Error(getTestRunResult.body.error.message);
25
+ return state;
26
+ }
27
+ if (getTestRunResult.body.status === "FAILED") {
28
+ state.status = "failed";
29
+ state.error = new Error(getTestRunResult.body.status);
30
+ }
31
+ if (getTestRunResult.body.status === "CANCELLED") {
32
+ state.status = "canceled";
33
+ }
34
+ if (getTestRunResult.body.status === "DONE") {
35
+ state.status = "succeeded";
36
+ }
37
+ if (isTestRunInProgress(getTestRunResult.body)) {
38
+ state.status = "running";
39
+ }
40
+ state.result = getTestRunResult;
41
+ await processProgressCallbacks();
42
+ }
43
+ return state;
44
+ },
45
+ pollUntilDone(pollOptions) {
46
+ return resultPromise ??= (async () => {
47
+ const { abortSignal: inputAbortSignal } = pollOptions || {};
48
+ function abortListener() {
49
+ abortController.abort();
50
+ }
51
+ const abortSignal = abortController.signal;
52
+ if (inputAbortSignal?.aborted) {
53
+ abortController.abort();
54
+ } else if (!abortSignal.aborted) {
55
+ inputAbortSignal?.addEventListener("abort", abortListener, { once: true });
56
+ }
57
+ try {
58
+ if (!poller.isDone()) {
59
+ await poller.poll({ abortSignal });
60
+ while (!poller.isDone()) {
61
+ const delay = sleep(currentPollIntervalInMs, abortSignal);
62
+ cancelJob = () => abortController.abort();
63
+ await delay;
64
+ await poller.poll({ abortSignal });
29
65
  }
30
- if (testRunId) {
31
- const getTestRunResult = await client.path("/test-runs/{testRunId}", testRunId).get();
32
- if (isUnexpected(getTestRunResult)) {
33
- state.status = "failed";
34
- state.error = new Error(getTestRunResult.body.error.message);
35
- return;
36
- }
37
- if (getTestRunResult.body.status === "FAILED") {
38
- state.status = "failed";
39
- state.error = new Error(getTestRunResult.body.status);
40
- }
41
- if (getTestRunResult.body.status === "CANCELLED") {
42
- state.status = "canceled";
43
- }
44
- if (getTestRunResult.body.status === "DONE") {
45
- state.status = "succeeded";
46
- }
47
- if (isTestRunInProgress(getTestRunResult.body)) {
48
- state.status = "running";
49
- }
50
- state.result = getTestRunResult;
51
- await processProgressCallbacks();
52
- }
53
- },
54
- pollUntilDone(pollOptions) {
55
- return (resultPromise !== null && resultPromise !== void 0 ? resultPromise : (resultPromise = (async () => {
56
- const { abortSignal: inputAbortSignal } = pollOptions || {};
57
- // In the future we can use AbortSignal.any() instead
58
- function abortListener() {
59
- abortController.abort();
60
- }
61
- const abortSignal = abortController.signal;
62
- if (inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.aborted) {
63
- abortController.abort();
64
- }
65
- else if (!abortSignal.aborted) {
66
- inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.addEventListener("abort", abortListener, { once: true });
67
- }
68
- try {
69
- if (!poller.isDone()) {
70
- await poller.poll({ abortSignal });
71
- while (!poller.isDone()) {
72
- const delay = sleep(currentPollIntervalInMs, abortSignal);
73
- cancelJob = () => abortController.abort();
74
- await delay;
75
- await poller.poll({ abortSignal });
76
- }
77
- }
78
- }
79
- finally {
80
- inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.removeEventListener("abort", abortListener);
81
- }
82
- switch (state.status) {
83
- case "succeeded":
84
- case "failed":
85
- case "canceled": {
86
- return poller.getResult();
87
- }
88
- case "notStarted":
89
- case "running": {
90
- // Unreachable
91
- throw new Error(`polling completed without succeeding or failing`);
92
- }
93
- }
94
- })().finally(() => {
95
- resultPromise = undefined;
96
- })));
97
- },
98
- onProgress(callback) {
99
- const s = Symbol();
100
- progressCallbacks.set(s, callback);
101
- return () => progressCallbacks.delete(s);
102
- },
103
- isDone() {
104
- return ["succeeded", "failed", "canceled"].includes(state.status);
105
- },
106
- stopPolling() {
107
- abortController.abort();
108
- cancelJob === null || cancelJob === void 0 ? void 0 : cancelJob();
109
- },
110
- isStopped() {
111
- return resultPromise === undefined;
112
- },
113
- getOperationState() {
114
- return state;
115
- },
116
- getResult() {
117
- return state.result;
118
- },
119
- toString() {
120
- return JSON.stringify({ state });
121
- },
122
- };
123
- return poller;
66
+ }
67
+ } finally {
68
+ inputAbortSignal?.removeEventListener("abort", abortListener);
69
+ }
70
+ switch (state.status) {
71
+ case "succeeded":
72
+ case "failed":
73
+ case "canceled": {
74
+ return poller.getResult();
75
+ }
76
+ case "notStarted":
77
+ case "running": {
78
+ throw new Error(`polling completed without succeeding or failing`);
79
+ }
80
+ }
81
+ })().finally(() => {
82
+ resultPromise = void 0;
83
+ });
84
+ },
85
+ onProgress(callback) {
86
+ const s = /* @__PURE__ */ Symbol();
87
+ progressCallbacks.set(s, callback);
88
+ return () => progressCallbacks.delete(s);
89
+ },
90
+ isDone() {
91
+ return ["succeeded", "failed", "canceled"].includes(state.status);
92
+ },
93
+ stopPolling() {
94
+ abortController.abort();
95
+ cancelJob?.();
96
+ },
97
+ isStopped() {
98
+ return resultPromise === void 0;
99
+ },
100
+ getOperationState() {
101
+ return state;
102
+ },
103
+ getResult() {
104
+ return state.result;
105
+ },
106
+ toString() {
107
+ return JSON.stringify({ state });
108
+ },
109
+ async serialize() {
110
+ return JSON.stringify({ state });
111
+ },
112
+ async submitted() {
113
+ }
114
+ };
115
+ return poller;
124
116
  }
125
- //# sourceMappingURL=getTestRunCompletionPoller.js.map
117
+ export {
118
+ getTestRunCompletionPoller
119
+ };
@@ -1 +1,7 @@
1
- {"version":3,"file":"getTestRunCompletionPoller.js","sourceRoot":"","sources":["../../src/getTestRunCompletionPoller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { CancelOnProgress, OperationState, SimplePollerLike } from \"@azure/core-lro\";\nimport type { TestRunCompletionPoller, PolledOperationOptions } from \"./models.js\";\nimport type { AzureLoadTestingClient } from \"./clientDefinitions.js\";\nimport type {\n LoadTestRunCreateOrUpdateTestRun200Response,\n LoadTestRunCreateOrUpdateTestRun201Response,\n LoadTestRunGetTestRun200Response,\n} from \"./responses.js\";\nimport { isUnexpected } from \"./isUnexpected.js\";\nimport { sleep, isTestRunInProgress } from \"./util/LROUtil.js\";\n\n/**\n * Creates a poller to poll for test run status.\n * @param client - The Load Testing client.\n * @param options - The operation options.\n * @returns A poller which can be called to poll until completion of the job.\n */\nexport async function getTestRunCompletionPoller(\n client: AzureLoadTestingClient,\n createTestRunResponse:\n | LoadTestRunCreateOrUpdateTestRun200Response\n | LoadTestRunCreateOrUpdateTestRun201Response,\n polledOperationOptions: PolledOperationOptions = {},\n): Promise<TestRunCompletionPoller> {\n type Handler = (state: OperationState<LoadTestRunGetTestRun200Response>) => void;\n\n const state: OperationState<LoadTestRunGetTestRun200Response> = {\n status: \"notStarted\",\n };\n\n const progressCallbacks = new Map<symbol, Handler>();\n const processProgressCallbacks = async (): Promise<void> =>\n progressCallbacks.forEach((h) => h(state));\n let resultPromise: Promise<LoadTestRunGetTestRun200Response> | undefined;\n let cancelJob: (() => void) | undefined;\n const abortController = new AbortController();\n const currentPollIntervalInMs = polledOperationOptions.updateIntervalInMs ?? 2000;\n const testRunId = createTestRunResponse.body.testRunId;\n\n const poller: SimplePollerLike<\n OperationState<LoadTestRunGetTestRun200Response>,\n LoadTestRunGetTestRun200Response\n > = {\n async poll(options?: { abortSignal?: AbortSignalLike }): Promise<void> {\n if (options?.abortSignal?.aborted) {\n throw new AbortError(\"The polling was aborted.\");\n }\n\n if (testRunId) {\n const getTestRunResult = await client.path(\"/test-runs/{testRunId}\", testRunId).get();\n if (isUnexpected(getTestRunResult)) {\n state.status = \"failed\";\n state.error = new Error(getTestRunResult.body.error.message);\n return;\n }\n\n if (getTestRunResult.body.status === \"FAILED\") {\n state.status = \"failed\";\n state.error = new Error(getTestRunResult.body.status);\n }\n\n if (getTestRunResult.body.status === \"CANCELLED\") {\n state.status = \"canceled\";\n }\n\n if (getTestRunResult.body.status === \"DONE\") {\n state.status = \"succeeded\";\n }\n\n if (isTestRunInProgress(getTestRunResult.body)) {\n state.status = \"running\";\n }\n state.result = getTestRunResult;\n await processProgressCallbacks();\n }\n },\n\n pollUntilDone(pollOptions?: {\n abortSignal?: AbortSignalLike;\n }): Promise<LoadTestRunGetTestRun200Response> {\n return (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n const delay = sleep(currentPollIntervalInMs, abortSignal);\n cancelJob = () => abortController.abort();\n await delay;\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n switch (state.status) {\n case \"succeeded\":\n case \"failed\":\n case \"canceled\": {\n return poller.getResult() as LoadTestRunGetTestRun200Response;\n }\n case \"notStarted\":\n case \"running\": {\n // Unreachable\n throw new Error(`polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n }));\n },\n\n onProgress(\n callback: (state: OperationState<LoadTestRunGetTestRun200Response>) => void,\n ): CancelOnProgress {\n const s = Symbol();\n progressCallbacks.set(s, callback);\n\n return () => progressCallbacks.delete(s);\n },\n\n isDone(): boolean {\n return [\"succeeded\", \"failed\", \"canceled\"].includes(state.status);\n },\n\n stopPolling(): void {\n abortController.abort();\n cancelJob?.();\n },\n\n isStopped(): boolean {\n return resultPromise === undefined;\n },\n\n getOperationState(): OperationState<LoadTestRunGetTestRun200Response> {\n return state;\n },\n\n getResult(): LoadTestRunGetTestRun200Response | undefined {\n return state.result;\n },\n\n toString() {\n return JSON.stringify({ state });\n },\n };\n\n return poller;\n}\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/load-testing-rest/src/getTestRunCompletionPoller.ts"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { CancelOnProgress, OperationState } from \"@azure/core-lro\";\nimport type { SimplePollerLike } from \"./pollingHelper.js\";\nimport type { TestRunCompletionPoller, PolledOperationOptions } from \"./models.js\";\nimport type { AzureLoadTestingClient } from \"./clientDefinitions.js\";\nimport type {\n LoadTestRunCreateOrUpdateTestRun200Response,\n LoadTestRunCreateOrUpdateTestRun201Response,\n LoadTestRunGetTestRun200Response,\n} from \"./responses.js\";\nimport { isUnexpected } from \"./isUnexpected.js\";\nimport { sleep, isTestRunInProgress } from \"./util/LROUtil.js\";\n\n/**\n * Creates a poller to poll for test run status.\n * @param client - The Load Testing client.\n * @param options - The operation options.\n * @returns A poller which can be called to poll until completion of the job.\n */\nexport async function getTestRunCompletionPoller(\n client: AzureLoadTestingClient,\n createTestRunResponse:\n | LoadTestRunCreateOrUpdateTestRun200Response\n | LoadTestRunCreateOrUpdateTestRun201Response,\n polledOperationOptions: PolledOperationOptions = {},\n): Promise<TestRunCompletionPoller> {\n type Handler = (state: OperationState<LoadTestRunGetTestRun200Response>) => void;\n\n const state: OperationState<LoadTestRunGetTestRun200Response> = {\n status: \"notStarted\",\n };\n\n const progressCallbacks = new Map<symbol, Handler>();\n const processProgressCallbacks = async (): Promise<void> =>\n progressCallbacks.forEach((h) => h(state));\n let resultPromise: Promise<LoadTestRunGetTestRun200Response> | undefined;\n let cancelJob: (() => void) | undefined;\n const abortController = new AbortController();\n const currentPollIntervalInMs = polledOperationOptions.updateIntervalInMs ?? 2000;\n const testRunId = createTestRunResponse.body.testRunId;\n\n const poller: SimplePollerLike<\n OperationState<LoadTestRunGetTestRun200Response>,\n LoadTestRunGetTestRun200Response\n > = {\n async poll(options?: {\n abortSignal?: AbortSignalLike;\n }): Promise<OperationState<LoadTestRunGetTestRun200Response>> {\n if (options?.abortSignal?.aborted) {\n throw new AbortError(\"The polling was aborted.\");\n }\n\n if (testRunId) {\n const getTestRunResult = await client.path(\"/test-runs/{testRunId}\", testRunId).get();\n if (isUnexpected(getTestRunResult)) {\n state.status = \"failed\";\n state.error = new Error(getTestRunResult.body.error.message);\n return state;\n }\n\n if (getTestRunResult.body.status === \"FAILED\") {\n state.status = \"failed\";\n state.error = new Error(getTestRunResult.body.status);\n }\n\n if (getTestRunResult.body.status === \"CANCELLED\") {\n state.status = \"canceled\";\n }\n\n if (getTestRunResult.body.status === \"DONE\") {\n state.status = \"succeeded\";\n }\n\n if (isTestRunInProgress(getTestRunResult.body)) {\n state.status = \"running\";\n }\n state.result = getTestRunResult;\n await processProgressCallbacks();\n }\n return state;\n },\n\n pollUntilDone(pollOptions?: {\n abortSignal?: AbortSignalLike;\n }): Promise<LoadTestRunGetTestRun200Response> {\n return (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n const delay = sleep(currentPollIntervalInMs, abortSignal);\n cancelJob = () => abortController.abort();\n await delay;\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n switch (state.status) {\n case \"succeeded\":\n case \"failed\":\n case \"canceled\": {\n return poller.getResult() as LoadTestRunGetTestRun200Response;\n }\n case \"notStarted\":\n case \"running\": {\n // Unreachable\n throw new Error(`polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n }));\n },\n\n onProgress(\n callback: (state: OperationState<LoadTestRunGetTestRun200Response>) => void,\n ): CancelOnProgress {\n const s = Symbol();\n progressCallbacks.set(s, callback);\n\n return () => progressCallbacks.delete(s);\n },\n\n isDone(): boolean {\n return [\"succeeded\", \"failed\", \"canceled\"].includes(state.status);\n },\n\n stopPolling(): void {\n abortController.abort();\n cancelJob?.();\n },\n\n isStopped(): boolean {\n return resultPromise === undefined;\n },\n\n getOperationState(): OperationState<LoadTestRunGetTestRun200Response> {\n return state;\n },\n\n getResult(): LoadTestRunGetTestRun200Response | undefined {\n return state.result;\n },\n\n toString() {\n return JSON.stringify({ state });\n },\n\n async serialize(): Promise<string> {\n return JSON.stringify({ state });\n },\n\n async submitted(): Promise<void> {\n // No-op: the test run is a custom poller\n },\n };\n\n return poller;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,12 +1,12 @@
1
1
  import AzureLoadTesting from "./azureLoadTesting.js";
2
2
  export * from "./azureLoadTesting.js";
3
- export * from "./parameters.js";
4
- export * from "./responses.js";
5
- export * from "./clientDefinitions.js";
3
+ export type * from "./parameters.js";
4
+ export type * from "./responses.js";
5
+ export type * from "./clientDefinitions.js";
6
6
  export * from "./isUnexpected.js";
7
- export * from "./models.js";
8
- export * from "./outputModels.js";
7
+ export type * from "./models.js";
8
+ export type * from "./outputModels.js";
9
9
  export * from "./paginateHelper.js";
10
- export { getLongRunningPoller } from "./pollingHelper.js";
10
+ export * from "./pollingHelper.js";
11
11
  export default AzureLoadTesting;
12
12
  //# sourceMappingURL=index.d.ts.map
package/dist/esm/index.js CHANGED
@@ -1,15 +1,9 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
1
  import AzureLoadTesting from "./azureLoadTesting.js";
4
2
  export * from "./azureLoadTesting.js";
5
- export * from "./parameters.js";
6
- export * from "./responses.js";
7
- export * from "./clientDefinitions.js";
8
3
  export * from "./isUnexpected.js";
9
- export * from "./models.js";
10
- export * from "./outputModels.js";
11
4
  export * from "./paginateHelper.js";
12
- export { getLongRunningPoller } from "./pollingHelper.js";
13
- // eslint-disable-next-line @azure/azure-sdk/ts-modules-only-named
14
- export default AzureLoadTesting;
15
- //# sourceMappingURL=index.js.map
5
+ export * from "./pollingHelper.js";
6
+ var src_default = AzureLoadTesting;
7
+ export {
8
+ src_default as default
9
+ };