@statezero/core
Version:
The type-safe frontend client for StateZero - connect directly to your backend models with zero boilerplate
39 lines (38 loc) • 1.39 kB
JavaScript
// Global singleton for reactivity adapters
let modelAdapter = null;
let querySetAdapter = null;
let metricAdaptor = null;
/**
* Set the global reactivity adapters.
* @param {Function} modelAdapterFn - A function that takes a model and returns its reactive version.
* @param {Function} querySetAdapterFn - A function that takes a queryset and returns its reactive version.
*/
export function setAdapters(modelAdapterFn, querySetAdapterFn, metricAdaptorFn) {
modelAdapter = modelAdapterFn;
querySetAdapter = querySetAdapterFn;
metricAdaptor = metricAdaptorFn;
}
/**
* Wrap a model with the configured reactivity adapter.
* @param {Object} model - The model to wrap.
* @returns {Object} The reactive model.
*/
export function wrapReactiveModel(model) {
return modelAdapter ? modelAdapter(model) : model;
}
/**
* Wrap a queryset with the configured reactivity adapter.
* @param {Object} querySet - The queryset to wrap.
* @returns {Object} The reactive queryset.
*/
export function wrapReactiveQuerySet(querySet) {
return querySetAdapter ? querySetAdapter(querySet) : querySet;
}
/**
* Wrap a metric with the configured reactivity adaptor.
* @param {Object} LiveMetric - the metric to wrap.
* @returns {Object} The reactive metric
*/
export function wrapReactiveMetric(liveMetric) {
return metricAdaptor ? metricAdaptor(liveMetric) : liveMetric;
}