zephyr-agent
Version:
Zephyr plugin agent
136 lines (135 loc) • 6.26 kB
JavaScript
;
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