[{"data":1,"prerenderedAt":1338},["ShallowReactive",2],{"navigation_docs":3,"-runtypes-type-formats-date-time":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":247,"body":401,"description":1332,"extension":1333,"links":1334,"meta":1335,"navigation":619,"path":248,"seo":1336,"stem":249,"__hash__":1337},"docs\u002F02.runtypes\u002F03.type-formats\u002F05.date-time.md",{"type":402,"value":403},"minimark",[404,409,448,542,706,729,733,744,898,902,927,1220,1315,1328],[405,406,408],"h2",{"id":407},"date-representations","Date Representations",[410,411,412,413,417,418,422,423,422,426,422,429,432,433,436,437,440,441,436,444,447],"p",{},"A date comes in three shapes, each with its own format family. All three take the ",[414,415,416],"strong",{},"same"," ",[419,420,421],"code",{},"min"," \u002F ",[419,424,425],{},"max",[419,427,428],{},"gt",[419,430,431],{},"lt"," bounds, written in the type's own ISO form: a ",[419,434,435],{},"PlainDate"," takes ",[419,438,439],{},"'2020-01-01'",", an ",[419,442,443],{},"Instant",[419,445,446],{},"'2020-01-01T00:00:00Z'",".",[449,450,451,475,506],"ul",{},[452,453,454,457,458,461,462,461,465,468,469,461,471,474],"li",{},[414,455,456],{},"String-encoded",": ",[419,459,460],{},"TF.StringDate",", ",[419,463,464],{},"TF.StringTime",[419,466,467],{},"TF.StringDateTime"," check an ISO string in a fixed layout (",[419,470,439],{},[419,472,473],{},"'08:30'",").",[452,476,477,457,483,486,487,489,490,422,493,496,497,499,500,422,503,474],{},[414,478,479,480],{},"Native ",[419,481,482],{},"Date",[419,484,485],{},"TF.Date"," checks a real JS ",[419,488,482],{},"; ",[419,491,492],{},"TF.DateFuture",[419,494,495],{},"TF.DatePast"," are ready-made (a ",[419,498,482],{}," that's ",[419,501,502],{},">= now",[419,504,505],{},"\u003C= now",[452,507,508,457,511,461,514,461,517,461,520,461,523,461,526,529,530,533,534,537,538,541],{},[414,509,510],{},"TC39 Temporal",[419,512,513],{},"TFT.PlainDate",[419,515,516],{},"TFT.ZonedDateTime",[419,518,519],{},"TFT.Instant",[419,521,522],{},"TFT.PlainTime",[419,524,525],{},"TFT.PlainDateTime",[419,527,528],{},"TFT.PlainYearMonth"," check an actual ",[419,531,532],{},"Temporal.*"," instance. Import them from ",[419,535,536],{},"@mionjs\u002Frun-types\u002Fformats\u002Ftemporal"," (as ",[419,539,540],{},"TFT","), so apps that don't use Temporal never pull in its lib.",[543,544,549],"pre",{"className":545,"code":546,"language":547,"meta":548,"style":548},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type * as TF from '@mionjs\u002Frun-types\u002Fformats';\nimport type * as TFT from '@mionjs\u002Frun-types\u002Fformats\u002Ftemporal';\n\n\u002F\u002F The same \"2020 or later\" bound, two representations:\ntype DateString = TF.StringDate\u003C{min: '2020-01-01'}>; \u002F\u002F an ISO string\ntype PlainDate = TFT.PlainDate\u003C{min: '2020-01-01'}>;  \u002F\u002F a Temporal.PlainDate\n","ts","",[419,550,551,590,614,621,628,672],{"__ignoreMap":548},[552,553,556,560,563,567,570,574,577,580,584,587],"span",{"class":554,"line":555},"line",1,[552,557,559],{"class":558},"s7zQu","import",[552,561,562],{"class":558}," type",[552,564,566],{"class":565},"sMK4o"," *",[552,568,569],{"class":558}," as",[552,571,573],{"class":572},"sTEyZ"," TF ",[552,575,576],{"class":558},"from",[552,578,579],{"class":565}," '",[552,581,583],{"class":582},"sfazB","@mionjs\u002Frun-types\u002Fformats",[552,585,586],{"class":565},"'",[552,588,589],{"class":565},";\n",[552,591,593,595,597,599,601,604,606,608,610,612],{"class":554,"line":592},2,[552,594,559],{"class":558},[552,596,562],{"class":558},[552,598,566],{"class":565},[552,600,569],{"class":558},[552,602,603],{"class":572}," TFT ",[552,605,576],{"class":558},[552,607,579],{"class":565},[552,609,536],{"class":582},[552,611,586],{"class":565},[552,613,589],{"class":565},[552,615,617],{"class":554,"line":616},3,[552,618,620],{"emptyLinePlaceholder":619},true,"\n",[552,622,624],{"class":554,"line":623},4,[552,625,627],{"class":626},"sHwdD","\u002F\u002F The same \"2020 or later\" bound, two representations:\n",[552,629,631,635,639,642,645,647,650,653,656,659,661,664,666,669],{"class":554,"line":630},5,[552,632,634],{"class":633},"spNyl","type",[552,636,638],{"class":637},"sBMFI"," DateString",[552,640,641],{"class":565}," =",[552,643,644],{"class":637}," TF",[552,646,447],{"class":565},[552,648,649],{"class":637},"StringDate",[552,651,652],{"class":565},"\u003C{",[552,654,421],{"class":655},"swJcz",[552,657,658],{"class":565},":",[552,660,579],{"class":565},[552,662,663],{"class":582},"2020-01-01",[552,665,586],{"class":565},[552,667,668],{"class":565},"}>;",[552,670,671],{"class":626}," \u002F\u002F an ISO string\n",[552,673,675,677,680,682,685,687,689,691,693,695,697,699,701,703],{"class":554,"line":674},6,[552,676,634],{"class":633},[552,678,679],{"class":637}," PlainDate",[552,681,641],{"class":565},[552,683,684],{"class":637}," TFT",[552,686,447],{"class":565},[552,688,435],{"class":637},[552,690,652],{"class":565},[552,692,421],{"class":655},[552,694,658],{"class":565},[552,696,579],{"class":565},[552,698,663],{"class":582},[552,700,586],{"class":565},[552,702,668],{"class":565},[552,704,705],{"class":626},"  \u002F\u002F a Temporal.PlainDate\n",[707,708,709,710,713,714,717,718,721,722,725,726,447],"note",{},"Temporal values are checked with ",[419,711,712],{},"instanceof",", not by shape. ",[419,715,716],{},"Temporal.PlainMonthDay"," and ",[419,719,720],{},"Temporal.Duration"," have no min\u002Fmax ordering, so they take no bounds. ",[419,723,724],{},"DataOnly\u003CTemporal.PlainDate>"," stays a ",[419,727,728],{},"Temporal.PlainDate",[405,730,732],{"id":731},"date-format-builders","Date Format Builders",[410,734,735,736,739,740,743],{},"With builders, use ",[419,737,738],{},"TF.date(...)"," and the ",[419,741,742],{},"TFT.*"," temporal namespace.",[543,745,747],{"className":545,"code":746,"language":547,"meta":548,"style":548},"import * as TF from '@mionjs\u002Frun-types\u002Fformats';\nimport * as TFT from '@mionjs\u002Frun-types\u002Fformats\u002Ftemporal';\n\nTF.date({max: 'now'});               \u002F\u002F a Date in the past\nTFT.plainDate({min: '2020-01-01'});  \u002F\u002F a Temporal.PlainDate, 2020 on\nTFT.instant({min: 'now-PT1H'});      \u002F\u002F an Instant within the last hour\n",[419,748,749,769,789,793,833,865],{"__ignoreMap":548},[552,750,751,753,755,757,759,761,763,765,767],{"class":554,"line":555},[552,752,559],{"class":558},[552,754,566],{"class":565},[552,756,569],{"class":558},[552,758,573],{"class":572},[552,760,576],{"class":558},[552,762,579],{"class":565},[552,764,583],{"class":582},[552,766,586],{"class":565},[552,768,589],{"class":565},[552,770,771,773,775,777,779,781,783,785,787],{"class":554,"line":592},[552,772,559],{"class":558},[552,774,566],{"class":565},[552,776,569],{"class":558},[552,778,603],{"class":572},[552,780,576],{"class":558},[552,782,579],{"class":565},[552,784,536],{"class":582},[552,786,586],{"class":565},[552,788,589],{"class":565},[552,790,791],{"class":554,"line":616},[552,792,620],{"emptyLinePlaceholder":619},[552,794,795,798,800,804,807,810,812,814,816,819,821,824,827,830],{"class":554,"line":623},[552,796,797],{"class":572},"TF",[552,799,447],{"class":565},[552,801,803],{"class":802},"s2Zo4","date",[552,805,806],{"class":572},"(",[552,808,809],{"class":565},"{",[552,811,425],{"class":655},[552,813,658],{"class":565},[552,815,579],{"class":565},[552,817,818],{"class":582},"now",[552,820,586],{"class":565},[552,822,823],{"class":565},"}",[552,825,826],{"class":572},")",[552,828,829],{"class":565},";",[552,831,832],{"class":626},"               \u002F\u002F a Date in the past\n",[552,834,835,837,839,842,844,846,848,850,852,854,856,858,860,862],{"class":554,"line":630},[552,836,540],{"class":572},[552,838,447],{"class":565},[552,840,841],{"class":802},"plainDate",[552,843,806],{"class":572},[552,845,809],{"class":565},[552,847,421],{"class":655},[552,849,658],{"class":565},[552,851,579],{"class":565},[552,853,663],{"class":582},[552,855,586],{"class":565},[552,857,823],{"class":565},[552,859,826],{"class":572},[552,861,829],{"class":565},[552,863,864],{"class":626},"  \u002F\u002F a Temporal.PlainDate, 2020 on\n",[552,866,867,869,871,874,876,878,880,882,884,887,889,891,893,895],{"class":554,"line":674},[552,868,540],{"class":572},[552,870,447],{"class":565},[552,872,873],{"class":802},"instant",[552,875,806],{"class":572},[552,877,809],{"class":565},[552,879,421],{"class":655},[552,881,658],{"class":565},[552,883,579],{"class":565},[552,885,886],{"class":582},"now-PT1H",[552,888,586],{"class":565},[552,890,823],{"class":565},[552,892,826],{"class":572},[552,894,829],{"class":565},[552,896,897],{"class":626},"      \u002F\u002F an Instant within the last hour\n",[405,899,901],{"id":900},"relative-date-bounds","Relative Date Bounds",[410,903,904,905,907,908,910,911,914,915,918,919,922,923,926],{},"Write a bound as ",[419,906,818],{},", or ",[419,909,818],{}," plus or minus an ",[414,912,913],{},"ISO-8601 duration"," such as ",[419,916,917],{},"P1Y2M10D"," (1 year, 2 months, 10 days), ",[419,920,921],{},"P1W"," (1 week) or ",[419,924,925],{},"PT12H30M"," (12 hours, 30 minutes). The build checks that the units fit the field.",[543,928,930],{"className":545,"code":929,"language":547,"meta":548,"style":548},"import type * as TF from '@mionjs\u002Frun-types\u002Fformats';\nimport {createValidateFn} from '@mionjs\u002Frun-types';\n\n\u002F\u002F `now` is the current time each time a value is validated\n\u002F\u002F A birth date in the past, no more than 120 years ago.\ntype BirthDate = TF.StringDate\u003C{min: 'now-P120Y'; max: 'now'}>;\n\n\u002F\u002F A meeting that starts within the next 30 days.\ntype StartsSoon = TF.StringDateTime\u003C{min: 'now'; max: 'now+P30D'}>;\n\nconst isBirthDate = createValidateFn\u003CBirthDate>();\nconst startsSoon = createValidateFn\u003CStartsSoon>();\n\nisBirthDate('1990-05-20'); \u002F\u002F true\nisBirthDate('1850-01-01'); \u002F\u002F false, more than 120 years ago\n\nexport {isBirthDate, startsSoon};\n",[419,931,932,954,978,982,987,992,1036,1041,1047,1091,1096,1125,1148,1153,1175,1196,1201],{"__ignoreMap":548},[552,933,934,936,938,940,942,944,946,948,950,952],{"class":554,"line":555},[552,935,559],{"class":558},[552,937,562],{"class":558},[552,939,566],{"class":565},[552,941,569],{"class":558},[552,943,573],{"class":572},[552,945,576],{"class":558},[552,947,579],{"class":565},[552,949,583],{"class":582},[552,951,586],{"class":565},[552,953,589],{"class":565},[552,955,956,958,961,964,966,969,971,974,976],{"class":554,"line":592},[552,957,559],{"class":558},[552,959,960],{"class":565}," {",[552,962,963],{"class":572},"createValidateFn",[552,965,823],{"class":565},[552,967,968],{"class":558}," from",[552,970,579],{"class":565},[552,972,973],{"class":582},"@mionjs\u002Frun-types",[552,975,586],{"class":565},[552,977,589],{"class":565},[552,979,980],{"class":554,"line":616},[552,981,620],{"emptyLinePlaceholder":619},[552,983,984],{"class":554,"line":623},[552,985,986],{"class":626},"\u002F\u002F `now` is the current time each time a value is validated\n",[552,988,989],{"class":554,"line":630},[552,990,991],{"class":626},"\u002F\u002F A birth date in the past, no more than 120 years ago.\n",[552,993,994,996,999,1001,1003,1005,1007,1009,1011,1013,1015,1018,1020,1022,1025,1027,1029,1031,1033],{"class":554,"line":674},[552,995,634],{"class":633},[552,997,998],{"class":637}," BirthDate",[552,1000,641],{"class":565},[552,1002,644],{"class":637},[552,1004,447],{"class":565},[552,1006,649],{"class":637},[552,1008,652],{"class":565},[552,1010,421],{"class":655},[552,1012,658],{"class":565},[552,1014,579],{"class":565},[552,1016,1017],{"class":582},"now-P120Y",[552,1019,586],{"class":565},[552,1021,829],{"class":565},[552,1023,1024],{"class":655}," max",[552,1026,658],{"class":565},[552,1028,579],{"class":565},[552,1030,818],{"class":582},[552,1032,586],{"class":565},[552,1034,1035],{"class":565},"}>;\n",[552,1037,1039],{"class":554,"line":1038},7,[552,1040,620],{"emptyLinePlaceholder":619},[552,1042,1044],{"class":554,"line":1043},8,[552,1045,1046],{"class":626},"\u002F\u002F A meeting that starts within the next 30 days.\n",[552,1048,1050,1052,1055,1057,1059,1061,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1087,1089],{"class":554,"line":1049},9,[552,1051,634],{"class":633},[552,1053,1054],{"class":637}," StartsSoon",[552,1056,641],{"class":565},[552,1058,644],{"class":637},[552,1060,447],{"class":565},[552,1062,1063],{"class":637},"StringDateTime",[552,1065,652],{"class":565},[552,1067,421],{"class":655},[552,1069,658],{"class":565},[552,1071,579],{"class":565},[552,1073,818],{"class":582},[552,1075,586],{"class":565},[552,1077,829],{"class":565},[552,1079,1024],{"class":655},[552,1081,658],{"class":565},[552,1083,579],{"class":565},[552,1085,1086],{"class":582},"now+P30D",[552,1088,586],{"class":565},[552,1090,1035],{"class":565},[552,1092,1094],{"class":554,"line":1093},10,[552,1095,620],{"emptyLinePlaceholder":619},[552,1097,1099,1102,1105,1108,1111,1114,1117,1120,1123],{"class":554,"line":1098},11,[552,1100,1101],{"class":633},"const",[552,1103,1104],{"class":572}," isBirthDate ",[552,1106,1107],{"class":565},"=",[552,1109,1110],{"class":802}," createValidateFn",[552,1112,1113],{"class":565},"\u003C",[552,1115,1116],{"class":637},"BirthDate",[552,1118,1119],{"class":565},">",[552,1121,1122],{"class":572},"()",[552,1124,589],{"class":565},[552,1126,1128,1130,1133,1135,1137,1139,1142,1144,1146],{"class":554,"line":1127},12,[552,1129,1101],{"class":633},[552,1131,1132],{"class":572}," startsSoon ",[552,1134,1107],{"class":565},[552,1136,1110],{"class":802},[552,1138,1113],{"class":565},[552,1140,1141],{"class":637},"StartsSoon",[552,1143,1119],{"class":565},[552,1145,1122],{"class":572},[552,1147,589],{"class":565},[552,1149,1151],{"class":554,"line":1150},13,[552,1152,620],{"emptyLinePlaceholder":619},[552,1154,1156,1159,1161,1163,1166,1168,1170,1172],{"class":554,"line":1155},14,[552,1157,1158],{"class":802},"isBirthDate",[552,1160,806],{"class":572},[552,1162,586],{"class":565},[552,1164,1165],{"class":582},"1990-05-20",[552,1167,586],{"class":565},[552,1169,826],{"class":572},[552,1171,829],{"class":565},[552,1173,1174],{"class":626}," \u002F\u002F true\n",[552,1176,1178,1180,1182,1184,1187,1189,1191,1193],{"class":554,"line":1177},15,[552,1179,1158],{"class":802},[552,1181,806],{"class":572},[552,1183,586],{"class":565},[552,1185,1186],{"class":582},"1850-01-01",[552,1188,586],{"class":565},[552,1190,826],{"class":572},[552,1192,829],{"class":565},[552,1194,1195],{"class":626}," \u002F\u002F false, more than 120 years ago\n",[552,1197,1199],{"class":554,"line":1198},16,[552,1200,620],{"emptyLinePlaceholder":619},[552,1202,1204,1207,1209,1211,1214,1217],{"class":554,"line":1203},17,[552,1205,1206],{"class":558},"export",[552,1208,960],{"class":565},[552,1210,1158],{"class":572},[552,1212,1213],{"class":565},",",[552,1215,1216],{"class":572}," startsSoon",[552,1218,1219],{"class":565},"};\n",[1221,1222,1223,1236],"table",{},[1224,1225,1226],"thead",{},[1227,1228,1229,1233],"tr",{},[1230,1231,1232],"th",{},"Family",[1230,1234,1235],{},"Relative units",[1237,1238,1239,1269,1294],"tbody",{},[1227,1240,1241,1254],{},[1242,1243,1244,1245,461,1248,461,1251,826],"td",{},"Date-only (",[419,1246,1247],{},"TF.stringDate",[419,1249,1250],{},"TFT.plainDate",[419,1252,1253],{},"TFT.plainYearMonth",[1242,1255,1256,1257,417,1260,417,1263,417,1266],{},"date: ",[419,1258,1259],{},"Y",[419,1261,1262],{},"M",[419,1264,1265],{},"W",[419,1267,1268],{},"D",[1227,1270,1271,1283],{},[1242,1272,1273,1274,461,1277,461,1280,826],{},"Time-only (",[419,1275,1276],{},"TF.stringTime",[419,1278,1279],{},"TFT.plainTime",[419,1281,1282],{},"TFT.instant",[1242,1284,1285,1286,417,1289,417,1291],{},"time: ",[419,1287,1288],{},"H",[419,1290,1262],{},[419,1292,1293],{},"S",[1227,1295,1296,1312],{},[1242,1297,1298,1299,1302,1303,461,1306,461,1309,826],{},"Date + time (",[419,1300,1301],{},"TF.stringDateTime",", native ",[419,1304,1305],{},"TF.date",[419,1307,1308],{},"TFT.plainDateTime",[419,1310,1311],{},"TFT.zonedDateTime",[1242,1313,1314],{},"both",[1316,1317,1318,422,1320,1322,1323,422,1325,1327],"tip",{},[419,1319,421],{},[419,1321,425],{}," are inclusive, ",[419,1324,428],{},[419,1326,431],{}," exclusive. Use one or the other per edge, as on a number format.",[1329,1330,1331],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}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 .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 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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}","Date strings, native Dates and Temporal values, with fixed or relative bounds.","md",null,{"toc":24},{"title":247,"description":1332},"TDDh8s0qGr8jMjhf_41x3fP9ZYyme7vBOtHmv7dhOkQ",1793324365346]