CLEANUP_ERROR: "cleanup_error", SYNC_BROKEN_ERROR: "sync_broken_error", CUSTOM_1_ERROR: "custom_1_error", CUSTOM_2_ERROR: "custom_2_error", CUSTOM_3_ERROR: "custom_3_error", CUSTOM_4_ERROR: "custom_4_error", CUSTOM_5_ERROR: "custom_5_error", }; } /** * Reports the uptake status for the specified source. * * @param {string} component the component reporting the uptake (eg. "Normandy"). * @param {string} status the uptake status (eg. "network_error") * @param {object} extra extra values to report * @param {string} extra.source the update source (eg. "recipe-42"). * @param {string} extra.trigger what triggered the polling/fetching (eg. "broadcast", "timer"). * @param {int} extra.age age of pulled data in seconds */ static async report(component, status, extra = {}) { const { source } = extra; if (!source) { throw new Error("`source` value is mandatory."); } if (!Object.values(UptakeTelemetry.STATUS).includes(status)) { throw new Error(`Unknown status '${status}'`); } extra.value = status; Glean.uptakeRemotecontentResult["uptake" + component].record(extra); } } PK