[{"data":1,"prerenderedAt":585},["ShallowReactive",2],{"content-ja-\u002Fapi\u002Fdiagnostics":3},{"id":4,"title":5,"body":6,"description":578,"extension":579,"meta":580,"navigation":135,"path":581,"seo":582,"stem":583,"__hash__":584},"content_ja\u002Fapi\u002Fdiagnostics.md","診断とログ",{"type":7,"value":8,"toc":568},"minimark",[9,12,29,33,168,172,183,240,244,250,265,268,276,290,293,308,311,416,419,426,536,540,543,546,564],[10,11,5],"h1",{"id":5},[13,14,15,16,20,21,24,25,28],"p",{},"hyogen-md はレンダリング中に ",[17,18,19],"strong",{},"警告","（処理続行）と ",[17,22,23],{},"エラー","（中断）を区別します。ライブラリは ",[17,26,27],{},"console に自動出力しません","。呼び出し側がログを整形・出力します。",[30,31,32],"h2",{"id":32},"診断オブジェクト",[34,35,40],"pre",{"className":36,"code":37,"language":38,"meta":39,"style":39},"language-ts shiki shiki-themes github-light github-dark","type HyogenDiagnostic = {\n  code: string\n  message: string\n  path?: string\n  details?: Record\u003Cstring, unknown>\n}\n\ntype HyogenWarning = HyogenDiagnostic\ntype HyogenError = Error & HyogenDiagnostic\n","ts","",[41,42,43,63,77,87,98,124,130,137,150],"code",{"__ignoreMap":39},[44,45,48,52,56,59],"span",{"class":46,"line":47},"line",1,[44,49,51],{"class":50},"szBVR","type",[44,53,55],{"class":54},"sScJk"," HyogenDiagnostic",[44,57,58],{"class":50}," =",[44,60,62],{"class":61},"sVt8B"," {\n",[44,64,66,70,73],{"class":46,"line":65},2,[44,67,69],{"class":68},"s4XuR","  code",[44,71,72],{"class":50},":",[44,74,76],{"class":75},"sj4cs"," string\n",[44,78,80,83,85],{"class":46,"line":79},3,[44,81,82],{"class":68},"  message",[44,84,72],{"class":50},[44,86,76],{"class":75},[44,88,90,93,96],{"class":46,"line":89},4,[44,91,92],{"class":68},"  path",[44,94,95],{"class":50},"?:",[44,97,76],{"class":75},[44,99,101,104,106,109,112,115,118,121],{"class":46,"line":100},5,[44,102,103],{"class":68},"  details",[44,105,95],{"class":50},[44,107,108],{"class":54}," Record",[44,110,111],{"class":61},"\u003C",[44,113,114],{"class":75},"string",[44,116,117],{"class":61},", ",[44,119,120],{"class":75},"unknown",[44,122,123],{"class":61},">\n",[44,125,127],{"class":46,"line":126},6,[44,128,129],{"class":61},"}\n",[44,131,133],{"class":46,"line":132},7,[44,134,136],{"emptyLinePlaceholder":135},true,"\n",[44,138,140,142,145,147],{"class":46,"line":139},8,[44,141,51],{"class":50},[44,143,144],{"class":54}," HyogenWarning",[44,146,58],{"class":50},[44,148,149],{"class":54}," HyogenDiagnostic\n",[44,151,153,155,158,160,163,166],{"class":46,"line":152},9,[44,154,51],{"class":50},[44,156,157],{"class":54}," HyogenError",[44,159,58],{"class":50},[44,161,162],{"class":54}," Error",[44,164,165],{"class":50}," &",[44,167,149],{"class":54},[30,169,171],{"id":170},"formatdiagnosticlog","formatDiagnosticLog",[13,173,174,175,178,179,182],{},"診断を複数行テキストに整形するユーティリティです。",[41,176,177],{},"@b4moss\u002Fhyogen-md"," と ",[41,180,181],{},"@b4moss\u002Fhyogen-md\u002Fclient"," の両方から export されます。",[34,184,186],{"className":36,"code":185,"language":38,"meta":39,"style":39},"import { formatDiagnosticLog } from '@b4moss\u002Fhyogen-md'\n\nconst text = formatDiagnosticLog('warning', diagnostic)\nconsole.error(text)\n",[41,187,188,203,207,229],{"__ignoreMap":39},[44,189,190,193,196,199],{"class":46,"line":47},[44,191,192],{"class":50},"import",[44,194,195],{"class":61}," { formatDiagnosticLog } ",[44,197,198],{"class":50},"from",[44,200,202],{"class":201},"sZZnC"," '@b4moss\u002Fhyogen-md'\n",[44,204,205],{"class":46,"line":65},[44,206,136],{"emptyLinePlaceholder":135},[44,208,209,212,215,217,220,223,226],{"class":46,"line":79},[44,210,211],{"class":50},"const",[44,213,214],{"class":75}," text",[44,216,58],{"class":50},[44,218,219],{"class":54}," formatDiagnosticLog",[44,221,222],{"class":61},"(",[44,224,225],{"class":201},"'warning'",[44,227,228],{"class":61},", diagnostic)\n",[44,230,231,234,237],{"class":46,"line":89},[44,232,233],{"class":61},"console.",[44,235,236],{"class":54},"error",[44,238,239],{"class":61},"(text)\n",[241,242,243],"h3",{"id":243},"出力形式",[13,245,246,247],{},"1 行目: ",[41,248,249],{},"[hyogen:{kind}] {code}",[13,251,252,253,256,257,260,261,264],{},"以降: ",[41,254,255],{},"details"," の各キーを ",[41,258,259],{},"  {key}: {value}","（インデント 2 スペース）で出力。",[41,262,263],{},"undefined"," のキーは省略します。",[13,266,267],{},"例:",[34,269,274],{"className":270,"code":272,"language":273,"meta":39},[271],"language-text","[hyogen:error] file_not_found\n  path: .\u002Fmissing.md\n  from: .\u002Fpage.md\n  via: include\n","text",[41,275,272],{"__ignoreMap":39},[13,277,278,281,282,285,286,289],{},[41,279,280],{},"diagnostic.path"," も ",[41,283,284],{},"path"," 行として含まれます。",[41,287,288],{},"details.path"," がある場合はそちらを優先します。",[30,291,292],{"id":292},"警告の扱い",[13,294,295,296,299,300,303,304,307],{},"警告は ",[41,297,298],{},"RenderResult.warnings"," または ",[41,301,302],{},"BuildResult.warnings"," に入ります。レンダリング自体は ",[17,305,306],{},"続行","されます。",[13,309,310],{},"代表的な警告:",[312,313,314,326],"table",{},[315,316,317],"thead",{},[318,319,320,323],"tr",{},[321,322,41],"th",{},[321,324,325],{},"状況",[327,328,329,340,357,371,384,396,406],"tbody",{},[318,330,331,337],{},[332,333,334],"td",{},[41,335,336],{},"circular_include",[332,338,339],{},"循環参照を検出し、当該取り込みをスキップ",[318,341,342,347],{},[332,343,344],{},[41,345,346],{},"nest_limit_exceeded",[332,348,349,352,353,356],{},[41,350,351],{},"if"," \u002F ",[41,354,355],{},"each"," の構造ネストが 20 を超え、ブロックをスキップ",[318,358,359,364],{},[332,360,361],{},[41,362,363],{},"extend_in_component",[332,365,366,367,370],{},"component 内の ",[41,368,369],{},"extend"," をスキップ",[318,372,373,378],{},[332,374,375],{},[41,376,377],{},"prop_type_mismatch",[332,379,380,381,383],{},"props の型不一致（値は ",[41,382,263],{},"）",[318,385,386,391],{},[332,387,388],{},[41,389,390],{},"prop_missing",[332,392,393,394,383],{},"必須 props の欠落（値は ",[41,395,263],{},[318,397,398,403],{},[332,399,400],{},[41,401,402],{},"prop_unknown",[332,404,405],{},"未知の props キーを無視",[318,407,408,413],{},[332,409,410],{},[41,411,412],{},"suspicious_context_value",[332,414,415],{},"context に危険そうな値（改変はしない）",[30,417,418],{"id":418},"エラーの扱い",[13,420,421,422,425],{},"エラーは ",[17,423,424],{},"例外として投げられ","、レンダリングが中断します。",[34,427,429],{"className":36,"code":428,"language":38,"meta":39,"style":39},"import { createHyogenError } from '@b4moss\u002Fhyogen-md'\n\ntry {\n  await renderServer(source, context)\n} catch (error) {\n  if (error instanceof Error && 'code' in error) {\n    console.error(formatDiagnosticLog('error', error as HyogenDiagnostic))\n  }\n}\n",[41,430,431,442,446,453,464,475,500,527,532],{"__ignoreMap":39},[44,432,433,435,438,440],{"class":46,"line":47},[44,434,192],{"class":50},[44,436,437],{"class":61}," { createHyogenError } ",[44,439,198],{"class":50},[44,441,202],{"class":201},[44,443,444],{"class":46,"line":65},[44,445,136],{"emptyLinePlaceholder":135},[44,447,448,451],{"class":46,"line":79},[44,449,450],{"class":50},"try",[44,452,62],{"class":61},[44,454,455,458,461],{"class":46,"line":89},[44,456,457],{"class":50},"  await",[44,459,460],{"class":54}," renderServer",[44,462,463],{"class":61},"(source, context)\n",[44,465,466,469,472],{"class":46,"line":100},[44,467,468],{"class":61},"} ",[44,470,471],{"class":50},"catch",[44,473,474],{"class":61}," (error) {\n",[44,476,477,480,483,486,488,491,494,497],{"class":46,"line":126},[44,478,479],{"class":50},"  if",[44,481,482],{"class":61}," (error ",[44,484,485],{"class":50},"instanceof",[44,487,162],{"class":54},[44,489,490],{"class":50}," &&",[44,492,493],{"class":201}," 'code'",[44,495,496],{"class":50}," in",[44,498,499],{"class":61}," error) {\n",[44,501,502,505,507,509,511,513,516,519,522,524],{"class":46,"line":132},[44,503,504],{"class":61},"    console.",[44,506,236],{"class":54},[44,508,222],{"class":61},[44,510,171],{"class":54},[44,512,222],{"class":61},[44,514,515],{"class":201},"'error'",[44,517,518],{"class":61},", error ",[44,520,521],{"class":50},"as",[44,523,55],{"class":54},[44,525,526],{"class":61},"))\n",[44,528,529],{"class":46,"line":139},[44,530,531],{"class":61},"  }\n",[44,533,534],{"class":46,"line":152},[44,535,129],{"class":61},[30,537,539],{"id":538},"formatmessage","formatMessage",[13,541,542],{},"メッセージテンプレートに値を埋め込むユーティリティです。カスタム loader やツール連携で使えます。",[30,544,545],{"id":545},"関連",[547,548,549,558],"ul",{},[550,551,552,557],"li",{},[553,554,556],"a",{"href":555},"\u002Fja\u002Fapi\u002Ferror-codes","エラーコード"," — コード一覧",[550,559,560],{},[553,561,563],{"href":562},"\u002Fja\u002Fapi\u002Ftypes-and-options","型とオプション",[565,566,567],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":39,"searchDepth":65,"depth":65,"links":569},[570,571,574,575,576,577],{"id":32,"depth":65,"text":32},{"id":170,"depth":65,"text":171,"children":572},[573],{"id":243,"depth":79,"text":243},{"id":292,"depth":65,"text":292},{"id":418,"depth":65,"text":418},{"id":538,"depth":65,"text":539},{"id":545,"depth":65,"text":545},"警告・エラーの扱いと formatDiagnosticLog","md",{},"\u002Fapi\u002Fdiagnostics",{"title":5,"description":578},"api\u002Fdiagnostics","Yj-OCeCUpAnoANzi1BboxhmqbQz9MokMtty21Ounj5E",1787223114694]