UNPKG

zephyr-agent

Version:
136 lines (135 loc) • 6.26 kB
"use strict"; var __webpack_require__ = {}; (()=>{ __webpack_require__.d = (exports1, getters, values)=>{ var define = (defs, kind)=>{ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, [kind]: defs[key] }); }; define(getters, "get"); define(values, "value"); }; })(); (()=>{ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop); })(); (()=>{ __webpack_require__.r = (exports1)=>{ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { makeHttpRequest: ()=>makeHttpRequest, makeRequest: ()=>makeRequest, parseUrl: ()=>parseUrl, unwrapResponse: ()=>unwrapResponse }); const external_zephyr_edge_contract_namespaceObject = require("zephyr-edge-contract"); const index_js_namespaceObject = require("../errors/index.js"); const debug_js_namespaceObject = require("../logging/debug.js"); const token_js_namespaceObject = require("../node-persist/token.js"); const redaction_js_namespaceObject = require("../security/redaction.js"); const external_fetch_with_retries_js_namespaceObject = require("./fetch-with-retries.js"); function applyApiHost(url) { const is_preview = (0, external_zephyr_edge_contract_namespaceObject.ZE_IS_PREVIEW)(); const ze_api_endpoint_host = (0, external_zephyr_edge_contract_namespaceObject.ZE_API_ENDPOINT_HOST)(); const zephyr_api_endpoint = (0, external_zephyr_edge_contract_namespaceObject.ZEPHYR_API_ENDPOINT)(); if (is_preview && url.host === ze_api_endpoint_host) url.searchParams.set('api_host', zephyr_api_endpoint); return url; } function parseUrl(urlStr) { if ('string' == typeof urlStr) return applyApiHost(new URL(urlStr)); { if (urlStr instanceof URL) return applyApiHost(urlStr); const url = new URL(urlStr.path, urlStr.base); for (const [key, value] of Object.entries(urlStr.query))url.searchParams.append(key, String(value)); return applyApiHost(url); } } function redactResponse(url, options, data, response, startTime = Date.now()) { return [ `[${options.method || 'GET'}][${(0, redaction_js_namespaceObject.redactUrl)(url)}]: ${Date.now() - startTime}ms`, data?.length ? ` - ${((data.length ?? 0) / 1024).toFixed(2)}kb` : '', void 0 !== response ? `Response: ${(0, redaction_js_namespaceObject.redactString)(String(response))}` : '', `Options: ${(0, redaction_js_namespaceObject.safeStringifyForLogging)(options)}` ].join('\n'); } async function makeHttpRequest(url, options = {}, data) { const startTime = Date.now(); const { credentialToken, skipTokenCleanup = false, ...requestOptions } = options; try { const response = await (0, external_fetch_with_retries_js_namespaceObject.fetchWithRetries)(url, { ...requestOptions, body: data }); const resText = await response.text(); if (401 === response.status) { const authenticationError = new index_js_namespaceObject.ZephyrError(index_js_namespaceObject.ZeErrors.ERR_AUTH_ERROR, { message: 'The request authentication is invalid or expired.' }); if (!skipTokenCleanup) try { await (0, token_js_namespaceObject.cleanTokens)(credentialToken); } catch (error) { debug_js_namespaceObject.ze_log.error('Failed to remove rejected authentication credentials:', error); } throw authenticationError; } if (403 === response.status) throw new index_js_namespaceObject.ZephyrError(index_js_namespaceObject.ZeErrors.ERR_AUTH_FORBIDDEN_ERROR, { message: 'The authenticated account does not have access to this target.' }); const message = redactResponse(url, requestOptions, data, resText, startTime); if ('Not Implemented' === resText.trim()) throw new index_js_namespaceObject.ZephyrError(index_js_namespaceObject.ZeErrors.ERR_UNKNOWN, { message: 'Not implemented yet. Please get in contact with our support.' }); if (!url.pathname.includes('application/logs')) debug_js_namespaceObject.ze_log.http(message); const resData = (0, external_zephyr_edge_contract_namespaceObject.safe_json_parse)(resText) ?? resText; if (!response.status || response.status >= 300) throw new index_js_namespaceObject.ZephyrError(index_js_namespaceObject.ZeErrors.ERR_HTTP_ERROR, { status: response.status, url: (0, redaction_js_namespaceObject.redactUrl)(url), content: 'string' == typeof resData ? (0, redaction_js_namespaceObject.redactString)(resData) : (0, redaction_js_namespaceObject.safeStringifyForLogging)(resData), method: requestOptions.method?.toUpperCase() ?? 'GET' }); return [ true, null, resData ]; } catch (error) { return [ false, error ]; } } function makeRequest(urlStr, options = {}, data) { const url = parseUrl(urlStr); return makeHttpRequest(url, options, data); } async function unwrapResponse(response) { const [ok, error, data] = await response; if (!ok) throw error; return data; } exports.makeHttpRequest = __webpack_exports__.makeHttpRequest; exports.makeRequest = __webpack_exports__.makeRequest; exports.parseUrl = __webpack_exports__.parseUrl; exports.unwrapResponse = __webpack_exports__.unwrapResponse; for(var __rspack_i in __webpack_exports__)if (-1 === [ "makeHttpRequest", "makeRequest", "parseUrl", "unwrapResponse" ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i]; Object.defineProperty(exports, '__esModule', { value: true }); //# sourceMappingURL=http-request.js.map