@aiquants/markdown 1.2.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -0
- package/dist/_basePickBy-CZpyh3nF.cjs +2 -0
- package/dist/{_basePickBy-DJNTCiEl.cjs.map → _basePickBy-CZpyh3nF.cjs.map} +1 -1
- package/dist/_basePickBy-DYBlQOJd.js +152 -0
- package/dist/{_basePickBy-BAf9TBeP.js.map → _basePickBy-DYBlQOJd.js.map} +1 -1
- package/dist/{_baseUniq-xpz62V3M.js → _baseUniq-T4URtiHr.js} +29 -29
- package/dist/{_baseUniq-xpz62V3M.js.map → _baseUniq-T4URtiHr.js.map} +1 -1
- package/dist/_baseUniq-m50KmyvQ.cjs +2 -0
- package/dist/{_baseUniq-oBgpBLxN.cjs.map → _baseUniq-m50KmyvQ.cjs.map} +1 -1
- package/dist/arc-B3IUTM1Z.cjs +2 -0
- package/dist/{arc-Df6554Se.cjs.map → arc-B3IUTM1Z.cjs.map} +1 -1
- package/dist/arc-hnI9Jj9t.js +84 -0
- package/dist/{arc-Cdp6A92J.js.map → arc-hnI9Jj9t.js.map} +1 -1
- package/dist/{architecture-U656AL7Q-DXWeTGXD.cjs → architecture-U656AL7Q-12UjuI7G.cjs} +2 -2
- package/dist/architecture-U656AL7Q-12UjuI7G.cjs.map +1 -0
- package/dist/architecture-U656AL7Q-5i5BzCTY.js +6 -0
- package/dist/architecture-U656AL7Q-5i5BzCTY.js.map +1 -0
- package/dist/{architectureDiagram-VXUJARFQ-DrV8Y7rq.js → architectureDiagram-VXUJARFQ-4jcgcKQf.js} +133 -133
- package/dist/{architectureDiagram-VXUJARFQ-DrV8Y7rq.js.map → architectureDiagram-VXUJARFQ-4jcgcKQf.js.map} +1 -1
- package/dist/architectureDiagram-VXUJARFQ-CxcAcFiU.cjs +37 -0
- package/dist/{architectureDiagram-VXUJARFQ-fEGjFbVc.cjs.map → architectureDiagram-VXUJARFQ-CxcAcFiU.cjs.map} +1 -1
- package/dist/{blockDiagram-VD42YOAC-DnIarP1n.cjs → blockDiagram-VD42YOAC-BzPAIgsK.cjs} +2 -2
- package/dist/{blockDiagram-VD42YOAC-DnIarP1n.cjs.map → blockDiagram-VD42YOAC-BzPAIgsK.cjs.map} +1 -1
- package/dist/{blockDiagram-VD42YOAC-Dj9PGaUA.js → blockDiagram-VD42YOAC-DN1ryWbJ.js} +42 -42
- package/dist/{blockDiagram-VD42YOAC-Dj9PGaUA.js.map → blockDiagram-VD42YOAC-DN1ryWbJ.js.map} +1 -1
- package/dist/{c4Diagram-YG6GDRKO-DT2-syeR.js → c4Diagram-YG6GDRKO-CYt1PQCj.js} +24 -24
- package/dist/{c4Diagram-YG6GDRKO-DT2-syeR.js.map → c4Diagram-YG6GDRKO-CYt1PQCj.js.map} +1 -1
- package/dist/{c4Diagram-YG6GDRKO-B1rWXPSq.cjs → c4Diagram-YG6GDRKO-D-wlJ7E3.cjs} +2 -2
- package/dist/{c4Diagram-YG6GDRKO-B1rWXPSq.cjs.map → c4Diagram-YG6GDRKO-D-wlJ7E3.cjs.map} +1 -1
- package/dist/channel-BRhq0hUy.cjs +2 -0
- package/dist/{channel-BOYh8w_6.cjs.map → channel-BRhq0hUy.cjs.map} +1 -1
- package/dist/channel-yWuXPrFm.js +6 -0
- package/dist/{channel-BIIdftI1.js.map → channel-yWuXPrFm.js.map} +1 -1
- package/dist/chunk-4BX2VUAB-CVYFMXzc.cjs +2 -0
- package/dist/{chunk-4BX2VUAB-Ccl0XCCb.cjs.map → chunk-4BX2VUAB-CVYFMXzc.cjs.map} +1 -1
- package/dist/{chunk-4BX2VUAB-3m-kTV7c.js → chunk-4BX2VUAB-zyP_hoML.js} +2 -2
- package/dist/{chunk-4BX2VUAB-3m-kTV7c.js.map → chunk-4BX2VUAB-zyP_hoML.js.map} +1 -1
- package/dist/chunk-55IACEB6-DscAU5y3.cjs +2 -0
- package/dist/{chunk-55IACEB6-DF_nOrnG.cjs.map → chunk-55IACEB6-DscAU5y3.cjs.map} +1 -1
- package/dist/chunk-55IACEB6-DtwcTX5Z.js +9 -0
- package/dist/{chunk-55IACEB6-DFPiIUqS.js.map → chunk-55IACEB6-DtwcTX5Z.js.map} +1 -1
- package/dist/{chunk-B4BG7PRW--ytg5kTi.js → chunk-B4BG7PRW-B2Kj7MlT.js} +5 -5
- package/dist/{chunk-B4BG7PRW--ytg5kTi.js.map → chunk-B4BG7PRW-B2Kj7MlT.js.map} +1 -1
- package/dist/{chunk-B4BG7PRW-YJstgnSU.cjs → chunk-B4BG7PRW-Cf9HgWUI.cjs} +2 -2
- package/dist/{chunk-B4BG7PRW-YJstgnSU.cjs.map → chunk-B4BG7PRW-Cf9HgWUI.cjs.map} +1 -1
- package/dist/{chunk-DI55MBZ5-BmCH9GqB.js → chunk-DI55MBZ5-9biYgVaA.js} +21 -21
- package/dist/{chunk-DI55MBZ5-BmCH9GqB.js.map → chunk-DI55MBZ5-9biYgVaA.js.map} +1 -1
- package/dist/{chunk-DI55MBZ5-Caqpkdhr.cjs → chunk-DI55MBZ5-B41EP2t_.cjs} +2 -2
- package/dist/{chunk-DI55MBZ5-Caqpkdhr.cjs.map → chunk-DI55MBZ5-B41EP2t_.cjs.map} +1 -1
- package/dist/{chunk-FMBD7UC4-C-LfOPnM.js → chunk-FMBD7UC4-CbhlBgX7.js} +2 -2
- package/dist/{chunk-FMBD7UC4-C-LfOPnM.js.map → chunk-FMBD7UC4-CbhlBgX7.js.map} +1 -1
- package/dist/{chunk-FMBD7UC4-BzNDH5v8.cjs → chunk-FMBD7UC4-auJao_HL.cjs} +2 -2
- package/dist/{chunk-FMBD7UC4-BzNDH5v8.cjs.map → chunk-FMBD7UC4-auJao_HL.cjs.map} +1 -1
- package/dist/chunk-QN33PNHL-BI7lthQH.js +20 -0
- package/dist/{chunk-QN33PNHL-DusPZf-g.js.map → chunk-QN33PNHL-BI7lthQH.js.map} +1 -1
- package/dist/chunk-QN33PNHL-CUO7WcyW.cjs +2 -0
- package/dist/{chunk-QN33PNHL-CTPfHl1X.cjs.map → chunk-QN33PNHL-CUO7WcyW.cjs.map} +1 -1
- package/dist/chunk-QZHKN3VN-CkbawBUx.cjs +2 -0
- package/dist/{chunk-QZHKN3VN-CmkPBu4c.cjs.map → chunk-QZHKN3VN-CkbawBUx.cjs.map} +1 -1
- package/dist/{chunk-QZHKN3VN-rE0ieZJm.js → chunk-QZHKN3VN-ClSce1UJ.js} +2 -2
- package/dist/{chunk-QZHKN3VN-rE0ieZJm.js.map → chunk-QZHKN3VN-ClSce1UJ.js.map} +1 -1
- package/dist/chunk-TZMSLE5B-BCpvyiS-.cjs +2 -0
- package/dist/{chunk-TZMSLE5B-BTD_Ddmh.cjs.map → chunk-TZMSLE5B-BCpvyiS-.cjs.map} +1 -1
- package/dist/{chunk-TZMSLE5B-J8F8d3GW.js → chunk-TZMSLE5B-Cuw_Q8_E.js} +18 -18
- package/dist/{chunk-TZMSLE5B-J8F8d3GW.js.map → chunk-TZMSLE5B-Cuw_Q8_E.js.map} +1 -1
- package/dist/classDiagram-2ON5EDUG-6Lgrwbt3.cjs +2 -0
- package/dist/{classDiagram-2ON5EDUG-Ce7MrBcE.cjs.map → classDiagram-2ON5EDUG-6Lgrwbt3.cjs.map} +1 -1
- package/dist/{classDiagram-2ON5EDUG-Br3OQG53.js → classDiagram-2ON5EDUG-Dm41lzAH.js} +3 -3
- package/dist/{classDiagram-2ON5EDUG-Br3OQG53.js.map → classDiagram-2ON5EDUG-Dm41lzAH.js.map} +1 -1
- package/dist/classDiagram-v2-WZHVMYZB-6Lgrwbt3.cjs +2 -0
- package/dist/{classDiagram-v2-WZHVMYZB-Ce7MrBcE.cjs.map → classDiagram-v2-WZHVMYZB-6Lgrwbt3.cjs.map} +1 -1
- package/dist/{classDiagram-v2-WZHVMYZB-Br3OQG53.js → classDiagram-v2-WZHVMYZB-Dm41lzAH.js} +3 -3
- package/dist/{classDiagram-v2-WZHVMYZB-Br3OQG53.js.map → classDiagram-v2-WZHVMYZB-Dm41lzAH.js.map} +1 -1
- package/dist/cli.js +109 -13
- package/dist/clone-DDZWRmU2.js +9 -0
- package/dist/{clone-CCIqcM5Y.js.map → clone-DDZWRmU2.js.map} +1 -1
- package/dist/clone-D_DJ2_jS.cjs +2 -0
- package/dist/{clone-CvQKcI6r.cjs.map → clone-D_DJ2_jS.cjs.map} +1 -1
- package/dist/{cose-bilkent-S5V4N54A-fU3j-gz-.js → cose-bilkent-S5V4N54A-BuSoLj8X.js} +2 -2
- package/dist/{cose-bilkent-S5V4N54A-fU3j-gz-.js.map → cose-bilkent-S5V4N54A-BuSoLj8X.js.map} +1 -1
- package/dist/cose-bilkent-S5V4N54A-DhEllWR9.cjs +2 -0
- package/dist/{cose-bilkent-S5V4N54A-CYDFYlZ6.cjs.map → cose-bilkent-S5V4N54A-DhEllWR9.cjs.map} +1 -1
- package/dist/css/github-markdown.css +10 -1
- package/dist/css/katex.min.css +24 -24
- package/dist/dagre-6UL2VRFP-Ce1IfEax.cjs +5 -0
- package/dist/{dagre-6UL2VRFP-CrTlcO8O.cjs.map → dagre-6UL2VRFP-Ce1IfEax.cjs.map} +1 -1
- package/dist/{dagre-6UL2VRFP-BkkuZmWn.js → dagre-6UL2VRFP-hEXR6Hr0.js} +35 -35
- package/dist/{dagre-6UL2VRFP-BkkuZmWn.js.map → dagre-6UL2VRFP-hEXR6Hr0.js.map} +1 -1
- package/dist/{diagram-PSM6KHXK-CumMPbYj.js → diagram-PSM6KHXK-CbqJ09v8.js} +21 -21
- package/dist/{diagram-PSM6KHXK-CumMPbYj.js.map → diagram-PSM6KHXK-CbqJ09v8.js.map} +1 -1
- package/dist/diagram-PSM6KHXK-OIhRHjf4.cjs +25 -0
- package/dist/{diagram-PSM6KHXK-9wHp_OsU.cjs.map → diagram-PSM6KHXK-OIhRHjf4.cjs.map} +1 -1
- package/dist/{diagram-QEK2KX5R-BX73KNSg.js → diagram-QEK2KX5R-DDQCqSJp.js} +28 -28
- package/dist/{diagram-QEK2KX5R-BX73KNSg.js.map → diagram-QEK2KX5R-DDQCqSJp.js.map} +1 -1
- package/dist/diagram-QEK2KX5R-l-c4ilvl.cjs +44 -0
- package/dist/{diagram-QEK2KX5R-BYqdFTnq.cjs.map → diagram-QEK2KX5R-l-c4ilvl.cjs.map} +1 -1
- package/dist/{diagram-S2PKOQOG-DJ-724qx.js → diagram-S2PKOQOG-BLSybnR0.js} +18 -18
- package/dist/{diagram-S2PKOQOG-DJ-724qx.js.map → diagram-S2PKOQOG-BLSybnR0.js.map} +1 -1
- package/dist/diagram-S2PKOQOG-CR_PQTVg.cjs +25 -0
- package/dist/{diagram-S2PKOQOG-DonScLpF.cjs.map → diagram-S2PKOQOG-CR_PQTVg.cjs.map} +1 -1
- package/dist/{erDiagram-Q2GNP2WA-DC-tMGdk.cjs → erDiagram-Q2GNP2WA-DXinTIec.cjs} +2 -2
- package/dist/{erDiagram-Q2GNP2WA-DC-tMGdk.cjs.map → erDiagram-Q2GNP2WA-DXinTIec.cjs.map} +1 -1
- package/dist/{erDiagram-Q2GNP2WA-C4m3Pm5f.js → erDiagram-Q2GNP2WA-DlkDQ4S2.js} +65 -65
- package/dist/{erDiagram-Q2GNP2WA-C4m3Pm5f.js.map → erDiagram-Q2GNP2WA-DlkDQ4S2.js.map} +1 -1
- package/dist/{index-BDajGLDt.cjs → extractHeadings-LdKvrkA9.cjs} +66 -66
- package/dist/extractHeadings-LdKvrkA9.cjs.map +1 -0
- package/dist/{index-caKpab-1.js → extractHeadings-rFktacYX.js} +4112 -4392
- package/dist/extractHeadings-rFktacYX.js.map +1 -0
- package/dist/{flowDiagram-NV44I4VS-9k1QiKz5.cjs → flowDiagram-NV44I4VS-Ui4qSfrM.cjs} +4 -4
- package/dist/{flowDiagram-NV44I4VS-9k1QiKz5.cjs.map → flowDiagram-NV44I4VS-Ui4qSfrM.cjs.map} +1 -1
- package/dist/{flowDiagram-NV44I4VS-DkG0D9cg.js → flowDiagram-NV44I4VS-Z7Lz3lBM.js} +24 -24
- package/dist/{flowDiagram-NV44I4VS-DkG0D9cg.js.map → flowDiagram-NV44I4VS-Z7Lz3lBM.js.map} +1 -1
- package/dist/ganttDiagram-JELNMOA3-DGdZuIeF.cjs +268 -0
- package/dist/{ganttDiagram-JELNMOA3-C1nojL1z.cjs.map → ganttDiagram-JELNMOA3-DGdZuIeF.cjs.map} +1 -1
- package/dist/{ganttDiagram-JELNMOA3-gKhAoiqV.js → ganttDiagram-JELNMOA3-SuyiM7f-.js} +86 -86
- package/dist/{ganttDiagram-JELNMOA3-gKhAoiqV.js.map → ganttDiagram-JELNMOA3-SuyiM7f-.js.map} +1 -1
- package/dist/{gitGraph-F6HP7TQM-Bo0E-pHW.cjs → gitGraph-F6HP7TQM-B9msJeDD.cjs} +2 -2
- package/dist/gitGraph-F6HP7TQM-B9msJeDD.cjs.map +1 -0
- package/dist/gitGraph-F6HP7TQM-CPJ6IG9f.js +6 -0
- package/dist/gitGraph-F6HP7TQM-CPJ6IG9f.js.map +1 -0
- package/dist/gitGraphDiagram-NY62KEGX-9drmbQJR.cjs +66 -0
- package/dist/{gitGraphDiagram-NY62KEGX-YDRakP-_.cjs.map → gitGraphDiagram-NY62KEGX-9drmbQJR.cjs.map} +1 -1
- package/dist/{gitGraphDiagram-NY62KEGX-D3XBs94x.js → gitGraphDiagram-NY62KEGX-Dl6VuZIE.js} +26 -26
- package/dist/{gitGraphDiagram-NY62KEGX-D3XBs94x.js.map → gitGraphDiagram-NY62KEGX-Dl6VuZIE.js.map} +1 -1
- package/dist/{graph-BasevfV_.js → graph-0wpLgWY1.js} +7 -7
- package/dist/{graph-BasevfV_.js.map → graph-0wpLgWY1.js.map} +1 -1
- package/dist/graph-BzzeK1Gv.cjs +2 -0
- package/dist/{graph-rSA-aI4s.cjs.map → graph-BzzeK1Gv.cjs.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.client.cjs +2 -0
- package/dist/index.client.cjs.map +1 -0
- package/dist/index.client.d.ts +2 -0
- package/dist/index.client.js +48 -0
- package/dist/index.client.js.map +1 -0
- package/dist/index.js +41 -46
- package/dist/index.js.map +1 -1
- package/dist/index.server.cjs +2 -0
- package/dist/index.server.cjs.map +1 -0
- package/dist/index.server.d.ts +2 -0
- package/dist/index.server.js +417 -0
- package/dist/index.server.js.map +1 -0
- package/dist/{info-NVLQJR56-C-3b-i8R.cjs → info-NVLQJR56-Dt_YlUDj.cjs} +2 -2
- package/dist/info-NVLQJR56-Dt_YlUDj.cjs.map +1 -0
- package/dist/info-NVLQJR56-JGqEkkKs.js +6 -0
- package/dist/info-NVLQJR56-JGqEkkKs.js.map +1 -0
- package/dist/infoDiagram-WHAUD3N6-5-8rsKWX.js +25 -0
- package/dist/{infoDiagram-WHAUD3N6-DVElQ6XQ.js.map → infoDiagram-WHAUD3N6-5-8rsKWX.js.map} +1 -1
- package/dist/infoDiagram-WHAUD3N6-CdO6FHyk.cjs +3 -0
- package/dist/{infoDiagram-WHAUD3N6-BfyHsG_R.cjs.map → infoDiagram-WHAUD3N6-CdO6FHyk.cjs.map} +1 -1
- package/dist/{journeyDiagram-XKPGCS4Q-DfM_UFvc.cjs → journeyDiagram-XKPGCS4Q-CIhzXX2d.cjs} +2 -2
- package/dist/{journeyDiagram-XKPGCS4Q-DfM_UFvc.cjs.map → journeyDiagram-XKPGCS4Q-CIhzXX2d.cjs.map} +1 -1
- package/dist/{journeyDiagram-XKPGCS4Q-BEyBxLEE.js → journeyDiagram-XKPGCS4Q-CRYbft-_.js} +18 -18
- package/dist/{journeyDiagram-XKPGCS4Q-BEyBxLEE.js.map → journeyDiagram-XKPGCS4Q-CRYbft-_.js.map} +1 -1
- package/dist/{kanban-definition-3W4ZIXB7-mqwusAZJ.cjs → kanban-definition-3W4ZIXB7-DARkf8RN.cjs} +2 -2
- package/dist/{kanban-definition-3W4ZIXB7-mqwusAZJ.cjs.map → kanban-definition-3W4ZIXB7-DARkf8RN.cjs.map} +1 -1
- package/dist/{kanban-definition-3W4ZIXB7-C1c6hUl-.js → kanban-definition-3W4ZIXB7-DcZMiIZR.js} +41 -41
- package/dist/{kanban-definition-3W4ZIXB7-C1c6hUl-.js.map → kanban-definition-3W4ZIXB7-DcZMiIZR.js.map} +1 -1
- package/dist/layout-Cjox5cbT.cjs +2 -0
- package/dist/{layout-C9eO5Nxr.cjs.map → layout-Cjox5cbT.cjs.map} +1 -1
- package/dist/{layout-DR8dbrKj.js → layout-PM3_5L8k.js} +91 -91
- package/dist/{layout-DR8dbrKj.js.map → layout-PM3_5L8k.js.map} +1 -1
- package/dist/linear-BUi5H4zl.cjs +2 -0
- package/dist/{linear-jbmUvWu5.cjs.map → linear-BUi5H4zl.cjs.map} +1 -1
- package/dist/{linear-DKLfd3Ph.js → linear-CFbDVwYE.js} +66 -66
- package/dist/{linear-DKLfd3Ph.js.map → linear-CFbDVwYE.js.map} +1 -1
- package/dist/markdown.css +1 -1
- package/dist/{mermaid-parser.core-vI3z9vjp.cjs → mermaid-parser.core-DP8govnb.cjs} +3 -3
- package/dist/{mermaid-parser.core-vI3z9vjp.cjs.map → mermaid-parser.core-DP8govnb.cjs.map} +1 -1
- package/dist/{mermaid-parser.core-CJwfr-Rn.js → mermaid-parser.core-DoZecKQv.js} +12 -12
- package/dist/{mermaid-parser.core-CJwfr-Rn.js.map → mermaid-parser.core-DoZecKQv.js.map} +1 -1
- package/dist/{mindmap-definition-VGOIOE7T-BqeRBDHB.cjs → mindmap-definition-VGOIOE7T-CfdJXAqF.cjs} +3 -3
- package/dist/{mindmap-definition-VGOIOE7T-BqeRBDHB.cjs.map → mindmap-definition-VGOIOE7T-CfdJXAqF.cjs.map} +1 -1
- package/dist/{mindmap-definition-VGOIOE7T-Bxh4mvAa.js → mindmap-definition-VGOIOE7T-Ct5wTXxm.js} +19 -19
- package/dist/{mindmap-definition-VGOIOE7T-Bxh4mvAa.js.map → mindmap-definition-VGOIOE7T-Ct5wTXxm.js.map} +1 -1
- package/dist/{packet-BFZMPI3H-UUkqxMwx.cjs → packet-BFZMPI3H-BS1WGkF7.cjs} +2 -2
- package/dist/packet-BFZMPI3H-BS1WGkF7.cjs.map +1 -0
- package/dist/packet-BFZMPI3H-CLoE6Rx3.js +6 -0
- package/dist/packet-BFZMPI3H-CLoE6Rx3.js.map +1 -0
- package/dist/{pie-7BOR55EZ-6cd-l72R.cjs → pie-7BOR55EZ-CkndT3W_.cjs} +2 -2
- package/dist/pie-7BOR55EZ-CkndT3W_.cjs.map +1 -0
- package/dist/pie-7BOR55EZ-vekjg8_G.js +6 -0
- package/dist/pie-7BOR55EZ-vekjg8_G.js.map +1 -0
- package/dist/{pieDiagram-ADFJNKIX-E7NP2mWM.js → pieDiagram-ADFJNKIX-DNlHtDkd.js} +41 -41
- package/dist/{pieDiagram-ADFJNKIX-E7NP2mWM.js.map → pieDiagram-ADFJNKIX-DNlHtDkd.js.map} +1 -1
- package/dist/{pieDiagram-ADFJNKIX-oBQctDBF.cjs → pieDiagram-ADFJNKIX-XBQbVUk2.cjs} +3 -3
- package/dist/{pieDiagram-ADFJNKIX-oBQctDBF.cjs.map → pieDiagram-ADFJNKIX-XBQbVUk2.cjs.map} +1 -1
- package/dist/{quadrantDiagram-AYHSOK5B-BI6EBqf1.js → quadrantDiagram-AYHSOK5B-DI_J1FBe.js} +3 -3
- package/dist/{quadrantDiagram-AYHSOK5B-BI6EBqf1.js.map → quadrantDiagram-AYHSOK5B-DI_J1FBe.js.map} +1 -1
- package/dist/{quadrantDiagram-AYHSOK5B-BdynjtBz.cjs → quadrantDiagram-AYHSOK5B-K0lxSkmw.cjs} +2 -2
- package/dist/{quadrantDiagram-AYHSOK5B-BdynjtBz.cjs.map → quadrantDiagram-AYHSOK5B-K0lxSkmw.cjs.map} +1 -1
- package/dist/{radar-NHE76QYJ-BEdxIU3J.cjs → radar-NHE76QYJ-BZfwABCV.cjs} +2 -2
- package/dist/radar-NHE76QYJ-BZfwABCV.cjs.map +1 -0
- package/dist/radar-NHE76QYJ-C3EO7tV-.js +6 -0
- package/dist/radar-NHE76QYJ-C3EO7tV-.js.map +1 -0
- package/dist/remark-zenn-message-B-AEffpD.js +408 -0
- package/dist/remark-zenn-message-B-AEffpD.js.map +1 -0
- package/dist/remark-zenn-message-B5yftsqg.cjs +2 -0
- package/dist/remark-zenn-message-B5yftsqg.cjs.map +1 -0
- package/dist/{requirementDiagram-UZGBJVZJ-BaCeaYOD.js → requirementDiagram-UZGBJVZJ-CZ5Bvlz0.js} +6 -6
- package/dist/{requirementDiagram-UZGBJVZJ-BaCeaYOD.js.map → requirementDiagram-UZGBJVZJ-CZ5Bvlz0.js.map} +1 -1
- package/dist/{requirementDiagram-UZGBJVZJ-DRt-Beuk.cjs → requirementDiagram-UZGBJVZJ-RB7_TnRV.cjs} +2 -2
- package/dist/{requirementDiagram-UZGBJVZJ-DRt-Beuk.cjs.map → requirementDiagram-UZGBJVZJ-RB7_TnRV.cjs.map} +1 -1
- package/dist/sankeyDiagram-TZEHDZUN-BdJucJHJ.cjs +11 -0
- package/dist/{sankeyDiagram-TZEHDZUN-BRlPGxPq.cjs.map → sankeyDiagram-TZEHDZUN-BdJucJHJ.cjs.map} +1 -1
- package/dist/{sankeyDiagram-TZEHDZUN-adBXJ70i.js → sankeyDiagram-TZEHDZUN-oZwJjnO5.js} +39 -39
- package/dist/{sankeyDiagram-TZEHDZUN-adBXJ70i.js.map → sankeyDiagram-TZEHDZUN-oZwJjnO5.js.map} +1 -1
- package/dist/{sequenceDiagram-WL72ISMW-BjjmX7GP.js → sequenceDiagram-WL72ISMW-BjKIlAK3.js} +4 -4
- package/dist/{sequenceDiagram-WL72ISMW-BjjmX7GP.js.map → sequenceDiagram-WL72ISMW-BjKIlAK3.js.map} +1 -1
- package/dist/{sequenceDiagram-WL72ISMW-Dc4K__VG.cjs → sequenceDiagram-WL72ISMW-D5BQvSVr.cjs} +2 -2
- package/dist/{sequenceDiagram-WL72ISMW-Dc4K__VG.cjs.map → sequenceDiagram-WL72ISMW-D5BQvSVr.cjs.map} +1 -1
- package/dist/src/cli.d.ts +0 -1
- package/dist/src/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/src/components/NodesRenderer.d.ts +16 -1
- package/dist/src/components/NodesRenderer.d.ts.map +1 -1
- package/dist/src/components/TableOfContents.d.ts +13 -0
- package/dist/src/components/TableOfContents.d.ts.map +1 -0
- package/dist/src/components/mdastNodes/HTMLBlockContainerNode.d.ts +26 -0
- package/dist/src/components/mdastNodes/HTMLBlockContainerNode.d.ts.map +1 -0
- package/dist/src/components/mdastNodes/HTMLNode.d.ts.map +1 -1
- package/dist/src/components/mdastNodes/HeadingNode.d.ts.map +1 -1
- package/dist/src/components/mdastNodes/MarkNode.d.ts +9 -0
- package/dist/src/components/mdastNodes/MarkNode.d.ts.map +1 -0
- package/dist/src/components/mdastNodes/SubscriptNode.d.ts +9 -0
- package/dist/src/components/mdastNodes/SubscriptNode.d.ts.map +1 -0
- package/dist/src/components/mdastNodes/SuperscriptNode.d.ts +9 -0
- package/dist/src/components/mdastNodes/SuperscriptNode.d.ts.map +1 -0
- package/dist/src/components/mdastNodes/TableNode.d.ts.map +1 -1
- package/dist/src/components/mdastNodes/ZennDetailsNode.d.ts.map +1 -1
- package/dist/src/components/mdastNodes/ZennMessageNode.d.ts.map +1 -1
- package/dist/src/components/plugins/DifyIFramePlugin.d.ts.map +1 -1
- package/dist/src/index.client.d.ts +43 -0
- package/dist/src/index.client.d.ts.map +1 -0
- package/dist/src/index.d.ts +1 -48
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.server.d.ts +9 -0
- package/dist/src/index.server.d.ts.map +1 -0
- package/dist/src/plugins/fetchSiteMetadata.d.ts.map +1 -1
- package/dist/src/plugins/remark-auto-heading-id.d.ts +10 -0
- package/dist/src/plugins/remark-auto-heading-id.d.ts.map +1 -0
- package/dist/src/plugins/remark-block-link-metadata.d.ts.map +1 -1
- package/dist/src/plugins/remark-html-in-html.d.ts.map +1 -1
- package/dist/src/plugins/{remark-import-directive.async.d.ts → remark-import-directive.async.server.d.ts} +1 -1
- package/dist/src/plugins/remark-import-directive.async.server.d.ts.map +1 -0
- package/dist/src/plugins/remark-mark.d.ts +21 -0
- package/dist/src/plugins/remark-mark.d.ts.map +1 -0
- package/dist/src/plugins/remark-resolve-uri.async.d.ts.map +1 -1
- package/dist/src/plugins/remark-subscript.d.ts +21 -0
- package/dist/src/plugins/remark-subscript.d.ts.map +1 -0
- package/dist/src/plugins/remark-superscript.d.ts +21 -0
- package/dist/src/plugins/remark-superscript.d.ts.map +1 -0
- package/dist/src/plugins/remark-table-merge.d.ts +8 -0
- package/dist/src/plugins/remark-table-merge.d.ts.map +1 -0
- package/dist/src/plugins/remark-unwrap-block-html.d.ts +8 -0
- package/dist/src/plugins/remark-unwrap-block-html.d.ts.map +1 -0
- package/dist/src/plugins/remark-zenn-message.d.ts.map +1 -1
- package/dist/src/plugins/transformUri.async.server.d.ts.map +1 -1
- package/dist/src/remarkProcessor.server.d.ts.map +1 -1
- package/dist/src/utils/extractHeadings.d.ts +15 -0
- package/dist/src/utils/extractHeadings.d.ts.map +1 -0
- package/dist/src/utils/headingText.d.ts +7 -0
- package/dist/src/utils/headingText.d.ts.map +1 -0
- package/dist/src/utils/simple-logger.d.ts +98 -0
- package/dist/src/utils/simple-logger.d.ts.map +1 -0
- package/dist/stateDiagram-FKZM4ZOC-838ingkj.cjs +2 -0
- package/dist/{stateDiagram-FKZM4ZOC-Er8_CIvC.cjs.map → stateDiagram-FKZM4ZOC-838ingkj.cjs.map} +1 -1
- package/dist/{stateDiagram-FKZM4ZOC-Dvbcwtvr.js → stateDiagram-FKZM4ZOC-BkV0Z4aE.js} +35 -35
- package/dist/{stateDiagram-FKZM4ZOC-Dvbcwtvr.js.map → stateDiagram-FKZM4ZOC-BkV0Z4aE.js.map} +1 -1
- package/dist/{stateDiagram-v2-4FDKWEC3-Cpy_Ydpw.js → stateDiagram-v2-4FDKWEC3-CmILZVH2.js} +3 -3
- package/dist/{stateDiagram-v2-4FDKWEC3-Cpy_Ydpw.js.map → stateDiagram-v2-4FDKWEC3-CmILZVH2.js.map} +1 -1
- package/dist/stateDiagram-v2-4FDKWEC3-DOEfxeVg.cjs +2 -0
- package/dist/{stateDiagram-v2-4FDKWEC3-BYc_jC0C.cjs.map → stateDiagram-v2-4FDKWEC3-DOEfxeVg.cjs.map} +1 -1
- package/dist/styles/markdown.css +1 -1
- package/dist/{timeline-definition-IT6M3QCI-DE5g5JfV.cjs → timeline-definition-IT6M3QCI-Dl7OWbnD.cjs} +14 -14
- package/dist/{timeline-definition-IT6M3QCI-DE5g5JfV.cjs.map → timeline-definition-IT6M3QCI-Dl7OWbnD.cjs.map} +1 -1
- package/dist/{timeline-definition-IT6M3QCI-4iCfKsS1.js → timeline-definition-IT6M3QCI-DmPc14cR.js} +141 -141
- package/dist/{timeline-definition-IT6M3QCI-4iCfKsS1.js.map → timeline-definition-IT6M3QCI-DmPc14cR.js.map} +1 -1
- package/dist/{treemap-KMMF4GRG-YLlgu5sk.cjs → treemap-KMMF4GRG-DOiHTP7A.cjs} +2 -2
- package/dist/treemap-KMMF4GRG-DOiHTP7A.cjs.map +1 -0
- package/dist/treemap-KMMF4GRG-Df9H_fnS.js +6 -0
- package/dist/treemap-KMMF4GRG-Df9H_fnS.js.map +1 -0
- package/dist/vite.config.d.ts.map +1 -1
- package/dist/{xychartDiagram-PRI3JC2R-B83XR1RX.cjs → xychartDiagram-PRI3JC2R-BU8HjdHg.cjs} +2 -2
- package/dist/{xychartDiagram-PRI3JC2R-B83XR1RX.cjs.map → xychartDiagram-PRI3JC2R-BU8HjdHg.cjs.map} +1 -1
- package/dist/{xychartDiagram-PRI3JC2R-By_sU7ew.js → xychartDiagram-PRI3JC2R-CAdetg-1.js} +20 -20
- package/dist/{xychartDiagram-PRI3JC2R-By_sU7ew.js.map → xychartDiagram-PRI3JC2R-CAdetg-1.js.map} +1 -1
- package/package.json +13 -1
- package/dist/_basePickBy-BAf9TBeP.js +0 -152
- package/dist/_basePickBy-DJNTCiEl.cjs +0 -2
- package/dist/_baseUniq-oBgpBLxN.cjs +0 -2
- package/dist/arc-Cdp6A92J.js +0 -84
- package/dist/arc-Df6554Se.cjs +0 -2
- package/dist/architecture-U656AL7Q-BFneEPaI.js +0 -6
- package/dist/architecture-U656AL7Q-BFneEPaI.js.map +0 -1
- package/dist/architecture-U656AL7Q-DXWeTGXD.cjs.map +0 -1
- package/dist/architectureDiagram-VXUJARFQ-fEGjFbVc.cjs +0 -37
- package/dist/channel-BIIdftI1.js +0 -6
- package/dist/channel-BOYh8w_6.cjs +0 -2
- package/dist/chunk-4BX2VUAB-Ccl0XCCb.cjs +0 -2
- package/dist/chunk-55IACEB6-DFPiIUqS.js +0 -9
- package/dist/chunk-55IACEB6-DF_nOrnG.cjs +0 -2
- package/dist/chunk-QN33PNHL-CTPfHl1X.cjs +0 -2
- package/dist/chunk-QN33PNHL-DusPZf-g.js +0 -20
- package/dist/chunk-QZHKN3VN-CmkPBu4c.cjs +0 -2
- package/dist/chunk-TZMSLE5B-BTD_Ddmh.cjs +0 -2
- package/dist/classDiagram-2ON5EDUG-Ce7MrBcE.cjs +0 -2
- package/dist/classDiagram-v2-WZHVMYZB-Ce7MrBcE.cjs +0 -2
- package/dist/clone-CCIqcM5Y.js +0 -9
- package/dist/clone-CvQKcI6r.cjs +0 -2
- package/dist/cose-bilkent-S5V4N54A-CYDFYlZ6.cjs +0 -2
- package/dist/dagre-6UL2VRFP-CrTlcO8O.cjs +0 -5
- package/dist/diagram-PSM6KHXK-9wHp_OsU.cjs +0 -25
- package/dist/diagram-QEK2KX5R-BYqdFTnq.cjs +0 -44
- package/dist/diagram-S2PKOQOG-DonScLpF.cjs +0 -25
- package/dist/ganttDiagram-JELNMOA3-C1nojL1z.cjs +0 -268
- package/dist/gitGraph-F6HP7TQM-Bo0E-pHW.cjs.map +0 -1
- package/dist/gitGraph-F6HP7TQM-CHoN29cY.js +0 -6
- package/dist/gitGraph-F6HP7TQM-CHoN29cY.js.map +0 -1
- package/dist/gitGraphDiagram-NY62KEGX-YDRakP-_.cjs +0 -66
- package/dist/graph-rSA-aI4s.cjs +0 -2
- package/dist/index-BDajGLDt.cjs.map +0 -1
- package/dist/index-caKpab-1.js.map +0 -1
- package/dist/info-NVLQJR56-C-3b-i8R.cjs.map +0 -1
- package/dist/info-NVLQJR56-Ce9da4xt.js +0 -6
- package/dist/info-NVLQJR56-Ce9da4xt.js.map +0 -1
- package/dist/infoDiagram-WHAUD3N6-BfyHsG_R.cjs +0 -3
- package/dist/infoDiagram-WHAUD3N6-DVElQ6XQ.js +0 -25
- package/dist/layout-C9eO5Nxr.cjs +0 -2
- package/dist/linear-jbmUvWu5.cjs +0 -2
- package/dist/packet-BFZMPI3H-DTLQ86Yd.js +0 -6
- package/dist/packet-BFZMPI3H-DTLQ86Yd.js.map +0 -1
- package/dist/packet-BFZMPI3H-UUkqxMwx.cjs.map +0 -1
- package/dist/pie-7BOR55EZ-6cd-l72R.cjs.map +0 -1
- package/dist/pie-7BOR55EZ-BPhniwXQ.js +0 -6
- package/dist/pie-7BOR55EZ-BPhniwXQ.js.map +0 -1
- package/dist/radar-NHE76QYJ-BEdxIU3J.cjs.map +0 -1
- package/dist/radar-NHE76QYJ-BGiQ-836.js +0 -6
- package/dist/radar-NHE76QYJ-BGiQ-836.js.map +0 -1
- package/dist/sankeyDiagram-TZEHDZUN-BRlPGxPq.cjs +0 -11
- package/dist/src/plugins/remark-import-directive.async.d.ts.map +0 -1
- package/dist/stateDiagram-FKZM4ZOC-Er8_CIvC.cjs +0 -2
- package/dist/stateDiagram-v2-4FDKWEC3-BYc_jC0C.cjs +0 -2
- package/dist/treemap-KMMF4GRG-YLlgu5sk.cjs.map +0 -1
- package/dist/treemap-KMMF4GRG-xH3W-9YM.js +0 -6
- package/dist/treemap-KMMF4GRG-xH3W-9YM.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.server.cjs","sources":["../src/plugins/remark-import-directive.async.server.ts","../src/plugins/transformUri.async.server.ts","../src/plugins/remark-resolve-uri.async.ts","../src/plugins/remark-auto-heading-id.ts","../src/plugins/remark-mark.ts","../src/plugins/remark-subscript.ts","../src/plugins/remark-superscript.ts","../src/plugins/remark-table-merge.ts","../src/plugins/remark-unwrap-block-html.ts","../src/remarkProcessor.server.ts"],"sourcesContent":["/**\n * @file This file defines a remark plugin to handle `@import` directives in Markdown.\n * @brief このファイルは、Markdown 内の `@import` ディレクティブを処理するための remark プラグインを定義します。\n */\nimport fs from \"node:fs/promises\"\nimport path from \"node:path\"\nimport type { Root } from \"mdast\"\nimport type { Processor } from \"unified\"\nimport { visit } from \"unist-util-visit\"\nimport { Logger } from \"../utils/simple-logger\"\n\ntype ParentNodeWithChildren = {\n children: unknown[]\n}\n\nconst importRegex = /<!--\\s+@import\\s+\"(.+?)\"\\s+-->/\n\n/**\n * A remark plugin to support `@import` directives in Markdown.\n * This allows importing content from other Markdown files.\n * Markdown の `@import` ディレクティブをサポートする remark プラグイン。\n * これにより、他の Markdown ファイルからコンテンツをインポート可能。\n *\n * @param this The remark processor instance. / remark プロセッサーのインスタンス。\n * @param options Options for the plugin. / プラグインのオプション。\n * @param options.markdownFilePath The path to the Markdown file being processed. / 処理対象の Markdown ファイルへのパス。\n */\nexport function remarkImportDirective(this: Processor, options: { markdownFilePath: string }) {\n return async (tree: Root): Promise<void> => {\n const { markdownFilePath } = options\n const parentDir = path.dirname(markdownFilePath)\n\n // すべてのインポートディレクティブを収集\n const imports: { parent: ParentNodeWithChildren; index: number; absolutePath: string }[] = []\n visit(tree, \"html\", (node, index, parent) => {\n if (!parent || typeof index !== \"number\") {\n return\n }\n\n const match = node.value.match(importRegex)\n if (!match) {\n return\n }\n\n const importPath = match[1]\n const absolutePath = path.resolve(parentDir, importPath)\n if (Array.isArray((parent as { children?: unknown[] }).children)) {\n imports.push({ parent: parent as ParentNodeWithChildren, index, absolutePath })\n }\n })\n\n if (imports.length === 0) {\n return\n }\n\n // すべてのファイルを読み込み、解析\n const parsedTrees = await Promise.all(\n imports.map(async ({ absolutePath }) => {\n try {\n const fileContent = await fs.readFile(absolutePath, \"utf-8\")\n return this.parse(fileContent) as Root\n } catch (error) {\n if (error && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n Logger.warn(`[remark-import-directive] Import file not found: ${absolutePath}`)\n } else {\n Logger.error(`[remark-import-directive] Error processing import: ${absolutePath}`, error)\n }\n return null // エラー時は null を返却\n }\n }),\n )\n\n // ツリー内のノードを後方から置換\n for (let i = imports.length - 1; i >= 0; i--) {\n const { parent, index } = imports[i]\n const newTree = parsedTrees[i]\n\n if (newTree?.children && Array.isArray(newTree.children)) {\n parent.children.splice(index, 1, ...newTree.children)\n }\n }\n }\n}\n","/**\n * @file Async version of transformUri for file existence validation.\n * @brief ファイル存在確認を含む transformUri の非同期版。\n */\nimport fs from \"node:fs/promises\"\nimport path from \"node:path\"\nimport urlJoin from \"url-join\"\nimport { Logger } from \"../utils/simple-logger\"\n\n// RFC 3986 URI scheme regex\nconst URI_SCHEME_REGEX = /^[a-z][a-z0-9+.-]*:/\n\n/**\n * Async version of transformUri that validates file existence.\n * ファイル存在確認を行う transformUri の非同期版。\n *\n * @param uri The URI to transform. / 変換対象の URI。\n * @param isImage Whether this is an image URI. / 画像 URI かどうか。\n * @param markdownFilePath Path to the markdown file. / Markdown ファイルのパス。\n * @param workspaceRoot Workspace root directory. / ワークスペースのルートディレクトリ。\n * @param validateExistence Whether to validate file existence. / ファイル存在確認を行うかどうか。\n * @returns Promise resolving to the transformed URI. / 変換された URI を返す Promise。\n */\nexport const transformUriAsync = async (uri: string, isImage: boolean, markdownFilePath: string, workspaceRoot: string, validateExistence = false): Promise<string> => {\n if (!uri) {\n return \"\"\n }\n\n // 1. 絶対URL (http, https, mailto, tel) はそのまま返す\n if (URI_SCHEME_REGEX.test(uri)) {\n const protocol = uri.substring(0, uri.indexOf(\":\")).toLowerCase()\n if ([\"http\", \"https\", \"mailto\", \"tel\", \"file\"].includes(protocol)) {\n return uri\n }\n }\n\n // 2. アンカーリンク (#fragment) はそのまま返す\n if (uri.startsWith(\"#\")) {\n return uri\n }\n\n // 3. ルート相対パス (/) はそのまま返す\n if (uri.startsWith(\"/\")) {\n return uri\n }\n\n // 4. 相対パスをプロジェクトルートからのパスとして解決する\n const decodedUri = decodeURIComponent(uri)\n const markdownDir = path.dirname(markdownFilePath)\n const projectRelativePath = path.normalize(path.join(markdownDir, decodedUri))\n\n // セキュリティチェック\n const absolutePath = path.resolve(workspaceRoot, projectRelativePath)\n if (!absolutePath.startsWith(workspaceRoot) || projectRelativePath.startsWith(\"..\")) {\n Logger.error(`Security Alert: Attempt to access file outside project root: ${absolutePath}`)\n return \"\"\n }\n\n // ファイル存在確認(オプション)\n if (validateExistence) {\n try {\n await fs.access(absolutePath)\n } catch {\n Logger.warn(`File not found: ${absolutePath}`)\n return \"\"\n }\n }\n\n const pathForEncoding = projectRelativePath.replace(/\\\\/g, \"/\")\n\n if (isImage) {\n return urlJoin(\"/assets/\", pathForEncoding)\n }\n return `?filePath=${encodeURIComponent(pathForEncoding)}`\n}\n","/**\n * @file Async version of remark-resolve-uri plugin.\n * @brief URI 解決プラグインの非同期版。\n */\nimport * as cheerio from \"cheerio\"\nimport type { Html, Image, Link, Root } from \"mdast\"\nimport { visit } from \"unist-util-visit\"\nimport { Logger } from \"../utils/simple-logger\"\nimport { transformUriAsync } from \"./transformUri.async.server\"\n\ninterface Options {\n markdownFilePath: string\n workspaceRoot: string\n validateExistence?: boolean\n}\n\n/**\n * An async remark plugin to resolve image and link URIs with optional file validation.\n * ファイル検証オプション付きで画像とリンクの URI を解決する非同期 remark プラグイン。\n */\nexport function remarkResolveUriAsync(options: Options) {\n return async (tree: Root): Promise<void> => {\n if (!(options?.markdownFilePath && options?.workspaceRoot)) {\n Logger.warn(\"remark-resolve-uri-async: markdownFilePath and workspaceRoot are required. Skipping URI resolution.\")\n return\n }\n\n // すべての画像とリンクノードを収集\n const uriNodes: Array<{ node: Image | Link; isImage: boolean }> = []\n const htmlNodes: Array<Html> = []\n\n visit(tree, [\"image\", \"link\", \"html\"], (node) => {\n if (node.type === \"html\") {\n htmlNodes.push(node as Html)\n } else {\n const targetNode = node as Image | Link\n if (targetNode.url) {\n uriNodes.push({ node: targetNode, isImage: targetNode.type === \"image\" })\n }\n }\n })\n\n // 並列でURI変換を実行 (標準Markdownノード)\n const transformPromises = uriNodes.map(async ({ node, isImage }) => {\n const transformedUri = await transformUriAsync(node.url, isImage, options.markdownFilePath, options.workspaceRoot, options.validateExistence)\n node.url = transformedUri\n })\n\n // 並列でURI変換を実行 (HTMLノード内の属性)\n const htmlTransformPromises = htmlNodes.map(async (node) => {\n // HTMLフラグメントとしてロード (isDocument=false)\n const $ = cheerio.load(node.value, null, false)\n let modified = false\n\n // imgタグのsrc属性を変換\n const imgTags = $(\"img\").toArray()\n for (const img of imgTags) {\n const src = $(img).attr(\"src\")\n if (src) {\n const transformed = await transformUriAsync(src, true, options.markdownFilePath, options.workspaceRoot, options.validateExistence)\n if (transformed !== src) {\n $(img).attr(\"src\", transformed)\n modified = true\n }\n }\n }\n\n // aタグのhref属性を変換\n const aTags = $(\"a\").toArray()\n for (const a of aTags) {\n const href = $(a).attr(\"href\")\n if (href) {\n const transformed = await transformUriAsync(href, false, options.markdownFilePath, options.workspaceRoot, options.validateExistence)\n if (transformed !== href) {\n $(a).attr(\"href\", transformed)\n modified = true\n }\n }\n }\n\n if (modified) {\n // 変更があれば node.value を更新\n // html() はエンコードされた実体を返す可能性があるが、HTMLノードとしては許容される\n const newHtml = $.html()\n if (newHtml) {\n node.value = newHtml\n }\n }\n })\n\n await Promise.all([...transformPromises, ...htmlTransformPromises])\n }\n}\n","import Slugger from \"github-slugger\"\nimport type { Heading, Root } from \"mdast\"\nimport { visit } from \"unist-util-visit\"\nimport { extractHeadingPlainText } from \"../utils/headingText.ts\"\n\ntype HeadingWithHProperties = Heading & {\n data?: Heading[\"data\"] & {\n hProperties?: {\n id?: string\n }\n }\n}\n\n/**\n * A remark plugin to automatically add IDs to headings.\n * This ensures that all headings have an ID, which is useful for table of contents.\n *\n * すべての見出しに ID を自動的に追加する, remark プラグイン。\n * これにより、すべての見出しに ID が付与され、目次などで利用できるようになります。\n */\nexport const remarkAutoHeadingId = () => {\n return (tree: Root) => {\n const slugger = new Slugger()\n visit(tree, \"heading\", (node: Heading) => {\n const headingNode = node as HeadingWithHProperties\n\n // Already has an ID (e.g. from remark-custom-heading-id)\n if (headingNode.data?.hProperties?.id) {\n // Ensure slugger knows about this ID to avoid duplicates\n // Note: slugger.slug() generates unique slug, so if we pass existing ID, it just returns it (if unique) or appends -1\n // But we want to mark it as used.\n // However, github-slugger doesn't have a specific \"markAsUsed\" method except calling slug()\n slugger.slug(headingNode.data.hProperties.id)\n return\n }\n\n const text = extractHeadingPlainText(node.children)\n const id = slugger.slug(text)\n\n if (!headingNode.data) {\n headingNode.data = {}\n }\n if (!headingNode.data.hProperties) {\n headingNode.data.hProperties = {}\n }\n headingNode.data.hProperties.id = id\n })\n }\n}\n","/**\n * This module provides a remark plugin that converts ==text== syntax into mark nodes.\n *\n * ==text== 構文を mark ノードへ変換する remark プラグインの提供。\n */\nimport type { PhrasingContent, Root, Text } from \"mdast\"\nimport type { Plugin } from \"unified\"\nimport { visit } from \"unist-util-visit\"\n\n/**\n * Represents a marked inline node.\n * ハイライトされたインラインノードを表す型。\n */\nexport interface Mark {\n type: \"mark\"\n children: PhrasingContent[]\n}\n\ndeclare module \"mdast\" {\n interface PhrasingContentMap {\n mark: Mark\n }\n}\n\n/**\n * Parses text and splits into plain/mark nodes by ==...== markers.\n * ==...== マーカーでプレーン文字列と mark ノードへ分割する処理。\n */\nconst parseMarkNodes = (value: string): PhrasingContent[] => {\n const nodes: PhrasingContent[] = []\n let buffer = \"\"\n let index = 0\n\n const pushText = (text: string): void => {\n if (text.length === 0) {\n return\n }\n nodes.push({ type: \"text\", value: text })\n }\n\n while (index < value.length) {\n const current = value[index]\n\n if (current === \"\\\\\" && index + 2 < value.length && value[index + 1] === \"=\" && value[index + 2] === \"=\") {\n buffer += \"==\"\n index += 3\n continue\n }\n\n if (!(current === \"=\" && index + 1 < value.length && value[index + 1] === \"=\")) {\n buffer += current\n index += 1\n continue\n }\n\n let markerRunLength = 0\n while (index + markerRunLength < value.length && value[index + markerRunLength] === \"=\") {\n markerRunLength += 1\n }\n if (markerRunLength % 2 === 1) {\n buffer += \"=\"\n index += 1\n continue\n }\n\n let closeIndex = index + 2\n let found = false\n while (closeIndex < value.length - 1) {\n if (value[closeIndex] === \"\\\\\" && closeIndex + 2 < value.length && value[closeIndex + 1] === \"=\" && value[closeIndex + 2] === \"=\") {\n closeIndex += 3\n continue\n }\n if (value[closeIndex] === \"=\" && value[closeIndex + 1] === \"=\") {\n found = true\n break\n }\n closeIndex += 1\n }\n\n if (!found) {\n buffer += \"==\"\n index += 2\n continue\n }\n\n const content = value.slice(index + 2, closeIndex)\n if (content.length === 0) {\n buffer += \"====\"\n index = closeIndex + 2\n continue\n }\n\n pushText(buffer)\n buffer = \"\"\n\n nodes.push({\n type: \"mark\",\n children: [{ type: \"text\", value: content }],\n })\n\n index = closeIndex + 2\n }\n\n pushText(buffer)\n return nodes\n}\n\n/**\n * Transforms text nodes that include ==...== markers into mark inline nodes.\n * ==...== を含む text ノードを mark インラインノードへ変換する処理。\n */\nexport const remarkMark: Plugin<[], Root> = () => {\n return (tree: Root) => {\n visit(tree, \"text\", (node: Text, index, parent) => {\n if (!parent || index === undefined) {\n return\n }\n if (!node.value.includes(\"==\")) {\n return\n }\n\n const nextNodes = parseMarkNodes(node.value)\n if (nextNodes.length === 1 && nextNodes[0].type === \"text\" && (nextNodes[0] as Text).value === node.value) {\n return\n }\n\n parent.children.splice(index, 1, ...nextNodes)\n })\n }\n}\n","/**\n * This module provides a remark plugin that converts ~text~ syntax into subscript nodes.\n *\n * ~text~ 構文を subscript ノードへ変換する remark プラグインの提供。\n */\nimport type { PhrasingContent, Root, Text } from \"mdast\"\nimport type { Plugin } from \"unified\"\nimport { visit } from \"unist-util-visit\"\n\nconst UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,./:;<=>?@[\\]^_`{|}~-])/g\nconst UNESCAPED_WHITESPACE_RE = /(^|[^\\\\])(\\\\\\\\)*\\s/\n\n/**\n * Represents a subscript inline node.\n * 下付き文字のインラインノードを表す型。\n */\nexport interface Subscript {\n type: \"subscript\"\n children: PhrasingContent[]\n}\n\ndeclare module \"mdast\" {\n interface PhrasingContentMap {\n subscript: Subscript\n }\n}\n\n/**\n * Parses text and splits into plain/subscript nodes by ~...~ markers.\n * ~...~ マーカーでプレーン文字列と下付き文字ノードへ分割する処理。\n */\nconst parseSubscriptNodes = (value: string): PhrasingContent[] => {\n const nodes: PhrasingContent[] = []\n let buffer = \"\"\n let index = 0\n\n const pushText = (text: string): void => {\n if (text.length === 0) {\n return\n }\n nodes.push({ type: \"text\", value: text })\n }\n\n while (index < value.length) {\n const current = value[index]\n\n if (current === \"\\\\\" && index + 1 < value.length && value[index + 1] === \"~\") {\n buffer += \"~\"\n index += 2\n continue\n }\n\n if (current !== \"~\") {\n buffer += current\n index += 1\n continue\n }\n\n if (index + 1 < value.length && value[index + 1] === \"~\") {\n buffer += \"~~\"\n index += 2\n continue\n }\n\n let closeIndex = index + 1\n let found = false\n while (closeIndex < value.length) {\n if (value[closeIndex] === \"\\\\\" && closeIndex + 1 < value.length) {\n closeIndex += 2\n continue\n }\n if (value[closeIndex] === \"~\") {\n if (closeIndex + 1 < value.length && value[closeIndex + 1] === \"~\") {\n closeIndex += 2\n continue\n }\n found = true\n break\n }\n closeIndex += 1\n }\n\n if (!found) {\n buffer += \"~\"\n index += 1\n continue\n }\n\n const content = value.slice(index + 1, closeIndex)\n if (content.length === 0) {\n buffer += \"~~\"\n index = closeIndex + 1\n continue\n }\n\n if (UNESCAPED_WHITESPACE_RE.test(content)) {\n buffer += \"~\"\n index += 1\n continue\n }\n\n pushText(buffer)\n buffer = \"\"\n\n nodes.push({\n type: \"subscript\",\n children: [{ type: \"text\", value: content.replace(UNESCAPE_RE, \"$1\") }],\n })\n\n index = closeIndex + 1\n }\n\n pushText(buffer)\n return nodes\n}\n\n/**\n * Transforms text nodes that include ~...~ markers into subscript inline nodes.\n * ~...~ を含む text ノードを subscript インラインノードへ変換する処理。\n */\nexport const remarkSubscript: Plugin<[], Root> = () => {\n return (tree: Root) => {\n visit(tree, \"text\", (node: Text, index, parent) => {\n if (!parent || index === undefined) {\n return\n }\n if (!node.value.includes(\"~\")) {\n return\n }\n\n const nextNodes = parseSubscriptNodes(node.value)\n if (nextNodes.length === 1 && nextNodes[0].type === \"text\" && (nextNodes[0] as Text).value === node.value) {\n return\n }\n\n parent.children.splice(index, 1, ...nextNodes)\n })\n }\n}\n","/**\n * This module provides a remark plugin that converts ^text^ syntax into superscript nodes.\n *\n * ^text^ 構文を superscript ノードへ変換する remark プラグインの提供。\n */\nimport type { PhrasingContent, Root, Text } from \"mdast\"\nimport type { Plugin } from \"unified\"\nimport { visit } from \"unist-util-visit\"\n\nconst UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,./:;<=>?@[\\]^_`{|}~-])/g\nconst UNESCAPED_WHITESPACE_RE = /(^|[^\\\\])(\\\\\\\\)*\\s/\n\n/**\n * Represents a superscript inline node.\n * 上付き文字のインラインノードを表す型。\n */\nexport interface Superscript {\n type: \"superscript\"\n children: PhrasingContent[]\n}\n\ndeclare module \"mdast\" {\n interface PhrasingContentMap {\n superscript: Superscript\n }\n}\n\n/**\n * Parses text and splits into plain/superscript nodes by ^...^ markers.\n * ^...^ マーカーでプレーン文字列と上付き文字ノードへ分割する処理。\n */\nconst parseSuperscriptNodes = (value: string): PhrasingContent[] => {\n const nodes: PhrasingContent[] = []\n let buffer = \"\"\n let index = 0\n\n const pushText = (text: string): void => {\n if (text.length === 0) {\n return\n }\n nodes.push({ type: \"text\", value: text })\n }\n\n while (index < value.length) {\n const current = value[index]\n\n if (current === \"\\\\\" && index + 1 < value.length && value[index + 1] === \"^\") {\n buffer += \"^\"\n index += 2\n continue\n }\n\n if (current !== \"^\") {\n buffer += current\n index += 1\n continue\n }\n\n let closeIndex = index + 1\n let found = false\n while (closeIndex < value.length) {\n if (value[closeIndex] === \"\\\\\" && closeIndex + 1 < value.length) {\n closeIndex += 2\n continue\n }\n if (value[closeIndex] === \"^\") {\n found = true\n break\n }\n closeIndex += 1\n }\n\n if (!found) {\n buffer += \"^\"\n index += 1\n continue\n }\n\n const content = value.slice(index + 1, closeIndex)\n if (content.length === 0) {\n buffer += \"^^\"\n index = closeIndex + 1\n continue\n }\n\n if (UNESCAPED_WHITESPACE_RE.test(content)) {\n buffer += \"^\"\n index += 1\n continue\n }\n\n pushText(buffer)\n buffer = \"\"\n\n nodes.push({\n type: \"superscript\",\n children: [{ type: \"text\", value: content.replace(UNESCAPE_RE, \"$1\") }],\n })\n\n index = closeIndex + 1\n }\n\n pushText(buffer)\n return nodes\n}\n\n/**\n * Transforms text nodes that include ^...^ markers into superscript inline nodes.\n * ^...^ を含む text ノードを superscript インラインノードへ変換する処理。\n */\nexport const remarkSuperscript: Plugin<[], Root> = () => {\n return (tree: Root) => {\n visit(tree, \"text\", (node: Text, index, parent) => {\n if (!parent || index === undefined) {\n return\n }\n if (!node.value.includes(\"^\")) {\n return\n }\n\n const nextNodes = parseSuperscriptNodes(node.value)\n if (nextNodes.length === 1 && nextNodes[0].type === \"text\" && (nextNodes[0] as Text).value === node.value) {\n return\n }\n\n parent.children.splice(index, 1, ...nextNodes)\n })\n }\n}\n","/**\n * This module provides a remark plugin that supports extended table merge markers.\n * Cells with only \">\" are merged into the nearest right non-marker cell (colspan),\n * and cells with only \"^\" are merged into the nearest upper non-marker cell (rowspan).\n *\n * 拡張テーブル結合マーカーを処理する remark プラグインの提供。\n * \">\" のみのセルは右方向の直近の通常セルに水平結合 (colspan) し、\n * \"^\" のみのセルは上方向の直近の通常セルに垂直結合 (rowspan) する。\n */\nimport type { Root, Table, TableCell, TableRow } from \"mdast\"\nimport type { Plugin } from \"unified\"\nimport { visit } from \"unist-util-visit\"\n\ntype MergeMarker = \">\" | \"^\" | null\n\ntype TableCellMergeHProperties = {\n colSpan?: number\n rowSpan?: number\n merged?: boolean\n textAlign?: string\n}\n\ntype TableCellMergeData = {\n hProperties?: TableCellMergeHProperties\n}\n\n/**\n * Extracts plain text from a table cell.\n * テーブルセルからプレーンテキストを抽出する処理。\n */\nconst getCellPlainText = (cell: TableCell): string => {\n return cell.children\n .map((child) => {\n if (child.type === \"text\") {\n return child.value\n }\n return \"\"\n })\n .join(\"\")\n}\n\n/**\n * Detects merge marker type from a table cell.\n * テーブルセルから結合マーカー種別を判定する処理。\n */\nconst getMergeMarker = (cell: TableCell): MergeMarker => {\n const text = getCellPlainText(cell).trim()\n if (text === \">\") {\n return \">\"\n }\n if (text === \"^\") {\n return \"^\"\n }\n return null\n}\n\n/**\n * Gets merge metadata from a table cell.\n * テーブルセルの結合メタデータを取得する処理。\n */\nconst getCellMergeData = (cell: TableCell): TableCellMergeData => {\n const data = (cell.data ?? {}) as TableCellMergeData\n return data\n}\n\n/**\n * Ensures merge hProperties on a table cell.\n * テーブルセルの結合 hProperties を初期化して返す処理。\n */\nconst ensureMergeHProperties = (cell: TableCell): TableCellMergeHProperties => {\n const data = getCellMergeData(cell)\n if (!data.hProperties) {\n data.hProperties = {}\n }\n if (!cell.data) {\n cell.data = data\n }\n return data.hProperties\n}\n\n/**\n * Marks a cell as merged and hidden from rendering.\n * セルを結合済みとして描画対象外にマークする処理。\n */\nconst markCellMerged = (cell: TableCell): void => {\n const hProperties = ensureMergeHProperties(cell)\n hProperties.merged = true\n}\n\n/**\n * Increments colSpan for a merge target cell.\n * 結合先セルの colSpan を加算する処理。\n */\nconst incrementColSpan = (cell: TableCell): void => {\n const hProperties = ensureMergeHProperties(cell)\n hProperties.colSpan = (hProperties.colSpan ?? 1) + 1\n}\n\n/**\n * Increments rowSpan for a merge target cell.\n * 結合先セルの rowSpan を加算する処理。\n */\nconst incrementRowSpan = (cell: TableCell): void => {\n const hProperties = ensureMergeHProperties(cell)\n hProperties.rowSpan = (hProperties.rowSpan ?? 1) + 1\n}\n\n/**\n * Finds nearest right merge target for a \">\" marker.\n * \">\" マーカーの右方向の結合先セルを探索する処理。\n */\nconst findRightMergeTarget = (row: TableRow, fromCellIndex: number): TableCell | null => {\n for (let index = fromCellIndex + 1; index < row.children.length; index += 1) {\n const candidate = row.children[index]\n if (!candidate) {\n continue\n }\n if (getMergeMarker(candidate) !== null) {\n continue\n }\n return candidate\n }\n return null\n}\n\n/**\n * Applies horizontal merge markers for all rows in a table.\n * テーブル全行に対して水平結合マーカー処理を適用する処理。\n */\nconst applyHorizontalMerges = (rows: TableRow[], align?: (string | null)[] | null): (TableCell | null)[][] => {\n const anchorsByRow: (TableCell | null)[][] = []\n\n for (const row of rows) {\n const rowAnchors: (TableCell | null)[] = []\n for (let columnIndex = row.children.length - 1; columnIndex >= 0; columnIndex -= 1) {\n const cell = row.children[columnIndex]\n if (!cell || getMergeMarker(cell) !== \">\") {\n rowAnchors[columnIndex] = cell ?? null\n continue\n }\n\n const target = findRightMergeTarget(row, columnIndex)\n if (!target) {\n rowAnchors[columnIndex] = cell\n continue\n }\n\n incrementColSpan(target)\n markCellMerged(cell)\n const hProperties = ensureMergeHProperties(target)\n const columnAlign = align?.[columnIndex] ?? undefined\n if (columnAlign) {\n hProperties.textAlign = columnAlign\n }\n rowAnchors[columnIndex] = target\n }\n\n anchorsByRow.push(rowAnchors)\n }\n\n return anchorsByRow\n}\n\n/**\n * Applies vertical merge markers for all rows in a table.\n * テーブル全行に対して垂直結合マーカー処理を適用する処理。\n */\nconst applyVerticalMerges = (rows: TableRow[], anchorsByRow: (TableCell | null)[][]): void => {\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) {\n const row = rows[rowIndex]\n for (let columnIndex = 0; columnIndex < row.children.length; columnIndex += 1) {\n const cell = row.children[columnIndex]\n if (!cell || getMergeMarker(cell) !== \"^\") {\n continue\n }\n\n const target = rowIndex > 0 ? (anchorsByRow[rowIndex - 1]?.[columnIndex] ?? null) : null\n if (!target) {\n continue\n }\n\n incrementRowSpan(target)\n markCellMerged(cell)\n if (anchorsByRow[rowIndex]) {\n anchorsByRow[rowIndex][columnIndex] = target\n }\n }\n }\n}\n\n/**\n * A remark plugin that transforms custom table merge markers into merge metadata.\n * カスタムテーブル結合マーカーを結合メタデータに変換する remark プラグイン。\n */\nexport const remarkTableMerge: Plugin<[], Root> = () => {\n return (tree: Root) => {\n visit(tree, \"table\", (tableNode: Table) => {\n const rows = tableNode.children\n const anchorsByRow = applyHorizontalMerges(rows, tableNode.align)\n applyVerticalMerges(rows, anchorsByRow)\n })\n }\n}\n","import type { Root, RootContent } from \"mdast\"\nimport type { Plugin } from \"unified\"\n\n/**\n * List of block elements that we want to structurally group.\n * Including 'div', 'section', 'article', etc.\n */\nconst BLOCK_TAGS = [\"address\", \"article\", \"aside\", \"blockquote\", \"details\", \"dialog\", \"dd\", \"div\", \"dl\", \"dt\", \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\", \"header\", \"hgroup\", \"main\", \"nav\", \"ol\", \"pre\", \"section\", \"table\", \"ul\"]\n\ntype ParsedTag = {\n tagName: string\n attributes: Record<string, string | number | boolean>\n}\n\n/**\n * Parses an opening tag string (e.g., <div class=\"foo\">) to extract tag name and attributes.\n * Returns null if it matches nothing or is not a target block tag.\n */\nconst parseOpeningTag = (value: string): ParsedTag | null => {\n // Regex to capture tag name and potential attributes part\n // e.g. <div class=\"abc\"> -> Match: <div class=\"abc\">, Group 1: div, Group 2: class=\"abc\"\n const match = value.match(/^\\s*<([a-z0-9-]+)([^>]*)>\\s*$/i)\n if (!match) return null\n\n const tagName = match[1].toLowerCase()\n if (!BLOCK_TAGS.includes(tagName)) return null\n\n // Simple attribute parser\n const attributes: Record<string, string> = {}\n const attrStr = match[2]\n\n // Regex to match attribute key=\"value\" or key='value' or key=value or key\n // Group 1: key\n // Group 2: value (double quote)\n // Group 3: value (single quote)\n // Group 4: value (no quote)\n const attrRegex = /([a-z0-9:-]+)(?:=(?:\"([^\"]*)\"|'([^']*)'|([^\\s>]+)))?/gi\n\n let attrMatch: RegExpExecArray | null\n // biome-ignore lint/suspicious/noAssignInExpressions: loop required for regex exec\n while ((attrMatch = attrRegex.exec(attrStr)) !== null) {\n const key = attrMatch[1]\n // If value is undefined, it's a boolean attribute (though in HTML usually key=\"\")\n // We'll treat empty string as value for now.\n const val = attrMatch[2] ?? attrMatch[3] ?? attrMatch[4] ?? \"\"\n attributes[key] = val\n }\n\n return { tagName, attributes }\n}\n\n/**\n * Checks if the string is a closing tag for the specified tagName.\n */\nconst isClosingTag = (value: string, tagName: string): boolean => {\n // e.g. </div> or </ div>\n // Escape standard regex characters if usage gets complicated, but simple tag names are safe.\n return new RegExp(`^\\\\s*<\\\\/\\\\s*${tagName}\\\\s*>\\\\s*$`, \"i\").test(value)\n}\n\n/**\n * Helper function to transform children nodes recursively.\n * Defined outside the plugin closure to be clean, but needs recursive capability.\n */\n// biome-ignore lint/suspicious/noExplicitAny: generic AST transformation to handle custom nodes not in mdast types\nconst transformChildren = (children: any[]): any[] => {\n // biome-ignore lint/suspicious/noExplicitAny: generic AST transformation\n const newChildren: any[] = []\n let i = 0\n\n while (i < children.length) {\n const node = children[i] as RootContent\n\n // Check if node is an HTML node and an opening block tag\n if (node.type === \"html\") {\n const parsed = parseOpeningTag(node.value)\n if (parsed) {\n // Found opening tag, search for matching closing tag\n // We need to find the matching closing tag at the SAME nesting level.\n // However, 'children' here is a flat list of siblings in MD AST terms.\n // So we scan forward.\n\n let j = i + 1\n let balance = 1\n let foundIndex = -1\n\n // Search forward for the closing tag\n while (j < children.length) {\n const nextNode = children[j] as RootContent\n\n if (nextNode.type === \"html\") {\n const nextOpening = parseOpeningTag(nextNode.value)\n\n if (nextOpening && nextOpening.tagName === parsed.tagName) {\n // Found a nested opening tag of the same type\n balance++\n } else if (isClosingTag(nextNode.value, parsed.tagName)) {\n // Found a closing tag\n balance--\n if (balance === 0) {\n foundIndex = j\n break\n }\n }\n }\n j++\n }\n\n if (foundIndex !== -1) {\n // We found a matching closing tag at foundIndex.\n // Everything between i+1 and foundIndex-1 is content.\n const contentValues = children.slice(i + 1, foundIndex)\n\n // Recursively transform the content inside the block\n const transformedContent = transformChildren(contentValues)\n\n // Create container node\n newChildren.push({\n type: \"html-block-container\",\n data: {\n tagName: parsed.tagName,\n properties: parsed.attributes,\n },\n children: transformedContent,\n })\n\n // Skip the processed nodes (content + closing tag)\n // i is currently at opening tag. foundIndex is at closing tag.\n // Next iteration should start after closing tag.\n i = foundIndex + 1\n continue\n }\n // If loop finished without finding closing tag (foundIndex === -1),\n // we treat the opening tag as a regular HTML node and proceed.\n }\n }\n\n // Check if node is a Parent (has children)\n // biome-ignore lint/suspicious/noExplicitAny: generic AST traversal\n if (\"children\" in node && Array.isArray((node as any).children)) {\n // biome-ignore lint/suspicious/noExplicitAny: generic AST traversal\n ;(node as any).children = transformChildren((node as any).children)\n }\n\n newChildren.push(node)\n i++\n }\n\n return newChildren\n}\n\n/**\n * Remark plugin to group nodes between opening and closing HTML block tags into a container node.\n * This solves the issue where markdown parsers split HTML blocks into start content end, breaking structure.\n */\nexport const remarkUnwrapBlockHtml: Plugin<[], Root> = () => {\n return (tree: Root) => {\n if (tree.children) {\n tree.children = transformChildren(tree.children)\n }\n }\n}\n","import type { Root } from \"mdast\"\nimport { remark } from \"remark\"\nimport remarkBreaks from \"remark-breaks\"\nimport remarkFrontmatter from \"remark-frontmatter\"\nimport remarkGfm from \"remark-gfm\"\nimport remarkMath from \"remark-math\"\nimport { remarkAutoHeadingId } from \"./plugins/remark-auto-heading-id.ts\"\nimport { remarkBlockLink } from \"./plugins/remark-block-link.ts\"\nimport { remarkBlockLinkMetadata } from \"./plugins/remark-block-link-metadata.ts\"\nimport { remarkCustomHeadingId } from \"./plugins/remark-custom-heading-id.ts\"\nimport { remarkFootnoteBackLink } from \"./plugins/remark-footnote-back-link.ts\"\nimport { remarkHtmlAnchorToLink } from \"./plugins/remark-html-anchor-to-link.ts\"\nimport { remarkHtmlInHtml } from \"./plugins/remark-html-in-html.ts\"\nimport { remarkImageSize } from \"./plugins/remark-image-size.ts\"\nimport { remarkImportDirective } from \"./plugins/remark-import-directive.async.server.ts\"\nimport { remarkMark } from \"./plugins/remark-mark.ts\"\nimport { remarkParentNode } from \"./plugins/remark-parent-node.ts\"\nimport { remarkResolveUriAsync } from \"./plugins/remark-resolve-uri.async.ts\"\nimport { remarkSubscript } from \"./plugins/remark-subscript.ts\"\nimport { remarkSuperscript } from \"./plugins/remark-superscript.ts\"\nimport { remarkTableMerge } from \"./plugins/remark-table-merge.ts\"\nimport { remarkTwitterEmbed } from \"./plugins/remark-twitter-embed.ts\"\nimport { remarkUnwrapBlockHtml } from \"./plugins/remark-unwrap-block-html.ts\"\nimport { remarkYouTubeEmbed } from \"./plugins/remark-youtube-embed.ts\"\nimport { remarkZennMessage } from \"./plugins/remark-zenn-message.ts\"\n\nexport const parseMarkdown = async (markdownText: string, markdownFilePath: string, workspaceRoot: string): Promise<Root> => {\n const processor = remark()\n .use(remarkHtmlInHtml)\n .use(remarkUnwrapBlockHtml)\n .use(remarkHtmlAnchorToLink)\n .use(remarkParentNode)\n .use(remarkFootnoteBackLink)\n .use(remarkFrontmatter)\n .use(remarkBreaks)\n .use(remarkImageSize)\n .use(remarkZennMessage)\n .use(remarkMath)\n .use(remarkImportDirective, { markdownFilePath })\n .use(remarkTwitterEmbed)\n .use(remarkYouTubeEmbed)\n .use(remarkBlockLink) // remarkTwitterEmbed, remarkYouTubeEmbed より後に設定\n .use(remarkBlockLinkMetadata) // ブロックリンクノードの処理後にメタデータを付加\n .use(remarkCustomHeadingId)\n .use(remarkAutoHeadingId)\n .use(remarkGfm, { singleTilde: false })\n .use(remarkTableMerge)\n .use(remarkSuperscript)\n .use(remarkSubscript)\n .use(remarkMark)\n .use(remarkResolveUriAsync, { markdownFilePath, workspaceRoot, validateExistence: true })\n\n const parsed = processor.parse(markdownText)\n const mdastRoot = await processor.run(parsed)\n return mdastRoot as Root\n}\n"],"names":["importRegex","remarkImportDirective","options","tree","markdownFilePath","parentDir","path","imports","visit","node","index","parent","match","importPath","absolutePath","parsedTrees","fileContent","fs","error","Logger","i","newTree","URI_SCHEME_REGEX","transformUriAsync","uri","isImage","workspaceRoot","validateExistence","protocol","decodedUri","markdownDir","projectRelativePath","pathForEncoding","urlJoin","remarkResolveUriAsync","uriNodes","htmlNodes","targetNode","transformPromises","transformedUri","htmlTransformPromises","$","cheerio","modified","imgTags","img","src","transformed","aTags","a","href","newHtml","remarkAutoHeadingId","slugger","Slugger","headingNode","text","extractHeadingPlainText","id","parseMarkNodes","value","nodes","buffer","pushText","current","markerRunLength","closeIndex","found","content","remarkMark","nextNodes","UNESCAPE_RE","UNESCAPED_WHITESPACE_RE","parseSubscriptNodes","remarkSubscript","parseSuperscriptNodes","remarkSuperscript","getCellPlainText","cell","child","getMergeMarker","getCellMergeData","ensureMergeHProperties","data","markCellMerged","hProperties","incrementColSpan","incrementRowSpan","findRightMergeTarget","row","fromCellIndex","candidate","applyHorizontalMerges","rows","align","anchorsByRow","rowAnchors","columnIndex","target","columnAlign","applyVerticalMerges","rowIndex","remarkTableMerge","tableNode","BLOCK_TAGS","parseOpeningTag","tagName","attributes","attrStr","attrRegex","attrMatch","key","val","isClosingTag","transformChildren","children","newChildren","parsed","j","balance","foundIndex","nextNode","nextOpening","contentValues","transformedContent","remarkUnwrapBlockHtml","parseMarkdown","markdownText","processor","remark","remarkHtmlInHtml","remarkHtmlAnchorToLink","remarkParentNode","remarkFootnoteBackLink","remarkFrontmatter","remarkBreaks","remarkImageSize","remarkZennMessage","remarkMath","remarkTwitterEmbed","remarkYouTubeEmbed","remarkBlockLink","remarkBlockLinkMetadata","remarkCustomHeadingId","remarkGfm"],"mappings":"0rBAeMA,EAAc,iCAYb,SAASC,EAAuCC,EAAuC,CAC1F,MAAO,OAAOC,GAA8B,CACxC,KAAM,CAAE,iBAAAC,GAAqBF,EACvBG,EAAYC,EAAK,QAAQF,CAAgB,EAGzCG,EAAqF,CAAA,EAkB3F,GAjBAC,EAAAA,MAAML,EAAM,OAAQ,CAACM,EAAMC,EAAOC,IAAW,CACzC,GAAI,CAACA,GAAU,OAAOD,GAAU,SAC5B,OAGJ,MAAME,EAAQH,EAAK,MAAM,MAAMT,CAAW,EAC1C,GAAI,CAACY,EACD,OAGJ,MAAMC,EAAaD,EAAM,CAAC,EACpBE,EAAeR,EAAK,QAAQD,EAAWQ,CAAU,EACnD,MAAM,QAASF,EAAoC,QAAQ,GAC3DJ,EAAQ,KAAK,CAAE,OAAAI,EAA0C,MAAAD,EAAO,aAAAI,EAAc,CAEtF,CAAC,EAEGP,EAAQ,SAAW,EACnB,OAIJ,MAAMQ,EAAc,MAAM,QAAQ,IAC9BR,EAAQ,IAAI,MAAO,CAAE,aAAAO,KAAmB,CACpC,GAAI,CACA,MAAME,EAAc,MAAMC,EAAG,SAASH,EAAc,OAAO,EAC3D,OAAO,KAAK,MAAME,CAAW,CACjC,OAASE,EAAO,CACZ,OAAIA,GAAUA,EAAgC,OAAS,SACnDC,EAAAA,OAAO,KAAK,oDAAoDL,CAAY,EAAE,EAE9EK,EAAAA,OAAO,MAAM,sDAAsDL,CAAY,GAAII,CAAK,EAErF,IACX,CACJ,CAAC,CAAA,EAIL,QAASE,EAAIb,EAAQ,OAAS,EAAGa,GAAK,EAAGA,IAAK,CAC1C,KAAM,CAAE,OAAAT,EAAQ,MAAAD,GAAUH,EAAQa,CAAC,EAC7BC,EAAUN,EAAYK,CAAC,EAEzBC,GAAS,UAAY,MAAM,QAAQA,EAAQ,QAAQ,GACnDV,EAAO,SAAS,OAAOD,EAAO,EAAG,GAAGW,EAAQ,QAAQ,CAE5D,CACJ,CACJ,CCxEA,MAAMC,EAAmB,sBAaZC,EAAoB,MAAOC,EAAaC,EAAkBrB,EAA0BsB,EAAuBC,EAAoB,KAA2B,CACnK,GAAI,CAACH,EACD,MAAO,GAIX,GAAIF,EAAiB,KAAKE,CAAG,EAAG,CAC5B,MAAMI,EAAWJ,EAAI,UAAU,EAAGA,EAAI,QAAQ,GAAG,CAAC,EAAE,YAAA,EACpD,GAAI,CAAC,OAAQ,QAAS,SAAU,MAAO,MAAM,EAAE,SAASI,CAAQ,EAC5D,OAAOJ,CAEf,CAQA,GALIA,EAAI,WAAW,GAAG,GAKlBA,EAAI,WAAW,GAAG,EAClB,OAAOA,EAIX,MAAMK,EAAa,mBAAmBL,CAAG,EACnCM,EAAcxB,EAAK,QAAQF,CAAgB,EAC3C2B,EAAsBzB,EAAK,UAAUA,EAAK,KAAKwB,EAAaD,CAAU,CAAC,EAGvEf,EAAeR,EAAK,QAAQoB,EAAeK,CAAmB,EACpE,GAAI,CAACjB,EAAa,WAAWY,CAAa,GAAKK,EAAoB,WAAW,IAAI,EAC9EZ,OAAAA,EAAAA,OAAO,MAAM,gEAAgEL,CAAY,EAAE,EACpF,GAIX,GAAIa,EACA,GAAI,CACA,MAAMV,EAAG,OAAOH,CAAY,CAChC,MAAQ,CACJK,OAAAA,EAAAA,OAAO,KAAK,mBAAmBL,CAAY,EAAE,EACtC,EACX,CAGJ,MAAMkB,EAAkBD,EAAoB,QAAQ,MAAO,GAAG,EAE9D,OAAIN,EACOQ,EAAQ,WAAYD,CAAe,EAEvC,aAAa,mBAAmBA,CAAe,CAAC,EAC3D,ECtDO,SAASE,EAAsBhC,EAAkB,CACpD,MAAO,OAAOC,GAA8B,CACxC,GAAI,EAAED,GAAS,kBAAoBA,GAAS,eAAgB,CACxDiB,EAAAA,OAAO,KAAK,qGAAqG,EACjH,MACJ,CAGA,MAAMgB,EAA4D,CAAA,EAC5DC,EAAyB,CAAA,EAE/B5B,EAAAA,MAAML,EAAM,CAAC,QAAS,OAAQ,MAAM,EAAIM,GAAS,CAC7C,GAAIA,EAAK,OAAS,OACd2B,EAAU,KAAK3B,CAAY,MACxB,CACH,MAAM4B,EAAa5B,EACf4B,EAAW,KACXF,EAAS,KAAK,CAAE,KAAME,EAAY,QAASA,EAAW,OAAS,QAAS,CAEhF,CACJ,CAAC,EAGD,MAAMC,EAAoBH,EAAS,IAAI,MAAO,CAAE,KAAA1B,EAAM,QAAAgB,KAAc,CAChE,MAAMc,EAAiB,MAAMhB,EAAkBd,EAAK,IAAKgB,EAASvB,EAAQ,iBAAkBA,EAAQ,cAAeA,EAAQ,iBAAiB,EAC5IO,EAAK,IAAM8B,CACf,CAAC,EAGKC,EAAwBJ,EAAU,IAAI,MAAO3B,GAAS,CAExD,MAAMgC,EAAIC,EAAQ,KAAKjC,EAAK,MAAO,KAAM,EAAK,EAC9C,IAAIkC,EAAW,GAGf,MAAMC,EAAUH,EAAE,KAAK,EAAE,QAAA,EACzB,UAAWI,KAAOD,EAAS,CACvB,MAAME,EAAML,EAAEI,CAAG,EAAE,KAAK,KAAK,EAC7B,GAAIC,EAAK,CACL,MAAMC,EAAc,MAAMxB,EAAkBuB,EAAK,GAAM5C,EAAQ,iBAAkBA,EAAQ,cAAeA,EAAQ,iBAAiB,EAC7H6C,IAAgBD,IAChBL,EAAEI,CAAG,EAAE,KAAK,MAAOE,CAAW,EAC9BJ,EAAW,GAEnB,CACJ,CAGA,MAAMK,EAAQP,EAAE,GAAG,EAAE,QAAA,EACrB,UAAWQ,KAAKD,EAAO,CACnB,MAAME,EAAOT,EAAEQ,CAAC,EAAE,KAAK,MAAM,EAC7B,GAAIC,EAAM,CACN,MAAMH,EAAc,MAAMxB,EAAkB2B,EAAM,GAAOhD,EAAQ,iBAAkBA,EAAQ,cAAeA,EAAQ,iBAAiB,EAC/H6C,IAAgBG,IAChBT,EAAEQ,CAAC,EAAE,KAAK,OAAQF,CAAW,EAC7BJ,EAAW,GAEnB,CACJ,CAEA,GAAIA,EAAU,CAGV,MAAMQ,EAAUV,EAAE,KAAA,EACdU,IACA1C,EAAK,MAAQ0C,EAErB,CACJ,CAAC,EAED,MAAM,QAAQ,IAAI,CAAC,GAAGb,EAAmB,GAAGE,CAAqB,CAAC,CACtE,CACJ,CCxEO,MAAMY,EAAsB,IACvBjD,GAAe,CACnB,MAAMkD,EAAU,IAAIC,EACpB9C,EAAAA,MAAML,EAAM,UAAYM,GAAkB,CACtC,MAAM8C,EAAc9C,EAGpB,GAAI8C,EAAY,MAAM,aAAa,GAAI,CAKnCF,EAAQ,KAAKE,EAAY,KAAK,YAAY,EAAE,EAC5C,MACJ,CAEA,MAAMC,EAAOC,EAAAA,wBAAwBhD,EAAK,QAAQ,EAC5CiD,EAAKL,EAAQ,KAAKG,CAAI,EAEvBD,EAAY,OACbA,EAAY,KAAO,CAAA,GAElBA,EAAY,KAAK,cAClBA,EAAY,KAAK,YAAc,CAAA,GAEnCA,EAAY,KAAK,YAAY,GAAKG,CACtC,CAAC,CACL,ECnBEC,EAAkBC,GAAqC,CACzD,MAAMC,EAA2B,CAAA,EACjC,IAAIC,EAAS,GACTpD,EAAQ,EAEZ,MAAMqD,EAAYP,GAAuB,CACjCA,EAAK,SAAW,GAGpBK,EAAM,KAAK,CAAE,KAAM,OAAQ,MAAOL,EAAM,CAC5C,EAEA,KAAO9C,EAAQkD,EAAM,QAAQ,CACzB,MAAMI,EAAUJ,EAAMlD,CAAK,EAE3B,GAAIsD,IAAY,MAAQtD,EAAQ,EAAIkD,EAAM,QAAUA,EAAMlD,EAAQ,CAAC,IAAM,KAAOkD,EAAMlD,EAAQ,CAAC,IAAM,IAAK,CACtGoD,GAAU,KACVpD,GAAS,EACT,QACJ,CAEA,GAAI,EAAEsD,IAAY,KAAOtD,EAAQ,EAAIkD,EAAM,QAAUA,EAAMlD,EAAQ,CAAC,IAAM,KAAM,CAC5EoD,GAAUE,EACVtD,GAAS,EACT,QACJ,CAEA,IAAIuD,EAAkB,EACtB,KAAOvD,EAAQuD,EAAkBL,EAAM,QAAUA,EAAMlD,EAAQuD,CAAe,IAAM,KAChFA,GAAmB,EAEvB,GAAIA,EAAkB,IAAM,EAAG,CAC3BH,GAAU,IACVpD,GAAS,EACT,QACJ,CAEA,IAAIwD,EAAaxD,EAAQ,EACrByD,EAAQ,GACZ,KAAOD,EAAaN,EAAM,OAAS,GAAG,CAClC,GAAIA,EAAMM,CAAU,IAAM,MAAQA,EAAa,EAAIN,EAAM,QAAUA,EAAMM,EAAa,CAAC,IAAM,KAAON,EAAMM,EAAa,CAAC,IAAM,IAAK,CAC/HA,GAAc,EACd,QACJ,CACA,GAAIN,EAAMM,CAAU,IAAM,KAAON,EAAMM,EAAa,CAAC,IAAM,IAAK,CAC5DC,EAAQ,GACR,KACJ,CACAD,GAAc,CAClB,CAEA,GAAI,CAACC,EAAO,CACRL,GAAU,KACVpD,GAAS,EACT,QACJ,CAEA,MAAM0D,EAAUR,EAAM,MAAMlD,EAAQ,EAAGwD,CAAU,EACjD,GAAIE,EAAQ,SAAW,EAAG,CACtBN,GAAU,OACVpD,EAAQwD,EAAa,EACrB,QACJ,CAEAH,EAASD,CAAM,EACfA,EAAS,GAETD,EAAM,KAAK,CACP,KAAM,OACN,SAAU,CAAC,CAAE,KAAM,OAAQ,MAAOO,EAAS,CAAA,CAC9C,EAED1D,EAAQwD,EAAa,CACzB,CAEA,OAAAH,EAASD,CAAM,EACRD,CACX,EAMaQ,EAA+B,IAChClE,GAAe,CACnBK,EAAAA,MAAML,EAAM,OAAQ,CAACM,EAAYC,EAAOC,IAAW,CAI/C,GAHI,CAACA,GAAUD,IAAU,QAGrB,CAACD,EAAK,MAAM,SAAS,IAAI,EACzB,OAGJ,MAAM6D,EAAYX,EAAelD,EAAK,KAAK,EACvC6D,EAAU,SAAW,GAAKA,EAAU,CAAC,EAAE,OAAS,QAAWA,EAAU,CAAC,EAAW,QAAU7D,EAAK,OAIpGE,EAAO,SAAS,OAAOD,EAAO,EAAG,GAAG4D,CAAS,CACjD,CAAC,CACL,ECvHEC,EAAc,6CACdC,EAA0B,qBAqB1BC,EAAuBb,GAAqC,CAC9D,MAAMC,EAA2B,CAAA,EACjC,IAAIC,EAAS,GACTpD,EAAQ,EAEZ,MAAMqD,EAAYP,GAAuB,CACjCA,EAAK,SAAW,GAGpBK,EAAM,KAAK,CAAE,KAAM,OAAQ,MAAOL,EAAM,CAC5C,EAEA,KAAO9C,EAAQkD,EAAM,QAAQ,CACzB,MAAMI,EAAUJ,EAAMlD,CAAK,EAE3B,GAAIsD,IAAY,MAAQtD,EAAQ,EAAIkD,EAAM,QAAUA,EAAMlD,EAAQ,CAAC,IAAM,IAAK,CAC1EoD,GAAU,IACVpD,GAAS,EACT,QACJ,CAEA,GAAIsD,IAAY,IAAK,CACjBF,GAAUE,EACVtD,GAAS,EACT,QACJ,CAEA,GAAIA,EAAQ,EAAIkD,EAAM,QAAUA,EAAMlD,EAAQ,CAAC,IAAM,IAAK,CACtDoD,GAAU,KACVpD,GAAS,EACT,QACJ,CAEA,IAAIwD,EAAaxD,EAAQ,EACrByD,EAAQ,GACZ,KAAOD,EAAaN,EAAM,QAAQ,CAC9B,GAAIA,EAAMM,CAAU,IAAM,MAAQA,EAAa,EAAIN,EAAM,OAAQ,CAC7DM,GAAc,EACd,QACJ,CACA,GAAIN,EAAMM,CAAU,IAAM,IAAK,CAC3B,GAAIA,EAAa,EAAIN,EAAM,QAAUA,EAAMM,EAAa,CAAC,IAAM,IAAK,CAChEA,GAAc,EACd,QACJ,CACAC,EAAQ,GACR,KACJ,CACAD,GAAc,CAClB,CAEA,GAAI,CAACC,EAAO,CACRL,GAAU,IACVpD,GAAS,EACT,QACJ,CAEA,MAAM0D,EAAUR,EAAM,MAAMlD,EAAQ,EAAGwD,CAAU,EACjD,GAAIE,EAAQ,SAAW,EAAG,CACtBN,GAAU,KACVpD,EAAQwD,EAAa,EACrB,QACJ,CAEA,GAAIM,EAAwB,KAAKJ,CAAO,EAAG,CACvCN,GAAU,IACVpD,GAAS,EACT,QACJ,CAEAqD,EAASD,CAAM,EACfA,EAAS,GAETD,EAAM,KAAK,CACP,KAAM,YACN,SAAU,CAAC,CAAE,KAAM,OAAQ,MAAOO,EAAQ,QAAQG,EAAa,IAAI,CAAA,CAAG,CAAA,CACzE,EAED7D,EAAQwD,EAAa,CACzB,CAEA,OAAAH,EAASD,CAAM,EACRD,CACX,EAMaa,EAAoC,IACrCvE,GAAe,CACnBK,EAAAA,MAAML,EAAM,OAAQ,CAACM,EAAYC,EAAOC,IAAW,CAI/C,GAHI,CAACA,GAAUD,IAAU,QAGrB,CAACD,EAAK,MAAM,SAAS,GAAG,EACxB,OAGJ,MAAM6D,EAAYG,EAAoBhE,EAAK,KAAK,EAC5C6D,EAAU,SAAW,GAAKA,EAAU,CAAC,EAAE,OAAS,QAAWA,EAAU,CAAC,EAAW,QAAU7D,EAAK,OAIpGE,EAAO,SAAS,OAAOD,EAAO,EAAG,GAAG4D,CAAS,CACjD,CAAC,CACL,EChIEC,EAAc,6CACdC,EAA0B,qBAqB1BG,EAAyBf,GAAqC,CAChE,MAAMC,EAA2B,CAAA,EACjC,IAAIC,EAAS,GACTpD,EAAQ,EAEZ,MAAMqD,EAAYP,GAAuB,CACjCA,EAAK,SAAW,GAGpBK,EAAM,KAAK,CAAE,KAAM,OAAQ,MAAOL,EAAM,CAC5C,EAEA,KAAO9C,EAAQkD,EAAM,QAAQ,CACzB,MAAMI,EAAUJ,EAAMlD,CAAK,EAE3B,GAAIsD,IAAY,MAAQtD,EAAQ,EAAIkD,EAAM,QAAUA,EAAMlD,EAAQ,CAAC,IAAM,IAAK,CAC1EoD,GAAU,IACVpD,GAAS,EACT,QACJ,CAEA,GAAIsD,IAAY,IAAK,CACjBF,GAAUE,EACVtD,GAAS,EACT,QACJ,CAEA,IAAIwD,EAAaxD,EAAQ,EACrByD,EAAQ,GACZ,KAAOD,EAAaN,EAAM,QAAQ,CAC9B,GAAIA,EAAMM,CAAU,IAAM,MAAQA,EAAa,EAAIN,EAAM,OAAQ,CAC7DM,GAAc,EACd,QACJ,CACA,GAAIN,EAAMM,CAAU,IAAM,IAAK,CAC3BC,EAAQ,GACR,KACJ,CACAD,GAAc,CAClB,CAEA,GAAI,CAACC,EAAO,CACRL,GAAU,IACVpD,GAAS,EACT,QACJ,CAEA,MAAM0D,EAAUR,EAAM,MAAMlD,EAAQ,EAAGwD,CAAU,EACjD,GAAIE,EAAQ,SAAW,EAAG,CACtBN,GAAU,KACVpD,EAAQwD,EAAa,EACrB,QACJ,CAEA,GAAIM,EAAwB,KAAKJ,CAAO,EAAG,CACvCN,GAAU,IACVpD,GAAS,EACT,QACJ,CAEAqD,EAASD,CAAM,EACfA,EAAS,GAETD,EAAM,KAAK,CACP,KAAM,cACN,SAAU,CAAC,CAAE,KAAM,OAAQ,MAAOO,EAAQ,QAAQG,EAAa,IAAI,CAAA,CAAG,CAAA,CACzE,EAED7D,EAAQwD,EAAa,CACzB,CAEA,OAAAH,EAASD,CAAM,EACRD,CACX,EAMae,EAAsC,IACvCzE,GAAe,CACnBK,EAAAA,MAAML,EAAM,OAAQ,CAACM,EAAYC,EAAOC,IAAW,CAI/C,GAHI,CAACA,GAAUD,IAAU,QAGrB,CAACD,EAAK,MAAM,SAAS,GAAG,EACxB,OAGJ,MAAM6D,EAAYK,EAAsBlE,EAAK,KAAK,EAC9C6D,EAAU,SAAW,GAAKA,EAAU,CAAC,EAAE,OAAS,QAAWA,EAAU,CAAC,EAAW,QAAU7D,EAAK,OAIpGE,EAAO,SAAS,OAAOD,EAAO,EAAG,GAAG4D,CAAS,CACjD,CAAC,CACL,ECjGEO,EAAoBC,GACfA,EAAK,SACP,IAAKC,GACEA,EAAM,OAAS,OACRA,EAAM,MAEV,EACV,EACA,KAAK,EAAE,EAOVC,EAAkBF,GAAiC,CACrD,MAAMtB,EAAOqB,EAAiBC,CAAI,EAAE,KAAA,EACpC,OAAItB,IAAS,IACF,IAEPA,IAAS,IACF,IAEJ,IACX,EAMMyB,EAAoBH,GACRA,EAAK,MAAQ,CAAA,EAQzBI,EAA0BJ,GAA+C,CAC3E,MAAMK,EAAOF,EAAiBH,CAAI,EAClC,OAAKK,EAAK,cACNA,EAAK,YAAc,CAAA,GAElBL,EAAK,OACNA,EAAK,KAAOK,GAETA,EAAK,WAChB,EAMMC,EAAkBN,GAA0B,CAC9C,MAAMO,EAAcH,EAAuBJ,CAAI,EAC/CO,EAAY,OAAS,EACzB,EAMMC,EAAoBR,GAA0B,CAChD,MAAMO,EAAcH,EAAuBJ,CAAI,EAC/CO,EAAY,SAAWA,EAAY,SAAW,GAAK,CACvD,EAMME,EAAoBT,GAA0B,CAChD,MAAMO,EAAcH,EAAuBJ,CAAI,EAC/CO,EAAY,SAAWA,EAAY,SAAW,GAAK,CACvD,EAMMG,EAAuB,CAACC,EAAeC,IAA4C,CACrF,QAAShF,EAAQgF,EAAgB,EAAGhF,EAAQ+E,EAAI,SAAS,OAAQ/E,GAAS,EAAG,CACzE,MAAMiF,EAAYF,EAAI,SAAS/E,CAAK,EACpC,GAAKiF,GAGDX,EAAeW,CAAS,IAAM,KAGlC,OAAOA,CACX,CACA,OAAO,IACX,EAMMC,GAAwB,CAACC,EAAkBC,IAA6D,CAC1G,MAAMC,EAAuC,CAAA,EAE7C,UAAWN,KAAOI,EAAM,CACpB,MAAMG,EAAmC,CAAA,EACzC,QAASC,EAAcR,EAAI,SAAS,OAAS,EAAGQ,GAAe,EAAGA,GAAe,EAAG,CAChF,MAAMnB,EAAOW,EAAI,SAASQ,CAAW,EACrC,GAAI,CAACnB,GAAQE,EAAeF,CAAI,IAAM,IAAK,CACvCkB,EAAWC,CAAW,EAAInB,GAAQ,KAClC,QACJ,CAEA,MAAMoB,EAASV,EAAqBC,EAAKQ,CAAW,EACpD,GAAI,CAACC,EAAQ,CACTF,EAAWC,CAAW,EAAInB,EAC1B,QACJ,CAEAQ,EAAiBY,CAAM,EACvBd,EAAeN,CAAI,EACnB,MAAMO,EAAcH,EAAuBgB,CAAM,EAC3CC,EAAcL,IAAQG,CAAW,GAAK,OACxCE,IACAd,EAAY,UAAYc,GAE5BH,EAAWC,CAAW,EAAIC,CAC9B,CAEAH,EAAa,KAAKC,CAAU,CAChC,CAEA,OAAOD,CACX,EAMMK,GAAsB,CAACP,EAAkBE,IAA+C,CAC1F,QAASM,EAAW,EAAGA,EAAWR,EAAK,OAAQQ,GAAY,EAAG,CAC1D,MAAMZ,EAAMI,EAAKQ,CAAQ,EACzB,QAASJ,EAAc,EAAGA,EAAcR,EAAI,SAAS,OAAQQ,GAAe,EAAG,CAC3E,MAAMnB,EAAOW,EAAI,SAASQ,CAAW,EACrC,GAAI,CAACnB,GAAQE,EAAeF,CAAI,IAAM,IAClC,SAGJ,MAAMoB,EAASG,EAAW,EAAKN,EAAaM,EAAW,CAAC,IAAIJ,CAAW,GAAK,KAAQ,KAC/EC,IAILX,EAAiBW,CAAM,EACvBd,EAAeN,CAAI,EACfiB,EAAaM,CAAQ,IACrBN,EAAaM,CAAQ,EAAEJ,CAAW,EAAIC,GAE9C,CACJ,CACJ,EAMaI,GAAqC,IACtCnG,GAAe,CACnBK,EAAAA,MAAML,EAAM,QAAUoG,GAAqB,CACvC,MAAMV,EAAOU,EAAU,SACjBR,EAAeH,GAAsBC,EAAMU,EAAU,KAAK,EAChEH,GAAoBP,EAAME,CAAY,CAC1C,CAAC,CACL,EClMES,GAAa,CAAC,UAAW,UAAW,QAAS,aAAc,UAAW,SAAU,KAAM,MAAO,KAAM,KAAM,WAAY,aAAc,SAAU,SAAU,OAAQ,SAAU,SAAU,OAAQ,MAAO,KAAM,MAAO,UAAW,QAAS,IAAI,EAWvOC,EAAmB7C,GAAoC,CAGzD,MAAMhD,EAAQgD,EAAM,MAAM,gCAAgC,EAC1D,GAAI,CAAChD,EAAO,OAAO,KAEnB,MAAM8F,EAAU9F,EAAM,CAAC,EAAE,YAAA,EACzB,GAAI,CAAC4F,GAAW,SAASE,CAAO,EAAG,OAAO,KAG1C,MAAMC,EAAqC,CAAA,EACrCC,EAAUhG,EAAM,CAAC,EAOjBiG,EAAY,yDAElB,IAAIC,EAEJ,MAAQA,EAAYD,EAAU,KAAKD,CAAO,KAAO,MAAM,CACnD,MAAMG,EAAMD,EAAU,CAAC,EAGjBE,EAAMF,EAAU,CAAC,GAAKA,EAAU,CAAC,GAAKA,EAAU,CAAC,GAAK,GAC5DH,EAAWI,CAAG,EAAIC,CACtB,CAEA,MAAO,CAAE,QAAAN,EAAS,WAAAC,CAAA,CACtB,EAKMM,GAAe,CAACrD,EAAe8C,IAG1B,IAAI,OAAO,gBAAgBA,CAAO,aAAc,GAAG,EAAE,KAAK9C,CAAK,EAQpEsD,EAAqBC,GAA2B,CAElD,MAAMC,EAAqB,CAAA,EAC3B,IAAIhG,EAAI,EAER,KAAOA,EAAI+F,EAAS,QAAQ,CACxB,MAAM1G,EAAO0G,EAAS/F,CAAC,EAGvB,GAAIX,EAAK,OAAS,OAAQ,CACtB,MAAM4G,EAASZ,EAAgBhG,EAAK,KAAK,EACzC,GAAI4G,EAAQ,CAMR,IAAIC,EAAIlG,EAAI,EACRmG,EAAU,EACVC,EAAa,GAGjB,KAAOF,EAAIH,EAAS,QAAQ,CACxB,MAAMM,EAAWN,EAASG,CAAC,EAE3B,GAAIG,EAAS,OAAS,OAAQ,CAC1B,MAAMC,EAAcjB,EAAgBgB,EAAS,KAAK,EAElD,GAAIC,GAAeA,EAAY,UAAYL,EAAO,QAE9CE,YACON,GAAaQ,EAAS,MAAOJ,EAAO,OAAO,IAElDE,IACIA,IAAY,GAAG,CACfC,EAAaF,EACb,KACJ,CAER,CACAA,GACJ,CAEA,GAAIE,IAAe,GAAI,CAGnB,MAAMG,EAAgBR,EAAS,MAAM/F,EAAI,EAAGoG,CAAU,EAGhDI,EAAqBV,EAAkBS,CAAa,EAG1DP,EAAY,KAAK,CACb,KAAM,uBACN,KAAM,CACF,QAASC,EAAO,QAChB,WAAYA,EAAO,UAAA,EAEvB,SAAUO,CAAA,CACb,EAKDxG,EAAIoG,EAAa,EACjB,QACJ,CAGJ,CACJ,CAII,aAAc/G,GAAQ,MAAM,QAASA,EAAa,QAAQ,IAExDA,EAAa,SAAWyG,EAAmBzG,EAAa,QAAQ,GAGtE2G,EAAY,KAAK3G,CAAI,EACrBW,GACJ,CAEA,OAAOgG,CACX,EAMaS,GAA0C,IAC3C1H,GAAe,CACfA,EAAK,WACLA,EAAK,SAAW+G,EAAkB/G,EAAK,QAAQ,EAEvD,ECtIS2H,GAAgB,MAAOC,EAAsB3H,EAA0BsB,IAAyC,CACzH,MAAMsG,EAAYC,EAAAA,OAAA,EACb,IAAIC,EAAAA,gBAAgB,EACpB,IAAIL,EAAqB,EACzB,IAAIM,EAAAA,sBAAsB,EAC1B,IAAIC,EAAAA,gBAAgB,EACpB,IAAIC,EAAAA,sBAAsB,EAC1B,IAAIC,CAAiB,EACrB,IAAIC,CAAY,EAChB,IAAIC,EAAAA,eAAe,EACnB,IAAIC,mBAAiB,EACrB,IAAIC,CAAU,EACd,IAAIzI,EAAuB,CAAE,iBAAAG,CAAA,CAAkB,EAC/C,IAAIuI,EAAAA,kBAAkB,EACtB,IAAIC,EAAAA,kBAAkB,EACtB,IAAIC,EAAAA,eAAe,EACnB,IAAIC,EAAAA,uBAAuB,EAC3B,IAAIC,EAAAA,qBAAqB,EACzB,IAAI3F,CAAmB,EACvB,IAAI4F,EAAW,CAAE,YAAa,EAAA,CAAO,EACrC,IAAI1C,EAAgB,EACpB,IAAI1B,CAAiB,EACrB,IAAIF,CAAe,EACnB,IAAIL,CAAU,EACd,IAAInC,EAAuB,CAAE,iBAAA9B,EAAkB,cAAAsB,EAAe,kBAAmB,GAAM,EAEtF2F,EAASW,EAAU,MAAMD,CAAY,EAE3C,OADkB,MAAMC,EAAU,IAAIX,CAAM,CAEhD"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import E from "node:fs/promises";
|
|
2
|
+
import m from "node:path";
|
|
3
|
+
import { visit as h } from "unist-util-visit";
|
|
4
|
+
import { L as g, m as b, g as N, d as R, i as S, c as C, h as T, l as I, j as M, k as $, r as H, a as U, b as _ } from "./remark-zenn-message-B-AEffpD.js";
|
|
5
|
+
import * as F from "cheerio";
|
|
6
|
+
import L from "url-join";
|
|
7
|
+
import { remark as v } from "remark";
|
|
8
|
+
import z from "remark-breaks";
|
|
9
|
+
import j from "remark-frontmatter";
|
|
10
|
+
import B from "remark-gfm";
|
|
11
|
+
import D from "remark-math";
|
|
12
|
+
import W from "github-slugger";
|
|
13
|
+
const O = /<!--\s+@import\s+"(.+?)"\s+-->/;
|
|
14
|
+
function G(e) {
|
|
15
|
+
return async (r) => {
|
|
16
|
+
const { markdownFilePath: n } = e, t = m.dirname(n), i = [];
|
|
17
|
+
if (h(r, "html", (s, o, c) => {
|
|
18
|
+
if (!c || typeof o != "number")
|
|
19
|
+
return;
|
|
20
|
+
const l = s.value.match(O);
|
|
21
|
+
if (!l)
|
|
22
|
+
return;
|
|
23
|
+
const d = l[1], u = m.resolve(t, d);
|
|
24
|
+
Array.isArray(c.children) && i.push({ parent: c, index: o, absolutePath: u });
|
|
25
|
+
}), i.length === 0)
|
|
26
|
+
return;
|
|
27
|
+
const a = await Promise.all(
|
|
28
|
+
i.map(async ({ absolutePath: s }) => {
|
|
29
|
+
try {
|
|
30
|
+
const o = await E.readFile(s, "utf-8");
|
|
31
|
+
return this.parse(o);
|
|
32
|
+
} catch (o) {
|
|
33
|
+
return o && o.code === "ENOENT" ? g.warn(`[remark-import-directive] Import file not found: ${s}`) : g.error(`[remark-import-directive] Error processing import: ${s}`, o), null;
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
);
|
|
37
|
+
for (let s = i.length - 1; s >= 0; s--) {
|
|
38
|
+
const { parent: o, index: c } = i[s], l = a[s];
|
|
39
|
+
l?.children && Array.isArray(l.children) && o.children.splice(c, 1, ...l.children);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const q = /^[a-z][a-z0-9+.-]*:/, w = async (e, r, n, t, i = !1) => {
|
|
44
|
+
if (!e)
|
|
45
|
+
return "";
|
|
46
|
+
if (q.test(e)) {
|
|
47
|
+
const d = e.substring(0, e.indexOf(":")).toLowerCase();
|
|
48
|
+
if (["http", "https", "mailto", "tel", "file"].includes(d))
|
|
49
|
+
return e;
|
|
50
|
+
}
|
|
51
|
+
if (e.startsWith("#") || e.startsWith("/"))
|
|
52
|
+
return e;
|
|
53
|
+
const a = decodeURIComponent(e), s = m.dirname(n), o = m.normalize(m.join(s, a)), c = m.resolve(t, o);
|
|
54
|
+
if (!c.startsWith(t) || o.startsWith(".."))
|
|
55
|
+
return g.error(`Security Alert: Attempt to access file outside project root: ${c}`), "";
|
|
56
|
+
if (i)
|
|
57
|
+
try {
|
|
58
|
+
await E.access(c);
|
|
59
|
+
} catch {
|
|
60
|
+
return g.warn(`File not found: ${c}`), "";
|
|
61
|
+
}
|
|
62
|
+
const l = o.replace(/\\/g, "/");
|
|
63
|
+
return r ? L("/assets/", l) : `?filePath=${encodeURIComponent(l)}`;
|
|
64
|
+
};
|
|
65
|
+
function V(e) {
|
|
66
|
+
return async (r) => {
|
|
67
|
+
if (!(e?.markdownFilePath && e?.workspaceRoot)) {
|
|
68
|
+
g.warn("remark-resolve-uri-async: markdownFilePath and workspaceRoot are required. Skipping URI resolution.");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const n = [], t = [];
|
|
72
|
+
h(r, ["image", "link", "html"], (s) => {
|
|
73
|
+
if (s.type === "html")
|
|
74
|
+
t.push(s);
|
|
75
|
+
else {
|
|
76
|
+
const o = s;
|
|
77
|
+
o.url && n.push({ node: o, isImage: o.type === "image" });
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const i = n.map(async ({ node: s, isImage: o }) => {
|
|
81
|
+
const c = await w(s.url, o, e.markdownFilePath, e.workspaceRoot, e.validateExistence);
|
|
82
|
+
s.url = c;
|
|
83
|
+
}), a = t.map(async (s) => {
|
|
84
|
+
const o = F.load(s.value, null, !1);
|
|
85
|
+
let c = !1;
|
|
86
|
+
const l = o("img").toArray();
|
|
87
|
+
for (const u of l) {
|
|
88
|
+
const f = o(u).attr("src");
|
|
89
|
+
if (f) {
|
|
90
|
+
const p = await w(f, !0, e.markdownFilePath, e.workspaceRoot, e.validateExistence);
|
|
91
|
+
p !== f && (o(u).attr("src", p), c = !0);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const d = o("a").toArray();
|
|
95
|
+
for (const u of d) {
|
|
96
|
+
const f = o(u).attr("href");
|
|
97
|
+
if (f) {
|
|
98
|
+
const p = await w(f, !1, e.markdownFilePath, e.workspaceRoot, e.validateExistence);
|
|
99
|
+
p !== f && (o(u).attr("href", p), c = !0);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (c) {
|
|
103
|
+
const u = o.html();
|
|
104
|
+
u && (s.value = u);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
await Promise.all([...i, ...a]);
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const J = () => (e) => {
|
|
111
|
+
const r = new W();
|
|
112
|
+
h(e, "heading", (n) => {
|
|
113
|
+
const t = n;
|
|
114
|
+
if (t.data?.hProperties?.id) {
|
|
115
|
+
r.slug(t.data.hProperties.id);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const i = b(n.children), a = r.slug(i);
|
|
119
|
+
t.data || (t.data = {}), t.data.hProperties || (t.data.hProperties = {}), t.data.hProperties.id = a;
|
|
120
|
+
});
|
|
121
|
+
}, K = (e) => {
|
|
122
|
+
const r = [];
|
|
123
|
+
let n = "", t = 0;
|
|
124
|
+
const i = (a) => {
|
|
125
|
+
a.length !== 0 && r.push({ type: "text", value: a });
|
|
126
|
+
};
|
|
127
|
+
for (; t < e.length; ) {
|
|
128
|
+
const a = e[t];
|
|
129
|
+
if (a === "\\" && t + 2 < e.length && e[t + 1] === "=" && e[t + 2] === "=") {
|
|
130
|
+
n += "==", t += 3;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (!(a === "=" && t + 1 < e.length && e[t + 1] === "=")) {
|
|
134
|
+
n += a, t += 1;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
let s = 0;
|
|
138
|
+
for (; t + s < e.length && e[t + s] === "="; )
|
|
139
|
+
s += 1;
|
|
140
|
+
if (s % 2 === 1) {
|
|
141
|
+
n += "=", t += 1;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
let o = t + 2, c = !1;
|
|
145
|
+
for (; o < e.length - 1; ) {
|
|
146
|
+
if (e[o] === "\\" && o + 2 < e.length && e[o + 1] === "=" && e[o + 2] === "=") {
|
|
147
|
+
o += 3;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (e[o] === "=" && e[o + 1] === "=") {
|
|
151
|
+
c = !0;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
o += 1;
|
|
155
|
+
}
|
|
156
|
+
if (!c) {
|
|
157
|
+
n += "==", t += 2;
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const l = e.slice(t + 2, o);
|
|
161
|
+
if (l.length === 0) {
|
|
162
|
+
n += "====", t = o + 2;
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
i(n), n = "", r.push({
|
|
166
|
+
type: "mark",
|
|
167
|
+
children: [{ type: "text", value: l }]
|
|
168
|
+
}), t = o + 2;
|
|
169
|
+
}
|
|
170
|
+
return i(n), r;
|
|
171
|
+
}, X = () => (e) => {
|
|
172
|
+
h(e, "text", (r, n, t) => {
|
|
173
|
+
if (!t || n === void 0 || !r.value.includes("=="))
|
|
174
|
+
return;
|
|
175
|
+
const i = K(r.value);
|
|
176
|
+
i.length === 1 && i[0].type === "text" && i[0].value === r.value || t.children.splice(n, 1, ...i);
|
|
177
|
+
});
|
|
178
|
+
}, Y = /\\([ \\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-])/g, Z = /(^|[^\\])(\\\\)*\s/, Q = (e) => {
|
|
179
|
+
const r = [];
|
|
180
|
+
let n = "", t = 0;
|
|
181
|
+
const i = (a) => {
|
|
182
|
+
a.length !== 0 && r.push({ type: "text", value: a });
|
|
183
|
+
};
|
|
184
|
+
for (; t < e.length; ) {
|
|
185
|
+
const a = e[t];
|
|
186
|
+
if (a === "\\" && t + 1 < e.length && e[t + 1] === "~") {
|
|
187
|
+
n += "~", t += 2;
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (a !== "~") {
|
|
191
|
+
n += a, t += 1;
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (t + 1 < e.length && e[t + 1] === "~") {
|
|
195
|
+
n += "~~", t += 2;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
let s = t + 1, o = !1;
|
|
199
|
+
for (; s < e.length; ) {
|
|
200
|
+
if (e[s] === "\\" && s + 1 < e.length) {
|
|
201
|
+
s += 2;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (e[s] === "~") {
|
|
205
|
+
if (s + 1 < e.length && e[s + 1] === "~") {
|
|
206
|
+
s += 2;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
o = !0;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
s += 1;
|
|
213
|
+
}
|
|
214
|
+
if (!o) {
|
|
215
|
+
n += "~", t += 1;
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
const c = e.slice(t + 1, s);
|
|
219
|
+
if (c.length === 0) {
|
|
220
|
+
n += "~~", t = s + 1;
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
if (Z.test(c)) {
|
|
224
|
+
n += "~", t += 1;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
i(n), n = "", r.push({
|
|
228
|
+
type: "subscript",
|
|
229
|
+
children: [{ type: "text", value: c.replace(Y, "$1") }]
|
|
230
|
+
}), t = s + 1;
|
|
231
|
+
}
|
|
232
|
+
return i(n), r;
|
|
233
|
+
}, ee = () => (e) => {
|
|
234
|
+
h(e, "text", (r, n, t) => {
|
|
235
|
+
if (!t || n === void 0 || !r.value.includes("~"))
|
|
236
|
+
return;
|
|
237
|
+
const i = Q(r.value);
|
|
238
|
+
i.length === 1 && i[0].type === "text" && i[0].value === r.value || t.children.splice(n, 1, ...i);
|
|
239
|
+
});
|
|
240
|
+
}, te = /\\([ \\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-])/g, re = /(^|[^\\])(\\\\)*\s/, ne = (e) => {
|
|
241
|
+
const r = [];
|
|
242
|
+
let n = "", t = 0;
|
|
243
|
+
const i = (a) => {
|
|
244
|
+
a.length !== 0 && r.push({ type: "text", value: a });
|
|
245
|
+
};
|
|
246
|
+
for (; t < e.length; ) {
|
|
247
|
+
const a = e[t];
|
|
248
|
+
if (a === "\\" && t + 1 < e.length && e[t + 1] === "^") {
|
|
249
|
+
n += "^", t += 2;
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
if (a !== "^") {
|
|
253
|
+
n += a, t += 1;
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
let s = t + 1, o = !1;
|
|
257
|
+
for (; s < e.length; ) {
|
|
258
|
+
if (e[s] === "\\" && s + 1 < e.length) {
|
|
259
|
+
s += 2;
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (e[s] === "^") {
|
|
263
|
+
o = !0;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
s += 1;
|
|
267
|
+
}
|
|
268
|
+
if (!o) {
|
|
269
|
+
n += "^", t += 1;
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
const c = e.slice(t + 1, s);
|
|
273
|
+
if (c.length === 0) {
|
|
274
|
+
n += "^^", t = s + 1;
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
if (re.test(c)) {
|
|
278
|
+
n += "^", t += 1;
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
i(n), n = "", r.push({
|
|
282
|
+
type: "superscript",
|
|
283
|
+
children: [{ type: "text", value: c.replace(te, "$1") }]
|
|
284
|
+
}), t = s + 1;
|
|
285
|
+
}
|
|
286
|
+
return i(n), r;
|
|
287
|
+
}, se = () => (e) => {
|
|
288
|
+
h(e, "text", (r, n, t) => {
|
|
289
|
+
if (!t || n === void 0 || !r.value.includes("^"))
|
|
290
|
+
return;
|
|
291
|
+
const i = ne(r.value);
|
|
292
|
+
i.length === 1 && i[0].type === "text" && i[0].value === r.value || t.children.splice(n, 1, ...i);
|
|
293
|
+
});
|
|
294
|
+
}, oe = (e) => e.children.map((r) => r.type === "text" ? r.value : "").join(""), x = (e) => {
|
|
295
|
+
const r = oe(e).trim();
|
|
296
|
+
return r === ">" ? ">" : r === "^" ? "^" : null;
|
|
297
|
+
}, ie = (e) => e.data ?? {}, k = (e) => {
|
|
298
|
+
const r = ie(e);
|
|
299
|
+
return r.hProperties || (r.hProperties = {}), e.data || (e.data = r), r.hProperties;
|
|
300
|
+
}, A = (e) => {
|
|
301
|
+
const r = k(e);
|
|
302
|
+
r.merged = !0;
|
|
303
|
+
}, ae = (e) => {
|
|
304
|
+
const r = k(e);
|
|
305
|
+
r.colSpan = (r.colSpan ?? 1) + 1;
|
|
306
|
+
}, ce = (e) => {
|
|
307
|
+
const r = k(e);
|
|
308
|
+
r.rowSpan = (r.rowSpan ?? 1) + 1;
|
|
309
|
+
}, le = (e, r) => {
|
|
310
|
+
for (let n = r + 1; n < e.children.length; n += 1) {
|
|
311
|
+
const t = e.children[n];
|
|
312
|
+
if (t && x(t) === null)
|
|
313
|
+
return t;
|
|
314
|
+
}
|
|
315
|
+
return null;
|
|
316
|
+
}, ue = (e, r) => {
|
|
317
|
+
const n = [];
|
|
318
|
+
for (const t of e) {
|
|
319
|
+
const i = [];
|
|
320
|
+
for (let a = t.children.length - 1; a >= 0; a -= 1) {
|
|
321
|
+
const s = t.children[a];
|
|
322
|
+
if (!s || x(s) !== ">") {
|
|
323
|
+
i[a] = s ?? null;
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
const o = le(t, a);
|
|
327
|
+
if (!o) {
|
|
328
|
+
i[a] = s;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
ae(o), A(s);
|
|
332
|
+
const c = k(o), l = r?.[a] ?? void 0;
|
|
333
|
+
l && (c.textAlign = l), i[a] = o;
|
|
334
|
+
}
|
|
335
|
+
n.push(i);
|
|
336
|
+
}
|
|
337
|
+
return n;
|
|
338
|
+
}, fe = (e, r) => {
|
|
339
|
+
for (let n = 0; n < e.length; n += 1) {
|
|
340
|
+
const t = e[n];
|
|
341
|
+
for (let i = 0; i < t.children.length; i += 1) {
|
|
342
|
+
const a = t.children[i];
|
|
343
|
+
if (!a || x(a) !== "^")
|
|
344
|
+
continue;
|
|
345
|
+
const s = n > 0 ? r[n - 1]?.[i] ?? null : null;
|
|
346
|
+
s && (ce(s), A(a), r[n] && (r[n][i] = s));
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}, he = () => (e) => {
|
|
350
|
+
h(e, "table", (r) => {
|
|
351
|
+
const n = r.children, t = ue(n, r.align);
|
|
352
|
+
fe(n, t);
|
|
353
|
+
});
|
|
354
|
+
}, me = ["address", "article", "aside", "blockquote", "details", "dialog", "dd", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "header", "hgroup", "main", "nav", "ol", "pre", "section", "table", "ul"], P = (e) => {
|
|
355
|
+
const r = e.match(/^\s*<([a-z0-9-]+)([^>]*)>\s*$/i);
|
|
356
|
+
if (!r) return null;
|
|
357
|
+
const n = r[1].toLowerCase();
|
|
358
|
+
if (!me.includes(n)) return null;
|
|
359
|
+
const t = {}, i = r[2], a = /([a-z0-9:-]+)(?:=(?:"([^"]*)"|'([^']*)'|([^\s>]+)))?/gi;
|
|
360
|
+
let s;
|
|
361
|
+
for (; (s = a.exec(i)) !== null; ) {
|
|
362
|
+
const o = s[1], c = s[2] ?? s[3] ?? s[4] ?? "";
|
|
363
|
+
t[o] = c;
|
|
364
|
+
}
|
|
365
|
+
return { tagName: n, attributes: t };
|
|
366
|
+
}, de = (e, r) => new RegExp(`^\\s*<\\/\\s*${r}\\s*>\\s*$`, "i").test(e), y = (e) => {
|
|
367
|
+
const r = [];
|
|
368
|
+
let n = 0;
|
|
369
|
+
for (; n < e.length; ) {
|
|
370
|
+
const t = e[n];
|
|
371
|
+
if (t.type === "html") {
|
|
372
|
+
const i = P(t.value);
|
|
373
|
+
if (i) {
|
|
374
|
+
let a = n + 1, s = 1, o = -1;
|
|
375
|
+
for (; a < e.length; ) {
|
|
376
|
+
const c = e[a];
|
|
377
|
+
if (c.type === "html") {
|
|
378
|
+
const l = P(c.value);
|
|
379
|
+
if (l && l.tagName === i.tagName)
|
|
380
|
+
s++;
|
|
381
|
+
else if (de(c.value, i.tagName) && (s--, s === 0)) {
|
|
382
|
+
o = a;
|
|
383
|
+
break;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
a++;
|
|
387
|
+
}
|
|
388
|
+
if (o !== -1) {
|
|
389
|
+
const c = e.slice(n + 1, o), l = y(c);
|
|
390
|
+
r.push({
|
|
391
|
+
type: "html-block-container",
|
|
392
|
+
data: {
|
|
393
|
+
tagName: i.tagName,
|
|
394
|
+
properties: i.attributes
|
|
395
|
+
},
|
|
396
|
+
children: l
|
|
397
|
+
}), n = o + 1;
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
"children" in t && Array.isArray(t.children) && (t.children = y(t.children)), r.push(t), n++;
|
|
403
|
+
}
|
|
404
|
+
return r;
|
|
405
|
+
}, pe = () => (e) => {
|
|
406
|
+
e.children && (e.children = y(e.children));
|
|
407
|
+
}, Se = async (e, r, n) => {
|
|
408
|
+
const t = v().use(N).use(pe).use(R).use(S).use(C).use(j).use(z).use(T).use(I).use(D).use(G, { markdownFilePath: r }).use(M).use($).use(H).use(U).use(_).use(J).use(B, { singleTilde: !1 }).use(he).use(se).use(ee).use(X).use(V, { markdownFilePath: r, workspaceRoot: n, validateExistence: !0 }), i = t.parse(e);
|
|
409
|
+
return await t.run(i);
|
|
410
|
+
};
|
|
411
|
+
export {
|
|
412
|
+
Se as parseMarkdown,
|
|
413
|
+
G as remarkImportDirective,
|
|
414
|
+
V as remarkResolveUriAsync,
|
|
415
|
+
w as transformUriAsync
|
|
416
|
+
};
|
|
417
|
+
//# sourceMappingURL=index.server.js.map
|