diff --git a/docs/adapters.config.ts b/docs/astro.autogen.ts similarity index 59% rename from docs/adapters.config.ts rename to docs/astro.autogen.ts index 35671ce96..a1c2f218f 100644 --- a/docs/adapters.config.ts +++ b/docs/astro.autogen.ts @@ -1,4 +1,4 @@ -import { defineConfig } from './config/integrations/package-reference' +import { defineConfig } from './config/integrations/package-reference.ts' export const adapters = await defineConfig([ '../packages/lit/', @@ -6,3 +6,12 @@ export const adapters = await defineConfig([ '../packages/react/', '../packages/vue/', ]) + +export const packages = await defineConfig([ + '../packages/core/' +]) + +export const allPackages = [ + ...adapters, + ...packages, +] diff --git a/docs/astro.config.ts b/docs/astro.config.ts index a62a5b609..ff3f28e8f 100644 --- a/docs/astro.config.ts +++ b/docs/astro.config.ts @@ -3,8 +3,8 @@ import starlight from '@astrojs/starlight' import starlightLinksValidator from 'starlight-links-validator' import starlightLlmsTxt from 'starlight-llms-txt' import rehypeSlug from 'rehype-slug' -import { sidebar } from './astro.sidebar' -import { devServerFileWatcher } from './config/integrations/dev-server-file-watcher' +import { sidebar } from './astro.sidebar.ts' +import { devServerFileWatcher } from './config/integrations/dev-server-file-watcher.ts' // https://astro.build/config export default defineConfig({ @@ -14,7 +14,7 @@ export default defineConfig({ devServerFileWatcher([ './config/**', // Custom plugins and integrations './astro.sidebar.ts', // Sidebar configuration file - './adapters.config.ts', // References configuration file + './astro.autogen.ts', // References configuration file ]), starlight({ sidebar, diff --git a/docs/astro.sidebar.ts b/docs/astro.sidebar.ts index bd004ffa6..7cb3ec154 100644 --- a/docs/astro.sidebar.ts +++ b/docs/astro.sidebar.ts @@ -1,18 +1,15 @@ -import { group } from './config/sidebar' -import { makeSidebar } from './config/integrations/package-reference' +import type { StarlightIcon } from '@astrojs/starlight/types' -import { adapters } from './adapters.config' +import { group } from './config/sidebar.ts' +import { makeSidebar } from './config/integrations/package-reference.ts' +import { adapters, packages } from './astro.autogen.ts' export const sidebar = [ group('Start', { + badge: icon('rocket'), items: [ group('Essentials', { - items: [ - 'start/setup', - 'start/atoms', - 'start/actions', - 'start/async', - ], + items: ['start/setup', 'start/atoms', 'start/actions', 'start/async'], }), group('Advanced', { items: [ @@ -26,6 +23,7 @@ export const sidebar = [ }), group('Handbook', { + badge: icon('open-book'), items: [ 'handbook/history', 'handbook/atomization', @@ -38,12 +36,23 @@ export const sidebar = [ }), group('Guides', { + badge: icon('puzzle'), autogenerate: { directory: 'guides', }, }), - group('Adapters', { - items: await makeSidebar(adapters, { prefix: 'adapters' }), + group('Reference', { + badge: icon('information'), + items: [ + ...await makeSidebar(packages, { prefix: 'package' }), + group('Adapters', { + items: await makeSidebar(adapters, { prefix: 'package' }), + }), + ], }), ] + +function icon(iconName: StarlightIcon) { + return iconName +} diff --git a/docs/config/integrations/package-reference.ts b/docs/config/integrations/package-reference.ts index a327291f9..0083a1aca 100644 --- a/docs/config/integrations/package-reference.ts +++ b/docs/config/integrations/package-reference.ts @@ -1,6 +1,8 @@ import type starlight from '@astrojs/starlight' -import { resolve, join } from 'node:path' -import { readFile } from 'node:fs/promises' +import { defu } from 'defu' +import { join, relative, sep as pathSep } from 'node:path' +import { fs } from 'zx' +import { glob, Loader } from 'astro/loaders' type StarlightSidebarConfig = NonNullable< Parameters[0]['sidebar'] @@ -8,11 +10,21 @@ type StarlightSidebarConfig = NonNullable< type StarlightSidebarEntry = StarlightSidebarConfig[number] type StarlightSidebarLink = Extract +type ReferenceJSON = { + /** @default: "./package.json" */ + 'package.json'?: string + /** @default "./README.md" */ + introduction?: string + referenceDocs?: string + changelog?: string +} + type PackageRef = { - path: string - package: { name: string } + absolutePath: string + packageJson: { name: string } slug: string - originalSelector: string + relativePath: string + referenceJson: ReferenceJSON } export function nameToSlug(name: string): string { @@ -21,16 +33,26 @@ export function nameToSlug(name: string): string { export async function defineConfig(paths: string[]): Promise { return Promise.all( - paths.map(async (pkgPath) => { - const path = resolve(process.cwd(), pkgPath) - const pkgBody = await readFile(join(path, 'package.json'), 'utf8') - const pkgJson = JSON.parse(pkgBody) - const npmName = pkgJson.name as string + paths.map(async (relativePath) => { + const absolutePath = join(process.cwd(), relativePath) + const referencePath = join(absolutePath, 'reference.json') + const referenceBody = await fs.readJson(referencePath).catch(() => ({})) + const referenceJson = defu(referenceBody, { + 'package.json': './package.json', + introduction: './README.md', + }) as ReferenceJSON + + const packageJsonPath = join(absolutePath, referenceJson['package.json']) + const packageJson = (await fs.readJson(packageJsonPath)) as { + name: string + } + return { - path, - package: { name: npmName }, - slug: nameToSlug(npmName), - originalSelector: pkgPath, + absolutePath, + packageJson, + slug: nameToSlug(packageJson.name), + relativePath: relativePath, + referenceJson, } }), ) @@ -40,10 +62,90 @@ export function makeSidebar( packages: PackageRef[], { prefix }: { prefix?: string }, ): Promise { - const links = packages.map(async (pkg) => ({ - label: pkg.package.name, - link: `/${prefix ? prefix + '/' : ''}${pkg.slug}`, - })) + const links = packages.map(async (pkg) => { + const packageLink = `/${prefix ? prefix + '/' : ''}${pkg.slug}` + + const pages = [] + if (pkg.referenceJson.referenceDocs) { + pages.push({ + label: 'Reference', + link: `${packageLink}/reference`, + }) + } + if (pkg.referenceJson.changelog) { + pages.push({ + label: 'Changelog', + link: `${packageLink}/changelog`, + }) + } + + return pages.length + ? { + label: pkg.packageJson.name, + collapsed: true, + items: [ + { + label: 'Introduction', + link: packageLink, + }, + ...pages, + ], + } + : { + label: pkg.packageJson.name, + link: packageLink, + } + }) return Promise.all(links) } + +export function loader(pkgs: PackageRef[]): Loader { + const base = pkgs + .map((pkg) => pkg.absolutePath) + .reduce((base, candidate) => { + if (candidate.startsWith(base)) return base + + let candidateParts = candidate.split(pathSep) + let baseParts = base.split(pathSep) + const minLength = Math.min(candidateParts.length, baseParts.length) + let i = 0 + for (; i < minLength; i++) { + if (baseParts[i] !== candidateParts[i]) { + break + } + } + return baseParts.slice(0, i).join(pathSep) + }) + + let map = new Map() + let pattern: string[] = [] + + function trackFile(pkg: PackageRef, prop: keyof ReferenceJSON) { + const localTarget = pkg.referenceJson[prop] + if (localTarget) { + // resolve absolute path in FS + const absolutePath = join(pkg.absolutePath, localTarget) + // get path relative to `base`, it'll be used below in generateId + const relativePath = relative(base, absolutePath) + pattern.push(relativePath) + map.set(relativePath, `${pkg.slug}:${prop}`) + } + } + + for (const pkg of pkgs) { + trackFile(pkg, 'introduction') + trackFile(pkg, 'referenceDocs') + trackFile(pkg, 'changelog') + } + + return glob({ + pattern, + base, + generateId({ entry, base }) { + const id = map.get(entry) + if (!id) throw new Error(`Not found id for ${entry} on ${base}`) + return id + }, + }) +} diff --git a/docs/package-lock.json b/docs/package-lock.json index c89b56d7c..3489d4901 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@astrojs/starlight": "^0.34.0", "astro": "^5.6.1", + "defu": "^6.1.4", "fast-glob": "^3.3.3", "mermaid": "^11.6.0", "rehype-autolink-headings": "^7.1.0", diff --git a/docs/package.json b/docs/package.json index dea724d65..77b1bd66d 100644 --- a/docs/package.json +++ b/docs/package.json @@ -14,6 +14,7 @@ "dependencies": { "@astrojs/starlight": "^0.34.0", "astro": "^5.6.1", + "defu": "^6.1.4", "fast-glob": "^3.3.3", "mermaid": "^11.6.0", "rehype-autolink-headings": "^7.1.0", diff --git a/docs/src/components/starlight/Sidebar.astro b/docs/src/components/starlight/Sidebar.astro index bdf756289..8a5b5b37e 100644 --- a/docs/src/components/starlight/Sidebar.astro +++ b/docs/src/components/starlight/Sidebar.astro @@ -43,12 +43,6 @@ assertGroups(sidebar); // The id is prefixed to avoid clashing with existing heading IDs on the page. const makeId = (label: string) => '__tab-' + label.toLowerCase().replaceAll(/\s+/g, '-'); - - -/** Get the icon for a group. Update the icon names in the array to change the icons associated with a group. */ -const getIcon = (index: number) => - (['rocket', 'open-book', 'information'] as const)[index]; - /** Determine if an array of sidebar items contains the current page. */ const isCurrent = (sidebar: SidebarEntry[]): boolean => sidebar @@ -60,9 +54,9 @@ const isCurrent = (sidebar: SidebarEntry[]): boolean => { - sidebar.map(({ label, entries }, index) => ( + sidebar.map(({ label, entries, badge }) => ( - {label} + {label} )) } diff --git a/docs/src/content.config.ts b/docs/src/content.config.ts index 79e9c66dc..27a9bfc0c 100644 --- a/docs/src/content.config.ts +++ b/docs/src/content.config.ts @@ -1,14 +1,10 @@ import { defineCollection } from 'astro:content' import { docsSchema } from '@astrojs/starlight/schema' import { docsLoader } from '@astrojs/starlight/loaders' -import { glob } from 'astro/loaders' +import { allPackages } from '../astro.autogen.js' +import { loader } from '../config/integrations/package-reference.js' export const collections = { docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), - readmes: defineCollection({ - loader: glob({ - pattern: '*/README.md', - base: '../packages', - }), - }), + packages: defineCollection({ loader: loader(allPackages) }), } diff --git a/docs/src/content.ts b/docs/src/content.ts index adfe2b72d..3ff67bdf0 100644 --- a/docs/src/content.ts +++ b/docs/src/content.ts @@ -1,5 +1,7 @@ -import { getCollection } from 'astro:content'; +import { getCollection } from 'astro:content' -export const docsPages = await getCollection('docs'); -export const readmesPages = await getCollection('readmes') -export const allPages = [...docsPages, ...readmesPages] +export const docsPages = await getCollection('docs') +export const packagesPages = await getCollection('packages') +export const allPages = [...docsPages, ...packagesPages] + +console.log(packagesPages.map((a) => a.id)) diff --git a/docs/src/pages/adapters/[slug].astro b/docs/src/pages/adapters/[slug].astro deleted file mode 100644 index cb5f9dca6..000000000 --- a/docs/src/pages/adapters/[slug].astro +++ /dev/null @@ -1,25 +0,0 @@ ---- -import type { GetStaticPaths } from 'astro' -import { readmesPages } from '../../content' -import { render } from 'astro:content' -import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro' -import { adapters } from '../../../adapters.config' -import { joinBy } from '../../util/join.ts' - -export const getStaticPaths = (() => { - return joinBy(adapters, readmesPages, (ref, readme) => - Boolean(readme.filePath?.startsWith(ref.originalSelector)), - ).map(([ref, readme]) => ({ - props: { readme, ref }, - params: { slug: ref.slug }, - })) -}) satisfies GetStaticPaths - -const { readme, ref } = Astro.props - -const { Content } = await render(readme) ---- - - - - diff --git a/docs/src/pages/package/[slug].astro b/docs/src/pages/package/[slug].astro new file mode 100644 index 000000000..ef89c5761 --- /dev/null +++ b/docs/src/pages/package/[slug].astro @@ -0,0 +1,26 @@ +--- +import type { GetStaticPaths } from 'astro' +import { packagesPages } from '../../content' +import { render } from 'astro:content' +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro' +import { allPackages } from '../../../astro.autogen.ts' +import { joinBy } from '../../util/join.ts' + +export const getStaticPaths = (() => { + return joinBy(allPackages, packagesPages, (ref, page) => + page.id === ref.slug + ':introduction', + ).map(([ref, page]) => ({ + props: { page, ref }, + params: { slug: ref.slug }, + })) +}) satisfies GetStaticPaths + +const { page, ref } = Astro.props + +const { Content, headings } = await render(page) +--- + + + + + diff --git a/docs/src/pages/package/[slug]/changelog.astro b/docs/src/pages/package/[slug]/changelog.astro new file mode 100644 index 000000000..a3d693584 --- /dev/null +++ b/docs/src/pages/package/[slug]/changelog.astro @@ -0,0 +1,25 @@ +--- +import type {GetStaticPaths} from 'astro' +import {packagesPages} from '../../../content' +import {render} from 'astro:content' +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro' +import {allPackages} from '../../../../astro.autogen.ts' +import {joinBy} from '../../../util/join.ts' + +export const getStaticPaths = (() => { + return joinBy(allPackages, packagesPages, (ref, page) => + page.id === ref.slug + ':changelog', + ).map(([ref, page]) => ({ + props: {page, ref}, + params: {slug: ref.slug}, + })) +}) satisfies GetStaticPaths + +const {page, ref} = Astro.props + +const {Content, headings} = await render(page) +--- + + + + diff --git a/docs/src/pages/package/[slug]/reference.astro b/docs/src/pages/package/[slug]/reference.astro new file mode 100644 index 000000000..64a022656 --- /dev/null +++ b/docs/src/pages/package/[slug]/reference.astro @@ -0,0 +1,25 @@ +--- +import type { GetStaticPaths } from 'astro' +import { packagesPages } from '../../../content' +import { render } from 'astro:content' +import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro' +import { allPackages } from '../../../../astro.autogen.ts' +import { joinBy } from '../../../util/join.ts' + +export const getStaticPaths = (() => { + return joinBy(allPackages, packagesPages, (ref, page) => + page.id === ref.slug + ':referenceDocs', + ).map(([ref, page]) => ({ + props: { page, ref }, + params: { slug: ref.slug }, + })) +}) satisfies GetStaticPaths + +const { page, ref } = Astro.props + +const { Content, headings } = await render(page) +--- + + + + diff --git a/docs/tsconfig.json b/docs/tsconfig.json index bb4ca09e7..84771a47c 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -3,7 +3,9 @@ "jsx": "react-jsx", "jsxImportSource": "preact", "allowImportingTsExtensions": true, - "module": "esnext", + "noEmit": true, + "moduleResolution": "nodenext", + "module": "NodeNext", "target": "es2022" } } diff --git a/package-lock.json b/package-lock.json index aa85640bf..d182f5ea0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,6 @@ "packages": { "": { "name": "reatom-workspace", - "hasInstallScript": true, "license": "MIT", "workspaces": [ "./packages/core", @@ -14,7 +13,8 @@ "./packages/preact", "./packages/react", "./packages/vue", - "./packages/zod" + "./packages/zod", + "./tools/reference-docs-generator" ], "dependencies": { "@commitlint/cli": "^19.2.1", @@ -1295,6 +1295,19 @@ "tslib": "^2.3.1" } }, + "node_modules/@gerrit0/mini-shiki": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.4.2.tgz", + "integrity": "sha512-3jXo5bNjvvimvdbIhKGfFxSnKCX+MA8wzHv55ptzk/cx8wOzT+BRcYgj8aFN3yTiTs+zvQQiaZFr7Jce1ZG3fw==", + "license": "MIT", + "dependencies": { + "@shikijs/engine-oniguruma": "^3.4.2", + "@shikijs/langs": "^3.4.2", + "@shikijs/themes": "^3.4.2", + "@shikijs/types": "^3.4.2", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1587,6 +1600,10 @@ "vite": ">=2.0.0" } }, + "node_modules/@reatom-internal/reference-docs-generator": { + "resolved": "tools/reference-docs-generator", + "link": true + }, "node_modules/@reatom/core": { "resolved": "packages/core", "link": true @@ -2091,6 +2108,50 @@ "win32" ] }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.2.tgz", + "integrity": "sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.2.tgz", + "integrity": "sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.4.2" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.2.tgz", + "integrity": "sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.4.2" + } + }, + "node_modules/@shikijs/types": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.2.tgz", + "integrity": "sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, "node_modules/@standard-schema/spec": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", @@ -2162,6 +2223,29 @@ "@testing-library/dom": ">=7.21.4" } }, + "node_modules/@textlint/ast-node-types": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.6.1.tgz", + "integrity": "sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA==", + "license": "MIT" + }, + "node_modules/@textlint/markdown-to-ast": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.6.1.tgz", + "integrity": "sha512-T0HO+VrU9VbLRiEx/kH4+gwGMHNMIGkp0Pok+p0I33saOOLyhfGvwOKQgvt2qkxzQEV2L5MtGB8EnW4r5d3CqQ==", + "license": "MIT", + "dependencies": { + "@textlint/ast-node-types": "^12.6.1", + "debug": "^4.3.4", + "mdast-util-gfm-autolink-literal": "^0.1.3", + "remark-footnotes": "^3.0.0", + "remark-frontmatter": "^3.0.0", + "remark-gfm": "^1.0.0", + "remark-parse": "^9.0.0", + "traverse": "^0.6.7", + "unified": "^9.2.2" + } + }, "node_modules/@tybys/wasm-util": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", @@ -2239,12 +2323,36 @@ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "license": "MIT" }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "license": "MIT" + }, "node_modules/@types/node": { "version": "22.15.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.18.tgz", @@ -2254,6 +2362,12 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "license": "MIT" + }, "node_modules/@types/prop-types": { "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", @@ -2279,6 +2393,12 @@ "license": "MIT", "peer": true }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.32.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", @@ -2892,6 +3012,21 @@ "dev": true, "license": "MIT" }, + "node_modules/anchor-markdown-header": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.6.0.tgz", + "integrity": "sha512-v7HJMtE1X7wTpNFseRhxsY/pivP4uAJbidVhPT+yhz4i/vV1+qx371IXuV9V7bN6KjFtheLJxqaSm0Y/8neJTA==", + "license": "MIT", + "dependencies": { + "emoji-regex": "~10.1.0" + } + }, + "node_modules/anchor-markdown-header/node_modules/emoji-regex": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", + "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==", + "license": "MIT" + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2932,12 +3067,67 @@ "dequal": "^2.0.3" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "license": "MIT" }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -2947,6 +3137,30 @@ "node": ">=12" } }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/babel-plugin-transform-hook-names": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz", @@ -2957,6 +3171,16 @@ "@babel/core": "^7.12.10" } }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3053,6 +3277,53 @@ "node": ">=8" } }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3062,6 +3333,32 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001718", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", @@ -3083,6 +3380,16 @@ ], "license": "CC-BY-4.0" }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/cellx": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cellx/-/cellx-2.0.1.tgz", @@ -3118,6 +3425,36 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/check-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", @@ -3182,6 +3519,61 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, + "node_modules/concat-md": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/concat-md/-/concat-md-0.5.1.tgz", + "integrity": "sha512-iZr6yxlwPQ5IZup2mvqgm+JI0jnu5yGkND2ra5DinBtcevDQPQiAGpf4RXOnor1UpKBUydqegDLfPY8b+FfI+Q==", + "license": "MIT", + "dependencies": { + "doctoc": "^2.2.1", + "front-matter": "^4.0.2", + "globby": "^11.1.0", + "lodash.startcase": "^4.4.0", + "meow": "^9.0.0", + "transform-markdown-links": "^2.0.0" + }, + "bin": { + "concat-md": "dist/bin/concat-md.js" + }, + "engines": { + "node": ">=10.8.0" + } + }, + "node_modules/concat-md/node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-md/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/conventional-changelog-angular": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", @@ -3336,6 +3728,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -3353,6 +3796,40 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deep-eql": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", @@ -3368,6 +3845,40 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "license": "MIT" }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -3392,6 +3903,35 @@ "dexnode": "bin/dexnode.js" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctoc": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-2.2.1.tgz", + "integrity": "sha512-qNJ1gsuo7hH40vlXTVVrADm6pdg30bns/Mo7Nv1SxuXSM1bwF9b4xQ40a6EFT/L1cI+Yylbyi8MPI4G4y7XJzQ==", + "license": "MIT", + "dependencies": { + "@textlint/markdown-to-ast": "^12.1.1", + "anchor-markdown-header": "^0.6.0", + "htmlparser2": "^7.2.0", + "minimist": "^1.2.6", + "underscore": "^1.13.2", + "update-section": "^0.3.3" + }, + "bin": { + "doctoc": "doctoc.js" + } + }, "node_modules/dom-accessibility-api": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", @@ -3431,7 +3971,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, "funding": [ { "type": "github", @@ -3483,6 +4022,20 @@ "node": ">=8" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -3521,6 +4074,18 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -3539,12 +4104,142 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "license": "MIT" }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/esbuild": { "version": "0.25.4", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", @@ -3867,6 +4562,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -3927,6 +4635,12 @@ "node": ">=12.0.0" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3998,6 +4712,19 @@ "reusify": "^1.0.4" } }, + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/fdir": { "version": "6.4.4", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", @@ -4072,6 +4799,60 @@ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "license": "ISC" }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4086,6 +4867,44 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4105,6 +4924,60 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-tsconfig": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", @@ -4173,12 +5046,81 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "license": "MIT" }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4188,35 +5130,202 @@ "node": ">=8" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", - "bin": { - "he": "bin/he" + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "license": "MIT", - "bin": { - "husky": "bin.js" + "dependencies": { + "dunder-proto": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/htmlparser2/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/htmlparser2/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/htmlparser2/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { "node": ">= 4" @@ -4266,6 +5375,15 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ini": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", @@ -4275,12 +5393,210 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "license": "MIT" }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4290,6 +5606,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -4299,6 +5630,24 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4311,6 +5660,40 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -4320,27 +5703,194 @@ "node": ">=0.12.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "license": "MIT", + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "license": "MIT", "dependencies": { - "text-extensions": "^2.0.0" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4480,6 +6030,15 @@ "json-buffer": "3.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kolorist": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", @@ -4506,6 +6065,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/lit": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", @@ -4609,6 +6177,16 @@ "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", "license": "MIT" }, + "node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4638,6 +6216,12 @@ "yallist": "^3.0.2" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" + }, "node_modules/lz-string": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", @@ -4657,6 +6241,234 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "license": "MIT", + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-footnote": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", + "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", + "license": "MIT", + "dependencies": { + "mdast-util-to-markdown": "^0.6.0", + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", + "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "license": "MIT", + "dependencies": { + "micromark-extension-frontmatter": "^0.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "license": "MIT", + "dependencies": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "license": "MIT", + "dependencies": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "license": "MIT", + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "license": "MIT", + "dependencies": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "license": "MIT", + "dependencies": { + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, "node_modules/meow": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", @@ -4678,6 +6490,132 @@ "node": ">= 8" } }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-footnote": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", + "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", + "license": "MIT", + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", + "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "license": "MIT", + "dependencies": { + "fault": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "license": "MIT", + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "license": "MIT", + "dependencies": { + "micromark": "~2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "license": "MIT", + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "license": "MIT", + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "license": "MIT", + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -4703,6 +6641,15 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4724,6 +6671,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/mobx": { "version": "6.13.7", "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.7.tgz", @@ -4815,6 +6785,21 @@ "dev": true, "license": "MIT" }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -4828,6 +6813,47 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -4845,6 +6871,23 @@ "node": ">= 0.8.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -4875,6 +6918,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4887,6 +6939,24 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "license": "MIT", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -4923,6 +6993,21 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -5003,6 +7088,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -5078,99 +7172,374 @@ "react-is": "^17.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/reatomV3": { + "resolved": "packages/core/@reatom/core@3", + "link": true + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "devOptional": true, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/remark-footnotes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", + "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "mdast-util-footnote": "^0.1.0", + "micromark-extension-footnote": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/remark-frontmatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", + "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", "license": "MIT", - "optional": true, "dependencies": { - "safe-buffer": "^5.1.0" + "mdast-util-frontmatter": "^0.2.0", + "micromark-extension-frontmatter": "^0.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", - "dev": true, + "node_modules/remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "devOptional": true, - "license": "MIT" + "node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/react-refresh": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", - "dev": true, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/reatomV3": { - "resolved": "packages/core/@reatom/core@3", - "link": true - }, - "node_modules/redux": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "dev": true, - "license": "MIT" - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5196,6 +7565,26 @@ "dev": true, "license": "MIT" }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -5340,6 +7729,25 @@ "dev": true, "license": "MIT" }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -5361,6 +7769,39 @@ "license": "MIT", "optional": true }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -5406,6 +7847,52 @@ "seroval": "^1.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5427,6 +7914,78 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -5458,6 +8017,15 @@ "node": ">=18" } }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/smob": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", @@ -5517,6 +8085,38 @@ "node": ">=0.10.0" } }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "license": "CC0-1.0" + }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", @@ -5533,6 +8133,12 @@ "dev": true, "license": "MIT" }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, "node_modules/stack-trace": { "version": "1.0.0-pre2", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz", @@ -5555,6 +8161,19 @@ "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "license": "MIT" }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5569,6 +8188,62 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5581,6 +8256,18 @@ "node": ">=8" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5593,6 +8280,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/terser": { "version": "5.39.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.2.tgz", @@ -5707,6 +8406,51 @@ "node": ">=6" } }, + "node_modules/transform-markdown-links": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/transform-markdown-links/-/transform-markdown-links-2.1.0.tgz", + "integrity": "sha512-7HWQwQ9US+tJSMMzi1aP+KA3QwfjDs8sB4H5GBMRHFNBMQVdgoF6VfIFy2nJR/UHRTkYoGFwWh2pe+QIwSvfOA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/traverse": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.11.tgz", + "integrity": "sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==", + "license": "MIT", + "dependencies": { + "gopd": "^1.2.0", + "typedarray.prototype.slice": "^1.0.5", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -5757,6 +8501,173 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.5.tgz", + "integrity": "sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "math-intrinsics": "^1.1.0", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-offset": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedoc": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.5.tgz", + "integrity": "sha512-5PzUddaA9FbaarUzIsEc4wNXCiO4Ot3bJNeMF2qKpYlTmM9TTaSHQ7162w756ERCkXER/+o2purRG6YOAv6EMA==", + "license": "Apache-2.0", + "dependencies": { + "@gerrit0/mini-shiki": "^3.2.2", + "lunr": "^2.3.9", + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "yaml": "^2.7.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 18", + "pnpm": ">= 10" + }, + "peerDependencies": { + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.6.4.tgz", + "integrity": "sha512-AnbToFS1T1H+n40QbO2+i0wE6L+55rWnj7zxnM1r781+2gmhMF2dB6dzFpaylWLQYkbg4D1Y13sYnne/6qZwdw==", + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "typedoc": "0.28.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -5792,6 +8703,36 @@ "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "license": "MIT" + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -5810,6 +8751,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "license": "MIT", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -5841,6 +8837,12 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/update-section": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", + "integrity": "sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==", + "license": "MIT" + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -5871,6 +8873,46 @@ } } }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", @@ -6112,6 +9154,91 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", @@ -6206,6 +9333,18 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -6293,6 +9432,16 @@ "license": "MIT", "peer": true }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/zx": { "version": "8.5.4", "resolved": "https://registry.npmjs.org/zx/-/zx-8.5.4.tgz", @@ -6339,6 +9488,7 @@ "@frp-ts/core": "latest", "@ngrx/store": "latest", "@preact/signals-core": "latest", + "@reatom-internal/reference-docs-generator": "^0.1.0", "@standard-schema/spec": "^1.0.0", "@types/node": "latest", "@webreflection/signal": "latest", @@ -6360,7 +9510,7 @@ "usignal": "latest", "whatsup": "latest", "wonka": "latest", - "zod": "^3.24.4" + "zod": "^3.24.3" } }, "packages/core/@reatom/core@3": { @@ -7057,6 +10207,20 @@ "resolved": "https://registry.npmjs.org/@reatom/core/-/core-1000.0.0-alpha.25.tgz", "integrity": "sha512-v3QBPckw9LDbBtEJWMDdnrUvAY7ubATiB6vk+4hcpxrcgVAt2dEiLzDAEIvS2W9pvqzvN3mUfk5jHsiUZtsQGg==", "license": "MIT" + }, + "tools/reference-docs-generator": { + "name": "@reatom-internal/reference-docs-generator", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "concat-md": "^0.5.1", + "typedoc": "^0.28.4", + "typedoc-plugin-markdown": "^4.6.3", + "zx": "^8.5.4" + }, + "bin": { + "generate-reatom-reference": "cli.js" + } } } } diff --git a/package.json b/package.json index f9444fc4f..bc0894852 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "./packages/preact", "./packages/react", "./packages/vue", - "./packages/zod" + "./packages/zod", + "./tools/reference-docs-generator" ], "engines": { "node": ">=24" diff --git a/packages/core/REFERENCE.md b/packages/core/REFERENCE.md new file mode 100644 index 000000000..5a9807f53 --- /dev/null +++ b/packages/core/REFERENCE.md @@ -0,0 +1,15467 @@ +# Classes + + + + +## Class: ReatomError + +Defined in: [packages/core/src/core/atom.ts:350](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L350) + +### Extends + +- `Error` + +### Constructors + +#### Constructor + +> **new ReatomError**(`message?`): `ReatomError` + +Defined in: node\_modules/typescript/lib/lib.es5.d.ts:1082 + +##### Parameters + +###### message? + +`string` + +##### Returns + +`ReatomError` + +##### Inherited from + +`Error.constructor` + +#### Constructor + +> **new ReatomError**(`message?`, `options?`): `ReatomError` + +Defined in: node\_modules/typescript/lib/lib.es5.d.ts:1082 + +##### Parameters + +###### message? + +`string` + +###### options? + +`ErrorOptions` + +##### Returns + +`ReatomError` + +##### Inherited from + +`Error.constructor` + +# Functions + + + + +## Function: actions() + +> **actions**\<`Target`, `Methods`\>(`this`, `options`): [`ActionsExt`](#type-aliasesactionsextmd)\<`Methods`\> + +Defined in: [packages/core/src/core/actions.ts:73](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/actions.ts#L73) + +Binds actions to an atom or action as methods. + +This function adds methods to an atom or action by converting them to Reatom actions. +Each method is converted to an action with the same name and bound to the target. +The name of each action will be prefixed with the target's name for better debugging. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +The atom or action being extended + +#### Methods + +`Methods` *extends* [`Rec`](#type-aliasesrecmd)\<[`Fn`](#interfacesfnmd)\> + +Record of functions to convert to actions + +### Parameters + +#### this + +`Target` + +#### options + +Either a record of methods or a function that creates methods given the target + +`Methods` | (`target`) => `Methods` + +### Returns + +[`ActionsExt`](#type-aliasesactionsextmd)\<`Methods`\> + +The target with the methods added as actions + +### Throws + +If a method name collides with an existing property on the target + +### Example + +```ts +const counter = atom(0, 'counter').actions({ + increment: (amount = 1) => counter((prev) => prev + amount), + decrement: (amount = 1) => counter((prev) => prev - amount), + reset: () => counter(0), +}) + +counter.increment(5) // Can now call these methods directly +counter.reset() +``` + + + + +## Function: addCallHook() + +> **addCallHook**\<`Target`\>(`target`, `cb`): [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/mixins/withChangeHook.ts:89](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withChangeHook.ts#L89) + +### Type Parameters + +#### Target + +`Target` *extends* [`Action`](#interfacesactionmd)\<`any`[], `any`\> + +### Parameters + +#### target + +`Target` + +#### cb + +(`payload`, `params`) => `void` + +### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + + + + +## Function: addChangeHook() + +> **addChangeHook**\<`T`\>(`target`, `cb`): [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/mixins/withChangeHook.ts:38](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withChangeHook.ts#L38) + +### Type Parameters + +#### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### target + +`T` + +#### cb + +(`state`, `prevState?`) => `void` + +### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + + + + +## Function: assert() + +> **assert**(`value`, `message`, `ErrorConstructor`): `asserts value` + +Defined in: [packages/core/src/utils.ts:185](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L185) + +Asserts that a value is truthy, throwing an error if it's falsy. +This is a TypeScript type assertion function that helps with type narrowing. + +### Parameters + +#### value + +`unknown` + +The value to check + +#### message + +`string` + +The error message to use if the assertion fails + +#### ErrorConstructor + +[`Newable`](#interfacesnewablemd)\<`Error`\> = `Error` + +Optional custom error constructor to use (defaults to Error) + +### Returns + +`asserts value` + +### Throws + +Throws an error with the provided message if value is falsy + + + + +## Function: assertFn() + +> **assertFn**(`fn`): `asserts fn is Fn` + +Defined in: [packages/core/src/core/atom.ts:506](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L506) + +### Parameters + +#### fn + +`unknown` + +### Returns + +`asserts fn is Fn` + + + + +## Function: bind() + +> **bind**\<`Params`, `Payload`\>(`target`, `frame`): (...`params`) => `Payload` + +Defined in: [packages/core/src/core/atom.ts:1069](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L1069) + +Light version of `wrap` that binds a function to the current reactive context. + +Unlike the full `wrap` function, `bind` does not follow abort context, making it +more lightweight but less safe for certain async operations. Use this when you +need to preserve context but don't need the abort handling capabilities of `wrap`. + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] + +The parameter types of the target function + +#### Payload + +`Payload` + +The return type of the target function + +### Parameters + +#### target + +(...`params`) => `Payload` + +The function to bind to the reactive context + +#### frame + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> = `...` + +The frame to bind to (defaults to the current top frame) + +### Returns + +A function that will run in the specified context when called + +> (...`params`): `Payload` + +#### Parameters + +##### params + +...`Params` + +#### Returns + +`Payload` + + + + +## Function: clearStack() + +> **clearStack**(): `void` + +Defined in: [packages/core/src/core/atom.ts:1036](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L1036) + +Clears the current Reatom context stack. + +This is primarily used to force explicit context preservation via `wrap()`. +By clearing the stack, any atom operations outside of a properly wrapped +function will throw "missing async stack" errors, ensuring proper context handling. + +### Returns + +`void` + + + + +## Function: computed() + +> **computed**\<`State`\>(`computed`, `name?`): [`Computed`](#interfacescomputedmd)\<`State`\> + +Defined in: [packages/core/src/core/atom.ts:918](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L918) + +Creates a derived state container that lazily recalculates only when read. + +Computed atoms automatically track their dependencies (other atoms or computed values +that are called during computation) and only recalculate when those dependencies change. +The computation is lazy - it only runs when the computed value is read AND subscribed to. + +### Type Parameters + +#### State + +`State` + +The type of state derived by the computation + +### Parameters + +#### computed + +A function that computes the derived state + +() => `State` | (`state?`) => `State` + +#### name? + +`string` + +Optional name for debugging purposes + +### Returns + +[`Computed`](#interfacescomputedmd)\<`State`\> + +A computed atom instance + +### Example + +```ts +const counter = atom(5, 'counter') +const doubled = computed(() => counter() * 2, 'doubledCounter') + +// Reading triggers computation only if subscribed +const value = doubled() // -> 10 +``` + + + + +## Function: computedParams() + +> **computedParams**(`next`): `any` + +Defined in: [packages/core/src/core/atom.ts:890](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L890) + +### Parameters + +#### next + +[`Fn`](#interfacesfnmd) + +### Returns + +`any` + + + + +## Function: concatTree() + +> **concatTree**(`acc`, `steps`, `node`): `string` + +Defined in: [packages/core/src/connectLogger.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/connectLogger.ts#L84) + +Concatenates a tree structure representation into a string format. + +This function recursively builds a formatted ASCII/Unicode tree representation +of a Node structure with proper branch indentation and connections. + +### Parameters + +#### acc + +`string` + +The accumulator string that holds the current tree representation + +#### steps + +`string` + +Indentation padding string for proper alignment + +#### node + +`Node` + +The current node to process and display in the tree + +### Returns + +`string` + +A formatted string representation of the tree structure + +### Example + +```ts +// For a node with children, might produce something like: +// myNode ┬─ child1 ─ grandChild +// └─ child2 +``` + + + + +## Function: connectLogger() + +> **connectLogger**(): `void` + +Defined in: [packages/core/src/connectLogger.ts:148](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/connectLogger.ts#L148) + +Sets up and connects a logger to the Reatom system for debugging and tracing. + +This function enhances all non-private atoms and actions with logging capabilities. +When an atom's value changes or an action is called, it logs the event with relevant +information to the console including: +- Previous and current state for atoms +- Parameters and return values for actions +- Complete dependency stack traces +- Error information when exceptions occur + +The logger adapts to the environment, using different formatting for browser and Node.js. +Private atoms (those with names starting with '_' or containing '._') are not logged. + +### Returns + +`void` + +### Example + +```ts +// Connect the logger at application startup +import { connectLogger } from '@reatom/core' + +connectLogger() +``` + + + + +## Function: \_copy() + +> **\_copy**(`contextFrame`, `frame`): [`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +Defined in: [packages/core/src/core/atom.ts:377](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L377) + +### Parameters + +#### contextFrame + +[`ContextFrame`](#interfacescontextframemd) + +#### frame + +[`Frame`](#interfacesframemd) + +### Returns + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + + + + +## Function: effect() + +> **effect**\<`T`\>(`cb`, `name?`): [`Effect`](#interfaceseffectmd)\<`T`\> + +Defined in: [packages/core/src/methods/effect.ts:58](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/effect.ts#L58) + +Creates a reactive side effect that automatically tracks dependencies and cleans itself up. + +`effect` is similar to `computed` but designed for running side effects. +It automatically subscribes to any atoms read within the callback (`cb`). +When the effect's reactive context is aborted (e.g., component unmount in `reatomFactoryComponent`, +cancellation in `withAbort` / `withAsyncData`), the effect's execution is stopped, +and any ongoing async operations within it (like `await wrap(sleep(...))`) are cancelled. + +### Type Parameters + +#### T + +`T` + +### Parameters + +#### cb + +() => `T` + +The function to run as a side effect. It can be async. + Any atoms read inside `cb` will become dependencies. + +#### name? + +`string` + +Optional name for debugging purposes. Auto-generated if not provided. + +### Returns + +[`Effect`](#interfaceseffectmd)\<`T`\> + +A function to manually unsubscribe and clean up the effect. + Calling this function is usually not necessary when `effect` is used + within managed contexts like `reatomFactoryComponent` or `withConnectHook`, + as cleanup happens automatically. + +### Example + +```ts +import { atom, effect, wrap, sleep, isAbort } from '@reatom/core' + +const isActive = atom(true, 'isActive') +const data = atom(0, 'data') + +// This effect polls data every 5 seconds while isActive is true +const polling = effect(async () => { + if (!isActive()) return // Depends on isActive + + console.log('Polling started...') + try { + while (true) { + const fetchedData = await wrap(fetch('/api/poll')) + const jsonData = await wrap(fetchedData.json()) + data(jsonData.value) + await wrap(sleep(5000)) // Abortable sleep + } + } catch (error) { + if (isAbort(error)) { + console.log('Polling aborted cleanly.') + } else { + console.error('Polling error:', error) + } + } +}, 'pollingEffect') + +// To manually stop: +// polling() +``` + + + + +## Function: \_enqueue() + +> **\_enqueue**(`fn`, `queue`): `void` + +Defined in: [packages/core/src/core/queues.ts:15](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/queues.ts#L15) + +Schedules a function to be executed in a specific queue of the current context. + +This is the core mechanism for scheduling reactive updates in Reatom. When an atom's +state changes, tasks are queued to be executed afterwards in the appropriate order. +If this is the first task being scheduled, a microtask is created to process the +queues asynchronously. + +### Parameters + +#### fn + +[`Fn`](#interfacesfnmd) + +The function to schedule for execution + +#### queue + +The queue to add the function to ('hook', 'compute', 'cleanup', or 'effect') + +`"hook"` | `"compute"` | `"cleanup"` | `"effect"` + +### Returns + +`void` + + + + +## Function: experimental\_fieldArray() + +### Call Signature + +> **experimental\_fieldArray**\<`Param`\>(`initState`): `FormFieldArray`\<`Param`, `Param`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:270](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L270) + +#### Type Parameters + +##### Param + +`Param` *extends* `FormInitStateElement` + +#### Parameters + +##### initState + +`Param`[] + +#### Returns + +`FormFieldArray`\<`Param`, `Param`\> + +### Call Signature + +> **experimental\_fieldArray**\<`Param`, `Node`\>(`create`): `FormFieldArray`\<`Param`, `Node`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:274](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L274) + +#### Type Parameters + +##### Param + +`Param` + +##### Node + +`Node` *extends* `FormInitStateElement` = `FormInitStateElement` + +#### Parameters + +##### create + +(`params`, `name`) => `Node` + +#### Returns + +`FormFieldArray`\<`Param`, `Node`\> + +### Call Signature + +> **experimental\_fieldArray**\<`Param`, `Node`\>(`options`): `FormFieldArray`\<`Param`, `Node`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:279](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L279) + +#### Type Parameters + +##### Param + +`Param` + +##### Node + +`Node` *extends* `FormInitStateElement` = `FormInitStateElement` + +#### Parameters + +##### options + +###### create + +(`param`, `name`) => `Node` + +###### initState? + +`Param`[] + +#### Returns + +`FormFieldArray`\<`Param`, `Node`\> + + + + +## Function: extend() + +> **extend**\<`This`\>(`this`, ...`extensions`): `This` + +Defined in: [packages/core/src/core/extend.ts:109](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L109) + +Applies extensions to atoms or actions. + +This is the core extension mechanism in Reatom that allows adding functionality +to atoms and actions. Extensions can add properties, methods, or modify behavior. +Extended atoms maintain their original reference identity. + +### Type Parameters + +#### This + +`This` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +The type of atom or action being extended + +### Parameters + +#### this + +`This` + +#### extensions + +...[`Ext`](#interfacesextmd)\<[`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\>, [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\>\>[] + +Array of extensions to apply to the atom/action + +### Returns + +`This` + +The original atom/action with extensions applied + +### Example + +```ts +// Extending an atom with reset capability +const counter = atom(0, 'counter').extend( + withReset(0), // Adds counter.reset() method + withLogger('COUNTER') // Adds logging middleware +) +``` + + + + +## Function: getStackTrace() + +> **getStackTrace**(`acc?`, `steps?`, `frame?`): `string` + +Defined in: [packages/core/src/connectLogger.ts:122](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/connectLogger.ts#L122) + +Generates a formatted stack trace string based on the current execution context. + +Creates a visual representation of the dependency tree from the current frame +up through its publishers, using ASCII/Unicode characters to show relationships. + +### Parameters + +#### acc? + +`string` = `'─ '` + +Initial accumulator string for the result + +#### steps? + +`string` = `''` + +Initial indentation padding for proper alignment + +#### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> = `...` + +The starting frame to trace from (defaults to current top frame) + +### Returns + +`string` + +A formatted string representation of the stack trace + +### Example + +```ts +// Might produce output like: +// ─ counter ┬─ doubleCounter +// └─ displayValue +``` + + + + +## Function: identity() + +> **identity**\<`T`\>(`value`, ...`a`): `T` + +Defined in: [packages/core/src/utils.ts:207](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L207) + +Identity function that returns the first argument unchanged. +Can accept additional parameters but ignores them. + +### Type Parameters + +#### T + +`T` + +The type of value being passed through + +### Parameters + +#### value + +`T` + +The value to return + +#### a + +...`any`[] + +### Returns + +`T` + +The same value that was passed in + + + + +## Function: ifCalled() + +> **ifCalled**\<`Params`, `Payload`\>(`target`, `cb`): `void` + +Defined in: [packages/core/src/methods/ifChanged.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/ifChanged.ts#L78) + +Executes a callback when an action is called + +This utility detects when an action is called during the current frame execution +and executes the provided callback with the action's payload and parameters. +Only works within a reactive (atom) context. + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] + +Array type of action parameters + +#### Payload + +`Payload` + +Return type of the action + +### Parameters + +#### target + +[`Action`](#interfacesactionmd)\<`Params`, `Payload`\> + +The action to monitor for calls + +#### cb + +(`payload`, `params`) => `void` + +Callback function to execute when the action is called + +### Returns + +`void` + +### Throws + +If target is not an action or if not used in a reactive context + +### Example + +```ts +// Log when a user is created +ifCalled(createUser, (user, params) => { + console.log(`User created: ${user.name} with ID ${user.id}`); +}); +``` + + + + +## Function: ifChanged() + +> **ifChanged**\<`T`\>(`target`, `cb`): `void` + +Defined in: [packages/core/src/methods/ifChanged.ts:35](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/ifChanged.ts#L35) + +Executes a callback when an atom's state changes + +This utility evaluates if an atom's state has changed during the current +frame execution and calls the provided callback with the new state (and optionally +the previous state if available). + +### Type Parameters + +#### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +Type extending AtomLike + +### Parameters + +#### target + +`T` + +The atom to monitor for changes + +#### cb + +(`newState`, `oldState?`) => `void` + +Callback to execute when the atom changes + +### Returns + +`void` + +### Throws + +If target is not a reactive atom + +### Example + +```ts +// Log when the user's name changes +ifChanged(userName, (newName, oldName) => { + console.log(`Name changed from ${oldName} to ${newName}`); +}); +``` + + + + +## Function: isAbort() + +> **isAbort**(`thing`): `thing is AbortError` + +Defined in: [packages/core/src/utils.ts:680](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L680) + +Type guard that checks if a value is an AbortError. + +### Parameters + +#### thing + +`any` + +The value to check + +### Returns + +`thing is AbortError` + +True if the value is an AbortError, false otherwise + + + + +## Function: isAction() + +> **isAction**(`target`): `target is Action` + +Defined in: [packages/core/src/core/action.ts:43](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/action.ts#L43) + +Type guard to check if a value is a Reatom action. + +This function determines whether the given value is an action by checking +if it's an atom with non-reactive behavior (actions are non-reactive atoms). + +### Parameters + +#### target + +`unknown` + +The value to check + +### Returns + +`target is Action` + +`true` if the value is a Reatom action, `false` otherwise + + + + +## Function: isAtom() + +> **isAtom**(`value`): `value is AtomLike` + +Defined in: [packages/core/src/core/atom.ts:400](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L400) + +### Parameters + +#### value + +`any` + +### Returns + +`value is AtomLike` + + + + +## Function: isBrowser() + +> **isBrowser**(): `boolean` + +Defined in: [packages/core/src/utils.ts:743](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L743) + +Detects whether the code is running in a browser environment. +Checks for the existence of window and document objects. + +### Returns + +`boolean` + +True if running in a browser environment, false otherwise + + + + +## Function: isCausedBy() + +> **isCausedBy**(`target`, `frame?`): `boolean` + +Defined in: [packages/core/src/methods/isCausedBy.ts:22](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/isCausedBy.ts#L22) + +Determines if an atom is part of the causal chain leading to the current computation + +This recursive function checks if the given atom has caused the current computation +by traversing the computation tree. It's useful for determining dependencies and +understanding the flow of state changes through your application. + +### Parameters + +#### target + +[`AtomLike`](#interfacesatomlikemd) + +The atom to check if it's part of the causal chain + +#### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> = `...` + +The frame to check (defaults to the current top frame) + +### Returns + +`boolean` + +True if the target atom is part of the causal chain, false otherwise + +### Example + +```ts +// Check if user atom changes caused the current computation +if (isCausedBy(userAtom)) { + console.log('This computation was triggered by user state change'); +} +``` + + + + +## Function: isComputed() + +> **isComputed**(`target`): `boolean` + +Defined in: [packages/core/src/core/atom.ts:935](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L935) + +Checks if the provided target is a READONLY computed atom + +### Parameters + +#### target + +[`AtomLike`](#interfacesatomlikemd) + +The atom to check + +### Returns + +`boolean` + +boolean + + + + +## Function: isConnected() + +> **isConnected**(`anAtom`): `boolean` + +Defined in: [packages/core/src/core/atom.ts:503](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L503) + +Checks if an atom has active subscriptions. + +This function determines if an atom is currently connected to any subscribers, +which indicates that the atom is being actively used somewhere in the application. +This is useful for optimizations or conditional logic based on whether an atom's +changes are being observed. + +### Parameters + +#### anAtom + +[`AtomLike`](#interfacesatomlikemd) + +The atom to check for subscriptions + +### Returns + +`boolean` + +`true` if the atom has subscribers, `false` otherwise + + + + +## Function: isDeepEqual() + +> **isDeepEqual**(`a`, `b`): `any` + +Defined in: [packages/core/src/utils.ts:324](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L324) + +Performs a deep equality comparison between two values. +Recursively compares nested objects and arrays while properly handling cyclic references. + +Handles primitives, objects, dates, regular expressions, arrays, maps, and sets. +Uses a WeakMap to track visited objects to avoid infinite recursion with circular references. + +### Parameters + +#### a + +`any` + +First value to compare + +#### b + +`any` + +Second value to compare + +### Returns + +`any` + +True if the values are deeply equal, false otherwise + + + + +## Function: isFieldAtom() + +> **isFieldAtom**(`thing`): `thing is FieldLikeAtom` + +Defined in: [packages/core/src/form/src/reatomField.ts:470](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L470) + +### Parameters + +#### thing + +`any` + +### Returns + +`thing is FieldLikeAtom` + + + + +## Function: isLinkedListAtom() + +> **isLinkedListAtom**(`thing`): `thing is LinkedListLikeAtom>>` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:739](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L739) + +### Parameters + +#### thing + +`any` + +### Returns + +`thing is LinkedListLikeAtom>>` + + + + +## Function: isObject() + +> **isObject**\<`T`\>(`thing`): thing is T extends Record\ ? T\ : Record\ + +Defined in: [packages/core/src/utils.ts:230](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L230) + +Type guard that checks if a value is an object (non-null and typeof 'object'). +Provides advanced type narrowing to either the original object type or a generic object type. + +### Type Parameters + +#### T + +`T` + +The type of value being checked + +### Parameters + +#### thing + +`T` + +The value to check + +### Returns + +thing is T extends Record\ ? T\ : Record\ + +True if the value is a non-null object, false otherwise + + + + +## Function: \_isPubsChanged() + +> **\_isPubsChanged**(`contextFrame`, `frame`, `pubs`, `from`): `boolean` + +Defined in: [packages/core/src/core/atom.ts:563](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L563) + +### Parameters + +#### contextFrame + +[`ContextFrame`](#interfacescontextframemd) + +#### frame + +[`Frame`](#interfacesframemd) + +#### pubs + +\[`null` \| [`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\>, `...dependencies: Frame[]`\] + +#### from + +`number` + +### Returns + +`boolean` + + + + +## Function: isRec() + +> **isRec**(`thing`): `thing is Record` + +Defined in: [packages/core/src/utils.ts:245](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L245) + +Type guard that checks if a value is a plain object (a simple object literal or created with Object.create(null)). +Verifies that the object either has no prototype or its prototype is Object.prototype. + +### Parameters + +#### thing + +`unknown` + +The value to check + +### Returns + +`thing is Record` + +True if the value is a plain object, false otherwise + + + + +## Function: isShallowEqual() + +> **isShallowEqual**(`a`, `b`, `is`): `any` + +Defined in: [packages/core/src/utils.ts:268](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L268) + +Performs a shallow equality comparison between two values. +Handles primitives, objects, dates, regular expressions, arrays, maps, and sets. + +For iterables, compares each item in sequence for equality. +For objects, compares direct property values but not nested objects deeply. + +### Parameters + +#### a + +`any` + +First value to compare + +#### b + +`any` + +Second value to compare + +#### is + +(`value1`, `value2`) => `boolean` + +Optional comparison function to use for individual values (defaults to Object.is) + +### Returns + +`any` + +True if the values are shallowly equal, false otherwise + + + + +## Function: jsonClone() + +> **jsonClone**\<`T`\>(`value`): `T` + +Defined in: [packages/core/src/utils.ts:478](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L478) + +Creates a deep clone of a value using JSON serialization/deserialization. +This is a type-safe shortcut to `JSON.parse(JSON.stringify(value))`. + +Note: This has limitations with circular references, functions, symbols, +and special objects like Date (converts to string). +Consider using the native structuredClone when available. + +### Type Parameters + +#### T + +`T` + +The type of value being cloned + +### Parameters + +#### value + +`T` + +The value to clone + +### Returns + +`T` + +A deep clone of the input value + +### See + +https://developer.mozilla.org/en-US/docs/Web/API/structuredClone + + + + +## Function: mock() + +> **mock**\<`Params`, `Payload`\>(`target`, `cb`): [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:1091](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L1091) + +Mocks an atom or action for testing purposes. + +This function replaces the original behavior of an atom or action with a custom +callback function for the duration of the mock. This is useful for isolating +units of code during testing and controlling their behavior. + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] + +The parameter types of the target atom/action + +#### Payload + +`Payload` + +The return type of the target atom/action + +### Parameters + +#### target + +[`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Payload`\> + +The atom or action to mock + +#### cb + +(...`params`) => `Payload` + +The callback function to use as the mock implementation. It receives + the parameters passed to the mocked atom/action and should return + the desired payload. + +### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +A function that, when called, removes the mock and restores the original behavior. + + + + +## Function: mockRandom() + +> **mockRandom**(`fn`): () => `void` + +Defined in: [packages/core/src/utils.ts:505](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L505) + +Replaces the default random number generator with a custom implementation. +Useful for testing to provide deterministic "random" values. + +### Parameters + +#### fn + +(`min`, `max`) => `number` + +The custom random function to use + +### Returns + +A restore function that reverts to the original random implementation when called + +> (): `void` + +#### Returns + +`void` + +### Example + +```ts +// Set up deterministic random values for testing +const restore = mockRandom(() => 42); +console.log(random()); // Always returns 42 +restore(); // Back to normal random behavior +``` + + + + +## Function: named() + +> **named**(`name`): `string` + +Defined in: [packages/core/src/core/atom.ts:554](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L554) + +### Parameters + +#### name + +`string` | `TemplateStringsArray` + +### Returns + +`string` + + + + +## Function: nonNullable() + +> **nonNullable**\<`T`\>(`value`, `message?`): `NonNullable`\<`T`\> + +Defined in: [packages/core/src/utils.ts:527](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L527) + +Asserts that a value is not null or undefined. +Throws a TypeError if the value is null or undefined. +Also serves as a type guard to narrow the type to non-nullable. + +### Type Parameters + +#### T + +`T` + +The type of value to check + +### Parameters + +#### value + +`T` + +The value to check + +#### message? + +`string` + +Optional custom error message + +### Returns + +`NonNullable`\<`T`\> + +The input value if it's not null or undefined + +### Throws + +If the value is null or undefined + +### Example + +```ts +const name = nonNullable(user.name); // TypeScript knows name is not null or undefined +``` + + + + +## Function: notify() + +> **notify**(): `void` + +Defined in: [packages/core/src/core/queues.ts:64](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/queues.ts#L64) + +Processes all scheduled tasks in the current context's queues. + +This function is called automatically after tasks have been scheduled via `enqueue`. +It processes tasks in the following priority order: +1. hook tasks +2. compute tasks +3. cleanup tasks +4. effect tasks + +The function resets priority after each task execution to ensure higher priority +tasks (which may have been added during execution) are processed first. + +### Returns + +`void` + + + + +## Function: omit() + +> **omit**\<`T`, `K`\>(`target`, `keys`): [`Plain`](#type-aliasesplainmd)\<`Omit`\<`T`, `K`\>\> + +Defined in: [packages/core/src/utils.ts:453](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L453) + +Creates a new object excluding the specified keys from the original object. + +### Type Parameters + +#### T + +`T` + +The source object type + +#### K + +`K` *extends* `string` \| `number` \| `symbol` + +The keys to omit from the object + +### Parameters + +#### target + +`T` + +The source object + +#### keys + +`K`[] + +Array of keys to exclude from the result + +### Returns + +[`Plain`](#type-aliasesplainmd)\<`Omit`\<`T`, `K`\>\> + +A new object containing all keys except the specified ones + +### Example + +```ts +const user = { id: 1, name: 'Alice', password: 'secret' }; +const safeUser = omit(user, ['password']); +// Result: { id: 1, name: 'Alice' } +``` + + + + +## Function: parseAtoms() + +> **parseAtoms**\<`Value`\>(`value`): [`ParseAtoms`](#type-aliasesparseatomsmd)\<`Value`\> + +Defined in: [packages/core/src/methods/parseAtoms.ts:71](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/parseAtoms.ts#L71) + +Recursively unwraps atoms in a value to get their current states + +This function deeply traverses a value, including nested objects, arrays, maps, and sets, +replacing atoms with their current state values. It's useful for serialization, debugging, +or creating snapshots of state that don't contain reactive references. + +### Type Parameters + +#### Value + +`Value` + +The type of value to parse + +### Parameters + +#### value + +`Value` + +The value containing atoms to unwrap + +### Returns + +[`ParseAtoms`](#type-aliasesparseatomsmd)\<`Value`\> + +A new value with all atoms replaced by their current states + +### Example + +```ts +const user = { + id: 42, + name: atom('John', 'userName'), + stats: { + score: atom(100, 'userScore'), + badges: atom(['gold', 'silver'], 'userBadges') + } +}; + +// Results in: { id: 42, name: 'John', stats: { score: 100, badges: ['gold', 'silver'] }} +const plainUser = parseAtoms(user); +``` + + + + +## Function: pick() + +> **pick**\<`T`, `K`\>(`target`, `keys`): [`Plain`](#type-aliasesplainmd)\<`Pick`\<`T`, `K`\>\> + +Defined in: [packages/core/src/utils.ts:430](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L430) + +Creates a new object with only the specified keys from the original object. + +### Type Parameters + +#### T + +`T` + +The source object type + +#### K + +`K` *extends* `string` \| `number` \| `symbol` + +The keys to pick from the object + +### Parameters + +#### target + +`T` + +The source object + +#### keys + +`K`[] + +Array of keys to include in the result + +### Returns + +[`Plain`](#type-aliasesplainmd)\<`Pick`\<`T`, `K`\>\> + +A new object containing only the specified keys and their values + +### Example + +```ts +const user = { id: 1, name: 'Alice', email: 'alice@example.com' }; +const userInfo = pick(user, ['name', 'email']); +// Result: { name: 'Alice', email: 'alice@example.com' } +``` + + + + +## Function: \_read() + +> **\_read**\<`State`, `Params`, `Payload`\>(`target`): `undefined` \| [`Frame`](#interfacesframemd)\<`State`, `Params`, `Payload`\> + +Defined in: [packages/core/src/core/atom.ts:1020](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L1020) + +Reads the current frame for an atom from the context store. + +This internal utility function retrieves the frame associated with an atom +from the current context. It's used to access an atom's state and dependencies +without triggering reactivity or creating new dependencies. + +### Type Parameters + +#### State + +`State` = `any` + +The state type of the atom + +#### Params + +`Params` *extends* `any`[] = \[\] + +The parameter types the atom accepts + +#### Payload + +`Payload` = `State` + +The return type when the atom is called + +### Parameters + +#### target + +[`AtomLike`](#interfacesatomlikemd)\<`State`, `Params`, `Payload`\> + +The atom to read the frame for + +### Returns + +`undefined` \| [`Frame`](#interfacesframemd)\<`State`, `Params`, `Payload`\> + +The frame for the atom if it exists in the current context, or undefined otherwise + + + + +## Function: reatomAbstractRender() + +> **reatomAbstractRender**\<`Props`, `Result`\>(`options`): [`AbstractRender`](#interfacesabstractrendermd)\<`Props`, `Result`\> + +Defined in: [packages/core/src/reatomAbstractRender.ts:66](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/reatomAbstractRender.ts#L66) + +Creates a low-level renderer that connects Reatom with other reactive systems. +This function decorates computed rendering to prevent extra or outdated rerenders, +allowing a user render function to run only in the context of the adapted reactive system. + +The renderer maintains proper reactivity by coordinating state updates between +Reatom's atom/computed system and the target rendering system. + +### Type Parameters + +#### Props + +`Props` + +The type of props/parameters that the renderer accepts + +#### Result + +`Result` + +The type of result produced by the render operation + +### Parameters + +#### options + +Configuration options for the abstract renderer + +##### frame + +[`Frame`](#interfacesframemd) + +The Reatom frame/context in which the rendering occurs + +##### mount? + +() => `void` + +Optional function called when mounting the renderer + +##### name + +`string` + +Name identifier for debugging purposes + +##### render + +(`props`) => `Result` + +Function that renders content with the given props + +##### rerender + +(`param`) => `any` + +Function called when a rerender is needed + +### Returns + +[`AbstractRender`](#interfacesabstractrendermd)\<`Props`, `Result`\> + +An object with render and mount methods + +### Example + +```ts +// Creating a React renderer +const reactRenderer = reatomAbstractRender({ + frame: ctx, + render: (props) => React.createElement(Component, props), + rerender: ({ result }) => setElement(result), + name: 'ReactRenderer' +}); + +// Usage +const unmount = reactRenderer.mount(); +reactRenderer.render({ prop1: 'value1' }); + +// Later cleanup +unmount(); +``` + + + + +## Function: reatomArray() + +> **reatomArray**\<`T`\>(`initState`, `name`): [`ArrayAtom`](#interfacesarrayatommd)\<`T`\> + +Defined in: [packages/core/src/primitives/reatomArray.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L10) + +### Type Parameters + +#### T + +`T` + +### Parameters + +#### initState + +`T`[] = `...` + +#### name + +`string` = `...` + +### Returns + +[`ArrayAtom`](#interfacesarrayatommd)\<`T`\> + + + + +## Function: reatomBoolean() + +> **reatomBoolean**(`init`, `name`): [`BooleanAtom`](#interfacesbooleanatommd) + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L10) + +### Parameters + +#### init + +`boolean` = `false` + +#### name + +`string` = `...` + +### Returns + +[`BooleanAtom`](#interfacesbooleanatommd) + + + + +## Function: reatomEnum() + +> **reatomEnum**\<`T`, `Format`\>(`variants`, `options`): [`EnumAtom`](#type-aliasesenumatommd)\<`T`, `Format`\> + +Defined in: [packages/core/src/primitives/reatomEnum.ts:32](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomEnum.ts#L32) + +### Type Parameters + +#### T + +`T` *extends* `string` + +#### Format + +`Format` *extends* `"camelCase"` \| `"snake_case"` = `"camelCase"` + +### Parameters + +#### variants + +readonly `T`[] + +#### options + +`string` | [`EnumAtomOptions`](#type-aliasesenumatomoptionsmd)\<`T`, `Format`\> + +### Returns + +[`EnumAtom`](#type-aliasesenumatommd)\<`T`, `Format`\> + + + + +## Function: reatomField() + +### Call Signature + +> **reatomField**\<`State`, `Value`\>(`_initState`, `options`): [`FieldAtom`](#interfacesfieldatommd)\<`State`, `Value`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:226](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L226) + +#### Type Parameters + +##### State + +`State` + +##### Value + +`Value` = `State` + +#### Parameters + +##### \_initState + +`State` + +##### options + +`string` | [`FieldOptions`](#interfacesfieldoptionsmd)\<`State`, `Value`\> + +#### Returns + +[`FieldAtom`](#interfacesfieldatommd)\<`State`, `Value`\> + +### Call Signature + +> **reatomField**\<`State`, `A`, `Value`\>(`_initState`, `options`, `stateAtom`): `A` & [`FieldAtom`](#interfacesfieldatommd)\<`State`, `Value`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:231](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L231) + +#### Type Parameters + +##### State + +`State` + +##### A + +`A` *extends* [`Atom`](#interfacesatommd)\<`State`\> + +##### Value + +`Value` = `State` + +#### Parameters + +##### \_initState + +`State` + +##### options + +`string` | [`FieldOptions`](#interfacesfieldoptionsmd)\<`State`, `Value`\> + +##### stateAtom + +`A` + +#### Returns + +`A` & [`FieldAtom`](#interfacesfieldatommd)\<`State`, `Value`\> + + + + +## Function: reatomFieldSet() + +> **reatomFieldSet**\<`T`\>(`fields`, `name`): [`FieldSet`](#interfacesfieldsetmd)\<`T`\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:60](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L60) + +### Type Parameters + +#### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) + +### Parameters + +#### fields + +[`FormFields`](#type-aliasesformfieldsmd)\<`T`\> + +#### name + +`string` = `...` + +### Returns + +[`FieldSet`](#interfacesfieldsetmd)\<`T`\> + + + + +## Function: reatomForm() + +### Call Signature + +> **reatomForm**\<`T`, `SchemaState`\>(`initState`, `optionsWithSchema`): [`Form`](#interfacesformmd)\<`T`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:353](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L353) + +#### Type Parameters + +##### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) + +##### SchemaState + +`SchemaState` + +#### Parameters + +##### initState + +`T` | (`name`) => `T` + +##### optionsWithSchema + +[`FormOptionsWithSchema`](#interfacesformoptionswithschemamd)\<`SchemaState`\> + +#### Returns + +[`Form`](#interfacesformmd)\<`T`\> + +### Call Signature + +> **reatomForm**\<`T`\>(`initState`, `options?`): [`Form`](#interfacesformmd)\<`T`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:358](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L358) + +#### Type Parameters + +##### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) + +#### Parameters + +##### initState + +`T` | (`name`) => `T` + +##### options? + +[`FormOptionsWithoutSchema`](#interfacesformoptionswithoutschemamd)\<`T`\> + +#### Returns + +[`Form`](#interfacesformmd)\<`T`\> + +### Call Signature + +> **reatomForm**\<`T`\>(`initState`, `name?`): [`Form`](#interfacesformmd)\<`T`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:363](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L363) + +#### Type Parameters + +##### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) + +#### Parameters + +##### initState + +`T` | (`name`) => `T` + +##### name? + +`string` + +#### Returns + +[`Form`](#interfacesformmd)\<`T`\> + + + + +## Function: reatomLinkedList() + +### Call Signature + +> **reatomLinkedList**\<`Node`, `Params`, `Key`\>(`initState`, `name?`): [`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:250](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L250) + +#### Type Parameters + +##### Node + +`Node` *extends* [`Rec`](#type-aliasesrecmd) + +##### Params + +`Params` *extends* `any`[] = \[`Node`\] + +##### Key + +`Key` *extends* `string` \| `number` \| `symbol` = `never` + +#### Parameters + +##### initState + +`Node`[] + +##### name? + +`string` + +#### Returns + +[`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +### Call Signature + +> **reatomLinkedList**\<`Params`, `Node`, `Key`\>(`initState`, `name?`): [`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:256](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L256) + +#### Type Parameters + +##### Params + +`Params` *extends* `any`[] + +##### Node + +`Node` *extends* [`Rec`](#type-aliasesrecmd) + +##### Key + +`Key` *extends* `string` \| `number` \| `symbol` = `never` + +#### Parameters + +##### initState + +(...`params`) => `Node` + +##### name? + +`string` + +#### Returns + +[`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +### Call Signature + +> **reatomLinkedList**\<`Params`, `Node`, `Key`\>(`initState`, `name?`): [`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:265](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L265) + +#### Type Parameters + +##### Params + +`Params` *extends* `any`[] + +##### Node + +`Node` *extends* [`Rec`](#type-aliasesrecmd) + +##### Key + +`Key` *extends* `string` \| `number` \| `symbol` = `never` + +#### Parameters + +##### initState + +###### create + +(...`params`) => `Node` + +###### initState? + +`Node`[] + +###### key? + +`Key` + +##### name? + +`string` + +#### Returns + +[`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +### Call Signature + +> **reatomLinkedList**\<`Params`, `Node`, `Key`\>(`initState`, `name?`): [`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:278](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L278) + +#### Type Parameters + +##### Params + +`Params` *extends* `any`[] + +##### Node + +`Node` *extends* [`Rec`](#type-aliasesrecmd) + +##### Key + +`Key` *extends* `string` \| `number` \| `symbol` = `never` + +#### Parameters + +##### initState + +###### create? + +(...`params`) => `Node` + +###### initState + +`Node`[] + +###### key? + +`Key` + +##### name? + +`string` + +#### Returns + +[`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +### Call Signature + +> **reatomLinkedList**\<`Params`, `Node`, `Key`\>(`initSnapshot`, `name?`): [`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:291](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L291) + +#### Type Parameters + +##### Params + +`Params` *extends* `any`[] + +##### Node + +`Node` *extends* [`Rec`](#type-aliasesrecmd) + +##### Key + +`Key` *extends* `string` \| `number` \| `symbol` = `never` + +#### Parameters + +##### initSnapshot + +###### create + +(...`params`) => `Node` + +###### initSnapshot? + +`Params`[] + +###### key? + +`Key` + +##### name? + +`string` + +#### Returns + +[`LinkedListAtom`](#interfaceslinkedlistatommd)\<`Params`, `Node`, `Key`\> + + + + +## Function: reatomMap() + +> **reatomMap**\<`Key`, `Value`\>(`initState`, `name`): [`MapAtom`](#interfacesmapatommd)\<`Key`, `Value`\> + +Defined in: [packages/core/src/primitives/reatomMap.ts:17](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L17) + +### Type Parameters + +#### Key + +`Key` + +#### Value + +`Value` + +### Parameters + +#### initState + +`undefined` | `null` | `Map`\<`Key`, `Value`\> | `Iterable`\ + +#### name + +`string` = `...` + +### Returns + +[`MapAtom`](#interfacesmapatommd)\<`Key`, `Value`\> + + + + +## Function: reatomNumber() + +> **reatomNumber**(`initState`, `name`): [`NumberAtom`](#interfacesnumberatommd) + +Defined in: [packages/core/src/primitives/reatomNumber.ts:11](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L11) + +### Parameters + +#### initState + +`number` = `0` + +#### name + +`string` = `...` + +### Returns + +[`NumberAtom`](#interfacesnumberatommd) + + + + +## Function: reatomRecord() + +> **reatomRecord**\<`T`\>(`initState`, `name`): [`RecordAtom`](#interfacesrecordatommd)\<`T`\> + +Defined in: [packages/core/src/primitives/reatomRecord.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomRecord.ts#L10) + +### Type Parameters + +#### T + +`T` *extends* [`Rec`](#type-aliasesrecmd) + +### Parameters + +#### initState + +`Exclude`\<`T`, [`Fn`](#interfacesfnmd)\> + +#### name + +`string` = `...` + +### Returns + +[`RecordAtom`](#interfacesrecordatommd)\<`T`\> + + + + +## Function: reatomSet() + +> **reatomSet**\<`T`\>(`initState`, `name`): [`SetAtom`](#interfacessetatommd)\<`T`\> + +Defined in: [packages/core/src/primitives/reatomSet.ts:21](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L21) + +### Type Parameters + +#### T + +`T` + +### Parameters + +#### initState + +`undefined` | `null` | `Set`\<`T`\> | `Iterable`\<`T`, `any`, `any`\> + +#### name + +`string` = `...` + +### Returns + +[`SetAtom`](#interfacessetatommd)\<`T`\> + + + + +## Function: reatomTransaction() + +> **reatomTransaction**(): `TransactionVariable` + +Defined in: [packages/core/src/methods/transaction.ts:41](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/transaction.ts#L41) + +Creates a transaction variable with rollback capabilities. +This variable stores a list of rollback functions that can be executed +to revert state changes made within a transaction. + +### Returns + +`TransactionVariable` + +A transaction variable with `withRollback` middleware and a `rollback` action. + + + + +## Function: run() + +> **run**\<`I`, `O`\>(`this`, `fn`, ...`params`): `O` + +Defined in: [packages/core/src/core/atom.ts:353](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L353) + +### Type Parameters + +#### I + +`I` *extends* `any`[] + +#### O + +`O` + +### Parameters + +#### this + +[`Frame`](#interfacesframemd) + +#### fn + +(...`params`) => `O` + +#### params + +...`I` + +### Returns + +`O` + + + + +## Function: settled() + +> **settled**\<`Result`, `Fallback`\>(`promise`, `fallback?`): `Result` \| `Fallback` + +Defined in: [packages/core/src/mixins/withSuspense.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withSuspense.ts#L10) + +### Type Parameters + +#### Result + +`Result` + +#### Fallback + +`Fallback` = `undefined` + +### Parameters + +#### promise + +`Promise`\<`Result`\> + +#### fallback? + +`Fallback` + +### Returns + +`Result` \| `Fallback` + + + + +## Function: sleep() + +> **sleep**(`ms`): `Promise`\<`unknown`\> + +Defined in: [packages/core/src/utils.ts:220](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L220) + +Creates a promise that resolves after the specified number of milliseconds. +Useful for creating delays in async functions. + +### Parameters + +#### ms + +`number` = `0` + +The number of milliseconds to sleep (defaults to 0) + +### Returns + +`Promise`\<`unknown`\> + +A promise that resolves after the specified delay + + + + +## Function: suspense() + +> **suspense**\<`T`\>(`target`): `Awaited`\<`T`\> + +Defined in: [packages/core/src/mixins/withSuspense.ts:91](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withSuspense.ts#L91) + +### Type Parameters + +#### T + +`T` + +### Parameters + +#### target + +[`AtomLike`](#interfacesatomlikemd)\<`T`\> + +### Returns + +`Awaited`\<`T`\> + + + + +## Function: take() + +> **take**\<`T`\>(`target`, `name?`): `Promise`\<`Awaited`\<`T`\>\> + +Defined in: [packages/core/src/methods/take.ts:40](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/take.ts#L40) + +Awaits the next update of an atom or call of an action. + +This function returns a Promise that resolves when the specified atom's state +changes or when the specified action is called. This is valuable for orchestrating +workflows that depend on future state changes or action calls. + +Note: Must be used with `wrap()` when used in an async context to preserve reactive context. + +### Type Parameters + +#### T + +`T` + +The type of value expected when the promise resolves + +### Parameters + +#### target + +[`AtomLike`](#interfacesatomlikemd)\<`any`, `any`, `T`\> + +The atom or action to wait for + +#### name? + +`string` + +Optional name for debugging purposes + +### Returns + +`Promise`\<`Awaited`\<`T`\>\> + +A promise that resolves with the next value of the atom or action result + +### Example + +```ts +// Wait for form validation before proceeding +const submitWhenValid = action(async () => { + while (true) { + const currentData = formData() + const error = validate(currentData) + if (!error) break // Exit loop if valid + + formData({ ...currentData, error }) // Show error + + // Wait for the next change in formData - need wrap() to preserve context + await wrap(take(formData)) + } + // Now formData is valid, proceed with submission... +}) +``` + + + + +## Function: throwAbort() + +> **throwAbort**(`message`, `controller?`): `never` + +Defined in: [packages/core/src/utils.ts:691](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L691) + +Creates and throws an AbortError with the provided message. +Optionally aborts the provided controller with the same error. + +### Parameters + +#### message + +`string` + +The error message + +#### controller? + +`AbortController` + +Optional AbortController to abort + +### Returns + +`never` + +### Throws + +Always throws the created AbortError + + + + +## Function: throwIfAborted() + +> **throwIfAborted**(`controller?`): `void` + +Defined in: [packages/core/src/utils.ts:668](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L668) + +Checks if an AbortController is aborted and throws an AbortError if it is. +Useful for quick abort checks at the beginning of async operations. + +### Parameters + +#### controller? + +The AbortController to check (can be undefined, null or void) + +`null` | `void` | `AbortController` + +### Returns + +`void` + +### Throws + +If the controller's signal is aborted + + + + +## Function: toAbortError() + +> **toAbortError**(`reason`): [`AbortError`](#interfacesaborterrormd) + +Defined in: [packages/core/src/utils.ts:639](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L639) + +Converts any value to an AbortError. +If the value is already an AbortError, it will be returned as is. +Otherwise, creates a new AbortError with appropriate information. + +Handles different environments by using DOMException when available +or falling back to regular Error with name set to 'AbortError'. + +### Parameters + +#### reason + +`any` + +The value to convert to an AbortError + +### Returns + +[`AbortError`](#interfacesaborterrormd) + +An AbortError instance + + + + +## Function: toStringKey() + +> **toStringKey**(`thing`, `immutable`): `string` + +Defined in: [packages/core/src/utils.ts:563](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L563) + +Converts any JavaScript value to a stable string representation. +Handles complex data structures and edge cases that JSON.stringify cannot manage. + +Provides special handling for: +- Circular references +- Maps and Sets +- Symbols +- Functions +- Custom class instances +- Regular objects (with sorted keys for stability) + +### Parameters + +#### thing + +`any` + +The value to convert to a string + +#### immutable + +`boolean` = `true` + +Whether to memoize results for complex objects (defaults to true) + +### Returns + +`string` + +A string representation of the value + +### Example + +```ts +// Handles circular references +const obj = { name: 'test' }; +obj.self = obj; +const key = toStringKey(obj); // No infinite recursion! + +// Stable representation of objects (key order doesn't matter) +toStringKey({a: 1, b: 2}) === toStringKey({b: 2, a: 1}) // true +``` + + + + +## Function: top() + +> **top**(): [`Frame`](#interfacesframemd) + +Defined in: [packages/core/src/core/atom.ts:1049](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L1049) + +Gets the current top frame in the Reatom context stack. + +Returns the currently active frame in the execution stack, which contains +the current atom being processed and its state. + +### Returns + +[`Frame`](#interfacesframemd) + +The current top frame from the context stack + +### Throws + +If the context stack is empty (missing async stack) + + + + +## Function: withAbort() + +> **withAbort**(`strategy`): [`AssignerExt`](#interfacesassignerextmd)\<[`AbortExt`](#interfacesabortextmd)\> + +Defined in: [packages/core/src/mixins/withAbort.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withAbort.ts#L10) + +### Parameters + +#### strategy + +`"last-in-win"` | `"first-in-win"` + +### Returns + +[`AssignerExt`](#interfacesassignerextmd)\<[`AbortExt`](#interfacesabortextmd)\> + + + + +## Function: withAsyncData() + +Implementation of the withAsyncData extension. + +### Param + +Configuration options for the async data handling + +### Example + +```ts +// Basic usage with a computed for data fetching: +const userId = atom('1', 'userId') + +// Create a computed that fetches data when userId changes +const userData = computed(async () => { + const id = userId() + const response = await wrap(fetch(`/api/users/${id}`)) + if (!response.ok) throw new Error('Failed to fetch user') + return await wrap(response.json()) +}, 'userData').extend(withAsyncData()) + +// Access the fetched data and loading states: +userData.data() // → the fetched user data +userData.error() // → error if fetch failed +userData.ready() // → false while loading, true when complete +``` + +### Call Signature + +> **withAsyncData**\<`Err`, `EmptyErr`\>(`options?`): \<`T`\>(`target`) => `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `undefined` \| `Payload`, `Err` \| `EmptyErr`\> : `never` + +Defined in: [packages/core/src/async/withAsyncData.ts:73](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L73) + +Extension that adds async data management to atoms or actions that return promises. + +Creates a properly typed data atom that stores the results of successful async operations. +Includes all features of [withAsync](#variableswithasyncmd) and [withAbort](#functionswithabortmd) for complete async handling. + +#### Type Parameters + +##### Err + +`Err` = `Error` + +The type of errors after parsing + +##### EmptyErr + +`EmptyErr` = `undefined` + +The type of the empty error state + +#### Parameters + +##### options? + +[`AsyncOptions`](#type-aliasesasyncoptionsmd)\<`Err`, `EmptyErr`\> + +Configuration options for async data handling + +#### Returns + +An extension function that can be applied to atoms or actions + +> \<`T`\>(`target`): `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `undefined` \| `Payload`, `Err` \| `EmptyErr`\> : `never` + +##### Type Parameters + +###### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +##### Parameters + +###### target + +`T` + +##### Returns + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `undefined` \| `Payload`, `Err` \| `EmptyErr`\> : `never` + +#### Param + +Configuration options for the async data handling + +#### Example + +```ts +// Basic usage with a computed for data fetching: +const userId = atom('1', 'userId') + +// Create a computed that fetches data when userId changes +const userData = computed(async () => { + const id = userId() + const response = await wrap(fetch(`/api/users/${id}`)) + if (!response.ok) throw new Error('Failed to fetch user') + return await wrap(response.json()) +}, 'userData').extend(withAsyncData()) + +// Access the fetched data and loading states: +userData.data() // → the fetched user data +userData.error() // → error if fetch failed +userData.ready() // → false while loading, true when complete +``` + +### Call Signature + +> **withAsyncData**\<`T`, `Err`, `EmptyErr`\>(`options`): (`target`) => `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `Payload`, `Err` \| `EmptyErr`\> : `never` + +Defined in: [packages/core/src/async/withAsyncData.ts:93](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L93) + +Extension that adds async data management to atoms or actions that return promises. + +This overload uses the payload type as the state type with a specified initial value. +Useful when you know the shape of the data that will be fetched. + +#### Type Parameters + +##### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +The atom or action type + +##### Err + +`Err` = `Error` + +The type of errors after parsing + +##### EmptyErr + +`EmptyErr` = `undefined` + +The type of the empty error state + +#### Parameters + +##### options + +[`AsyncOptions`](#type-aliasesasyncoptionsmd)\<`Err`, `EmptyErr`\> & `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? `object` : `never` + +Configuration options including initial state and optional payload mapper + +#### Returns + +An extension function that can be applied to atoms or actions + +> (`target`): `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `Payload`, `Err` \| `EmptyErr`\> : `never` + +##### Parameters + +###### target + +`T` + +##### Returns + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `Payload`, `Err` \| `EmptyErr`\> : `never` + +#### Param + +Configuration options for the async data handling + +#### Example + +```ts +// Basic usage with a computed for data fetching: +const userId = atom('1', 'userId') + +// Create a computed that fetches data when userId changes +const userData = computed(async () => { + const id = userId() + const response = await wrap(fetch(`/api/users/${id}`)) + if (!response.ok) throw new Error('Failed to fetch user') + return await wrap(response.json()) +}, 'userData').extend(withAsyncData()) + +// Access the fetched data and loading states: +userData.data() // → the fetched user data +userData.error() // → error if fetch failed +userData.ready() // → false while loading, true when complete +``` + +### Call Signature + +> **withAsyncData**\<`State`, `T`, `Err`, `EmptyErr`\>(`options`): (`target`) => `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `State` \| `Payload`, `Err` \| `EmptyErr`\> : `never` + +Defined in: [packages/core/src/async/withAsyncData.ts:128](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L128) + +Extension that adds async data management to atoms or actions that return promises. + +This overload allows specifying a completely custom state type with an initial value. +The resolved payload will be merged with the state without custom mapping. + +#### Type Parameters + +##### State + +`State` + +The custom state type + +##### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +The atom or action type + +##### Err + +`Err` = `Error` + +The type of errors after parsing + +##### EmptyErr + +`EmptyErr` = `undefined` + +The type of the empty error state + +#### Parameters + +##### options + +[`AsyncOptions`](#type-aliasesasyncoptionsmd)\<`Err`, `EmptyErr`\> & `object` + +Configuration options with custom initial state + +#### Returns + +An extension function that can be applied to atoms or actions + +> (`target`): `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `State` \| `Payload`, `Err` \| `EmptyErr`\> : `never` + +##### Parameters + +###### target + +`T` + +##### Returns + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `State` \| `Payload`, `Err` \| `EmptyErr`\> : `never` + +#### Param + +Configuration options for the async data handling + +#### Example + +```ts +// Basic usage with a computed for data fetching: +const userId = atom('1', 'userId') + +// Create a computed that fetches data when userId changes +const userData = computed(async () => { + const id = userId() + const response = await wrap(fetch(`/api/users/${id}`)) + if (!response.ok) throw new Error('Failed to fetch user') + return await wrap(response.json()) +}, 'userData').extend(withAsyncData()) + +// Access the fetched data and loading states: +userData.data() // → the fetched user data +userData.error() // → error if fetch failed +userData.ready() // → false while loading, true when complete +``` + +### Call Signature + +> **withAsyncData**\<`State`, `T`, `Err`, `EmptyErr`\>(`options`): (`target`) => `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `State`, `Err` \| `EmptyErr`\> : `never` + +Defined in: [packages/core/src/async/withAsyncData.ts:157](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L157) + +Extension that adds async data management to atoms or actions that return promises. + +This overload provides full control with a custom state type and payload mapping function. +Allows complete transformation of the payload into the desired state format. + +#### Type Parameters + +##### State + +`State` + +The custom state type + +##### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +The atom or action type + +##### Err + +`Err` = `Error` + +The type of errors after parsing + +##### EmptyErr + +`EmptyErr` = `undefined` + +The type of the empty error state + +#### Parameters + +##### options + +[`AsyncOptions`](#type-aliasesasyncoptionsmd)\<`Err`, `EmptyErr`\> & `object` + +Configuration options with custom initial state and payload mapper + +#### Returns + +An extension function that can be applied to atoms or actions + +> (`target`): `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `State`, `Err` \| `EmptyErr`\> : `never` + +##### Parameters + +###### target + +`T` + +##### Returns + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? [`AsyncDataExt`](#interfacesasyncdataextmd)\<`Params`, `Payload`, `State`, `Err` \| `EmptyErr`\> : `never` + +#### Param + +Configuration options for the async data handling + +#### Example + +```ts +// Basic usage with a computed for data fetching: +const userId = atom('1', 'userId') + +// Create a computed that fetches data when userId changes +const userData = computed(async () => { + const id = userId() + const response = await wrap(fetch(`/api/users/${id}`)) + if (!response.ok) throw new Error('Failed to fetch user') + return await wrap(response.json()) +}, 'userData').extend(withAsyncData()) + +// Access the fetched data and loading states: +userData.data() // → the fetched user data +userData.error() // → error if fetch failed +userData.ready() // → false while loading, true when complete +``` + + + + +## Function: withCallHook() + +> **withCallHook**\<`Target`\>(`cb`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withChangeHook.ts:53](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withChangeHook.ts#L53) + +### Type Parameters + +#### Target + +`Target` *extends* [`Action`](#interfacesactionmd)\<`any`[], `any`\> + +### Parameters + +#### cb + +(`payload`, `params`) => `void` + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + + + + +## Function: withChangeHook() + +> **withChangeHook**\<`Target`\>(`cb`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withChangeHook.ts:13](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withChangeHook.ts#L13) + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### cb + +(`state`, `prevState`) => `void` + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + + + + +## Function: withComputed() + +> **withComputed**\<`Target`\>(`computed`, `tail?`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withComputed.ts:20](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withComputed.ts#L20) + +A middleware extension that enhances an atom with computed capabilities. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +The target atom or action type to be extended with computed functionality. + +### Parameters + +#### computed + +(`state`) => [`AtomState`](#type-aliasesatomstatemd)\<`Target`\> + +A function that computes the new state based on the current state. + +#### tail? + +`boolean` = `true` + +Determines the order of the passed computed calling. ATTENTION: use `false` only for computed with fixed size of dependencies + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + +The extended atom or action with computed functionality. + + + + +## Function: withConnectHook() + +> **withConnectHook**\<`Target`\>(`cb`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withConnectHook.ts:21](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withConnectHook.ts#L21) + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### cb + +(`target`) => `void` + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + + + + +## Function: withDisconnectHook() + +> **withDisconnectHook**\<`Target`\>(`cb`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withConnectHook.ts:25](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withConnectHook.ts#L25) + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### cb + +(`target`) => `void` + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + + + + +## Function: withField() + +> **withField**\<`T`, `Value`\>(`options`): (`anAtom`) => `T` & [`FieldAtom`](#interfacesfieldatommd)\<[`AtomState`](#type-aliasesatomstatemd)\<`T`\>, `Value`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:463](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L463) + +### Type Parameters + +#### T + +`T` *extends* [`Atom`](#interfacesatommd)\<`any`\> + +#### Value + +`Value` = [`AtomState`](#type-aliasesatomstatemd)\<`T`\> + +### Parameters + +#### options + +`Omit`\<[`FieldOptions`](#interfacesfieldoptionsmd)\<[`AtomState`](#type-aliasesatomstatemd)\<`T`\>, `Value`\>, `"name"`\> = `{}` + +### Returns + +> (`anAtom`): `T` & [`FieldAtom`](#interfacesfieldatommd)\<[`AtomState`](#type-aliasesatomstatemd)\<`T`\>, `Value`\> + +#### Parameters + +##### anAtom + +`T` + +#### Returns + +`T` & [`FieldAtom`](#interfacesfieldatommd)\<[`AtomState`](#type-aliasesatomstatemd)\<`T`\>, `Value`\> + + + + +## Function: withInit() + +> **withInit**\<`Target`\>(`init`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withInit.ts:11](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withInit.ts#L11) + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### init + +[`AtomState`](#type-aliasesatomstatemd)\<`Target`\> | (`state`) => [`AtomState`](#type-aliasesatomstatemd)\<`Target`\> + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + + + + +## Function: withInitHook() + +> **withInitHook**\<`Target`\>(`hook`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withInit.ts:34](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withInit.ts#L34) + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### hook + +(`initState`) => `any` + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + + + + +## Function: withLifecycleHook() + +> **withLifecycleHook**\<`Target`\>(`cb`, `hookName`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withConnectHook.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withConnectHook.ts#L4) + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### cb + +(`target`) => `void` + +#### hookName + +`"onConnect"` | `"onDisconnect"` + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + + + + +## Function: withMemo() + +> **withMemo**\<`Target`\>(`isEqual`): [`Ext`](#interfacesextmd)\<`Target`\> + +Defined in: [packages/core/src/mixins/withMemo.ts:6](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withMemo.ts#L6) + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### isEqual + +(`prevState`, `nextState`) => `boolean` + +### Returns + +[`Ext`](#interfacesextmd)\<`Target`\> + + + + +## Function: withSearchParamsPersist() + +### Call Signature + +> **withSearchParamsPersist**\<`T`\>(`key`, `parse?`): \<`Target`\>(`target`) => `Target` + +Defined in: [packages/core/src/web/url.ts:492](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L492) + +Create an atom that synchronizes with a URL search parameter. + +#### Type Parameters + +##### T + +`T` = `string` + +#### Parameters + +##### key + +`string` + +The parameter name to synchronize with + +##### parse? + +(`value?`) => `T` + +Function to parse string value to desired type + +#### Returns + +> \<`Target`\>(`target`): `Target` + +##### Type Parameters + +###### Target + +`Target` *extends* [`Atom`](#interfacesatommd)\<`T`\> + +##### Parameters + +###### target + +`Target` + +##### Returns + +`Target` + +### Call Signature + +> **withSearchParamsPersist**\<`T`\>(`key`, `options`): \<`Target`\>(`target`) => `Target` + +Defined in: [packages/core/src/web/url.ts:508](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L508) + +Create an atom that synchronizes with a URL search parameter. + +#### Type Parameters + +##### T + +`T` = `string` + +#### Parameters + +##### key + +`string` + +Parameter name + +##### options + +Configuration options for the lens + +###### parse? + +(`value?`) => `T` + +Optional function to parse the parameter string value into the desired type + +###### path? + +`string` + +Optional path to limit the scope of synchronization to specific URL paths + +###### replace? + +`boolean` + +Optional boolean to specify if history entries should be replaced (default: false) + +###### serialize? + +(`value`) => `undefined` \| `string` + +Optional function to serialize the value back into a string + +#### Returns + +> \<`Target`\>(`target`): `Target` + +##### Type Parameters + +###### Target + +`Target` *extends* [`Atom`](#interfacesatommd)\<`T`\> + +##### Parameters + +###### target + +`Target` + +##### Returns + +`Target` + + + + +## Function: withSuspense() + +> **withSuspense**\<`T`\>(`__namedParameters`): [`Ext`](#interfacesextmd)\<`T`, [`SuspenseExt`](#type-aliasessuspenseextmd)\<`T`\>\> + +Defined in: [packages/core/src/mixins/withSuspense.ts:49](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withSuspense.ts#L49) + +### Type Parameters + +#### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> & `Partial`\<[`SuspenseExt`](#type-aliasessuspenseextmd)\<`T`\>\> + +### Parameters + +#### \_\_namedParameters + +##### preserve? + +`boolean` = `false` + +### Returns + +[`Ext`](#interfacesextmd)\<`T`, [`SuspenseExt`](#type-aliasessuspenseextmd)\<`T`\>\> + + + + +# @reatom/core + +## Classes + +- [ReatomError](#classesreatomerrormd) + +## Interfaces + +- [AbortAtom](#interfacesabortatommd) +- [AbortError](#interfacesaborterrormd) +- [AbortExt](#interfacesabortextmd) +- [AbortMethods](#interfacesabortmethodsmd) +- [AbortVar](#interfacesabortvarmd) +- [AbstractRender](#interfacesabstractrendermd) +- [Action](#interfacesactionmd) +- [ActionState](#interfacesactionstatemd) +- [ArrayAtom](#interfacesarrayatommd) +- [AssignerExt](#interfacesassignerextmd) +- [AsyncDataExt](#interfacesasyncdataextmd) +- [AsyncDataOptions](#interfacesasyncdataoptionsmd) +- [AsyncExt](#interfacesasyncextmd) +- [Atom](#interfacesatommd) +- [AtomLike](#interfacesatomlikemd) +- [AtomMeta](#interfacesatommetamd) +- [BaseFormOptions](#interfacesbaseformoptionsmd) +- [BooleanAtom](#interfacesbooleanatommd) +- [Computed](#interfacescomputedmd) +- [Context](#interfacescontextmd) +- [ContextAtom](#interfacescontextatommd) +- [ContextFrame](#interfacescontextframemd) +- [ContextMeta](#interfacescontextmetamd) +- [Effect](#interfaceseffectmd) +- [Ext](#interfacesextmd) +- [Extend](#interfacesextendmd) +- [FetchRequestInit](#interfacesfetchrequestinitmd) +- [FieldAtom](#interfacesfieldatommd) +- [FieldFocus](#interfacesfieldfocusmd) +- [FieldLikeAtom](#interfacesfieldlikeatommd) +- [FieldOptions](#interfacesfieldoptionsmd) +- [FieldSet](#interfacesfieldsetmd) +- [FieldValidation](#interfacesfieldvalidationmd) +- [Fn](#interfacesfnmd) +- [FocusAtom](#interfacesfocusatommd) +- [Form](#interfacesformmd) +- [FormFieldOptions](#interfacesformfieldoptionsmd) +- [FormOptionsWithoutSchema](#interfacesformoptionswithoutschemamd) +- [FormOptionsWithSchema](#interfacesformoptionswithschemamd) +- [Frame](#interfacesframemd) +- [GenericExt](#interfacesgenericextmd) +- [LazyAbortController](#interfaceslazyabortcontrollermd) +- [LinkedList](#interfaceslinkedlistmd) +- [LinkedListAtom](#interfaceslinkedlistatommd) +- [LinkedListDerivedAtom](#interfaceslinkedlistderivedatommd) +- [LinkedListDerivedState](#interfaceslinkedlistderivedstatemd) +- [LinkedListLikeAtom](#interfaceslinkedlistlikeatommd) +- [MapAtom](#interfacesmapatommd) +- [Newable](#interfacesnewablemd) +- [NumberAtom](#interfacesnumberatommd) +- [ParamsExt](#interfacesparamsextmd) +- [Queue](#interfacesqueuemd) +- [RecordAtom](#interfacesrecordatommd) +- [RouteAtom](#interfacesrouteatommd) +- [SearchParamsAtom](#interfacessearchparamsatommd) +- [SetAtom](#interfacessetatommd) +- [Store](#interfacesstoremd) +- [SubmitAction](#interfacessubmitactionmd) +- [Unsubscribe](#interfacesunsubscribemd) +- [UrlAtom](#interfacesurlatommd) +- [ValidationAtom](#interfacesvalidationatommd) +- [Variable](#interfacesvariablemd) + +## Type Aliases + +- [Actions](#type-aliasesactionsmd) +- [ActionsExt](#type-aliasesactionsextmd) +- [ArrayFieldItem](#type-aliasesarrayfielditemmd) +- [Assign](#type-aliasesassignmd) +- [AsyncOptions](#type-aliasesasyncoptionsmd) +- [AtomState](#type-aliasesatomstatemd) +- [Constructor](#type-aliasesconstructormd) +- [DeepPartial](#type-aliasesdeeppartialmd) +- [EnumAtom](#type-aliasesenumatommd) +- [EnumAtomOptions](#type-aliasesenumatomoptionsmd) +- [EnumFormat](#type-aliasesenumformatmd) +- [EventOfTarget](#type-aliaseseventoftargetmd) +- [Falsy](#type-aliasesfalsymd) +- [FieldValidateOption](#type-aliasesfieldvalidateoptionmd) +- [FormFieldArrayAtom](#type-aliasesformfieldarrayatommd) +- [FormFieldElement](#type-aliasesformfieldelementmd) +- [FormFields](#type-aliasesformfieldsmd) +- [FormInitState](#type-aliasesforminitstatemd) +- [FormPartialState](#type-aliasesformpartialstatemd) +- [FormState](#type-aliasesformstatemd) +- [FunctionSource](#type-aliasesfunctionsourcemd) +- [GenericAction](#type-aliasesgenericactionmd) +- [LLNode](#type-aliasesllnodemd) +- [Merge](#type-aliasesmergemd) +- [Middleware](#type-aliasesmiddlewaremd) +- [OmitValues](#type-aliasesomitvaluesmd) +- [OmitValuesKeys](#type-aliasesomitvalueskeysmd) +- [OverloadParameters](#type-aliasesoverloadparametersmd) +- [Overloads](#type-aliasesoverloadsmd) +- [ParseAtoms](#type-aliasesparseatomsmd) +- [PickValues](#type-aliasespickvaluesmd) +- [PickValuesKeys](#type-aliasespickvalueskeysmd) +- [Plain](#type-aliasesplainmd) +- [Rec](#type-aliasesrecmd) +- [Shallow](#type-aliasesshallowmd) +- [StringAtom](#type-aliasesstringatommd) +- [SuspenseExt](#type-aliasessuspenseextmd) +- [UndefinedToOptional](#type-aliasesundefinedtooptionalmd) +- [UrlSearchParamsInit](#type-aliasesurlsearchparamsinitmd) +- [Values](#type-aliasesvaluesmd) + +## Variables + +- [abortVar](#variablesabortvarmd) +- [action](#variablesactionmd) +- [assign](#variablesassignmd) +- [atom](#variablesatommd) +- [context](#variablescontextmd) +- [createAtom](#variablescreateatommd) +- [entries](#variablesentriesmd) +- [FetchRequest](#variablesfetchrequestmd) +- [fieldInitFocus](#variablesfieldinitfocusmd) +- [fieldInitValidation](#variablesfieldinitvalidationmd) +- [fieldInitValidationLess](#variablesfieldinitvalidationlessmd) +- [keys](#variableskeysmd) +- [LL\_NEXT](#variablesll_nextmd) +- [LL\_PREV](#variablesll_prevmd) +- [MAX\_SAFE\_TIMEOUT](#variablesmax_safe_timeoutmd) +- [merge](#variablesmergemd) +- [noop](#variablesnoopmd) +- [onEvent](#variablesoneventmd) +- [onLineAtom](#variablesonlineatommd) +- [peek](#variablespeekmd) +- [rAF](#variablesrafmd) +- [random](#variablesrandommd) +- [reatomString](#variablesreatomstringmd) +- [rollback](#variablesrollbackmd) +- [searchParamsAtom](#variablessearchparamsatommd) +- [setTimeout](#variablessettimeoutmd) +- [spawn](#variablesspawnmd) +- [STACK](#variablesstackmd) +- [transactionVar](#variablestransactionvarmd) +- [urlAtom](#variablesurlatommd) +- [variable](#variablesvariablemd) +- [withAsync](#variableswithasyncmd) +- [withMiddleware](#variableswithmiddlewaremd) +- [withParams](#variableswithparamsmd) +- [withRollback](#variableswithrollbackmd) +- [withTap](#variableswithtapmd) +- [wrap](#variableswrapmd) + +## Functions + +- [\_copy](#functionscopymd) +- [\_enqueue](#functionsenqueuemd) +- [\_isPubsChanged](#functionsispubschangedmd) +- [\_read](#functionsreadmd) +- [actions](#functionsactionsmd) +- [addCallHook](#functionsaddcallhookmd) +- [addChangeHook](#functionsaddchangehookmd) +- [assert](#functionsassertmd) +- [assertFn](#functionsassertfnmd) +- [bind](#functionsbindmd) +- [clearStack](#functionsclearstackmd) +- [computed](#functionscomputedmd) +- [computedParams](#functionscomputedparamsmd) +- [concatTree](#functionsconcattreemd) +- [connectLogger](#functionsconnectloggermd) +- [effect](#functionseffectmd) +- [experimental\_fieldArray](#functionsexperimental_fieldarraymd) +- [extend](#functionsextendmd) +- [getStackTrace](#functionsgetstacktracemd) +- [identity](#functionsidentitymd) +- [ifCalled](#functionsifcalledmd) +- [ifChanged](#functionsifchangedmd) +- [isAbort](#functionsisabortmd) +- [isAction](#functionsisactionmd) +- [isAtom](#functionsisatommd) +- [isBrowser](#functionsisbrowsermd) +- [isCausedBy](#functionsiscausedbymd) +- [isComputed](#functionsiscomputedmd) +- [isConnected](#functionsisconnectedmd) +- [isDeepEqual](#functionsisdeepequalmd) +- [isFieldAtom](#functionsisfieldatommd) +- [isLinkedListAtom](#functionsislinkedlistatommd) +- [isObject](#functionsisobjectmd) +- [isRec](#functionsisrecmd) +- [isShallowEqual](#functionsisshallowequalmd) +- [jsonClone](#functionsjsonclonemd) +- [mock](#functionsmockmd) +- [mockRandom](#functionsmockrandommd) +- [named](#functionsnamedmd) +- [nonNullable](#functionsnonnullablemd) +- [notify](#functionsnotifymd) +- [omit](#functionsomitmd) +- [parseAtoms](#functionsparseatomsmd) +- [pick](#functionspickmd) +- [reatomAbstractRender](#functionsreatomabstractrendermd) +- [reatomArray](#functionsreatomarraymd) +- [reatomBoolean](#functionsreatombooleanmd) +- [reatomEnum](#functionsreatomenummd) +- [reatomField](#functionsreatomfieldmd) +- [reatomFieldSet](#functionsreatomfieldsetmd) +- [reatomForm](#functionsreatomformmd) +- [reatomLinkedList](#functionsreatomlinkedlistmd) +- [reatomMap](#functionsreatommapmd) +- [reatomNumber](#functionsreatomnumbermd) +- [reatomRecord](#functionsreatomrecordmd) +- [reatomSet](#functionsreatomsetmd) +- [reatomTransaction](#functionsreatomtransactionmd) +- [run](#functionsrunmd) +- [settled](#functionssettledmd) +- [sleep](#functionssleepmd) +- [suspense](#functionssuspensemd) +- [take](#functionstakemd) +- [throwAbort](#functionsthrowabortmd) +- [throwIfAborted](#functionsthrowifabortedmd) +- [toAbortError](#functionstoaborterrormd) +- [top](#functionstopmd) +- [toStringKey](#functionstostringkeymd) +- [withAbort](#functionswithabortmd) +- [withAsyncData](#functionswithasyncdatamd) +- [withCallHook](#functionswithcallhookmd) +- [withChangeHook](#functionswithchangehookmd) +- [withComputed](#functionswithcomputedmd) +- [withConnectHook](#functionswithconnecthookmd) +- [withDisconnectHook](#functionswithdisconnecthookmd) +- [withField](#functionswithfieldmd) +- [withInit](#functionswithinitmd) +- [withInitHook](#functionswithinithookmd) +- [withLifecycleHook](#functionswithlifecyclehookmd) +- [withMemo](#functionswithmemomd) +- [withSearchParamsPersist](#functionswithsearchparamspersistmd) +- [withSuspense](#functionswithsuspensemd) + +# Interfaces + + + + +## Interface: AbortAtom() + +Defined in: [packages/core/src/methods/abort.ts:65](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L65) + +Atom-like object that tracks abort state + + AbortAtom + +### Extends + +- [`AtomLike`](#interfacesatomlikemd)\<`null` \| [`AbortError`](#interfacesaborterrormd), \[\] \| \[`any`\]\>.[`AbortMethods`](#interfacesabortmethodsmd) + +> **AbortAtom**(...`params`): `null` \| [`AbortError`](#interfacesaborterrormd) + +Defined in: [packages/core/src/methods/abort.ts:65](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L65) + +Atom-like object that tracks abort state + + AbortAtom + +### Parameters + +#### params + +Parameters to pass to the atom + +\[\] | \[`any`\] + +### Returns + +`null` \| [`AbortError`](#interfacesaborterrormd) + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`AbortAtom`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`AbortAtom`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`subscribe`](#subscribe) + +### Methods + +#### getController() + +> **getController**(`this`): [`LazyAbortController`](#interfaceslazyabortcontrollermd) + +Defined in: [packages/core/src/methods/abort.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L42) + +Creates and returns an AbortController connected to this abort atom + +##### Parameters + +###### this + +`AbortAtom` + +##### Returns + +[`LazyAbortController`](#interfaceslazyabortcontrollermd) + +An AbortController that will be aborted when the atom is aborted + +##### Inherited from + +[`AbortMethods`](#interfacesabortmethodsmd).[`getController`](#getcontroller) + +*** + +#### subscribeAbort() + +> **subscribeAbort**(`this`, `cb`): [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/methods/abort.ts:35](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L35) + +Subscribes a callback to be executed when the atom transitions to aborted state + +##### Parameters + +###### this + +`AbortAtom` + +###### cb + +(`error`) => `void` + +Callback to execute when aborted + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +Function to unsubscribe the callback + +##### Inherited from + +[`AbortMethods`](#interfacesabortmethodsmd).[`subscribeAbort`](#subscribeabort) + +*** + +#### throwIfAborted() + +> **throwIfAborted**(`this`): `void` + +Defined in: [packages/core/src/methods/abort.ts:27](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L27) + +Throws the current abort error if the atom is in aborted state + +##### Parameters + +###### this + +`AbortAtom` + +##### Returns + +`void` + +##### Throws + +If the atom is in aborted state + +##### Inherited from + +[`AbortMethods`](#interfacesabortmethodsmd).[`throwIfAborted`](#throwifaborted) + + + + +## Interface: AbortError + +Defined in: [packages/core/src/utils.ts:623](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L623) + +Interface extending DOMException for abort-specific error handling. +Used to represent errors triggered by AbortController signal aborts. + +### See + +https://developer.mozilla.org/en-US/docs/Web/API/AbortController + +### Extends + +- `DOMException` + +### Properties + +#### name + +> **name**: `"AbortError"` + +Defined in: [packages/core/src/utils.ts:624](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L624) + +[MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/name) + +##### Overrides + +`DOMException.name` + + + + +## Interface: AbortExt + +Defined in: [packages/core/src/mixins/withAbort.ts:6](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withAbort.ts#L6) + +### Extended by + +- [`AsyncDataExt`](#interfacesasyncdataextmd) + +### Properties + +#### abort() + +> **abort**: (`reason?`) => `void` + +Defined in: [packages/core/src/mixins/withAbort.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withAbort.ts#L7) + +##### Parameters + +###### reason? + +`any` + +##### Returns + +`void` + + + + +## Interface: AbortMethods + +Defined in: [packages/core/src/methods/abort.ts:21](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L21) + +Interface containing methods for abort handling in Reatom + + AbortMethods + +### Extended by + +- [`AbortAtom`](#interfacesabortatommd) + +### Methods + +#### getController() + +> **getController**(`this`): [`LazyAbortController`](#interfaceslazyabortcontrollermd) + +Defined in: [packages/core/src/methods/abort.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L42) + +Creates and returns an AbortController connected to this abort atom + +##### Parameters + +###### this + +[`AbortAtom`](#interfacesabortatommd) + +##### Returns + +[`LazyAbortController`](#interfaceslazyabortcontrollermd) + +An AbortController that will be aborted when the atom is aborted + +*** + +#### subscribeAbort() + +> **subscribeAbort**(`this`, `cb`): [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/methods/abort.ts:35](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L35) + +Subscribes a callback to be executed when the atom transitions to aborted state + +##### Parameters + +###### this + +[`AbortAtom`](#interfacesabortatommd) + +###### cb + +(`error`) => `void` + +Callback to execute when aborted + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +Function to unsubscribe the callback + +*** + +#### throwIfAborted() + +> **throwIfAborted**(`this`): `void` + +Defined in: [packages/core/src/methods/abort.ts:27](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L27) + +Throws the current abort error if the atom is in aborted state + +##### Parameters + +###### this + +[`AbortAtom`](#interfacesabortatommd) + +##### Returns + +`void` + +##### Throws + +If the atom is in aborted state + + + + +## Interface: AbortVar + +Defined in: [packages/core/src/methods/abort.ts:75](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L75) + +Interface for a global abort variable tied to the current frame + + AbortVar + +### Extends + +- [`Variable`](#interfacesvariablemd)\<\[`string` \| [`AbortAtom`](#interfacesabortatommd)\], [`AbortAtom`](#interfacesabortatommd)\> + +### Methods + +#### abort() + +> **abort**(`reason?`): `void` + +Defined in: [packages/core/src/methods/abort.ts:104](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L104) + +Aborts the current frame with an optional reason + +##### Parameters + +###### reason? + +`unknown` + +Optional reason for aborting + +##### Returns + +`void` + +*** + +#### find() + +> **find**\<`T`\>(`cb?`, `frame?`): `undefined` \| `T` + +Defined in: [packages/core/src/methods/variable.ts:48](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L48) + +Traverses the frame tree to find and map the variable value. + +##### Type Parameters + +###### T + +`T` = [`AbortAtom`](#interfacesabortatommd) + +Return type of the callback + +##### Parameters + +###### cb? + +(`value`) => `undefined` \| `T` + +Optional transformation callback + +###### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +Optional frame to check (defaults to current top frame) + +##### Returns + +`undefined` \| `T` + +The transformed value or undefined if not found + +##### Inherited from + +[`Variable`](#interfacesvariablemd).[`find`](#find) + +*** + +#### get() + +> **get**(`frame?`): [`AbortAtom`](#interfacesabortatommd) + +Defined in: [packages/core/src/methods/variable.ts:22](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L22) + +Gets the current value of the variable + +##### Parameters + +###### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +Optional frame to check (defaults to current top frame) + +##### Returns + +[`AbortAtom`](#interfacesabortatommd) + +The current value + +##### Throws + +If the variable is not found in the frame tree + +##### Inherited from + +[`Variable`](#interfacesvariablemd).[`get`](#get) + +*** + +#### getController() + +> **getController**(): `undefined` \| `AbortController` + +Defined in: [packages/core/src/methods/abort.ts:97](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L97) + +Creates and returns an AbortController connected to the current frame + +##### Returns + +`undefined` \| `AbortController` + +An AbortController or undefined if no abort atom available + +*** + +#### has() + +> **has**(`frame?`): `boolean` + +Defined in: [packages/core/src/methods/variable.ts:38](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L38) + +Checks if the variable exists in the current stack + +##### Parameters + +###### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +Optional frame to check (defaults to current top frame) + +##### Returns + +`boolean` + +True if the variable exists in the context + +##### Inherited from + +[`Variable`](#interfacesvariablemd).[`has`](#has) + +*** + +#### run() + +> **run**\<`T`\>(`value`, `fn`): `T` + +Defined in: [packages/core/src/methods/variable.ts:61](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L61) + +Runs a function with new variable value + +##### Type Parameters + +###### T + +`T` + +Return type of the function + +##### Parameters + +###### value + +[`AbortAtom`](#interfacesabortatommd) + +The temporary value to set + +###### fn + +() => `T` + +Function to execute with the temporary value + +##### Returns + +`T` + +The result of the function + +##### Inherited from + +[`Variable`](#interfacesvariablemd).[`run`](#run) + +*** + +#### set() + +> **set**(...`params`): [`AbortAtom`](#interfacesabortatommd) + +Defined in: [packages/core/src/methods/variable.ts:30](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L30) + +Sets a new value for the variable + +##### Parameters + +###### params + +...\[`string` \| [`AbortAtom`](#interfacesabortatommd)\] + +Parameters passed to the setter function + +##### Returns + +[`AbortAtom`](#interfacesabortatommd) + +The new value + +##### Inherited from + +[`Variable`](#interfacesvariablemd).[`set`](#set) + +*** + +#### subscribeAbort() + +> **subscribeAbort**(`cb`): `undefined` \| [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/methods/abort.ts:90](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L90) + +Subscribes a callback to be executed when the current frame is aborted + +##### Parameters + +###### cb + +(`error`) => `void` + +Callback to execute when aborted + +##### Returns + +`undefined` \| [`Unsubscribe`](#interfacesunsubscribemd) + +Function to unsubscribe the callback or undefined if no abort atom available + +*** + +#### throwIfAborted() + +> **throwIfAborted**(): `void` + +Defined in: [packages/core/src/methods/abort.ts:82](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L82) + +Throws if the current frame is aborted + +##### Returns + +`void` + +##### Throws + +If the current frame is aborted + + + + +## Interface: AbstractRender\ + +Defined in: [packages/core/src/reatomAbstractRender.ts:13](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/reatomAbstractRender.ts#L13) + +Interface representing an abstract renderer for connecting Reatom with other reactive systems. +Provides methods to render content with given props and manage the lifecycle through mounting. + +### Type Parameters + +#### Props + +`Props` + +The type of props/parameters that the renderer accepts + +#### Result + +`Result` + +The type of result produced by the render operation + +### Properties + +#### mount() + +> **mount**: () => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/reatomAbstractRender.ts:27](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/reatomAbstractRender.ts#L27) + +Mounts the renderer, setting up subscriptions and event handling + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +- Function to unmount and clean up resources + +*** + +#### render() + +> **render**: (`props`) => `object` + +Defined in: [packages/core/src/reatomAbstractRender.ts:20](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/reatomAbstractRender.ts#L20) + +Renders content using the provided props + +##### Parameters + +###### props + +`Props` + +The properties used for rendering + +##### Returns + +`object` + +- Object containing the render result + +###### result + +> **result**: `Result` + + + + +## Interface: Action()\ + +Defined in: [packages/core/src/core/action.ts:18](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/action.ts#L18) + +Logic container with atom features + +### Extends + +- [`AtomLike`](#interfacesatomlikemd)\<[`ActionState`](#interfacesactionstatemd)\<`Params`, `Payload`\>, `Params`, `Payload`\> + +### Extended by + +- [`SubmitAction`](#interfacessubmitactionmd) + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] = `any`[] + +#### Payload + +`Payload` = `any` + +> **Action**(...`params`): `Payload` + +Defined in: [packages/core/src/core/action.ts:18](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/action.ts#L18) + +Logic container with atom features + +### Parameters + +#### params + +...`Params` + +Parameters to pass to the atom + +### Returns + +`Payload` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`Action`\<`Params`, `Payload`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`Action`\<`Params`, `Payload`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`subscribe`](#subscribe) + + + + +## Interface: ActionState\ + +Defined in: [packages/core/src/core/action.ts:14](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/action.ts#L14) + +Autoclearable array of processed events + +### Extends + +- `Array`\<\{ `params`: `Params`; `payload`: `Payload`; \}\> + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] = `any`[] + +#### Payload + +`Payload` = `any` + +### Indexable + +\[`n`: `number`\]: `object` + + + + +## Interface: ArrayAtom()\ + +Defined in: [packages/core/src/primitives/reatomArray.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L3) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`Atom`](#interfacesatommd)\<`T`[]\> + +### Type Parameters + +#### T + +`T` + +The type of state stored in the atom + +### Call Signature + +> **ArrayAtom**(`update`): `T`[] + +Defined in: [packages/core/src/primitives/reatomArray.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L3) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `T`[] + +Function that takes the current state and returns a new state + +#### Returns + +`T`[] + +The new state value + +### Call Signature + +> **ArrayAtom**(`newState`): `T`[] + +Defined in: [packages/core/src/primitives/reatomArray.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L3) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`T`[] + +The new state value + +#### Returns + +`T`[] + +The new state value + +### Call Signature + +> **ArrayAtom**(...`params`): `T`[] + +Defined in: [packages/core/src/primitives/reatomArray.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L3) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`T`[] + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`ArrayAtom`\<`T`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`ArrayAtom`\<`T`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### pop + +> **pop**: [`Action`](#interfacesactionmd)\<\[\], `undefined` \| `T`\> + +Defined in: [packages/core/src/primitives/reatomArray.ts:5](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L5) + +*** + +#### push + +> **push**: [`Action`](#interfacesactionmd)\<`T`[], `number`\> + +Defined in: [packages/core/src/primitives/reatomArray.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L4) + +*** + +#### shift + +> **shift**: [`Action`](#interfacesactionmd)\<\[\], `undefined` \| `T`\> + +Defined in: [packages/core/src/primitives/reatomArray.ts:6](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L6) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + +*** + +#### unshift + +> **unshift**: [`Action`](#interfacesactionmd)\<`T`[], `number`\> + +Defined in: [packages/core/src/primitives/reatomArray.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomArray.ts#L7) + + + + +## Interface: AssignerExt()\ + +Defined in: [packages/core/src/core/extend.ts:39](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L39) + +Extension that assigns additional methods to an atom/action. + +This extension type is used for adding methods or properties to atoms or actions +without modifying their core behavior. + +### Type Parameters + +#### Methods + +`Methods` *extends* [`Rec`](#type-aliasesrecmd) = \{ \} + +Record of methods/properties to be added to the target + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd) = [`AtomLike`](#interfacesatomlikemd) + +The type of atom or action the extension can be applied to + +> **AssignerExt**\<`T`\>(`target`): `Methods` + +Defined in: [packages/core/src/core/extend.ts:43](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L43) + +Extension that assigns additional methods to an atom/action. + +This extension type is used for adding methods or properties to atoms or actions +without modifying their core behavior. + +### Type Parameters + +#### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### target + +`T` + +### Returns + +`Methods` + + + + +## Interface: AsyncDataExt\ + +Defined in: [packages/core/src/async/withAsyncData.ts:16](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L16) + +Extension interface added by [withAsyncData](#functionswithasyncdatamd) to atoms or actions that return promises. +Extends [AsyncExt](#interfacesasyncextmd) with data storage and abort capabilities for managing async data fetching. + +### Extends + +- [`AsyncExt`](#interfacesasyncextmd)\<`Params`, `Payload`, `Error`\>.[`AbortExt`](#interfacesabortextmd) + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] = `any`[] + +The parameter types of the original atom or action + +#### Payload + +`Payload` = `any` + +The resolved value type of the promise + +#### State + +`State` = `any` + +The type of the stored data + +#### Error + +`Error` = `any` + +The type of errors that can be caught + +### Properties + +#### abort() + +> **abort**: (`reason?`) => `void` + +Defined in: [packages/core/src/mixins/withAbort.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withAbort.ts#L7) + +##### Parameters + +###### reason? + +`any` + +##### Returns + +`void` + +##### Inherited from + +[`AbortExt`](#interfacesabortextmd).[`abort`](#abort) + +*** + +#### data + +> **data**: [`Atom`](#interfacesatommd)\<`State`\> + +Defined in: [packages/core/src/async/withAsyncData.ts:27](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L27) + +Atom that stores the fetched data +Updated automatically when the async operation completes successfully + +*** + +#### error + +> **error**: [`Atom`](#interfacesatommd)\<`undefined` \| `Error`\> + +Defined in: [packages/core/src/async/withAsync.ts:80](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L80) + +Atom containing the most recent error or undefined if no error has occurred + +##### Inherited from + +[`AsyncExt`](#interfacesasyncextmd).[`error`](#error-1) + +*** + +#### onFulfill + +> **onFulfill**: [`Action`](#interfacesactionmd)\<\[`Payload`, `Params`\], \{ `params`: `Params`; `payload`: `Payload`; \}\> + +Defined in: [packages/core/src/async/withAsync.ts:45](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L45) + +Action that is called when the promise resolves successfully + +##### Param + +The resolved value from the promise + +##### Param + +The original parameters passed to the atom/action + +##### Returns + +An object containing the payload and parameters + +##### Inherited from + +[`AsyncExt`](#interfacesasyncextmd).[`onFulfill`](#onfulfill) + +*** + +#### onReject + +> **onReject**: [`Action`](#interfacesactionmd)\<\[`Error`, `Params`\], \{ `error`: `Error`; `params`: `Params`; \}\> + +Defined in: [packages/core/src/async/withAsync.ts:56](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L56) + +Action that is called when the promise rejects with an error + +##### Param + +The error thrown by the promise + +##### Param + +The original parameters passed to the atom/action + +##### Returns + +An object containing the error and parameters + +##### Inherited from + +[`AsyncExt`](#interfacesasyncextmd).[`onReject`](#onreject) + +*** + +#### onSettle + +> **onSettle**: [`Action`](#interfacesactionmd)\<\[\{ `params`: `Params`; `payload`: `Payload`; \} \| \{ `error`: `Error`; `params`: `Params`; \}\], \{ `params`: `Params`; `payload`: `Payload`; \} \| \{ `error`: `Error`; `params`: `Params`; \}\> + +Defined in: [packages/core/src/async/withAsync.ts:66](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L66) + +Action called after either successful resolution or rejection + +##### Param + +Either a payload+params object or an error+params object + +##### Returns + +The same result object that was passed in + +##### Inherited from + +[`AsyncExt`](#interfacesasyncextmd).[`onSettle`](#onsettle) + +*** + +#### pending + +> **pending**: [`Computed`](#interfacescomputedmd)\<`number`\> + +Defined in: [packages/core/src/async/withAsync.ts:75](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L75) + +Computed atom tracking how many async operations are currently pending + +##### Returns + +Number of pending operations (0 when none are pending) + +##### Inherited from + +[`AsyncExt`](#interfacesasyncextmd).[`pending`](#pending) + +*** + +#### ready + +> **ready**: [`Computed`](#interfacescomputedmd)\<`boolean`\> + +Defined in: [packages/core/src/async/withAsync.ts:37](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L37) + +Computed atom that indicates when no async operations are pending + +##### Returns + +Boolean indicating if all operations have completed (true) or some are still pending (false) + +##### Inherited from + +[`AsyncExt`](#interfacesasyncextmd).[`ready`](#ready) + +*** + +#### retry + +> **retry**: [`Action`](#interfacesactionmd)\<`Params`, `Promise`\<`Payload`\>\> + +Defined in: [packages/core/src/async/withAsync.ts:82](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L82) + +##### Inherited from + +[`AsyncExt`](#interfacesasyncextmd).[`retry`](#retry) + + + + +## Interface: AsyncDataOptions\ + +Defined in: [packages/core/src/async/withAsyncData.ts:40](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L40) + +Configuration options for the [withAsyncData](#functionswithasyncdatamd) extension +Extends [AsyncOptions](#type-aliasesasyncoptionsmd) with options specific to data management + +### Extends + +- [`AsyncOptions`](#type-aliasesasyncoptionsmd)\<`Err`, `EmptyErr`\> + +### Type Parameters + +#### State + +`State` = `any` + +The type of data to store + +#### Params + +`Params` *extends* `any`[] = `any`[] + +The parameter types of the original atom or action + +#### Payload + +`Payload` = `any` + +The resolved value type of the promise + +#### Err + +`Err` = `Error` + +The type of errors after parsing + +#### EmptyErr + +`EmptyErr` = `undefined` + +The type of the empty error state + +### Properties + +#### emptyError? + +> `optional` **emptyError**: `EmptyErr` + +Defined in: [packages/core/src/async/withAsync.ts:102](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L102) + +Initial/reset value for the error atom + +##### Inherited from + +[`AsyncOptions`](#type-aliasesasyncoptionsmd).[`emptyError`](#emptyerror) + +*** + +#### initState? + +> `optional` **initState**: `State` + +Defined in: [packages/core/src/async/withAsyncData.ts:50](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L50) + +Initial value for the data atom + +*** + +#### mapPayload()? + +> `optional` **mapPayload**: (`payload`, `params`, `state`) => `State` + +Defined in: [packages/core/src/async/withAsyncData.ts:59](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsyncData.ts#L59) + +Function to transform the successful payload into the data state + +##### Parameters + +###### payload + +`Payload` + +The resolved value from the promise + +###### params + +`Params` + +The original parameters passed to the atom/action + +###### state + +`State` + +The current state of the data atom + +##### Returns + +`State` + +The new state for the data atom + +*** + +#### parseError()? + +> `optional` **parseError**: (`error`) => `Err` + +Defined in: [packages/core/src/async/withAsync.ts:97](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L97) + +Function to transform raw errors into a specific error type + +##### Parameters + +###### error + +`unknown` + +The caught error of unknown type + +##### Returns + +`Err` + +A properly typed error object + +##### Inherited from + +[`AsyncOptions`](#type-aliasesasyncoptionsmd).[`parseError`](#parseerror) + +*** + +#### resetError? + +> `optional` **resetError**: `null` \| `"onCall"` \| `"onFulfill"` + +Defined in: [packages/core/src/async/withAsync.ts:110](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L110) + +When to reset the error state +- 'onCall': Reset error when the async operation starts (default) +- 'onFulfill': Reset error only when the operation succeeds +- null: Never automatically reset errors + +##### Inherited from + +[`AsyncOptions`](#type-aliasesasyncoptionsmd).[`resetError`](#reseterror) + + + + +## Interface: AsyncExt\ + +Defined in: [packages/core/src/async/withAsync.ts:28](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L28) + +Extension interface added by [withAsync](#variableswithasyncmd) to atoms or actions that return promises. +Provides utilities for tracking async state, handling errors, and responding to async events. + +### Extended by + +- [`AsyncDataExt`](#interfacesasyncdataextmd) + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] = `any`[] + +The parameter types of the original atom or action + +#### Payload + +`Payload` = `any` + +The resolved value type of the promise + +#### Error + +`Error` = `any` + +The type of errors that can be caught + +### Properties + +#### error + +> **error**: [`Atom`](#interfacesatommd)\<`undefined` \| `Error`\> + +Defined in: [packages/core/src/async/withAsync.ts:80](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L80) + +Atom containing the most recent error or undefined if no error has occurred + +*** + +#### onFulfill + +> **onFulfill**: [`Action`](#interfacesactionmd)\<\[`Payload`, `Params`\], \{ `params`: `Params`; `payload`: `Payload`; \}\> + +Defined in: [packages/core/src/async/withAsync.ts:45](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L45) + +Action that is called when the promise resolves successfully + +##### Param + +The resolved value from the promise + +##### Param + +The original parameters passed to the atom/action + +##### Returns + +An object containing the payload and parameters + +*** + +#### onReject + +> **onReject**: [`Action`](#interfacesactionmd)\<\[`Error`, `Params`\], \{ `error`: `Error`; `params`: `Params`; \}\> + +Defined in: [packages/core/src/async/withAsync.ts:56](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L56) + +Action that is called when the promise rejects with an error + +##### Param + +The error thrown by the promise + +##### Param + +The original parameters passed to the atom/action + +##### Returns + +An object containing the error and parameters + +*** + +#### onSettle + +> **onSettle**: [`Action`](#interfacesactionmd)\<\[\{ `params`: `Params`; `payload`: `Payload`; \} \| \{ `error`: `Error`; `params`: `Params`; \}\], \{ `params`: `Params`; `payload`: `Payload`; \} \| \{ `error`: `Error`; `params`: `Params`; \}\> + +Defined in: [packages/core/src/async/withAsync.ts:66](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L66) + +Action called after either successful resolution or rejection + +##### Param + +Either a payload+params object or an error+params object + +##### Returns + +The same result object that was passed in + +*** + +#### pending + +> **pending**: [`Computed`](#interfacescomputedmd)\<`number`\> + +Defined in: [packages/core/src/async/withAsync.ts:75](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L75) + +Computed atom tracking how many async operations are currently pending + +##### Returns + +Number of pending operations (0 when none are pending) + +*** + +#### ready + +> **ready**: [`Computed`](#interfacescomputedmd)\<`boolean`\> + +Defined in: [packages/core/src/async/withAsync.ts:37](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L37) + +Computed atom that indicates when no async operations are pending + +##### Returns + +Boolean indicating if all operations have completed (true) or some are still pending (false) + +*** + +#### retry + +> **retry**: [`Action`](#interfacesactionmd)\<`Params`, `Promise`\<`Payload`\>\> + +Defined in: [packages/core/src/async/withAsync.ts:82](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L82) + + + + +## Interface: Atom()\ + +Defined in: [packages/core/src/core/atom.ts:111](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L111) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`AtomLike`](#interfacesatomlikemd)\<`State`, \[\]\> + +### Extended by + +- [`FieldLikeAtom`](#interfacesfieldlikeatommd) +- [`ArrayAtom`](#interfacesarrayatommd) +- [`BooleanAtom`](#interfacesbooleanatommd) +- [`MapAtom`](#interfacesmapatommd) +- [`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd) +- [`NumberAtom`](#interfacesnumberatommd) +- [`RecordAtom`](#interfacesrecordatommd) +- [`SetAtom`](#interfacessetatommd) +- [`UrlAtom`](#interfacesurlatommd) + +### Type Parameters + +#### State + +`State` = `any` + +The type of state stored in the atom + +### Call Signature + +> **Atom**(`update`): `State` + +Defined in: [packages/core/src/core/atom.ts:117](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L117) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `State` + +Function that takes the current state and returns a new state + +#### Returns + +`State` + +The new state value + +### Call Signature + +> **Atom**(`newState`): `State` + +Defined in: [packages/core/src/core/atom.ts:124](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L124) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`State` + +The new state value + +#### Returns + +`State` + +The new state value + +### Call Signature + +> **Atom**(...`params`): `State` + +Defined in: [packages/core/src/core/atom.ts:111](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L111) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`State` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`Atom`\<`State`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`Atom`\<`State`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`subscribe`](#subscribe) + + + + +## Interface: AtomLike()\ + +Defined in: [packages/core/src/core/atom.ts:62](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L62) + +Base atom interface for other userspace implementations. +This is the core interface that all atom-like objects implement, +providing the foundation for Reatom's reactivity system. + +### Extended by + +- [`Atom`](#interfacesatommd) +- [`Computed`](#interfacescomputedmd) +- [`ContextAtom`](#interfacescontextatommd) +- [`Action`](#interfacesactionmd) +- [`FocusAtom`](#interfacesfocusatommd) +- [`ValidationAtom`](#interfacesvalidationatommd) +- [`AbortAtom`](#interfacesabortatommd) + +### Type Parameters + +#### State + +`State` = `any` + +The type of state stored in the atom + +#### Params + +`Params` *extends* `any`[] = `any`[] + +The parameter types the atom accepts when called + +#### Payload + +`Payload` = `State` + +The return type when the atom is called + +> **AtomLike**(...`params`): `Payload` + +Defined in: [packages/core/src/core/atom.ts:73](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L73) + +Base atom interface for other userspace implementations. +This is the core interface that all atom-like objects implement, +providing the foundation for Reatom's reactivity system. + +### Parameters + +#### params + +...`Params` + +Parameters to pass to the atom + +### Returns + +`Payload` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`AtomLike`\<`State`, `Params`, `Payload`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`AtomLike`\<`State`, `Params`, `Payload`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + + + + +## Interface: AtomMeta + +Defined in: [packages/core/src/core/atom.ts:11](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L11) + +Metadata associated with an atom instance that controls its behavior and lifecycle. +This interface is used internally by the Reatom framework and should not be +accessed directly in application code. + +### Properties + +#### initState + +> `readonly` **initState**: `any` + +Defined in: [packages/core/src/core/atom.ts:21](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L21) + +The initial state of the atom. + +*** + +#### middlewares + +> `readonly` **middlewares**: (`next`, ...`params`) => `any`[] + +Defined in: [packages/core/src/core/atom.ts:26](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L26) + +Array of middleware functions that intercept and potentially transform atom operations. + +##### Parameters + +###### next + +[`Fn`](#interfacesfnmd) + +###### params + +...`any`[] + +##### Returns + +`any` + +*** + +#### onConnect + +> **onConnect**: `undefined` \| [`Fn`](#interfacesfnmd) + +Defined in: [packages/core/src/core/atom.ts:45](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L45) + +Function called when the atom gains its first subscriber. + +*** + +#### onDisconnect + +> **onDisconnect**: `undefined` \| [`Fn`](#interfacesfnmd) + +Defined in: [packages/core/src/core/atom.ts:50](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L50) + +Function called when the atom loses its last subscriber. + +*** + +#### reactive + +> `readonly` **reactive**: `boolean` + +Defined in: [packages/core/src/core/atom.ts:16](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L16) + +Indicates whether the atom is reactive. +Set to false for actions or the context atom. + + + + +## Interface: BaseFormOptions + +Defined in: [packages/core/src/form/src/reatomForm.ts:129](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L129) + +### Extended by + +- [`FormOptionsWithSchema`](#interfacesformoptionswithschemamd) +- [`FormOptionsWithoutSchema`](#interfacesformoptionswithoutschemamd) + +### Properties + +#### keepErrorDuringValidating? + +> `optional` **keepErrorDuringValidating**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:139](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L139) + +Defines the default reset behavior of the validation state during async validation for all fields. + +##### Default + +```ts +false +``` + +*** + +#### keepErrorOnChange? + +> `optional` **keepErrorOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:146](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L146) + +Defines the default reset behavior of the validation state on field change for all fields. +Useful if the validation is triggered on blur or submit only. + +##### Default + +```ts +!validateOnChange +``` + +*** + +#### name? + +> `optional` **name**: `string` + +Defined in: [packages/core/src/form/src/reatomForm.ts:130](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L130) + +*** + +#### resetOnSubmit? + +> `optional` **resetOnSubmit**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:133](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L133) + +Should reset the state after success submit? + +##### Default + +```ts +true +``` + +*** + +#### validateOnBlur? + +> `optional` **validateOnBlur**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:158](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L158) + +Defines if the validation should be triggered on the field blur by default for all fields. + +##### Default + +```ts +false +``` + +*** + +#### validateOnChange? + +> `optional` **validateOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:152](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L152) + +Defines if the validation should be triggered with every field change by default for all fields. + +##### Default + +```ts +false +``` + + + + +## Interface: BooleanAtom() + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L3) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`Atom`](#interfacesatommd)\<`boolean`\> + +### Call Signature + +> **BooleanAtom**(`update`): `boolean` + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L3) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `boolean` + +Function that takes the current state and returns a new state + +#### Returns + +`boolean` + +The new state value + +### Call Signature + +> **BooleanAtom**(`newState`): `boolean` + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L3) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`boolean` + +The new state value + +#### Returns + +`boolean` + +The new state value + +### Call Signature + +> **BooleanAtom**(...`params`): `boolean` + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L3) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`boolean` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`BooleanAtom`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`BooleanAtom`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[\], `boolean`\> + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L7) + +*** + +#### setFalse + +> **setFalse**: [`Action`](#interfacesactionmd)\<\[\], `false`\> + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:6](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L6) + +*** + +#### setTrue + +> **setTrue**: [`Action`](#interfacesactionmd)\<\[\], `true`\> + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:5](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L5) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + +*** + +#### toggle + +> **toggle**: [`Action`](#interfacesactionmd)\<\[\], `boolean`\> + +Defined in: [packages/core/src/primitives/reatomBoolean.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomBoolean.ts#L4) + + + + +## Interface: Computed()\ + +Defined in: [packages/core/src/core/atom.ts:136](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L136) + +Derived state container. + +A computed atom automatically tracks dependencies and recalculates only when +those dependencies change. The calculation is performed lazily, only when the +computed value is read AND subscribed to. + +### Extends + +- [`AtomLike`](#interfacesatomlikemd)\<`State`, \[\]\> + +### Extended by + +- [`Effect`](#interfaceseffectmd) +- [`RouteAtom`](#interfacesrouteatommd) +- [`SearchParamsAtom`](#interfacessearchparamsatommd) + +### Type Parameters + +#### State + +`State` = `any` + +The type of derived state + +> **Computed**(...`params`): `State` + +Defined in: [packages/core/src/core/atom.ts:136](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L136) + +Derived state container. + +A computed atom automatically tracks dependencies and recalculates only when +those dependencies change. The calculation is performed lazily, only when the +computed value is read AND subscribed to. + +### Parameters + +#### params + +...\[\] + +Parameters to pass to the atom + +### Returns + +`State` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`Computed`\<`State`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`Computed`\<`State`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`subscribe`](#subscribe) + + + + +## Interface: Context + +Defined in: [packages/core/src/core/atom.ts:284](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L284) + +Reatom's execution context that manages reactive state. + +The context handles tracking relationships between atoms, scheduling operations, +and maintaining the execution stack during Reatom operations. + +### Properties + +#### cleanup + +> **cleanup**: [`Queue`](#interfacesqueuemd) + +Defined in: [packages/core/src/core/atom.ts:308](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L308) + +Queue for cleanup callbacks to be executed. + +*** + +#### compute + +> **compute**: [`Queue`](#interfacesqueuemd) + +Defined in: [packages/core/src/core/atom.ts:303](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L303) + +Queue for computation callbacks to be executed. + +*** + +#### effect + +> **effect**: [`Queue`](#interfacesqueuemd) + +Defined in: [packages/core/src/core/atom.ts:313](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L313) + +Queue for effect callbacks to be executed. + +*** + +#### hook + +> **hook**: [`Queue`](#interfacesqueuemd) + +Defined in: [packages/core/src/core/atom.ts:298](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L298) + +Queue for hook callbacks to be executed. + +*** + +#### meta + +> **meta**: [`ContextMeta`](#interfacescontextmetamd) + +Defined in: [packages/core/src/core/atom.ts:293](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L293) + +Additional metadata for this context. + +*** + +#### store + +> **store**: [`Store`](#interfacesstoremd) + +Defined in: [packages/core/src/core/atom.ts:288](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L288) + +Store that maps atoms to their frames in this context. + +### Methods + +#### pushQueue() + +> **pushQueue**(`cb`, `queue`): `void` + +Defined in: [packages/core/src/core/atom.ts:321](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L321) + +Add a callback to a specific queue for later execution. + +##### Parameters + +###### cb + +[`Fn`](#interfacesfnmd) + +Callback function to schedule + +###### queue + +Queue to add the callback to + +`"hook"` | `"compute"` | `"cleanup"` | `"effect"` + +##### Returns + +`void` + + + + +## Interface: ContextAtom() + +Defined in: [packages/core/src/core/atom.ts:333](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L333) + +Atom interface for the context atom. +Provides methods to start new isolated contexts. + +### Extends + +- [`AtomLike`](#interfacesatomlikemd)\<[`Context`](#interfacescontextmd), \[\], [`ContextFrame`](#interfacescontextframemd)\> + +> **ContextAtom**(...`params`): [`ContextFrame`](#interfacescontextframemd) + +Defined in: [packages/core/src/core/atom.ts:333](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L333) + +Atom interface for the context atom. +Provides methods to start new isolated contexts. + +### Parameters + +#### params + +...\[\] + +Parameters to pass to the atom + +### Returns + +[`ContextFrame`](#interfacescontextframemd) + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`ContextAtom`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`ContextAtom`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`subscribe`](#subscribe) + +### Methods + +#### start() + +##### Call Signature + +> **start**\<`T`\>(`cb`): `T` + +Defined in: [packages/core/src/core/atom.ts:340](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L340) + +Start a new isolated context and run a callback within it. + +###### Type Parameters + +####### T + +`T` + +###### Parameters + +####### cb + +() => `T` + +Function to execute in the new context + +###### Returns + +`T` + +The result of the callback + +##### Call Signature + +> **start**(): [`ContextFrame`](#interfacescontextframemd) + +Defined in: [packages/core/src/core/atom.ts:347](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L347) + +Start a new isolated context. + +###### Returns + +[`ContextFrame`](#interfacescontextframemd) + +The new context frame + + + + +## Interface: ContextFrame + +Defined in: [packages/core/src/core/atom.ts:327](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L327) + +Special frame type for the context atom. + +### Extends + +- [`Frame`](#interfacesframemd)\<[`Context`](#interfacescontextmd), \[\], `ContextFrame`\> + +### Properties + +#### atom + +> `readonly` **atom**: [`AtomLike`](#interfacesatomlikemd)\<[`Context`](#interfacescontextmd), \[\], `ContextFrame`\> + +Defined in: [packages/core/src/core/atom.ts:166](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L166) + +Reference to the atom itself + +##### Inherited from + +[`Frame`](#interfacesframemd).[`atom`](#atom) + +*** + +#### error + +> **error**: `null` \| \{ \} + +Defined in: [packages/core/src/core/atom.ts:156](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L156) + +Error that occurred during atom evaluation, or null if successful + +##### Inherited from + +[`Frame`](#interfacesframemd).[`error`](#error) + +*** + +#### pubs + +> **pubs**: \[`null` \| [`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\>, `...dependencies: Frame[]`\] + +Defined in: [packages/core/src/core/atom.ts:173](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L173) + +Immutable list of dependencies. +The first element is actualization flag and an imperative write cause. +Subsequent elements are the atom's dependencies. + +##### Inherited from + +[`Frame`](#interfacesframemd).[`pubs`](#pubs) + +*** + +#### state + +> **state**: [`Context`](#interfacescontextmd) + +Defined in: [packages/core/src/core/atom.ts:161](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L161) + +Current state of the atom + +##### Inherited from + +[`Frame`](#interfacesframemd).[`state`](#state-1) + +*** + +#### subs + +> `readonly` **subs**: [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\>[] + +Defined in: [packages/core/src/core/atom.ts:178](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L178) + +Array of atoms that depend on this atom (subscribers). + +##### Inherited from + +[`Frame`](#interfacesframemd).[`subs`](#subs) + +### Methods + +#### run() + +> **run**\<`I`, `O`\>(`fn`, ...`params`): `O` + +Defined in: [packages/core/src/core/atom.ts:188](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L188) + +Run the callback in this context. +DO NOT USE directly, use `wrap` instead to preserve context correctly. + +##### Type Parameters + +###### I + +`I` *extends* `any`[] + +###### O + +`O` + +##### Parameters + +###### fn + +(...`params`) => `O` + +Function to execute in this context + +###### params + +...`I` + +Parameters to pass to the function + +##### Returns + +`O` + +The result of the function call + +##### Inherited from + +[`Frame`](#interfacesframemd).[`run`](#run) + + + + +## Interface: ContextMeta + +Defined in: [packages/core/src/core/atom.ts:244](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L244) + +Metadata container for the Reatom context. +Stores various maps used for managing atoms and their relationships. + +### Indexable + +\[`key`: `string`\]: `WeakMap`\<`WeakKey`, `any`\> + +Additional metadata entries that can be dynamically added. + +### Properties + +#### frames + +> **frames**: `WeakMap`\<[`Atom`](#interfacesatommd)\<`any`\>, \{ `next`: [`Frame`](#interfacesframemd); `prev`: `null` \| [`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\>; \}\> + +Defined in: [packages/core/src/core/atom.ts:259](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L259) + +Maps atoms to their previous and next frames for tracking frame transitions. + +*** + +#### init + +> **init**: `WeakMap`\<`WeakKey`, `any`\> + +Defined in: [packages/core/src/core/atom.ts:248](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L248) + +Stores initialization values for WeakKeys. + +*** + +#### select + +> **select**: `WeakMap`\<[`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\>, `Record`\<`string`, [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\>\>\> + +Defined in: [packages/core/src/core/atom.ts:270](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L270) + +Cache for memoized selectors, keyed by source function. + +*** + +#### variable + +> **variable**: `WeakMap`\<[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\>, `WeakMap`\<`WeakKey`, `any`\>\> + +Defined in: [packages/core/src/core/atom.ts:252](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L252) + +Maps frames to their associated variable maps. + + + + +## Interface: Effect()\ + +Defined in: [packages/core/src/methods/effect.ts:5](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/effect.ts#L5) + +Derived state container. + +A computed atom automatically tracks dependencies and recalculates only when +those dependencies change. The calculation is performed lazily, only when the +computed value is read AND subscribed to. + +### Extends + +- [`Computed`](#interfacescomputedmd)\<`State`\> + +### Type Parameters + +#### State + +`State` + +The type of derived state + +> **Effect**(...`params`): `State` + +Defined in: [packages/core/src/methods/effect.ts:5](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/effect.ts#L5) + +Derived state container. + +A computed atom automatically tracks dependencies and recalculates only when +those dependencies change. The calculation is performed lazily, only when the +computed value is read AND subscribed to. + +### Parameters + +#### params + +...\[\] + +Parameters to pass to the atom + +### Returns + +`State` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`Effect`\<`State`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`Effect`\<`State`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`subscribe`](#subscribe) + +*** + +#### unsubscribe + +> **unsubscribe**: [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/methods/effect.ts:6](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/effect.ts#L6) + + + + +## Interface: Ext()\ + +Defined in: [packages/core/src/core/extend.ts:14](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L14) + +Extension function interface for modifying atoms and actions. + +Extensions are functions that take an atom/action as input and return +either the same atom/action with modified behavior or an object with +additional properties to be assigned to the atom/action. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd) = [`AtomLike`](#interfacesatomlikemd) + +The type of atom or action the extension can be applied to + +#### Extension + +`Extension` = `Target` + +The type that will be returned after applying the extension + +> **Ext**(`target`): `Extension` + +Defined in: [packages/core/src/core/extend.ts:15](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L15) + +Extension function interface for modifying atoms and actions. + +Extensions are functions that take an atom/action as input and return +either the same atom/action with modified behavior or an object with +additional properties to be assigned to the atom/action. + +### Parameters + +#### target + +`Target` + +### Returns + +`Extension` + + + + +## Interface: Extend()\ + +Defined in: [packages/core/src/core/extend.ts:71](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L71) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +### Type Parameters + +#### This + +`This` *extends* [`AtomLike`](#interfacesatomlikemd) + +The atom or action type being extended + +### Call Signature + +> **Extend**\<`T1`\>(`extension1`): `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` + +Defined in: [packages/core/src/core/extend.ts:72](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L72) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +#### Returns + +`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` + +### Call Signature + +> **Extend**\<`T1`, `T2`\>(`extension1`, `extension2`): `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` + +Defined in: [packages/core/src/core/extend.ts:73](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L73) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +#### Returns + +`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` + +### Call Signature + +> **Extend**\<`T1`, `T2`, `T3`\>(`extension1`, `extension2`, `extension3`): `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` + +Defined in: [packages/core/src/core/extend.ts:74](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L74) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +##### extension3 + +[`Ext`](#interfacesextmd)\<`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2`, `T3`\> + +#### Returns + +`T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` + +### Call Signature + +> **Extend**\<`T1`, `T2`, `T3`, `T4`\>(`extension1`, `extension2`, `extension3`, `extension4`): `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4` + +Defined in: [packages/core/src/core/extend.ts:75](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L75) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` + +##### T4 + +`T4` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +##### extension3 + +[`Ext`](#interfacesextmd)\<`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2`, `T3`\> + +##### extension4 + +[`Ext`](#interfacesextmd)\<`T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3`, `T4`\> + +#### Returns + +`T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4` + +### Call Signature + +> **Extend**\<`T1`, `T2`, `T3`, `T4`, `T5`\>(`extension1`, `extension2`, `extension3`, `extension4`, `extension5`): `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4` & `T5` + +Defined in: [packages/core/src/core/extend.ts:76](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L76) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` + +##### T4 + +`T4` + +##### T5 + +`T5` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +##### extension3 + +[`Ext`](#interfacesextmd)\<`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2`, `T3`\> + +##### extension4 + +[`Ext`](#interfacesextmd)\<`T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3`, `T4`\> + +##### extension5 + +[`Ext`](#interfacesextmd)\<`T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4`, `T5`\> + +#### Returns + +`T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4` & `T5` + +### Call Signature + +> **Extend**\<`T1`, `T2`, `T3`, `T4`, `T5`, `T6`\>(`extension1`, `extension2`, `extension3`, `extension4`, `extension5`, `extension6`): `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T2`\<`T2`\> : ... *extends* ... ? ... : ... & `T2` & `T3` & `T4` & `T5` & `T6` + +Defined in: [packages/core/src/core/extend.ts:77](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L77) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` + +##### T4 + +`T4` + +##### T5 + +`T5` + +##### T6 + +`T6` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +##### extension3 + +[`Ext`](#interfacesextmd)\<`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2`, `T3`\> + +##### extension4 + +[`Ext`](#interfacesextmd)\<`T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3`, `T4`\> + +##### extension5 + +[`Ext`](#interfacesextmd)\<`T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4`, `T5`\> + +##### extension6 + +[`Ext`](#interfacesextmd)\<`T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T1`\<...\> : ... & ... & `T2` & `T3` & `T4` & `T5`, `T6`\> + +#### Returns + +`T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T2`\<`T2`\> : ... *extends* ... ? ... : ... & `T2` & `T3` & `T4` & `T5` & `T6` + +### Call Signature + +> **Extend**\<`T1`, `T2`, `T3`, `T4`, `T5`, `T6`, `T7`\>(`extension1`, `extension2`, `extension3`, `extension4`, `extension5`, `extension6`, `extension7`): `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T3`\<`T3`\> : ... *extends* ... ? ... : ... & `T3` & `T4` & `T5` & `T6` & `T7` + +Defined in: [packages/core/src/core/extend.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L78) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` + +##### T4 + +`T4` + +##### T5 + +`T5` + +##### T6 + +`T6` + +##### T7 + +`T7` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +##### extension3 + +[`Ext`](#interfacesextmd)\<`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2`, `T3`\> + +##### extension4 + +[`Ext`](#interfacesextmd)\<`T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3`, `T4`\> + +##### extension5 + +[`Ext`](#interfacesextmd)\<`T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4`, `T5`\> + +##### extension6 + +[`Ext`](#interfacesextmd)\<`T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T1`\<...\> : ... & ... & `T2` & `T3` & `T4` & `T5`, `T6`\> + +##### extension7 + +[`Ext`](#interfacesextmd)\<`T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T2`\<...\> : ... & ... & `T3` & `T4` & `T5` & `T6`, `T7`\> + +#### Returns + +`T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T3`\<`T3`\> : ... *extends* ... ? ... : ... & `T3` & `T4` & `T5` & `T6` & `T7` + +### Call Signature + +> **Extend**\<`T1`, `T2`, `T3`, `T4`, `T5`, `T6`, `T7`, `T8`\>(`extension1`, `extension2`, `extension3`, `extension4`, `extension5`, `extension6`, `extension7`, `extension8`): `T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T4`\<`T4`\> : ... *extends* ... ? ... : ... & `T4` & `T5` & `T6` & `T7` & `T8` + +Defined in: [packages/core/src/core/extend.ts:79](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L79) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` + +##### T4 + +`T4` + +##### T5 + +`T5` + +##### T6 + +`T6` + +##### T7 + +`T7` + +##### T8 + +`T8` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +##### extension3 + +[`Ext`](#interfacesextmd)\<`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2`, `T3`\> + +##### extension4 + +[`Ext`](#interfacesextmd)\<`T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3`, `T4`\> + +##### extension5 + +[`Ext`](#interfacesextmd)\<`T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4`, `T5`\> + +##### extension6 + +[`Ext`](#interfacesextmd)\<`T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T1`\<...\> : ... & ... & `T2` & `T3` & `T4` & `T5`, `T6`\> + +##### extension7 + +[`Ext`](#interfacesextmd)\<`T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T2`\<...\> : ... & ... & `T3` & `T4` & `T5` & `T6`, `T7`\> + +##### extension8 + +[`Ext`](#interfacesextmd)\<`T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T3`\<...\> : ... & ... & `T4` & `T5` & `T6` & `T7`, `T8`\> + +#### Returns + +`T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T4`\<`T4`\> : ... *extends* ... ? ... : ... & `T4` & `T5` & `T6` & `T7` & `T8` + +### Call Signature + +> **Extend**\<`T1`, `T2`, `T3`, `T4`, `T5`, `T6`, `T7`, `T8`, `T9`\>(`extension1`, `extension2`, `extension3`, `extension4`, `extension5`, `extension6`, `extension7`, `extension8`, `extension9`): `T9` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T9`\<`T9`\> : `T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T5`\<`T5`\> : ... *extends* ... ? ... : ... & `T5` & `T6` & `T7` & `T8` & `T9` + +Defined in: [packages/core/src/core/extend.ts:80](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L80) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` + +##### T4 + +`T4` + +##### T5 + +`T5` + +##### T6 + +`T6` + +##### T7 + +`T7` + +##### T8 + +`T8` + +##### T9 + +`T9` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +##### extension3 + +[`Ext`](#interfacesextmd)\<`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2`, `T3`\> + +##### extension4 + +[`Ext`](#interfacesextmd)\<`T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3`, `T4`\> + +##### extension5 + +[`Ext`](#interfacesextmd)\<`T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4`, `T5`\> + +##### extension6 + +[`Ext`](#interfacesextmd)\<`T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T1`\<...\> : ... & ... & `T2` & `T3` & `T4` & `T5`, `T6`\> + +##### extension7 + +[`Ext`](#interfacesextmd)\<`T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T2`\<...\> : ... & ... & `T3` & `T4` & `T5` & `T6`, `T7`\> + +##### extension8 + +[`Ext`](#interfacesextmd)\<`T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T3`\<...\> : ... & ... & `T4` & `T5` & `T6` & `T7`, `T8`\> + +##### extension9 + +[`Ext`](#interfacesextmd)\<`T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T4`\<...\> : ... & ... & `T5` & `T6` & `T7` & `T8`, `T9`\> + +#### Returns + +`T9` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T9`\<`T9`\> : `T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T5`\<`T5`\> : ... *extends* ... ? ... : ... & `T5` & `T6` & `T7` & `T8` & `T9` + +### Call Signature + +> **Extend**\<`T1`, `T2`, `T3`, `T4`, `T5`, `T6`, `T7`, `T8`, `T9`, `T10`\>(`extension1`, `extension2`, `extension3`, `extension4`, `extension5`, `extension6`, `extension7`, `extension8`, `extension9`, `extension10`): `T10` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T10`\<`T10`\> : `T9` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T9`\<`T9`\> : `T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T6`\<`T6`\> : ... *extends* ... ? ... : ... & `T6` & `T7` & `T8` & `T9` & `T10` + +Defined in: [packages/core/src/core/extend.ts:81](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L81) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` + +##### T4 + +`T4` + +##### T5 + +`T5` + +##### T6 + +`T6` + +##### T7 + +`T7` + +##### T8 + +`T8` + +##### T9 + +`T9` + +##### T10 + +`T10` + +#### Parameters + +##### extension1 + +[`Ext`](#interfacesextmd)\<`This`, `T1`\> + +##### extension2 + +[`Ext`](#interfacesextmd)\<`T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1`, `T2`\> + +##### extension3 + +[`Ext`](#interfacesextmd)\<`T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2`, `T3`\> + +##### extension4 + +[`Ext`](#interfacesextmd)\<`T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3`, `T4`\> + +##### extension5 + +[`Ext`](#interfacesextmd)\<`T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T1`\<`T1`\> : `This` & `T1` & `T2` & `T3` & `T4`, `T5`\> + +##### extension6 + +[`Ext`](#interfacesextmd)\<`T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T2`\<`T2`\> : `T1` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T1`\<...\> : ... & ... & `T2` & `T3` & `T4` & `T5`, `T6`\> + +##### extension7 + +[`Ext`](#interfacesextmd)\<`T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T3`\<`T3`\> : `T2` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T2`\<...\> : ... & ... & `T3` & `T4` & `T5` & `T6`, `T7`\> + +##### extension8 + +[`Ext`](#interfacesextmd)\<`T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T4`\<`T4`\> : `T3` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T3`\<...\> : ... & ... & `T4` & `T5` & `T6` & `T7`, `T8`\> + +##### extension9 + +[`Ext`](#interfacesextmd)\<`T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T5`\<`T5`\> : `T4` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T4`\<...\> : ... & ... & `T5` & `T6` & `T7` & `T8`, `T9`\> + +##### extension10 + +[`Ext`](#interfacesextmd)\<`T9` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T9`\<`T9`\> : `T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T6`\<`T6`\> : `T5` *extends* [`AtomLike`](#interfacesatomlikemd)\<..., ..., ...\> ? `T5`\<...\> : ... & ... & `T6` & `T7` & `T8` & `T9`, `T10`\> + +#### Returns + +`T10` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T10`\<`T10`\> : `T9` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T9`\<`T9`\> : `T8` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T8`\<`T8`\> : `T7` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> ? `T7`\<`T7`\> : `T6` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, ...[], `any`\> ? `T6`\<`T6`\> : ... *extends* ... ? ... : ... & `T6` & `T7` & `T8` & `T9` & `T10` + +### Call Signature + +> **Extend**\<`T`\>(...`extensions`): `object` & [`AtomLike`](#interfacesatomlikemd)\<`unknown`, `unknown`[], `unknown`\> + +Defined in: [packages/core/src/core/extend.ts:82](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L82) + +Method signature for the extend functionality on atoms and actions. + +This interface defines the overload signatures for the extend method, +supporting different numbers of extensions with proper type inference. + +#### Type Parameters + +##### T + +`T` *extends* [`Ext`](#interfacesextmd)\<[`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\>, [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> \| [`Rec`](#type-aliasesrecmd)\>[] + +#### Parameters + +##### extensions + +...`T` + +#### Returns + +`object` & [`AtomLike`](#interfacesatomlikemd)\<`unknown`, `unknown`[], `unknown`\> + + + + +## Interface: FetchRequestInit\ + +Defined in: [packages/core/src/web/fetch.ts:5](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/fetch.ts#L5) + +### Extends + +- `RequestInit` + +### Type Parameters + +#### Result + +`Result` = `unknown` + +#### Params + +`Params` *extends* `any`[] = `any`[] + +### Properties + +#### getInit()? + +> `optional` **getInit**: (...`params`) => `object` + +Defined in: [packages/core/src/web/fetch.ts:12](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/fetch.ts#L12) + +##### Parameters + +###### params + +...`Params` + +##### Returns + +`object` + +###### body? + +> `optional` **body**: `any`[] \| `Record`\<`string`, `any`\> \| `BodyInit` + +###### searchParams? + +> `optional` **searchParams**: `string` \| `string`[][] \| `Record`\<`string`, `string`\> \| `URLSearchParams` + +*** + +#### getResult()? + +> `optional` **getResult**: (`response`) => `Result` \| `Promise`\<`Result`\> + +Defined in: [packages/core/src/web/fetch.ts:16](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/fetch.ts#L16) + +##### Parameters + +###### response + +`Response` + +##### Returns + +`Result` \| `Promise`\<`Result`\> + +*** + +#### origin? + +> `optional` **origin**: `string` + +Defined in: [packages/core/src/web/fetch.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/fetch.ts#L10) + +*** + +#### transport()? + +> `optional` **transport**: \{(`input`, `init?`): `Promise`\<`Response`\>; (`input`, `init?`): `Promise`\<`Response`\>; \} + +Defined in: [packages/core/src/web/fetch.ts:11](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/fetch.ts#L11) + +##### Call Signature + +> (`input`, `init?`): `Promise`\<`Response`\> + +[MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/fetch) + +###### Parameters + +####### input + +`URL` | `RequestInfo` + +####### init? + +`RequestInit` + +###### Returns + +`Promise`\<`Response`\> + +##### Call Signature + +> (`input`, `init?`): `Promise`\<`Response`\> + +[MDN Reference](https://developer.mozilla.org/docs/Web/API/Window/fetch) + +###### Parameters + +####### input + +`string` | `URL` | `Request` + +####### init? + +`RequestInit` + +###### Returns + +`Promise`\<`Response`\> + +*** + +#### url? + +> `optional` **url**: `string` \| `URL` + +Defined in: [packages/core/src/web/fetch.ts:9](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/fetch.ts#L9) + + + + +## Interface: FieldAtom()\ + +Defined in: [packages/core/src/form/src/reatomField.ts:74](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L74) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`FieldLikeAtom`](#interfacesfieldlikeatommd)\<`State`\> + +### Type Parameters + +#### State + +`State` = `any` + +The type of state stored in the atom + +#### Value + +`Value` = `State` + +### Call Signature + +> **FieldAtom**(`update`): `State` + +Defined in: [packages/core/src/form/src/reatomField.ts:74](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L74) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `State` + +Function that takes the current state and returns a new state + +#### Returns + +`State` + +The new state value + +### Call Signature + +> **FieldAtom**(`newState`): `State` + +Defined in: [packages/core/src/form/src/reatomField.ts:74](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L74) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`State` + +The new state value + +#### Returns + +`State` + +The new state value + +### Call Signature + +> **FieldAtom**(...`params`): `State` + +Defined in: [packages/core/src/form/src/reatomField.ts:74](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L74) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`State` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`FieldLikeAtom`](#interfacesfieldlikeatommd).[`__reatom`](#__reatom) + +*** + +#### \_\_reatomField + +> **\_\_reatomField**: `true` + +Defined in: [packages/core/src/form/src/reatomField.ts:71](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L71) + +##### Inherited from + +[`FieldLikeAtom`](#interfacesfieldlikeatommd).[`__reatomField`](#__reatomfield) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`FieldAtom`\<`State`, `Value`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`FieldLikeAtom`](#interfacesfieldlikeatommd).[`actions`](#actions) + +*** + +#### change + +> **change**: [`Action`](#interfacesactionmd)\<\[`Value`\], `Value`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:77](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L77) + +Action for handling field changes, accepts the "value" parameter and applies it to `toState` option. + +*** + +#### disabled + +> **disabled**: [`BooleanAtom`](#interfacesbooleanatommd) + +Defined in: [packages/core/src/form/src/reatomField.ts:95](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L95) + +Atom that defines if the field is disabled + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`FieldAtom`\<`State`, `Value`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`FieldLikeAtom`](#interfacesfieldlikeatommd).[`extend`](#extend) + +*** + +#### focus + +> **focus**: [`FocusAtom`](#interfacesfocusatommd) + +Defined in: [packages/core/src/form/src/reatomField.ts:80](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L80) + +Atom of an object with all related focus statuses. + +*** + +#### initState + +> **initState**: [`Atom`](#interfacesatommd)\<`State`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:83](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L83) + +The initial state of the atom. + +*** + +#### options + +> **options**: [`RecordAtom`](#interfacesrecordatommd)\<\{ `keepErrorDuringValidating`: `undefined` \| `boolean`; `keepErrorOnChange`: `undefined` \| `boolean`; `shouldValidate`: `undefined` \| `boolean`; `validateOnBlur`: `undefined` \| `boolean`; `validateOnChange`: `undefined` \| `boolean`; \}\> + +Defined in: [packages/core/src/form/src/reatomField.ts:97](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L97) + +*** + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[\], `void`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:86](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L86) + +Action to reset the state, the value, the validation, and the focus. + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`FieldLikeAtom`](#interfacesfieldlikeatommd).[`subscribe`](#subscribe) + +*** + +#### validation + +> **validation**: [`ValidationAtom`](#interfacesvalidationatommd) + +Defined in: [packages/core/src/form/src/reatomField.ts:89](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L89) + +Atom of an object with all related validation statuses. + +*** + +#### value + +> **value**: [`Computed`](#interfacescomputedmd)\<`Value`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:92](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L92) + +Atom with the "value" data, computed by the `fromState` option + + + + +## Interface: FieldFocus + +Defined in: [packages/core/src/form/src/reatomField.ts:29](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L29) + +### Properties + +#### active + +> **active**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:31](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L31) + +The field is focused. + +*** + +#### dirty + +> **dirty**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:34](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L34) + +The field state is not equal to the initial state. + +*** + +#### touched + +> **touched**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:37](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L37) + +The field has ever gained and lost focus. + + + + +## Interface: FieldLikeAtom()\ + +Defined in: [packages/core/src/form/src/reatomField.ts:70](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L70) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`Atom`](#interfacesatommd)\<`State`\> + +### Extended by + +- [`FieldAtom`](#interfacesfieldatommd) + +### Type Parameters + +#### State + +`State` = `any` + +The type of state stored in the atom + +### Call Signature + +> **FieldLikeAtom**(`update`): `State` + +Defined in: [packages/core/src/form/src/reatomField.ts:70](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L70) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `State` + +Function that takes the current state and returns a new state + +#### Returns + +`State` + +The new state value + +### Call Signature + +> **FieldLikeAtom**(`newState`): `State` + +Defined in: [packages/core/src/form/src/reatomField.ts:70](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L70) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`State` + +The new state value + +#### Returns + +`State` + +The new state value + +### Call Signature + +> **FieldLikeAtom**(...`params`): `State` + +Defined in: [packages/core/src/form/src/reatomField.ts:70](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L70) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`State` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### \_\_reatomField + +> **\_\_reatomField**: `true` + +Defined in: [packages/core/src/form/src/reatomField.ts:71](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L71) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`FieldLikeAtom`\<`State`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`FieldLikeAtom`\<`State`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + + + + +## Interface: FieldOptions\ + +Defined in: [packages/core/src/form/src/reatomField.ts:134](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L134) + +### Extended by + +- [`FormFieldOptions`](#interfacesformfieldoptionsmd) + +### Type Parameters + +#### State + +`State` = `any` + +#### Value + +`Value` = `State` + +### Properties + +#### contract()? + +> `optional` **contract**: (`state`) => `unknown` + +Defined in: [packages/core/src/form/src/reatomField.ts:172](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L172) + +The callback to validate field contract. + +##### Parameters + +###### state + +`State` + +##### Returns + +`unknown` + +*** + +#### disabled? + +> `optional` **disabled**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:178](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L178) + +Defines if the field is disabled by default. + +##### Default + +```ts +false +``` + +*** + +#### filter()? + +> `optional` **filter**: (`newValue`, `prevValue`) => `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:139](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L139) + +The callback to filter "value" changes (from the 'change' action). It should return 'false' to skip the update. +By default, it always returns `true`. + +##### Parameters + +###### newValue + +`Value` + +###### prevValue + +`Value` + +##### Returns + +`boolean` + +*** + +#### fromState()? + +> `optional` **fromState**: (`state`) => `Value` + +Defined in: [packages/core/src/form/src/reatomField.ts:145](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L145) + +The callback to compute the "value" data from the "state" data. +By default, it returns the "state" data without any transformations. + +##### Parameters + +###### state + +`State` + +##### Returns + +`Value` + +*** + +#### isDirty()? + +> `optional` **isDirty**: (`newValue`, `prevValue`) => `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:151](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L151) + +The callback used to determine whether the "value" has changed. +By default, it utilizes `isDeepEqual` from reatom/utils. + +##### Parameters + +###### newValue + +`Value` + +###### prevValue + +`Value` + +##### Returns + +`boolean` + +*** + +#### keepErrorDuringValidating? + +> `optional` **keepErrorDuringValidating**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:184](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L184) + +Defines the reset behavior of the validation state during async validation. + +##### Default + +```ts +false +``` + +*** + +#### keepErrorOnChange? + +> `optional` **keepErrorOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:191](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L191) + +Defines the reset behavior of the validation state on field change. +Useful if the validation is triggered on blur or submit only. + +##### Default + +```ts +!validateOnChange +``` + +*** + +#### name? + +> `optional` **name**: `string` + +Defined in: [packages/core/src/form/src/reatomField.ts:156](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L156) + +The name of the field and all related atoms and actions. + +*** + +#### toState()? + +> `optional` **toState**: (`value`) => `State` + +Defined in: [packages/core/src/form/src/reatomField.ts:162](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L162) + +The callback to transform the "state" data from the "value" data from the `change` action. +By default, it returns the "value" data without any transformations. + +##### Parameters + +###### value + +`Value` + +##### Returns + +`State` + +*** + +#### validate? + +> `optional` **validate**: [`FieldValidateOption`](#type-aliasesfieldvalidateoptionmd)\<`State`, `Value`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:167](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L167) + +The callback to validate the field. + +*** + +#### validateOnBlur? + +> `optional` **validateOnBlur**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:203](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L203) + +Defines if the validation should be triggered on the field blur. + +##### Default + +```ts +false +``` + +*** + +#### validateOnChange? + +> `optional` **validateOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:197](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L197) + +Defines if the validation should be triggered with every field change. + +##### Default + +```ts +false +``` + + + + +## Interface: FieldSet\ + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:34](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L34) + +### Extended by + +- [`Form`](#interfacesformmd) + +### Type Parameters + +#### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) + +### Properties + +#### fieldArraysList + +> **fieldArraysList**: [`Computed`](#interfacescomputedmd)\<[`FormFieldArrayAtom`](#type-aliasesformfieldarrayatommd)[]\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L42) + +Computed list of all the field arrays from the fields tree + +*** + +#### fields + +> **fields**: [`FormFields`](#type-aliasesformfieldsmd)\<`T`\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:36](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L36) + +Fields from the init state + +*** + +#### fieldsList + +> **fieldsList**: [`Computed`](#interfacescomputedmd)\<[`FieldAtom`](#interfacesfieldatommd)\<`any`, `any`\>[]\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:39](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L39) + +Computed list of all the fields from the fields tree + +*** + +#### fieldsState + +> **fieldsState**: [`Computed`](#interfacescomputedmd)\<[`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\>\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:45](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L45) + +Atom with the state of the fieldset, computed from all the fields in `fieldsList` + +*** + +#### focus + +> **focus**: [`Computed`](#interfacescomputedmd)\<[`FieldFocus`](#interfacesfieldfocusmd)\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:48](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L48) + +Atom with focus state of the fieldset, computed from all the fields in `fieldsList` + +*** + +#### init + +> **init**: [`Action`](#interfacesactionmd)\<\[[`DeepPartial`](#type-aliasesdeeppartialmd)\<[`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\>, `unknown`[]\>\], `void`\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:54](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L54) + +Action to set initial values for each field or field array in the fieldset + +*** + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[[`DeepPartial`](#type-aliasesdeeppartialmd)\<[`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\>, `unknown`[]\>\], `void`\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:57](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L57) + +Action to reset the state, the value, the validation, and the focus states. + +*** + +#### validation + +> **validation**: [`Computed`](#interfacescomputedmd)\<[`FieldValidation`](#interfacesfieldvalidationmd)\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:51](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L51) + +Atom with validation state of the fieldset, computed from all the fields in `fieldsList` + + + + +## Interface: FieldValidation + +Defined in: [packages/core/src/form/src/reatomField.ts:40](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L40) + +### Properties + +#### error + +> **error**: `undefined` \| `string` + +Defined in: [packages/core/src/form/src/reatomField.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L42) + +The field validation error text. + +*** + +#### meta + +> **meta**: `unknown` + +Defined in: [packages/core/src/form/src/reatomField.ts:45](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L45) + +The field validation meta. + +*** + +#### triggered + +> **triggered**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:48](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L48) + +The validation actuality status. + +*** + +#### validating + +> **validating**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:51](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L51) + +The field async validation status + + + + +## Interface: Fn() + +Defined in: [packages/core/src/utils.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L7) + +Generic function type representing any function that takes any parameters and returns any value. +Used throughout Reatom for typing function parameters and callbacks. + +> **Fn**(...`params`): `any` + +Defined in: [packages/core/src/utils.ts:8](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L8) + +Generic function type representing any function that takes any parameters and returns any value. +Used throughout Reatom for typing function parameters and callbacks. + +### Parameters + +#### params + +...`any`[] + +### Returns + +`any` + + + + +## Interface: FocusAtom() + +Defined in: [packages/core/src/form/src/reatomField.ts:54](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L54) + +Base atom interface for other userspace implementations. +This is the core interface that all atom-like objects implement, +providing the foundation for Reatom's reactivity system. + +### Extends + +- [`AtomLike`](#interfacesatomlikemd)\<[`FieldFocus`](#interfacesfieldfocusmd)\> + +> **FocusAtom**(...`params`): [`FieldFocus`](#interfacesfieldfocusmd) + +Defined in: [packages/core/src/form/src/reatomField.ts:54](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L54) + +Base atom interface for other userspace implementations. +This is the core interface that all atom-like objects implement, +providing the foundation for Reatom's reactivity system. + +### Parameters + +#### params + +...`any`[] + +Parameters to pass to the atom + +### Returns + +[`FieldFocus`](#interfacesfieldfocusmd) + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`FocusAtom`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`FocusAtom`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`extend`](#extend) + +*** + +#### in + +> **in**: [`Action`](#interfacesactionmd)\<\[\], [`FieldFocus`](#interfacesfieldfocusmd)\> + +Defined in: [packages/core/src/form/src/reatomField.ts:56](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L56) + +Action for handling field focus. + +*** + +#### out + +> **out**: [`Action`](#interfacesactionmd)\<\[\], [`FieldFocus`](#interfacesfieldfocusmd)\> + +Defined in: [packages/core/src/form/src/reatomField.ts:59](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L59) + +Action for handling field blur. + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`subscribe`](#subscribe) + + + + +## Interface: Form\ + +Defined in: [packages/core/src/form/src/reatomForm.ts:121](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L121) + +### Extends + +- [`FieldSet`](#interfacesfieldsetmd)\<`T`\> + +### Type Parameters + +#### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) + +### Properties + +#### fieldArraysList + +> **fieldArraysList**: [`Computed`](#interfacescomputedmd)\<[`FormFieldArrayAtom`](#type-aliasesformfieldarrayatommd)[]\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L42) + +Computed list of all the field arrays from the fields tree + +##### Inherited from + +[`FieldSet`](#interfacesfieldsetmd).[`fieldArraysList`](#fieldarrayslist) + +*** + +#### fields + +> **fields**: [`FormFields`](#type-aliasesformfieldsmd)\<`T`\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:36](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L36) + +Fields from the init state + +##### Inherited from + +[`FieldSet`](#interfacesfieldsetmd).[`fields`](#fields) + +*** + +#### fieldsList + +> **fieldsList**: [`Computed`](#interfacescomputedmd)\<[`FieldAtom`](#interfacesfieldatommd)\<`any`, `any`\>[]\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:39](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L39) + +Computed list of all the fields from the fields tree + +##### Inherited from + +[`FieldSet`](#interfacesfieldsetmd).[`fieldsList`](#fieldslist) + +*** + +#### fieldsState + +> **fieldsState**: [`Computed`](#interfacescomputedmd)\<[`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\>\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:45](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L45) + +Atom with the state of the fieldset, computed from all the fields in `fieldsList` + +##### Inherited from + +[`FieldSet`](#interfacesfieldsetmd).[`fieldsState`](#fieldsstate) + +*** + +#### focus + +> **focus**: [`Computed`](#interfacescomputedmd)\<[`FieldFocus`](#interfacesfieldfocusmd)\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:48](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L48) + +Atom with focus state of the fieldset, computed from all the fields in `fieldsList` + +##### Inherited from + +[`FieldSet`](#interfacesfieldsetmd).[`focus`](#focus) + +*** + +#### init + +> **init**: [`Action`](#interfacesactionmd)\<\[[`DeepPartial`](#type-aliasesdeeppartialmd)\<[`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\>, `unknown`[]\>\], `void`\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:54](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L54) + +Action to set initial values for each field or field array in the fieldset + +##### Inherited from + +[`FieldSet`](#interfacesfieldsetmd).[`init`](#init) + +*** + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[[`DeepPartial`](#type-aliasesdeeppartialmd)\<[`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\>, `unknown`[]\>\], `void`\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:57](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L57) + +Action to reset the state, the value, the validation, and the focus states. + +##### Inherited from + +[`FieldSet`](#interfacesfieldsetmd).[`reset`](#reset) + +*** + +#### submit + +> **submit**: [`SubmitAction`](#interfacessubmitactionmd) + +Defined in: [packages/core/src/form/src/reatomForm.ts:123](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L123) + +Submit async handler. It checks the validation of all the fields in `fieldsList`, calls the form's `validate` options handler, and then the `onSubmit` options handler. Check the additional options properties of async action: https://www.reatom.dev/package/async/. + +*** + +#### submitted + +> **submitted**: [`Computed`](#interfacescomputedmd)\<`boolean`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:126](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L126) + +Atom with submitted state of the form + +*** + +#### validation + +> **validation**: [`Computed`](#interfacescomputedmd)\<[`FieldValidation`](#interfacesfieldvalidationmd)\> + +Defined in: [packages/core/src/form/src/reatomFieldSet.ts:51](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomFieldSet.ts#L51) + +Atom with validation state of the fieldset, computed from all the fields in `fieldsList` + +##### Inherited from + +[`FieldSet`](#interfacesfieldsetmd).[`validation`](#validation) + + + + +## Interface: FormFieldOptions\ + +Defined in: [packages/core/src/form/src/reatomForm.ts:38](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L38) + +### Extends + +- [`FieldOptions`](#interfacesfieldoptionsmd)\<`State`, `Value`\> + +### Type Parameters + +#### State + +`State` = `any` + +#### Value + +`Value` = `State` + +### Properties + +#### contract()? + +> `optional` **contract**: (`state`) => `unknown` + +Defined in: [packages/core/src/form/src/reatomField.ts:172](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L172) + +The callback to validate field contract. + +##### Parameters + +###### state + +`State` + +##### Returns + +`unknown` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`contract`](#contract) + +*** + +#### disabled? + +> `optional` **disabled**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:178](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L178) + +Defines if the field is disabled by default. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`disabled`](#disabled) + +*** + +#### filter()? + +> `optional` **filter**: (`newValue`, `prevValue`) => `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:139](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L139) + +The callback to filter "value" changes (from the 'change' action). It should return 'false' to skip the update. +By default, it always returns `true`. + +##### Parameters + +###### newValue + +`Value` + +###### prevValue + +`Value` + +##### Returns + +`boolean` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`filter`](#filter) + +*** + +#### fromState()? + +> `optional` **fromState**: (`state`) => `Value` + +Defined in: [packages/core/src/form/src/reatomField.ts:145](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L145) + +The callback to compute the "value" data from the "state" data. +By default, it returns the "state" data without any transformations. + +##### Parameters + +###### state + +`State` + +##### Returns + +`Value` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`fromState`](#fromstate) + +*** + +#### initState + +> **initState**: `State` + +Defined in: [packages/core/src/form/src/reatomForm.ts:40](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L40) + +*** + +#### isDirty()? + +> `optional` **isDirty**: (`newValue`, `prevValue`) => `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:151](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L151) + +The callback used to determine whether the "value" has changed. +By default, it utilizes `isDeepEqual` from reatom/utils. + +##### Parameters + +###### newValue + +`Value` + +###### prevValue + +`Value` + +##### Returns + +`boolean` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`isDirty`](#isdirty) + +*** + +#### keepErrorDuringValidating? + +> `optional` **keepErrorDuringValidating**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:184](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L184) + +Defines the reset behavior of the validation state during async validation. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`keepErrorDuringValidating`](#keeperrorduringvalidating) + +*** + +#### keepErrorOnChange? + +> `optional` **keepErrorOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:191](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L191) + +Defines the reset behavior of the validation state on field change. +Useful if the validation is triggered on blur or submit only. + +##### Default + +```ts +!validateOnChange +``` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`keepErrorOnChange`](#keeperroronchange) + +*** + +#### name? + +> `optional` **name**: `string` + +Defined in: [packages/core/src/form/src/reatomField.ts:156](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L156) + +The name of the field and all related atoms and actions. + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`name`](#name) + +*** + +#### toState()? + +> `optional` **toState**: (`value`) => `State` + +Defined in: [packages/core/src/form/src/reatomField.ts:162](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L162) + +The callback to transform the "state" data from the "value" data from the `change` action. +By default, it returns the "value" data without any transformations. + +##### Parameters + +###### value + +`Value` + +##### Returns + +`State` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`toState`](#tostate) + +*** + +#### validate? + +> `optional` **validate**: [`FieldValidateOption`](#type-aliasesfieldvalidateoptionmd)\<`State`, `Value`\> + +Defined in: [packages/core/src/form/src/reatomField.ts:167](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L167) + +The callback to validate the field. + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`validate`](#validate) + +*** + +#### validateOnBlur? + +> `optional` **validateOnBlur**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:203](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L203) + +Defines if the validation should be triggered on the field blur. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`validateOnBlur`](#validateonblur) + +*** + +#### validateOnChange? + +> `optional` **validateOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomField.ts:197](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L197) + +Defines if the validation should be triggered with every field change. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`FieldOptions`](#interfacesfieldoptionsmd).[`validateOnChange`](#validateonchange) + + + + +## Interface: FormOptionsWithSchema\ + +Defined in: [packages/core/src/form/src/reatomForm.ts:161](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L161) + +### Extends + +- [`BaseFormOptions`](#interfacesbaseformoptionsmd) + +### Type Parameters + +#### State + +`State` + +### Properties + +#### keepErrorDuringValidating? + +> `optional` **keepErrorDuringValidating**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:139](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L139) + +Defines the default reset behavior of the validation state during async validation for all fields. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`keepErrorDuringValidating`](#keeperrorduringvalidating) + +*** + +#### keepErrorOnChange? + +> `optional` **keepErrorOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:146](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L146) + +Defines the default reset behavior of the validation state on field change for all fields. +Useful if the validation is triggered on blur or submit only. + +##### Default + +```ts +!validateOnChange +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`keepErrorOnChange`](#keeperroronchange) + +*** + +#### name? + +> `optional` **name**: `string` + +Defined in: [packages/core/src/form/src/reatomForm.ts:130](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L130) + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`name`](#name) + +*** + +#### onSubmit()? + +> `optional` **onSubmit**: (`state`) => `void` \| `Promise`\<`void`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:163](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L163) + +The callback to process valid form data, typed according to the schema + +##### Parameters + +###### state + +`State` + +##### Returns + +`void` \| `Promise`\<`void`\> + +*** + +#### resetOnSubmit? + +> `optional` **resetOnSubmit**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:133](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L133) + +Should reset the state after success submit? + +##### Default + +```ts +true +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`resetOnSubmit`](#resetonsubmit) + +*** + +#### schema + +> **schema**: `StandardSchemaV1`\<`State`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:169](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L169) + +The schema which supports StandardSchemaV1 specification to validate form fields. + +*** + +#### validate()? + +> `optional` **validate**: (`state`) => `any` + +Defined in: [packages/core/src/form/src/reatomForm.ts:166](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L166) + +The callback to validate form fields, typed according to the schema + +##### Parameters + +###### state + +`State` + +##### Returns + +`any` + +*** + +#### validateOnBlur? + +> `optional` **validateOnBlur**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:158](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L158) + +Defines if the validation should be triggered on the field blur by default for all fields. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`validateOnBlur`](#validateonblur) + +*** + +#### validateOnChange? + +> `optional` **validateOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:152](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L152) + +Defines if the validation should be triggered with every field change by default for all fields. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`validateOnChange`](#validateonchange) + + + + +## Interface: FormOptionsWithoutSchema\ + +Defined in: [packages/core/src/form/src/reatomForm.ts:172](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L172) + +### Extends + +- [`BaseFormOptions`](#interfacesbaseformoptionsmd) + +### Type Parameters + +#### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) + +### Properties + +#### keepErrorDuringValidating? + +> `optional` **keepErrorDuringValidating**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:139](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L139) + +Defines the default reset behavior of the validation state during async validation for all fields. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`keepErrorDuringValidating`](#keeperrorduringvalidating) + +*** + +#### keepErrorOnChange? + +> `optional` **keepErrorOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:146](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L146) + +Defines the default reset behavior of the validation state on field change for all fields. +Useful if the validation is triggered on blur or submit only. + +##### Default + +```ts +!validateOnChange +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`keepErrorOnChange`](#keeperroronchange) + +*** + +#### name? + +> `optional` **name**: `string` + +Defined in: [packages/core/src/form/src/reatomForm.ts:130](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L130) + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`name`](#name) + +*** + +#### onSubmit()? + +> `optional` **onSubmit**: (`state`) => `void` \| `Promise`\<`void`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:175](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L175) + +The callback to process valid form data, typed according to the raw form state + +##### Parameters + +###### state + +[`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\> + +##### Returns + +`void` \| `Promise`\<`void`\> + +*** + +#### resetOnSubmit? + +> `optional` **resetOnSubmit**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:133](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L133) + +Should reset the state after success submit? + +##### Default + +```ts +true +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`resetOnSubmit`](#resetonsubmit) + +*** + +#### schema? + +> `optional` **schema**: `undefined` + +Defined in: [packages/core/src/form/src/reatomForm.ts:181](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L181) + +Schema is explicitly disallowed or undefined in this variant + +*** + +#### validate()? + +> `optional` **validate**: (`state`) => `any` + +Defined in: [packages/core/src/form/src/reatomForm.ts:178](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L178) + +The callback to validate form fields, typed according to the raw form state + +##### Parameters + +###### state + +[`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\> + +##### Returns + +`any` + +*** + +#### validateOnBlur? + +> `optional` **validateOnBlur**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:158](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L158) + +Defines if the validation should be triggered on the field blur by default for all fields. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`validateOnBlur`](#validateonblur) + +*** + +#### validateOnChange? + +> `optional` **validateOnChange**: `boolean` + +Defined in: [packages/core/src/form/src/reatomForm.ts:152](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L152) + +Defines if the validation should be triggered with every field change by default for all fields. + +##### Default + +```ts +false +``` + +##### Inherited from + +[`BaseFormOptions`](#interfacesbaseformoptionsmd).[`validateOnChange`](#validateonchange) + + + + +## Interface: Frame\ + +Defined in: [packages/core/src/core/atom.ts:148](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L148) + +Call stack snapshot for an atom or action execution. + +Frames represent the execution context of an atom at a specific point in time, +tracking its current state, error status, and dependencies. + +### Extended by + +- [`ContextFrame`](#interfacescontextframemd) + +### Type Parameters + +#### State + +`State` = `any` + +The state type of the atom + +#### Params + +`Params` *extends* `any`[] = `any`[] + +The parameter types the atom accepts + +#### Payload + +`Payload` = `State` + +The return type when the atom is called + +### Properties + +#### atom + +> `readonly` **atom**: [`AtomLike`](#interfacesatomlikemd)\<`State`, `Params`, `Payload`\> + +Defined in: [packages/core/src/core/atom.ts:166](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L166) + +Reference to the atom itself + +*** + +#### error + +> **error**: `null` \| \{ \} + +Defined in: [packages/core/src/core/atom.ts:156](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L156) + +Error that occurred during atom evaluation, or null if successful + +*** + +#### pubs + +> **pubs**: \[`null` \| `Frame`\<`any`, `any`[], `any`\>, `...dependencies: Frame[]`\] + +Defined in: [packages/core/src/core/atom.ts:173](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L173) + +Immutable list of dependencies. +The first element is actualization flag and an imperative write cause. +Subsequent elements are the atom's dependencies. + +*** + +#### state + +> **state**: `State` + +Defined in: [packages/core/src/core/atom.ts:161](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L161) + +Current state of the atom + +*** + +#### subs + +> `readonly` **subs**: [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\>[] + +Defined in: [packages/core/src/core/atom.ts:178](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L178) + +Array of atoms that depend on this atom (subscribers). + +### Methods + +#### run() + +> **run**\<`I`, `O`\>(`fn`, ...`params`): `O` + +Defined in: [packages/core/src/core/atom.ts:188](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L188) + +Run the callback in this context. +DO NOT USE directly, use `wrap` instead to preserve context correctly. + +##### Type Parameters + +###### I + +`I` *extends* `any`[] + +###### O + +`O` + +##### Parameters + +###### fn + +(...`params`) => `O` + +Function to execute in this context + +###### params + +...`I` + +Parameters to pass to the function + +##### Returns + +`O` + +The result of the function call + + + + +## Interface: GenericExt()\ + +Defined in: [packages/core/src/core/extend.ts:26](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L26) + +Extension that preserves the exact type of the target atom/action. + +This specialized extension type ensures that when applied to an atom or action, +the complete original type information is preserved, including all generic parameters. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd) = [`AtomLike`](#interfacesatomlikemd) + +The type of atom or action the extension can be applied to + +> **GenericExt**\<`T`\>(`target`): `T` + +Defined in: [packages/core/src/core/extend.ts:27](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L27) + +Extension that preserves the exact type of the target atom/action. + +This specialized extension type ensures that when applied to an atom or action, +the complete original type information is preserved, including all generic parameters. + +### Type Parameters + +#### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +### Parameters + +#### target + +`T` + +### Returns + +`T` + + + + +## Interface: LazyAbortController + +Defined in: [packages/core/src/methods/abort.ts:51](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L51) + +Extended AbortController with unsubscribe capability + + LazyAbortController + +### Extends + +- `AbortController` + +### Properties + +#### unsubscribe + +> **unsubscribe**: [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/methods/abort.ts:55](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L55) + +Function to unsubscribe and clean up the controller + + + + +## Interface: LinkedList\ + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:34](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L34) + +### Extended by + +- [`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +### Type Parameters + +#### Node + +`Node` *extends* [`LLNode`](#type-aliasesllnodemd) = [`LLNode`](#type-aliasesllnodemd) + +### Properties + +#### changes + +> **changes**: `LLChanges`\<`Node`\>[] + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:39](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L39) + +*** + +#### head + +> **head**: `null` \| `Node` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:35](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L35) + +*** + +#### size + +> **size**: `number` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:37](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L37) + +*** + +#### tail + +> **tail**: `null` \| `Node` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:36](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L36) + +*** + +#### version + +> **version**: `number` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:38](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L38) + + + + +## Interface: LinkedListAtom()\ + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:49](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L49) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd)\<[`LinkedList`](#interfaceslinkedlistmd)\<[`LLNode`](#type-aliasesllnodemd)\<`Node`\>\>\> + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] = `any`[] + +The type of state stored in the atom + +#### Node + +`Node` *extends* [`Rec`](#type-aliasesrecmd) = [`Rec`](#type-aliasesrecmd) + +#### Key + +`Key` *extends* keyof `Node` = `never` + +### Call Signature + +> **LinkedListAtom**(`update`): [`LinkedList`](#interfaceslinkedlistmd) + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:49](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L49) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => [`LinkedList`](#interfaceslinkedlistmd) + +Function that takes the current state and returns a new state + +#### Returns + +[`LinkedList`](#interfaceslinkedlistmd) + +The new state value + +### Call Signature + +> **LinkedListAtom**(`newState`): [`LinkedList`](#interfaceslinkedlistmd) + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:49](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L49) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +[`LinkedList`](#interfaceslinkedlistmd) + +The new state value + +#### Returns + +[`LinkedList`](#interfaceslinkedlistmd) + +The new state value + +### Call Signature + +> **LinkedListAtom**(...`params`): [`LinkedList`](#interfaceslinkedlistmd) + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:49](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L49) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +[`LinkedList`](#interfaceslinkedlistmd) + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`__reatom`](#__reatom) + +*** + +#### \_\_reatomLinkedList + +> **\_\_reatomLinkedList**: `true` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:44](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L44) + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`__reatomLinkedList`](#__reatomlinkedlist) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`LinkedListAtom`\<`Params`, `Node`, `Key`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`actions`](#actions) + +*** + +#### array + +> **array**: [`Atom`](#interfacesatommd)\<[`LLNode`](#type-aliasesllnodemd)\<`Node`\>[]\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:46](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L46) + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`array`](#array) + +*** + +#### batch + +> **batch**: [`Action`](#interfacesactionmd)\<\[[`Fn`](#interfacesfnmd)\]\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:54](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L54) + +*** + +#### clear + +> **clear**: [`Action`](#interfacesactionmd)\<\[\], `void`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:60](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L60) + +*** + +#### create + +> **create**: [`Action`](#interfacesactionmd)\<`Params`, [`LLNode`](#type-aliasesllnodemd)\<`Node`\>\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:56](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L56) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`LinkedListAtom`\<`Params`, `Node`, `Key`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`extend`](#extend) + +*** + +#### find() + +> **find**: (`cb`) => `null` \| [`LLNode`](#type-aliasesllnodemd)\<`Node`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:62](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L62) + +##### Parameters + +###### cb + +(`node`) => `boolean` + +##### Returns + +`null` \| [`LLNode`](#type-aliasesllnodemd)\<`Node`\> + +*** + +#### initiateFromSnapshot() + +> **initiateFromSnapshot**: (`initSnapshot`) => [`LinkedList`](#interfaceslinkedlistmd)\<[`LLNode`](#type-aliasesllnodemd)\<`Node`\>\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:69](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L69) + +##### Parameters + +###### initSnapshot + +`Params`[] + +##### Returns + +[`LinkedList`](#interfaceslinkedlistmd)\<[`LLNode`](#type-aliasesllnodemd)\<`Node`\>\> + +*** + +#### initiateFromState() + +> **initiateFromState**: (`initState`) => [`LinkedList`](#interfaceslinkedlistmd)\<[`LLNode`](#type-aliasesllnodemd)\<`Node`\>\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:68](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L68) + +##### Parameters + +###### initState + +`Node`[] + +##### Returns + +[`LinkedList`](#interfaceslinkedlistmd)\<[`LLNode`](#type-aliasesllnodemd)\<`Node`\>\> + +*** + +#### map + +> **map**: `Key` *extends* `never` ? `never` : [`Atom`](#interfacesatommd)\<`Map`\<`State`\<`Node`\[`Key`\]\>, [`LLNode`](#type-aliasesllnodemd)\<`Node`\>\>\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:66](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L66) + +This lazy map is useful for working with serializable identifier, +but it is not recommended to use it for large (thousands elements) lists + +*** + +#### move + +> **move**: [`Action`](#interfacesactionmd)\<\[[`LLNode`](#type-aliasesllnodemd)\<`Node`\>, `null` \| [`LLNode`](#type-aliasesllnodemd)\<`Node`\>\], `void`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:59](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L59) + +*** + +#### reatomMap() + +> **reatomMap**: \<`T`\>(`cb`, `options?`) => [`LinkedListDerivedAtom`](#interfaceslinkedlistderivedatommd)\<[`LLNode`](#type-aliasesllnodemd)\<`Node`\>, [`LLNode`](#type-aliasesllnodemd)\<`T`\>\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:73](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L73) + +##### Type Parameters + +###### T + +`T` *extends* [`Rec`](#type-aliasesrecmd) + +##### Parameters + +###### cb + +(`node`) => `T` + +###### options? + +`string` | \{ `name?`: `string`; `onClear?`: (`lastState`) => `void`; `onCreate?`: (`node`) => `void`; `onMove?`: (`node`) => `void`; `onRemove?`: (`node`, `origin`) => `void`; `onSwap?`: (`payload`) => `void`; \} + +##### Returns + +[`LinkedListDerivedAtom`](#interfaceslinkedlistderivedatommd)\<[`LLNode`](#type-aliasesllnodemd)\<`Node`\>, [`LLNode`](#type-aliasesllnodemd)\<`T`\>\> + +*** + +#### remove + +> **remove**: [`Action`](#interfacesactionmd)\<\[[`LLNode`](#type-aliasesllnodemd)\<`Node`\>\], `boolean`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:57](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L57) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`subscribe`](#subscribe) + +*** + +#### swap + +> **swap**: [`Action`](#interfacesactionmd)\<\[[`LLNode`](#type-aliasesllnodemd)\<`Node`\>, [`LLNode`](#type-aliasesllnodemd)\<`Node`\>\], `void`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:58](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L58) + + + + +## Interface: LinkedListDerivedAtom()\ + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:110](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L110) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd)\<[`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd)\<`Node`, `T`\>\> + +### Type Parameters + +#### Node + +`Node` *extends* [`LLNode`](#type-aliasesllnodemd) + +The type of state stored in the atom + +#### T + +`T` *extends* [`LLNode`](#type-aliasesllnodemd) + +### Call Signature + +> **LinkedListDerivedAtom**(`update`): [`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:110](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L110) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => [`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +Function that takes the current state and returns a new state + +#### Returns + +[`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +The new state value + +### Call Signature + +> **LinkedListDerivedAtom**(`newState`): [`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:110](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L110) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +[`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +The new state value + +#### Returns + +[`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +The new state value + +### Call Signature + +> **LinkedListDerivedAtom**(...`params`): [`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:110](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L110) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +[`LinkedListDerivedState`](#interfaceslinkedlistderivedstatemd) + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`__reatom`](#__reatom) + +*** + +#### \_\_reatomLinkedList + +> **\_\_reatomLinkedList**: `true` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:44](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L44) + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`__reatomLinkedList`](#__reatomlinkedlist) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`LinkedListDerivedAtom`\<`Node`, `T`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`actions`](#actions) + +*** + +#### array + +> **array**: [`Atom`](#interfacesatommd)\<`T`[]\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:46](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L46) + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`array`](#array) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`LinkedListDerivedAtom`\<`Node`, `T`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd).[`subscribe`](#subscribe) + + + + +## Interface: LinkedListDerivedState\ + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:105](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L105) + +### Extends + +- [`LinkedList`](#interfaceslinkedlistmd)\<`T`\> + +### Type Parameters + +#### Node + +`Node` *extends* [`LLNode`](#type-aliasesllnodemd) + +#### T + +`T` *extends* [`LLNode`](#type-aliasesllnodemd) + +### Properties + +#### changes + +> **changes**: `LLChanges`\<`T`\>[] + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:39](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L39) + +##### Inherited from + +[`LinkedList`](#interfaceslinkedlistmd).[`changes`](#changes) + +*** + +#### head + +> **head**: `null` \| `T` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:35](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L35) + +##### Inherited from + +[`LinkedList`](#interfaceslinkedlistmd).[`head`](#head) + +*** + +#### map + +> **map**: `WeakMap`\<`Node`, `T`\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:107](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L107) + +*** + +#### size + +> **size**: `number` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:37](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L37) + +##### Inherited from + +[`LinkedList`](#interfaceslinkedlistmd).[`size`](#size) + +*** + +#### tail + +> **tail**: `null` \| `T` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:36](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L36) + +##### Inherited from + +[`LinkedList`](#interfaceslinkedlistmd).[`tail`](#tail) + +*** + +#### version + +> **version**: `number` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:38](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L38) + +##### Inherited from + +[`LinkedList`](#interfaceslinkedlistmd).[`version`](#version) + + + + +## Interface: LinkedListLikeAtom()\ + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L42) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`Atom`](#interfacesatommd)\<`T`\> + +### Extended by + +- [`LinkedListAtom`](#interfaceslinkedlistatommd) +- [`LinkedListDerivedAtom`](#interfaceslinkedlistderivedatommd) + +### Type Parameters + +#### T + +`T` *extends* [`LinkedList`](#interfaceslinkedlistmd) = [`LinkedList`](#interfaceslinkedlistmd) + +The type of state stored in the atom + +### Call Signature + +> **LinkedListLikeAtom**(`update`): `T` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L42) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `T` + +Function that takes the current state and returns a new state + +#### Returns + +`T` + +The new state value + +### Call Signature + +> **LinkedListLikeAtom**(`newState`): `T` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L42) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`T` + +The new state value + +#### Returns + +`T` + +The new state value + +### Call Signature + +> **LinkedListLikeAtom**(...`params`): `T` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L42) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`T` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### \_\_reatomLinkedList + +> **\_\_reatomLinkedList**: `true` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:44](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L44) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`LinkedListLikeAtom`\<`T`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### array + +> **array**: [`Atom`](#interfacesatommd)\<`T` *extends* [`LinkedList`](#interfaceslinkedlistmd)\<`LLNode`\> ? `LLNode` : `never`[]\> + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:46](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L46) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`LinkedListLikeAtom`\<`T`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + + + + +## Interface: MapAtom()\ + +Defined in: [packages/core/src/primitives/reatomMap.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`Atom`](#interfacesatommd)\<`Map`\<`Key`, `Value`\>\> + +### Type Parameters + +#### Key + +`Key` + +The type of state stored in the atom + +#### Value + +`Value` + +### Call Signature + +> **MapAtom**(`update`): `Map` + +Defined in: [packages/core/src/primitives/reatomMap.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `Map` + +Function that takes the current state and returns a new state + +#### Returns + +`Map` + +The new state value + +### Call Signature + +> **MapAtom**(`newState`): `Map` + +Defined in: [packages/core/src/primitives/reatomMap.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`Map` + +The new state value + +#### Returns + +`Map` + +The new state value + +### Call Signature + +> **MapAtom**(...`params`): `Map` + +Defined in: [packages/core/src/primitives/reatomMap.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`Map` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`MapAtom`\<`Key`, `Value`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### clear + +> **clear**: [`Action`](#interfacesactionmd)\<\[\], `Map`\<`Key`, `Value`\>\> + +Defined in: [packages/core/src/primitives/reatomMap.ts:8](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L8) + +*** + +#### delete + +> **delete**: [`Action`](#interfacesactionmd)\<\[`Key`\], `Map`\<`Key`, `Value`\>\> + +Defined in: [packages/core/src/primitives/reatomMap.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L7) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`MapAtom`\<`Key`, `Value`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### getOrCreate() + +> **getOrCreate**: (`key`, `creator`) => `Value` + +Defined in: [packages/core/src/primitives/reatomMap.ts:5](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L5) + +##### Parameters + +###### key + +`Key` + +###### creator + +() => `Value` + +##### Returns + +`Value` + +*** + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[\], `Map`\<`Key`, `Value`\>\> + +Defined in: [packages/core/src/primitives/reatomMap.ts:9](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L9) + +*** + +#### set + +> **set**: [`Action`](#interfacesactionmd)\<\[`Key`, `Value`\], `Map`\<`Key`, `Value`\>\> + +Defined in: [packages/core/src/primitives/reatomMap.ts:6](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L6) + +*** + +#### size + +> **size**: [`Computed`](#interfacescomputedmd)\<`number`\> + +Defined in: [packages/core/src/primitives/reatomMap.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomMap.ts#L10) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + + + + +## Interface: Newable\ + +Defined in: [packages/core/src/utils.ts:81](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L81) + +Represents a constructor function that can be instantiated with the new operator. + +### Type Parameters + +#### ReturnType + +`ReturnType` + +The type of object that will be created when instantiated + +### Constructors + +#### Constructor + +> **new Newable**(...`params`): `ReturnType` + +Defined in: [packages/core/src/utils.ts:82](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L82) + +##### Parameters + +###### params + +...`any`[] + +##### Returns + +`ReturnType` + + + + +## Interface: NumberAtom() + +Defined in: [packages/core/src/primitives/reatomNumber.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`Atom`](#interfacesatommd)\<`number`\> + +### Call Signature + +> **NumberAtom**(`update`): `number` + +Defined in: [packages/core/src/primitives/reatomNumber.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `number` + +Function that takes the current state and returns a new state + +#### Returns + +`number` + +The new state value + +### Call Signature + +> **NumberAtom**(`newState`): `number` + +Defined in: [packages/core/src/primitives/reatomNumber.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`number` + +The new state value + +#### Returns + +`number` + +The new state value + +### Call Signature + +> **NumberAtom**(...`params`): `number` + +Defined in: [packages/core/src/primitives/reatomNumber.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`number` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`NumberAtom`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### decrement + +> **decrement**: [`Action`](#interfacesactionmd)\<\[`number`\], `number`\> + +Defined in: [packages/core/src/primitives/reatomNumber.ts:6](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L6) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`NumberAtom`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### increment + +> **increment**: [`Action`](#interfacesactionmd)\<\[`number`\], `number`\> + +Defined in: [packages/core/src/primitives/reatomNumber.ts:5](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L5) + +*** + +#### random + +> **random**: [`Action`](#interfacesactionmd)\<\[`number`, `number`\], `number`\> + +Defined in: [packages/core/src/primitives/reatomNumber.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L7) + +*** + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[\], `number`\> + +Defined in: [packages/core/src/primitives/reatomNumber.ts:8](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomNumber.ts#L8) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + + + + +## Interface: ParamsExt()\ + +Defined in: [packages/core/src/core/extend.ts:255](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L255) + +Extension for customizing parameter handling in atoms and actions. + +This extension type allows transforming the parameters an atom or action +accepts, enabling custom parameter parsing, validation, or transformation. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd) = [`AtomLike`](#interfacesatomlikemd) + +The atom or action type being extended + +#### Params + +`Params` *extends* `any`[] = `any`[] + +The new parameter types the atom/action will accept + +> **ParamsExt**(`target`): `Target` *extends* [`Action`](#interfacesactionmd)\<`ActionParams`, `Payload`\> ? `ActionParams` *extends* \[`any`\] ? [`Action`](#interfacesactionmd)\<`Params`, `Payload`\> : `object` & [`Action`](#interfacesactionmd)\<`unknown`[], `unknown`\> : [`AtomLike`](#interfacesatomlikemd)\<[`AtomState`](#type-aliasesatomstatemd)\<`Target`\>, \[\] \| `Params`, [`AtomState`](#type-aliasesatomstatemd)\<`Target`\>\> & \{ \[K in string \| number \| symbol\]: Target\[K\] \} + +Defined in: [packages/core/src/core/extend.ts:259](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L259) + +Extension for customizing parameter handling in atoms and actions. + +This extension type allows transforming the parameters an atom or action +accepts, enabling custom parameter parsing, validation, or transformation. + +### Parameters + +#### target + +`Target` + +### Returns + +`Target` *extends* [`Action`](#interfacesactionmd)\<`ActionParams`, `Payload`\> ? `ActionParams` *extends* \[`any`\] ? [`Action`](#interfacesactionmd)\<`Params`, `Payload`\> : `object` & [`Action`](#interfacesactionmd)\<`unknown`[], `unknown`\> : [`AtomLike`](#interfacesatomlikemd)\<[`AtomState`](#type-aliasesatomstatemd)\<`Target`\>, \[\] \| `Params`, [`AtomState`](#type-aliasesatomstatemd)\<`Target`\>\> & \{ \[K in string \| number \| symbol\]: Target\[K\] \} + + + + +## Interface: Queue + +Defined in: [packages/core/src/core/atom.ts:202](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L202) + +Task queue for scheduled operations. + +### Extends + +- `Array`\<[`Fn`](#interfacesfnmd)\> + +### Indexable + +\[`n`: `number`\]: [`Fn`](#interfacesfnmd) + + + + +## Interface: RecordAtom()\ + +Defined in: [packages/core/src/primitives/reatomRecord.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomRecord.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`Atom`](#interfacesatommd)\<`T`\> + +### Type Parameters + +#### T + +`T` *extends* [`Rec`](#type-aliasesrecmd) + +The type of state stored in the atom + +### Call Signature + +> **RecordAtom**(`update`): `T` + +Defined in: [packages/core/src/primitives/reatomRecord.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomRecord.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `T` + +Function that takes the current state and returns a new state + +#### Returns + +`T` + +The new state value + +### Call Signature + +> **RecordAtom**(`newState`): `T` + +Defined in: [packages/core/src/primitives/reatomRecord.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomRecord.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`T` + +The new state value + +#### Returns + +`T` + +The new state value + +### Call Signature + +> **RecordAtom**(...`params`): `T` + +Defined in: [packages/core/src/primitives/reatomRecord.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomRecord.ts#L4) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`T` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`RecordAtom`\<`T`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`RecordAtom`\<`T`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### merge + +> **merge**: [`Action`](#interfacesactionmd)\<\[`Partial`\<`T`\>\], `T`\> + +Defined in: [packages/core/src/primitives/reatomRecord.ts:5](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomRecord.ts#L5) + +*** + +#### omit + +> **omit**: [`Action`](#interfacesactionmd)\ + +Defined in: [packages/core/src/primitives/reatomRecord.ts:6](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomRecord.ts#L6) + +*** + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\ + +Defined in: [packages/core/src/primitives/reatomRecord.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomRecord.ts#L7) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + + + + +## Interface: RouteAtom()\ + +Defined in: [packages/core/src/web/url.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L42) + +Derived state container. + +A computed atom automatically tracks dependencies and recalculates only when +those dependencies change. The calculation is performed lazily, only when the +computed value is read AND subscribed to. + +### Extends + +- [`Computed`](#interfacescomputedmd)\<`null` \| `PathParams`\<`Path`\>\> + +### Type Parameters + +#### Path + +`Path` *extends* `string` = `string` + +The type of derived state + +> **RouteAtom**(...`params`): `null` \| [`Plain`](#type-aliasesplainmd)\<`_PathParams`\<`Path`\>\> + +Defined in: [packages/core/src/web/url.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L42) + +Derived state container. + +A computed atom automatically tracks dependencies and recalculates only when +those dependencies change. The calculation is performed lazily, only when the +computed value is read AND subscribed to. + +### Parameters + +#### params + +...\[\] + +Parameters to pass to the atom + +### Returns + +`null` \| [`Plain`](#type-aliasesplainmd)\<`_PathParams`\<`Path`\>\> + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`RouteAtom`\<`Path`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`actions`](#actions) + +*** + +#### exact + +> **exact**: [`Computed`](#interfacescomputedmd)\<`boolean`\> + +Defined in: [packages/core/src/web/url.ts:57](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L57) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`RouteAtom`\<`Path`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`extend`](#extend) + +*** + +#### go + +> **go**: [`Action`](#interfacesactionmd)\<`Path` *extends* `` `${string}:${string}` `` ? \[[`Plain`](#type-aliasesplainmd)\<`_PathParams`\<`Path`\<`Path`\>\>\>, [`Rec`](#type-aliasesrecmd), `boolean`\] : \[`void`, [`Rec`](#type-aliasesrecmd), `boolean`\], `URL`\> + +Defined in: [packages/core/src/web/url.ts:44](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L44) + +*** + +#### path() + +> **path**: (`params`) => `string` + +Defined in: [packages/core/src/web/url.ts:53](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L53) + +##### Parameters + +###### params + +`Path` *extends* `` `${string}:${string}` `` ? [`Plain`](#type-aliasesplainmd)\<`_PathParams`\<`Path`\<`Path`\>\>\> : `void` + +##### Returns + +`string` + +*** + +#### pattern + +> **pattern**: `Path` + +Defined in: [packages/core/src/web/url.ts:51](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L51) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`subscribe`](#subscribe) + + + + +## Interface: SearchParamsAtom() + +Defined in: [packages/core/src/web/url.ts:133](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L133) + +Interface for the search parameters atom. + +### Extends + +- [`Computed`](#interfacescomputedmd)\<`Record`\<`string`, `string`\>\> + +> **SearchParamsAtom**(...`params`): `Record` + +Defined in: [packages/core/src/web/url.ts:133](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L133) + +Interface for the search parameters atom. + +### Parameters + +#### params + +...\[\] + +Parameters to pass to the atom + +### Returns + +`Record` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`SearchParamsAtom`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`actions`](#actions) + +*** + +#### del + +> **del**: [`Action`](#interfacesactionmd)\<\[`string`, `boolean`\], `void`\> + +Defined in: [packages/core/src/web/url.ts:147](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L147) + +Delete a search parameter. + +##### Param + +Parameter name to delete + +##### Param + +Whether to replace the current history entry + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`SearchParamsAtom`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`extend`](#extend) + +*** + +#### set + +> **set**: [`Action`](#interfacesactionmd)\<\[`string`, `string`, `boolean`\], `void`\> + +Defined in: [packages/core/src/web/url.ts:140](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L140) + +Set a search parameter. + +##### Param + +Parameter name + +##### Param + +Parameter value + +##### Param + +Whether to replace the current history entry + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Computed`](#interfacescomputedmd).[`subscribe`](#subscribe) + +### Methods + +#### lens() + +##### Call Signature + +> **lens**\<`T`\>(`key`, `parse?`): [`Atom`](#interfacesatommd)\<`T`\> + +Defined in: [packages/core/src/web/url.ts:154](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L154) + +Create an atom that synchronizes with a specific search parameter. + +###### Type Parameters + +####### T + +`T` = `string` + +###### Parameters + +####### key + +`string` + +Parameter name + +####### parse? + +(`value?`) => `T` + +Function to parse parameter string value to desired type + +###### Returns + +[`Atom`](#interfacesatommd)\<`T`\> + +##### Call Signature + +> **lens**\<`T`\>(`key`, `options`): [`Atom`](#interfacesatommd)\<`T`\> + +Defined in: [packages/core/src/web/url.ts:166](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L166) + +Create an atom that synchronizes with a specific search parameter using advanced options. + +###### Type Parameters + +####### T + +`T` = `string` + +###### Parameters + +####### key + +`string` + +Parameter name + +####### options + +Configuration options for the lens + +####### name? + +`string` + +Optional name of the created atom + +####### parse? + +(`value?`) => `T` + +Optional function to parse the parameter string value into the desired type + +####### path? + +`string` + +Optional path to limit the scope of synchronization to specific URL paths + +####### replace? + +`boolean` + +Optional boolean to specify if history entries should be replaced (default: false) + +####### serialize? + +(`value`) => `undefined` \| `string` + +Optional function to serialize the value back into a string + +###### Returns + +[`Atom`](#interfacesatommd)\<`T`\> + + + + +## Interface: SetAtom()\ + +Defined in: [packages/core/src/primitives/reatomSet.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L10) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +### Extends + +- [`Atom`](#interfacesatommd)\<`Set`\<`T`\>\> + +### Type Parameters + +#### T + +`T` + +The type of state stored in the atom + +### Call Signature + +> **SetAtom**(`update`): `Set` + +Defined in: [packages/core/src/primitives/reatomSet.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L10) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### update + +(`state`) => `Set` + +Function that takes the current state and returns a new state + +#### Returns + +`Set` + +The new state value + +### Call Signature + +> **SetAtom**(`newState`): `Set` + +Defined in: [packages/core/src/primitives/reatomSet.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L10) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### newState + +`Set` + +The new state value + +#### Returns + +`Set` + +The new state value + +### Call Signature + +> **SetAtom**(...`params`): `Set` + +Defined in: [packages/core/src/primitives/reatomSet.ts:10](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L10) + +Base changeable state container. + +Atom is the core primitive for storing and updating mutable state in Reatom. +It can be called to retrieve its current state or update it with a new value +or update function. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`Set` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`SetAtom`\<`T`\>\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### add + +> **add**: [`Action`](#interfacesactionmd)\<\[`T`\], `Set`\<`T`\>\> + +Defined in: [packages/core/src/primitives/reatomSet.ts:11](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L11) + +*** + +#### clear + +> **clear**: [`Action`](#interfacesactionmd)\<\[\], `Set`\<`T`\>\> + +Defined in: [packages/core/src/primitives/reatomSet.ts:14](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L14) + +*** + +#### delete + +> **delete**: [`Action`](#interfacesactionmd)\<\[`T`\], `Set`\<`T`\>\> + +Defined in: [packages/core/src/primitives/reatomSet.ts:12](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L12) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`SetAtom`\<`T`\>\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[\], `Set`\<`T`\>\> + +Defined in: [packages/core/src/primitives/reatomSet.ts:15](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L15) + +*** + +#### size + +> **size**: [`Computed`](#interfacescomputedmd)\<`number`\> + +Defined in: [packages/core/src/primitives/reatomSet.ts:16](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L16) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + +*** + +#### toggle + +> **toggle**: [`Action`](#interfacesactionmd)\<\[`T`\], `Set`\<`T`\>\> + +Defined in: [packages/core/src/primitives/reatomSet.ts:13](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomSet.ts#L13) + + + + +## Interface: Store + +Defined in: [packages/core/src/core/atom.ts:210](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L210) + +Atom's state mappings for context. + +The Store maps atoms to their frames in the current context, +allowing atoms to retrieve their state and dependencies. + +### Extends + +- `WeakMap`\<[`Atom`](#interfacesatommd), [`Frame`](#interfacesframemd)\> + +### Methods + +#### get() + +> **get**\<`State`, `Params`, `Payload`\>(`target`): `undefined` \| [`Frame`](#interfacesframemd)\<`State`, `Params`, `Payload`\> + +Defined in: [packages/core/src/core/atom.ts:217](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L217) + +Get the frame for an atom in the current context. + +##### Type Parameters + +###### State + +`State` + +###### Params + +`Params` *extends* `any`[] + +###### Payload + +`Payload` + +##### Parameters + +###### target + +[`AtomLike`](#interfacesatomlikemd)\<`State`, `Params`, `Payload`\> + +The atom to get the frame for + +##### Returns + +`undefined` \| [`Frame`](#interfacesframemd)\<`State`, `Params`, `Payload`\> + +The frame for the atom, or undefined if not found + +##### Overrides + +`WeakMap.get` + +*** + +#### set() + +> **set**\<`State`, `Params`, `Payload`\>(`target`, `frame`): `this` + +Defined in: [packages/core/src/core/atom.ts:228](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L228) + +Set the frame for an atom in the current context. + +##### Type Parameters + +###### State + +`State` + +###### Params + +`Params` *extends* `any`[] + +###### Payload + +`Payload` + +##### Parameters + +###### target + +[`AtomLike`](#interfacesatomlikemd)\<`State`, `Params`, `Payload`\> + +The atom to set the frame for + +###### frame + +[`Frame`](#interfacesframemd)\<`State`, `Params`, `Payload`\> + +The frame to associate with the atom + +##### Returns + +`this` + +This store instance + +##### Overrides + +`WeakMap.set` + + + + +## Interface: SubmitAction() + +Defined in: [packages/core/src/form/src/reatomForm.ts:117](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L117) + +Logic container with atom features + +### Extends + +- [`Action`](#interfacesactionmd)\<\[\], `Promise`\<`void`\>\> + +> **SubmitAction**(...`params`): `Promise` + +Defined in: [packages/core/src/form/src/reatomForm.ts:117](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L117) + +Logic container with atom features + +### Parameters + +#### params + +...\[\] + +Parameters to pass to the atom + +### Returns + +`Promise` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Action`](#interfacesactionmd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`SubmitAction`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Action`](#interfacesactionmd).[`actions`](#actions) + +*** + +#### error + +> **error**: [`Computed`](#interfacescomputedmd)\<`undefined` \| `Error`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:118](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L118) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`SubmitAction`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Action`](#interfacesactionmd).[`extend`](#extend) + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Action`](#interfacesactionmd).[`subscribe`](#subscribe) + + + + +## Interface: Unsubscribe() + +Defined in: [packages/core/src/utils.ts:23](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L23) + +Function interface for unsubscribing from subscriptions. +Used consistently throughout Reatom for cleanup functions. + +> **Unsubscribe**(): `void` + +Defined in: [packages/core/src/utils.ts:24](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L24) + +Function interface for unsubscribing from subscriptions. +Used consistently throughout Reatom for cleanup functions. + +### Returns + +`void` + + + + +## Interface: UrlAtom() + +Defined in: [packages/core/src/web/url.ts:69](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L69) + +URL atom interface that extends the base Atom type. + +### Extends + +- [`Atom`](#interfacesatommd)\<`URL`\> + +### Call Signature + +> **UrlAtom**(`url`, `replace?`): `URL` + +Defined in: [packages/core/src/web/url.ts:75](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L75) + +URL atom interface that extends the base Atom type. + +#### Parameters + +##### url + +`URL` + +New URL to set + +##### replace? + +`boolean` + +Whether to replace the current history entry + +#### Returns + +`URL` + +### Call Signature + +> **UrlAtom**(`update`, `replace?`): `URL` + +Defined in: [packages/core/src/web/url.ts:82](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L82) + +URL atom interface that extends the base Atom type. + +#### Parameters + +##### update + +(`url`) => `URL` + +Function that takes current URL and returns new URL + +##### replace? + +`boolean` + +Whether to replace the current history entry + +#### Returns + +`URL` + +### Call Signature + +> **UrlAtom**(`update`): `URL` + +Defined in: [packages/core/src/web/url.ts:69](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L69) + +URL atom interface that extends the base Atom type. + +#### Parameters + +##### update + +(`state`) => `URL` + +Function that takes the current state and returns a new state + +#### Returns + +`URL` + +The new state value + +### Call Signature + +> **UrlAtom**(`newState`): `URL` + +Defined in: [packages/core/src/web/url.ts:69](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L69) + +URL atom interface that extends the base Atom type. + +#### Parameters + +##### newState + +`URL` + +The new state value + +#### Returns + +`URL` + +The new state value + +### Call Signature + +> **UrlAtom**(...`params`): `URL` + +Defined in: [packages/core/src/web/url.ts:69](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L69) + +URL atom interface that extends the base Atom type. + +#### Parameters + +##### params + +...\[\] + +Parameters to pass to the atom + +#### Returns + +`URL` + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`UrlAtom`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`actions`](#actions) + +*** + +#### catchLinks + +> **catchLinks**: [`Atom`](#interfacesatommd)\<`boolean`\> + +Defined in: [packages/core/src/web/url.ts:101](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L101) + +Whether to intercept link clicks for SPA navigation. + +##### Default + +```ts +true +``` + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`UrlAtom`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`Atom`](#interfacesatommd).[`extend`](#extend) + +*** + +#### go() + +> **go**: (`path`, `replace?`) => `URL` + +Defined in: [packages/core/src/web/url.ts:89](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L89) + +Navigate to a new path. + +##### Parameters + +###### path + +`string` + +The path to navigate to + +###### replace? + +`boolean` + +Whether to replace the current history entry + +##### Returns + +`URL` + +*** + +#### init + +> **init**: [`Action`](#interfacesactionmd)\<\[\], `URL`\> & [`AbortExt`](#interfacesabortextmd) + +Defined in: [packages/core/src/web/url.ts:108](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L108) + +This initialize DOM subscriptions and returns the current URL. +To prevent this action calling (in server on other environments without DOM), +just call `urlAtom` with your custom URL before it will be reded in other places. + +*** + +#### match() + +> **match**: (`path`) => [`Computed`](#interfacescomputedmd)\<`boolean`\> + +Defined in: [packages/core/src/web/url.ts:95](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L95) + +Create a computed atom that checks if the current path matches a given pattern. + +##### Parameters + +###### path + +`string` + +The path pattern to match against + +##### Returns + +[`Computed`](#interfacescomputedmd)\<`boolean`\> + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`Atom`](#interfacesatommd).[`subscribe`](#subscribe) + +*** + +#### sync + +> **sync**: [`Atom`](#interfacesatommd)\<(`url`, `replace?`) => `void`\> + +Defined in: [packages/core/src/web/url.ts:114](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L114) + +Synchronization callback to push URL state updates to the `history`. +Replace with `noop` to disable syncing. + +*** + +#### syncFromSource + +> **syncFromSource**: [`Action`](#interfacesactionmd)\<\[`URL`, `boolean`\], `URL`\> + +Defined in: [packages/core/src/web/url.ts:122](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L122) + +For integrations use: put the new URL from the the source of truth to `urlAtom`, +without syncing it back (calling callback in `sync` Atom). + +##### Param + +The URL from the source + +##### Param + +Whether to replace the current history entry + +### Methods + +#### route() + +> **route**\<`Path`\>(`pattern`): [`RouteAtom`](#interfacesrouteatommd)\<`Path`\> + +Defined in: [packages/core/src/web/url.ts:127](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L127) + +Create a computed atom representing a specific route pattern. + +##### Type Parameters + +###### Path + +`Path` *extends* `string` + +##### Parameters + +###### pattern + +`Path` + +The route pattern (e.g., '/users/:userId') + +##### Returns + +[`RouteAtom`](#interfacesrouteatommd)\<`Path`\> + + + + +## Interface: ValidationAtom() + +Defined in: [packages/core/src/form/src/reatomField.ts:62](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L62) + +Base atom interface for other userspace implementations. +This is the core interface that all atom-like objects implement, +providing the foundation for Reatom's reactivity system. + +### Extends + +- [`AtomLike`](#interfacesatomlikemd)\<[`FieldValidation`](#interfacesfieldvalidationmd)\> + +> **ValidationAtom**(...`params`): [`FieldValidation`](#interfacesfieldvalidationmd) + +Defined in: [packages/core/src/form/src/reatomField.ts:62](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L62) + +Base atom interface for other userspace implementations. +This is the core interface that all atom-like objects implement, +providing the foundation for Reatom's reactivity system. + +### Parameters + +#### params + +...`any`[] + +Parameters to pass to the atom + +### Returns + +[`FieldValidation`](#interfacesfieldvalidationmd) + +The atom's payload (typically its current state) + +### Properties + +#### \_\_reatom + +> **\_\_reatom**: [`AtomMeta`](#interfacesatommetamd) + +Defined in: [packages/core/src/core/atom.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L99) + +Reference to the atom's internal metadata. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`__reatom`](#__reatom) + +*** + +#### actions + +> **actions**: [`Actions`](#type-aliasesactionsmd)\<`ValidationAtom`\> + +Defined in: [packages/core/src/core/atom.ts:78](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L78) + +Bind methods to the atom to extend its functionality. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`actions`](#actions) + +*** + +#### extend + +> **extend**: [`Extend`](#interfacesextendmd)\<`ValidationAtom`\> + +Defined in: [packages/core/src/core/atom.ts:84](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L84) + +Extension system to add capabilities to atoms. +Allows adding middleware, methods, or other functionality to modify atom behavior. + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`extend`](#extend) + +*** + +#### setError + +> **setError**: [`Action`](#interfacesactionmd)\<\[`string`\], [`FieldValidation`](#interfacesfieldvalidationmd)\> + +Defined in: [packages/core/src/form/src/reatomField.ts:67](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L67) + +Action to set an error for the field + +*** + +#### subscribe() + +> **subscribe**: (`cb?`) => [`Unsubscribe`](#interfacesunsubscribemd) + +Defined in: [packages/core/src/core/atom.ts:94](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L94) + +Subscribe to state changes, with the first call happening immediately. +When a subscriber is added, the callback is immediately invoked with the current state. +After that, it's called whenever the atom's state changes. + +##### Parameters + +###### cb? + +(`state`) => `any` + +Callback function that receives the atom's state when it changes + +##### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +An unsubscribe function that removes the subscription when called + +##### Inherited from + +[`AtomLike`](#interfacesatomlikemd).[`subscribe`](#subscribe) + +*** + +#### trigger + +> **trigger**: [`Action`](#interfacesactionmd)\<\[\], [`FieldValidation`](#interfacesfieldvalidationmd)\> & [`AbortExt`](#interfacesabortextmd) + +Defined in: [packages/core/src/form/src/reatomField.ts:64](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L64) + +Action to trigger field validation. + + + + +## Interface: Variable\ + +Defined in: [packages/core/src/methods/variable.ts:14](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L14) + +Interface for context variables in Reatom + +Variables maintain values within the context of a computation tree, +allowing for context-aware state similar to React's Context API but +with more granular control and integration with Reatom's reactive system. + +### Extended by + +- [`AbortVar`](#interfacesabortvarmd) + +### Type Parameters + +#### Params + +`Params` *extends* `any`[] = `any`[] + +Types of parameters accepted by the setter function + +#### Payload + +`Payload` = `any` + +Type of the stored value + +### Methods + +#### find() + +> **find**\<`T`\>(`cb?`, `frame?`): `undefined` \| `T` + +Defined in: [packages/core/src/methods/variable.ts:48](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L48) + +Traverses the frame tree to find and map the variable value. + +##### Type Parameters + +###### T + +`T` = `Payload` + +Return type of the callback + +##### Parameters + +###### cb? + +(`value`) => `undefined` \| `T` + +Optional transformation callback + +###### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +Optional frame to check (defaults to current top frame) + +##### Returns + +`undefined` \| `T` + +The transformed value or undefined if not found + +*** + +#### get() + +> **get**(`frame?`): `Payload` + +Defined in: [packages/core/src/methods/variable.ts:22](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L22) + +Gets the current value of the variable + +##### Parameters + +###### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +Optional frame to check (defaults to current top frame) + +##### Returns + +`Payload` + +The current value + +##### Throws + +If the variable is not found in the frame tree + +*** + +#### has() + +> **has**(`frame?`): `boolean` + +Defined in: [packages/core/src/methods/variable.ts:38](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L38) + +Checks if the variable exists in the current stack + +##### Parameters + +###### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +Optional frame to check (defaults to current top frame) + +##### Returns + +`boolean` + +True if the variable exists in the context + +*** + +#### run() + +> **run**\<`T`\>(`value`, `fn`): `T` + +Defined in: [packages/core/src/methods/variable.ts:61](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L61) + +Runs a function with new variable value + +##### Type Parameters + +###### T + +`T` + +Return type of the function + +##### Parameters + +###### value + +`Payload` + +The temporary value to set + +###### fn + +() => `T` + +Function to execute with the temporary value + +##### Returns + +`T` + +The result of the function + +*** + +#### set() + +> **set**(...`params`): `Payload` + +Defined in: [packages/core/src/methods/variable.ts:30](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L30) + +Sets a new value for the variable + +##### Parameters + +###### params + +...`Params` + +Parameters passed to the setter function + +##### Returns + +`Payload` + +The new value + +# Type Aliases + + + + +## Type Alias: Actions()\ + +> **Actions**\<`Target`\> = \{\<`Methods`\>(`create`): `Target` & [`ActionsExt`](#type-aliasesactionsextmd)\<`Methods`\>; \<`Methods`\>(`methods`): `Target` & [`ActionsExt`](#type-aliasesactionsextmd)\<`Methods`\>; \} + +Defined in: [packages/core/src/core/actions.ts:30](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/actions.ts#L30) + +Binding function type to add methods to an atom or action. + +Accepts either a record of methods or a function that creates methods +given the target atom/action, and returns the target extended with those methods +converted to actions. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd) + +The atom or action being extended + +### Call Signature + +> \<`Methods`\>(`create`): `Target` & [`ActionsExt`](#type-aliasesactionsextmd)\<`Methods`\> + +Add methods created by a factory function that receives the target + +#### Type Parameters + +##### Methods + +`Methods` *extends* [`Rec`](#type-aliasesrecmd)\<[`Fn`](#interfacesfnmd)\> + +#### Parameters + +##### create + +(`target`) => `Methods` + +Function that receives the target and returns methods to add + +#### Returns + +`Target` & [`ActionsExt`](#type-aliasesactionsextmd)\<`Methods`\> + +The target with the methods added as actions + +### Call Signature + +> \<`Methods`\>(`methods`): `Target` & [`ActionsExt`](#type-aliasesactionsextmd)\<`Methods`\> + +Add a record of methods directly to the target + +#### Type Parameters + +##### Methods + +`Methods` *extends* [`Rec`](#type-aliasesrecmd)\<[`Fn`](#interfacesfnmd)\> + +#### Parameters + +##### methods + +`Methods` + +Record of methods to add + +#### Returns + +`Target` & [`ActionsExt`](#type-aliasesactionsextmd)\<`Methods`\> + +The target with the methods added as actions + + + + +## Type Alias: ActionsExt\ + +> **ActionsExt**\<`Methods`\> = `{ [K in keyof Methods]: Methods[K] extends (params: infer Params) => infer Payload ? Action : never }` + +Defined in: [packages/core/src/core/actions.ts:12](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/actions.ts#L12) + +Type representing a set of methods converted to Reatom actions. + +This type maps each method in the original record to a corresponding Reatom action +with the same parameter and return types. + +### Type Parameters + +#### Methods + +`Methods` *extends* [`Rec`](#type-aliasesrecmd)\<[`Fn`](#interfacesfnmd)\> + +Record of functions to be converted to actions + + + + +## Type Alias: ArrayFieldItem\ + +> **ArrayFieldItem**\<`T`\> = `T` *extends* [`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd)\ ? [`AtomState`](#type-aliasesatomstatemd)\<`T`\[`"array"`\]\>\[`number`\] : `never` + +Defined in: [packages/core/src/form/src/reatomForm.ts:320](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L320) + +### Type Parameters + +#### T + +`T` + + + + +## Type Alias: Assign\ + +> **Assign**\<`T1`, `T2`, `T3`, `T4`\> = [`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => infer O ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2` \| keyof `T3` \| keyof `T4`\> & `Omit`\<`T2`, keyof `T3` \| keyof `T4`\> & `Omit`\<`T3`, keyof `T4`\> & `T4`\> + +Defined in: [packages/core/src/utils.ts:348](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L348) + +Type utility for merging up to four types with proper type safety. +Properties from later types override properties from earlier types. +Preserves function signatures from T1 if it's a function type. + +### Type Parameters + +#### T1 + +`T1` + +First type to merge + +#### T2 + +`T2` + +Second type to merge, overrides T1 properties + +#### T3 + +`T3` = \{ \} + +Optional third type to merge, overrides T1 and T2 properties + +#### T4 + +`T4` = \{ \} + +Optional fourth type to merge, overrides T1, T2, and T3 properties + + + + +## Type Alias: AsyncOptions\ + +> **AsyncOptions**\<`Err`, `EmptyErr`\> = `object` + +Defined in: [packages/core/src/async/withAsync.ts:91](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L91) + +Configuration options for the [withAsync](#variableswithasyncmd) extension + +### Extended by + +- [`AsyncDataOptions`](#interfacesasyncdataoptionsmd) + +### Type Parameters + +#### Err + +`Err` = `Error` + +The type of errors after parsing + +#### EmptyErr + +`EmptyErr` = `undefined` + +The type of the empty error state (default: undefined) + +### Properties + +#### emptyError? + +> `optional` **emptyError**: `EmptyErr` + +Defined in: [packages/core/src/async/withAsync.ts:102](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L102) + +Initial/reset value for the error atom + +*** + +#### parseError()? + +> `optional` **parseError**: (`error`) => `Err` + +Defined in: [packages/core/src/async/withAsync.ts:97](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L97) + +Function to transform raw errors into a specific error type + +##### Parameters + +###### error + +`unknown` + +The caught error of unknown type + +##### Returns + +`Err` + +A properly typed error object + +*** + +#### resetError? + +> `optional` **resetError**: `null` \| `"onCall"` \| `"onFulfill"` + +Defined in: [packages/core/src/async/withAsync.ts:110](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L110) + +When to reset the error state +- 'onCall': Reset error when the async operation starts (default) +- 'onFulfill': Reset error only when the operation succeeds +- null: Never automatically reset errors + + + + +## Type Alias: AtomState\ + +> **AtomState**\<`T`\> = `T` *extends* [`AtomLike`](#interfacesatomlikemd)\ ? `State` : `never` + +Defined in: [packages/core/src/core/atom.ts:196](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L196) + +Helper type to extract the state type from an atom-like object. + +### Type Parameters + +#### T + +`T` + +The atom-like type to extract the state from + + + + +## Type Alias: Constructor()\ + +> **Constructor**\<`T`\> = (...`args`) => `T` + +Defined in: [packages/core/src/utils.ts:735](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L735) + +Represents a constructor function that can be instantiated with the new operator. + +### Type Parameters + +#### T + +`T` + +The type of object that will be created when instantiated + +### Parameters + +#### args + +...`any`[] + +### Returns + +`T` + + + + +## Type Alias: DeepPartial\ + +> **DeepPartial**\<`T`, `Skip`\> = `{ [K in keyof T]?: T[K] extends Skip ? T[K] : T[K] extends Rec ? DeepPartial : T[K] }` + +Defined in: [packages/core/src/form/src/reatomForm.ts:107](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L107) + +### Type Parameters + +#### T + +`T` + +#### Skip + +`Skip` = `never` + + + + +## Type Alias: EnumAtom\ + +> **EnumAtom**\<`T`, `Format`\> = [`Atom`](#interfacesatommd)\<`T`\> & `EnumVariantSetters`\<`T`, `Format`\> & `object` + +Defined in: [packages/core/src/primitives/reatomEnum.ts:14](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomEnum.ts#L14) + +### Type declaration + +#### enum + +> **enum**: `{ [K in T]: K }` + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[\], `T`\> + +### Type Parameters + +#### T + +`T` *extends* `string` + +#### Format + +`Format` *extends* [`EnumFormat`](#type-aliasesenumformatmd) = `"camelCase"` + + + + +## Type Alias: EnumAtomOptions\ + +> **EnumAtomOptions**\<`T`, `Format`\> = `object` + +Defined in: [packages/core/src/primitives/reatomEnum.ts:23](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomEnum.ts#L23) + +### Type Parameters + +#### T + +`T` *extends* `string` + +#### Format + +`Format` *extends* [`EnumFormat`](#type-aliasesenumformatmd) = `"camelCase"` + +### Properties + +#### format? + +> `optional` **format**: `Format` + +Defined in: [packages/core/src/primitives/reatomEnum.ts:28](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomEnum.ts#L28) + +*** + +#### initState? + +> `optional` **initState**: `T` + +Defined in: [packages/core/src/primitives/reatomEnum.ts:29](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomEnum.ts#L29) + +*** + +#### name? + +> `optional` **name**: `string` + +Defined in: [packages/core/src/primitives/reatomEnum.ts:27](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomEnum.ts#L27) + + + + +## Type Alias: EnumFormat + +> **EnumFormat** = `"camelCase"` \| `"snake_case"` + +Defined in: [packages/core/src/primitives/reatomEnum.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomEnum.ts#L4) + + + + +## Type Alias: EventOfTarget\ + +> **EventOfTarget**\<`Target`, `Type`\> = `Target` *extends* `Record`\<`` `on${Type}` ``, infer Cb\> ? `Parameters`\<`Cb`\>\[`0`\] : `Target` *extends* `Record`\<`"onEvent"`, (`type`, `cb`) => `any`\> ? `Parameters`\<`Cb`\>\[`0`\] : `never` + +Defined in: [packages/core/src/web/onEvent.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/onEvent.ts#L4) + +### Type Parameters + +#### Target + +`Target` *extends* `EventTarget` + +#### Type + +`Type` *extends* `string` + + + + +## Type Alias: Falsy + +> **Falsy** = `false` \| `0` \| `""` \| `null` \| `undefined` + +Defined in: [packages/core/src/utils.ts:42](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L42) + +Union type of all JavaScript falsy values except for NaN. +Includes: false, 0, empty string, null, and undefined. + +### See + +https://stackoverflow.com/a/51390763 + + + + +## Type Alias: FieldValidateOption()\ + +> **FieldValidateOption**\<`State`, `Value`\> = (`meta`) => `any` + +Defined in: [packages/core/src/form/src/reatomField.ts:127](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L127) + +### Type Parameters + +#### State + +`State` = `any` + +#### Value + +`Value` = `State` + +### Parameters + +#### meta + +##### focus + +[`FieldFocus`](#interfacesfieldfocusmd) + +##### state + +`State` + +##### validation + +[`FieldValidation`](#interfacesfieldvalidationmd) + +##### value + +`Value` + +### Returns + +`any` + + + + +## Type Alias: FormFieldArrayAtom\ + +> **FormFieldArrayAtom**\<`Param`, `Node`\> = [`LinkedListAtom`](#interfaceslinkedlistatommd)\<\[`ExtractFieldArray`\<`Param`\>\], [`FormFieldElement`](#type-aliasesformfieldelementmd)\<`Node`\>\> & `object` + +Defined in: [packages/core/src/form/src/reatomForm.ts:69](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L69) + +### Type declaration + +#### initState + +> **initState**: [`Atom`](#interfacesatommd)\<[`LinkedList`](#interfaceslinkedlistmd)\<[`LLNode`](#type-aliasesllnodemd)\<[`FormFieldElement`](#type-aliasesformfieldelementmd)\<`Node`\>\>\>\> + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[\], [`AtomState`](#type-aliasesatomstatemd)\<`FormFieldArrayAtom`\<`Param`, `Node`\>\>\> + +### Type Parameters + +#### Param + +`Param` = `any` + +#### Node + +`Node` *extends* `FormInitStateElement` = `FormInitStateElement` + + + + +## Type Alias: FormFieldElement\ + +> **FormFieldElement**\<`T`\> = `T` *extends* [`FieldLikeAtom`](#interfacesfieldlikeatommd) ? `T` : `T` *extends* `Date` ? [`FieldAtom`](#interfacesfieldatommd)\<`T`\> : `T` *extends* infer Item[] ? `Item` *extends* `FormInitStateElement` ? [`FormFieldArrayAtom`](#type-aliasesformfieldarrayatommd)\<`Item`, `Item`\> : `never` : `T` *extends* `FormFieldArray`\ ? [`FormFieldArrayAtom`](#type-aliasesformfieldarrayatommd)\<`Param`, `Node`\> : `T` *extends* [`FieldOptions`](#interfacesfieldoptionsmd) & `object` ? `T` *extends* [`FieldOptions`](#interfacesfieldoptionsmd)\<`State`, `State`\> ? [`FieldAtom`](#interfacesfieldatommd)\<`State`\> : `T` *extends* [`FieldOptions`](#interfacesfieldoptionsmd)\<`State`, infer Value\> ? [`FieldAtom`](#interfacesfieldatommd)\<`State`, `Value`\> : `never` : `T` *extends* [`Rec`](#type-aliasesrecmd) ? `{ [K in keyof T]: FormFieldElement }` : [`FieldAtom`](#interfacesfieldatommd)\<`T`\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:77](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L77) + +### Type Parameters + +#### T + +`T` *extends* `FormInitStateElement` = `FormInitStateElement` + + + + +## Type Alias: FormFields\ + +> **FormFields**\<`T`\> = `{ [K in keyof T]: FormFieldElement }` + +Defined in: [packages/core/src/form/src/reatomForm.ts:99](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L99) + +### Type Parameters + +#### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) = [`FormInitState`](#type-aliasesforminitstatemd) + + + + +## Type Alias: FormInitState + +> **FormInitState** = `object` + +Defined in: [packages/core/src/form/src/reatomForm.ts:59](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L59) + +### Index Signature + +\[`key`: `string`\]: `FormInitState` \| `FormInitStateElement` + + + + +## Type Alias: FormPartialState\ + +> **FormPartialState**\<`T`\> = [`DeepPartial`](#type-aliasesdeeppartialmd)\<[`FormState`](#type-aliasesformstatemd)\<`T`\>, `unknown`[]\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:114](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L114) + +### Type Parameters + +#### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) = [`FormInitState`](#type-aliasesforminitstatemd) + + + + +## Type Alias: FormState\ + +> **FormState**\<`T`\> = [`ParseAtoms`](#type-aliasesparseatomsmd)\<[`FormFields`](#type-aliasesformfieldsmd)\<`T`\>\> + +Defined in: [packages/core/src/form/src/reatomForm.ts:103](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomForm.ts#L103) + +### Type Parameters + +#### T + +`T` *extends* [`FormInitState`](#type-aliasesforminitstatemd) = [`FormInitState`](#type-aliasesforminitstatemd) + + + + +## Type Alias: FunctionSource + +> **FunctionSource** = `string` + +Defined in: [packages/core/src/core/atom.ts:238](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L238) + +Type representing the source of a function as a string. +Used for caching and identification purposes. + + + + +## Type Alias: GenericAction\ + +> **GenericAction**\<`T`\> = `T` & [`Action`](#interfacesactionmd)\<`Parameters`\<`T`\>, `ReturnType`\<`T`\>\> + +Defined in: [packages/core/src/core/action.ts:21](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/action.ts#L21) + +### Type Parameters + +#### T + +`T` *extends* [`Fn`](#interfacesfnmd) + + + + +## Type Alias: LLNode\ + +> **LLNode**\<`T`\> = `T` & `object` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:22](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L22) + +Linked List is reusing the model reference to simplify the reference sharing and using it as a key of LL methods. +Btw, symbols works fine with serialization and will not add a garbage to an output. + +### Type declaration + +#### \[LL\_NEXT\] + +> **\[LL\_NEXT\]**: `null` \| `LLNode`\<`T`\> + +#### \[LL\_PREV\] + +> **\[LL\_PREV\]**: `null` \| `LLNode`\<`T`\> + +### Type Parameters + +#### T + +`T` *extends* [`Rec`](#type-aliasesrecmd) = [`Rec`](#type-aliasesrecmd) + + + + +## Type Alias: Merge\ + +> **Merge**\<`Target`, `Extensions`\> = `Extensions` *extends* \[\] ? `Target` : `Extensions` *extends* \[infer E, `...(infer Rest extends any[])`\] ? `Merge`\<`E` *extends* [`AtomLike`](#interfacesatomlikemd) ? `E` : `Target` & `E`, `Rest`\> : `never` + +Defined in: [packages/core/src/core/extend.ts:54](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L54) + +Helper type for merging an atom/action with a series of extensions. + +This type recursively merges a target with each extension in an array. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd) + +The base atom or action type + +#### Extensions + +`Extensions` *extends* `any`[] + +Array of extension results to merge with the target + + + + +## Type Alias: Middleware()\ + +> **Middleware**\<`Target`\> = (`next`, ...`params`) => [`AtomState`](#type-aliasesatomstatemd)\<`Target`\> + +Defined in: [packages/core/src/core/extend.ts:139](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L139) + +Type representing a middleware function for atoms and actions. + +Middleware functions intercept atom/action calls, allowing for custom behavior +to be applied before or after the normal execution. They receive the next middleware +function in the chain and the parameters passed to the atom/action. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd) = [`AtomLike`](#interfacesatomlikemd) + +The atom or action type the middleware applies to + +### Parameters + +#### next + +(...`params`) => [`AtomState`](#type-aliasesatomstatemd)\<`Target`\> + +The next middleware function in the chain or the original atom/action handler + +#### params + +...[`OverloadParameters`](#type-aliasesoverloadparametersmd)\<`Target`\> + +The parameters passed to the atom/action + +### Returns + +[`AtomState`](#type-aliasesatomstatemd)\<`Target`\> + +The state resulting from the atom/action execution + + + + +## Type Alias: OmitValues\ + +> **OmitValues**\<`T`, `V`\> = `{ [K in OmitValuesKeys]: T[K] }` + +Defined in: [packages/core/src/utils.ts:108](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L108) + +Creates a type with all properties from T except those with values extending V. + +### Type Parameters + +#### T + +`T` + +The object type to filter properties from + +#### V + +`V` + +The value type to exclude + + + + +## Type Alias: OmitValuesKeys\ + +> **OmitValuesKeys**\<`T`, `V`\> = [`Values`](#type-aliasesvaluesmd)\<`{ [K in keyof T]: T[K] extends V ? never : K }`\> + +Defined in: [packages/core/src/utils.ts:98](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L98) + +Extracts keys from type T where the corresponding value does not extend type V. + +### Type Parameters + +#### T + +`T` + +The object type to extract keys from + +#### V + +`V` + +The value type to exclude + + + + +## Type Alias: OverloadParameters\ + +> **OverloadParameters**\<`T`\> = `Parameters`\<[`Overloads`](#type-aliasesoverloadsmd)\<`T`\>\> + +Defined in: [packages/core/src/utils.ts:163](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L163) + +Extracts the parameters type from an overloaded function. +Returns a union of all possible parameter tuples. + +### Type Parameters + +#### T + +`T` + +The overloaded function type to extract parameters from + + + + +## Type Alias: Overloads\ + +> **Overloads**\<`T`\> = `T` *extends* \{(...`params`): `Return1`; (...`params`): `Return2`; (...`params`): `Return3`; (...`params`): `Return4`; (...`params`): `Return5`; \} ? (...`params`) => `Return1` \| `Return2` \| `Return3` \| `Return4` \| `Return5` : `never` + +Defined in: [packages/core/src/utils.ts:140](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L140) + +Flattens a function type with up to 5 overloads into a single function signature. +This creates a union of the parameter types and return types. + +Useful for generic type handling of overloaded functions. + +### Type Parameters + +#### T + +`T` + +The overloaded function type to flatten + + + + +## Type Alias: ParseAtoms\ + +> **ParseAtoms**\<`T`\> = `T` *extends* [`Action`](#interfacesactionmd) ? `T` : `T` *extends* [`LinkedListLikeAtom`](#interfaceslinkedlistlikeatommd)\ ? `T` *extends* [`LinkedList`](#interfaceslinkedlistmd)\<[`LLNode`](#type-aliasesllnodemd)\\> ? `ParseAtoms`\<`T`\>[] : `never` : `T` *extends* [`Atom`](#interfacesatommd)\ ? `ParseAtoms`\<`T`\> : `T` *extends* `Map`\ ? `Map`\<`K`, `ParseAtoms`\<`T`\>\> : `T` *extends* `Set`\ ? `Set`\<`ParseAtoms`\<`T`\>\> : `T` *extends* infer T[] ? `ParseAtoms`\<`T`\>[] : `T` *extends* `Primitive` \| `Builtin` ? `T` : `T` *extends* `object` ? `{ [K in keyof T]: ParseAtoms<(...)[(...)]> }` : `T` + +Defined in: [packages/core/src/methods/parseAtoms.ts:23](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/parseAtoms.ts#L23) + +Type utility that recursively unwraps atom types to their state types + +This complex type recursively traverses a type structure, unwrapping atoms +to their contained state types. It handles various container types like +arrays, maps, sets, and objects. + +### Type Parameters + +#### T + +`T` + +The type to unwrap + +### Returns + +Unwrapped version of the type with atoms replaced by their state types + + + + +## Type Alias: PickValues\ + +> **PickValues**\<`T`, `V`\> = `{ [K in PickValuesKeys]: T[K] }` + +Defined in: [packages/core/src/utils.ts:128](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L128) + +Creates a type with only properties from T with values extending V. + +### Type Parameters + +#### T + +`T` + +The object type to filter properties from + +#### V + +`V` + +The value type to include + + + + +## Type Alias: PickValuesKeys\ + +> **PickValuesKeys**\<`T`, `V`\> = [`Values`](#type-aliasesvaluesmd)\<`{ [K in keyof T]: T[K] extends V ? K : never }`\> + +Defined in: [packages/core/src/utils.ts:118](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L118) + +Extracts keys from type T where the corresponding value extends type V. + +### Type Parameters + +#### T + +`T` + +The object type to extract keys from + +#### V + +`V` + +The value type to include + + + + +## Type Alias: Plain\ + +> **Plain**\<`Intersection`\> = `Intersection` *extends* (...`params`) => infer O ? (...`params`) => `O` & `{ [Key in keyof Intersection]: Intersection[Key] }` : `Intersection` *extends* (...`params`) => `any` ? `Intersection` : `Intersection` *extends* `object` ? `{ [Key in keyof Intersection]: Intersection[Key] }` : `Intersection` + +Defined in: [packages/core/src/utils.ts:52](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L52) + +Removes named generics to produce a plain type representation. +Preserves function signatures and object structure while eliminating generic parameter names. + +This is useful for presenting cleaner types in documentation and error messages. + +### Type Parameters + +#### Intersection + +`Intersection` + +The type to convert to a plain representation + + + + +## Type Alias: Rec\ + +> **Rec**\<`T`\> = `Record`\<`string`, `T`\> + +Defined in: [packages/core/src/utils.ts:17](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L17) + +Type alias for Record for brevity. +Represents an object with string keys and values of type T. + +### Type Parameters + +#### T + +`T` = `any` + +The type of values in the record (defaults to any) + + + + +## Type Alias: Shallow\ + +> **Shallow**\<`T`\> = `{ [K in keyof T]: T[K] }` & `object` + +Defined in: [packages/core/src/utils.ts:72](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L72) + +Creates a shallow clone type of T. +Useful for creating a new type that has the same shape but is a distinct type. + +### Type Parameters + +#### T + +`T` + +The type to create a shallow clone of + + + + +## Type Alias: StringAtom\ + +> **StringAtom**\<`T`\> = [`Atom`](#interfacesatommd)\<`T`\> & `object` + +Defined in: [packages/core/src/primitives/reatomString.ts:3](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomString.ts#L3) + +### Type declaration + +#### reset + +> **reset**: [`Action`](#interfacesactionmd)\<\[\], `T`\> + +### Type Parameters + +#### T + +`T` *extends* `string` = `string` + + + + +## Type Alias: SuspenseExt\ + +> **SuspenseExt**\<`Target`\> = `object` + +Defined in: [packages/core/src/mixins/withSuspense.ts:44](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withSuspense.ts#L44) + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd) + +### Properties + +#### suspended + +> **suspended**: [`Computed`](#interfacescomputedmd)\<`Awaited`\<[`AtomState`](#type-aliasesatomstatemd)\<`Target`\>\>\> + +Defined in: [packages/core/src/mixins/withSuspense.ts:45](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/mixins/withSuspense.ts#L45) + + + + +## Type Alias: UndefinedToOptional\ + +> **UndefinedToOptional**\<`T`\> = `Partial`\<`T`\> & [`PickValues`](#type-aliasespickvaluesmd)\<`T`, \{ \} \| `null`\> + +Defined in: [packages/core/src/utils.ts:33](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L33) + +Utility type that converts properties with undefined values to optional properties. +Makes properties with object or null values required, while making other properties optional. + +### Type Parameters + +#### T + +`T` *extends* `object` + +The object type to transform + + + + +## Type Alias: UrlSearchParamsInit + +> **UrlSearchParamsInit** = `ConstructorParameters`\<*typeof* `URLSearchParams`\>\[`0`\] + +Defined in: [packages/core/src/web/fetch.ts:1](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/fetch.ts#L1) + + + + +## Type Alias: Values\ + +> **Values**\<`T`\> = `T`\[keyof `T`\] + +Defined in: [packages/core/src/utils.ts:90](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L90) + +Extracts the union type of all values in an object type. + +### Type Parameters + +#### T + +`T` + +The object type to extract values from + +# Variables + + + + +## Variable: FetchRequest + +> **FetchRequest**: *typeof* `FetchRequest` + +Defined in: [packages/core/src/web/fetch.ts:19](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/fetch.ts#L19) + + + + +## Variable: LL\_NEXT + +> `const` **LL\_NEXT**: *typeof* `LL_NEXT` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:17](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L17) + + + + +## Variable: LL\_PREV + +> `const` **LL\_PREV**: *typeof* `LL_PREV` + +Defined in: [packages/core/src/primitives/reatomLinkedList.ts:16](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomLinkedList.ts#L16) + + + + +## Variable: MAX\_SAFE\_TIMEOUT + +> `const` **MAX\_SAFE\_TIMEOUT**: `number` + +Defined in: [packages/core/src/utils.ts:728](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L728) + +Maximum safe integer value for setTimeout delay. +Any timeout value larger than this may cause overflow issues in some browsers. + +### See + +https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value + + + + +## Variable: STACK + +> **STACK**: [`Frame`](#interfacesframemd)[] = `[]` + +Defined in: [packages/core/src/core/atom.ts:1025](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L1025) + + + + +## Variable: abortVar + +> **abortVar**: [`AbortVar`](#interfacesabortvarmd) + +Defined in: [packages/core/src/methods/abort.ts:133](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L133) + +Global abort variable that creates abort atoms coupled to the current frame. + +The abortVar is computed from all other abort atoms in the current frame tree, +which allows for propagation of abortion signals through the computation hierarchy. +This is a critical component for cancellation handling in Reatom's async operations. + +### Example + +```ts +// Check if current operation is aborted +try { + abortVar.throwIfAborted() + // continue operation... +} catch (e) { + // Handle abortion +} + +// Trigger abortion +abortVar.abort('Operation cancelled') + +// Get AbortController for fetch API +const controller = abortVar.getController() +fetch('/api/data', { signal: controller?.signal }) +``` + + + + +## Variable: action() + +> **action**: \{\<`Params`, `Payload`\>(`cb`, `name?`): [`Action`](#interfacesactionmd)\<`Params`, `Payload`\>; \<`T`\>(`cb`, `name?`): [`GenericAction`](#type-aliasesgenericactionmd)\<`T`\>; \} + +Defined in: [packages/core/src/core/action.ts:79](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/action.ts#L79) + +Creates a logic and side effect container. + +Actions are used to encapsulate complex logic, perform side effects (like API calls), +and orchestrate multiple state updates. Unlike atoms, actions are meant to be called +with parameters and can return values. + +Actions also have atom-like features (subscribe, extend) and track their call history. + +### Call Signature + +> \<`Params`, `Payload`\>(`cb`, `name?`): [`Action`](#interfacesactionmd)\<`Params`, `Payload`\> + +#### Type Parameters + +##### Params + +`Params` *extends* `any`[] = `any`[] + +##### Payload + +`Payload` = `any` + +#### Parameters + +##### cb + +(...`params`) => `Payload` + +##### name? + +`string` + +#### Returns + +[`Action`](#interfacesactionmd)\<`Params`, `Payload`\> + +### Call Signature + +> \<`T`\>(`cb`, `name?`): [`GenericAction`](#type-aliasesgenericactionmd)\<`T`\> + +#### Type Parameters + +##### T + +`T` *extends* [`Fn`](#interfacesfnmd) + +#### Parameters + +##### cb + +`T` + +##### name? + +`string` + +#### Returns + +[`GenericAction`](#type-aliasesgenericactionmd)\<`T`\> + +### Template + +The parameter types the action accepts + +### Template + +The return type of the action + +### Param + +The function containing the action's logic + +### Param + +Optional name for debugging purposes + +### Returns + +An action instance that can be called with the specified parameters + +### Example + +```ts +// Create an action that fetches data and updates state +const fetchUserData = action(async (userId: string) => { + const response = await wrap(fetch(`/api/users/${userId}`)) + const data = await wrap(response.json()) + + // Update state atoms with the fetched data + userName(data.name) + userEmail(data.email) + + return data // Actions can return values +}, 'fetchUserData') + +// Call the action +fetchUserData('user123') +``` + + + + +## Variable: assign() + +> `const` **assign**: \{\<`T1`, `T2`\>(`a1`, `a2`): [`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2`\> & `Omit`\<`T2`, `never`\> & `Omit`\<\{ \}, `never`\>\>; \<`T1`, `T2`, `T3`\>(`a1`, `a2`, `a3?`): [`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2` \| keyof `T3`\> & `Omit`\<`T2`, keyof `T3`\> & `Omit`\<`T3`, `never`\>\>; \<`T1`, `T2`, `T3`, `T4`\>(`a1`, `a2`, `a3?`, `a4?`): [`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2` \| keyof `T3` \| keyof `T4`\> & `Omit`\<`T2`, keyof `T3` \| keyof `T4`\> & `Omit`\<`T3`, keyof `T4`\> & `T4`\>; \} = `Object.assign` + +Defined in: [packages/core/src/utils.ts:368](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L368) + +Type-safe version of Object.assign that properly handles type merging. +Unlike standard Object.assign typing, properties with the same name are replaced +rather than becoming a union type. + +### Call Signature + +> \<`T1`, `T2`\>(`a1`, `a2`): [`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2`\> & `Omit`\<`T2`, `never`\> & `Omit`\<\{ \}, `never`\>\> + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +#### Parameters + +##### a1 + +`T1` + +##### a2 + +`T2` + +#### Returns + +[`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2`\> & `Omit`\<`T2`, `never`\> & `Omit`\<\{ \}, `never`\>\> + +### Call Signature + +> \<`T1`, `T2`, `T3`\>(`a1`, `a2`, `a3?`): [`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2` \| keyof `T3`\> & `Omit`\<`T2`, keyof `T3`\> & `Omit`\<`T3`, `never`\>\> + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` = \{ \} + +#### Parameters + +##### a1 + +`T1` + +##### a2 + +`T2` + +##### a3? + +`T3` + +#### Returns + +[`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2` \| keyof `T3`\> & `Omit`\<`T2`, keyof `T3`\> & `Omit`\<`T3`, `never`\>\> + +### Call Signature + +> \<`T1`, `T2`, `T3`, `T4`\>(`a1`, `a2`, `a3?`, `a4?`): [`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2` \| keyof `T3` \| keyof `T4`\> & `Omit`\<`T2`, keyof `T3` \| keyof `T4`\> & `Omit`\<`T3`, keyof `T4`\> & `T4`\> + +#### Type Parameters + +##### T1 + +`T1` + +##### T2 + +`T2` + +##### T3 + +`T3` = \{ \} + +##### T4 + +`T4` = \{ \} + +#### Parameters + +##### a1 + +`T1` + +##### a2 + +`T2` + +##### a3? + +`T3` + +##### a4? + +`T4` + +#### Returns + +[`Plain`](#type-aliasesplainmd)\<`T1` *extends* (...`params`) => `O` ? (...`params`) => `O` : `object` & `Omit`\<`T1`, keyof `T2` \| keyof `T3` \| keyof `T4`\> & `Omit`\<`T2`, keyof `T3` \| keyof `T4`\> & `Omit`\<`T3`, keyof `T4`\> & `T4`\> + +### Template + +Type of the target object + +### Template + +Type of the first source object + +### Template + +Type of the optional second source object + +### Template + +Type of the optional third source object + +### Returns + +A new object with merged properties + + + + +## Variable: atom() + +> **atom**: \{\<`T`\>(`createState`, `name?`): [`Atom`](#interfacesatommd)\<`T`\>; \<`T`\>(`initState`, `name?`): [`Atom`](#interfacesatommd)\<`T`\>; \} + +Defined in: [packages/core/src/core/atom.ts:885](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L885) + +Creates a mutable state container. + +The atom is the core primitive for storing and updating mutable state in Reatom. +Atoms can be called as functions to read their current value or to update the value. + +### Call Signature + +> \<`T`\>(`createState`, `name?`): [`Atom`](#interfacesatommd)\<`T`\> + +#### Type Parameters + +##### T + +`T` + +#### Parameters + +##### createState + +() => `T` + +##### name? + +`string` + +#### Returns + +[`Atom`](#interfacesatommd)\<`T`\> + +### Call Signature + +> \<`T`\>(`initState`, `name?`): [`Atom`](#interfacesatommd)\<`T`\> + +#### Type Parameters + +##### T + +`T` + +#### Parameters + +##### initState + +`T` + +##### name? + +`string` + +#### Returns + +[`Atom`](#interfacesatommd)\<`T`\> + +### Template + +The type of state stored in the atom + +### Param + +A function that returns the initial state, or the initial state value directly + +### Param + +Optional name for the atom (useful for debugging) + +### Returns + +An atom instance containing the state + +### Example + +```ts +// Create with initial value +const counter = atom(0, 'counter') + +// Read current value +const value = counter() // -> 0 + +// Update with new value +counter(5) // Sets value to 5 + +// Update with a function +counter(prev => prev + 1) // Sets value to 6 +``` + + + + +## Variable: context + +> **context**: [`ContextAtom`](#interfacescontextatommd) + +Defined in: [packages/core/src/core/atom.ts:948](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L948) + +Core context object that manages the reactive state context in Reatom. + +The context is responsible for tracking dependencies between atoms, managing +computation stacks, and ensuring proper reactivity. It serves as the foundation +for Reatom's reactivity system and provides access to the current context frame. + +### Returns + +The current context frame + +### Throws + +If called outside a valid context (broken async stack) + + + + +## Variable: createAtom() + +> **createAtom**: \{\<`State`\>(`setup`, `name?`): [`Atom`](#interfacesatommd)\<`State`\>; \<`State`\>(`setup`, `name?`): [`Atom`](#interfacesatommd)\<`State`\>; \} + +Defined in: [packages/core/src/core/atom.ts:696](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/atom.ts#L696) + +### Call Signature + +> \<`State`\>(`setup`, `name?`): [`Atom`](#interfacesatommd)\<`State`\> + +#### Type Parameters + +##### State + +`State` + +#### Parameters + +##### setup + +###### computed + +(`prev`) => `State` + +###### initState + +`State` \| () => `State` + +##### name? + +`string` + +#### Returns + +[`Atom`](#interfacesatommd)\<`State`\> + +### Call Signature + +> \<`State`\>(`setup`, `name?`): [`Atom`](#interfacesatommd)\<`State`\> + +#### Type Parameters + +##### State + +`State` + +#### Parameters + +##### setup + +###### computed? + +() => `State` \| (`state?`) => `State` + +###### initState? + +`State` \| () => `State` + +##### name? + +`string` + +#### Returns + +[`Atom`](#interfacesatommd)\<`State`\> + + + + +## Variable: entries() + +> `const` **entries**: \<`T`\>(`thing`) => \[keyof `T`, `T`\[keyof `T`\]\][] = `Object.entries` + +Defined in: [packages/core/src/utils.ts:412](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L412) + +Type-safe version of Object.entries that preserves key and value type information. +Returns an array of key-value pairs with correct types. + +### Type Parameters + +#### T + +`T` *extends* `object` + +The object type + +### Parameters + +#### thing + +`T` + +The object to get entries from + +### Returns + +\[keyof `T`, `T`\[keyof `T`\]\][] + +An array of [key, value] pairs with proper typing + + + + +## Variable: fieldInitFocus + +> `const` **fieldInitFocus**: [`FieldFocus`](#interfacesfieldfocusmd) + +Defined in: [packages/core/src/form/src/reatomField.ts:206](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L206) + + + + +## Variable: fieldInitValidation + +> `const` **fieldInitValidation**: [`FieldValidation`](#interfacesfieldvalidationmd) + +Defined in: [packages/core/src/form/src/reatomField.ts:212](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L212) + + + + +## Variable: fieldInitValidationLess + +> `const` **fieldInitValidationLess**: [`FieldValidation`](#interfacesfieldvalidationmd) + +Defined in: [packages/core/src/form/src/reatomField.ts:219](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/form/src/reatomField.ts#L219) + + + + +## Variable: keys() + +> `const` **keys**: \<`T`\>(`thing`) => keyof `T`[] = `Object.keys` + +Defined in: [packages/core/src/utils.ts:400](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L400) + +Type-safe version of Object.keys that preserves the key type information. +Returns an array of keys with the correct type for the object. + +### Type Parameters + +#### T + +`T` *extends* `object` + +The object type + +### Parameters + +#### thing + +`T` + +The object to get keys from + +### Returns + +keyof `T`[] + +An array of the object's keys with proper typing + + + + +## Variable: merge + +> `const` **merge**: *typeof* [`assign`](#variablesassignmd) + +Defined in: [packages/core/src/utils.ts:389](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L389) + +Creates a new object with merged properties from all provided objects. +Similar to Object.assign but always creates a new object rather than mutating the first argument. + +### Returns + +A new object with all properties from the provided objects + +### Example + +```ts +// Creates a new object: { a: 1, b: 2, c: 3 } +const obj = merge({ a: 1 }, { b: 2 }, { c: 3 }); +``` + + + + +## Variable: noop() + +> `const` **noop**: (...`params`) => `any` + +Defined in: [packages/core/src/utils.ts:197](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L197) + +No-operation function that accepts any parameters and returns undefined. +Useful as a default callback or for stubbing functionality. + +### Parameters + +#### params + +...`any`[] + +### Returns + +`any` + + + + +## Variable: onEvent() + +> `const` **onEvent**: \{\<`Target`, `Type`\>(`target`, `type`): `Promise`\<[`EventOfTarget`](#type-aliaseseventoftargetmd)\<`Target`, `Type`\>\>; \<`Event`\>(`target`, `type`): `Promise`\<`Event`\>; \<`Target`, `Type`\>(`target`, `type`, `cb`, `options?`): [`Unsubscribe`](#interfacesunsubscribemd); \<`Event`\>(`target`, `type`, `cb`, `options?`): [`Unsubscribe`](#interfacesunsubscribemd); \} + +Defined in: [packages/core/src/web/onEvent.ts:14](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/onEvent.ts#L14) + +### Call Signature + +> \<`Target`, `Type`\>(`target`, `type`): `Promise`\<[`EventOfTarget`](#type-aliaseseventoftargetmd)\<`Target`, `Type`\>\> + +#### Type Parameters + +##### Target + +`Target` *extends* `EventTarget` + +##### Type + +`Type` *extends* `string` + +#### Parameters + +##### target + +`Target` + +##### type + +`Type` + +#### Returns + +`Promise`\<[`EventOfTarget`](#type-aliaseseventoftargetmd)\<`Target`, `Type`\>\> + +### Call Signature + +> \<`Event`\>(`target`, `type`): `Promise`\<`Event`\> + +#### Type Parameters + +##### Event + +`Event` + +#### Parameters + +##### target + +`EventTarget` + +##### type + +`string` + +#### Returns + +`Promise`\<`Event`\> + +### Call Signature + +> \<`Target`, `Type`\>(`target`, `type`, `cb`, `options?`): [`Unsubscribe`](#interfacesunsubscribemd) + +#### Type Parameters + +##### Target + +`Target` *extends* `EventTarget` + +##### Type + +`Type` *extends* `string` + +#### Parameters + +##### target + +`Target` + +##### type + +`Type` + +##### cb + +(`value`) => `any` + +##### options? + +`AddEventListenerOptions` + +#### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + +### Call Signature + +> \<`Event`\>(`target`, `type`, `cb`, `options?`): [`Unsubscribe`](#interfacesunsubscribemd) + +#### Type Parameters + +##### Event + +`Event` + +#### Parameters + +##### target + +`EventTarget` + +##### type + +`string` + +##### cb + +(`value`) => `any` + +##### options? + +`AddEventListenerOptions` + +#### Returns + +[`Unsubscribe`](#interfacesunsubscribemd) + + + + +## Variable: onLineAtom + +> **onLineAtom**: `OnlineAtom` + +Defined in: [packages/core/src/web/onLineAtom.ts:15](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/onLineAtom.ts#L15) + +### See + +https://issues.chromium.org/issues/338514113 + + + + +## Variable: peek + +> **peek**: [`Frame`](#interfacesframemd)\[`"run"`\] + +Defined in: [packages/core/src/methods/peek.ts:22](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/peek.ts#L22) + +Executes a callback in the current context without tracking dependencies + +The peek function allows you to access the current context and execute code within it +without establishing reactive dependencies. This is useful for read operations that +should not cause subscriptions or reactivity. + +### Param + +The callback function to execute in the current context + +### Param + +Parameters to pass to the callback function + +### Returns + +The result of the callback function + +### Example + +```ts +// Read an atom's value without establishing a dependency +const currentCount = peek(() => counter()); +console.log(`Current count is ${currentCount} (without subscribing)`); +``` + + + + +## Variable: rAF + +> **rAF**: [`Atom`](#interfacesatommd)\<\{ `delta`: `number`; `timestamp`: `number`; \}\> + +Defined in: [packages/core/src/web/rAF.ts:4](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/rAF.ts#L4) + + + + +## Variable: random + +> `const` **random**: *typeof* `_random` + +Defined in: [packages/core/src/utils.ts:490](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L490) + +Generates a random integer between min and max (inclusive). + +### Param + +The minimum integer value (defaults to 0) + +### Param + +The maximum integer value (defaults to Number.MAX_SAFE_INTEGER - 1) + +### Returns + +A random integer between min and max + + + + +## Variable: reatomString() + +> `const` **reatomString**: \{(`init?`, `name?`): [`StringAtom`](#type-aliasesstringatommd); \<`T`\>(`init`, `name?`): [`StringAtom`](#type-aliasesstringatommd)\<`T`\>; \} + +Defined in: [packages/core/src/primitives/reatomString.ts:7](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/primitives/reatomString.ts#L7) + +### Call Signature + +> (`init?`, `name?`): [`StringAtom`](#type-aliasesstringatommd) + +#### Parameters + +##### init? + +`string` + +##### name? + +`string` + +#### Returns + +[`StringAtom`](#type-aliasesstringatommd) + +### Call Signature + +> \<`T`\>(`init`, `name?`): [`StringAtom`](#type-aliasesstringatommd)\<`T`\> + +#### Type Parameters + +##### T + +`T` *extends* `string` + +#### Parameters + +##### init + +`T` + +##### name? + +`string` + +#### Returns + +[`StringAtom`](#type-aliasesstringatommd)\<`T`\> + + + + +## Variable: rollback + +> **rollback**: [`Action`](#interfacesactionmd)\<\[`any`\], `void`\> + +Defined in: [packages/core/src/methods/transaction.ts:111](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/transaction.ts#L111) + + + + +## Variable: searchParamsAtom + +> `const` **searchParamsAtom**: [`SearchParamsAtom`](#interfacessearchparamsatommd) + +Defined in: [packages/core/src/web/url.ts:449](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L449) + +Create an atom that represents search parameters from the URL. + + + + +## Variable: setTimeout + +> `const` **setTimeout**: `SetTimeout` + +Defined in: [packages/core/src/utils.ts:710](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/utils.ts#L710) + +Enhanced version of the global setTimeout function. +Ensures consistent behavior across different environments by handling both numeric +and object timeout IDs. Adds a toJSON method to object timeout IDs for serialization. + +### Param + +The function to call after the timeout + +### Param + +The time in milliseconds to wait before calling the handler + +### Param + +Optional arguments to pass to the handler function + +### Returns + +A timeout ID that can be used with clearTimeout + + + + +## Variable: spawn + +> **spawn**: [`GenericAction`](#type-aliasesgenericactionmd)\<\<`Params`, `Payload`\>(`cb`, ...`params`) => `Payload`\> + +Defined in: [packages/core/src/methods/abort.ts:234](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/abort.ts#L234) + +This utility allow you to start a function which will NOT follow the async abort context. + +### Example + +but don't want to abort the fetch when the subscription is lost to save the data anyway. + +```ts +const some = atom('...').extend( + withConnectHook((target) => { + spawn(async () => { + // here `wrap` doesn't follow the connection abort + const data = await wrap(api.getSome()) + some(data) + }) + }), +) +``` + + + + +## Variable: transactionVar + +> **transactionVar**: `TransactionVariable` + +Defined in: [packages/core/src/methods/transaction.ts:109](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/transaction.ts#L109) + + + + +## Variable: urlAtom + +> **urlAtom**: [`UrlAtom`](#interfacesurlatommd) + +Defined in: [packages/core/src/web/url.ts:181](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/web/url.ts#L181) + +Create the URL atom with the new Reatom API. + + + + +## Variable: variable() + +> **variable**: \{\<`T`\>(`name?`): [`Variable`](#interfacesvariablemd)\<\[`T`\], `T`\>; \<`Params`, `Payload`\>(`set`, `name?`): [`Variable`](#interfacesvariablemd)\<`Params`, `Payload`\>; \} + +Defined in: [packages/core/src/methods/variable.ts:101](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/variable.ts#L101) + +Creates a new context variable with getter and setter functionality + +This implementation provides a similar capability to the proposed TC39 AsyncContextVariable, +allowing you to maintain values that are specific to a particular execution context. +Variables created with this function can be accessed and modified within their frame context. + +### Call Signature + +> \<`T`\>(`name?`): [`Variable`](#interfacesvariablemd)\<\[`T`\], `T`\> + +#### Type Parameters + +##### T + +`T` + +#### Parameters + +##### name? + +`string` + +#### Returns + +[`Variable`](#interfacesvariablemd)\<\[`T`\], `T`\> + +### Call Signature + +> \<`Params`, `Payload`\>(`set`, `name?`): [`Variable`](#interfacesvariablemd)\<`Params`, `Payload`\> + +#### Type Parameters + +##### Params + +`Params` *extends* `any`[] + +##### Payload + +`Payload` + +#### Parameters + +##### set + +(...`params`) => `Payload` + +##### name? + +`string` + +#### Returns + +[`Variable`](#interfacesvariablemd)\<`Params`, `Payload`\> + +### See + +[https://github.com/tc39/proposal-async-context?tab=readme-ov-file#asynccontextvariable](https://github.com/tc39/proposal-async-context?tab=readme-ov-file#asynccontextvariable) + +### Template + +The type of the simple variable (when used with just a name) + +### Template + +Types of parameters for the setter function + +### Template + +The type of the stored value + +### Example + +```ts +// Simple variable with string values +const currentUser = variable('currentUser'); + +// Set the value +currentUser.set('Alice'); + +// Get the value +console.log(currentUser.get()); // 'Alice' + +// Run code with a different value +currentUser.run('Bob', () => { + console.log(currentUser.get()); // 'Bob' +}); + +// Advanced variable with custom setter logic +const userRole = variable((role: string, permissions: string[]) => { + return { role, permissions }; +}, 'userRole'); + +userRole.set('admin', ['read', 'write', 'delete']); +``` + + + + +## Variable: withAsync() + +> **withAsync**: \<`Err`, `EmptyErr`\>(`options?`) => \<`T`\>(`target`) => `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? `T`\<`T`\> & [`AsyncExt`](#interfacesasyncextmd)\<`Params`, `Payload`, `Err` \| `EmptyErr`\> : `never` + +Defined in: [packages/core/src/async/withAsync.ts:136](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/async/withAsync.ts#L136) + +Extension that adds async state tracking to atoms or actions that return promises. +Manages pending state, errors, and provides lifecycle actions for async operations. + +This extension preserves Reatom context across async operations, ensuring that +the async operation's results properly update Reatom state. + +### Type Parameters + +#### Err + +`Err` = `Error` + +The type of errors after parsing + +#### EmptyErr + +`EmptyErr` = `undefined` + +The type of the empty error state + +### Parameters + +#### options? + +Configuration options for error handling + +`null` | [`AsyncOptions`](#type-aliasesasyncoptionsmd)\<`Err`, `EmptyErr`\> + +### Returns + +An extension function that can be applied to atoms or actions + +> \<`T`\>(`target`): `T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? `T`\<`T`\> & [`AsyncExt`](#interfacesasyncextmd)\<`Params`, `Payload`, `Err` \| `EmptyErr`\> : `never` + +#### Type Parameters + +##### T + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +#### Parameters + +##### target + +`T` + +#### Returns + +`T` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `Params`, `Promise`\<`Payload`\>\> ? `T`\<`T`\> & [`AsyncExt`](#interfacesasyncextmd)\<`Params`, `Payload`, `Err` \| `EmptyErr`\> : `never` + +### Example + +```ts +// Basic usage with an action: +const fetchUser = action(async (userId: string) => { + const response = await wrap(fetch(`/api/users/${userId}`)) + return await wrap(response.json()) +}, 'fetchUser').extend(withAsync()) + +// Can then access: +fetchUser.error() // → latest error if any +fetchUser.ready() // → are all operations complete? +``` + + + + +## Variable: withMiddleware() + +> **withMiddleware**: \{\<`Target`\>(`cb`, `tail?`): [`GenericExt`](#interfacesgenericextmd)\<`Target`\>; \<`Target`, `Result`\>(`cb`, `tail?`): [`Ext`](#interfacesextmd)\<`Target`, `Result`\>; \} + +Defined in: [packages/core/src/core/extend.ts:174](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L174) + +Creates an extension that adds middleware to an atom or action. + +Middleware allows intercepting and modifying the execution flow of atoms and actions. +This is the fundamental mechanism for creating behavior extensions in Reatom. + +### Call Signature + +> \<`Target`\>(`cb`, `tail?`): [`GenericExt`](#interfacesgenericextmd)\<`Target`\> + +#### Type Parameters + +##### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +#### Parameters + +##### cb + +(`target`) => [`Middleware`](#type-aliasesmiddlewaremd)\<`Target`\> + +##### tail? + +`boolean` + +#### Returns + +[`GenericExt`](#interfacesgenericextmd)\<`Target`\> + +### Call Signature + +> \<`Target`, `Result`\>(`cb`, `tail?`): [`Ext`](#interfacesextmd)\<`Target`, `Result`\> + +#### Type Parameters + +##### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +##### Result + +`Result` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> = `Target` + +#### Parameters + +##### cb + +(`target`) => [`Middleware`](#type-aliasesmiddlewaremd)\<`Target`\> + +##### tail? + +`boolean` + +#### Returns + +[`Ext`](#interfacesextmd)\<`Target`, `Result`\> + +### Template + +The type of atom or action the middleware will be applied to + +### Template + +The resulting type after applying the middleware + +### Param + +A function that receives the target and returns a middleware function + +### Param + +Whether to add the middleware at the end (true) or beginning (false) of the middleware chain + +### Returns + +An extension that applies the middleware when used with .extend() + +### Example + +```ts +// Creating a logging middleware extension +const withLogger = (prefix: string) => + withMiddleware((target) => { + return (next, ...params) => { + console.log(`${prefix} [${target.name}] Before:`, params) + const result = next(...params) + console.log(`${prefix} [${target.name}] After:`, result) + return result + } + }) + +// Using the middleware +const counter = atom(0).extend(withLogger('DEBUG')) +``` + + + + +## Variable: withParams() + +> **withParams**: \<`Target`, `Params`\>(`parse`) => [`ParamsExt`](#interfacesparamsextmd)\<`Target`, `Params`\> + +Defined in: [packages/core/src/core/extend.ts:299](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L299) + +Creates an extension that transforms parameters before they reach the atom or action. + +This utility lets you change how parameters are processed when an atom or action +is called, enabling custom parameter handling, validation, or transformation. + +### Type Parameters + +#### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +The type of atom or action being extended + +#### Params + +`Params` *extends* `any`[] + +The parameter types that will be accepted by the extended atom/action + +### Parameters + +#### parse + +(...`parse`) => [`OverloadParameters`](#type-aliasesoverloadparametersmd)\<`Target`\>\[`0`\] + +Function that transforms the new parameters into what the atom/action expects + +### Returns + +[`ParamsExt`](#interfacesparamsextmd)\<`Target`, `Params`\> + +An extension that applies the parameter transformation + +### Example + +```ts +// Convert from any unit to meters +const length = atom(0, 'length').extend( + withParams((value: number, unit: 'cm' | 'm' | 'km') => { + switch (unit) { + case 'cm': return value / 100 + case 'm': return value + case 'km': return value * 1000 + } + }) +) + +length(5, 'km') // Sets value to 5000 meters +``` + + + + +## Variable: withRollback() + +> **withRollback**: () => [`GenericExt`](#interfacesgenericextmd) + +Defined in: [packages/core/src/methods/transaction.ts:110](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/transaction.ts#L110) + +Extension to follow rollback context. +For atoms it adds prev state restoration when relative `rollback()` appears. +For actions it adds error handling and call `rollback()` automatically. + +### Returns + +[`GenericExt`](#interfacesgenericextmd) + + + + +## Variable: withTap() + +> **withTap**: \{(`cb`): [`GenericExt`](#interfacesgenericextmd); \<`Target`\>(`cb`): [`Ext`](#interfacesextmd)\<`Target`, `Target`\>; \} + +Defined in: [packages/core/src/core/extend.ts:221](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/core/extend.ts#L221) + +Creates an extension that allows observing state changes without modifying them. + +This extension adds a middleware that calls the provided callback function +whenever the atom's state changes, passing the target atom, new state, and previous state. +This is useful for side effects like logging, analytics, or debugging. + +### Call Signature + +> (`cb`): [`GenericExt`](#interfacesgenericextmd) + +#### Parameters + +##### cb + +(`target`, `state`, `prevState`) => `void` + +#### Returns + +[`GenericExt`](#interfacesgenericextmd) + +### Call Signature + +> \<`Target`\>(`cb`): [`Ext`](#interfacesextmd)\<`Target`, `Target`\> + +#### Type Parameters + +##### Target + +`Target` *extends* [`AtomLike`](#interfacesatomlikemd)\<`any`, `any`[], `any`\> + +#### Parameters + +##### cb + +(`target`, `state`, `prevState`) => `void` + +#### Returns + +[`Ext`](#interfacesextmd)\<`Target`, `Target`\> + +### Param + +Callback function that receives the target, new state, and previous state + +### Returns + +An extension that can be applied to atoms or actions + +### Example + +```ts +const counter = atom(0, 'counter').extend( + withTap((target, state, prevState) => { + console.log(`${target.name} changed from ${prevState} to ${state}`) + }) +) +``` + + + + +## Variable: wrap() + +> **wrap**: \{\<`Params`, `Payload`\>(`target`, `frame?`): (...`params`) => `Payload`; \<`T`\>(`target`, `frame?`): `T`; \} + +Defined in: [packages/core/src/methods/wrap.ts:39](https://github.com/artalar/reatom/blob/233aa4756128ddab9f4e01665766be5a24d58bc2/packages/core/src/methods/wrap.ts#L39) + +Preserves Reatom's reactive context across async boundaries or function calls. + +This is a CRITICAL function in Reatom that ensures proper context tracking across +asynchronous operations like Promises, setTimeout, event handlers, and more. Without +proper wrapping, atoms would lose their context after async operations, leading to +"Missed context" errors when attempting to update state. + +Wrap handles two scenarios: +1. Function wrapping: Returns a new function that preserves context when called +2. Promise wrapping: Returns a new promise that preserves context through its chain + +### Call Signature + +> \<`Params`, `Payload`\>(`target`, `frame?`): (...`params`) => `Payload` + +#### Type Parameters + +##### Params + +`Params` *extends* `any`[] + +##### Payload + +`Payload` + +#### Parameters + +##### target + +(...`params`) => `Payload` + +##### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +#### Returns + +> (...`params`): `Payload` + +##### Parameters + +###### params + +...`Params` + +##### Returns + +`Payload` + +### Call Signature + +> \<`T`\>(`target`, `frame?`): `T` + +#### Type Parameters + +##### T + +`T` *extends* `Promise`\<`any`\> + +#### Parameters + +##### target + +`T` + +##### frame? + +[`Frame`](#interfacesframemd)\<`any`, `any`[], `any`\> + +#### Returns + +`T` + +### Template + +The parameter types when wrapping a function + +### Template + +The return type when wrapping a function + +### Template + +The promise type when wrapping a promise + +### Param + +The function or promise to wrap with context preservation + +### Param + +The frame to use (defaults to the current top frame) + +### Returns + +A wrapped function or promise that preserves reactive context + +### Example + +```ts +// Wrapping a function (e.g., an event handler) +button.addEventListener('click', wrap(() => { + counter(prev => prev + 1) // Works, context preserved +})) + +// Wrapping async operations +action(async () => { + const response = await wrap(fetch('/api/data')) + const data = await wrap(response.json()) + results(data) // Works, context preserved +}) +``` diff --git a/packages/core/package.json b/packages/core/package.json index 3c81141eb..2910e197c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -18,11 +18,12 @@ "last 1 year" ], "scripts": { - "prepublishOnly": "tsc -p ./tsconfig.bundle.json && eslint src --fix && prettier src -w && npm run build", + "prepublishOnly": "tsc -p ./tsconfig.bundle.json && eslint src --fix && prettier src -w && npm run build && npm run build:docs:reference", "build": "npm run test && npm run test:browser && yoctobundle", "test": "vitest run", "test:browser": "vitest run --config=vitest.browser.config.ts", "test:watch": "vitest", + "build:docs:reference": "generate-reatom-reference", "deopt": "dexnode deopt.js", "bench_dynamic": "tsx bench_dynamic.ts", "bench_computed": "tsx bench_computed.ts", @@ -84,6 +85,7 @@ "usignal": "latest", "whatsup": "latest", "wonka": "latest", - "zod": "^3.24.4" + "zod": "^3.24.3", + "@reatom-internal/reference-docs-generator": "^0.1.0" } } diff --git a/packages/core/reference.json b/packages/core/reference.json new file mode 100644 index 000000000..66f452091 --- /dev/null +++ b/packages/core/reference.json @@ -0,0 +1,3 @@ +{ + "referenceDocs": "./REFERENCE.md" +} diff --git a/packages/core/src/web/onLineAtom.ts b/packages/core/src/web/onLineAtom.ts index 358b61045..cd5880fc7 100644 --- a/packages/core/src/web/onLineAtom.ts +++ b/packages/core/src/web/onLineAtom.ts @@ -11,7 +11,7 @@ type OnlineAtom = Atom & { } /** - * @note https://issues.chromium.org/issues/338514113 + * @see https://issues.chromium.org/issues/338514113 */ export let onLineAtom: OnlineAtom = /* @__PURE__ */ (() => atom(() => navigator.onLine, 'onLine').extend( diff --git a/packages/core/typedoc.json b/packages/core/typedoc.json new file mode 100644 index 000000000..8390585d2 --- /dev/null +++ b/packages/core/typedoc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://typedoc-plugin-markdown.org/schema.json", + "extends": ["../../typedoc.root.json"], + "tsconfig": "./typedoc.tsconfig.json", + "entryPoints": ["./src/index.ts"] +} diff --git a/packages/core/typedoc.tsconfig.json b/packages/core/typedoc.tsconfig.json new file mode 100644 index 000000000..17de046cb --- /dev/null +++ b/packages/core/typedoc.tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "skipLibCheck": true + }, + "exclude": ["bench_*", "**/*.test.ts", "build"] +} diff --git a/packages/vue/reference.json b/packages/vue/reference.json new file mode 100644 index 000000000..f0ec3203b --- /dev/null +++ b/packages/vue/reference.json @@ -0,0 +1,3 @@ +{ + "changelog": "./CHANGELOG.md" +} diff --git a/tools/reference-docs-generator/cli.js b/tools/reference-docs-generator/cli.js new file mode 100755 index 000000000..ab0f9c984 --- /dev/null +++ b/tools/reference-docs-generator/cli.js @@ -0,0 +1,15 @@ +#!/usr/bin/env node + +import { $, tmpdir, fs } from 'zx' + +const docsTmp = tmpdir() +try { + await $`typedoc --out ${docsTmp}` + + await $`rm ${docsTmp}/README.md` + await $`concat-md --decrease-title-levels --dir-name-as-title ${docsTmp} > REFERENCE.md` + await fs.remove(docsTmp) +} catch (e) { + console.warn(`Partial output in ${docsTmp}`) + throw e +} diff --git a/tools/reference-docs-generator/package.json b/tools/reference-docs-generator/package.json new file mode 100644 index 000000000..cdf10f095 --- /dev/null +++ b/tools/reference-docs-generator/package.json @@ -0,0 +1,23 @@ +{ + "name": "@reatom-internal/reference-docs-generator", + "private": true, + "version": "0.1.0", + "main": "cli.js", + "bin": { + "generate-reatom-reference": "./cli.js" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "MIT", + "type": "module", + "description": "", + "dependencies": { + "concat-md": "^0.5.1", + "typedoc": "^0.28.4", + "typedoc-plugin-markdown": "^4.6.3", + "zx": "^8.5.4" + } +} diff --git a/typedoc.root.json b/typedoc.root.json new file mode 100644 index 000000000..bacc0f172 --- /dev/null +++ b/typedoc.root.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://typedoc-plugin-markdown.org/schema.json", + "excludeExternals": true, + "excludePrivate": true, + "excludeProtected": true, + "theme": "markdown", + "plugin": ["typedoc-plugin-markdown"], + "hideBreadcrumbs": true, + "hidePageHeader": true +}