@qundus/qstate
Version:
your everyday state pal
1 lines • 33 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/checks/check-options.ts","../src/core/addons/_processor.ts","../src/core/events/_processor.ts","../src/core/hooks/_processor.ts","../src/core/persist-options/_processor.ts","../src/core/persist-options/persist-options-from-setup.ts","../src/core/persist-options/persist-options-from-store.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","optionAddonsProcessor","state","addons","key","func","optionEventsProcessor","events","hasKey","optionHooksProcessor","_derivedOptions","hooks","optionPersistOptionsProcessor","persistOptions","__spreadValues","persistOptionsFromSetup","_base","base","target","persistOptionsForDerived","persistOptionsFromStore","store","storeOptions","persistOptionsFromStoreDerived","atom","init","nanoAtom","atomSetup","optionsMerger","obj","atomFrom","deepMap","nanoDeepMap","deepMapSetup","deepMapFrom","derive","fn","derived","computed","value","_b","err","deriveMany","deriveFrom","map","nanoMap","mapSetup","mapFrom","persistentAtom","__options","nanoPersistentAtom","persistentAtomSetup","name","persistentAtomFrom"],"mappings":"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","file":"index.mjs","sourcesContent":["// all of these are to be made into addons/events/hooks inshallah\n\nexport {\n\tallTasks,\n\tbatched,\n\tcleanStores,\n\tcleanTasks,\n\tcomputed,\n\teffect,\n\tgetKey,\n\tgetPath,\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 * as _QSTATE 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 { NanoAnyStore, Options } from \"../_model\";\n\n// note: returning options taken in not any Options<S>\nexport function checkOptions<S extends NanoAnyStore, O extends 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<Options<S>, undefined>;\n\toptions.persistOptions = options.persistOptions ?? false;\n\n\treturn options as any;\n}\n","import type { _OptionProcessorFactory } from \"../../_model\";\nexport const optionAddonsProcessor: _OptionProcessorFactory = (state, options) => {\n\tif (options == null || options.addons == null) {\n\t\treturn;\n\t}\n\tconst { addons } = options as any;\n\tfor (const key in addons as any) {\n\t\tconst func = addons[key] as any;\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 as any, options),\n\t\t});\n\t}\n};\n","import type { _OptionProcessorFactory } from \"../../_model\";\nexport const optionEventsProcessor: _OptionProcessorFactory<{ on: any }> = (state, options) => {\n\tif (options == null || options.events == null) {\n\t\treturn;\n\t}\n\tconst { events } = options;\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 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 { _OptionProcessorFactory } from \"../../_model\";\n\nexport const optionHooksProcessor: _OptionProcessorFactory<{ hooks: any }> = (\n\tstate,\n\t_options,\n\t_derivedOptions,\n) => {\n\tconst options = _options ?? _derivedOptions;\n\tif (options == null || options.hooks == null) {\n\t\treturn;\n\t}\n\tconst { hooks } = options;\n\tlet hasKey = false;\n\tstate.hooks = {};\n\tfor (const key in hooks) {\n\t\tconst func = hooks[key] as any;\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, options),\n\t\t});\n\t}\n\tif (!hasKey) {\n\t\tstate.hooks = null;\n\t}\n};\n","import type { _OptionProcessorFactory } from \"../../_model\";\n\nexport const optionPersistOptionsProcessor: _OptionProcessorFactory<{ __options: any }> = (\n\tstate,\n\t_options,\n\t_derivedOptions,\n) => {\n\tconst options = _options ?? _derivedOptions;\n\tif (options == null || !options.persistOptions) {\n\t\treturn;\n\t}\n\tconst persistOptions = options?.persistOptions;\n\tif (persistOptions) {\n\t\tif (persistOptions !== \"pass-down\") {\n\t\t\tdelete options.persistOptions;\n\t\t}\n\t\tstate.__options = Object.freeze(Object.assign({}, { ...options }));\n\t}\n};\n","import type { NanoAnyStore, NanoReadable, Options, OptionsDerived } from \"../../_model\";\nimport type { MergedOptions, MergedOptionsDerived, OptionsSetup } from \"./_model\";\n\nexport function persistOptionsFromSetup<G extends OptionsSetup<NanoAnyStore>>(_base?: G) {\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 NanoAnyStore, O extends Options<S>>(\n\t\ttarget?: O,\n\t): MergedOptions<S, O, G> {\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// 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\treturn target as any;\n\t};\n}\n\nexport function persistOptionsForDerived<G extends OptionsDerived | Options<NanoAnyStore>>(\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<S extends NanoReadable, O extends OptionsDerived>(\n\t\ttarget?: O,\n\t): MergedOptionsDerived<S, O, G> {\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 {\n\tNanoAnyStore,\n\tNanoReadable,\n\tOptions,\n\tOptionsDerived,\n\tStoreWithOptions,\n} from \"../../_model\";\nimport { persistOptionsForDerived, persistOptionsFromSetup } from \"./persist-options-from-setup\";\n\nexport const persistOptionsFromStore = <\n\tS extends NanoAnyStore,\n\tO extends Options<S>,\n\tOther extends StoreWithOptions,\n>(\n\tstore: Other,\n\t_options: O | 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 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 = persistOptionsFromSetup<Other[\"__options\"]>(storeOptions);\n\tconst options = optionsMerger<S, O>(_options);\n\treturn options;\n};\n\nexport const persistOptionsFromStoreDerived = <\n\tS extends NanoReadable | NanoAnyStore,\n\tO extends OptionsDerived,\n\tOther extends StoreWithOptions,\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 { atom as nanoAtom } from \"nanostores\";\nimport type { NanoAtom, Options, Store, StoreWithOptions } from \"../../_model\";\nimport { checkOptions } from \"../../checks/check-options\";\nimport { optionAddonsProcessor } from \"../../core/addons/_processor\";\nimport { optionEventsProcessor } from \"../../core/events/_processor\";\nimport { optionHooksProcessor } from \"../../core/hooks/_processor\";\nimport type { OptionsSetup } from \"../../core/persist-options/_model\";\nimport { optionPersistOptionsProcessor } from \"../../core/persist-options/_processor\";\nimport { persistOptionsFromSetup } from \"../../core/persist-options/persist-options-from-setup\";\nimport { persistOptionsFromStore } from \"../../core/persist-options/persist-options-from-store\";\n\nexport function atom<T, O extends Options<NanoAtom<T>>>(init: T, _options?: O) {\n\tconst state = nanoAtom<T>(init);\n\tconst options = checkOptions(state, _options);\n\toptionAddonsProcessor(state, options);\n\toptionEventsProcessor(state, options);\n\toptionHooksProcessor(state, options);\n\toptionPersistOptionsProcessor(state, options);\n\treturn state as Store<NanoAtom<T>, O>;\n}\n\nexport function atomSetup<G extends OptionsSetup<NanoAtom>>(base?: G) {\n\tconst optionsMerger = persistOptionsFromSetup<G>(base);\n\treturn <T, D extends Options<NanoAtom<T>>>(obj: T, _options?: D) => {\n\t\tconst options = optionsMerger<NanoAtom<T>, D>(_options);\n\t\treturn atom(obj, options); //as StoreSetup<NanoAtom<T>, G, D>;\n\t};\n}\n\nexport function atomFrom<T, D extends Options<NanoAtom<T>>, S extends StoreWithOptions>(\n\tstore: S,\n\tobj: T,\n\t_options?: D,\n) {\n\tconst options = persistOptionsFromStore(store, _options);\n\treturn atom(obj, options);\n}\n","import { deepMap as nanoDeepMap } from \"nanostores\";\nimport type {\n\tNanoDeepMap,\n\tOptions,\n\tStore,\n\tStoreWithOptions,\n\tTypeDeepMapObject,\n} from \"../../_model\";\nimport { checkOptions } from \"../../checks/check-options\";\nimport { optionAddonsProcessor } from \"../../core/addons/_processor\";\nimport { optionEventsProcessor } from \"../../core/events/_processor\";\nimport { optionHooksProcessor } from \"../../core/hooks/_processor\";\nimport type { OptionsSetup } from \"../../core/persist-options/_model\";\nimport { optionPersistOptionsProcessor } from \"../../core/persist-options/_processor\";\nimport { persistOptionsFromSetup } from \"../../core/persist-options/persist-options-from-setup\";\nimport { persistOptionsFromStore } from \"../../core/persist-options/persist-options-from-store\";\n\nexport function deepMap<T extends TypeDeepMapObject, O extends Options<NanoDeepMap<T>>>(\n\tinit: T,\n\t_options?: O,\n) {\n\tconst state = nanoDeepMap<T>(init);\n\tconst options = checkOptions(state, _options);\n\toptionAddonsProcessor(state, options);\n\toptionEventsProcessor(state, options);\n\toptionHooksProcessor(state, options);\n\toptionPersistOptionsProcessor(state, options);\n\treturn state as Store<NanoDeepMap<T>, O>;\n}\n\nexport function deepMapSetup<G extends OptionsSetup<NanoDeepMap>>(base?: G) {\n\tconst optionsMerger = persistOptionsFromSetup<G>(base);\n\treturn <T extends TypeDeepMapObject, D extends Options<NanoDeepMap<T>>>(obj: T, _options?: D) => {\n\t\tconst options = optionsMerger<NanoDeepMap<T>, D>(_options);\n\t\treturn deepMap(obj, options);\n\t};\n}\n\nexport function deepMapFrom<\n\tT extends TypeDeepMapObject,\n\tD extends Options<NanoDeepMap<T>>,\n\tS extends StoreWithOptions,\n>(store: S, obj: T, _options?: D) {\n\tconst options = persistOptionsFromStore(store, _options);\n\treturn deepMap(obj, options);\n}\n","import { computed, type Task } from \"nanostores\";\nimport type {\n\tNanoAnyStore,\n\tNanoStoreValue,\n\tNanoStoreValues,\n\tOptionsDerived,\n\tStoreDerived,\n\tStoreDerivedWithOptions,\n} from \"../../_model\";\nimport { optionHooksProcessor } from \"../../core/hooks/_processor\";\nimport { optionPersistOptionsProcessor } from \"../../core/persist-options/_processor\";\nimport { persistOptionsFromStoreDerived } from \"../../core/persist-options/persist-options-from-store\";\n\nexport function derive<S extends NanoAnyStore, R, O extends OptionsDerived>(\n\tstore: S,\n\tfn: (value: NanoStoreValue<S>) => Task<R> | R,\n\toptions?: O,\n) {\n\tif (fn == null || typeof fn !== \"function\") {\n\t\tthrow new Error(\"state: derived function must exist!\");\n\t}\n\tconst derived = computed(store, (value) => {\n\t\ttry {\n\t\t\treturn fn(value);\n\t\t} catch (err) {\n\t\t\toptions?.events?.onError?.(err);\n\t\t\treturn null; // Fallback\n\t\t}\n\t});\n\toptionHooksProcessor(derived, undefined, options);\n\toptionPersistOptionsProcessor(derived, undefined, options);\n\treturn derived as StoreDerived<R, O>;\n}\n\nexport function deriveMany<S extends NanoAnyStore[], R, O extends OptionsDerived>(\n\tstore: [...S],\n\tfn: (...value: NanoStoreValues<S>) => Task<R> | R,\n\toptions?: O,\n) {\n\tif (fn == null || typeof fn !== \"function\") {\n\t\tthrow new Error(\"state: derived function must exist!\");\n\t}\n\tconst derived = computed(store, (...value) => {\n\t\ttry {\n\t\t\treturn fn(...value);\n\t\t} catch (err) {\n\t\t\toptions?.events?.onError?.(err);\n\t\t\treturn null; // Fallback\n\t\t}\n\t});\n\toptionHooksProcessor(derived, undefined, options);\n\toptionPersistOptionsProcessor(derived, undefined, options);\n\treturn derived as StoreDerived<R, O>;\n}\n\nexport function deriveFrom<S extends StoreDerivedWithOptions, R, O extends OptionsDerived>(\n\tstore: S,\n\tfn: (value: NanoStoreValue<S>) => Task<R> | R,\n\t_options?: O,\n) {\n\tconst options = persistOptionsFromStoreDerived(store, _options);\n\treturn derive(store, fn, options);\n}\n","import { map as nanoMap } from \"nanostores\";\nimport type { NanoMap, Options, Store, StoreWithOptions, TypeMapObject } from \"../../_model\";\nimport { checkOptions } from \"../../checks/check-options\";\nimport { optionAddonsProcessor } from \"../../core/addons/_processor\";\nimport { optionEventsProcessor } from \"../../core/events/_processor\";\nimport { optionHooksProcessor } from \"../../core/hooks/_processor\";\nimport type { OptionsSetup } from \"../../core/persist-options/_model\";\nimport { optionPersistOptionsProcessor } from \"../../core/persist-options/_processor\";\nimport { persistOptionsFromSetup } from \"../../core/persist-options/persist-options-from-setup\";\nimport { persistOptionsFromStore } from \"../../core/persist-options/persist-options-from-store\";\n\nexport function map<T extends TypeMapObject, O extends Options<NanoMap<T>>>(init: T, _options?: O) {\n\tconst state = nanoMap<T>(init);\n\tconst options = checkOptions(state, _options);\n\toptionAddonsProcessor(state, options);\n\toptionEventsProcessor(state, options);\n\toptionHooksProcessor(state, options);\n\toptionPersistOptionsProcessor(state, options);\n\treturn state as Store<NanoMap<T>, O>;\n}\n\nexport function mapSetup<G extends OptionsSetup<NanoMap>>(base?: G) {\n\tconst optionsMerger = persistOptionsFromSetup<G>(base);\n\treturn <T extends TypeMapObject, D extends Options<NanoMap<T>>>(obj: T, _options?: D) => {\n\t\tconst options = optionsMerger<NanoMap<T>, D>(_options);\n\t\treturn map(obj, options);\n\t};\n}\n\nexport function mapFrom<\n\tT extends TypeMapObject,\n\tD extends Options<NanoMap<T>>,\n\tS extends StoreWithOptions,\n>(store: S, obj: T, _options?: D) {\n\tconst options = persistOptionsFromStore(store, _options);\n\treturn map(obj, options);\n}\n","import {\n\tpersistentAtom as nanoPersistentAtom,\n\ttype PersistentEncoder,\n\ttype PersistentSimpleOptions,\n} from \"@nanostores/persistent\";\nimport type { NanoAnyStore, NanoPersistent, Options, Store, StoreWithOptions } from \"../../_model\";\nimport { checkOptions } from \"../../checks/check-options\";\nimport { optionAddonsProcessor } from \"../../core/addons/_processor\";\nimport { optionEventsProcessor } from \"../../core/events/_processor\";\nimport { optionHooksProcessor } from \"../../core/hooks/_processor\";\nimport type { OptionsSetup } from \"../../core/persist-options/_model\";\nimport { optionPersistOptionsProcessor } from \"../../core/persist-options/_processor\";\nimport { persistOptionsFromSetup } from \"../../core/persist-options/persist-options-from-setup\";\nimport { persistOptionsFromStore } from \"../../core/persist-options/persist-options-from-store\";\nimport type { OptionsPersistent, OptionsPersistentSetup } from \"./_model\";\n\nexport const persistentAtom = <K extends string, T, O extends OptionsPersistent<T>>(\n\tkey: K,\n\tinit: T,\n\t__options?: O,\n) => {\n\tconst _options = (__options ?? {}) as any;\n\tif (_options != null) {\n\t\tif (!(\"encode\" in _options)) {\n\t\t\t_options.encode = JSON.stringify;\n\t\t}\n\t\tif (!(\"decode\" in _options)) {\n\t\t\t_options.decode = JSON.parse;\n\t\t}\n\t}\n\t// store\n\tconst state = nanoPersistentAtom<T>(key, init, _options);\n\t// @ts-ignore\n\tstate.name = key;\n\tconst options = checkOptions(state, _options);\n\toptionAddonsProcessor(state, options);\n\toptionHooksProcessor(state, options);\n\toptionEventsProcessor(state, options);\n\toptionPersistOptionsProcessor(state, options);\n\treturn state as Store<NanoPersistent<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<NanoPersistent<T>, D>(_options);\n\t\treturn persistentAtom(name, obj, options);\n\t};\n}\n\nexport function persistentAtomFrom<\n\tT,\n\tD extends Options<NanoPersistent<T>>,\n\tS extends StoreWithOptions,\n>(store: S, name: string, obj: T, _options?: D) {\n\tconst options = persistOptionsFromStore(store, _options);\n\treturn persistentAtom(name, obj, options);\n}\n"]}