UNPKG

@ledgerhq/live-common

Version:
92 lines 3.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sanitizeError = exports.formatEnvData = exports.formatFlagsData = exports.getAllFeatureFlags = void 0; const featureFlags_1 = require("../featureFlags"); const axios_1 = __importDefault(require("axios")); const getAllFeatureFlags = (appLanguage, localOverrides) => { const res = {}; Object.keys(featureFlags_1.DEFAULT_FEATURES).forEach(k => { const key = k; const value = (0, featureFlags_1.getFeature)({ key, appLanguage, localOverrides }); if (value !== null) res[key] = value; }); return res; }; exports.getAllFeatureFlags = getAllFeatureFlags; const formatFlagsData = (data) => { let allureData = ""; for (const [key, value] of Object.entries(data)) { if (!value) continue; if (!value.enabled) continue; allureData += `FF.${key} = ${value.enabled}\n`; const entries = { desktop_version: value.desktop_version, mobile_version: value.mobile_version, enabledOverriddenForCurrentVersion: value.enabledOverriddenForCurrentVersion, languages_whitelisted: value.languages_whitelisted?.join(", "), languages_blacklisted: value.languages_blacklisted?.join(", "), enabledOverriddenForCurrentLanguage: value.enabledOverriddenForCurrentLanguage, overridesRemote: value.overridesRemote, overriddenByEnv: value.overriddenByEnv, params: value.params ? JSON.stringify(value.params) : undefined, }; for (const [field, fieldValue] of Object.entries(entries)) { if (fieldValue !== undefined) { allureData += `FF.${key}.${field} = ${fieldValue .toString() .replace(/^\{|\}$/g, "") .replace(/"/g, " ")}\n`; } } } return allureData; }; exports.formatFlagsData = formatFlagsData; const SENSITIVE_ENV_KEYS = new Set(["SEED"]); const formatEnvData = (data) => { let allureData = ""; for (const [key, value] of Object.entries(data)) { if (SENSITIVE_ENV_KEYS.has(key)) continue; allureData += `ENV.${key} = ${value}\n`; } return allureData; }; exports.formatEnvData = formatEnvData; /** * Sanitizes an error to remove circular references (e.g., from AxiosError objects). * This prevents Jest serialization failures when processing test results. * Always returns a clean Error object with only serializable properties. */ const sanitizeError = (error) => { if (!axios_1.default.isAxiosError(error)) { if (error instanceof Error) { // Create a new clean error to avoid any circular references const sanitized = new Error(error.message); sanitized.name = error.name; if (error.stack) { sanitized.stack = error.stack; } return sanitized; } return new Error(String(error ?? "Unknown error")); } const err = error; const sanitized = new Error(err.message || "Axios request failed"); Object.assign(sanitized, { name: err.name, code: err.code, url: err.config?.url, method: err.config?.method, status: err.response?.status, }); return sanitized; }; exports.sanitizeError = sanitizeError; //# sourceMappingURL=index.js.map