{"_id":"@acf-kit/core","_rev":"10-162d158bd27d3c6c1008b53579f07549","name":"@acf-kit/core","dist-tags":{"latest":"1.3.1"},"versions":{"0.0.2":{"name":"@acf-kit/core","version":"0.0.2","_id":"@acf-kit/core@0.0.2","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"96ac6c343ca3642771189be9d4b436e04f84aa7c","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-0.0.2.tgz","fileCount":4,"integrity":"sha512-A5XFzhmr+F7JItMdx7vVyXPTDYNvPCGPvTr0dkPPRDg1wMJGZ+7GrqUBL1d/kdpyMBZZSMMorlDZ2WBcg9/u+Q==","signatures":[{"sig":"MEYCIQDmTTHV2g0KRhIvnRVjUSwBBvqRvtCbfLyiiNUhlM2F3QIhAIPscb07G3YfdeiaIyXM7BWxafhEQrvkKHCwnPb5pixN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":598},"main":"dist/index.js","_from":"file:acf-kit-core-0.0.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/c03c6c14bcf5b5d985e7469fa937e3c6/acf-kit-core-0.0.2.tgz","_integrity":"sha512-A5XFzhmr+F7JItMdx7vVyXPTDYNvPCGPvTr0dkPPRDg1wMJGZ+7GrqUBL1d/kdpyMBZZSMMorlDZ2WBcg9/u+Q==","_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_0.0.2_1747839694257_0.751040086579885","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@acf-kit/core","version":"1.0.0","_id":"@acf-kit/core@1.0.0","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"4cda3d7baffa17ed2135f7f6958e0f7501661e01","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.0.0.tgz","fileCount":22,"integrity":"sha512-tp8Ut+mvI0kiGDy9SZ2ggBzTpDCzAGv3db3MivLgrl78JToFiUdLYnnxXxZDLrEbYqxZazQajInlDagV06DRHw==","signatures":[{"sig":"MEUCIQDyj2nk/rWZgnixR+Fb/9mfq/A9bXPX0wLZ3ZL6rwnJvAIgOzDdVNEaV5BxGyneltRyEV0YdCEqHb2f6kdWp+7+48g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38190},"main":"dist/index.js","_from":"file:acf-kit-core-1.0.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/b19cd11d299359dc09a58f8a67d69a16/acf-kit-core-1.0.0.tgz","_integrity":"sha512-tp8Ut+mvI0kiGDy9SZ2ggBzTpDCzAGv3db3MivLgrl78JToFiUdLYnnxXxZDLrEbYqxZazQajInlDagV06DRHw==","_npmVersion":"10.8.2","description":"[![npm version](https://img.shields.io/npm/v/@acf-kit/core.svg)](https://npmjs.com/package/@acf-kit/core) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/) [![MIT License](https://img.shields.io/badg","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.0_1747907121552_0.5164193266193111","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@acf-kit/core","version":"1.0.1","_id":"@acf-kit/core@1.0.1","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"5cfabc3b5678582be8c70e885e31c68c2b3afb14","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.0.1.tgz","fileCount":73,"integrity":"sha512-/BgOPO/lsy/O/oR/D56swMPSeHQDuJmcvqczcWtzFnD6hMhsPCtY99K153T4ZMkMOxI0jPsN3SirSjo5GtuHoQ==","signatures":[{"sig":"MEUCIQC1VTAyaDPscZcVSbeCHmmBt1XAe12xuep+IJDoItFvgQIgdh6iJaS/GnZvYWz1iXWG6TlxiQvaBp0nFGkU+5R3VxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108963},"main":"dist/index.js","_from":"file:acf-kit-core-1.0.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./fields/builtins":{"types":"./dist/fields/builtins.d.ts","import":"./dist/fields/builtins.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/7f4fb7c56c0183bd674f30447b0bcea5/acf-kit-core-1.0.1.tgz","_integrity":"sha512-/BgOPO/lsy/O/oR/D56swMPSeHQDuJmcvqczcWtzFnD6hMhsPCtY99K153T4ZMkMOxI0jPsN3SirSjo5GtuHoQ==","_npmVersion":"10.8.2","description":"[![npm version](https://img.shields.io/npm/v/@acf-kit/core.svg)](https://npmjs.com/package/@acf-kit/core) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/) [![MIT License](https://img.shields.io/badg","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.1_1747942979327_0.1791733441655199","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@acf-kit/core","version":"1.0.2","_id":"@acf-kit/core@1.0.2","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"fbd214494fcc08a5b2eb1c0ecb5eea4ef8653821","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.0.2.tgz","fileCount":73,"integrity":"sha512-cUVvnLyV6FDrxjW7jmR1xVF3z9NN+SInE6iU3bpDbD1DWskNrX/mdOQh6SNrXgAcmwZeneVAjB6dgT55oDa7Nw==","signatures":[{"sig":"MEQCIBMr1IVo41iLPFcCSWmnTQnxTarawrnY2pIb7uI+/rHVAiBUtuapfZEPgpvWAH3TxC7v/bqTC2BV5wsekd2+DcAmkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109003},"main":"dist/index.js","_from":"file:acf-kit-core-1.0.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./fields/builtins":{"types":"./dist/fields/builtins.d.ts","import":"./dist/fields/builtins.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/64085feb542e473b3bb4066b8e682291/acf-kit-core-1.0.2.tgz","_integrity":"sha512-cUVvnLyV6FDrxjW7jmR1xVF3z9NN+SInE6iU3bpDbD1DWskNrX/mdOQh6SNrXgAcmwZeneVAjB6dgT55oDa7Nw==","_npmVersion":"10.8.2","description":"[![npm version](https://img.shields.io/npm/v/@acf-kit/core.svg)](https://npmjs.com/package/@acf-kit/core) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/) [![MIT License](https://img.shields.io/badg","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.2_1747943131869_0.03474584461816632","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@acf-kit/core","version":"1.1.0","_id":"@acf-kit/core@1.1.0","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"7910c272d096f98d48311e068c38bb5ffff15320","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.1.0.tgz","fileCount":54,"integrity":"sha512-FDlD5kv5kQBkiR1hZZZY2W2PRomVIwG++WDj5Emup0/KBrvnOg3iMt0g4jkS/hIIpztjSEKxuoe+s0Fqs4Wjxg==","signatures":[{"sig":"MEUCIQDDDmO1CU+gFl3+wCzrhZ0u1+MacdmfHmK4qvFUGRRE9gIgHE5DObutBUwk02qSTDON5O4DuIZiR9c0zcvrO2L2ZYc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85005},"main":"dist/src/index.js","_from":"file:acf-kit-core-1.1.0.tgz","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./fields/builtins":{"types":"./dist/src/fields/builtins.d.ts","import":"./dist/src/fields/builtins.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/fa54ad321dafa8e9946ce4dc13329fc3/acf-kit-core-1.1.0.tgz","_integrity":"sha512-FDlD5kv5kQBkiR1hZZZY2W2PRomVIwG++WDj5Emup0/KBrvnOg3iMt0g4jkS/hIIpztjSEKxuoe+s0Fqs4Wjxg==","_npmVersion":"10.8.2","description":"[![npm version](https://img.shields.io/npm/v/@acf-kit/core.svg)](https://npmjs.com/package/@acf-kit/core) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/) [![MIT License](https://img.shields.io/badg","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.0_1747944111537_0.42223160082788747","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@acf-kit/core","version":"1.1.1","_id":"@acf-kit/core@1.1.1","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"3d139fd60e15d6ab715e094fd0cadb98b8d529f7","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.1.1.tgz","fileCount":54,"integrity":"sha512-ipG2XtCmts4BIgI8A+i75jkRSY7xW185t0P0ZQuBcT1p4cwqmc/orydst3oJ3TAaJvKm+W8n4QGWcu5nLSy6wQ==","signatures":[{"sig":"MEQCIGSN806tyBfTKWToayVsZa6sPVEo2g2aHWx8NtxK0il3AiA7FLJHuFBrHY+Irsel3iCujArCvopQKzOzucqs8ZD6Kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85234},"main":"dist/src/index.js","_from":"file:acf-kit-core-1.1.1.tgz","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./fields/builtins":{"types":"./dist/src/fields/builtins.d.ts","import":"./dist/src/fields/builtins.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/18e425274d8b17050874ac3f8494d09d/acf-kit-core-1.1.1.tgz","_integrity":"sha512-ipG2XtCmts4BIgI8A+i75jkRSY7xW185t0P0ZQuBcT1p4cwqmc/orydst3oJ3TAaJvKm+W8n4QGWcu5nLSy6wQ==","_npmVersion":"10.8.2","description":"[![npm version](https://img.shields.io/npm/v/@acf-kit/core.svg)](https://npmjs.com/package/@acf-kit/core) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/) [![MIT License](https://img.shields.io/badg","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.1_1747944871897_0.3207586516906311","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@acf-kit/core","version":"1.1.2","_id":"@acf-kit/core@1.1.2","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"d203a7cba90784d0c46523344adf2d7fbb97c722","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.1.2.tgz","fileCount":105,"integrity":"sha512-L6rdjSf6goQbmebvTQ6YjtwCQIGpYx/nDbSZEiVQRfV73O/ChBWApZHt5y7YU0JVPS2WrzbWnOMIuDsSxcB25w==","signatures":[{"sig":"MEMCHwP4WGwFvlp8EPorE/XxAwWEy7RDCbghe5VivzPrVsgCIATkVqrNdffSItE9Crs8fbAKdf9xu2TRgPZxPsG8gpCc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124949},"main":"dist/src/index.js","_from":"file:acf-kit-core-1.1.2.tgz","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./fields/builtins":{"types":"./dist/src/fields/builtins.d.ts","import":"./dist/src/fields/builtins.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/2de1c693f9e4bedfde12608db6769d61/acf-kit-core-1.1.2.tgz","_integrity":"sha512-L6rdjSf6goQbmebvTQ6YjtwCQIGpYx/nDbSZEiVQRfV73O/ChBWApZHt5y7YU0JVPS2WrzbWnOMIuDsSxcB25w==","_npmVersion":"10.8.2","description":"[![npm version](https://img.shields.io/npm/v/@acf-kit/core.svg)](https://npmjs.com/package/@acf-kit/core) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/) [![MIT License](https://img.shields.io/badg","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.2_1747945555790_0.455464170840554","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@acf-kit/core","version":"1.2.0","_id":"@acf-kit/core@1.2.0","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"33334891723011ceda918bc6f7e94a7351ad3315","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.2.0.tgz","fileCount":108,"integrity":"sha512-VbGZHYT64KxlJOEUHbnpBGOEMAJWszf9w+c+QQRYbJsbpBI8d/hVP1thqtBRFgCQAOkBtlTlO6lrGL62wUFM6w==","signatures":[{"sig":"MEQCIEb+3AzLTtXkWYfhKNzyNDBUQF+kKbk71jxlHYG+E/gzAiBAcJq3fZOy/lBb1Hj4hXyKL7cahNqCS1iEbx/lz1y3gg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128652},"main":"dist/src/index.js","_from":"file:acf-kit-core-1.2.0.tgz","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./fields/builtins":{"types":"./dist/src/fields/builtins.d.ts","import":"./dist/src/fields/builtins.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/d3fa85856131e911591d750154cd7488/acf-kit-core-1.2.0.tgz","_integrity":"sha512-VbGZHYT64KxlJOEUHbnpBGOEMAJWszf9w+c+QQRYbJsbpBI8d/hVP1thqtBRFgCQAOkBtlTlO6lrGL62wUFM6w==","_npmVersion":"10.8.2","description":"[![npm version](https://img.shields.io/npm/v/@acf-kit/core.svg)](https://npmjs.com/package/@acf-kit/core) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/) [![MIT License](https://img.shields.io/badg","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.0_1747986766347_0.07290169088057508","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@acf-kit/core","version":"1.3.0","_id":"@acf-kit/core@1.3.0","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"dist":{"shasum":"039185ba5b9d54a4a3bc0b9e0497d7e7a70c5eaa","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.3.0.tgz","fileCount":108,"integrity":"sha512-2EHhbsIVtsvoDAZxPpCEIQ65qi/BE2TNQPbmvHodX8/on+8ApkvyD5gFRVpTH30awd1qr+rn42qlfqtzGqaeGw==","signatures":[{"sig":"MEUCID7GYkbaacWXijzVZgeAK0ICtFLmmEp0Rne0rNtHzVKzAiEA5qANbP93SwkGz7CetsQjhL2A4j3kHKBj7M8kTLq6swU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137382},"main":"dist/src/index.js","_from":"file:acf-kit-core-1.3.0.tgz","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./fields/builtins":{"types":"./dist/src/fields/builtins.d.ts","import":"./dist/src/fields/builtins.js"}},"scripts":{"build":"tsc"},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/c99ed55f857c954c53213f80f923820e/acf-kit-core-1.3.0.tgz","_integrity":"sha512-2EHhbsIVtsvoDAZxPpCEIQ65qi/BE2TNQPbmvHodX8/on+8ApkvyD5gFRVpTH30awd1qr+rn42qlfqtzGqaeGw==","_npmVersion":"10.8.2","description":"[![npm version](https://img.shields.io/npm/v/@acf-kit/core.svg)](https://npmjs.com/package/@acf-kit/core) [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/) [![MIT License](https://img.shields.io/badg","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/core_1.3.0_1748008037096_0.11063186077902687","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@acf-kit/core","version":"1.3.1","main":"dist/src/index.js","types":"dist/src/index.d.ts","exports":{".":{"import":"./dist/src/index.js","types":"./dist/src/index.d.ts"},"./fields/builtins":{"import":"./dist/src/fields/builtins.js","types":"./dist/src/fields/builtins.d.ts"}},"publishConfig":{"access":"public"},"dependencies":{"zod":"^3.25.20"},"devDependencies":{},"peerDependencies":{},"scripts":{"build":"tsc"},"_id":"@acf-kit/core@1.3.1","description":"> **A fully type-safe, extensible, headless field & form engine for modern web frameworks.**","_integrity":"sha512-CrGar8lEHRkY7fELs9s5pucrrnjQDwg/4WuSaSIpjGxkZiN6epdpK2vBFTibQotEIl0rilMU7rDI5ehBrXKSIg==","_resolved":"/private/var/folders/3s/k0yt28694fg59q27mt7vltdw0000gn/T/42b835f7f040f7572abb8a04e76b486a/acf-kit-core-1.3.1.tgz","_from":"file:acf-kit-core-1.3.1.tgz","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-CrGar8lEHRkY7fELs9s5pucrrnjQDwg/4WuSaSIpjGxkZiN6epdpK2vBFTibQotEIl0rilMU7rDI5ehBrXKSIg==","shasum":"d4ad95a145e51ced63e0e8cb123c87c1d16d551b","tarball":"https://registry.npmjs.org/@acf-kit/core/-/core-1.3.1.tgz","fileCount":108,"unpackedSize":131473,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC5njB1sZV+JtHliT2hOnMzdofRp2oB6NOrRYhlssaK7AiEAwP+g0HNuMyz8yOVshQ30nsfbwQdZV1a5z3FXhMNAdoU="}]},"_npmUser":{"name":"codeideal","email":"shayanpng@gmail.com"},"directories":{},"maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_1.3.1_1748014059794_0.4199217900639276"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-21T15:01:34.171Z","modified":"2025-05-23T15:27:40.121Z","0.0.2":"2025-05-21T15:01:34.432Z","1.0.0":"2025-05-22T09:45:21.713Z","1.0.1":"2025-05-22T19:42:59.541Z","1.0.2":"2025-05-22T19:45:32.054Z","1.1.0":"2025-05-22T20:01:51.726Z","1.1.1":"2025-05-22T20:14:32.079Z","1.1.2":"2025-05-22T20:25:55.962Z","1.2.0":"2025-05-23T07:52:46.557Z","1.3.0":"2025-05-23T13:47:17.341Z","1.3.1":"2025-05-23T15:27:39.959Z"},"description":"> **A fully type-safe, extensible, headless field & form engine for modern web frameworks.**","maintainers":[{"name":"codeideal","email":"shayanpng@gmail.com"}],"readme":"# acf-kit/core\n\n> **A fully type-safe, extensible, headless field & form engine for modern web frameworks.**\n\n---\n\n## Why acf-kit/core?\n\n- **TypeScript-first:** All field configs, values, and errors are strictly typed. No more `any` or `unknown` in your app code—get full type inference everywhere.\n- **Composable & Extensible:** Register custom field types, plugins, and validation logic. Compose arbitrarily deep/nested forms with confidence.\n- **Advanced Field Types:** Supports primitives, group, repeater, and flexible content fields—each with ergonomic, type-safe APIs.\n- **Framework Agnostic:** Use with React, Vue, Svelte, or any UI—no UI or framework lock-in.\n- **Minimal & Modular:** Tree-shakable, zero dependencies, and only core logic. Bring your own UI.\n- **Plugin-First Architecture:** Registry and event emitter for easy extension and advanced use cases.\n- **DX First:** JSDoc, error codes, and a plugin-first architecture for a seamless developer experience. All error codes and constants are exported for programmatic use.\n\n---\n\n## Installation\n\n```sh\npnpm add @acf-kit/core\n# or\nnpm install @acf-kit/core\n# or\nyarn add @acf-kit/core\n```\n\n---\n\n## Quick Start\n\n```ts\nimport { Form } from \"@acf-kit/core\";\nimport { registerAllBuiltins } from \"@acf-kit/core/fields/builtins\";\n\nregisterAllBuiltins();\n\nconst form = new Form({\n  fields: [\n    { name: \"username\", type: \"text\", required: true },\n    { name: \"age\", type: \"number\", validate: v => v < 0 ? \"Negative age!\" : undefined }\n  ]\n});\n\nform.setValue(\"username\", \"John\");\nform.setValue(\"age\", 42);\n\nif (!form.validate()) {\n  console.log(form.getErrors());\n}\n```\n\n---\n\n## Core Concepts\n\n### Fields\n- **Primitive fields:** `text`, `number`, `boolean`, `date`, `textarea`.\n- **Group:** Nested object fields (like a sub-form).\n- **Repeater:** Array of fieldsets (repeatable groups).\n- **Flexible:** Array of heterogeneous layouts (dynamic blocks, like CMS flexible content).\n- **Custom fields:** Register your own types with full type safety.\n\n### Forms\n- A form is a collection of fields, with methods for value access, validation, and conditional logic.\n- All values, errors, and configs are fully typed and inferred.\n\n### Plugins & Registry\n- Register new field types, plugins, or validation logic.\n- Use the event emitter for advanced extension and lifecycle hooks.\n\n---\n\n## Type-Safe Field System\n\n### Defining Fields\n\nUse the ergonomic `createFields` utility for deeply type-safe field definitions:\n\n```ts\nimport { createFields } from \"@acf-kit/core/fields/types\";\n\nconst fields = createFields<{ username: string; age: number }>()([\n  { name: \"username\", type: \"text\", required: true },\n  { name: \"age\", type: \"number\" }\n]);\n```\n\n### Advanced/Nested Fields Example\n\n```ts\nconst fields = createFields<MyValues>()([\n  { name: \"username\", type: \"text\" },\n  {\n    name: \"profile\",\n    type: \"group\",\n    fields: createFields<MyValues[\"profile\"]>()([\n      { name: \"website\", type: \"text\" },\n      { name: \"location\", type: \"text\" }\n    ])\n  },\n  {\n    name: \"tags\",\n    type: \"repeater\",\n    fields: createFields<MyValues[\"tags\"][number]>()([\n      { name: \"label\", type: \"text\" }\n    ])\n  },\n  {\n    name: \"content\",\n    type: \"flexible\",\n    layouts: [\n      {\n        name: \"textBlock\",\n        label: \"Text Block\",\n        fields: createFields<{ text: string }>()([\n          { name: \"text\", type: \"textarea\" }\n        ])\n      },\n      {\n        name: \"imageBlock\",\n        label: \"Image Block\",\n        fields: createFields<{ url: string }>()([\n          { name: \"url\", type: \"text\" }\n        ])\n      }\n    ]\n  }\n]);\n```\n\n---\n\n## API Reference\n\n### Form\n\n```ts\nnew Form<TValues>({ fields })\n```\n\n#### Methods\n- `setValue(name: string, value: any)`: Set a field's value.\n- `getValue(name: string)`: Get a field's value.\n- `getValues()`: Get all field values as a record (fully typed).\n- `validate()`: Run synchronous validation, returns `true` if valid.\n- `validateAsync()`: Run async validation, returns error map.\n- `getErrors()`: Get current error map.\n- `isFieldVisible(name: string)`: Check if a field is visible (based on `visibleIf`).\n- `isFieldEnabled(name: string)`: Check if a field is enabled (based on `enabledIf`).\n- `getVisibleFields()`: Get all visible fields.\n- `getEnabledFields()`: Get all enabled fields.\n- `on(event, cb)`: Subscribe to form events (field:change, field:error, etc).\n- `off(event, cb)`: Unsubscribe from form events.\n\n### Field\n\n- `setValue(value)`: Set the field value.\n- `getValue()`: Get the field value.\n- `validateAsync(values)`: Async validation for the field.\n- `onChange(cb)`: Subscribe to field value changes.\n- `offChange(cb)`: Unsubscribe from field value changes.\n\n---\n\n## Extending & Plugins\n\nRegister new field types, plugins, or validation logic:\n\n```ts\nimport { registerFieldType } from \"@acf-kit/core/fields/registry\";\nimport { Field } from \"@acf-kit/core/fields/fieldBase\";\n\nregisterFieldType(\"color\", (config) => {\n  // ...return a Field instance\n});\n```\n\nYou can also extend the type system via declaration merging for custom field types:\n\n```ts\ndeclare module '@acf-kit/core/fields/types' {\n  interface FieldTypeMap { color: string; }\n}\n```\n\n---\n\n## Error Handling\n\nAll errors are instances of custom error classes with error codes:\n\n- `AcfKitError` — Base error for all acf-kit/core logic.\n- `FieldTypeError` — Thrown when a field type is not registered or invalid.\n- `FormConfigError` — Thrown when a form has invalid configuration.\n\nError codes are exported from `constants.ts` for programmatic use.\n\n---\n\n## TypeScript & DX Tips\n\n- **Full Inference:** All APIs are fully typed. Use TypeScript's type inference for field values, errors, and configs.\n- **Generics:** Use `FieldConfig<T>` and `Form<T>` generics for maximum type safety in custom field and form definitions.\n- **Declaration Merging:** Extend the type system for custom field types via module augmentation.\n- **JSDoc:** All public APIs are documented with JSDoc for in-editor help.\n- **Error Codes:** All error codes and constants are exported for programmatic use.\n- **No UI Lock-in:** Use with any UI framework or headless—bring your own components.\n\n---\n\n## Recipes\n\n### Conditional Logic\n\n```ts\n{ name: \"bio\", type: \"textarea\", visibleIf: values => !!values.username }\n```\n\n### Custom Validation\n\n```ts\n{ name: \"age\", type: \"number\", validate: v => v < 0 ? \"Negative age!\" : undefined }\n```\n\n### Deeply Nested Forms\n\nUse group, repeater, and flexible fields for arbitrarily nested/dynamic structures.\n\n### Async Validation\n\n```ts\n{ name: \"email\", type: \"text\", validate: async (v) => await checkEmail(v) ? undefined : \"Email taken\" }\n```\n\n### Plugin Example: Registering a Custom Field\n\n```ts\nimport { registerFieldType } from \"@acf-kit/core/fields/registry\";\nimport { Field } from \"@acf-kit/core/fields/fieldBase\";\n\nregisterFieldType(\"color\", (config) => new Field(config));\n```\n\n---\n\n## FAQ\n\n**Q: Can I use this with React, Vue, Svelte, or plain JS?**\n> Yes! acf-kit/core is UI-agnostic. Use it with any UI or framework.\n\n**Q: Is it really type-safe for deeply nested/complex forms?**\n> Yes! All field values, configs, and errors are deeply inferred and type-checked.\n\n**Q: How do I add my own field type?**\n> Use `registerFieldType` and (optionally) extend the type system via module augmentation.\n\n**Q: Does it support async validation?**\n> Yes! Use `validateAsync` on fields or forms for async validation logic.\n\n**Q: Is it production-ready?**\n> Yes! The core is stable, tested, and used in real projects.\n\n---\n\n## License\n\nMIT\n\n---\n\n## Credits\n\nInspired by ACF, Formik, and modern headless CMSs. Built with ❤️ by the acf-kit team and contributors.\n","readmeFilename":"README.md"}