import { SDKKeys, Options } from "./types"; import SDK from "./SDK"; class LocalLogicSDKInit { private apiKey: Options["apiKey"]; private globalOptions?: Options["globalOptions"]; private buildId?: string; private registeredSDKs: SDK[] = []; constructor( apiKey: Options["apiKey"], globalOptions?: Options["globalOptions"], buildId?: string, ) { this.apiKey = apiKey; this.globalOptions = globalOptions; this.buildId = buildId || "v1"; } public create( sdkType: U, renderTo: HTMLElement, options: Options["options"], renderOptions?: { lazy?: boolean }, ) { const sdk = new SDK( sdkType, renderTo, { apiKey: this.apiKey, globalOptions: this.globalOptions, options, }, { lazy: renderOptions?.lazy || true, buildId: this.buildId, }, ); this.registeredSDKs.push(sdk); return sdk; } public update(globalOptions: Options["globalOptions"]) { this.registeredSDKs.forEach(async (registeredSDK) => { await registeredSDK.hasMounted; registeredSDK.stateManager?.setState((prev) => ({ ...prev, globalOptions: { ...prev.globalOptions, ...globalOptions, }, })); }); } } const LocalLogicSDK = ( apiKey: Options["apiKey"], globalOptions?: Options["globalOptions"], buildId?: string, ) => new LocalLogicSDKInit(apiKey, globalOptions, buildId); export default LocalLogicSDK;