UNPKG

telex-server-monitor-sdk

Version:

SDK for Telex Server Monitor - A lightweight agent that collects and reports server CPU metrics to the Telex monitoring platform

80 lines (79 loc) 2.41 kB
import fs from "fs"; import { logger } from "./logger.js"; import { AppConstants } from "../index.js"; // Ensure store directory exists function ensureStoreExists() { if (!fs.existsSync(AppConstants.Package.BaseDir)) { fs.mkdirSync(AppConstants.Package.BaseDir, { recursive: true }); } } /** * Clear the entire store */ export function clearStore() { try { if (fs.existsSync(AppConstants.Package.StoreFile)) { fs.unlinkSync(AppConstants.Package.StoreFile); } } catch (error) { logger.error(`Failed to clear store: ${error.message}`); throw error; } } /** * Save data to the store * @param data The data to save */ export function saveStoreData(data) { try { ensureStoreExists(); let store = {}; if (fs.existsSync(AppConstants.Package.StoreFile)) { store = JSON.parse(fs.readFileSync(AppConstants.Package.StoreFile, "utf-8")); } // Merge new data with existing store const updatedStore = { ...store, ...data }; fs.writeFileSync(AppConstants.Package.StoreFile, JSON.stringify(updatedStore, null, 2)); } catch (error) { logger.error(`Failed to save store data: ${error.message}`); throw error; } } /** * Get data from the store * @returns The stored data or undefined if the file does not exist */ export function getStoreData() { try { if (!fs.existsSync(AppConstants.Package.StoreFile)) { return undefined; } return JSON.parse(fs.readFileSync(AppConstants.Package.StoreFile, "utf-8")); } catch (error) { logger.error(`Failed to read store data: ${error.message}`); throw error; } } /** * Update data in the store * @param updater The function to update the store */ export function updateStoreData(updater) { try { ensureStoreExists(); let store = {}; if (fs.existsSync(AppConstants.Package.StoreFile)) { store = JSON.parse(fs.readFileSync(AppConstants.Package.StoreFile, "utf-8")); } const updatedData = updater(store); const updatedStore = { ...store, ...updatedData }; fs.writeFileSync(AppConstants.Package.StoreFile, JSON.stringify(updatedStore, null, 2)); } catch (error) { logger.error(`Failed to update store data: ${error.message}`); throw error; } }