@statezero/core
Version:
The type-safe frontend client for StateZero - connect directly to your backend models with zero boilerplate
34 lines (33 loc) • 1.54 kB
JavaScript
import { configInstance } from "./config.js";
import { setAdapters } from "./reactiveAdaptor.js";
import { syncManager } from "./syncEngine/sync.js";
import { initEventHandler } from "./syncEngine/stores/operationEventHandlers.js";
import { querysetStoreRegistry } from "./syncEngine/registries/querysetStoreRegistry.js";
import { modelStoreRegistry } from "./syncEngine/registries/modelStoreRegistry.js";
import { metricRegistry } from "./syncEngine/registries/metricRegistry.js";
/**
* Initialize StateZero with the provided configuration
*
* @param {Object} config - StateZero configuration object
* @param {Function} getModelClass - Model class getter function from model-registry.js
* @param {Object} adapters - Adapter objects for the framework
* @param {Function} adapters.ModelAdaptor - Model adapter
* @param {Function} adapters.QuerySetAdaptor - QuerySet adapter
* @param {Function} adapters.MetricAdaptor - Metric adapter
*/
export function setupStateZero(config, getModelClass, adapters) {
// Initialize StateZero configuration
configInstance.setConfig(config);
configInstance.registerModelGetter(getModelClass);
setAdapters(adapters.ModelAdaptor, adapters.QuerySetAdaptor, adapters.MetricAdaptor);
initEventHandler();
syncManager.initialize();
// Expose registries and sync manager for devtools de
if (typeof window !== "undefined") {
window.__STATEZERO_DEVTOOLS__ = {
querysetStoreRegistry,
modelStoreRegistry,
metricRegistry,
};
}
}