{"_id":"@sanity/sanitype","_rev":"119-0306300cebd6ecc6edc0a4eddd0ca362","name":"@sanity/sanitype","dist-tags":{"latest":"0.6.2"},"versions":{"0.0.0":{"name":"@sanity/sanitype","version":"0.0.0","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.0.0","maintainers":[{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"dist":{"shasum":"8c37aa703e2d24bfd3dc4ea533ea775a1499d626","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.0.0.tgz","fileCount":7,"integrity":"sha512-vl1syCAOC7TSNIy8U5f3P8ul2Ulmr5CMMw9Bmgw56uoBSdR3LJGJ4lWxq1Xsr9rEPyuS8HdAWogQOjygn2CgNQ==","signatures":[{"sig":"MEUCIQCWlaQ+jKdcr9jYmArm6gfPwk9CSLuGcxvCBMv6cJD5swIgILNOa42UhlJcTspPID0+KRN26N+6ItAb1Te9VacMEgs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163790},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","source":"./src/index.ts","engines":{"node":">= 18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"15d37b68e535f555494d30f4874fdab48aff5d4d","scripts":{"dev":"run-p pkg:watch test:watch test:types:watch","lint":"eslint . --ext .cjs,.js,.ts,.tsx --quiet","test":"vitest run","build":"run-s clean pkg:build pkg:check","check":"npm-run-all --serial clean --parallel typecheck lint test test:types","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:types":"vitest typecheck --no-watch","test:watch":"vitest","example:studio":"vite --config examples/studio/vite.config.ts examples/studio","prepublishOnly":"npm run build","test:types:watch":"vitest typecheck"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_npmVersion":"9.5.1","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"_nodeVersion":"18.16.0","dependencies":{"object-inspect":"^1.12.3"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^3.12.8","zod":"^3.22.2","rxjs":"^7.8.1","vite":"^4.4.9","react":"^18.2.0","eslint":"^8.48.0","rimraf":"^5.0.1","vitest":"^0.34.3","mendoza":"^3.0.3","prettier":"^3.0.3","react-dom":"^18.2.0","refractor":"^4.8.1","@sanity/ui":"^1.8.2","@vitest/ui":"^0.34.3","typescript":"^5.2.2","npm-run-all":"^4.1.5","@types/react":"^18.2.21","@sanity/client":"^6.4.9","@bjoerge/mutiny":"^0.0.2","@types/react-dom":"^18.2.7","@sanity/pkg-utils":"^2.4.8","eslint-plugin-import":"^2.28.1","@types/object-inspect":"^1.8.2","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@typescript-eslint/parser":"^6.5.0","prettier-plugin-packagejson":"^2.4.5","@typescript-eslint/eslint-plugin":"^6.5.0"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.0.0_1694171973055_0.09696264555271283","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"@sanity/sanitype","version":"0.0.1","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.0.1","maintainers":[{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"dist":{"shasum":"44a2016b3b7aa7f21259f7750971af528cfe543e","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.0.1.tgz","fileCount":50,"integrity":"sha512-5AaJu3IiuF2zZEIPYIVnmWhtrEOLyhOr7Y0FVZ9Jta2M0c1sII5rZ+hVrMVh6pvn95+Z/BxLhye6Z4z64ZANGw==","signatures":[{"sig":"MEQCIDbFscJgkIlLxOTc7evGycWbj7NB2RUuVQ8SrZYe3YiNAiAvBOXO6M7fPEc3EvdHQlR6ChF+Cs95KQGwNVyi9lLPmg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":603402},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","source":"./src/index.ts","engines":{"node":">= 18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"b4b13fe70825e6c2210fdb1ccbd1d951cbfd26d7","scripts":{"dev":"run-p pkg:watch test:watch test:types:watch","lint":"eslint . --ext .cjs,.js,.ts,.tsx --quiet","test":"vitest run","build":"run-s clean pkg:build pkg:check","check":"npm-run-all --serial clean --parallel typecheck lint test test:types","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:types":"vitest typecheck --no-watch","test:watch":"vitest","example:studio":"vite --config examples/studio/vite.config.ts examples/studio","prepublishOnly":"npm run build","test:types:watch":"vitest typecheck"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_npmVersion":"9.5.1","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"_nodeVersion":"18.16.0","dependencies":{"object-inspect":"^1.12.3"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^3.12.8","zod":"^3.22.2","rxjs":"^7.8.1","vite":"^4.4.9","react":"^18.2.0","eslint":"^8.48.0","rimraf":"^5.0.1","vitest":"^0.34.3","mendoza":"^3.0.3","prettier":"^3.0.3","react-dom":"^18.2.0","refractor":"^4.8.1","@sanity/ui":"^1.8.2","@vitest/ui":"^0.34.3","typescript":"^5.2.2","npm-run-all":"^4.1.5","@types/react":"^18.2.21","@sanity/client":"^6.4.9","@bjoerge/mutiny":"^0.0.2","@types/react-dom":"^18.2.7","@sanity/pkg-utils":"^2.4.8","eslint-plugin-import":"^2.28.1","@types/object-inspect":"^1.8.2","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@typescript-eslint/parser":"^6.5.0","prettier-plugin-packagejson":"^2.4.5","@typescript-eslint/eslint-plugin":"^6.5.0"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.0.1_1694172252246_0.39035430357970724","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@sanity/sanitype","version":"0.0.2","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.0.2","maintainers":[{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"dist":{"shasum":"05dfae471ddd10f00bd4e58476e5cd94a53b6a90","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.0.2.tgz","fileCount":52,"integrity":"sha512-BuIFyt5Nj79t1FdJHGXIXdfl37e1VJx03Ea5F66/QjgTY8qwvLf1JSaYr1+ZWK1fqVpDdId0tOBXxZ0S6gCGMQ==","signatures":[{"sig":"MEUCIQDW08Aif4ETIor2RzPS+Ym7tUAAWHK2rFWIayVnVtc+eQIgD698rgGT0vdXU97LfFTjrS1ZGOs4X5K4g0OS/BJUGGI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":608537},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","source":"./src/index.ts","engines":{"node":">= 18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"92d3412db0c45388348311a65e1cb9dabe475243","scripts":{"dev":"run-p pkg:watch test:watch test:types:watch","lint":"eslint . --ext .cjs,.js,.ts,.tsx --quiet","test":"vitest run","build":"run-s clean pkg:build pkg:check","check":"npm-run-all --serial clean --parallel typecheck lint test test:types","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:types":"vitest typecheck --no-watch","test:watch":"vitest","example:studio":"vite --config examples/studio/vite.config.ts examples/studio","prepublishOnly":"npm run build","test:types:watch":"vitest typecheck"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_npmVersion":"9.8.1","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"_nodeVersion":"20.6.1","dependencies":{"object-inspect":"^1.12.3"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^3.12.8","zod":"^3.22.2","rxjs":"^7.8.1","vite":"^4.4.9","react":"^18.2.0","eslint":"^8.48.0","rimraf":"^5.0.1","vitest":"^0.34.3","mendoza":"^3.0.3","prettier":"^3.0.3","react-dom":"^18.2.0","refractor":"^4.8.1","@sanity/ui":"^1.8.2","@vitest/ui":"^0.34.3","typescript":"^5.2.2","npm-run-all":"^4.1.5","@types/react":"^18.2.21","@sanity/client":"^6.4.9","@bjoerge/mutiny":"^0.0.2","@types/react-dom":"^18.2.7","@sanity/pkg-utils":"^2.4.8","eslint-plugin-import":"^2.28.1","@types/object-inspect":"^1.8.2","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@typescript-eslint/parser":"^6.5.0","prettier-plugin-packagejson":"^2.4.5","@typescript-eslint/eslint-plugin":"^6.5.0"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.0.2_1694593359123_0.09011707513363354","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@sanity/sanitype","version":"0.1.0","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.1.0","maintainers":[{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"mikolajsanity","email":"mikolaj@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"dist":{"shasum":"0292c131a64a8fc3004dd03b58b345b85e6beeda","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.1.0.tgz","fileCount":334,"integrity":"sha512-P+I0IK31zJzCBN08nJIvEItWeh+tkkvc4krCQRSmDsPdyoDraZxNTv1dD2Q2Fgw5iXv1iPQtb2iuGnLh0bzFgA==","signatures":[{"sig":"MEUCIQDfEE+i42i+eIIxvW+po01G7s0KLclUzzIkNmGi/dYW2QIgEa2LlNlUg8QbtoetubPUDsMhtrOnnDnWzOcSVi1kCv8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":926031},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","source":"./src/index.ts","engines":{"node":">= 18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"faad95edb99711272a2159ac491ebdfae2121373","scripts":{"dev":"run-p pkg:watch typecheck:watch typecheck:examples:watch test:watch test:types:watch","lint":"eslint . --ext .cjs,.js,.ts,.tsx --quiet","test":"vitest run","build":"run-s clean pkg:build pkg:check","check":"npm-run-all --serial clean --parallel typecheck typecheck:examples lint test test:types","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:types":"vitest typecheck --no-watch","test:watch":"vitest","example:studio":"vite --config examples/studio/vite.config.ts examples/studio","prepublishOnly":"npm run build","typecheck:watch":"tsc -b ./examples --watch","test:types:watch":"vitest typecheck","typecheck:examples":"tsc -b ./examples","typecheck:examples:watch":"tsc -b ./examples --watch"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_npmVersion":"9.5.1","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"_nodeVersion":"18.16.0","dependencies":{},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^3.13.0","zod":"^3.22.2","rxjs":"^7.8.1","vite":"^4.4.9","react":"^18.2.0","eslint":"^8.50.0","rimraf":"^5.0.5","vitest":"^0.34.6","mendoza":"^3.0.3","prettier":"^3.0.3","react-dom":"^18.2.0","refractor":"^4.8.1","@sanity/ui":"^1.8.2","@vitest/ui":"^0.34.6","typescript":"^5.2.2","npm-run-all":"^4.1.5","@types/react":"^18.2.24","@sanity/client":"^6.4.12","@bjoerge/mutiny":"^0.1.0","@types/react-dom":"^18.2.8","@sanity/pkg-utils":"^2.4.9","eslint-plugin-import":"^2.28.1","@types/object-inspect":"^1.8.2","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.0","@typescript-eslint/parser":"^6.7.3","prettier-plugin-packagejson":"^2.4.6","@typescript-eslint/eslint-plugin":"^6.7.3"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.1.0_1696281714823_0.336438990604776","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@sanity/sanitype","version":"0.2.0","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.2.0","maintainers":[{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"dist":{"shasum":"c168101a6588799b67c429f1cf835963174dda99","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.2.0.tgz","fileCount":431,"integrity":"sha512-wK2durDi2ybOm50GWrjGh8S3EEJyErrB7eRxnCHBEnuNcbMiaX/6nATI6Jqg8U5O+vFfGYgY7bQ4+Sien3YzdA==","signatures":[{"sig":"MEUCIQCv2pMBuXUmK7TT369VptpPEsU5790A8L+GcvmqR4QxqQIgU27fke8AjrA5ekbhcis7iDhrJhkUPkl/fd3cPJ6bwG0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1172763},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","source":"./src/index.ts","engines":{"node":">= 18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"82e4f209e2358e5e315614a74f0661af258a9ac8","scripts":{"dev":"run-p pkg:watch typecheck:watch typecheck:examples:watch test:watch","lint":"eslint . --ext .cjs,.js,.ts,.tsx --quiet","test":"vitest run --typecheck","build":"run-s clean pkg:build pkg:check","check":"npm-run-all --serial clean pkg:build --parallel typecheck typecheck:examples lint test pkg:check","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:watch":"vitest --typecheck","vercel-build":"vite build --config examples/studio/vite.config.ts examples/studio","example:studio":"vite --config examples/studio/vite.config.ts examples/studio","prepublishOnly":"npm run build","typecheck:watch":"tsc -b ./examples --watch","example:v3-studio":"(cd examples/v3-studio && npm run dev)","typecheck:examples":"tsc -b ./examples","typecheck:examples:watch":"tsc -b ./examples --watch"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"workspaces":["./examples/studio","./examples/v3-studio"],"_npmVersion":"9.8.1","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"_nodeVersion":"18.18.2","dependencies":{"date-fns":"^2.30.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.6.2","vite":"^5.0.8","eslint":"^8.55.0","rimraf":"^5.0.5","vitest":"^1.0.4","prettier":"^3.1.1","@vitest/ui":"^1.0.4","typescript":"^5.3.3","npm-run-all":"^4.1.5","@sanity/client":"^6.10.0","@bjoerge/mutiny":"^0.5.1","@sanity/pkg-utils":"^3.3.5","eslint-plugin-import":"^2.29.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.14.0","prettier-plugin-packagejson":"^2.4.7","@typescript-eslint/eslint-plugin":"^6.14.0"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.2.0_1702510485568_0.2676856645940542","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@sanity/sanitype","version":"0.3.0","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.3.0","maintainers":[{"name":"tiit.kass.saity","email":"tiit.kass@sanity.io"},{"name":"christianhg","email":"services@groengaard.dk"},{"name":"joan_miralles_paez","email":"joan.miralles@sanity.io"},{"name":"jwoods-sanity","email":"james.woods@sanity.io"},{"name":"armandocerna","email":"armando@cerna.ca"},{"name":"daniel.malmer","email":"daniel.malmer@sanity.io"},{"name":"jordanl17","email":"jordanl17@me.com"},{"name":"tambet","email":"tambet.masik@gmail.com"},{"name":"jtpetty","email":"tommy@sanity.io"},{"name":"drewsanity","email":"drew.lyton@sanity.io"},{"name":"refiito","email":"margus@sanity.io"},{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/sanitype#readme","bugs":{"url":"https://github.com/sanity-io/sanitype/issues"},"dist":{"shasum":"676027662c5196379d916fc6c992c47e99170f53","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.3.0.tgz","fileCount":92,"integrity":"sha512-p96zGJmZWxd6hSMJnb2zLVhqAVsMv4ishWOuK4a0nf0P/iG7QlLoCBGG+7Eqv7S6ySHtq86dnbmXN/WN6Nx6FQ==","signatures":[{"sig":"MEQCIFeRY/XUsmXfJ/HhRITlcEX7YNZgzerfFO3V3hC9l2g9AiARTfD6Z5DTOdPF/vSpeMB0QwpxLXPvfUXm9GKR5ZF6tg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":470972},"main":"./dist/index.cjs","type":"module","_from":"file:sanity-sanitype-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">= 18"},"exports":{".":{"import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"run-p pkg:watch typecheck:watch test:watch","lint":"eslint . --ext .cjs,.js,.ts,.tsx --quiet","test":"vitest run --typecheck","build":"run-s pkg:build pkg:check","check":"npm-run-all --serial clean pkg:build --parallel typecheck lint test pkg:check","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:watch":"vitest --typecheck","example:studio":"(cd examples/studio && npm run dev)","typecheck:watch":"tsc --watch"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"/private/var/folders/0f/4jx7p3354q7f86_z629rjf440000gn/T/e1dac94c192ba87e786882a73db952aa/sanity-sanitype-0.3.0.tgz","_integrity":"sha512-p96zGJmZWxd6hSMJnb2zLVhqAVsMv4ishWOuK4a0nf0P/iG7QlLoCBGG+7Eqv7S6ySHtq86dnbmXN/WN6Nx6FQ==","repository":{"url":"git+https://github.com/sanity-io/sanitype.git","type":"git"},"_npmVersion":"10.7.0","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"sideEffects":false,"_nodeVersion":"20.14.0","browserslist":"extends @sanity/browserslist-config","dependencies":{"date-fns":"^3.6.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.3","vite":"^5.3.5","eslint":"^8.57.0","rimraf":"^6.0.1","vitest":"^2.0.5","prettier":"^3.3.3","@vitest/ui":"^2.0.5","typescript":"^5.5.4","npm-run-all":"^4.1.5","@sanity/client":"^6.21.1","@bjoerge/mutiny":"^0.6.0","@sanity/pkg-utils":"^6.10.7","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^7.18.0","prettier-plugin-packagejson":"^2.5.1","eslint-plugin-unused-imports":"^4.0.1","@typescript-eslint/eslint-plugin":"^7.18.0","eslint-plugin-simple-import-sort":"^12.1.1"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.3.0_1722528585428_0.6239483895412488","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@sanity/sanitype","version":"0.3.1","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.3.1","maintainers":[{"name":"tiit.kass.saity","email":"tiit.kass@sanity.io"},{"name":"christianhg","email":"services@groengaard.dk"},{"name":"joan_miralles_paez","email":"joan.miralles@sanity.io"},{"name":"jwoods-sanity","email":"james.woods@sanity.io"},{"name":"armandocerna","email":"armando@cerna.ca"},{"name":"daniel.malmer","email":"daniel.malmer@sanity.io"},{"name":"jordanl17","email":"jordanl17@me.com"},{"name":"tambet","email":"tambet.masik@gmail.com"},{"name":"jtpetty","email":"tommy@sanity.io"},{"name":"drewsanity","email":"drew.lyton@sanity.io"},{"name":"refiito","email":"margus@sanity.io"},{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/sanitype#readme","bugs":{"url":"https://github.com/sanity-io/sanitype/issues"},"dist":{"shasum":"6830d55d3e3bd97264a07ee990dca759a0c1b4a4","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.3.1.tgz","fileCount":92,"integrity":"sha512-rVgpkxI4QW8ksCEo14eMoXonDY2l5vpy0DeG5pTJN449gxXI6qZ+6nIgsE49SjEyh9ET/i+zynsdB28XGuQvZw==","signatures":[{"sig":"MEUCIHNwkJnBrUevaVqvatMi7twzYhI/AwY5zCQb+RmuWGFVAiEAj7HYFa/btHk2LDywVzAZsXwFqLSRJfymXf2/95Xq9rg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":471075},"main":"./dist/index.cjs","type":"module","_from":"file:sanity-sanitype-0.3.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">= 18"},"exports":{".":{"import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"run-p pkg:watch typecheck:watch test:watch","lint":"eslint . --ext .cjs,.js,.ts,.tsx --quiet","test":"vitest run --typecheck","build":"run-s pkg:build pkg:check","check":"npm-run-all --serial clean pkg:build --parallel typecheck lint test pkg:check","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:watch":"vitest --typecheck","example:studio":"(cd examples/studio && npm run dev)","typecheck:watch":"tsc --watch","typecheck:examples":"tsc -p ./examples/tsconfig.json","typecheck:examples:watch":"tsc -p ./examples/tsconfig.json --watch"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"/private/var/folders/0f/4jx7p3354q7f86_z629rjf440000gn/T/af29f76d8dd2c6e6ded321208834ce6f/sanity-sanitype-0.3.1.tgz","_integrity":"sha512-rVgpkxI4QW8ksCEo14eMoXonDY2l5vpy0DeG5pTJN449gxXI6qZ+6nIgsE49SjEyh9ET/i+zynsdB28XGuQvZw==","repository":{"url":"git+https://github.com/sanity-io/sanitype.git","type":"git"},"_npmVersion":"10.7.0","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"sideEffects":false,"_nodeVersion":"20.14.0","browserslist":"extends @sanity/browserslist-config","dependencies":{"date-fns":"^3.6.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.3","vite":"^5.3.5","eslint":"^8.57.0","rimraf":"^6.0.1","vitest":"^2.0.5","prettier":"^3.3.3","@vitest/ui":"^2.0.5","typescript":"^5.5.4","npm-run-all":"^4.1.5","@sanity/client":"^6.21.1","@sanity/pkg-utils":"^6.10.7","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^7.18.0","prettier-plugin-packagejson":"^2.5.1","eslint-plugin-unused-imports":"^3.2.0","@typescript-eslint/eslint-plugin":"^7.18.0","eslint-plugin-simple-import-sort":"^12.1.1"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.3.1_1722531151747_0.3762822760185258","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@sanity/sanitype","version":"0.4.0","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.4.0","maintainers":[{"name":"tdfka_rick","email":"joshua.ellis18@gmail.com"},{"name":"jjburbridge","email":"jonathan.burbridge@sanity.io"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"danielsgroves","email":"hello@danielgroves.net"},{"name":"colepeters","email":"cole@colepeters.com"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"tbeseda","email":"tbeseda@gmail.com"},{"name":"ryanbonial-sanity","email":"ryan.bonial@sanity.io"},{"name":"madken","email":"kenneth.madsen@sanity.io"},{"name":"tiit.kass.saity","email":"tiit.kass@sanity.io"},{"name":"christianhg","email":"services@groengaard.dk"},{"name":"joan_miralles_paez","email":"joan.miralles@sanity.io"},{"name":"jwoods-sanity","email":"james.woods@sanity.io"},{"name":"armandocerna","email":"armando@cerna.ca"},{"name":"daniel.malmer","email":"daniel.malmer@sanity.io"},{"name":"jordanl17","email":"jordanl17@me.com"},{"name":"tambet","email":"tambet.masik@gmail.com"},{"name":"drewsanity","email":"drew.lyton@sanity.io"},{"name":"refiito","email":"margus@sanity.io"},{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"jonabc","email":"jon.ruskin@gmail.com"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"nina.andal","email":"nina.andal.aarvik@gmail.com"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/sanitype#readme","bugs":{"url":"https://github.com/sanity-io/sanitype/issues"},"dist":{"shasum":"c21eb493bfe4ef6683ab100f3af1af96b7457af6","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.4.0.tgz","fileCount":96,"integrity":"sha512-iNqtX099vddRox1a3QzuIbhfiG3A/eYN7LLK8ZU12iQM/IltMs1t4rUiS1su7CGJ2DaLLdlZ7F8GAILfk8qFXQ==","signatures":[{"sig":"MEUCIQD0tKgKQPt5Zk4Pi3EiCUb2dssOMF387kQB1H6dyJhHZwIgWnkHd6zLnt8QAz0EGJUNsuQXXCBS8TWPGRvPu0WMGuQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":479138},"main":"./dist/index.cjs","type":"module","_from":"file:sanity-sanitype-0.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">= 18"},"exports":{".":{"import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"run-p pkg:watch typecheck:watch test:watch","lint":"eslint . --ext .cjs,.js,.ts,.tsx --quiet","test":"vitest run --typecheck","build":"run-s pkg:build pkg:check","check":"npm-run-all --serial clean pkg:build --parallel typecheck lint test pkg:check","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:watch":"vitest --typecheck","typecheck:watch":"tsc --watch","typecheck:examples":"tsc -p ./examples/tsconfig.json","example:compat-studio":"(cd examples/compat-studio && npm run dev)","typecheck:examples:watch":"tsc -p ./examples/tsconfig.json --watch"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"/private/var/folders/sz/fc6b_5zn3nq0gm2vxvwxjd740000gn/T/8c007a5ec7bb5c96c15b50868590e1de/sanity-sanitype-0.4.0.tgz","_integrity":"sha512-iNqtX099vddRox1a3QzuIbhfiG3A/eYN7LLK8ZU12iQM/IltMs1t4rUiS1su7CGJ2DaLLdlZ7F8GAILfk8qFXQ==","repository":{"url":"git+https://github.com/sanity-io/sanitype.git","type":"git"},"_npmVersion":"10.9.0","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"sideEffects":false,"_nodeVersion":"20.10.0","browserslist":"extends @sanity/browserslist-config","dependencies":{"date-fns":"^4.1.0","@sanity/types":"^3.61.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","vite":"^5.4.9","eslint":"^8","rimraf":"^6.0.1","vitest":"^2.1.3","prettier":"^3.3.3","@vitest/ui":"^2.1.3","typescript":"^5.6.3","npm-run-all":"^4.1.5","@sanity/client":"^6.22.2","@sanity/pkg-utils":"^6.11.4","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.10.0","prettier-plugin-packagejson":"^2.5.3","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.10.0","eslint-plugin-simple-import-sort":"^12.1.1"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.4.0_1729349643163_0.18419941556764607","host":"s3://npm-registry-packages"}},"0.6.1":{"name":"@sanity/sanitype","version":"0.6.1","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.6.1","maintainers":[{"name":"ausha","email":"ausha@sanity.io"},{"name":"kaspar.lippmaa.sanity","email":"kaspar.lippmaa@sanity.io"},{"name":"tdfka_rick","email":"joshua.ellis18@gmail.com"},{"name":"jjburbridge","email":"jonathan.burbridge@sanity.io"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"danielsgroves","email":"hello@danielgroves.net"},{"name":"colepeters","email":"cole@colepeters.com"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"tbeseda","email":"tbeseda@gmail.com"},{"name":"ryanbonial-sanity","email":"ryan.bonial@sanity.io"},{"name":"madken","email":"kenneth.madsen@sanity.io"},{"name":"tiit.kass.saity","email":"tiit.kass@sanity.io"},{"name":"christianhg","email":"services@groengaard.dk"},{"name":"joan_miralles_paez","email":"joan.miralles@sanity.io"},{"name":"jwoods-sanity","email":"james.woods@sanity.io"},{"name":"armandocerna","email":"armando@cerna.ca"},{"name":"daniel.malmer","email":"daniel.malmer@sanity.io"},{"name":"jordanl17","email":"jordanl17@me.com"},{"name":"tambet","email":"tambet.masik@gmail.com"},{"name":"drewsanity","email":"drew.lyton@sanity.io"},{"name":"refiito","email":"margus@sanity.io"},{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/sanitype#readme","bugs":{"url":"https://github.com/sanity-io/sanitype/issues"},"dist":{"shasum":"b839e18b0971bb44a9ade788b28ce0a9a98584ea","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.6.1.tgz","fileCount":107,"integrity":"sha512-pujGR04N1xGjB6Dk7FkuSDnAj8cBdQ88TY8ibF474Xzgoz89LC8bQLtfE+2RY4xunNMbI4lvXVbhQ71Iq63obg==","signatures":[{"sig":"MEQCIDF76eU2Is1Gho/bSICS6A/73NWCu/NXkh194BdjJ+BrAiAVo5JCU7gDokLM5fSrcQWEgxIrwjW5E3YMMAV+EySAEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fsanitype@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":588586},"main":"./dist/index.cjs","type":"module","_from":"file:sanity-sanitype-0.6.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">= 18"},"exports":{".":{"import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"run-p pkg:watch typecheck:watch test:watch","lint":"eslint . --quiet","test":"vitest run --typecheck","build":"run-s pkg:build pkg:check","check":"npm-run-all --serial clean pkg:build --parallel typecheck lint test pkg:check","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:watch":"vitest --typecheck","typecheck:watch":"tsc --watch","typecheck:examples":"tsc -p ./examples/tsconfig.json","example:compat-studio":"(cd examples/compat-studio && npm run dev)","typecheck:examples:watch":"tsc -p ./examples/tsconfig.json --watch"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"_resolved":"/tmp/d06cdf14b501e434e1f00b0f32b5a5c8/sanity-sanitype-0.6.1.tgz","_integrity":"sha512-pujGR04N1xGjB6Dk7FkuSDnAj8cBdQ88TY8ibF474Xzgoz89LC8bQLtfE+2RY4xunNMbI4lvXVbhQ71Iq63obg==","repository":{"url":"git+https://github.com/sanity-io/sanitype.git","type":"git"},"_npmVersion":"10.9.0","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"sideEffects":false,"_nodeVersion":"22.10.0","browserslist":"extends @sanity/browserslist-config","dependencies":{"date-fns":"^4.1.0","@sanity/types":"^3.63.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vite":"^5.4.11","eslint":"^9.14.0","rimraf":"^6.0.1","vitest":"^2.1.4","prettier":"^3.3.3","@eslint/js":"^9.14.0","@vitest/ui":"^2.1.4","typescript":"^5.6.3","npm-run-all":"^4.1.5","@sanity/client":"^6.22.4","@sanity/pkg-utils":"^6.11.10","@types/eslint__js":"^8.42.3","typescript-eslint":"^8.14.0","@vitest/coverage-v8":"2.1.4","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.14.0","prettier-plugin-packagejson":"^2.5.3","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.14.0","eslint-plugin-simple-import-sort":"^12.1.1"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.6.1_1731405998215_0.47960694863676423","host":"s3://npm-registry-packages"}},"0.6.2":{"name":"@sanity/sanitype","version":"0.6.2","keywords":[],"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","_id":"@sanity/sanitype@0.6.2","maintainers":[{"name":"ausha","email":"ausha@sanity.io"},{"name":"kaspar.lippmaa.sanity","email":"kaspar.lippmaa@sanity.io"},{"name":"tdfka_rick","email":"joshua.ellis18@gmail.com"},{"name":"jjburbridge","email":"jonathan.burbridge@sanity.io"},{"name":"ryanblock","email":"rblock+npm@gmail.com"},{"name":"danielsgroves","email":"hello@danielgroves.net"},{"name":"colepeters","email":"cole@colepeters.com"},{"name":"dam","email":"kristoferjoseph@gmail.com"},{"name":"tbeseda","email":"tbeseda@gmail.com"},{"name":"ryanbonial-sanity","email":"ryan.bonial@sanity.io"},{"name":"madken","email":"kenneth.madsen@sanity.io"},{"name":"tiit.kass.saity","email":"tiit.kass@sanity.io"},{"name":"christianhg","email":"services@groengaard.dk"},{"name":"joan_miralles_paez","email":"joan.miralles@sanity.io"},{"name":"jwoods-sanity","email":"james.woods@sanity.io"},{"name":"armandocerna","email":"armando@cerna.ca"},{"name":"daniel.malmer","email":"daniel.malmer@sanity.io"},{"name":"jordanl17","email":"jordanl17@me.com"},{"name":"tambet","email":"tambet.masik@gmail.com"},{"name":"drewsanity","email":"drew.lyton@sanity.io"},{"name":"refiito","email":"margus@sanity.io"},{"name":"sergeisarviro","email":"sergei@sanity.io"},{"name":"ash","email":"ashley@juice49.com"},{"name":"indrek.karner","email":"indrek.karner@sanity.io"},{"name":"cngonzalez-sanity","email":"carolina@sanity.io"},{"name":"rdunk","email":"rupert@rupertdunk.com"},{"name":"rneatherway-sanity","email":"robin.neatherway@sanity.io"},{"name":"ricokahler","email":"ricokahler@me.com"},{"name":"pedro-sanity","email":"pedro@sanity.io"},{"name":"kenjonespizza","email":"ken@sanity.io"},{"name":"pauloborgesf","email":"paulo@sanity.io"},{"name":"binoy14","email":"me@binoy.io"},{"name":"simen.svale","email":"simen@sanity.io"},{"name":"svirs","email":"shur@sanity.io"},{"name":"josh_sanity_io","email":"josh@sanity.io"},{"name":"joneidejohnsen","email":"jon@sanity.io"},{"name":"rankers","email":"richardankers@gmail.com"},{"name":"snorreeb","email":"snorre.e.brekke@gmail.com"},{"name":"mattcraig","email":"matt@sanity.io"},{"name":"vincentquigley","email":"vincent@sanity.io"},{"name":"stipsan","email":"stipsan@gmail.com"},{"name":"michael-sanity","email":"michael@sanity.io"},{"name":"rubioz","email":"jarubc@gmail.com"},{"name":"tonina","email":"zhelyazkova.tonina@gmail.com"},{"name":"ritasdias","email":"anarita151@gmail.com"},{"name":"simeonsanity","email":"simeon@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"robinpyon","email":"robin@robinpyon.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"hermanw","email":"herman@sanity.io"},{"name":"sgulseth","email":"sgulseth@gmail.com"},{"name":"atombender","email":"npm@purefiction.net"}],"homepage":"https://github.com/sanity-io/sanitype#readme","bugs":{"url":"https://github.com/sanity-io/sanitype/issues"},"dist":{"shasum":"b20ee42a27eb96a2d38992807a67412100a3366c","tarball":"https://registry.npmjs.org/@sanity/sanitype/-/sanitype-0.6.2.tgz","fileCount":108,"integrity":"sha512-Gy2pjphz399HpJY5UxBLWY6/Yt89rLzNpkI9+Cgv8qdEmVlPxXQ/3eEs1y3JHWxp1fFHXNetobIIlIS9+wFv4Q==","signatures":[{"sig":"MEUCIEyiWnxl3zWX3y+ucFmwhVOu1vnpVloutlJHuR12zkGWAiEAvqTjnxU6mLrc3nIqDJvf3LVupm11g27BF/uF5UwvQ2s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@sanity%2fsanitype@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":590758},"main":"./dist/index.cjs","type":"module","_from":"file:sanity-sanitype-0.6.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">= 18"},"exports":{".":{"import":"./dist/index.js","source":"./src/index.ts","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"run-p pkg:watch typecheck:watch test:watch","lint":"eslint . --quiet","test":"vitest run --typecheck","build":"run-s pkg:build pkg:check","check":"npm-run-all --serial clean pkg:build --parallel typecheck lint test pkg:check","clean":"rimraf dist","format":"prettier --write --cache --ignore-unknown .","test:ui":"vitest --ui","coverage":"vitest run --coverage","examples":"run-p example:*","pkg:build":"pkg build --strict","pkg:check":"pkg check --strict","pkg:watch":"pkg watch --strict","typecheck":"tsc","test:watch":"vitest --typecheck","typecheck:watch":"tsc --watch","typecheck:examples":"tsc -p ./examples/tsconfig.json","example:compat-studio":"(cd examples/compat-studio && npm run dev)","typecheck:examples:watch":"tsc -p ./examples/tsconfig.json --watch"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"_resolved":"/tmp/2b477f0cb2a9ce43dd4f1811b2683c0b/sanity-sanitype-0.6.2.tgz","_integrity":"sha512-Gy2pjphz399HpJY5UxBLWY6/Yt89rLzNpkI9+Cgv8qdEmVlPxXQ/3eEs1y3JHWxp1fFHXNetobIIlIS9+wFv4Q==","repository":{"url":"git+https://github.com/sanity-io/sanitype.git","type":"git"},"_npmVersion":"10.9.0","description":"Experimental TypeScript-first schemas for Sanity","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","browserslist":"extends @sanity/browserslist-config","dependencies":{"date-fns":"^4.1.0","@sanity/types":"^3.63.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vite":"^5.4.11","eslint":"^9.14.0","rimraf":"^6.0.1","vitest":"^2.1.4","prettier":"^3.3.3","@eslint/js":"^9.14.0","@vitest/ui":"^2.1.4","typescript":"^5.6.3","npm-run-all":"^4.1.5","@sanity/client":"^6.22.4","@sanity/pkg-utils":"^6.11.10","@types/eslint__js":"^8.42.3","typescript-eslint":"^8.14.0","@vitest/coverage-v8":"2.1.4","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^8.14.0","prettier-plugin-packagejson":"^2.5.3","eslint-plugin-unused-imports":"^4.1.4","@typescript-eslint/eslint-plugin":"^8.14.0","eslint-plugin-simple-import-sort":"^12.1.1"},"_npmOperationalInternal":{"tmp":"tmp/sanitype_0.6.2_1731866983430_0.09107641858388837","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-09-08T11:19:32.741Z","modified":"2026-04-08T15:18:50.647Z","0.0.0":"2023-09-08T11:19:33.359Z","0.0.1":"2023-09-08T11:24:12.459Z","0.0.2":"2023-09-13T08:22:39.467Z","0.1.0":"2023-10-02T21:21:55.059Z","0.2.0":"2023-12-13T23:34:45.872Z","0.3.0":"2024-08-01T16:09:45.640Z","0.3.1":"2024-08-01T16:52:31.954Z","0.4.0":"2024-10-19T14:54:03.409Z","0.6.1":"2024-11-12T10:06:38.384Z","0.6.2":"2024-11-17T18:09:43.695Z"},"bugs":{"url":"https://github.com/sanity-io/sanitype/issues"},"author":{"name":"Bjørge Næss","email":"bjoerge@gmail.com"},"license":"MIT","homepage":"https://github.com/sanity-io/sanitype#readme","keywords":[],"repository":{"url":"git+https://github.com/sanity-io/sanitype.git","type":"git"},"description":"Experimental TypeScript-first schemas for Sanity","maintainers":[{"email":"svc.npm@sanity.io","name":"sanity-svc.npm"},{"email":"developers@sanity.io","name":"sanity-io"}],"readme":"sani*type*\n=======\n\n_TypeScript-first Sanity schemas with static type inference and (optional) runtime validation_\n\n\n> [!WARNING]  \n> This is an experiment and not an official, nor supported way of declaring Sanity schemas. Use at own risk.\n\n## Table of contents\n<!-- TOC -->\n* [Motivation](#motivation)\n  * [Instant developer feedback](#instant-developer-feedback)\n  * [DRY Content Models](#dry-content-models)\n  * [Type-level \"Sanity-isms\"](#type-level-sanity-isms)\n  * [Type Safe Content Migrations](#type-safe-content-migrations)\n  * [Why not just use Zod?](#why-not-just-use-zod)\n* [Getting started](#getting-started)\n  * [Requirements](#requirements)\n  * [Install](#install)\n  * [npm](#npm)\n  * [pnpm](#pnpm)\n  * [bun](#bun)\n  * [yarn](#yarn)\n* [Usage examples](#usage-examples)\n  * [Basic example](#basic-example)\n  * [Extending types](#extending-types)\n    * [The `extend()` helper](#the-extend-helper)\n  * [Pick & omit fields](#pick--omit-fields)\n  * [Lifecycle and type transforms](#lifecycle-and-type-transforms)\n    * [Recursive types](#recursive-types)\n    * [Document lifecycles](#document-lifecycles)\n* [Limitations & gotchas](#limitations--gotchas)\n* [API](#api)\n  * [Data types](#data-types)\n    * [Primitives](#primitives)\n    * [Literal](#literal)\n    * [Unions](#unions)\n    * [Objects](#objects)\n    * [Arrays](#arrays)\n    * [References](#references)\n    * [Portable text](#portable-text)\n    * [Recursive types](#recursive-types-1)\n  * [Utilities](#utilities)\n    * [Extend](#extend)\n    * [Optional](#optional)\n    * [Required](#required)\n    * [Omit](#omit)\n    * [Pick](#pick)\n    * [Rename](#rename)\n  * [GraphQL Strict mode](#graphql-strict-mode)\n* [Development](#development)\n* [Acknowledgements & inspiration](#acknowledgements--inspiration)\n<!-- TOC -->\n\n## Motivation\n\nSanity Schemas that has static type inference while enabling runtime validation offers significant advantages over traditional Sanity schemas when working with content at scale.\n\n### Instant developer feedback\n\nAlthough Sanity lets you express almost anything, it puts forward a handful of constraints on your data model. Today, violations of these constraints are surfaced to developers at runtime, typically during development when reloading the Studio. With Sanitype any violation of these restrictions will be surfaced immediately as type errors both in the IDE and at build/compile time.\n\nViolations of the following constraints will be caught and surfaced instantly in the IDE as type errors when using Sanitype:\n1. Multidimensional arrays.\n2. Arrays with both primitive values and object values.\n3. Object unions with unnamed object types. Object unions are only supported for _typed_ objects (i.e. objects with a `_type` literal). This restriction is necessary in order to support collaborative real-time editing of partial object values. Without a discriminator it would be impossible to tell which schema type a partial (e.g. empty) object belongs to.\n4. Fields starting with underscore are not allowed. These are reserved for system fields. Sanitype gives a compile-time error if you define a field starting with underscore.\n5. Disallowed characters in field names: There's restrictions on what characters can be used as object properties, if you try to use an invalid character, this will be caught by TypeScript.\n\n### DRY Content Models\n\nTraditional Sanity schemas have a few drawbacks that makes it harder to share and re-use across runtimes, environments and organizations. They define not only the content model, they also include presentational concerns, which leads to several drawbacks:\n\n- *Tied to a specific editing experience*: Today you can't easily use the same content model for creating different editor experiences, e.g. using a different set of field groups, or different field descriptions across different contexts.\n- *Coupled with the browser runtime*: Traditional Sanity schemas defines presentation concerns like custom input components, preview configs and field labels that often includes React and browser libraries. Unless taking extra precautions, this can often lead to issues when attempting to share the schema across different runtimes and execution environments.\n- *Limited composability and re-use*: Sharing data models or aspects of a data model between different parts of an organization is challenging today, can often make it hard to reason about impact of making a change, and introduce far-reaching changes with unintended consequences. With the benefit of statical type checking, schemas can be published to npm, versioned with semver and will give early compile-time errors stopping accidental breakage from reaching production.\n\nThe composability of Sanitype combined with runtime validation provides several added advantages:\n\n- Different versions of the same content model can live side by side, extending or composing of each other. You can create a variant of a type that omits a particular field, or you can create a ProductV2 type that renames the `client`-field to `customer`.\n- When importing content from an external system into Sanity, you can use the schema to validate that the external content adheres to the shape defined by the schema, preventing invalid or unexpected data from entering the Sanity Data store.\n\n### Type-level \"Sanity-isms\"\n\nSanity is extremely flexible, but is also opinionated about certain aspects of your content model, for example:\n\n1. Object types automatically gets assigned persistent keys ( `_key: string`) when they're contained in arrays. With Sanitype, this is handled at the type level, so no need for `arrayItem as T & {_key: string}`\n2. Document types automatically gets assigned system properties like `_rev: string, _createdAt`, etc.\n3. Document lifecycles can be reflected at the type level:\n   - A document fetched from the API will always have `_id`, `_rev`. For documents created client side, these are optional, and can be undefined.\n   - All properties of a draft document will be optional/nullable, since drafts are partial in nature.\n   - A published document will have passed validation, and thus have all required fields (no need for non-null assertions)\n\n### Type Safe Content Migrations\n\nSanitype schemas are highly composable. I.e. you can create a base schema that can be extended in different contexts or represent different versions of the same content model. This enables a migration strategy that allows different versions of a schema can coexist side by side in a transition period, enabling incremental content migrations without breaking frontends or client applications.\n\n### Why not just use Zod?\n\n[Zod](https://zod.dev/) is great, and we have been long-time adopters and fans here at Sanity. However, zod has a much broader scope, and supports JavaScript types that can't be represented in a Sanity document like Set, Map, Promise, functions, etc.\n\n## Getting started\n### Requirements\n\nSanitype requires TypeScript 5.x and strict mode to be enabled in `tsconfig.json`:\n\n```\n{\n  // ...\n  \"compilerOptions\": {\n    // ...\n    \"strict\": true\n  }\n}\n\n```\n\n### Install\n### npm\n```sh\nnpm install @sanity/sanitype\n```\n### pnpm\n```sh\npnpm add @sanity/sanitype\n```\n### bun\n```sh\nbun add @sanity/sanitype\n```\n### yarn\n```sh\nyarn add @sanity/sanitype\n```\n\n## Usage examples\n\n### Basic example\nCreating a simple document type\n\n```ts\nimport {\n   boolean,\n   document,\n   type Infer,\n   literal,\n   number,\n   object,\n   optional,\n   parse,\n   string,\n   union,\n} from '@sanity/sanitype'\n\n// define and export a user schema\nexport const userSchema = document({\n   _type: literal('user'),\n   name: string(),\n   union: union([string(), number()]),\n   optional: optional(boolean()),\n   nested: object({\n      foo: optional(string()),\n   }),\n})\n\n// export the User type inferred from the userSchema\nexport type User = Infer<typeof userSchema>\n\n// Use it to validate that a value is compatible with the schema\nconst user = parse(userSchema, {\n   _type: 'user',\n   name: 'Grace Hopper',\n   union: 'this is a string, but could also be number',\n   optional: true,\n   nested: {\n      foo: 'bar',\n   },\n})\n\n// 💥 type error\n// TS2339: Property noSuchProperty does not exist on type\nuser.noSuchProperty\n\n// 💥 type error\n// TS2365: Operator + cannot be applied to types {foo?: string | undefined;} and number\nuser.nested + 2\n```\n\n\n### Extending types\nExtending document or object types is as easy as using everyday JavaScript:\n\n```ts\nconst baseFields = {name: string(), other: string()}\nconst baseType = object(baseFields)\n\nconst extendedType = object({...baseFields, extendedField: string()})\n```\n#### The `extend()` helper\nThere's also an `extend()` utility function that can extend any object or document type:\n\n```ts\nconst baseType = object({name: string(), other: string()})\n\nconst extendedType = extend(baseType, {extendedField: string()})\n```\n\n### Pick & omit fields\n\nYou can create define your own types by picking or omitting sets of fields from other types\n\n```ts\nconst someSchema = object({name: string(), other: string(), irrelevant: number()})\n\n// create a new type without the `irrelevant` field\nconst example1 = omit(someSchema, ['irrelevant'])\n\n// in effect the same as above, but explicitly picking the fields to keep \nconst example2 = pick(someSchema, ['name', 'other'])\n\n```\n\n### Lifecycle and type transforms\n\nSanitype supports various utilities to create different variations of a type. For example, if using a schema to let users fill in a form, you want the type to allow for optional values (since users typically fill in forms gradually). However, you don't want to allow for this by making every field optional on your data type, and you still want a type you can validate against to check if the user have filled in all required fields. For these scenarios, Sanitype provides the following utilities:\n\n- `shallowPartial()` - makes all fields of an object type optional (i.e. nullable)\n- `shallowRequired()` - makes all fields of an object type required (i.e. non-nullable).\n- `deepPartial()` - recursively makes all fields of an object type optional (i.e. non-nullable).\n- `deepRequired()` - recursively makes all fields of an object type optional (i.e. non-nullable).\n\n```ts\n// Note that all fields are required in this type\nconst contactDetails = object({\n   name: string(),\n   address: string(),\n   email: string()\n})\nconst optionalContactDetails = deepPartial(contactDetails)\n\n// This would be the type to validate against\ntype ValidContactDetails = Infer<typeof contactDetails>\n\n// This would be the type to use when working with partial data, e.g. as a user fills in the contact details form\ntype OptionalContactDetails = Infer<typeof optionalContactDetauls>\n\n```\n\n#### Recursive types\nYou can define a recursive schema in Sanitype using the `lazy()` type helper, but due to a limitation in TypeScript, its type cannot be automatically inferred. To work around this, you’ll need to manually define the type and provide it as a \"type hint\".\n\n```ts\ninterface Person {\n  _type: 'person'\n  name: number\n  parent: Person & {foo: string}\n}\n\nconst personSchema: SanityObjectType<Person> = object({\n  _type: literal('person'),\n  name: lazy(() => number()),\n  foo: literal('ok'),\n  parent: lazy(() => extend(personSchema, {foo: string()})),\n})\n```\n\n\n#### Document lifecycles\nSanitype also exports helpers to represent a Sanity Document at different stages, e.g.:\n- published (schemas are modelled as published)\n- draft\n- stored (e.g. retrieved from the data store)\n- variations of the above (e.g. a stored draft)\n```ts\nimport {type Infer} from '@sanity/sanitype'\nimport {document, draft, literal, parse, stored, string} from '@sanity/sanitype'\n\n// The schema for the myDocument type in its \"ideal\" form (i.e. published/validated state)\nconst myDocument = document({\n  _type: literal('pet'),\n  name: string(),\n})\n\n// Schema for myDocument as draft\nconst myDocumentDraft = draft(myDocument)\n\n// Schema for myDocument as stored\nconst myDocumentStored = stored(myDocument)\nconst storedMyDocument = parse(myDocumentStored, {\n  /* input */\n})\n// _rev is defined because it's stored!\nconsole.log(storedMyDocument._rev.toUpperCase())\n\n// Schema for myDocument as a stored draft\nconst myDocumentStoredDraft = stored(myDocumentDraft)\nconst storedDraft = parse(myDocumentStoredDraft, {\n  /* input */\n})\n\n// _id is defined because it's stored!\nconsole.log(storedDraft._id.toUpperCase())\n\n// Inferred TypeScript type of myDocument (default is published)\ntype MyDocument = Infer<typeof myDocument>\n// Can create a new instances of published without having to provide _id, _rev, etc.\n// but still need to provide required fields\nconst somePublished: MyDocument = {\n  _type: 'pet',\n  name: 'someName',\n}\n\n// Inferred TypeScript type of myDocument as draft\ntype MyDocumentDraft = Infer<typeof myDocumentDraft>\n\n// Can create a new instances of drafts without having to provide required attributes\nconst someDraft: MyDocumentDraft = {\n  _type: 'pet',\n}\n\n```\n\n## Limitations & gotchas\n\nStatic types only works schema generation works as far as TypeScript can infer\n\nFor example, generate types dynamically like this is *not* supported:\n\n```typescript\nconst strings = ['firstName', 'lastName']\nconst shape = {}\nstrings.forEach(key => {\n   shape[key] = string()\n})\n\nconst schema = s.object(shape)\n\n// type of value will be {}\nconst value = schema.parse({\n   firstName: 'Bjørge',\n   lastName: 'Næss',\n})\n```\n\nThe inferred static type here will be limited to `{}` (note: the parser will still work as expected)\n\nTo reap the full benefit of static typing, it's recommended to write your schemas in a way that TypeScript can infer as narrow types as possible, e.g.:\n\n```typescript\nconst shape = {\n   firstName: string(),\n   lastName: string(),\n}\nconst schema = object(shape)\n\n// inferred type of value will be {firstName: string, lastName: string}\nconst value = parse(schema, {\n   firstName: 'Bjørge',\n   lastName: 'Næss',\n})\n```\n\n## API\n(TODO)\n### Data types\n\n#### Primitives\n\n#### Literal\n\n#### Unions\n\n#### Objects\n\n#### Arrays\n\n#### References\n\n#### Portable text\n\n#### Recursive types\n\n### Utilities\n\n#### Extend\n\n#### Optional\n\n#### Required\n\n#### Omit\n\n#### Pick\n\n#### Rename\n\n### GraphQL Strict mode\n\n\n## Development\n\nClone this repository\n\n```\ngit clone git@github.com:sanity-io/sanitype.git\n```\nInstall dependencies\n```sh\npnpm install\n```\n\nTake a look at the examples in the `examples` folder (feel free to create your own example and push to a branch, e.g. to illustrate a bug, lacking feature, or something that's hard to solve with this approach compared to current day schemas)\n\nAn example of a vanilla Sanity Studio using sanitype-schemas can be found in `examples/compat-studio`. Start with:\n\n```\nnpm run example:compat-studio\n```\n\n## Acknowledgements & inspiration\n\nThis implementation is heavily inspired by [zod](https://zod.dev), which popularized runtime schemas with static type inference.\n","readmeFilename":"README.md"}