UNPKG

visitory

Version:

Visitory Session Tracking SDK

63 lines (62 loc) 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initParameterStore = initParameterStore; let parameterStore = null; function initParameterStore(apiKey) { if (parameterStore) { return parameterStore; } const values = {}; let subscribers = []; let isLoaded = false; // Function to notify all subscribers of changes const notifySubscribers = () => { subscribers.forEach((callback) => callback(values)); }; // Function to fetch all parameters const fetchParameters = async () => { try { const response = await fetch('https://qualified-hound-398.convex.site/getParameters', { headers: { Authorization: `Bearer ${apiKey}`, }, }); if (!response.ok) { throw new Error('Failed to fetch parameters'); } const parameters = await response.json(); parameters.forEach((param) => { values[param.key] = param.value; }); isLoaded = true; notifySubscribers(); } catch (error) { console.error('Failed to fetch parameters:', error); } }; // Start fetching immediately fetchParameters(); parameterStore = { getValue: (key) => { var _a; if (!isLoaded) { return null; } return (_a = values[key]) !== null && _a !== void 0 ? _a : null; }, subscribe: (callback) => { subscribers.push(callback); // Only call callback with current values if we're loaded if (isLoaded) { callback(values); } // Return unsubscribe function return () => { subscribers = subscribers.filter((cb) => cb !== callback); }; }, isLoaded: () => isLoaded, }; return parameterStore; }