{"version":3,"sources":["../src/index.ts","../src/checks/check-options.ts","../src/options/persist/persist-options-from-setup.ts","../src/options/persist/persist-options-from-store.ts","../src/processors/addons.ts","../src/processors/events.ts","../src/processors/hooks.ts","../src/processors/persist.ts","../src/stores/atoms/index.ts","../src/stores/deep-maps/index.ts","../src/stores/derivations/index.ts","../src/stores/maps/index.ts","../src/stores/persistents/index.ts"],"names":["checkOptions","_state","_options","_a","options","persistOptionsFromSetup","_base","base","target","__spreadValues","persistOptionsForDerived","persistOptionsFromStore","store","storeOptions","persistOptionsFromStoreDerived","optionAddonsProcessor","props","derivedOptions","addons","state","key","func","optionEventsProcessor","events","hasKey","optionHooksProcessor","_derivedOptions","hooks","optionPersistProcessor","persistOptions","atom","init","nanoAtom","atomSetup","optionsMerger","obj","atomFrom","deepMap","nanoDeepMap","deepMapSetup","deepMapFrom","derive","fn","computed","value","_b","err","deriveMany","deriveFrom","map","nanoMap","mapSetup","mapFrom","persistentAtom","__options","encode","decode","listen","serializeAs","__objRest","nanoPersistentAtom","persistentAtomSetup","name","persistentAtomFrom"],"mappings":"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","file":"index.cjs","sourcesContent":["// all of these are to be made into addons/events/hooks inshallah\n\nexport {\n\tallTasks,\n\tbatched,\n\tclean,\n\tcleanStores,\n\tcleanTasks,\n\tcomputed,\n\teffect,\n\tgetKey,\n\tgetPath,\n\tkeepMount,\n\tlistenKeys,\n\tmapCreator,\n\tonMount,\n\tonNotify,\n\tonSet,\n\tonStart,\n\tonStop,\n\treadonlyType,\n\tsetByKey,\n\tsetPath,\n\tstartTask,\n\tsubscribeKeys,\n\ttask,\n} from \"nanostores\";\nexport type * from \"./_model\";\nexport * from \"./stores/atoms\";\nexport * from \"./stores/deep-maps\";\nexport * from \"./stores/derivations\";\nexport * from \"./stores/maps\";\nexport * from \"./stores/persistents\";\n","import type { Nano, Store } from \"../_model\";\n\n// note: returning options taken in not any Options<S>\nexport function checkOptions<S extends Nano.Any, O extends Store.Options<S>>(\n\t_state: S,\n\t_options: O | undefined,\n): typeof _options {\n\tif (_options == null) {\n\t\treturn undefined as any;\n\t}\n\tconst options = _options as Exclude<Store.Options<S>, undefined>;\n\tif (options.persist) {\n\t\toptions.persist.options = options.persist.options ?? false;\n\t}\n\n\treturn options as any;\n}\n","import type { Nano, Store, StoreDerived } from \"../../_model\";\n\nexport function persistOptionsFromSetup<G extends Store.OptionsSetup<any>>(_base: G | undefined) {\n\t// first mix both incase of store specific options like atom persistent\n\tconst base = _base as G;\n\t// const base = Object.assign({}, _base ?? {}) as G;\n\n\t// TODO: process setup options\n\n\t// for now types have to be defined manually\n\treturn function persistOptionsFromSetupRoot<S extends Nano.Any, D extends Store.Options<S>>(\n\t\ttarget: D | undefined,\n\t): Store.MergeOptions<G, D> {\n\t\tif (target == null || target === undefined) {\n\t\t\tif (_base == null) {\n\t\t\t\treturn null as any;\n\t\t\t}\n\t\t\treturn base as any;\n\t\t}\n\t\ttarget = { ...base, ...target } as unknown as Exclude<D, undefined>;\n\n\t\t// special handling\n\t\t// addons\n\t\tif (base?.addons != null || target?.addons != null) {\n\t\t\ttarget.addons = { ...(base?.addons as any), ...target?.addons };\n\t\t}\n\n\t\t// hooks\n\t\tif (base?.hooks != null || target?.hooks != null) {\n\t\t\ttarget.hooks = { ...(base?.hooks as any), ...target?.hooks };\n\t\t}\n\n\t\t// events\n\t\tif (base?.events != null || target?.events != null) {\n\t\t\ttarget.events = { ...(base?.events as any), ...target?.events };\n\t\t\t// console.log(\"merging options :: \", target.events);\n\t\t}\n\n\t\t// @ts-expect-error\n\t\treturn target; //as any;\n\t};\n}\n\nexport function persistOptionsForDerived<G extends Store.Options<any> | StoreDerived.Options<any>>(\n\t_base?: G,\n) {\n\t// first mix both incase of store specific options like atom persistent\n\tconst base = Object.assign({}, _base ?? {}) as G;\n\n\t// TODO: process setup options\n\n\t// for now types have to be defined manually\n\treturn function persistOptionsForDerivedRoot<\n\t\tS extends Nano.Derived,\n\t\tD extends StoreDerived.Options<S>,\n\t>(target?: D): StoreDerived.MergeOptions<G, D> {\n\t\tif (target == null) {\n\t\t\tif (_base == null) {\n\t\t\t\treturn null as any;\n\t\t\t}\n\t\t\treturn base as any;\n\t\t}\n\t\ttarget = { ...base, ...target };\n\n\t\t// special handling\n\t\t// hooks\n\t\tif (base?.hooks != null || target?.hooks != null) {\n\t\t\ttarget.hooks = { ...(base?.hooks as any), ...target?.hooks };\n\t\t}\n\n\t\t// events\n\t\t// if (target?.events != null) {\n\t\t// \t// why even merge on error??????!!!\n\t\t// \t// let baseOnError = null as null | ((error: unknown) => void);\n\t\t// \t// if (base?.events != null && \"onError\" in base.events) {\n\t\t// \t// \tbaseOnError = base.events.onError as typeof baseOnError;\n\t\t// \t// }\n\t\t// \t// if (baseOnError != null || target?.events?.onError != null) {\n\t\t// \t// \tresult.events.onError = (err) => {\n\t\t// \t// \t\tbaseOnError?.(err);\n\t\t// \t// \t\ttarget?.events?.onError?.(err);\n\t\t// \t// \t};\n\t\t// \t// }\n\t\t// }\n\n\t\treturn target as any;\n\t};\n}\n//\n// export type MergedOptionsDerived<\n// \tG extends OptionsDerived | Options<NanoAnyStore> | unknown,\n// \tD extends OptionsDerived | unknown,\n// > = G extends OptionsDerived | Options<NanoAnyStore>\n// \t? {\n// \t\t\thooks: D extends OptionsDerived ? G[\"hooks\"] & D[\"hooks\"] : G[\"hooks\"];\n// \t\t\tevents: D extends OptionsDerived\n// \t\t\t\t? G extends OptionsDerived\n// \t\t\t\t\t? G[\"events\"] & D[\"events\"]\n// \t\t\t\t\t: D[\"events\"]\n// \t\t\t\t: G[\"events\"];\n// \t\t\tpersistOptions: D extends OptionsDerived ? D[\"persistOptions\"] : unknown;\n// \t\t}\n// \t: D;\n// export function mergeOptionsDerived<\n// \tG extends OptionsDerived | Options<NanoAnyStore> | undefined | null,\n// \tD extends OptionsDerived | undefined | null,\n// >(base?: G, target?: D) {\n// \tif (base == null && target == null) {\n// \t\treturn null as any;\n// \t}\n\n// \t// first mix both incase of store specific options like atom persistent\n// \tconst result = { ...base, ...target, events: null, hooks: null } as unknown as OptionsDerived;\n\n// \t// hooks\n// \tif (base?.hooks == null && target?.hooks == null) {\n// \t\tresult.hooks = null;\n// \t} else {\n// \t\tresult.hooks = {};\n// \t\tif (base?.hooks != null) {\n// \t\t\tresult.hooks = { ...base?.hooks };\n// \t\t}\n// \t\tif (target?.hooks != null) {\n// \t\t\tresult.hooks = { ...(result.hooks as any), ...target?.hooks };\n// \t\t}\n// \t}\n\n// \t// events\n// \tif (base?.events == null && target?.events == null) {\n// \t\tresult.events = null as any;\n// \t} else {\n// \t\tresult.events = {};\n// \t\tlet baseOnError = null as null | ((error: unknown) => void);\n// \t\t// @ts-ignore\n// \t\tif (base?.events != null && \"onError\" in base.events) {\n// \t\t\tbaseOnError = base.events.onError as typeof baseOnError;\n// \t\t}\n// \t\tif (baseOnError != null || target?.events?.onError != null) {\n// \t\t\tresult.events.onError = (err) => {\n// \t\t\t\tbaseOnError?.(err);\n// \t\t\t\ttarget?.events?.onError?.(err);\n// \t\t\t};\n// \t\t}\n// \t}\n\n// \treturn result as MergedOptionsDerived<G, D>;\n// }\n","import type { Nano, Store, StoreDerived } from \"../../_model\";\nimport { persistOptionsForDerived, persistOptionsFromSetup } from \"./persist-options-from-setup\";\n\nexport const persistOptionsFromStore = <\n\tFromStore extends Store.FactoryWithOptions,\n\tS extends Nano.Any,\n\tD extends Store.Options<S>,\n>(\n\tstore: FromStore,\n\t_options: D | undefined,\n) => {\n\tif (store == null) {\n\t\tthrow new Error(\"qstate: persistOptionsFromStore.store is null!\");\n\t}\n\tif ((store as any).__options == null) {\n\t\tthrow new Error(\"qstate: persistOptionsFromStore.store must set option.persistOptions!\");\n\t}\n\tconst storeOptions = store.__options as FromStore[\"__options\"];\n\t// TODO: allow for certain keys to be chosen from base options\n\t// let options = {} as unknown as Options<NanoAtom<T>>;\n\t// if (keys.length <= 0) {\n\t// \toptions = other.__options;\n\t// } else {\n\t// \tfor (const _key in other.__options) {\n\t// \t\tconst key = _key as keyof Options<NanoAtom<T>>;\n\t// \t\toptions[key] = other.__options[key];\n\t// \t}\n\t// }\n\tconst optionsMerger = persistOptionsFromSetup<FromStore[\"__options\"]>(storeOptions);\n\tconst options = optionsMerger<S, D>(_options);\n\treturn options;\n};\n\nexport const persistOptionsFromStoreDerived = <\n\tS extends Nano.Derived, // | Nano.Any\n\tO extends StoreDerived.Options<S>,\n\tOther extends Store.FactoryWithOptions,\n>(\n\tstore: Other,\n\t_options: O | undefined,\n) => {\n\tif (store == null) {\n\t\tthrow new Error(\"qstate: persistOptionsFromStoreDerived.store is null!\");\n\t}\n\tif ((store as any).__options == null) {\n\t\tthrow new Error(\"qstate: persistOptionsFromStoreDerived.store must set option.persistOptions!\");\n\t}\n\tconst storeOptions = store.__options; //as Other[\"__options\"];\n\t// TODO: allow for certain keys to be chosen from base options\n\t// let options = {} as unknown as Options<NanoAtom<T>>;\n\t// if (keys.length <= 0) {\n\t// \toptions = other.__options;\n\t// } else {\n\t// \tfor (const _key in other.__options) {\n\t// \t\tconst key = _key as keyof Options<NanoAtom<T>>;\n\t// \t\toptions[key] = other.__options[key];\n\t// \t}\n\t// }\n\tconst optionsMerger = persistOptionsForDerived<Other[\"__options\"]>(storeOptions);\n\tconst options = optionsMerger<S, O>(_options);\n\treturn options;\n};\n","import type { Nano, Processor, Store, StoreDerived } from \"../_model\";\nexport function optionAddonsProcessor<\n\tS extends Nano.Any | Nano.Derived,\n\tO extends Store.Options<Extract<S, Nano.Any>>,\n\tD extends StoreDerived.Options<any>,\n>(props: Processor.FactoryProps<S, O, D>) {\n\tconst { options, derivedOptions } = props;\n\tif (options == null || options.addons == null) {\n\t\treturn;\n\t}\n\tconst { addons } = options;\n\tconst state = props.state;\n\tfor (const key in addons) {\n\t\tconst func = addons[key];\n\t\tif (typeof func !== \"function\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif (key in state) {\n\t\t\tconsole.error(\"qstate: addon key \", key, \" exists or forbidden, aborting addon!\");\n\t\t\tcontinue;\n\t\t}\n\t\tObject.defineProperty(state, key, {\n\t\t\tenumerable: true,\n\t\t\twritable: false,\n\t\t\tconfigurable: false,\n\t\t\tvalue: func?.({ state: state as any, options }),\n\t\t});\n\t}\n}\n","import type { Nano, Processor, Store, StoreDerived } from \"../_model\";\nexport function optionEventsProcessor<\n\tS extends Nano.Any | Nano.Derived,\n\tO extends Store.Options<Extract<S, Nano.Any>>,\n\tD extends StoreDerived.Options<any>,\n>(props: Processor.FactoryProps<S, O, D>) {\n\tconst { options } = props;\n\tif (options == null || options.events == null) {\n\t\treturn;\n\t}\n\tconst { events } = options;\n\tconst state = props.state as S & { on: any };\n\tlet hasKey = false;\n\tstate.on = {};\n\tfor (const key in events) {\n\t\tconst func = events[key];\n\t\tif (typeof func !== \"function\") {\n\t\t\tcontinue;\n\t\t}\n\t\thasKey = true;\n\t\tObject.defineProperty(state.on, key, {\n\t\t\tenumerable: true,\n\t\t\twritable: false,\n\t\t\tconfigurable: false,\n\t\t\tvalue: func?.({ state: state as any, options }),\n\t\t});\n\t}\n\tif (!hasKey) {\n\t\tstate.on = null;\n\t}\n\t// console.log(\"state events are :: \", state.on);\n}\n","import type { Nano, Processor, Store, StoreDerived } from \"../_model\";\n\nexport function optionHooksProcessor<\n\tS extends Nano.Any | Nano.Derived,\n\tO extends Store.Options<Extract<S, Nano.Any>>,\n\tD extends StoreDerived.Options<any>,\n>(props: Processor.FactoryProps<S, O, D>) {\n\tconst { options: _options, derivedOptions: _derivedOptions } = props;\n\tconst options = _options ?? _derivedOptions;\n\tif (options == null || options.hooks == null) {\n\t\treturn;\n\t}\n\tconst state = props.state as S & { hooks: any };\n\tconst { hooks } = options;\n\tlet hasKey = false;\n\tstate.hooks = {};\n\tfor (const key in hooks) {\n\t\tconst func = hooks[key];\n\t\tif (typeof func !== \"function\") {\n\t\t\tcontinue;\n\t\t}\n\t\thasKey = true;\n\t\tObject.defineProperty(state.hooks, key, {\n\t\t\tenumerable: true,\n\t\t\twritable: false,\n\t\t\tconfigurable: false,\n\t\t\tvalue: func?.({ state: state as any }),\n\t\t});\n\t}\n\tif (!hasKey) {\n\t\tstate.hooks = null;\n\t}\n}\n","import type { Nano, Processor, Store, StoreDerived } from \"../_model\";\nexport function optionPersistProcessor<\n\tS extends Nano.Any | Nano.Derived,\n\tO extends Store.Options<Extract<S, Nano.Any>>,\n\tD extends StoreDerived.Options<any>,\n>(props: Processor.FactoryProps<S, O, D>) {\n\tconst { options: _options, derivedOptions: _derivedOptions } = props;\n\tconst options = _options ?? _derivedOptions;\n\tif (options == null || options.persist == null) {\n\t\treturn;\n\t}\n\tconst state = props.state as S & { __options: any };\n\n\tconst persistOptions = options.persist.options;\n\tif (persistOptions) {\n\t\tif (persistOptions !== \"pass-down\") {\n\t\t\t//# @ts-expect-error\n\t\t\tdelete options.persist.options;\n\t\t}\n\t\tstate.__options = Object.freeze(Object.assign({}, { ...options }));\n\t}\n}\n","import { atom as nanoAtom } from \"nanostores\";\nimport type { Nano, Store } from \"../../_model\";\nimport { checkOptions } from \"../../checks/check-options\";\nimport { persistOptionsFromSetup, persistOptionsFromStore } from \"../../options/persist\";\nimport { optionAddonsProcessor } from \"../../processors/addons\";\nimport { optionEventsProcessor } from \"../../processors/events\";\nimport { optionHooksProcessor } from \"../../processors/hooks\";\nimport { optionPersistProcessor } from \"../../processors/persist\";\n\nexport function atom<T, O extends Store.Options<Nano.Atom<T>>>(init: T, _options?: O) {\n\tconst state = nanoAtom<T>(init);\n\tconst options = checkOptions(state, _options);\n\tconst props = { state, options, derivedOptions: undefined };\n\t// !! KEEP ORDER !! \\\\\n\toptionHooksProcessor(props);\n\toptionEventsProcessor(props);\n\toptionAddonsProcessor(props);\n\toptionPersistProcessor(props);\n\treturn state as Store.Factory<Nano.Atom<T>, O>;\n}\n\nexport function atomSetup<G extends Store.OptionsSetup<Nano.Atom>>(base?: G) {\n\tconst optionsMerger = persistOptionsFromSetup<G>(base);\n\treturn <T, D extends Store.Options<Nano.Atom<T>>>(obj: T, _options?: D) => {\n\t\tconst options = optionsMerger<Nano.Atom<T>, D>(_options);\n\t\treturn atom(obj, options); //as StoreSetup<NanoAtom<T>, G, D>;\n\t};\n}\n\nexport function atomFrom<\n\tS extends Store.FactoryWithOptions,\n\tT,\n\tD extends Store.Options<Nano.Atom<T>>,\n>(store: S, obj: T, _options?: D) {\n\tconst options = persistOptionsFromStore<S, Nano.Atom<T>, D>(store, _options);\n\treturn atom(obj, options);\n}\n","import { deepMap as nanoDeepMap } from \"nanostores\";\nimport type { Nano, NanoType, Store } from \"../../_model\";\nimport { checkOptions } from \"../../checks/check-options\";\nimport { persistOptionsFromSetup, persistOptionsFromStore } from \"../../options/persist\";\nimport { optionAddonsProcessor } from \"../../processors/addons\";\nimport { optionEventsProcessor } from \"../../processors/events\";\nimport { optionHooksProcessor } from \"../../processors/hooks\";\nimport { optionPersistProcessor } from \"../../processors/persist\";\n\nexport function deepMap<T extends NanoType.DeepMapObject, O extends Store.Options<Nano.DeepMap<T>>>(\n\tinit: T,\n\t_options?: O,\n) {\n\tconst state = nanoDeepMap<T>(init);\n\tconst options = checkOptions(state, _options);\n\tconst props = { state, options: options as any, derivedOptions: undefined };\n\t// !! KEEP ORDER !! \\\\\n\toptionHooksProcessor(props);\n\toptionEventsProcessor(props);\n\toptionAddonsProcessor(props);\n\toptionPersistProcessor(props);\n\treturn state as Store.Factory<Nano.DeepMap<T>, O>;\n}\n\nexport function deepMapSetup<G extends Store.OptionsSetup<Nano.DeepMap>>(base?: G) {\n\tconst optionsMerger = persistOptionsFromSetup<G>(base);\n\treturn <T extends NanoType.DeepMapObject, D extends Store.Options<Nano.DeepMap<T>>>(\n\t\tobj: T,\n\t\t_options?: D,\n\t) => {\n\t\tconst options = optionsMerger<Nano.DeepMap<T>, D>(_options);\n\t\treturn deepMap(obj, options);\n\t};\n}\n\nexport function deepMapFrom<\n\tT extends NanoType.DeepMapObject,\n\tD extends Store.Options<Nano.DeepMap<T>>,\n\tS extends Store.FactoryWithOptions,\n>(store: S, obj: T, _options?: D) {\n\tconst options = persistOptionsFromStore<S, Nano.DeepMap<T>, D>(store, _options);\n\treturn deepMap(obj, options);\n}\n","import { computed, type Task } from \"nanostores\";\nimport type { Nano, Store, StoreDerived } from \"../../_model\";\nimport { persistOptionsFromStoreDerived } from \"../../options/persist\";\nimport { optionHooksProcessor } from \"../../processors/hooks\";\nimport { optionPersistProcessor } from \"../../processors/persist\";\n\nexport function derive<S extends Nano.Any, R, O extends StoreDerived.Options<Nano.Derived<R>>>(\n\tstore: S,\n\tfn: (value: Nano.Value<S>) => Task<R> | R,\n\tderivedOptions?: O,\n) {\n\tif (fn == null || typeof fn !== \"function\") {\n\t\tthrow new Error(\"state: derived function must exist!\");\n\t}\n\tconst state = computed(store, (value) => {\n\t\ttry {\n\t\t\treturn fn(value);\n\t\t} catch (err) {\n\t\t\tderivedOptions?.events?.onError?.(err);\n\t\t\treturn null; // Fallback\n\t\t}\n\t});\n\toptionHooksProcessor({ state, options: undefined, derivedOptions });\n\toptionPersistProcessor({ state, options: undefined, derivedOptions });\n\treturn state as StoreDerived.Factory<R, O>;\n}\n\nexport function deriveMany<\n\tS extends Nano.Any[],\n\tR,\n\tO extends StoreDerived.Options<Nano.Derived<R>>,\n>(store: [...S], fn: (...value: Nano.Values<S>) => Task<R> | R, derivedOptions?: O) {\n\tif (fn == null || typeof fn !== \"function\") {\n\t\tthrow new Error(\"state: derived function must exist!\");\n\t}\n\tconst state = computed(store, (...value) => {\n\t\ttry {\n\t\t\treturn fn(...value);\n\t\t} catch (err) {\n\t\t\tderivedOptions?.events?.onError?.(err);\n\t\t\treturn null; // Fallback\n\t\t}\n\t});\n\toptionHooksProcessor({ state, options: undefined, derivedOptions });\n\toptionPersistProcessor({ state, options: undefined, derivedOptions });\n\treturn state as StoreDerived.Factory<R, O>;\n}\n\nexport function deriveFrom<\n\tS extends Store.FactoryWithOptions,\n\tR,\n\tO extends StoreDerived.Options<Nano.Derived<R>>,\n>(store: S, fn: (value: Nano.Value<S>) => Task<R> | R, _options?: O) {\n\tconst options = persistOptionsFromStoreDerived(store, _options);\n\treturn derive(store, fn, options);\n}\n","import { map as nanoMap } from \"nanostores\";\nimport type { Nano, NanoType, Store } from \"../../_model\";\nimport { checkOptions } from \"../../checks/check-options\";\nimport { persistOptionsFromSetup, persistOptionsFromStore } from \"../../options/persist\";\nimport { optionAddonsProcessor } from \"../../processors/addons\";\nimport { optionEventsProcessor } from \"../../processors/events\";\nimport { optionHooksProcessor } from \"../../processors/hooks\";\nimport { optionPersistProcessor } from \"../../processors/persist\";\n\nexport function map<T extends NanoType.MapObject, O extends Store.Options<Nano.Map<T>>>(\n\tinit: T,\n\t_options?: O,\n) {\n\tconst state = nanoMap<T>(init);\n\tconst options = checkOptions<Nano.Map<T>, O>(state, _options);\n\tconst props = { state, options: options as any, derivedOptions: undefined };\n\t// !! KEEP ORDER !! \\\\\n\toptionHooksProcessor(props);\n\toptionEventsProcessor(props);\n\toptionAddonsProcessor(props);\n\toptionPersistProcessor(props);\n\treturn state as Store.Factory<Nano.Map<T>, O>;\n}\n\nexport function mapSetup<G extends Store.OptionsSetup<Nano.Map>>(base?: G) {\n\tconst optionsMerger = persistOptionsFromSetup<G>(base);\n\treturn <T extends NanoType.MapObject, D extends Store.Options<Nano.Map<T>>>(\n\t\tobj: T,\n\t\t_options?: D,\n\t) => {\n\t\tconst options = optionsMerger<Nano.Map<T>, D>(_options);\n\t\treturn map(obj, options);\n\t};\n}\n\nexport function mapFrom<\n\tT extends NanoType.MapObject,\n\tD extends Store.Options<Nano.Map<T>>,\n\tS extends Store.FactoryWithOptions,\n>(store: S, obj: T, _options?: D) {\n\tconst options = persistOptionsFromStore<S, Nano.Map<T>, D>(store, _options);\n\treturn map(obj, options);\n}\n","import { persistentAtom as nanoPersistentAtom } from \"@nanostores/persistent\";\nimport type { Nano, Store } from \"../../_model\";\nimport { checkOptions } from \"../../checks/check-options\";\nimport { persistOptionsFromSetup, persistOptionsFromStore } from \"../../options/persist\";\nimport { optionAddonsProcessor } from \"../../processors/addons\";\nimport { optionEventsProcessor } from \"../../processors/events\";\nimport { optionHooksProcessor } from \"../../processors/hooks\";\nimport { optionPersistProcessor } from \"../../processors/persist\";\nimport type { OptionsPersistent, OptionsPersistentSetup } from \"./_model\";\n\nexport type { OptionsPersistent, OptionsPersistentSetup };\nexport const persistentAtom = <K extends string, T, O extends OptionsPersistent<T>>(\n\tkey: K,\n\tinit: T,\n\t__options?: O,\n) => {\n\tconst { encode, decode, listen, serializeAs, ..._options } = (__options ?? {}) as Exclude<\n\t\tO,\n\t\tundefined\n\t>;\n\tconst persistOptions = {} as any;\n\tif (serializeAs === \"object\") {\n\t\tpersistOptions.encode = JSON.stringify;\n\t\tpersistOptions.decode = JSON.parse;\n\t}\n\tif (encode) {\n\t\tpersistOptions.encode = encode;\n\t}\n\tif (decode) {\n\t\tpersistOptions.decode = decode;\n\t}\n\tif (listen) {\n\t\tpersistOptions.listen = listen;\n\t}\n\t// store\n\tconst state = nanoPersistentAtom<T>(key, init, persistOptions);\n\t// @ts-ignore\n\tstate.name = key;\n\tconst options = checkOptions(state, _options);\n\tconst props = { state, options, derivedOptions: undefined };\n\t// !! KEEP ORDER !! \\\\\n\toptionHooksProcessor(props);\n\toptionEventsProcessor(props);\n\toptionAddonsProcessor(props);\n\toptionPersistProcessor(props);\n\treturn state as Store.Factory<Nano.Persistent<T>, O> & { name: K };\n};\n\nexport function persistentAtomSetup<G extends OptionsPersistentSetup>(base?: G) {\n\tconst optionsMerger = persistOptionsFromSetup<G>(base);\n\treturn <T, D extends OptionsPersistent<T>>(name: string, obj: T, _options?: D) => {\n\t\tconst options = optionsMerger<Nano.Persistent<T>, D>(_options);\n\t\treturn persistentAtom(name, obj, options);\n\t};\n}\n\nexport function persistentAtomFrom<\n\tT,\n\tD extends Store.Options<Nano.Persistent<T>>,\n\tS extends Store.FactoryWithOptions,\n>(store: S, name: string, obj: T, _options?: D) {\n\tconst options = persistOptionsFromStore<S, Nano.Persistent<T>, D>(store, _options);\n\treturn persistentAtom(name, obj, options);\n}\n"]}