@azure/app-configuration
Version:
An isomorphic client library for the Azure App Configuration service.
102 lines (101 loc) • 3.86 kB
JavaScript
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