UNPKG

@azure/app-configuration

Version:
102 lines (101 loc) 3.86 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var pollingHelpers_exports = {}; __export(pollingHelpers_exports, { getLongRunningPoller: () => getLongRunningPoller }); module.exports = __toCommonJS(pollingHelpers_exports); var import_core_lro = require("@azure/core-lro"); var import_core_client = require("@azure-rest/core-client"); function getLongRunningPoller(client, processResponseBody, expectedStatuses, options) { const { restoreFrom, getInitialResponse, apiVersion } = options; if (!restoreFrom && !getInitialResponse) { throw new Error("Either restoreFrom or getInitialResponse must be specified"); } let initialResponse = void 0; const pollAbortController = new AbortController(); const poller = { sendInitialRequest: async () => { if (!getInitialResponse) { throw new Error("getInitialResponse is required when initializing a new poller"); } initialResponse = await getInitialResponse(); return getLroResponse(initialResponse, expectedStatuses); }, sendPollRequest: async (path, pollOptions) => { function abortListener() { pollAbortController.abort(); } const abortSignal = pollAbortController.signal; if (options.abortSignal?.aborted) { pollAbortController.abort(); } else if (pollOptions?.abortSignal?.aborted) { pollAbortController.abort(); } else if (!abortSignal.aborted) { options.abortSignal?.addEventListener("abort", abortListener, { once: true }); pollOptions?.abortSignal?.addEventListener("abort", abortListener, { once: true }); } let response; try { const pollingPath = apiVersion ? addApiVersionToUrl(path, apiVersion) : path; response = await client.pathUnchecked(pollingPath).get({ abortSignal }); } finally { options.abortSignal?.removeEventListener("abort", abortListener); pollOptions?.abortSignal?.removeEventListener("abort", abortListener); } return getLroResponse(response, expectedStatuses); } }; return (0, import_core_lro.createHttpPoller)(poller, { intervalInMs: options?.updateIntervalInMs, resourceLocationConfig: options?.resourceLocationConfig, restoreFrom: options?.restoreFrom, processResult: (result) => { return processResponseBody(result); } }); } function getLroResponse(response, expectedStatuses) { if (!expectedStatuses.includes(response.status)) { throw (0, import_core_client.createRestError)(response); } return { flatResponse: response, rawResponse: { ...response, statusCode: Number.parseInt(response.status), body: response.body } }; } function addApiVersionToUrl(url, apiVersion) { const urlObj = new URL(url, "https://microsoft.com"); if (!urlObj.searchParams.get("api-version")) { return `${url}${urlObj.search ? "&" : "?"}api-version=${apiVersion}`; } return url; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { getLongRunningPoller }); //# sourceMappingURL=pollingHelpers.js.map