[{"data":1,"prerenderedAt":2727},["ShallowReactive",2],{"navigation_docs":3,"-runtypes-type-formats-collections":399},[4,162,346],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":24},"RPC","icon-park-outline:lightning","\u002Frpc","01.rpc",[10,25,63,77,102,136],{"title":11,"icon":12,"redirect":7,"path":13,"stem":14,"children":15,"page":24},"Introduction","icon-park-outline:home","\u002Frpc\u002Fintroduction","01.rpc\u002F01.introduction",[16,20],{"title":17,"path":18,"stem":19},"Quick Start","\u002Frpc\u002Fintroduction\u002Fquick-start","01.rpc\u002F01.introduction\u002F02.quick-start",{"title":21,"path":22,"stem":23},"Manual Install","\u002Frpc\u002Fintroduction\u002Fmanual-install","01.rpc\u002F01.introduction\u002F03.manual-install",false,{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":24},"Server","icon-park-outline:server","\u002Frpc\u002Fserver","01.rpc\u002F02.server",[31,35,39,43,47,51,55,59],{"title":32,"path":33,"stem":34},"Routes","\u002Frpc\u002Fserver\u002Froutes","01.rpc\u002F02.server\u002F01.routes",{"title":36,"path":37,"stem":38},"Middleware","\u002Frpc\u002Fserver\u002Fmiddleware","01.rpc\u002F02.server\u002F02.middleware",{"title":40,"path":41,"stem":42},"Call Context","\u002Frpc\u002Fserver\u002Fcall-context","01.rpc\u002F02.server\u002F03.call-context",{"title":44,"path":45,"stem":46},"Headers","\u002Frpc\u002Fserver\u002Fheaders","01.rpc\u002F02.server\u002F04.headers",{"title":48,"path":49,"stem":50},"Error Handling","\u002Frpc\u002Fserver\u002Ferror-handling","01.rpc\u002F02.server\u002F05.error-handling",{"title":52,"path":53,"stem":54},"Validation","\u002Frpc\u002Fserver\u002Fvalidation","01.rpc\u002F02.server\u002F06.validation",{"title":56,"path":57,"stem":58},"JSON Round Trip","\u002Frpc\u002Fserver\u002Fjson-round-trip","01.rpc\u002F02.server\u002F07.json-round-trip",{"title":60,"path":61,"stem":62},"Drizzle Tables","\u002Frpc\u002Fserver\u002Fdrizzle-tables","01.rpc\u002F02.server\u002F08.drizzle-tables",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":24},"Middlewares","icon-park-outline:link-one","\u002Frpc\u002Fmiddlewares","01.rpc\u002F03.middlewares",[69,73],{"title":70,"path":71,"stem":72},"fetchMetadata","\u002Frpc\u002Fmiddlewares\u002Ffetch-metadata","01.rpc\u002F03.middlewares\u002F01.fetch-metadata",{"title":74,"path":75,"stem":76},"syncRoutes","\u002Frpc\u002Fmiddlewares\u002Fsync-routes","01.rpc\u002F03.middlewares\u002F02.sync-routes",{"title":78,"icon":79,"path":80,"stem":81,"children":82,"page":24},"Client","icon-park-outline:computer","\u002Frpc\u002Fclient","01.rpc\u002F04.client",[83,87,91,94,98],{"title":84,"path":85,"stem":86},"Client Overview","\u002Frpc\u002Fclient\u002Fclient-overview","01.rpc\u002F04.client\u002F00.client-overview",{"title":88,"path":89,"stem":90},"Client Middleware","\u002Frpc\u002Fclient\u002Fclient-middleware","01.rpc\u002F04.client\u002F01.client-middleware",{"title":48,"path":92,"stem":93},"\u002Frpc\u002Fclient\u002Ferror-handling","01.rpc\u002F04.client\u002F02.error-handling",{"title":95,"path":96,"stem":97},"Batch Requests","\u002Frpc\u002Fclient\u002Fbatch","01.rpc\u002F04.client\u002F03.batch",{"title":99,"path":100,"stem":101},"Cancellation & Timeouts","\u002Frpc\u002Fclient\u002Fcancellation-timeouts","01.rpc\u002F04.client\u002F04.cancellation-timeouts",{"title":103,"redirect":104,"icon":105,"path":106,"stem":107,"children":108,"page":24},"Platforms","\u002Frpc\u002Fplatforms\u002Fnode-js","icon-park-outline:play","\u002Frpc\u002Fplatforms","01.rpc\u002F06.platforms",[109,112,116,120,124,128,132],{"title":110,"path":104,"stem":111},"Node.js","01.rpc\u002F06.platforms\u002F01.node-js",{"title":113,"path":114,"stem":115},"Bun","\u002Frpc\u002Fplatforms\u002Fbun","01.rpc\u002F06.platforms\u002F02.bun",{"title":117,"path":118,"stem":119},"AWS Lambda","\u002Frpc\u002Fplatforms\u002Faws-lambda","01.rpc\u002F06.platforms\u002F03.aws-lambda",{"title":121,"path":122,"stem":123},"Google Cloud Functions","\u002Frpc\u002Fplatforms\u002Fgoogle-cloud-functions","01.rpc\u002F06.platforms\u002F04.google-cloud-functions",{"title":125,"path":126,"stem":127},"Cloudflare Workers","\u002Frpc\u002Fplatforms\u002Fcloudflare","01.rpc\u002F06.platforms\u002F05.cloudflare",{"title":129,"path":130,"stem":131},"Vercel","\u002Frpc\u002Fplatforms\u002Fvercel","01.rpc\u002F06.platforms\u002F06.vercel",{"title":133,"path":134,"stem":135},"uWebSockets.js","\u002Frpc\u002Fplatforms\u002Fuwebsockets","01.rpc\u002F06.platforms\u002F07.uwebsockets",{"title":137,"icon":138,"path":139,"stem":140,"children":141,"page":24},"Devtools","icon-park-outline:tool","\u002Frpc\u002Fdevtools","01.rpc\u002F07.devtools",[142,146,150,154,158],{"title":143,"path":144,"stem":145},"Linter","\u002Frpc\u002Fdevtools\u002Flinter","01.rpc\u002F07.devtools\u002F01.linter",{"title":147,"path":148,"stem":149},"Vite","\u002Frpc\u002Fdevtools\u002Fvite","01.rpc\u002F07.devtools\u002F02.vite",{"title":151,"path":152,"stem":153},"Next.js","\u002Frpc\u002Fdevtools\u002Fnextjs","01.rpc\u002F07.devtools\u002F03.nextjs",{"title":155,"path":156,"stem":157},"CLI","\u002Frpc\u002Fdevtools\u002Fcli","01.rpc\u002F07.devtools\u002F04.cli",{"title":159,"path":160,"stem":161},"API Types","\u002Frpc\u002Fdevtools\u002Fapi-types","01.rpc\u002F07.devtools\u002F05.api-types",{"title":163,"icon":164,"path":165,"stem":166,"children":167,"page":24},"RunTypes","i-lucide-braces","\u002Fruntypes","02.runtypes",[168,184,224,254,268,290,332],{"title":11,"icon":169,"redirect":165,"path":170,"stem":171,"children":172,"page":24},"i-lucide-rocket","\u002Fruntypes\u002Fintroduction","02.runtypes\u002F01.introduction",[173,177,180],{"title":174,"path":175,"stem":176},"Built on typescript-go","\u002Fruntypes\u002Fintroduction\u002Fbuilt-on-typescript-go","02.runtypes\u002F01.introduction\u002F02.built-on-typescript-go",{"title":17,"path":178,"stem":179},"\u002Fruntypes\u002Fintroduction\u002Fquick-start","02.runtypes\u002F01.introduction\u002F03.quick-start",{"title":181,"path":182,"stem":183},"Configuration","\u002Fruntypes\u002Fintroduction\u002Fconfiguration","02.runtypes\u002F01.introduction\u002F04.configuration",{"title":185,"icon":186,"redirect":187,"path":188,"stem":189,"children":190,"page":24},"Guide","i-lucide-book-open","\u002Fruntypes\u002Fguide\u002Ftype-builders","\u002Fruntypes\u002Fguide","02.runtypes\u002F02.guide",[191,194,198,201,204,208,212,216,220],{"title":192,"path":187,"stem":193},"Types vs Type Builders","02.runtypes\u002F02.guide\u002F01.type-builders",{"title":195,"path":196,"stem":197},"Reflection","\u002Fruntypes\u002Fguide\u002Freflection","02.runtypes\u002F02.guide\u002F02.reflection",{"title":52,"path":199,"stem":200},"\u002Fruntypes\u002Fguide\u002Fvalidation","02.runtypes\u002F02.guide\u002F03.validation",{"title":56,"path":202,"stem":203},"\u002Fruntypes\u002Fguide\u002Fjson-round-trip","02.runtypes\u002F02.guide\u002F04.json-round-trip",{"title":205,"path":206,"stem":207},"Data Mocking","\u002Fruntypes\u002Fguide\u002Fmocking","02.runtypes\u002F02.guide\u002F07.mocking",{"title":209,"path":210,"stem":211},"JSON Schemas","\u002Fruntypes\u002Fguide\u002Fjson-schemas","02.runtypes\u002F02.guide\u002F08.json-schemas",{"title":213,"path":214,"stem":215},"Pure Functions","\u002Fruntypes\u002Fguide\u002Fpure-functions","02.runtypes\u002F02.guide\u002F09.pure-functions",{"title":217,"path":218,"stem":219},"Compiler Markers","\u002Fruntypes\u002Fguide\u002Fcompiler-markers","02.runtypes\u002F02.guide\u002F10.compiler-markers",{"title":221,"path":222,"stem":223},"All Compiled Functions","\u002Fruntypes\u002Fguide\u002Fall-compiled-functions","02.runtypes\u002F02.guide\u002F11.all-compiled-functions",{"title":225,"icon":226,"redirect":227,"path":228,"stem":229,"children":230,"page":24},"Type Formats","i-lucide-shapes","\u002Fruntypes\u002Ftype-formats\u002Foverview","\u002Fruntypes\u002Ftype-formats","02.runtypes\u002F03.type-formats",[231,234,238,242,246,250],{"title":232,"path":227,"stem":233},"Overview","02.runtypes\u002F03.type-formats\u002F01.overview",{"title":235,"path":236,"stem":237},"String Formats","\u002Fruntypes\u002Ftype-formats\u002Fstring","02.runtypes\u002F03.type-formats\u002F02.string",{"title":239,"path":240,"stem":241},"Number Formats","\u002Fruntypes\u002Ftype-formats\u002Fnumber","02.runtypes\u002F03.type-formats\u002F03.number",{"title":243,"path":244,"stem":245},"BigInt Formats","\u002Fruntypes\u002Ftype-formats\u002Fbigint","02.runtypes\u002F03.type-formats\u002F04.bigint",{"title":247,"path":248,"stem":249},"Date and Time Formats","\u002Fruntypes\u002Ftype-formats\u002Fdate-time","02.runtypes\u002F03.type-formats\u002F05.date-time",{"title":251,"path":252,"stem":253},"Collection Formats","\u002Fruntypes\u002Ftype-formats\u002Fcollections","02.runtypes\u002F03.type-formats\u002F06.collections",{"title":255,"icon":256,"redirect":257,"path":258,"stem":259,"children":260,"page":24},"Tooling","i-lucide-wrench","\u002Fruntypes\u002Ftooling\u002Flinting","\u002Fruntypes\u002Ftooling","02.runtypes\u002F04.tooling",[261,264],{"title":262,"path":257,"stem":263},"Linting","02.runtypes\u002F04.tooling\u002F01.linting",{"title":265,"path":266,"stem":267},"Source Conversion","\u002Fruntypes\u002Ftooling\u002Fsource-conversion","02.runtypes\u002F04.tooling\u002F02.source-conversion",{"title":269,"icon":270,"redirect":271,"path":272,"stem":273,"children":274,"page":24},"AI Integration","i-lucide-sparkles","\u002Fruntypes\u002Fai-integration\u002Fworkflow-and-commands","\u002Fruntypes\u002Fai-integration","02.runtypes\u002F05.ai-integration",[275,278,282,286],{"title":276,"path":271,"stem":277},"AI Workflow","02.runtypes\u002F05.ai-integration\u002F01.workflow-and-commands",{"title":279,"path":280,"stem":281},"FriendlyText","\u002Fruntypes\u002Fai-integration\u002Ffriendly-text","02.runtypes\u002F05.ai-integration\u002F02.friendly-text",{"title":283,"path":284,"stem":285},"MockData","\u002Fruntypes\u002Fai-integration\u002Fmock-data","02.runtypes\u002F05.ai-integration\u002F03.mock-data",{"title":287,"path":288,"stem":289},"Translations (i18n)","\u002Fruntypes\u002Fai-integration\u002Fi18n","02.runtypes\u002F05.ai-integration\u002F04.i18n",{"title":291,"icon":292,"redirect":293,"path":294,"stem":295,"children":296,"page":24},"Drizzle ORM","i-lineicons-drizzle","\u002Fruntypes\u002Fdrizzle-orm\u002Fdrizzle-overview","\u002Fruntypes\u002Fdrizzle-orm","02.runtypes\u002F06.drizzle-orm",[297,300,304,308,312,316,320,324,328],{"title":298,"path":293,"stem":299},"Drizzle Overview","02.runtypes\u002F06.drizzle-orm\u002F00.drizzle-overview",{"title":301,"path":302,"stem":303},"Column Formats","\u002Fruntypes\u002Fdrizzle-orm\u002Fcolumn-formats","02.runtypes\u002F06.drizzle-orm\u002F01.column-formats",{"title":305,"path":306,"stem":307},"Views","\u002Fruntypes\u002Fdrizzle-orm\u002Fviews","02.runtypes\u002F06.drizzle-orm\u002F02.views",{"title":309,"path":310,"stem":311},"Indexes and Constraints","\u002Fruntypes\u002Fdrizzle-orm\u002Fconstraints","02.runtypes\u002F06.drizzle-orm\u002F03.constraints",{"title":313,"path":314,"stem":315},"Row Level Security","\u002Fruntypes\u002Fdrizzle-orm\u002Frow-level-security","02.runtypes\u002F06.drizzle-orm\u002F04.row-level-security",{"title":317,"path":318,"stem":319},"Relations","\u002Fruntypes\u002Fdrizzle-orm\u002Frelations","02.runtypes\u002F06.drizzle-orm\u002F05.relations",{"title":321,"path":322,"stem":323},"The Schema File","\u002Fruntypes\u002Fdrizzle-orm\u002Fschema-file","02.runtypes\u002F06.drizzle-orm\u002F06.schema-file",{"title":325,"path":326,"stem":327},"Migrate an Existing Schema","\u002Fruntypes\u002Fdrizzle-orm\u002Fmigrate-an-existing-schema","02.runtypes\u002F06.drizzle-orm\u002F07.migrate-an-existing-schema",{"title":329,"path":330,"stem":331},"Cloudflare D1 and Durable Objects","\u002Fruntypes\u002Fdrizzle-orm\u002Fcloudflare-storage","02.runtypes\u002F06.drizzle-orm\u002F08.cloudflare-storage",{"title":333,"icon":334,"redirect":335,"path":336,"stem":337,"children":338,"page":24},"Diagnostics","i-lucide-triangle-alert","\u002Fruntypes\u002Fdiagnostics\u002Ferror-levels","\u002Fruntypes\u002Fdiagnostics","02.runtypes\u002F08.diagnostics",[339,342],{"title":340,"path":335,"stem":341},"Error Levels","02.runtypes\u002F08.diagnostics\u002F01.error-levels",{"title":343,"path":344,"stem":345},"All Diagnostics","\u002Fruntypes\u002Fdiagnostics\u002Fall-diagnostics","02.runtypes\u002F08.diagnostics\u002F02.all-diagnostics",{"title":347,"icon":348,"path":349,"stem":350,"children":351,"page":24},"Benchmarks","i-lucide-gauge","\u002Fbenchmarks","03.benchmarks",[352,372],{"title":5,"icon":6,"redirect":353,"path":354,"stem":355,"children":356,"page":24},"\u002Fbenchmarks\u002Frpc\u002Fhello-world","\u002Fbenchmarks\u002Frpc","03.benchmarks\u002F02.rpc",[357,360,364,368],{"title":358,"path":353,"stem":359},"Hello World","03.benchmarks\u002F02.rpc\u002F01.hello-world",{"title":361,"path":362,"stem":363},"Light Validation","\u002Fbenchmarks\u002Frpc\u002Flight-validation","03.benchmarks\u002F02.rpc\u002F02.light-validation",{"title":365,"path":366,"stem":367},"Heavy Validation","\u002Fbenchmarks\u002Frpc\u002Fheavy-validation","03.benchmarks\u002F02.rpc\u002F03.heavy-validation",{"title":369,"path":370,"stem":371},"Payload Sizes","\u002Fbenchmarks\u002Frpc\u002Fpayload-sizes","03.benchmarks\u002F02.rpc\u002F04.payload-sizes",{"title":163,"icon":164,"redirect":373,"path":374,"stem":375,"children":376,"page":24},"\u002Fbenchmarks\u002Fruntypes\u002Fis-valid","\u002Fbenchmarks\u002Fruntypes","03.benchmarks\u002F03.runtypes",[377,380,384,388,392,395],{"title":378,"path":373,"stem":379},"Is Valid","03.benchmarks\u002F03.runtypes\u002F01.is-valid",{"title":381,"path":382,"stem":383},"Is Valid Formats","\u002Fbenchmarks\u002Fruntypes\u002Fis-valid-formats","03.benchmarks\u002F03.runtypes\u002F02.is-valid-formats",{"title":385,"path":386,"stem":387},"Get Errors","\u002Fbenchmarks\u002Fruntypes\u002Fget-errors","03.benchmarks\u002F03.runtypes\u002F03.get-errors",{"title":389,"path":390,"stem":391},"Get Errors Formats","\u002Fbenchmarks\u002Fruntypes\u002Fget-errors-formats","03.benchmarks\u002F03.runtypes\u002F04.get-errors-formats",{"title":56,"path":393,"stem":394},"\u002Fbenchmarks\u002Fruntypes\u002Fjson-round-trip","03.benchmarks\u002F03.runtypes\u002F05.json-round-trip",{"title":396,"path":397,"stem":398},"Type Checking","\u002Fbenchmarks\u002Fruntypes\u002Ftype-checking","03.benchmarks\u002F03.runtypes\u002F07.type-checking",{"id":400,"title":251,"body":401,"description":2721,"extension":2722,"links":2723,"meta":2724,"navigation":517,"path":252,"seo":2725,"stem":253,"__hash__":2726},"docs\u002F02.runtypes\u002F03.type-formats\u002F06.collections.md",{"type":402,"value":403},"minimark",[404,409,413,808,894,906,910,925,1163,1275,1284,1288,1296,1607,1611,1619,1903,1907,1913,2717],[405,406,408],"h2",{"id":407},"declaring-a-collection-format","Declaring a Collection Format",[410,411,412],"p",{},"Arrays, objects, Maps and Sets keep the shape you wrote in TypeScript. Limits on the collection itself go in one options object, with one wrapper per collection kind.",[414,415,420],"pre",{"className":416,"code":417,"language":418,"meta":419,"style":419},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","type Tags = TF.FormattedArray\u003C\n  string[],\n  {minItems: 1; maxItems: 5; uniqueItems: true}\n>;\n\nconst isTags = createValidateFn\u003CTags>();\nconst isTagsBuilt = createValidateFn(\n  RT.array(TF.string(), {minItems: 1, maxItems: 5, uniqueItems: true})\n);\n\nisTags(['ada', 'grace']); \u002F\u002F true\nisTags([]); \u002F\u002F false, at least one entry\nisTagsBuilt(['ada', 'ada']); \u002F\u002F false, the entries repeat\n\n\u002F\u002F The two spellings are one generated function, not two that agree.\ngetRunTypeId\u003CTags>() ===\n  getRunTypeId(\n    RT.array(TF.string(), {minItems: 1, maxItems: 5, uniqueItems: true})\n  ); \u002F\u002F true\n","ts","",[421,422,423,452,465,506,512,519,550,565,621,629,634,671,684,713,718,724,742,750,798],"code",{"__ignoreMap":419},[424,425,428,432,436,440,443,446,449],"span",{"class":426,"line":427},"line",1,[424,429,431],{"class":430},"spNyl","type",[424,433,435],{"class":434},"sBMFI"," Tags",[424,437,439],{"class":438},"sMK4o"," =",[424,441,442],{"class":434}," TF",[424,444,445],{"class":438},".",[424,447,448],{"class":434},"FormattedArray",[424,450,451],{"class":438},"\u003C\n",[424,453,455,458,462],{"class":426,"line":454},2,[424,456,457],{"class":434},"  string",[424,459,461],{"class":460},"sTEyZ","[]",[424,463,464],{"class":438},",\n",[424,466,468,471,475,478,482,485,488,490,493,495,498,500,503],{"class":426,"line":467},3,[424,469,470],{"class":438},"  {",[424,472,474],{"class":473},"swJcz","minItems",[424,476,477],{"class":438},":",[424,479,481],{"class":480},"sbssI"," 1",[424,483,484],{"class":438},";",[424,486,487],{"class":473}," maxItems",[424,489,477],{"class":438},[424,491,492],{"class":480}," 5",[424,494,484],{"class":438},[424,496,497],{"class":473}," uniqueItems",[424,499,477],{"class":438},[424,501,502],{"class":434}," true",[424,504,505],{"class":438},"}\n",[424,507,509],{"class":426,"line":508},4,[424,510,511],{"class":438},">;\n",[424,513,515],{"class":426,"line":514},5,[424,516,518],{"emptyLinePlaceholder":517},true,"\n",[424,520,522,525,528,531,535,538,541,544,547],{"class":426,"line":521},6,[424,523,524],{"class":430},"const",[424,526,527],{"class":460}," isTags ",[424,529,530],{"class":438},"=",[424,532,534],{"class":533},"s2Zo4"," createValidateFn",[424,536,537],{"class":438},"\u003C",[424,539,540],{"class":434},"Tags",[424,542,543],{"class":438},">",[424,545,546],{"class":460},"()",[424,548,549],{"class":438},";\n",[424,551,553,555,558,560,562],{"class":426,"line":552},7,[424,554,524],{"class":430},[424,556,557],{"class":460}," isTagsBuilt ",[424,559,530],{"class":438},[424,561,534],{"class":533},[424,563,564],{"class":460},"(\n",[424,566,568,571,573,576,579,581,584,586,589,592,594,596,598,600,602,604,606,608,610,612,615,618],{"class":426,"line":567},8,[424,569,570],{"class":460},"  RT",[424,572,445],{"class":438},[424,574,575],{"class":533},"array",[424,577,578],{"class":460},"(TF",[424,580,445],{"class":438},[424,582,583],{"class":533},"string",[424,585,546],{"class":460},[424,587,588],{"class":438},",",[424,590,591],{"class":438}," {",[424,593,474],{"class":473},[424,595,477],{"class":438},[424,597,481],{"class":480},[424,599,588],{"class":438},[424,601,487],{"class":473},[424,603,477],{"class":438},[424,605,492],{"class":480},[424,607,588],{"class":438},[424,609,497],{"class":473},[424,611,477],{"class":438},[424,613,502],{"class":614},"sfNiH",[424,616,617],{"class":438},"}",[424,619,620],{"class":460},")\n",[424,622,624,627],{"class":426,"line":623},9,[424,625,626],{"class":460},")",[424,628,549],{"class":438},[424,630,632],{"class":426,"line":631},10,[424,633,518],{"emptyLinePlaceholder":517},[424,635,637,640,643,646,650,652,654,657,660,662,665,667],{"class":426,"line":636},11,[424,638,639],{"class":533},"isTags",[424,641,642],{"class":460},"([",[424,644,645],{"class":438},"'",[424,647,649],{"class":648},"sfazB","ada",[424,651,645],{"class":438},[424,653,588],{"class":438},[424,655,656],{"class":438}," '",[424,658,659],{"class":648},"grace",[424,661,645],{"class":438},[424,663,664],{"class":460},"])",[424,666,484],{"class":438},[424,668,670],{"class":669},"sHwdD"," \u002F\u002F true\n",[424,672,674,676,679,681],{"class":426,"line":673},12,[424,675,639],{"class":533},[424,677,678],{"class":460},"([])",[424,680,484],{"class":438},[424,682,683],{"class":669}," \u002F\u002F false, at least one entry\n",[424,685,687,690,692,694,696,698,700,702,704,706,708,710],{"class":426,"line":686},13,[424,688,689],{"class":533},"isTagsBuilt",[424,691,642],{"class":460},[424,693,645],{"class":438},[424,695,649],{"class":648},[424,697,645],{"class":438},[424,699,588],{"class":438},[424,701,656],{"class":438},[424,703,649],{"class":648},[424,705,645],{"class":438},[424,707,664],{"class":460},[424,709,484],{"class":438},[424,711,712],{"class":669}," \u002F\u002F false, the entries repeat\n",[424,714,716],{"class":426,"line":715},14,[424,717,518],{"emptyLinePlaceholder":517},[424,719,721],{"class":426,"line":720},15,[424,722,723],{"class":669},"\u002F\u002F The two spellings are one generated function, not two that agree.\n",[424,725,727,730,732,734,736,739],{"class":426,"line":726},16,[424,728,729],{"class":533},"getRunTypeId",[424,731,537],{"class":438},[424,733,540],{"class":434},[424,735,543],{"class":438},[424,737,738],{"class":460},"() ",[424,740,741],{"class":438},"===\n",[424,743,745,748],{"class":426,"line":744},17,[424,746,747],{"class":533},"  getRunTypeId",[424,749,564],{"class":460},[424,751,753,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796],{"class":426,"line":752},18,[424,754,755],{"class":460},"    RT",[424,757,445],{"class":438},[424,759,575],{"class":533},[424,761,578],{"class":460},[424,763,445],{"class":438},[424,765,583],{"class":533},[424,767,546],{"class":460},[424,769,588],{"class":438},[424,771,591],{"class":438},[424,773,474],{"class":473},[424,775,477],{"class":438},[424,777,481],{"class":480},[424,779,588],{"class":438},[424,781,487],{"class":473},[424,783,477],{"class":438},[424,785,492],{"class":480},[424,787,588],{"class":438},[424,789,497],{"class":473},[424,791,477],{"class":438},[424,793,502],{"class":614},[424,795,617],{"class":438},[424,797,620],{"class":460},[424,799,801,804,806],{"class":426,"line":800},19,[424,802,803],{"class":460},"  )",[424,805,484],{"class":438},[424,807,670],{"class":669},[809,810,811,826],"table",{},[812,813,814],"thead",{},[815,816,817,820,823],"tr",{},[818,819],"th",{},[818,821,822],{},"Type-first",[818,824,825],{},"Type Builder",[827,828,829,845,864,879],"tbody",{},[815,830,831,835,840],{},[832,833,834],"td",{},"Arrays and tuples",[832,836,837],{},[421,838,839],{},"TF.FormattedArray\u003CT[], {...}>",[832,841,842],{},[421,843,844],{},"RT.array(item, {...})",[815,846,847,850,855],{},[832,848,849],{},"Objects and records",[832,851,852],{},[421,853,854],{},"TF.FormattedObject\u003CShape, {...}>",[832,856,857,860,861],{},[421,858,859],{},"RT.object(config, {...})",", ",[421,862,863],{},"RT.record(inner, {...})",[815,865,866,869,874],{},[832,867,868],{},"Sets",[832,870,871],{},[421,872,873],{},"TF.FormattedSet\u003CSet\u003CT>, {...}>",[832,875,876],{},[421,877,878],{},"RT.set(item, {...})",[815,880,881,884,889],{},[832,882,883],{},"Maps",[832,885,886],{},[421,887,888],{},"TF.FormattedMap\u003CMap\u003CK, V>, {...}>",[832,890,891],{},[421,892,893],{},"RT.map(key, value, {...})",[895,896,897,898,901,902,905],"tip",{},"No TypeScript type says \"an array whose entries differ\", so ",[421,899,900],{},"uniqueItems"," keeps the closest shape (",[421,903,904],{},"string[]",") and the generated function does the check.",[405,907,909],{"id":908},"collection-options","Collection Options",[410,911,912,913,916,917,920,921,924],{},"An entry is one item of an array, one member of a Set, or one ",[421,914,915],{},"[key, value]"," pair of a Map. On a Map, put ",[421,918,919],{},"unknown"," in the half of ",[421,922,923],{},"contains"," you do not care about.",[414,926,928],{"className":416,"code":927,"language":418,"meta":419,"style":419},"\u002F\u002F `contains` takes a type in a type, and a run-type in a builder\ntype WithAdminId = TF.FormattedArray\u003C\n  string[],\n  {contains: TF.UUID; minContains: 2}\n>;\n\nconst hasTwoIds = createValidateFn\u003CWithAdminId>();\nconst hasTwoIdsBuilt = createValidateFn(\n  RT.array(TF.string(), {contains: TF.uuid(), minContains: 2})\n);\n\nhasTwoIds([\n  'plain',\n  '9f1b8c2e-3d4a-4b5c-8d6e-1f2a3b4c5d6e',\n  '018f1b8c-2e3d-7b5c-8d6e-1f2a3b4c5d6e',\n]); \u002F\u002F true\nhasTwoIdsBuilt(['plain', '9f1b8c2e-3d4a-4b5c-8d6e-1f2a3b4c5d6e']); \u002F\u002F false, only one matches\n",[421,929,930,935,952,960,987,991,995,1017,1030,1075,1081,1085,1093,1105,1116,1127,1135],{"__ignoreMap":419},[424,931,932],{"class":426,"line":427},[424,933,934],{"class":669},"\u002F\u002F `contains` takes a type in a type, and a run-type in a builder\n",[424,936,937,939,942,944,946,948,950],{"class":426,"line":454},[424,938,431],{"class":430},[424,940,941],{"class":434}," WithAdminId",[424,943,439],{"class":438},[424,945,442],{"class":434},[424,947,445],{"class":438},[424,949,448],{"class":434},[424,951,451],{"class":438},[424,953,954,956,958],{"class":426,"line":467},[424,955,457],{"class":434},[424,957,461],{"class":460},[424,959,464],{"class":438},[424,961,962,964,966,968,970,972,975,977,980,982,985],{"class":426,"line":508},[424,963,470],{"class":438},[424,965,923],{"class":473},[424,967,477],{"class":438},[424,969,442],{"class":434},[424,971,445],{"class":438},[424,973,974],{"class":434},"UUID",[424,976,484],{"class":438},[424,978,979],{"class":473}," minContains",[424,981,477],{"class":438},[424,983,984],{"class":480}," 2",[424,986,505],{"class":438},[424,988,989],{"class":426,"line":514},[424,990,511],{"class":438},[424,992,993],{"class":426,"line":521},[424,994,518],{"emptyLinePlaceholder":517},[424,996,997,999,1002,1004,1006,1008,1011,1013,1015],{"class":426,"line":552},[424,998,524],{"class":430},[424,1000,1001],{"class":460}," hasTwoIds ",[424,1003,530],{"class":438},[424,1005,534],{"class":533},[424,1007,537],{"class":438},[424,1009,1010],{"class":434},"WithAdminId",[424,1012,543],{"class":438},[424,1014,546],{"class":460},[424,1016,549],{"class":438},[424,1018,1019,1021,1024,1026,1028],{"class":426,"line":567},[424,1020,524],{"class":430},[424,1022,1023],{"class":460}," hasTwoIdsBuilt ",[424,1025,530],{"class":438},[424,1027,534],{"class":533},[424,1029,564],{"class":460},[424,1031,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1061,1063,1065,1067,1069,1071,1073],{"class":426,"line":623},[424,1033,570],{"class":460},[424,1035,445],{"class":438},[424,1037,575],{"class":533},[424,1039,578],{"class":460},[424,1041,445],{"class":438},[424,1043,583],{"class":533},[424,1045,546],{"class":460},[424,1047,588],{"class":438},[424,1049,591],{"class":438},[424,1051,923],{"class":473},[424,1053,477],{"class":438},[424,1055,442],{"class":460},[424,1057,445],{"class":438},[424,1059,1060],{"class":533},"uuid",[424,1062,546],{"class":460},[424,1064,588],{"class":438},[424,1066,979],{"class":473},[424,1068,477],{"class":438},[424,1070,984],{"class":480},[424,1072,617],{"class":438},[424,1074,620],{"class":460},[424,1076,1077,1079],{"class":426,"line":631},[424,1078,626],{"class":460},[424,1080,549],{"class":438},[424,1082,1083],{"class":426,"line":636},[424,1084,518],{"emptyLinePlaceholder":517},[424,1086,1087,1090],{"class":426,"line":673},[424,1088,1089],{"class":533},"hasTwoIds",[424,1091,1092],{"class":460},"([\n",[424,1094,1095,1098,1101,1103],{"class":426,"line":686},[424,1096,1097],{"class":438},"  '",[424,1099,1100],{"class":648},"plain",[424,1102,645],{"class":438},[424,1104,464],{"class":438},[424,1106,1107,1109,1112,1114],{"class":426,"line":715},[424,1108,1097],{"class":438},[424,1110,1111],{"class":648},"9f1b8c2e-3d4a-4b5c-8d6e-1f2a3b4c5d6e",[424,1113,645],{"class":438},[424,1115,464],{"class":438},[424,1117,1118,1120,1123,1125],{"class":426,"line":720},[424,1119,1097],{"class":438},[424,1121,1122],{"class":648},"018f1b8c-2e3d-7b5c-8d6e-1f2a3b4c5d6e",[424,1124,645],{"class":438},[424,1126,464],{"class":438},[424,1128,1129,1131,1133],{"class":426,"line":726},[424,1130,664],{"class":460},[424,1132,484],{"class":438},[424,1134,670],{"class":669},[424,1136,1137,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158,1160],{"class":426,"line":744},[424,1138,1139],{"class":533},"hasTwoIdsBuilt",[424,1141,642],{"class":460},[424,1143,645],{"class":438},[424,1145,1100],{"class":648},[424,1147,645],{"class":438},[424,1149,588],{"class":438},[424,1151,656],{"class":438},[424,1153,1111],{"class":648},[424,1155,645],{"class":438},[424,1157,664],{"class":460},[424,1159,484],{"class":438},[424,1161,1162],{"class":669}," \u002F\u002F false, only one matches\n",[809,1164,1165,1178],{},[812,1166,1167],{},[815,1168,1169,1172,1175],{},[818,1170,1171],{},"Option",[818,1173,1174],{},"On",[818,1176,1177],{},"What it asks",[827,1179,1180,1196,1207,1218,1235,1251,1263],{},[815,1181,1182,1190,1193],{},[832,1183,1184,1186,1187],{},[421,1185,474],{}," \u002F ",[421,1188,1189],{},"maxItems",[832,1191,1192],{},"every collection",[832,1194,1195],{},"how many entries there may be",[815,1197,1198,1202,1204],{},[832,1199,1200],{},[421,1201,900],{},[832,1203,1192],{},[832,1205,1206],{},"no two entries are equal, compared by value",[815,1208,1209,1213,1215],{},[832,1210,1211],{},[421,1212,923],{},[832,1214,1192],{},[832,1216,1217],{},"at least one entry matches a second type",[815,1219,1220,1228,1230],{},[832,1221,1222,1186,1225],{},[421,1223,1224],{},"minContains",[421,1226,1227],{},"maxContains",[832,1229,1192],{},[832,1231,1232,1233],{},"how many entries must match ",[421,1234,923],{},[815,1236,1237,1245,1248],{},[832,1238,1239,1186,1242],{},[421,1240,1241],{},"minProperties",[421,1243,1244],{},"maxProperties",[832,1246,1247],{},"objects",[832,1249,1250],{},"how many keys the value may carry",[815,1252,1253,1258,1260],{},[832,1254,1255],{},[421,1256,1257],{},"patternProperties",[832,1259,1247],{},[832,1261,1262],{},"keys matching a pattern carry a given type",[815,1264,1265,1270,1272],{},[832,1266,1267],{},[421,1268,1269],{},"propertyNames",[832,1271,1247],{},[832,1273,1274],{},"every key satisfies a string format",[1276,1277,1278,1279,1283],"note",{},"These are JSON Schema's own options and names, so a ",[1280,1281,1282],"a",{"href":210},"generated JSON Schema document"," enforces exactly what the type does. A bounded Set or Map declares them on the array it travels as.",[405,1285,1287],{"id":1286},"object-size-options","Object Size Options",[410,1289,1290,1292,1293,1295],{},[421,1291,1241],{}," and ",[421,1294,1244],{}," limit how many keys an object carries.",[414,1297,1299],{"className":416,"code":1298,"language":418,"meta":419,"style":419},"\u002F\u002F Objects work the same way: the shape is the type, and everything else about\n\u002F\u002F the keys is an option.\ninterface Settings {\n  theme: string;\n  locale?: string;\n}\n\ntype BoundedSettings = TF.FormattedObject\u003C\n  Settings,\n  {minProperties: 1; maxProperties: 2}\n>;\n\nconst isSettings = createValidateFn\u003CBoundedSettings>();\nconst isSettingsBuilt = createValidateFn(\n  RT.object(\n    {theme: TF.string(), locale: RT.optional(TF.string())},\n    {minProperties: 1, maxProperties: 2}\n  )\n);\n\nisSettings({theme: 'dark'}); \u002F\u002F true\nisSettingsBuilt({theme: 'dark', locale: 'en'}); \u002F\u002F true\n",[421,1300,1301,1306,1311,1322,1334,1346,1350,1354,1372,1379,1400,1404,1408,1430,1443,1454,1499,1519,1524,1530,1535,1566],{"__ignoreMap":419},[424,1302,1303],{"class":426,"line":427},[424,1304,1305],{"class":669},"\u002F\u002F Objects work the same way: the shape is the type, and everything else about\n",[424,1307,1308],{"class":426,"line":454},[424,1309,1310],{"class":669},"\u002F\u002F the keys is an option.\n",[424,1312,1313,1316,1319],{"class":426,"line":467},[424,1314,1315],{"class":430},"interface",[424,1317,1318],{"class":434}," Settings",[424,1320,1321],{"class":438}," {\n",[424,1323,1324,1327,1329,1332],{"class":426,"line":508},[424,1325,1326],{"class":473},"  theme",[424,1328,477],{"class":438},[424,1330,1331],{"class":434}," string",[424,1333,549],{"class":438},[424,1335,1336,1339,1342,1344],{"class":426,"line":514},[424,1337,1338],{"class":473},"  locale",[424,1340,1341],{"class":438},"?:",[424,1343,1331],{"class":434},[424,1345,549],{"class":438},[424,1347,1348],{"class":426,"line":521},[424,1349,505],{"class":438},[424,1351,1352],{"class":426,"line":552},[424,1353,518],{"emptyLinePlaceholder":517},[424,1355,1356,1358,1361,1363,1365,1367,1370],{"class":426,"line":567},[424,1357,431],{"class":430},[424,1359,1360],{"class":434}," BoundedSettings",[424,1362,439],{"class":438},[424,1364,442],{"class":434},[424,1366,445],{"class":438},[424,1368,1369],{"class":434},"FormattedObject",[424,1371,451],{"class":438},[424,1373,1374,1377],{"class":426,"line":623},[424,1375,1376],{"class":434},"  Settings",[424,1378,464],{"class":438},[424,1380,1381,1383,1385,1387,1389,1391,1394,1396,1398],{"class":426,"line":631},[424,1382,470],{"class":438},[424,1384,1241],{"class":473},[424,1386,477],{"class":438},[424,1388,481],{"class":480},[424,1390,484],{"class":438},[424,1392,1393],{"class":473}," maxProperties",[424,1395,477],{"class":438},[424,1397,984],{"class":480},[424,1399,505],{"class":438},[424,1401,1402],{"class":426,"line":636},[424,1403,511],{"class":438},[424,1405,1406],{"class":426,"line":673},[424,1407,518],{"emptyLinePlaceholder":517},[424,1409,1410,1412,1415,1417,1419,1421,1424,1426,1428],{"class":426,"line":686},[424,1411,524],{"class":430},[424,1413,1414],{"class":460}," isSettings ",[424,1416,530],{"class":438},[424,1418,534],{"class":533},[424,1420,537],{"class":438},[424,1422,1423],{"class":434},"BoundedSettings",[424,1425,543],{"class":438},[424,1427,546],{"class":460},[424,1429,549],{"class":438},[424,1431,1432,1434,1437,1439,1441],{"class":426,"line":715},[424,1433,524],{"class":430},[424,1435,1436],{"class":460}," isSettingsBuilt ",[424,1438,530],{"class":438},[424,1440,534],{"class":533},[424,1442,564],{"class":460},[424,1444,1445,1447,1449,1452],{"class":426,"line":720},[424,1446,570],{"class":460},[424,1448,445],{"class":438},[424,1450,1451],{"class":533},"object",[424,1453,564],{"class":460},[424,1455,1456,1459,1462,1464,1466,1468,1470,1472,1474,1477,1479,1482,1484,1487,1489,1491,1493,1496],{"class":426,"line":726},[424,1457,1458],{"class":438},"    {",[424,1460,1461],{"class":473},"theme",[424,1463,477],{"class":438},[424,1465,442],{"class":460},[424,1467,445],{"class":438},[424,1469,583],{"class":533},[424,1471,546],{"class":460},[424,1473,588],{"class":438},[424,1475,1476],{"class":473}," locale",[424,1478,477],{"class":438},[424,1480,1481],{"class":460}," RT",[424,1483,445],{"class":438},[424,1485,1486],{"class":533},"optional",[424,1488,578],{"class":460},[424,1490,445],{"class":438},[424,1492,583],{"class":533},[424,1494,1495],{"class":460},"())",[424,1497,1498],{"class":438},"},\n",[424,1500,1501,1503,1505,1507,1509,1511,1513,1515,1517],{"class":426,"line":744},[424,1502,1458],{"class":438},[424,1504,1241],{"class":473},[424,1506,477],{"class":438},[424,1508,481],{"class":480},[424,1510,588],{"class":438},[424,1512,1393],{"class":473},[424,1514,477],{"class":438},[424,1516,984],{"class":480},[424,1518,505],{"class":438},[424,1520,1521],{"class":426,"line":752},[424,1522,1523],{"class":460},"  )\n",[424,1525,1526,1528],{"class":426,"line":800},[424,1527,626],{"class":460},[424,1529,549],{"class":438},[424,1531,1533],{"class":426,"line":1532},20,[424,1534,518],{"emptyLinePlaceholder":517},[424,1536,1538,1541,1544,1547,1549,1551,1553,1556,1558,1560,1562,1564],{"class":426,"line":1537},21,[424,1539,1540],{"class":533},"isSettings",[424,1542,1543],{"class":460},"(",[424,1545,1546],{"class":438},"{",[424,1548,1461],{"class":473},[424,1550,477],{"class":438},[424,1552,656],{"class":438},[424,1554,1555],{"class":648},"dark",[424,1557,645],{"class":438},[424,1559,617],{"class":438},[424,1561,626],{"class":460},[424,1563,484],{"class":438},[424,1565,670],{"class":669},[424,1567,1569,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1597,1599,1601,1603,1605],{"class":426,"line":1568},22,[424,1570,1571],{"class":533},"isSettingsBuilt",[424,1573,1543],{"class":460},[424,1575,1546],{"class":438},[424,1577,1461],{"class":473},[424,1579,477],{"class":438},[424,1581,656],{"class":438},[424,1583,1555],{"class":648},[424,1585,645],{"class":438},[424,1587,588],{"class":438},[424,1589,1476],{"class":473},[424,1591,477],{"class":438},[424,1593,656],{"class":438},[424,1595,1596],{"class":648},"en",[424,1598,645],{"class":438},[424,1600,617],{"class":438},[424,1602,626],{"class":460},[424,1604,484],{"class":438},[424,1606,670],{"class":669},[405,1608,1610],{"id":1609},"object-key-options","Object Key Options",[410,1612,1613,1615,1616,1618],{},[421,1614,1257],{}," gives a type to every key that matches a pattern, and ",[421,1617,1269],{}," checks every key against a string format.",[414,1620,1622],{"className":416,"code":1621,"language":418,"meta":419,"style":419},"type Columns = TF.FormattedObject\u003C\n  Record\u003Cstring, unknown>,\n  {patternProperties: {'^col_': number}}\n>;\ntype LowercaseKeys = TF.FormattedObject\u003C\n  Record\u003Cstring, string>,\n  {propertyNames: TF.Alpha}\n>;\n\nconst isColumns = createValidateFn\u003CColumns>();\nconst isLowercaseKeys = createValidateFn\u003CLowercaseKeys>();\n\nisColumns({col_width: 40}); \u002F\u002F true\nisColumns({col_width: 'wide'}); \u002F\u002F false, a col_ key must hold a number\nisLowercaseKeys({theme: 'dark'}); \u002F\u002F true\nisLowercaseKeys({'theme-2': 'dark'}); \u002F\u002F false, the key is not alphabetic\n",[421,1623,1624,1641,1658,1683,1687,1704,1718,1735,1739,1743,1765,1787,1791,1816,1844,1871],{"__ignoreMap":419},[424,1625,1626,1628,1631,1633,1635,1637,1639],{"class":426,"line":427},[424,1627,431],{"class":430},[424,1629,1630],{"class":434}," Columns",[424,1632,439],{"class":438},[424,1634,442],{"class":434},[424,1636,445],{"class":438},[424,1638,1369],{"class":434},[424,1640,451],{"class":438},[424,1642,1643,1646,1648,1650,1652,1655],{"class":426,"line":454},[424,1644,1645],{"class":434},"  Record",[424,1647,537],{"class":438},[424,1649,583],{"class":434},[424,1651,588],{"class":438},[424,1653,1654],{"class":434}," unknown",[424,1656,1657],{"class":438},">,\n",[424,1659,1660,1662,1664,1666,1668,1670,1673,1675,1677,1680],{"class":426,"line":467},[424,1661,470],{"class":438},[424,1663,1257],{"class":473},[424,1665,477],{"class":438},[424,1667,591],{"class":438},[424,1669,645],{"class":438},[424,1671,1672],{"class":648},"^col_",[424,1674,645],{"class":438},[424,1676,477],{"class":438},[424,1678,1679],{"class":434}," number",[424,1681,1682],{"class":438},"}}\n",[424,1684,1685],{"class":426,"line":508},[424,1686,511],{"class":438},[424,1688,1689,1691,1694,1696,1698,1700,1702],{"class":426,"line":514},[424,1690,431],{"class":430},[424,1692,1693],{"class":434}," LowercaseKeys",[424,1695,439],{"class":438},[424,1697,442],{"class":434},[424,1699,445],{"class":438},[424,1701,1369],{"class":434},[424,1703,451],{"class":438},[424,1705,1706,1708,1710,1712,1714,1716],{"class":426,"line":521},[424,1707,1645],{"class":434},[424,1709,537],{"class":438},[424,1711,583],{"class":434},[424,1713,588],{"class":438},[424,1715,1331],{"class":434},[424,1717,1657],{"class":438},[424,1719,1720,1722,1724,1726,1728,1730,1733],{"class":426,"line":552},[424,1721,470],{"class":438},[424,1723,1269],{"class":473},[424,1725,477],{"class":438},[424,1727,442],{"class":434},[424,1729,445],{"class":438},[424,1731,1732],{"class":434},"Alpha",[424,1734,505],{"class":438},[424,1736,1737],{"class":426,"line":567},[424,1738,511],{"class":438},[424,1740,1741],{"class":426,"line":623},[424,1742,518],{"emptyLinePlaceholder":517},[424,1744,1745,1747,1750,1752,1754,1756,1759,1761,1763],{"class":426,"line":631},[424,1746,524],{"class":430},[424,1748,1749],{"class":460}," isColumns ",[424,1751,530],{"class":438},[424,1753,534],{"class":533},[424,1755,537],{"class":438},[424,1757,1758],{"class":434},"Columns",[424,1760,543],{"class":438},[424,1762,546],{"class":460},[424,1764,549],{"class":438},[424,1766,1767,1769,1772,1774,1776,1778,1781,1783,1785],{"class":426,"line":636},[424,1768,524],{"class":430},[424,1770,1771],{"class":460}," isLowercaseKeys ",[424,1773,530],{"class":438},[424,1775,534],{"class":533},[424,1777,537],{"class":438},[424,1779,1780],{"class":434},"LowercaseKeys",[424,1782,543],{"class":438},[424,1784,546],{"class":460},[424,1786,549],{"class":438},[424,1788,1789],{"class":426,"line":673},[424,1790,518],{"emptyLinePlaceholder":517},[424,1792,1793,1796,1798,1800,1803,1805,1808,1810,1812,1814],{"class":426,"line":686},[424,1794,1795],{"class":533},"isColumns",[424,1797,1543],{"class":460},[424,1799,1546],{"class":438},[424,1801,1802],{"class":473},"col_width",[424,1804,477],{"class":438},[424,1806,1807],{"class":480}," 40",[424,1809,617],{"class":438},[424,1811,626],{"class":460},[424,1813,484],{"class":438},[424,1815,670],{"class":669},[424,1817,1818,1820,1822,1824,1826,1828,1830,1833,1835,1837,1839,1841],{"class":426,"line":715},[424,1819,1795],{"class":533},[424,1821,1543],{"class":460},[424,1823,1546],{"class":438},[424,1825,1802],{"class":473},[424,1827,477],{"class":438},[424,1829,656],{"class":438},[424,1831,1832],{"class":648},"wide",[424,1834,645],{"class":438},[424,1836,617],{"class":438},[424,1838,626],{"class":460},[424,1840,484],{"class":438},[424,1842,1843],{"class":669}," \u002F\u002F false, a col_ key must hold a number\n",[424,1845,1846,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869],{"class":426,"line":720},[424,1847,1848],{"class":533},"isLowercaseKeys",[424,1850,1543],{"class":460},[424,1852,1546],{"class":438},[424,1854,1461],{"class":473},[424,1856,477],{"class":438},[424,1858,656],{"class":438},[424,1860,1555],{"class":648},[424,1862,645],{"class":438},[424,1864,617],{"class":438},[424,1866,626],{"class":460},[424,1868,484],{"class":438},[424,1870,670],{"class":669},[424,1872,1873,1875,1877,1879,1881,1884,1886,1888,1890,1892,1894,1896,1898,1900],{"class":426,"line":726},[424,1874,1848],{"class":533},[424,1876,1543],{"class":460},[424,1878,1546],{"class":438},[424,1880,645],{"class":438},[424,1882,1883],{"class":473},"theme-2",[424,1885,645],{"class":438},[424,1887,477],{"class":438},[424,1889,656],{"class":438},[424,1891,1555],{"class":648},[424,1893,645],{"class":438},[424,1895,617],{"class":438},[424,1897,626],{"class":460},[424,1899,484],{"class":438},[424,1901,1902],{"class":669}," \u002F\u002F false, the key is not alphabetic\n",[405,1904,1906],{"id":1905},"set-and-map-options","Set and Map Options",[410,1908,1909,1910,1912],{},"On a Set or Map, ",[421,1911,900],{}," matters when the members are objects: it rejects two Set members, or two Map keys, with the same content.",[414,1914,1916],{"className":416,"code":1915,"language":418,"meta":419,"style":419},"\u002F\u002F same options as an array; on a Map, `contains` and `uniqueItems` use [key, value] pairs\ntype Labels = TF.FormattedSet\u003CSet\u003Cstring>, {minItems: 1; maxItems: 5}>;\ntype Points = TF.FormattedSet\u003CSet\u003C{x: number; y: number}>, {uniqueItems: true}>;\ntype Scores = TF.FormattedMap\u003CMap\u003Cstring, number>, {maxItems: 100}>;\ntype WithAdmin = TF.FormattedMap\u003C\n  Map\u003Cstring, number>,\n  {contains: ['admin', unknown]}\n>;\ntype Seats = TF.FormattedMap\u003CMap\u003C{row: number}, string>, {uniqueItems: true}>;\n\nconst isLabels = createValidateFn\u003CLabels>();\nconst isPoints = createValidateFn\u003CPoints>();\nconst isScores = createValidateFn\u003CScores>();\nconst isWithAdmin = createValidateFn\u003CWithAdmin>();\nconst isSeats = createValidateFn\u003CSeats>();\nconst isScoresBuilt = createValidateFn(\n  RT.map(TF.string(), TF.number(), {maxItems: 100})\n);\n\nisLabels(new Set(['ada'])); \u002F\u002F true\nisLabels(new Set()); \u002F\u002F false, at least one label\nisPoints(\n  new Set([\n    {x: 1, y: 2},\n    {x: 1, y: 2},\n  ])\n); \u002F\u002F false, two equal points\nisWithAdmin(new Map([['admin', 1]])); \u002F\u002F true\nisWithAdmin(new Map([['guest', 1]])); \u002F\u002F false, no admin entry\nisSeats(\n  new Map([\n    [{row: 1}, 'ada'],\n    [{row: 1}, 'ada'],\n  ])\n); \u002F\u002F false, the same pair twice\nisScoresBuilt(new Map([['ada', 10]])); \u002F\u002F true\n\ngetRunTypeId\u003CScores>() ===\n  getRunTypeId(RT.map(TF.string(), TF.number(), {maxItems: 100})); \u002F\u002F true\n",[421,1917,1918,1923,1970,2021,2063,2080,2095,2122,2126,2171,2175,2197,2219,2241,2263,2285,2298,2340,2346,2350,2378,2395,2402,2412,2433,2454,2460,2470,2503,2534,2542,2551,2577,2602,2607,2617,2648,2653,2668],{"__ignoreMap":419},[424,1919,1920],{"class":426,"line":427},[424,1921,1922],{"class":669},"\u002F\u002F same options as an array; on a Map, `contains` and `uniqueItems` use [key, value] pairs\n",[424,1924,1925,1927,1930,1932,1934,1936,1939,1941,1944,1946,1948,1951,1953,1955,1957,1959,1961,1963,1965,1967],{"class":426,"line":454},[424,1926,431],{"class":430},[424,1928,1929],{"class":434}," Labels",[424,1931,439],{"class":438},[424,1933,442],{"class":434},[424,1935,445],{"class":438},[424,1937,1938],{"class":434},"FormattedSet",[424,1940,537],{"class":438},[424,1942,1943],{"class":434},"Set",[424,1945,537],{"class":438},[424,1947,583],{"class":434},[424,1949,1950],{"class":438},">,",[424,1952,591],{"class":438},[424,1954,474],{"class":473},[424,1956,477],{"class":438},[424,1958,481],{"class":480},[424,1960,484],{"class":438},[424,1962,487],{"class":473},[424,1964,477],{"class":438},[424,1966,492],{"class":480},[424,1968,1969],{"class":438},"}>;\n",[424,1971,1972,1974,1977,1979,1981,1983,1985,1987,1989,1992,1995,1997,1999,2001,2004,2006,2008,2011,2013,2015,2017,2019],{"class":426,"line":467},[424,1973,431],{"class":430},[424,1975,1976],{"class":434}," Points",[424,1978,439],{"class":438},[424,1980,442],{"class":434},[424,1982,445],{"class":438},[424,1984,1938],{"class":434},[424,1986,537],{"class":438},[424,1988,1943],{"class":434},[424,1990,1991],{"class":438},"\u003C{",[424,1993,1994],{"class":473},"x",[424,1996,477],{"class":438},[424,1998,1679],{"class":434},[424,2000,484],{"class":438},[424,2002,2003],{"class":473}," y",[424,2005,477],{"class":438},[424,2007,1679],{"class":434},[424,2009,2010],{"class":438},"}>,",[424,2012,591],{"class":438},[424,2014,900],{"class":473},[424,2016,477],{"class":438},[424,2018,502],{"class":434},[424,2020,1969],{"class":438},[424,2022,2023,2025,2028,2030,2032,2034,2037,2039,2042,2044,2046,2048,2050,2052,2054,2056,2058,2061],{"class":426,"line":508},[424,2024,431],{"class":430},[424,2026,2027],{"class":434}," Scores",[424,2029,439],{"class":438},[424,2031,442],{"class":434},[424,2033,445],{"class":438},[424,2035,2036],{"class":434},"FormattedMap",[424,2038,537],{"class":438},[424,2040,2041],{"class":434},"Map",[424,2043,537],{"class":438},[424,2045,583],{"class":434},[424,2047,588],{"class":438},[424,2049,1679],{"class":434},[424,2051,1950],{"class":438},[424,2053,591],{"class":438},[424,2055,1189],{"class":473},[424,2057,477],{"class":438},[424,2059,2060],{"class":480}," 100",[424,2062,1969],{"class":438},[424,2064,2065,2067,2070,2072,2074,2076,2078],{"class":426,"line":514},[424,2066,431],{"class":430},[424,2068,2069],{"class":434}," WithAdmin",[424,2071,439],{"class":438},[424,2073,442],{"class":434},[424,2075,445],{"class":438},[424,2077,2036],{"class":434},[424,2079,451],{"class":438},[424,2081,2082,2085,2087,2089,2091,2093],{"class":426,"line":521},[424,2083,2084],{"class":434},"  Map",[424,2086,537],{"class":438},[424,2088,583],{"class":434},[424,2090,588],{"class":438},[424,2092,1679],{"class":434},[424,2094,1657],{"class":438},[424,2096,2097,2099,2101,2103,2106,2108,2111,2113,2115,2117,2120],{"class":426,"line":552},[424,2098,470],{"class":438},[424,2100,923],{"class":473},[424,2102,477],{"class":438},[424,2104,2105],{"class":460}," [",[424,2107,645],{"class":438},[424,2109,2110],{"class":648},"admin",[424,2112,645],{"class":438},[424,2114,588],{"class":438},[424,2116,1654],{"class":434},[424,2118,2119],{"class":460},"]",[424,2121,505],{"class":438},[424,2123,2124],{"class":426,"line":567},[424,2125,511],{"class":438},[424,2127,2128,2130,2133,2135,2137,2139,2141,2143,2145,2147,2150,2152,2154,2157,2159,2161,2163,2165,2167,2169],{"class":426,"line":623},[424,2129,431],{"class":430},[424,2131,2132],{"class":434}," Seats",[424,2134,439],{"class":438},[424,2136,442],{"class":434},[424,2138,445],{"class":438},[424,2140,2036],{"class":434},[424,2142,537],{"class":438},[424,2144,2041],{"class":434},[424,2146,1991],{"class":438},[424,2148,2149],{"class":473},"row",[424,2151,477],{"class":438},[424,2153,1679],{"class":434},[424,2155,2156],{"class":438},"},",[424,2158,1331],{"class":434},[424,2160,1950],{"class":438},[424,2162,591],{"class":438},[424,2164,900],{"class":473},[424,2166,477],{"class":438},[424,2168,502],{"class":434},[424,2170,1969],{"class":438},[424,2172,2173],{"class":426,"line":631},[424,2174,518],{"emptyLinePlaceholder":517},[424,2176,2177,2179,2182,2184,2186,2188,2191,2193,2195],{"class":426,"line":636},[424,2178,524],{"class":430},[424,2180,2181],{"class":460}," isLabels ",[424,2183,530],{"class":438},[424,2185,534],{"class":533},[424,2187,537],{"class":438},[424,2189,2190],{"class":434},"Labels",[424,2192,543],{"class":438},[424,2194,546],{"class":460},[424,2196,549],{"class":438},[424,2198,2199,2201,2204,2206,2208,2210,2213,2215,2217],{"class":426,"line":673},[424,2200,524],{"class":430},[424,2202,2203],{"class":460}," isPoints ",[424,2205,530],{"class":438},[424,2207,534],{"class":533},[424,2209,537],{"class":438},[424,2211,2212],{"class":434},"Points",[424,2214,543],{"class":438},[424,2216,546],{"class":460},[424,2218,549],{"class":438},[424,2220,2221,2223,2226,2228,2230,2232,2235,2237,2239],{"class":426,"line":686},[424,2222,524],{"class":430},[424,2224,2225],{"class":460}," isScores ",[424,2227,530],{"class":438},[424,2229,534],{"class":533},[424,2231,537],{"class":438},[424,2233,2234],{"class":434},"Scores",[424,2236,543],{"class":438},[424,2238,546],{"class":460},[424,2240,549],{"class":438},[424,2242,2243,2245,2248,2250,2252,2254,2257,2259,2261],{"class":426,"line":715},[424,2244,524],{"class":430},[424,2246,2247],{"class":460}," isWithAdmin ",[424,2249,530],{"class":438},[424,2251,534],{"class":533},[424,2253,537],{"class":438},[424,2255,2256],{"class":434},"WithAdmin",[424,2258,543],{"class":438},[424,2260,546],{"class":460},[424,2262,549],{"class":438},[424,2264,2265,2267,2270,2272,2274,2276,2279,2281,2283],{"class":426,"line":720},[424,2266,524],{"class":430},[424,2268,2269],{"class":460}," isSeats ",[424,2271,530],{"class":438},[424,2273,534],{"class":533},[424,2275,537],{"class":438},[424,2277,2278],{"class":434},"Seats",[424,2280,543],{"class":438},[424,2282,546],{"class":460},[424,2284,549],{"class":438},[424,2286,2287,2289,2292,2294,2296],{"class":426,"line":726},[424,2288,524],{"class":430},[424,2290,2291],{"class":460}," isScoresBuilt ",[424,2293,530],{"class":438},[424,2295,534],{"class":533},[424,2297,564],{"class":460},[424,2299,2300,2302,2304,2307,2309,2311,2313,2315,2317,2319,2321,2324,2326,2328,2330,2332,2334,2336,2338],{"class":426,"line":744},[424,2301,570],{"class":460},[424,2303,445],{"class":438},[424,2305,2306],{"class":533},"map",[424,2308,578],{"class":460},[424,2310,445],{"class":438},[424,2312,583],{"class":533},[424,2314,546],{"class":460},[424,2316,588],{"class":438},[424,2318,442],{"class":460},[424,2320,445],{"class":438},[424,2322,2323],{"class":533},"number",[424,2325,546],{"class":460},[424,2327,588],{"class":438},[424,2329,591],{"class":438},[424,2331,1189],{"class":473},[424,2333,477],{"class":438},[424,2335,2060],{"class":480},[424,2337,617],{"class":438},[424,2339,620],{"class":460},[424,2341,2342,2344],{"class":426,"line":752},[424,2343,626],{"class":460},[424,2345,549],{"class":438},[424,2347,2348],{"class":426,"line":800},[424,2349,518],{"emptyLinePlaceholder":517},[424,2351,2352,2355,2357,2360,2363,2365,2367,2369,2371,2374,2376],{"class":426,"line":1532},[424,2353,2354],{"class":533},"isLabels",[424,2356,1543],{"class":460},[424,2358,2359],{"class":438},"new",[424,2361,2362],{"class":533}," Set",[424,2364,642],{"class":460},[424,2366,645],{"class":438},[424,2368,649],{"class":648},[424,2370,645],{"class":438},[424,2372,2373],{"class":460},"]))",[424,2375,484],{"class":438},[424,2377,670],{"class":669},[424,2379,2380,2382,2384,2386,2388,2390,2392],{"class":426,"line":1537},[424,2381,2354],{"class":533},[424,2383,1543],{"class":460},[424,2385,2359],{"class":438},[424,2387,2362],{"class":533},[424,2389,1495],{"class":460},[424,2391,484],{"class":438},[424,2393,2394],{"class":669}," \u002F\u002F false, at least one label\n",[424,2396,2397,2400],{"class":426,"line":1568},[424,2398,2399],{"class":533},"isPoints",[424,2401,564],{"class":460},[424,2403,2405,2408,2410],{"class":426,"line":2404},23,[424,2406,2407],{"class":438},"  new",[424,2409,2362],{"class":533},[424,2411,1092],{"class":460},[424,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431],{"class":426,"line":2414},24,[424,2416,1458],{"class":438},[424,2418,1994],{"class":473},[424,2420,477],{"class":438},[424,2422,481],{"class":480},[424,2424,588],{"class":438},[424,2426,2003],{"class":473},[424,2428,477],{"class":438},[424,2430,984],{"class":480},[424,2432,1498],{"class":438},[424,2434,2436,2438,2440,2442,2444,2446,2448,2450,2452],{"class":426,"line":2435},25,[424,2437,1458],{"class":438},[424,2439,1994],{"class":473},[424,2441,477],{"class":438},[424,2443,481],{"class":480},[424,2445,588],{"class":438},[424,2447,2003],{"class":473},[424,2449,477],{"class":438},[424,2451,984],{"class":480},[424,2453,1498],{"class":438},[424,2455,2457],{"class":426,"line":2456},26,[424,2458,2459],{"class":460},"  ])\n",[424,2461,2463,2465,2467],{"class":426,"line":2462},27,[424,2464,626],{"class":460},[424,2466,484],{"class":438},[424,2468,2469],{"class":669}," \u002F\u002F false, two equal points\n",[424,2471,2473,2476,2478,2480,2483,2486,2488,2490,2492,2494,2496,2499,2501],{"class":426,"line":2472},28,[424,2474,2475],{"class":533},"isWithAdmin",[424,2477,1543],{"class":460},[424,2479,2359],{"class":438},[424,2481,2482],{"class":533}," Map",[424,2484,2485],{"class":460},"([[",[424,2487,645],{"class":438},[424,2489,2110],{"class":648},[424,2491,645],{"class":438},[424,2493,588],{"class":438},[424,2495,481],{"class":480},[424,2497,2498],{"class":460},"]]))",[424,2500,484],{"class":438},[424,2502,670],{"class":669},[424,2504,2506,2508,2510,2512,2514,2516,2518,2521,2523,2525,2527,2529,2531],{"class":426,"line":2505},29,[424,2507,2475],{"class":533},[424,2509,1543],{"class":460},[424,2511,2359],{"class":438},[424,2513,2482],{"class":533},[424,2515,2485],{"class":460},[424,2517,645],{"class":438},[424,2519,2520],{"class":648},"guest",[424,2522,645],{"class":438},[424,2524,588],{"class":438},[424,2526,481],{"class":480},[424,2528,2498],{"class":460},[424,2530,484],{"class":438},[424,2532,2533],{"class":669}," \u002F\u002F false, no admin entry\n",[424,2535,2537,2540],{"class":426,"line":2536},30,[424,2538,2539],{"class":533},"isSeats",[424,2541,564],{"class":460},[424,2543,2545,2547,2549],{"class":426,"line":2544},31,[424,2546,2407],{"class":438},[424,2548,2482],{"class":533},[424,2550,1092],{"class":460},[424,2552,2554,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575],{"class":426,"line":2553},32,[424,2555,2556],{"class":460},"    [",[424,2558,1546],{"class":438},[424,2560,2149],{"class":473},[424,2562,477],{"class":438},[424,2564,481],{"class":480},[424,2566,2156],{"class":438},[424,2568,656],{"class":438},[424,2570,649],{"class":648},[424,2572,645],{"class":438},[424,2574,2119],{"class":460},[424,2576,464],{"class":438},[424,2578,2580,2582,2584,2586,2588,2590,2592,2594,2596,2598,2600],{"class":426,"line":2579},33,[424,2581,2556],{"class":460},[424,2583,1546],{"class":438},[424,2585,2149],{"class":473},[424,2587,477],{"class":438},[424,2589,481],{"class":480},[424,2591,2156],{"class":438},[424,2593,656],{"class":438},[424,2595,649],{"class":648},[424,2597,645],{"class":438},[424,2599,2119],{"class":460},[424,2601,464],{"class":438},[424,2603,2605],{"class":426,"line":2604},34,[424,2606,2459],{"class":460},[424,2608,2610,2612,2614],{"class":426,"line":2609},35,[424,2611,626],{"class":460},[424,2613,484],{"class":438},[424,2615,2616],{"class":669}," \u002F\u002F false, the same pair twice\n",[424,2618,2620,2623,2625,2627,2629,2631,2633,2635,2637,2639,2642,2644,2646],{"class":426,"line":2619},36,[424,2621,2622],{"class":533},"isScoresBuilt",[424,2624,1543],{"class":460},[424,2626,2359],{"class":438},[424,2628,2482],{"class":533},[424,2630,2485],{"class":460},[424,2632,645],{"class":438},[424,2634,649],{"class":648},[424,2636,645],{"class":438},[424,2638,588],{"class":438},[424,2640,2641],{"class":480}," 10",[424,2643,2498],{"class":460},[424,2645,484],{"class":438},[424,2647,670],{"class":669},[424,2649,2651],{"class":426,"line":2650},37,[424,2652,518],{"emptyLinePlaceholder":517},[424,2654,2656,2658,2660,2662,2664,2666],{"class":426,"line":2655},38,[424,2657,729],{"class":533},[424,2659,537],{"class":438},[424,2661,2234],{"class":434},[424,2663,543],{"class":438},[424,2665,738],{"class":460},[424,2667,741],{"class":438},[424,2669,2671,2673,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694,2696,2698,2700,2702,2704,2706,2708,2710,2713,2715],{"class":426,"line":2670},39,[424,2672,747],{"class":533},[424,2674,2675],{"class":460},"(RT",[424,2677,445],{"class":438},[424,2679,2306],{"class":533},[424,2681,578],{"class":460},[424,2683,445],{"class":438},[424,2685,583],{"class":533},[424,2687,546],{"class":460},[424,2689,588],{"class":438},[424,2691,442],{"class":460},[424,2693,445],{"class":438},[424,2695,2323],{"class":533},[424,2697,546],{"class":460},[424,2699,588],{"class":438},[424,2701,591],{"class":438},[424,2703,1189],{"class":473},[424,2705,477],{"class":438},[424,2707,2060],{"class":480},[424,2709,617],{"class":438},[424,2711,2712],{"class":460},"))",[424,2714,484],{"class":438},[424,2716,670],{"class":669},[2718,2719,2720],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}","Size, uniqueness and key rules for arrays, objects, Sets and Maps.","md",null,{"toc":24},{"title":251,"description":2721},"MuDkFqfjtewUdmqysdIl7ZlKuQ8OkqfbWzTkAPqqF_Q",1793324365427]