UNPKG

zephyr-agent

Version:
51 lines (50 loc) • 2.19 kB
import "node:module"; import { createHash } from "crypto"; import { ZeErrors, ZephyrError } from "../errors/index.mjs"; import { uploadSnapshot } from "../http/upload-snapshot.mjs"; import { green, yellow } from "../logging/picocolor.mjs"; async function zeUploadSnapshot(zephyr_engine, { snapshot }) { const zeStart = Date.now(); const application_uid = zephyr_engine.application_uid; const logger = await zephyr_engine.logger; const buildEnv = zephyr_engine.env.isCI ? 'ci' : 'local'; const envs = process.env; const ze_envs = {}; for (const [key, value] of Object.entries(envs))if (key.startsWith('ZE_PUBLIC_') && 'string' == typeof value) ze_envs[key] = value; const zeVarsEntries = Object.entries(ze_envs); if (zeVarsEntries.length > 0) { const sortedVariables = zeVarsEntries.map(([key, value])=>`${key}=${value}`).sort().join('\n'); const canonicalString = `${application_uid}\n${sortedVariables}`; const hash = createHash('sha256'); hash.update(canonicalString, 'utf-8'); snapshot.ze_envs_hash = hash.digest('hex'); zephyr_engine.ze_env_vars = ze_envs; zephyr_engine.ze_env_vars_hash = snapshot.ze_envs_hash; } const edgeTodo = await uploadSnapshot({ body: snapshot, application_uid }); const worker_version = edgeTodo?.worker_version; if ('string' == typeof worker_version && worker_version.length > 0) { zephyr_engine.worker_version = worker_version; snapshot.worker_version = snapshot.worker_version ?? worker_version; } const versionUrl = edgeTodo?.urls?.version; if (!versionUrl) { logger({ level: 'error', action: 'snapshot:upload:failed', message: `failed uploading of ${buildEnv} snapshot to zephyr` }); throw new ZephyrError(ZeErrors.ERR_SNAPSHOT_UPLOADS_NO_RESULTS); } logger({ level: 'info', action: 'snapshot:upload:done', message: `Uploaded ${green(buildEnv)} snapshot in ${yellow(`${Date.now() - zeStart}`)}ms` }); return versionUrl; } export { zeUploadSnapshot }; //# sourceMappingURL=ze-upload-snapshot.mjs.map