@azure/core-lro 3.0.0-beta.1 → 3.0.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.
Files changed (147) hide show
  1. package/dist/browser/http/models.d.ts +2 -2
  2. package/dist/browser/http/models.d.ts.map +1 -1
  3. package/dist/browser/http/models.js.map +1 -1
  4. package/dist/browser/http/operation.d.ts +11 -12
  5. package/dist/browser/http/operation.d.ts.map +1 -1
  6. package/dist/browser/http/operation.js +22 -16
  7. package/dist/browser/http/operation.js.map +1 -1
  8. package/dist/browser/http/poller.d.ts +2 -2
  9. package/dist/browser/http/poller.d.ts.map +1 -1
  10. package/dist/browser/http/poller.js +1 -15
  11. package/dist/browser/http/poller.js.map +1 -1
  12. package/dist/browser/index.d.ts +1 -1
  13. package/dist/browser/index.d.ts.map +1 -1
  14. package/dist/browser/index.js.map +1 -1
  15. package/dist/browser/poller/models.d.ts +15 -39
  16. package/dist/browser/poller/models.d.ts.map +1 -1
  17. package/dist/browser/poller/models.js.map +1 -1
  18. package/dist/browser/poller/operation.d.ts +12 -14
  19. package/dist/browser/poller/operation.d.ts.map +1 -1
  20. package/dist/browser/poller/operation.js +25 -29
  21. package/dist/browser/poller/operation.js.map +1 -1
  22. package/dist/browser/poller/poller.d.ts +1 -1
  23. package/dist/browser/poller/poller.d.ts.map +1 -1
  24. package/dist/browser/poller/poller.js +9 -34
  25. package/dist/browser/poller/poller.js.map +1 -1
  26. package/dist/commonjs/http/models.d.ts +2 -2
  27. package/dist/commonjs/http/models.d.ts.map +1 -1
  28. package/dist/commonjs/http/models.js.map +1 -1
  29. package/dist/commonjs/http/operation.d.ts +11 -12
  30. package/dist/commonjs/http/operation.d.ts.map +1 -1
  31. package/dist/commonjs/http/operation.js +22 -16
  32. package/dist/commonjs/http/operation.js.map +1 -1
  33. package/dist/commonjs/http/poller.d.ts +2 -2
  34. package/dist/commonjs/http/poller.d.ts.map +1 -1
  35. package/dist/commonjs/http/poller.js +1 -15
  36. package/dist/commonjs/http/poller.js.map +1 -1
  37. package/dist/commonjs/index.d.ts +1 -1
  38. package/dist/commonjs/index.d.ts.map +1 -1
  39. package/dist/commonjs/index.js.map +1 -1
  40. package/dist/commonjs/poller/models.d.ts +15 -39
  41. package/dist/commonjs/poller/models.d.ts.map +1 -1
  42. package/dist/commonjs/poller/models.js.map +1 -1
  43. package/dist/commonjs/poller/operation.d.ts +12 -14
  44. package/dist/commonjs/poller/operation.d.ts.map +1 -1
  45. package/dist/commonjs/poller/operation.js +25 -29
  46. package/dist/commonjs/poller/operation.js.map +1 -1
  47. package/dist/commonjs/poller/poller.d.ts +1 -1
  48. package/dist/commonjs/poller/poller.d.ts.map +1 -1
  49. package/dist/commonjs/poller/poller.js +9 -34
  50. package/dist/commonjs/poller/poller.js.map +1 -1
  51. package/dist/commonjs/tsdoc-metadata.json +1 -1
  52. package/dist/core-lro.d.ts +28 -32
  53. package/dist/esm/http/models.d.ts +2 -2
  54. package/dist/esm/http/models.d.ts.map +1 -1
  55. package/dist/esm/http/models.js.map +1 -1
  56. package/dist/esm/http/operation.d.ts +11 -12
  57. package/dist/esm/http/operation.d.ts.map +1 -1
  58. package/dist/esm/http/operation.js +22 -16
  59. package/dist/esm/http/operation.js.map +1 -1
  60. package/dist/esm/http/poller.d.ts +2 -2
  61. package/dist/esm/http/poller.d.ts.map +1 -1
  62. package/dist/esm/http/poller.js +1 -15
  63. package/dist/esm/http/poller.js.map +1 -1
  64. package/dist/esm/index.d.ts +1 -1
  65. package/dist/esm/index.d.ts.map +1 -1
  66. package/dist/esm/index.js.map +1 -1
  67. package/dist/esm/poller/models.d.ts +15 -39
  68. package/dist/esm/poller/models.d.ts.map +1 -1
  69. package/dist/esm/poller/models.js.map +1 -1
  70. package/dist/esm/poller/operation.d.ts +12 -14
  71. package/dist/esm/poller/operation.d.ts.map +1 -1
  72. package/dist/esm/poller/operation.js +25 -29
  73. package/dist/esm/poller/operation.js.map +1 -1
  74. package/dist/esm/poller/poller.d.ts +1 -1
  75. package/dist/esm/poller/poller.d.ts.map +1 -1
  76. package/dist/esm/poller/poller.js +9 -34
  77. package/dist/esm/poller/poller.js.map +1 -1
  78. package/dist/react-native/http/models.d.ts +2 -2
  79. package/dist/react-native/http/models.d.ts.map +1 -1
  80. package/dist/react-native/http/models.js.map +1 -1
  81. package/dist/react-native/http/operation.d.ts +11 -12
  82. package/dist/react-native/http/operation.d.ts.map +1 -1
  83. package/dist/react-native/http/operation.js +22 -16
  84. package/dist/react-native/http/operation.js.map +1 -1
  85. package/dist/react-native/http/poller.d.ts +2 -2
  86. package/dist/react-native/http/poller.d.ts.map +1 -1
  87. package/dist/react-native/http/poller.js +1 -15
  88. package/dist/react-native/http/poller.js.map +1 -1
  89. package/dist/react-native/index.d.ts +1 -1
  90. package/dist/react-native/index.d.ts.map +1 -1
  91. package/dist/react-native/index.js.map +1 -1
  92. package/dist/react-native/poller/models.d.ts +15 -39
  93. package/dist/react-native/poller/models.d.ts.map +1 -1
  94. package/dist/react-native/poller/models.js.map +1 -1
  95. package/dist/react-native/poller/operation.d.ts +12 -14
  96. package/dist/react-native/poller/operation.d.ts.map +1 -1
  97. package/dist/react-native/poller/operation.js +25 -29
  98. package/dist/react-native/poller/operation.js.map +1 -1
  99. package/dist/react-native/poller/poller.d.ts +1 -1
  100. package/dist/react-native/poller/poller.d.ts.map +1 -1
  101. package/dist/react-native/poller/poller.js +9 -34
  102. package/dist/react-native/poller/poller.js.map +1 -1
  103. package/package.json +26 -20
  104. package/.rush/temp/operation/build/state.json +0 -3
  105. package/.rush/temp/operation/build_samples/all.log +0 -2
  106. package/.rush/temp/operation/build_samples/state.json +0 -3
  107. package/.rush/temp/shrinkwrap-deps.json +0 -510
  108. package/.tshy/browser.json +0 -12
  109. package/.tshy/build.json +0 -9
  110. package/.tshy/commonjs.json +0 -14
  111. package/.tshy/esm.json +0 -12
  112. package/.tshy/react-native.json +0 -12
  113. package/CHANGELOG.md +0 -179
  114. package/api-extractor.json +0 -31
  115. package/config/rush-project.json +0 -3
  116. package/core-lro.build.cache.error.log +0 -1
  117. package/core-lro.build_samples.cache.log +0 -1
  118. package/core-lro.build_samples.log +0 -2
  119. package/core-lro.pack.cache.log +0 -1
  120. package/core-lro.pack.log +0 -1
  121. package/docs/LROEngine.md +0 -158
  122. package/review/core-lro.api.md +0 -106
  123. package/samples/README.md +0 -284
  124. package/samples/typescript/samplesClient.ts +0 -254
  125. package/src/http/models.ts +0 -119
  126. package/src/http/operation.ts +0 -343
  127. package/src/http/poller.ts +0 -83
  128. package/src/index.ts +0 -21
  129. package/src/logger.ts +0 -10
  130. package/src/poller/constants.ts +0 -11
  131. package/src/poller/models.ts +0 -251
  132. package/src/poller/operation.ts +0 -315
  133. package/src/poller/poller.ts +0 -250
  134. package/temp/core-lro.api.json +0 -1892
  135. package/temp/core-lro.api.md +0 -106
  136. package/test/getYieldedValue.ts +0 -16
  137. package/test/lro.spec.ts +0 -3141
  138. package/test/matrix.ts +0 -46
  139. package/test/utils/coreRestPipelineLro.ts +0 -25
  140. package/test/utils/router.ts +0 -231
  141. package/test/utils/utils.ts +0 -144
  142. package/tsconfig.browser.config.json +0 -10
  143. package/tsconfig.json +0 -13
  144. package/tsdoc.json +0 -4
  145. package/tslint.json +0 -47
  146. package/vitest.browser.config.ts +0 -34
  147. package/vitest.config.ts +0 -31
@@ -1,250 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
-
4
- import { AbortSignalLike } from "@azure/abort-controller";
5
- import {
6
- BuildCreatePollerOptions,
7
- CreatePollerOptions,
8
- Operation,
9
- OperationState,
10
- RestorableOperationState,
11
- PollerLike,
12
- StateProxy,
13
- } from "./models.js";
14
- import { deserializeState, initOperation, pollOperation } from "./operation.js";
15
- import { POLL_INTERVAL_IN_MS } from "./constants.js";
16
- import { delay } from "@azure/core-util";
17
-
18
- const createStateProxy: <TResult, TState extends OperationState<TResult>>() => StateProxy<
19
- TState,
20
- TResult
21
- > = () => ({
22
- /**
23
- * The state at this point is created to be of type OperationState<TResult>.
24
- * It will be updated later to be of type TState when the
25
- * customer-provided callback, `updateState`, is called during polling.
26
- */
27
- initState: (config) => ({ status: "running", config }) as any,
28
- setCanceled: (state) => (state.status = "canceled"),
29
- setError: (state, error) => (state.error = error),
30
- setResult: (state, result) => (state.result = result),
31
- setRunning: (state) => (state.status = "running"),
32
- setSucceeded: (state) => (state.status = "succeeded"),
33
- setFailed: (state) => (state.status = "failed"),
34
-
35
- getError: (state) => state.error,
36
- getResult: (state) => state.result,
37
- isCanceled: (state) => state.status === "canceled",
38
- isFailed: (state) => state.status === "failed",
39
- isRunning: (state) => state.status === "running",
40
- isSucceeded: (state) => state.status === "succeeded",
41
- });
42
-
43
- /**
44
- * Returns a poller factory.
45
- */
46
- export function buildCreatePoller<TResponse, TResult, TState extends OperationState<TResult>>(
47
- inputs: BuildCreatePollerOptions<TResponse, TState>,
48
- ): (
49
- lro: Operation<TResponse, { abortSignal?: AbortSignalLike }>,
50
- options?: CreatePollerOptions<TResponse, TResult, TState>,
51
- ) => PollerLike<TState, TResult> {
52
- const {
53
- getOperationLocation,
54
- getStatusFromInitialResponse,
55
- getStatusFromPollResponse,
56
- isOperationError,
57
- getResourceLocation,
58
- getPollingInterval,
59
- getError,
60
- resolveOnUnsuccessful,
61
- } = inputs;
62
- return (
63
- { init, poll }: Operation<TResponse, { abortSignal?: AbortSignalLike }>,
64
- options?: CreatePollerOptions<TResponse, TResult, TState>,
65
- ) => {
66
- const {
67
- processResult,
68
- updateState,
69
- withOperationLocation: withOperationLocationCallback,
70
- intervalInMs = POLL_INTERVAL_IN_MS,
71
- restoreFrom,
72
- } = options || {};
73
- const stateProxy = createStateProxy<TResult, TState>();
74
- const withOperationLocation = withOperationLocationCallback
75
- ? (() => {
76
- let called = false;
77
- return (operationLocation: string, isUpdated: boolean) => {
78
- if (isUpdated) withOperationLocationCallback(operationLocation);
79
- else if (!called) withOperationLocationCallback(operationLocation);
80
- called = true;
81
- };
82
- })()
83
- : undefined;
84
- let statePromise: Promise<TState>;
85
- let state: RestorableOperationState<TState>;
86
- if (restoreFrom) {
87
- state = deserializeState(restoreFrom);
88
- statePromise = Promise.resolve(state);
89
- } else {
90
- statePromise = initOperation({
91
- init,
92
- stateProxy,
93
- processResult,
94
- getOperationStatus: getStatusFromInitialResponse,
95
- withOperationLocation,
96
- setErrorAsResult: !resolveOnUnsuccessful,
97
- }).then((s) => (state = s));
98
- }
99
- let resultPromise: Promise<TResult> | undefined;
100
- const abortController = new AbortController();
101
- // Progress handlers
102
- type Handler = (state: TState) => void;
103
- const handlers = new Map<symbol, Handler>();
104
- const handleProgressEvents = async (): Promise<void> => handlers.forEach((h) => h(state));
105
- const cancelErrMsg = "Operation was canceled";
106
- let currentPollIntervalInMs = intervalInMs;
107
-
108
- const poller: PollerLike<TState, TResult> = {
109
- get operationState(): TState | undefined {
110
- return state;
111
- },
112
- get result(): TResult | undefined {
113
- return state?.result;
114
- },
115
- get isDone(): boolean {
116
- return ["succeeded", "failed", "canceled"].includes(state?.status ?? "");
117
- },
118
- get isStopped(): boolean {
119
- return resultPromise === undefined;
120
- },
121
- onProgress: (callback: (state: TState) => void) => {
122
- const s = Symbol();
123
- handlers.set(s, callback);
124
- return () => handlers.delete(s);
125
- },
126
- serialize: async () => {
127
- await statePromise;
128
- return JSON.stringify({
129
- state,
130
- });
131
- },
132
- submitted: async () => {
133
- await statePromise;
134
- },
135
- pollUntilDone: async (pollOptions?: { abortSignal?: AbortSignalLike }) => {
136
- resultPromise ??= (async () => {
137
- await statePromise;
138
- if (!state) {
139
- throw new Error("Poller should be initialized but it is not!");
140
- }
141
- const { abortSignal: inputAbortSignal } = pollOptions || {};
142
- // In the future we can use AbortSignal.any() instead
143
- function abortListener(): void {
144
- abortController.abort();
145
- }
146
- const abortSignal = abortController.signal;
147
- if (inputAbortSignal?.aborted) {
148
- abortController.abort();
149
- } else if (!abortSignal.aborted) {
150
- inputAbortSignal?.addEventListener("abort", abortListener, { once: true });
151
- }
152
-
153
- try {
154
- if (!poller.isDone) {
155
- await poller.poll({ abortSignal });
156
- while (!poller.isDone) {
157
- await delay(currentPollIntervalInMs, { abortSignal });
158
- await poller.poll({ abortSignal });
159
- }
160
- }
161
- } finally {
162
- inputAbortSignal?.removeEventListener("abort", abortListener);
163
- }
164
- if (resolveOnUnsuccessful) {
165
- return poller.result as TResult;
166
- } else {
167
- switch (state.status) {
168
- case "succeeded":
169
- return poller.result as TResult;
170
- case "canceled":
171
- throw new Error(cancelErrMsg);
172
- case "failed":
173
- throw state.error;
174
- case "notStarted":
175
- case "running":
176
- throw new Error(`Polling completed without succeeding or failing`);
177
- }
178
- }
179
- })().finally(() => {
180
- resultPromise = undefined;
181
- });
182
- return resultPromise;
183
- },
184
- async poll(pollOptions?: { abortSignal?: AbortSignalLike }): Promise<TState> {
185
- await statePromise;
186
- if (!state) {
187
- throw new Error("Poller should be initialized but it is not!");
188
- }
189
- if (resolveOnUnsuccessful) {
190
- if (poller.isDone) return state;
191
- } else {
192
- switch (state.status) {
193
- case "succeeded":
194
- return state;
195
- case "canceled":
196
- throw new Error(cancelErrMsg);
197
- case "failed":
198
- throw state.error;
199
- }
200
- }
201
- await pollOperation({
202
- poll,
203
- state: state,
204
- stateProxy,
205
- getOperationLocation,
206
- isOperationError,
207
- withOperationLocation,
208
- getPollingInterval,
209
- getOperationStatus: getStatusFromPollResponse,
210
- getResourceLocation,
211
- processResult,
212
- getError,
213
- updateState,
214
- options: pollOptions,
215
- setDelay: (pollIntervalInMs) => {
216
- currentPollIntervalInMs = pollIntervalInMs;
217
- },
218
- setErrorAsResult: !resolveOnUnsuccessful,
219
- });
220
- await handleProgressEvents();
221
- if (!resolveOnUnsuccessful) {
222
- switch (state.status) {
223
- case "canceled":
224
- throw new Error(cancelErrMsg);
225
- case "failed":
226
- throw state.error;
227
- }
228
- }
229
-
230
- return state;
231
- },
232
- then<TResult1 = TResult, TResult2 = never>(
233
- onfulfilled?: ((value: TResult) => TResult1 | PromiseLike<TResult1>) | undefined | null,
234
- onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,
235
- ): Promise<TResult1 | TResult2> {
236
- return poller.pollUntilDone().then(onfulfilled, onrejected);
237
- },
238
- catch<TResult2 = never>(
239
- onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,
240
- ): Promise<TResult | TResult2> {
241
- return poller.pollUntilDone().catch(onrejected);
242
- },
243
- finally(onfinally?: (() => void) | undefined | null): Promise<TResult> {
244
- return poller.pollUntilDone().finally(onfinally);
245
- },
246
- [Symbol.toStringTag]: "Poller",
247
- };
248
- return poller;
249
- };
250
- }