[{"data":1,"prerenderedAt":2483},["ShallowReactive",2],{"navigation_docs":3,"-guide-reflection":132,"-guide-reflection-surround":2478},[4,27,69,91,127],{"title":5,"icon":6,"redirect":7,"path":8,"stem":9,"children":10,"page":26},"Introduction","i-lucide-rocket","\u002Fintroduction\u002Fabout-ts-runtypes","\u002Fintroduction","1.introduction",[11,14,18,22],{"title":12,"path":7,"stem":13},"About RunTypes","1.introduction\u002F1.about-ts-runtypes",{"title":15,"path":16,"stem":17},"Built on typescript-go","\u002Fintroduction\u002Fbuilt-on-typescript-go","1.introduction\u002F2.built-on-typescript-go",{"title":19,"path":20,"stem":21},"Quick Start","\u002Fintroduction\u002Fquick-start","1.introduction\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Configuration","\u002Fintroduction\u002Fconfiguration","1.introduction\u002F4.configuration",false,{"title":28,"icon":29,"redirect":30,"path":31,"stem":32,"children":33,"page":26},"Guide","i-lucide-book-open","\u002Fguide\u002Ftypes-vs-schemas","\u002Fguide","2.guide",[34,37,41,45,49,53,57,61,65],{"title":35,"path":30,"stem":36},"Types vs Schemas","2.guide\u002F1.types-vs-schemas",{"title":38,"path":39,"stem":40},"Type Formats","\u002Fguide\u002Ftype-formats","2.guide\u002F2.type-formats",{"title":42,"path":43,"stem":44},"Reflection","\u002Fguide\u002Freflection","2.guide\u002F3.reflection",{"title":46,"path":47,"stem":48},"Serialization","\u002Fguide\u002Fserialization","2.guide\u002F4.serialization",{"title":50,"path":51,"stem":52},"Validation","\u002Fguide\u002Fvalidation","2.guide\u002F5.validation",{"title":54,"path":55,"stem":56},"Data Mocking","\u002Fguide\u002Fmocking","2.guide\u002F6.mocking",{"title":58,"path":59,"stem":60},"Compiler Markers","\u002Fguide\u002Fcompiler-markers","2.guide\u002F7.compiler-markers",{"title":62,"path":63,"stem":64},"Pure Functions","\u002Fguide\u002Fpure-functions","2.guide\u002F8.pure-functions",{"title":66,"path":67,"stem":68},"Linting","\u002Fguide\u002Flinting","2.guide\u002F9.linting",{"title":70,"icon":71,"redirect":72,"path":73,"stem":74,"children":75,"page":26},"AI Integration","i-lucide-sparkles","\u002Fai-integration\u002Fworkflow-and-commands","\u002Fai-integration","3.ai-integration",[76,79,83,87],{"title":77,"path":72,"stem":78},"AI Workflow","3.ai-integration\u002F1.workflow-and-commands",{"title":80,"path":81,"stem":82},"FriendlyText","\u002Fai-integration\u002Ffriendly-type","3.ai-integration\u002F2.friendly-type",{"title":84,"path":85,"stem":86},"MockData","\u002Fai-integration\u002Fmock-data","3.ai-integration\u002F3.mock-data",{"title":88,"path":89,"stem":90},"Translations (i18n)","\u002Fai-integration\u002Fi18n","3.ai-integration\u002F4.i18n",{"title":92,"icon":93,"redirect":94,"path":95,"stem":96,"children":97,"page":26},"Benchmarks","i-lucide-gauge","\u002Fbenchmarks\u002Fvalidation","\u002Fbenchmarks","7.benchmarks",[98,100,104,108,112,115,119,123],{"title":50,"path":94,"stem":99},"7.benchmarks\u002F1.validation",{"title":101,"path":102,"stem":103},"Validation Formats","\u002Fbenchmarks\u002Fvalidation-formats","7.benchmarks\u002F2.validation-formats",{"title":105,"path":106,"stem":107},"Validation Errors","\u002Fbenchmarks\u002Fgetvalidationerrors","7.benchmarks\u002F3.getvalidationerrors",{"title":109,"path":110,"stem":111},"Validation Error Formats","\u002Fbenchmarks\u002Fgetvalidationerrors-formats","7.benchmarks\u002F4.getvalidationerrors-formats",{"title":46,"path":113,"stem":114},"\u002Fbenchmarks\u002Fserialization","7.benchmarks\u002F5.serialization",{"title":116,"path":117,"stem":118},"Serialization Formats","\u002Fbenchmarks\u002Fserialization-formats","7.benchmarks\u002F6.serialization-formats",{"title":120,"path":121,"stem":122},"Compile Time","\u002Fbenchmarks\u002Fcompiletime","7.benchmarks\u002F7.compiletime",{"title":124,"path":125,"stem":126},"Correctness","\u002Fbenchmarks\u002Fcorrectness","7.benchmarks\u002F8.correctness",{"title":128,"path":129,"stem":130,"icon":131},"Diagnostics","\u002Fdiagnostics","8.diagnostics","i-lucide-triangle-alert",{"id":133,"title":42,"body":134,"description":2472,"extension":2473,"links":2474,"meta":2475,"navigation":206,"path":43,"seo":2476,"stem":44,"__hash__":2477},"docs\u002F2.guide\u002F3.reflection.md",{"type":135,"value":136},"minimark",[137,146,151,157,401,409,421,425,435,684,688,698,722,747,782,785,789,809,2430,2450,2454,2460,2468],[138,139,140,141,145],"p",{},"Reflection is RunTypes handing your TypeScript back to you at runtime. You can get a short, stable id for any type, or reflect it into a RunType: a small, traversable node the build recovered from your source. Validation, serialization and mocks all read this same graph, and nothing stops you from reading it too. There is one node per type, each tagged with a ",[142,143,144],"code",{},"kind"," and linked to the inner types it holds.",[147,148,150],"h2",{"id":149},"a-stable-id-for-any-type","A stable id for any type",[138,152,153,156],{},[142,154,155],{},"getRunTypeId"," hands you a short, stable id for any type. Bring the type yourself, or let it infer the type from a value you already have. Either way you get the same id back.",[158,159,164],"pre",{"className":160,"code":161,"language":162,"meta":163,"style":163},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {getRunTypeId} from '@ts-runtypes\u002Fcore';\n\n\u002F\u002F Static form — you bring the type, you get its id. No value needed.\nconst stringId = getRunTypeId\u003Cstring>(); \u002F\u002F e.g. \"Sq3kZ1\"\nconst userId = getRunTypeId\u003C{id: number; name: string}>();\n\n\u002F\u002F Reflection form — T is inferred from a value. The value is only read for\n\u002F\u002F its type; at runtime it's ignored, so nothing leaks into the output.\nconst order = {id: 1, total: 42};\nconst orderId = getRunTypeId(order);\n\n\u002F\u002F Same shape in, same id out — getRunTypeId\u003C{id: number}>() and a value of\n\u002F\u002F that shape resolve to the exact same string.\nexport {stringId, userId, orderId};\n","ts","",[142,165,166,201,208,215,251,293,298,304,310,344,361,366,372,378],{"__ignoreMap":163},[167,168,171,175,179,182,185,188,191,195,198],"span",{"class":169,"line":170},"line",1,[167,172,174],{"class":173},"s7zQu","import",[167,176,178],{"class":177},"sMK4o"," {",[167,180,155],{"class":181},"sTEyZ",[167,183,184],{"class":177},"}",[167,186,187],{"class":173}," from",[167,189,190],{"class":177}," '",[167,192,194],{"class":193},"sfazB","@ts-runtypes\u002Fcore",[167,196,197],{"class":177},"'",[167,199,200],{"class":177},";\n",[167,202,204],{"class":169,"line":203},2,[167,205,207],{"emptyLinePlaceholder":206},true,"\n",[167,209,211],{"class":169,"line":210},3,[167,212,214],{"class":213},"sHwdD","\u002F\u002F Static form — you bring the type, you get its id. No value needed.\n",[167,216,218,222,225,228,232,235,239,242,245,248],{"class":169,"line":217},4,[167,219,221],{"class":220},"spNyl","const",[167,223,224],{"class":181}," stringId ",[167,226,227],{"class":177},"=",[167,229,231],{"class":230},"s2Zo4"," getRunTypeId",[167,233,234],{"class":177},"\u003C",[167,236,238],{"class":237},"sBMFI","string",[167,240,241],{"class":177},">",[167,243,244],{"class":181},"()",[167,246,247],{"class":177},";",[167,249,250],{"class":213}," \u002F\u002F e.g. \"Sq3kZ1\"\n",[167,252,254,256,259,261,263,266,270,273,276,278,281,283,286,289,291],{"class":169,"line":253},5,[167,255,221],{"class":220},[167,257,258],{"class":181}," userId ",[167,260,227],{"class":177},[167,262,231],{"class":230},[167,264,265],{"class":177},"\u003C{",[167,267,269],{"class":268},"swJcz","id",[167,271,272],{"class":177},":",[167,274,275],{"class":237}," number",[167,277,247],{"class":177},[167,279,280],{"class":268}," name",[167,282,272],{"class":177},[167,284,285],{"class":237}," string",[167,287,288],{"class":177},"}>",[167,290,244],{"class":181},[167,292,200],{"class":177},[167,294,296],{"class":169,"line":295},6,[167,297,207],{"emptyLinePlaceholder":206},[167,299,301],{"class":169,"line":300},7,[167,302,303],{"class":213},"\u002F\u002F Reflection form — T is inferred from a value. The value is only read for\n",[167,305,307],{"class":169,"line":306},8,[167,308,309],{"class":213},"\u002F\u002F its type; at runtime it's ignored, so nothing leaks into the output.\n",[167,311,313,315,318,320,322,324,326,330,333,336,338,341],{"class":169,"line":312},9,[167,314,221],{"class":220},[167,316,317],{"class":181}," order ",[167,319,227],{"class":177},[167,321,178],{"class":177},[167,323,269],{"class":268},[167,325,272],{"class":177},[167,327,329],{"class":328},"sbssI"," 1",[167,331,332],{"class":177},",",[167,334,335],{"class":268}," total",[167,337,272],{"class":177},[167,339,340],{"class":328}," 42",[167,342,343],{"class":177},"};\n",[167,345,347,349,352,354,356,359],{"class":169,"line":346},10,[167,348,221],{"class":220},[167,350,351],{"class":181}," orderId ",[167,353,227],{"class":177},[167,355,231],{"class":230},[167,357,358],{"class":181},"(order)",[167,360,200],{"class":177},[167,362,364],{"class":169,"line":363},11,[167,365,207],{"emptyLinePlaceholder":206},[167,367,369],{"class":169,"line":368},12,[167,370,371],{"class":213},"\u002F\u002F Same shape in, same id out — getRunTypeId\u003C{id: number}>() and a value of\n",[167,373,375],{"class":169,"line":374},13,[167,376,377],{"class":213},"\u002F\u002F that shape resolve to the exact same string.\n",[167,379,381,384,386,389,391,394,396,399],{"class":169,"line":380},14,[167,382,383],{"class":173},"export",[167,385,178],{"class":177},[167,387,388],{"class":181},"stringId",[167,390,332],{"class":177},[167,392,393],{"class":181}," userId",[167,395,332],{"class":177},[167,397,398],{"class":181}," orderId",[167,400,343],{"class":177},[138,402,403,404,408],{},"The id is a fingerprint of the type's ",[405,406,407],"em",{},"shape",", so two types that look the same share one id. Use it as a cache key, a registry key, a discriminator, or whatever you need.",[410,411,412,413,415,416,420],"note",{},"These run at build time. With the Vite plugin off there's no id to inject, so ",[142,414,155],{}," throws rather than guess. The id is filled in by a ",[417,418,419],"a",{"href":59},"compiler marker",".",[147,422,424],{"id":423},"getting-a-node","Getting a node",[138,426,427,430,431,434],{},[142,428,429],{},"getRunType\u003CT>()"," returns the node for a type. Pass the type, or pass a value and let it be inferred. The ",[417,432,433],{"href":59},"compiler markers"," fill in the id at build time, so the call just works.",[158,436,438],{"className":160,"code":437,"language":162,"meta":163,"style":163},"\u002F\u002F Pass the type (or a value, and it is inferred) to get the node.\nconst orderRT = getRunType\u003COrder>();\n\nconsole.log(orderRT.kind === RunTypeKind.objectLiteral); \u002F\u002F true: an object shape\nconsole.log(orderRT.children?.map((prop) => prop.name)); \u002F\u002F ['id', 'total', 'items']\n\n\u002F\u002F Drill into one property: its `child` is that property's own type.\nconst itemsRT = orderRT.children?.find((prop) => prop.name === 'items');\nconsole.log(itemsRT?.child?.kind === RunTypeKind.array); \u002F\u002F true: items is an array\nconsole.log(itemsRT?.child?.child?.kind === RunTypeKind.objectLiteral); \u002F\u002F true: of {sku, qty}\n",[142,439,440,445,468,472,506,555,559,564,615,649],{"__ignoreMap":163},[167,441,442],{"class":169,"line":170},[167,443,444],{"class":213},"\u002F\u002F Pass the type (or a value, and it is inferred) to get the node.\n",[167,446,447,449,452,454,457,459,462,464,466],{"class":169,"line":203},[167,448,221],{"class":220},[167,450,451],{"class":181}," orderRT ",[167,453,227],{"class":177},[167,455,456],{"class":230}," getRunType",[167,458,234],{"class":177},[167,460,461],{"class":237},"Order",[167,463,241],{"class":177},[167,465,244],{"class":181},[167,467,200],{"class":177},[167,469,470],{"class":169,"line":210},[167,471,207],{"emptyLinePlaceholder":206},[167,473,474,477,479,482,485,487,490,493,496,498,501,503],{"class":169,"line":217},[167,475,476],{"class":181},"console",[167,478,420],{"class":177},[167,480,481],{"class":230},"log",[167,483,484],{"class":181},"(orderRT",[167,486,420],{"class":177},[167,488,489],{"class":181},"kind ",[167,491,492],{"class":177},"===",[167,494,495],{"class":181}," RunTypeKind",[167,497,420],{"class":177},[167,499,500],{"class":181},"objectLiteral)",[167,502,247],{"class":177},[167,504,505],{"class":213}," \u002F\u002F true: an object shape\n",[167,507,508,510,512,514,516,518,521,524,527,530,532,536,539,542,545,547,550,552],{"class":169,"line":253},[167,509,476],{"class":181},[167,511,420],{"class":177},[167,513,481],{"class":230},[167,515,484],{"class":181},[167,517,420],{"class":177},[167,519,520],{"class":181},"children",[167,522,523],{"class":177},"?.",[167,525,526],{"class":230},"map",[167,528,529],{"class":181},"(",[167,531,529],{"class":177},[167,533,535],{"class":534},"sHdIc","prop",[167,537,538],{"class":177},")",[167,540,541],{"class":220}," =>",[167,543,544],{"class":181}," prop",[167,546,420],{"class":177},[167,548,549],{"class":181},"name))",[167,551,247],{"class":177},[167,553,554],{"class":213}," \u002F\u002F ['id', 'total', 'items']\n",[167,556,557],{"class":169,"line":295},[167,558,207],{"emptyLinePlaceholder":206},[167,560,561],{"class":169,"line":300},[167,562,563],{"class":213},"\u002F\u002F Drill into one property: its `child` is that property's own type.\n",[167,565,566,568,571,573,576,578,580,582,585,587,589,591,593,595,597,599,602,604,606,609,611,613],{"class":169,"line":306},[167,567,221],{"class":220},[167,569,570],{"class":181}," itemsRT ",[167,572,227],{"class":177},[167,574,575],{"class":181}," orderRT",[167,577,420],{"class":177},[167,579,520],{"class":181},[167,581,523],{"class":177},[167,583,584],{"class":230},"find",[167,586,529],{"class":181},[167,588,529],{"class":177},[167,590,535],{"class":534},[167,592,538],{"class":177},[167,594,541],{"class":220},[167,596,544],{"class":181},[167,598,420],{"class":177},[167,600,601],{"class":181},"name ",[167,603,492],{"class":177},[167,605,190],{"class":177},[167,607,608],{"class":193},"items",[167,610,197],{"class":177},[167,612,538],{"class":181},[167,614,200],{"class":177},[167,616,617,619,621,623,626,628,631,633,635,637,639,641,644,646],{"class":169,"line":312},[167,618,476],{"class":181},[167,620,420],{"class":177},[167,622,481],{"class":230},[167,624,625],{"class":181},"(itemsRT",[167,627,523],{"class":177},[167,629,630],{"class":181},"child",[167,632,523],{"class":177},[167,634,489],{"class":181},[167,636,492],{"class":177},[167,638,495],{"class":181},[167,640,420],{"class":177},[167,642,643],{"class":181},"array)",[167,645,247],{"class":177},[167,647,648],{"class":213}," \u002F\u002F true: items is an array\n",[167,650,651,653,655,657,659,661,663,665,667,669,671,673,675,677,679,681],{"class":169,"line":346},[167,652,476],{"class":181},[167,654,420],{"class":177},[167,656,481],{"class":230},[167,658,625],{"class":181},[167,660,523],{"class":177},[167,662,630],{"class":181},[167,664,523],{"class":177},[167,666,630],{"class":181},[167,668,523],{"class":177},[167,670,489],{"class":181},[167,672,492],{"class":177},[167,674,495],{"class":181},[167,676,420],{"class":177},[167,678,500],{"class":181},[167,680,247],{"class":177},[167,682,683],{"class":213}," \u002F\u002F true: of {sku, qty}\n",[147,685,687],{"id":686},"what-is-on-a-node","What is on a node",[138,689,690,691,693,694,697],{},"Every node has a ",[142,692,144],{},", one of the ",[142,695,696],{},"RunTypeKind"," values. The rest depends on that kind, but the edges that hold inner types are always one of these:",[699,700,701,707,712],"ul",{},[702,703,704,706],"li",{},[142,705,630],{}," is the single inner type, like an array's element, a promise's value, or a property's type.",[702,708,709,711],{},[142,710,520],{}," are the inner types of a container, like an object's properties, a union's members, or a tuple's slots.",[702,713,714,717,718,721],{},[142,715,716],{},"parameters"," and ",[142,719,720],{},"return"," are a function's argument nodes and its return node.",[138,723,724,725,717,728,731,732,717,735,738,739,742,743,746],{},"Around them you will find ",[142,726,727],{},"name",[142,729,730],{},"optional"," on members, ",[142,733,734],{},"literal",[142,736,737],{},"values"," for literals and enums, and ",[142,740,741],{},"formatAnnotation"," for a branded ",[417,744,745],{"href":39},"TypeFormat"," like an email or a bounded date.",[138,748,749,750,752,753,755,756,759,760,759,763,766,767,770,771,774,775,777,778,781],{},"When a node carries a ",[142,751,741],{},", its ",[142,754,727],{}," is the canonical format name (",[142,757,758],{},"uuid",", ",[142,761,762],{},"email",[142,764,765],{},"dateTime",", and so on) and its optional ",[142,768,769],{},"params"," holds that format's constraints. If you map a reflected format to something outside RunTypes, a database column or a UI label, key off ",[142,772,773],{},"typeFormats",", the runtime table of every built-in format name paired with the base kind it refines. Both ",[142,776,773],{}," and the ",[142,779,780],{},"FormatName"," union of its names are importable from the package root, so you read the name off the node and look it up there, with no second copy of the names to keep in sync.",[138,783,784],{},"Those names are faithful to your source, tuple element labels and function parameter names included. Two tuples with the same element types but different labels are distinct reflected types, each carrying its own labels, so a label or parameter name you read off a node is always the one written for that exact type.",[147,786,788],{"id":787},"walking-every-kind","Walking every kind",[138,790,791,792,794,795,798,799,801,802,804,805,717,807,420],{},"Because the shape is regular, a full walk is just a switch over ",[142,793,144],{}," that recurses through those edges. Here is a printer that renders any node back to a TypeScript-like string. It is the same dispatch ",[142,796,797],{},"createMockDataFn"," runs internally, one arm per kind: leaves return on the spot, single-child kinds recurse through ",[142,800,630],{},", containers through ",[142,803,520],{},", and callables through ",[142,806,716],{},[142,808,720],{},[158,810,812],{"className":160,"code":811,"language":162,"meta":163,"style":163},"\u002F\u002F Render any node back to a TypeScript-like string. Every kind is one switch\n\u002F\u002F arm, the same way createMockDataFn dispatches over the graph internally: leaves\n\u002F\u002F return on the spot, single-child kinds recurse through `child`, containers\n\u002F\u002F through `children`, and callables through `parameters` and `return`.\nfunction describe(rt: RunType): string {\n  switch (rt.kind as number) {\n    \u002F\u002F Atomic leaves: no inner types to walk into.\n    case RunTypeKind.string:\n      return 'string';\n    case RunTypeKind.number:\n      return 'number';\n    case RunTypeKind.boolean:\n      return 'boolean';\n    case RunTypeKind.bigint:\n      return 'bigint';\n    case RunTypeKind.symbol:\n      return 'symbol';\n    case RunTypeKind.null:\n      return 'null';\n    case RunTypeKind.undefined:\n      return 'undefined';\n    case RunTypeKind.void:\n      return 'void';\n    case RunTypeKind.never:\n      return 'never';\n    case RunTypeKind.any:\n      return 'any';\n    case RunTypeKind.unknown:\n      return 'unknown';\n    case RunTypeKind.object:\n      return 'object';\n    case RunTypeKind.regexp:\n      return 'RegExp';\n    case RunTypeKind.templateLiteral:\n      return 'string'; \u002F\u002F a `${...}` template\n    case RunTypeKind.literal:\n      return JSON.stringify(rt.literal); \u002F\u002F the value itself\n    case RunTypeKind.enum:\n      return (rt.values as unknown[]).map((value) => JSON.stringify(value)).join(' | ');\n\n    \u002F\u002F Single-child kinds: recurse into `child`.\n    case RunTypeKind.array:\n      return `${describe(rt.child as RunType)}[]`;\n    case RunTypeKind.promise:\n      return `Promise\u003C${describe(rt.child as RunType)}>`;\n    case RunTypeKind.rest:\n      return `...${describe(rt.child as RunType)}[]`;\n    case RunTypeKind.tupleMember:\n      return `${describe(rt.child as RunType)}${rt.optional ? '?' : ''}`;\n\n    \u002F\u002F Multi-child containers: recurse over `children`.\n    case RunTypeKind.tuple:\n      return `[${(rt.children as RunType[]).map(describe).join(', ')}]`;\n    case RunTypeKind.union:\n      return (rt.children as RunType[]).map(describe).join(' | ');\n    case RunTypeKind.intersection:\n      return (rt.children as RunType[]).map(describe).join(' & ');\n    case RunTypeKind.objectLiteral:\n      return `{ ${(rt.children as RunType[]).map(describe).join('; ')} }`;\n\n    \u002F\u002F Named members: `name`, an `optional` flag, and the member's own `child`.\n    case RunTypeKind.property:\n    case RunTypeKind.propertySignature:\n    case RunTypeKind.parameter:\n      return `${rt.name as string}${rt.optional ? '?' : ''}: ${describe(rt.child as RunType)}`;\n\n    \u002F\u002F An index signature pairs a key type with a value type.\n    case RunTypeKind.indexSignature:\n      return `[key: ${describe(rt.index as RunType)}]: ${describe(rt.child as RunType)}`;\n\n    \u002F\u002F Callables: recurse over `parameters` and `return`.\n    case RunTypeKind.function:\n    case RunTypeKind.method:\n    case RunTypeKind.methodSignature:\n    case RunTypeKind.callSignature:\n      return `(${(rt.parameters as RunType[]).map(describe).join(', ')}) => ${describe(rt.return as RunType)}`;\n\n    \u002F\u002F A class either lists members (a plain shape) or stops at its name\n    \u002F\u002F (the builtins Date, Map, Set, Temporal, which carry a `subKind` instead).\n    case RunTypeKind.class:\n      return rt.children ? `{ ${(rt.children as RunType[]).map(describe).join('; ')} }` : String(rt.typeName ?? 'object');\n\n    \u002F\u002F typeParameter, infer, ref, enumMember: rare in plain data shapes.\n    default:\n      return `\u002F* kind ${rt.kind} *\u002F`;\n  }\n}\n\nconst orderRT = getRunType\u003COrder>();\nconsole.log(describe(orderRT));\n\u002F\u002F { id: string; total: number; items: { sku: string; qty: number }[]; status: \"open\" | \"shipped\" | \"cancelled\" }\n",[142,813,814,819,824,829,834,860,885,890,904,917,930,942,955,967,980,993,1007,1020,1034,1047,1061,1074,1088,1101,1115,1128,1142,1155,1169,1182,1196,1209,1223,1237,1251,1267,1280,1308,1322,1389,1394,1400,1414,1450,1464,1500,1514,1548,1562,1610,1615,1621,1635,1690,1704,1749,1763,1809,1823,1877,1882,1888,1902,1916,1930,1992,1997,2003,2017,2069,2074,2080,2093,2107,2121,2135,2205,2210,2216,2222,2236,2322,2327,2333,2341,2368,2374,2380,2385,2406,2424],{"__ignoreMap":163},[167,815,816],{"class":169,"line":170},[167,817,818],{"class":213},"\u002F\u002F Render any node back to a TypeScript-like string. Every kind is one switch\n",[167,820,821],{"class":169,"line":203},[167,822,823],{"class":213},"\u002F\u002F arm, the same way createMockDataFn dispatches over the graph internally: leaves\n",[167,825,826],{"class":169,"line":210},[167,827,828],{"class":213},"\u002F\u002F return on the spot, single-child kinds recurse through `child`, containers\n",[167,830,831],{"class":169,"line":217},[167,832,833],{"class":213},"\u002F\u002F through `children`, and callables through `parameters` and `return`.\n",[167,835,836,839,842,844,847,849,852,855,857],{"class":169,"line":253},[167,837,838],{"class":220},"function",[167,840,841],{"class":230}," describe",[167,843,529],{"class":177},[167,845,846],{"class":534},"rt",[167,848,272],{"class":177},[167,850,851],{"class":237}," RunType",[167,853,854],{"class":177},"):",[167,856,285],{"class":237},[167,858,859],{"class":177}," {\n",[167,861,862,865,868,870,872,874,877,879,882],{"class":169,"line":295},[167,863,864],{"class":173},"  switch",[167,866,867],{"class":268}," (",[167,869,846],{"class":181},[167,871,420],{"class":177},[167,873,144],{"class":181},[167,875,876],{"class":173}," as",[167,878,275],{"class":237},[167,880,881],{"class":268},") ",[167,883,884],{"class":177},"{\n",[167,886,887],{"class":169,"line":300},[167,888,889],{"class":213},"    \u002F\u002F Atomic leaves: no inner types to walk into.\n",[167,891,892,895,897,899,901],{"class":169,"line":306},[167,893,894],{"class":173},"    case",[167,896,495],{"class":181},[167,898,420],{"class":177},[167,900,238],{"class":181},[167,902,903],{"class":177},":\n",[167,905,906,909,911,913,915],{"class":169,"line":312},[167,907,908],{"class":173},"      return",[167,910,190],{"class":177},[167,912,238],{"class":193},[167,914,197],{"class":177},[167,916,200],{"class":177},[167,918,919,921,923,925,928],{"class":169,"line":346},[167,920,894],{"class":173},[167,922,495],{"class":181},[167,924,420],{"class":177},[167,926,927],{"class":181},"number",[167,929,903],{"class":177},[167,931,932,934,936,938,940],{"class":169,"line":363},[167,933,908],{"class":173},[167,935,190],{"class":177},[167,937,927],{"class":193},[167,939,197],{"class":177},[167,941,200],{"class":177},[167,943,944,946,948,950,953],{"class":169,"line":368},[167,945,894],{"class":173},[167,947,495],{"class":181},[167,949,420],{"class":177},[167,951,952],{"class":181},"boolean",[167,954,903],{"class":177},[167,956,957,959,961,963,965],{"class":169,"line":374},[167,958,908],{"class":173},[167,960,190],{"class":177},[167,962,952],{"class":193},[167,964,197],{"class":177},[167,966,200],{"class":177},[167,968,969,971,973,975,978],{"class":169,"line":380},[167,970,894],{"class":173},[167,972,495],{"class":181},[167,974,420],{"class":177},[167,976,977],{"class":181},"bigint",[167,979,903],{"class":177},[167,981,983,985,987,989,991],{"class":169,"line":982},15,[167,984,908],{"class":173},[167,986,190],{"class":177},[167,988,977],{"class":193},[167,990,197],{"class":177},[167,992,200],{"class":177},[167,994,996,998,1000,1002,1005],{"class":169,"line":995},16,[167,997,894],{"class":173},[167,999,495],{"class":181},[167,1001,420],{"class":177},[167,1003,1004],{"class":181},"symbol",[167,1006,903],{"class":177},[167,1008,1010,1012,1014,1016,1018],{"class":169,"line":1009},17,[167,1011,908],{"class":173},[167,1013,190],{"class":177},[167,1015,1004],{"class":193},[167,1017,197],{"class":177},[167,1019,200],{"class":177},[167,1021,1023,1025,1027,1029,1032],{"class":169,"line":1022},18,[167,1024,894],{"class":173},[167,1026,495],{"class":181},[167,1028,420],{"class":177},[167,1030,1031],{"class":181},"null",[167,1033,903],{"class":177},[167,1035,1037,1039,1041,1043,1045],{"class":169,"line":1036},19,[167,1038,908],{"class":173},[167,1040,190],{"class":177},[167,1042,1031],{"class":193},[167,1044,197],{"class":177},[167,1046,200],{"class":177},[167,1048,1050,1052,1054,1056,1059],{"class":169,"line":1049},20,[167,1051,894],{"class":173},[167,1053,495],{"class":181},[167,1055,420],{"class":177},[167,1057,1058],{"class":181},"undefined",[167,1060,903],{"class":177},[167,1062,1064,1066,1068,1070,1072],{"class":169,"line":1063},21,[167,1065,908],{"class":173},[167,1067,190],{"class":177},[167,1069,1058],{"class":193},[167,1071,197],{"class":177},[167,1073,200],{"class":177},[167,1075,1077,1079,1081,1083,1086],{"class":169,"line":1076},22,[167,1078,894],{"class":173},[167,1080,495],{"class":181},[167,1082,420],{"class":177},[167,1084,1085],{"class":181},"void",[167,1087,903],{"class":177},[167,1089,1091,1093,1095,1097,1099],{"class":169,"line":1090},23,[167,1092,908],{"class":173},[167,1094,190],{"class":177},[167,1096,1085],{"class":193},[167,1098,197],{"class":177},[167,1100,200],{"class":177},[167,1102,1104,1106,1108,1110,1113],{"class":169,"line":1103},24,[167,1105,894],{"class":173},[167,1107,495],{"class":181},[167,1109,420],{"class":177},[167,1111,1112],{"class":181},"never",[167,1114,903],{"class":177},[167,1116,1118,1120,1122,1124,1126],{"class":169,"line":1117},25,[167,1119,908],{"class":173},[167,1121,190],{"class":177},[167,1123,1112],{"class":193},[167,1125,197],{"class":177},[167,1127,200],{"class":177},[167,1129,1131,1133,1135,1137,1140],{"class":169,"line":1130},26,[167,1132,894],{"class":173},[167,1134,495],{"class":181},[167,1136,420],{"class":177},[167,1138,1139],{"class":181},"any",[167,1141,903],{"class":177},[167,1143,1145,1147,1149,1151,1153],{"class":169,"line":1144},27,[167,1146,908],{"class":173},[167,1148,190],{"class":177},[167,1150,1139],{"class":193},[167,1152,197],{"class":177},[167,1154,200],{"class":177},[167,1156,1158,1160,1162,1164,1167],{"class":169,"line":1157},28,[167,1159,894],{"class":173},[167,1161,495],{"class":181},[167,1163,420],{"class":177},[167,1165,1166],{"class":181},"unknown",[167,1168,903],{"class":177},[167,1170,1172,1174,1176,1178,1180],{"class":169,"line":1171},29,[167,1173,908],{"class":173},[167,1175,190],{"class":177},[167,1177,1166],{"class":193},[167,1179,197],{"class":177},[167,1181,200],{"class":177},[167,1183,1185,1187,1189,1191,1194],{"class":169,"line":1184},30,[167,1186,894],{"class":173},[167,1188,495],{"class":181},[167,1190,420],{"class":177},[167,1192,1193],{"class":181},"object",[167,1195,903],{"class":177},[167,1197,1199,1201,1203,1205,1207],{"class":169,"line":1198},31,[167,1200,908],{"class":173},[167,1202,190],{"class":177},[167,1204,1193],{"class":193},[167,1206,197],{"class":177},[167,1208,200],{"class":177},[167,1210,1212,1214,1216,1218,1221],{"class":169,"line":1211},32,[167,1213,894],{"class":173},[167,1215,495],{"class":181},[167,1217,420],{"class":177},[167,1219,1220],{"class":181},"regexp",[167,1222,903],{"class":177},[167,1224,1226,1228,1230,1233,1235],{"class":169,"line":1225},33,[167,1227,908],{"class":173},[167,1229,190],{"class":177},[167,1231,1232],{"class":193},"RegExp",[167,1234,197],{"class":177},[167,1236,200],{"class":177},[167,1238,1240,1242,1244,1246,1249],{"class":169,"line":1239},34,[167,1241,894],{"class":173},[167,1243,495],{"class":181},[167,1245,420],{"class":177},[167,1247,1248],{"class":181},"templateLiteral",[167,1250,903],{"class":177},[167,1252,1254,1256,1258,1260,1262,1264],{"class":169,"line":1253},35,[167,1255,908],{"class":173},[167,1257,190],{"class":177},[167,1259,238],{"class":193},[167,1261,197],{"class":177},[167,1263,247],{"class":177},[167,1265,1266],{"class":213}," \u002F\u002F a `${...}` template\n",[167,1268,1270,1272,1274,1276,1278],{"class":169,"line":1269},36,[167,1271,894],{"class":173},[167,1273,495],{"class":181},[167,1275,420],{"class":177},[167,1277,734],{"class":181},[167,1279,903],{"class":177},[167,1281,1283,1285,1288,1290,1293,1295,1297,1299,1301,1303,1305],{"class":169,"line":1282},37,[167,1284,908],{"class":173},[167,1286,1287],{"class":181}," JSON",[167,1289,420],{"class":177},[167,1291,1292],{"class":230},"stringify",[167,1294,529],{"class":268},[167,1296,846],{"class":181},[167,1298,420],{"class":177},[167,1300,734],{"class":181},[167,1302,538],{"class":268},[167,1304,247],{"class":177},[167,1306,1307],{"class":213}," \u002F\u002F the value itself\n",[167,1309,1311,1313,1315,1317,1320],{"class":169,"line":1310},38,[167,1312,894],{"class":173},[167,1314,495],{"class":181},[167,1316,420],{"class":177},[167,1318,1319],{"class":181},"enum",[167,1321,903],{"class":177},[167,1323,1325,1327,1329,1331,1333,1335,1337,1340,1343,1345,1347,1349,1351,1354,1356,1358,1360,1362,1364,1366,1368,1371,1373,1376,1378,1380,1383,1385,1387],{"class":169,"line":1324},39,[167,1326,908],{"class":173},[167,1328,867],{"class":268},[167,1330,846],{"class":181},[167,1332,420],{"class":177},[167,1334,737],{"class":181},[167,1336,876],{"class":173},[167,1338,1339],{"class":237}," unknown",[167,1341,1342],{"class":268},"[])",[167,1344,420],{"class":177},[167,1346,526],{"class":230},[167,1348,529],{"class":268},[167,1350,529],{"class":177},[167,1352,1353],{"class":534},"value",[167,1355,538],{"class":177},[167,1357,541],{"class":220},[167,1359,1287],{"class":181},[167,1361,420],{"class":177},[167,1363,1292],{"class":230},[167,1365,529],{"class":268},[167,1367,1353],{"class":181},[167,1369,1370],{"class":268},"))",[167,1372,420],{"class":177},[167,1374,1375],{"class":230},"join",[167,1377,529],{"class":268},[167,1379,197],{"class":177},[167,1381,1382],{"class":193}," | ",[167,1384,197],{"class":177},[167,1386,538],{"class":268},[167,1388,200],{"class":177},[167,1390,1392],{"class":169,"line":1391},40,[167,1393,207],{"emptyLinePlaceholder":206},[167,1395,1397],{"class":169,"line":1396},41,[167,1398,1399],{"class":213},"    \u002F\u002F Single-child kinds: recurse into `child`.\n",[167,1401,1403,1405,1407,1409,1412],{"class":169,"line":1402},42,[167,1404,894],{"class":173},[167,1406,495],{"class":181},[167,1408,420],{"class":177},[167,1410,1411],{"class":181},"array",[167,1413,903],{"class":177},[167,1415,1417,1419,1422,1425,1428,1430,1433,1436,1438,1440,1442,1445,1448],{"class":169,"line":1416},43,[167,1418,908],{"class":173},[167,1420,1421],{"class":177}," `${",[167,1423,1424],{"class":230},"describe",[167,1426,1427],{"class":181},"(rt",[167,1429,420],{"class":177},[167,1431,1432],{"class":181},"child ",[167,1434,1435],{"class":173},"as",[167,1437,851],{"class":237},[167,1439,538],{"class":181},[167,1441,184],{"class":177},[167,1443,1444],{"class":193},"[]",[167,1446,1447],{"class":177},"`",[167,1449,200],{"class":177},[167,1451,1453,1455,1457,1459,1462],{"class":169,"line":1452},44,[167,1454,894],{"class":173},[167,1456,495],{"class":181},[167,1458,420],{"class":177},[167,1460,1461],{"class":181},"promise",[167,1463,903],{"class":177},[167,1465,1467,1469,1472,1475,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498],{"class":169,"line":1466},45,[167,1468,908],{"class":173},[167,1470,1471],{"class":177}," `",[167,1473,1474],{"class":193},"Promise\u003C",[167,1476,1477],{"class":177},"${",[167,1479,1424],{"class":230},[167,1481,1427],{"class":181},[167,1483,420],{"class":177},[167,1485,1432],{"class":181},[167,1487,1435],{"class":173},[167,1489,851],{"class":237},[167,1491,538],{"class":181},[167,1493,184],{"class":177},[167,1495,241],{"class":193},[167,1497,1447],{"class":177},[167,1499,200],{"class":177},[167,1501,1503,1505,1507,1509,1512],{"class":169,"line":1502},46,[167,1504,894],{"class":173},[167,1506,495],{"class":181},[167,1508,420],{"class":177},[167,1510,1511],{"class":181},"rest",[167,1513,903],{"class":177},[167,1515,1517,1519,1521,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546],{"class":169,"line":1516},47,[167,1518,908],{"class":173},[167,1520,1471],{"class":177},[167,1522,1523],{"class":193},"...",[167,1525,1477],{"class":177},[167,1527,1424],{"class":230},[167,1529,1427],{"class":181},[167,1531,420],{"class":177},[167,1533,1432],{"class":181},[167,1535,1435],{"class":173},[167,1537,851],{"class":237},[167,1539,538],{"class":181},[167,1541,184],{"class":177},[167,1543,1444],{"class":193},[167,1545,1447],{"class":177},[167,1547,200],{"class":177},[167,1549,1551,1553,1555,1557,1560],{"class":169,"line":1550},48,[167,1552,894],{"class":173},[167,1554,495],{"class":181},[167,1556,420],{"class":177},[167,1558,1559],{"class":181},"tupleMember",[167,1561,903],{"class":177},[167,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1586,1588,1590,1593,1596,1598,1600,1602,1605,1608],{"class":169,"line":1564},49,[167,1566,908],{"class":173},[167,1568,1421],{"class":177},[167,1570,1424],{"class":230},[167,1572,1427],{"class":181},[167,1574,420],{"class":177},[167,1576,1432],{"class":181},[167,1578,1435],{"class":173},[167,1580,851],{"class":237},[167,1582,538],{"class":181},[167,1584,1585],{"class":177},"}${",[167,1587,846],{"class":181},[167,1589,420],{"class":177},[167,1591,1592],{"class":181},"optional ",[167,1594,1595],{"class":177},"?",[167,1597,190],{"class":177},[167,1599,1595],{"class":193},[167,1601,197],{"class":177},[167,1603,1604],{"class":177}," :",[167,1606,1607],{"class":177}," ''}`",[167,1609,200],{"class":177},[167,1611,1613],{"class":169,"line":1612},50,[167,1614,207],{"emptyLinePlaceholder":206},[167,1616,1618],{"class":169,"line":1617},51,[167,1619,1620],{"class":213},"    \u002F\u002F Multi-child containers: recurse over `children`.\n",[167,1622,1624,1626,1628,1630,1633],{"class":169,"line":1623},52,[167,1625,894],{"class":173},[167,1627,495],{"class":181},[167,1629,420],{"class":177},[167,1631,1632],{"class":181},"tuple",[167,1634,903],{"class":177},[167,1636,1638,1640,1642,1645,1647,1649,1651,1654,1656,1658,1660,1662,1664,1667,1669,1671,1673,1675,1677,1679,1681,1683,1686,1688],{"class":169,"line":1637},53,[167,1639,908],{"class":173},[167,1641,1471],{"class":177},[167,1643,1644],{"class":193},"[",[167,1646,1477],{"class":177},[167,1648,1427],{"class":181},[167,1650,420],{"class":177},[167,1652,1653],{"class":181},"children ",[167,1655,1435],{"class":173},[167,1657,851],{"class":237},[167,1659,1342],{"class":181},[167,1661,420],{"class":177},[167,1663,526],{"class":230},[167,1665,1666],{"class":181},"(describe)",[167,1668,420],{"class":177},[167,1670,1375],{"class":230},[167,1672,529],{"class":181},[167,1674,197],{"class":177},[167,1676,759],{"class":193},[167,1678,197],{"class":177},[167,1680,538],{"class":181},[167,1682,184],{"class":177},[167,1684,1685],{"class":193},"]",[167,1687,1447],{"class":177},[167,1689,200],{"class":177},[167,1691,1693,1695,1697,1699,1702],{"class":169,"line":1692},54,[167,1694,894],{"class":173},[167,1696,495],{"class":181},[167,1698,420],{"class":177},[167,1700,1701],{"class":181},"union",[167,1703,903],{"class":177},[167,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747],{"class":169,"line":1706},55,[167,1708,908],{"class":173},[167,1710,867],{"class":268},[167,1712,846],{"class":181},[167,1714,420],{"class":177},[167,1716,520],{"class":181},[167,1718,876],{"class":173},[167,1720,851],{"class":237},[167,1722,1342],{"class":268},[167,1724,420],{"class":177},[167,1726,526],{"class":230},[167,1728,529],{"class":268},[167,1730,1424],{"class":181},[167,1732,538],{"class":268},[167,1734,420],{"class":177},[167,1736,1375],{"class":230},[167,1738,529],{"class":268},[167,1740,197],{"class":177},[167,1742,1382],{"class":193},[167,1744,197],{"class":177},[167,1746,538],{"class":268},[167,1748,200],{"class":177},[167,1750,1752,1754,1756,1758,1761],{"class":169,"line":1751},56,[167,1753,894],{"class":173},[167,1755,495],{"class":181},[167,1757,420],{"class":177},[167,1759,1760],{"class":181},"intersection",[167,1762,903],{"class":177},[167,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1803,1805,1807],{"class":169,"line":1765},57,[167,1767,908],{"class":173},[167,1769,867],{"class":268},[167,1771,846],{"class":181},[167,1773,420],{"class":177},[167,1775,520],{"class":181},[167,1777,876],{"class":173},[167,1779,851],{"class":237},[167,1781,1342],{"class":268},[167,1783,420],{"class":177},[167,1785,526],{"class":230},[167,1787,529],{"class":268},[167,1789,1424],{"class":181},[167,1791,538],{"class":268},[167,1793,420],{"class":177},[167,1795,1375],{"class":230},[167,1797,529],{"class":268},[167,1799,197],{"class":177},[167,1801,1802],{"class":193}," & ",[167,1804,197],{"class":177},[167,1806,538],{"class":268},[167,1808,200],{"class":177},[167,1810,1812,1814,1816,1818,1821],{"class":169,"line":1811},58,[167,1813,894],{"class":173},[167,1815,495],{"class":181},[167,1817,420],{"class":177},[167,1819,1820],{"class":181},"objectLiteral",[167,1822,903],{"class":177},[167,1824,1826,1828,1830,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1864,1866,1868,1870,1873,1875],{"class":169,"line":1825},59,[167,1827,908],{"class":173},[167,1829,1471],{"class":177},[167,1831,1832],{"class":193},"{ ",[167,1834,1477],{"class":177},[167,1836,1427],{"class":181},[167,1838,420],{"class":177},[167,1840,1653],{"class":181},[167,1842,1435],{"class":173},[167,1844,851],{"class":237},[167,1846,1342],{"class":181},[167,1848,420],{"class":177},[167,1850,526],{"class":230},[167,1852,1666],{"class":181},[167,1854,420],{"class":177},[167,1856,1375],{"class":230},[167,1858,529],{"class":181},[167,1860,197],{"class":177},[167,1862,1863],{"class":193},"; ",[167,1865,197],{"class":177},[167,1867,538],{"class":181},[167,1869,184],{"class":177},[167,1871,1872],{"class":193}," }",[167,1874,1447],{"class":177},[167,1876,200],{"class":177},[167,1878,1880],{"class":169,"line":1879},60,[167,1881,207],{"emptyLinePlaceholder":206},[167,1883,1885],{"class":169,"line":1884},61,[167,1886,1887],{"class":213},"    \u002F\u002F Named members: `name`, an `optional` flag, and the member's own `child`.\n",[167,1889,1891,1893,1895,1897,1900],{"class":169,"line":1890},62,[167,1892,894],{"class":173},[167,1894,495],{"class":181},[167,1896,420],{"class":177},[167,1898,1899],{"class":181},"property",[167,1901,903],{"class":177},[167,1903,1905,1907,1909,1911,1914],{"class":169,"line":1904},63,[167,1906,894],{"class":173},[167,1908,495],{"class":181},[167,1910,420],{"class":177},[167,1912,1913],{"class":181},"propertySignature",[167,1915,903],{"class":177},[167,1917,1919,1921,1923,1925,1928],{"class":169,"line":1918},64,[167,1920,894],{"class":173},[167,1922,495],{"class":181},[167,1924,420],{"class":177},[167,1926,1927],{"class":181},"parameter",[167,1929,903],{"class":177},[167,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963,1965,1968,1971,1973,1975,1977,1979,1981,1983,1985,1987,1990],{"class":169,"line":1932},65,[167,1934,908],{"class":173},[167,1936,1421],{"class":177},[167,1938,846],{"class":181},[167,1940,420],{"class":177},[167,1942,601],{"class":181},[167,1944,1435],{"class":173},[167,1946,285],{"class":237},[167,1948,1585],{"class":177},[167,1950,846],{"class":181},[167,1952,420],{"class":177},[167,1954,1592],{"class":181},[167,1956,1595],{"class":177},[167,1958,190],{"class":177},[167,1960,1595],{"class":193},[167,1962,197],{"class":177},[167,1964,1604],{"class":177},[167,1966,1967],{"class":177}," ''}",[167,1969,1970],{"class":193},": ",[167,1972,1477],{"class":177},[167,1974,1424],{"class":230},[167,1976,1427],{"class":181},[167,1978,420],{"class":177},[167,1980,1432],{"class":181},[167,1982,1435],{"class":173},[167,1984,851],{"class":237},[167,1986,538],{"class":181},[167,1988,1989],{"class":177},"}`",[167,1991,200],{"class":177},[167,1993,1995],{"class":169,"line":1994},66,[167,1996,207],{"emptyLinePlaceholder":206},[167,1998,2000],{"class":169,"line":1999},67,[167,2001,2002],{"class":213},"    \u002F\u002F An index signature pairs a key type with a value type.\n",[167,2004,2006,2008,2010,2012,2015],{"class":169,"line":2005},68,[167,2007,894],{"class":173},[167,2009,495],{"class":181},[167,2011,420],{"class":177},[167,2013,2014],{"class":181},"indexSignature",[167,2016,903],{"class":177},[167,2018,2020,2022,2024,2027,2029,2031,2033,2035,2038,2040,2042,2044,2046,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067],{"class":169,"line":2019},69,[167,2021,908],{"class":173},[167,2023,1471],{"class":177},[167,2025,2026],{"class":193},"[key: ",[167,2028,1477],{"class":177},[167,2030,1424],{"class":230},[167,2032,1427],{"class":181},[167,2034,420],{"class":177},[167,2036,2037],{"class":181},"index ",[167,2039,1435],{"class":173},[167,2041,851],{"class":237},[167,2043,538],{"class":181},[167,2045,184],{"class":177},[167,2047,2048],{"class":193},"]: ",[167,2050,1477],{"class":177},[167,2052,1424],{"class":230},[167,2054,1427],{"class":181},[167,2056,420],{"class":177},[167,2058,1432],{"class":181},[167,2060,1435],{"class":173},[167,2062,851],{"class":237},[167,2064,538],{"class":181},[167,2066,1989],{"class":177},[167,2068,200],{"class":177},[167,2070,2072],{"class":169,"line":2071},70,[167,2073,207],{"emptyLinePlaceholder":206},[167,2075,2077],{"class":169,"line":2076},71,[167,2078,2079],{"class":213},"    \u002F\u002F Callables: recurse over `parameters` and `return`.\n",[167,2081,2083,2085,2087,2089,2091],{"class":169,"line":2082},72,[167,2084,894],{"class":173},[167,2086,495],{"class":181},[167,2088,420],{"class":177},[167,2090,838],{"class":181},[167,2092,903],{"class":177},[167,2094,2096,2098,2100,2102,2105],{"class":169,"line":2095},73,[167,2097,894],{"class":173},[167,2099,495],{"class":181},[167,2101,420],{"class":177},[167,2103,2104],{"class":181},"method",[167,2106,903],{"class":177},[167,2108,2110,2112,2114,2116,2119],{"class":169,"line":2109},74,[167,2111,894],{"class":173},[167,2113,495],{"class":181},[167,2115,420],{"class":177},[167,2117,2118],{"class":181},"methodSignature",[167,2120,903],{"class":177},[167,2122,2124,2126,2128,2130,2133],{"class":169,"line":2123},75,[167,2125,894],{"class":173},[167,2127,495],{"class":181},[167,2129,420],{"class":177},[167,2131,2132],{"class":181},"callSignature",[167,2134,903],{"class":177},[167,2136,2138,2140,2142,2144,2146,2148,2150,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177,2179,2181,2184,2186,2188,2190,2192,2195,2197,2199,2201,2203],{"class":169,"line":2137},76,[167,2139,908],{"class":173},[167,2141,1471],{"class":177},[167,2143,529],{"class":193},[167,2145,1477],{"class":177},[167,2147,1427],{"class":181},[167,2149,420],{"class":177},[167,2151,2152],{"class":181},"parameters ",[167,2154,1435],{"class":173},[167,2156,851],{"class":237},[167,2158,1342],{"class":181},[167,2160,420],{"class":177},[167,2162,526],{"class":230},[167,2164,1666],{"class":181},[167,2166,420],{"class":177},[167,2168,1375],{"class":230},[167,2170,529],{"class":181},[167,2172,197],{"class":177},[167,2174,759],{"class":193},[167,2176,197],{"class":177},[167,2178,538],{"class":181},[167,2180,184],{"class":177},[167,2182,2183],{"class":193},") => ",[167,2185,1477],{"class":177},[167,2187,1424],{"class":230},[167,2189,1427],{"class":181},[167,2191,420],{"class":177},[167,2193,2194],{"class":181},"return ",[167,2196,1435],{"class":173},[167,2198,851],{"class":237},[167,2200,538],{"class":181},[167,2202,1989],{"class":177},[167,2204,200],{"class":177},[167,2206,2208],{"class":169,"line":2207},77,[167,2209,207],{"emptyLinePlaceholder":206},[167,2211,2213],{"class":169,"line":2212},78,[167,2214,2215],{"class":213},"    \u002F\u002F A class either lists members (a plain shape) or stops at its name\n",[167,2217,2219],{"class":169,"line":2218},79,[167,2220,2221],{"class":213},"    \u002F\u002F (the builtins Date, Map, Set, Temporal, which carry a `subKind` instead).\n",[167,2223,2225,2227,2229,2231,2234],{"class":169,"line":2224},80,[167,2226,894],{"class":173},[167,2228,495],{"class":181},[167,2230,420],{"class":177},[167,2232,2233],{"class":181},"class",[167,2235,903],{"class":177},[167,2237,2239,2241,2244,2246,2248,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2300,2302,2304,2306,2309,2312,2314,2316,2318,2320],{"class":169,"line":2238},81,[167,2240,908],{"class":173},[167,2242,2243],{"class":181}," rt",[167,2245,420],{"class":177},[167,2247,520],{"class":181},[167,2249,2250],{"class":177}," ?",[167,2252,1471],{"class":177},[167,2254,1832],{"class":193},[167,2256,1477],{"class":177},[167,2258,1427],{"class":181},[167,2260,420],{"class":177},[167,2262,1653],{"class":181},[167,2264,1435],{"class":173},[167,2266,851],{"class":237},[167,2268,1342],{"class":181},[167,2270,420],{"class":177},[167,2272,526],{"class":230},[167,2274,1666],{"class":181},[167,2276,420],{"class":177},[167,2278,1375],{"class":230},[167,2280,529],{"class":181},[167,2282,197],{"class":177},[167,2284,1863],{"class":193},[167,2286,197],{"class":177},[167,2288,538],{"class":181},[167,2290,184],{"class":177},[167,2292,1872],{"class":193},[167,2294,1447],{"class":177},[167,2296,1604],{"class":177},[167,2298,2299],{"class":230}," String",[167,2301,529],{"class":268},[167,2303,846],{"class":181},[167,2305,420],{"class":177},[167,2307,2308],{"class":181},"typeName",[167,2310,2311],{"class":177}," ??",[167,2313,190],{"class":177},[167,2315,1193],{"class":193},[167,2317,197],{"class":177},[167,2319,538],{"class":268},[167,2321,200],{"class":177},[167,2323,2325],{"class":169,"line":2324},82,[167,2326,207],{"emptyLinePlaceholder":206},[167,2328,2330],{"class":169,"line":2329},83,[167,2331,2332],{"class":213},"    \u002F\u002F typeParameter, infer, ref, enumMember: rare in plain data shapes.\n",[167,2334,2336,2339],{"class":169,"line":2335},84,[167,2337,2338],{"class":173},"    default",[167,2340,903],{"class":177},[167,2342,2344,2346,2348,2351,2353,2355,2357,2359,2361,2364,2366],{"class":169,"line":2343},85,[167,2345,908],{"class":173},[167,2347,1471],{"class":177},[167,2349,2350],{"class":193},"\u002F* kind ",[167,2352,1477],{"class":177},[167,2354,846],{"class":181},[167,2356,420],{"class":177},[167,2358,144],{"class":181},[167,2360,184],{"class":177},[167,2362,2363],{"class":193}," *\u002F",[167,2365,1447],{"class":177},[167,2367,200],{"class":177},[167,2369,2371],{"class":169,"line":2370},86,[167,2372,2373],{"class":177},"  }\n",[167,2375,2377],{"class":169,"line":2376},87,[167,2378,2379],{"class":177},"}\n",[167,2381,2383],{"class":169,"line":2382},88,[167,2384,207],{"emptyLinePlaceholder":206},[167,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404],{"class":169,"line":2387},89,[167,2389,221],{"class":220},[167,2391,451],{"class":181},[167,2393,227],{"class":177},[167,2395,456],{"class":230},[167,2397,234],{"class":177},[167,2399,461],{"class":237},[167,2401,241],{"class":177},[167,2403,244],{"class":181},[167,2405,200],{"class":177},[167,2407,2409,2411,2413,2415,2417,2419,2422],{"class":169,"line":2408},90,[167,2410,476],{"class":181},[167,2412,420],{"class":177},[167,2414,481],{"class":230},[167,2416,529],{"class":181},[167,2418,1424],{"class":230},[167,2420,2421],{"class":181},"(orderRT))",[167,2423,200],{"class":177},[167,2425,2427],{"class":169,"line":2426},91,[167,2428,2429],{"class":213},"\u002F\u002F { id: string; total: number; items: { sku: string; qty: number }[]; status: \"open\" | \"shipped\" | \"cancelled\" }\n",[410,2431,2432,2433,2436,2437,2439,2440,2443,2444,717,2446,2449],{},"Builtin classes (Date, Map, Set, Temporal) stop at the class node. They carry a ",[142,2434,2435],{},"subKind"," and a name instead of walkable ",[142,2438,520],{},", so a generic walk can treat them as leaves. Detect them by subKind (for example ",[142,2441,2442],{},"node.subKind === RunTypeSubKind.date","), not by name, since one of your own classes could also be called Date. The ",[142,2445,696],{},[142,2447,2448],{},"RunTypeSubKind"," constant maps are both importable from the package root.",[147,2451,2453],{"id":2452},"every-kind","Every kind",[138,2455,2456,2457,2459],{},"A node's ",[142,2458,144],{}," is always one of these, grouped by how you walk it:",[158,2461,2466],{"className":2462,"code":2464,"language":2465,"meta":163},[2463],"language-text","Atomic (leaves)    string  number  boolean  bigint  symbol  null  undefined  void\n                   never  any  unknown  object  regexp  literal  templateLiteral  enum\nSingle child       array  promise  rest                      (read child)\nContainers         tuple  union  intersection  objectLiteral  (read children)\nMembers            property  propertySignature  parameter  tupleMember  indexSignature\nCallables          function  method  callSignature  methodSignature  (read parameters, return)\nClass              class, covering Date \u002F Map \u002F Set \u002F Temporal or a plain shape (read subKind)\nType level (rare)  typeParameter  infer  enumMember  ref\n","text",[142,2467,2464],{"__ignoreMap":163},[2469,2470,2471],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}","Reflect any type into a RunType node, get its stable id, and walk the graph.","md",null,{"toc":26},{"title":42,"description":2472},"FQgv4f41b_JghbOf0bKn6HAD8NZFX4UOi5_SZlGDY1k",[2479,2481],{"title":38,"path":39,"stem":40,"description":2480,"children":-1},"Bake constraints like email, UUID, int32 or positive straight into your types or schemas.",{"title":46,"path":47,"stem":48,"description":2482,"children":-1},"JSON and binary codecs generated from your type, so Date, BigInt, Map and Set survive the round-trip.",1785369663347]