@aiquants/markdown 6.0.0 → 6.2.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 +142 -7
- package/dist/{abnfDiagram-VRR7QNED-D7Rp9EaV.js → abnfDiagram-VRR7QNED-Csrzuwyl.js} +3 -3
- package/dist/{abnfDiagram-VRR7QNED-KTGT9TWM.cjs → abnfDiagram-VRR7QNED-DX6eyf4O.cjs} +1 -1
- package/dist/arc-Gw7Urszo.js +83 -0
- package/dist/{arc-D5T_urCC.cjs → arc-ZAQ3z7kr.cjs} +1 -1
- package/dist/{architectureDiagram-ZJ3FMSHR-DLrGYTYy.js → architectureDiagram-ZJ3FMSHR-Coy6_Fcg.js} +2 -2
- package/dist/{architectureDiagram-ZJ3FMSHR-BOo3y9aD.cjs → architectureDiagram-ZJ3FMSHR-DxzMbkp1.cjs} +1 -1
- package/dist/{blockDiagram-677ZJIJ3-B60l5Fpl.js → blockDiagram-677ZJIJ3-CbR-wn2x.js} +3 -3
- package/dist/{blockDiagram-677ZJIJ3-DnjCjo0a.cjs → blockDiagram-677ZJIJ3-THmR4OyE.cjs} +1 -1
- package/dist/{c4Diagram-LMCZKHZV-bd8fWQ1F.cjs → c4Diagram-LMCZKHZV-BcJpuXK1.cjs} +1 -1
- package/dist/{c4Diagram-LMCZKHZV-BmbplKCu.js → c4Diagram-LMCZKHZV-DHMqNO9p.js} +2 -2
- package/dist/{channel-B3oXm84X.js → channel-CfC4eqki.js} +1 -1
- package/dist/{channel-DJ_PyD9w.cjs → channel-Cryph4zI.cjs} +1 -1
- package/dist/{chunk-2Q5K7J3B-C0hbxO3D.js → chunk-2Q5K7J3B-C3BIc3MH.js} +1 -1
- package/dist/{chunk-2Q5K7J3B-CWLCO342.cjs → chunk-2Q5K7J3B-CxWyY331.cjs} +1 -1
- package/dist/{chunk-32BRIVSS-DUWtkDEY.js → chunk-32BRIVSS-C37ccuiX.js} +1 -1
- package/dist/{chunk-32BRIVSS-Cb9nTxqN.cjs → chunk-32BRIVSS-C3w_aYfI.cjs} +1 -1
- package/dist/{chunk-5VM5RSS4-DHA5n_Ls.cjs → chunk-5VM5RSS4-Cbt79-V5.cjs} +1 -1
- package/dist/{chunk-5VM5RSS4-C3mSh-gE.js → chunk-5VM5RSS4-DVLmkcyq.js} +1 -1
- package/dist/{chunk-EX3LRPZG-ByY6_kep.cjs → chunk-EX3LRPZG-BZOxrSRn.cjs} +1 -1
- package/dist/{chunk-EX3LRPZG-DCF1zjtT.js → chunk-EX3LRPZG-Co0Bql0-.js} +37 -37
- package/dist/{chunk-JWPE2WC7-CUBzYD4G.cjs → chunk-JWPE2WC7-Cvt_ToFU.cjs} +1 -1
- package/dist/{chunk-JWPE2WC7-CPLOunIL.js → chunk-JWPE2WC7-DUndc3Wb.js} +1 -1
- package/dist/{chunk-MOJQB5TN-P8-yb3-j.cjs → chunk-MOJQB5TN-AAMW2q8N.cjs} +1 -1
- package/dist/{chunk-MOJQB5TN-CmOhW6SK.js → chunk-MOJQB5TN-aTSDPliR.js} +11 -11
- package/dist/{chunk-PUDLZKDR-pKdIELvz.cjs → chunk-PUDLZKDR-CzCdcyAN.cjs} +1 -1
- package/dist/{chunk-PUDLZKDR-DH7B7ZTK.js → chunk-PUDLZKDR-Q5QzbDtY.js} +11 -11
- package/dist/{chunk-RYQCIY6F-DcvQCEoc.cjs → chunk-RYQCIY6F-DbjhsOnH.cjs} +1 -1
- package/dist/{chunk-RYQCIY6F-C7ytn_QX.js → chunk-RYQCIY6F-O6wbIIFF.js} +10 -10
- package/dist/{chunk-V7JOEXUC-CtXgqODy.cjs → chunk-V7JOEXUC-B6Qc5ABc.cjs} +1 -1
- package/dist/{chunk-V7JOEXUC-BgLcssUF.js → chunk-V7JOEXUC-OTS1fN7j.js} +10 -10
- package/dist/{chunk-VR4S4FIN-BK6xeIQk.js → chunk-VR4S4FIN-D4tY80kq.js} +1 -1
- package/dist/{chunk-VR4S4FIN-Cc4GDi2Z.cjs → chunk-VR4S4FIN-DlneMFEg.cjs} +1 -1
- package/dist/{chunk-XXDRQBXY-COtZ25Ez.js → chunk-XXDRQBXY-58rTAwvh.js} +1 -1
- package/dist/{chunk-XXDRQBXY-D1OixGzR.cjs → chunk-XXDRQBXY-CvhBfnFQ.cjs} +1 -1
- package/dist/{classDiagram-OUVF2IWQ-DDLmqaG6.cjs → classDiagram-OUVF2IWQ-C0S2HAJU.cjs} +1 -1
- package/dist/{classDiagram-v2-EOCWNBFH-Jc-IwOm0.js → classDiagram-OUVF2IWQ-hcuKRiyp.js} +2 -2
- package/dist/{classDiagram-v2-EOCWNBFH-DDLmqaG6.cjs → classDiagram-v2-EOCWNBFH-C0S2HAJU.cjs} +1 -1
- package/dist/{classDiagram-OUVF2IWQ-Jc-IwOm0.js → classDiagram-v2-EOCWNBFH-hcuKRiyp.js} +2 -2
- package/dist/components/HostedScrollArea.d.ts +15 -0
- package/dist/components/MarkdownViewer.d.ts +3 -1
- package/dist/components/embeds/LinkCard.d.ts +14 -3
- package/dist/components/mermaidInteraction.d.ts +1 -0
- package/dist/{cose-bilkent-JH36ORCC-DaucPocG.js → cose-bilkent-JH36ORCC-BwltbHKG.js} +5 -5
- package/dist/{cose-bilkent-JH36ORCC-OwiXHdQY.cjs → cose-bilkent-JH36ORCC-DVZVn03H.cjs} +1 -1
- package/dist/{cynefinDiagram-TSTJHNR4-Ag-HcuUm.cjs → cynefinDiagram-TSTJHNR4-DYCBxaEi.cjs} +1 -1
- package/dist/{cynefinDiagram-TSTJHNR4-Dkmz7gDw.js → cynefinDiagram-TSTJHNR4-ogTeIoNY.js} +28 -28
- package/dist/{dagre-VKFMJZFB-BHGdcjt3.js → dagre-VKFMJZFB-BfNdgMHQ.js} +9 -9
- package/dist/{dagre-VKFMJZFB-Q4CcAQ09.cjs → dagre-VKFMJZFB-DJW9o9XX.cjs} +1 -1
- package/dist/{diagram-FQU43EPY-jWCrN_AW.cjs → diagram-FQU43EPY-BRpNVpgn.cjs} +1 -1
- package/dist/{diagram-FQU43EPY-DBASKnKu.js → diagram-FQU43EPY-CJf3yD8h.js} +25 -25
- package/dist/{diagram-G47NLZAW-B4XMStX7.cjs → diagram-G47NLZAW-5rZfUeWV.cjs} +1 -1
- package/dist/{diagram-G47NLZAW-BY1mmnYA.js → diagram-G47NLZAW-D0-6oupP.js} +25 -25
- package/dist/{diagram-NH7WQ7WH-BXFvYRtm.js → diagram-NH7WQ7WH-BwrWWWZJ.js} +19 -19
- package/dist/{diagram-NH7WQ7WH-BS1eEa9R.cjs → diagram-NH7WQ7WH-g7m8p5fK.cjs} +1 -1
- package/dist/{diagram-OA4YK3LP-DgGrzezu.js → diagram-OA4YK3LP-BBqA1m8s.js} +13 -13
- package/dist/{diagram-OA4YK3LP-CTaL_2Nc.cjs → diagram-OA4YK3LP-BxP8KUna.cjs} +1 -1
- package/dist/{diagram-WEI45ONY-BHxWKH3v.js → diagram-WEI45ONY-CMexm2GN.js} +35 -35
- package/dist/{diagram-WEI45ONY-DX7BGSMI.cjs → diagram-WEI45ONY-DgJyq1w0.cjs} +1 -1
- package/dist/{ebnfDiagram-CCIWWBDH-BUK_anpV.js → ebnfDiagram-CCIWWBDH-DvLr_8nV.js} +3 -3
- package/dist/{ebnfDiagram-CCIWWBDH-BpDmVVJY.cjs → ebnfDiagram-CCIWWBDH-sfiWOXCW.cjs} +1 -1
- package/dist/embeds/linkCards.d.ts +32 -0
- package/dist/embeds/testing.cjs +1 -1
- package/dist/embeds/testing.js +1 -1
- package/dist/embeds.cjs +1 -1
- package/dist/embeds.d.ts +1 -1
- package/dist/embeds.js +53 -74
- package/dist/{erDiagram-Q63AITRT-Cd9H9BtP.cjs → erDiagram-Q63AITRT-B11THykZ.cjs} +1 -1
- package/dist/{erDiagram-Q63AITRT-Qb2bmkNp.js → erDiagram-Q63AITRT-D6U6Ng3Y.js} +4 -4
- package/dist/{extractHeadings-B2pUyEPa.js → extractHeadings-CdLPwHlC.js} +4882 -4827
- package/dist/extractHeadings-DRUBnhbi.cjs +311 -0
- package/dist/flowDiagram-23GEKE2U-CDscoQ9F.cjs +1 -0
- package/dist/flowDiagram-23GEKE2U-CLibi_u4.js +7 -0
- package/dist/{ganttDiagram-NO4QXBWP-C6-ExcDz.cjs → ganttDiagram-NO4QXBWP-BLlXK3zo.cjs} +1 -1
- package/dist/{ganttDiagram-NO4QXBWP-BVISsrzr.js → ganttDiagram-NO4QXBWP-CGCdgj0K.js} +2 -2
- package/dist/{gitGraphDiagram-IHSO6WYX-DLzPc702.cjs → gitGraphDiagram-IHSO6WYX-BHOyibqH.cjs} +1 -1
- package/dist/{gitGraphDiagram-IHSO6WYX-BDVA2TFP.js → gitGraphDiagram-IHSO6WYX-Bib3c0C6.js} +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.client.cjs +1 -1
- package/dist/index.client.d.ts +1 -0
- package/dist/index.client.js +33 -32
- package/dist/index.js +33 -32
- package/dist/index.server.cjs +1 -1
- package/dist/index.server.d.ts +1 -0
- package/dist/index.server.js +598 -151
- package/dist/{infoDiagram-FWYZ7A6U-D31UwqjR.js → infoDiagram-FWYZ7A6U-BUqDBIaP.js} +3 -3
- package/dist/{infoDiagram-FWYZ7A6U-DMF_wb2h.cjs → infoDiagram-FWYZ7A6U-BcDp6g1Y.cjs} +1 -1
- package/dist/{ishikawaDiagram-FXEZZL3T-DUlnwraq.cjs → ishikawaDiagram-FXEZZL3T-C3QHQ1ia.cjs} +1 -1
- package/dist/{ishikawaDiagram-FXEZZL3T-XA6-gyHY.js → ishikawaDiagram-FXEZZL3T-CcPh4nuP.js} +18 -18
- package/dist/{journeyDiagram-5HDEW3XC-CwQyFcYa.cjs → journeyDiagram-5HDEW3XC-B17v98Wb.cjs} +1 -1
- package/dist/{journeyDiagram-5HDEW3XC-B8sfsWpu.js → journeyDiagram-5HDEW3XC-MdxndgF1.js} +30 -30
- package/dist/{kanban-definition-HUTT4EX6-BjPlt2-E.cjs → kanban-definition-HUTT4EX6-BApVXeVQ.cjs} +1 -1
- package/dist/{kanban-definition-HUTT4EX6-FTrTBare.js → kanban-definition-HUTT4EX6-JhfZ6Qik.js} +120 -120
- package/dist/{linear-D3AJM3sY.cjs → linear-CIVwb13z.cjs} +1 -1
- package/dist/{linear-DI9P_z72.js → linear-dbOUbGpD.js} +8 -8
- package/dist/linkCardServer/addressGuard.server.d.ts +25 -0
- package/dist/linkCardServer/htmlEncoding.server.d.ts +6 -0
- package/dist/linkCardServer/linkCardHandler.server.d.ts +7 -0
- package/dist/linkCardServer/metadataCache.server.d.ts +5 -0
- package/dist/linkCardServer/pageFetch.server.d.ts +37 -0
- package/dist/linkCardServer/pageMetadata.server.d.ts +11 -0
- package/dist/linkCards-1JxY8wdm.js +48 -0
- package/dist/linkCards-Bjd_vW39.cjs +1 -0
- package/dist/markdown.css +1 -1
- package/dist/{mindmap-definition-LN4V7U3C-CxgWZidl.cjs → mindmap-definition-LN4V7U3C-BUbo0u-Y.cjs} +1 -1
- package/dist/{mindmap-definition-LN4V7U3C-YW4YcL9x.js → mindmap-definition-LN4V7U3C-gNTBga2z.js} +16 -16
- package/dist/{pegDiagram-2B236MQR-sJjLKeF3.js → pegDiagram-2B236MQR-BqjpbNkG.js} +3 -3
- package/dist/{pegDiagram-2B236MQR-CUo7q5bl.cjs → pegDiagram-2B236MQR-DZiQVxu1.cjs} +1 -1
- package/dist/{pieDiagram-ENE6RG2P-D4VanIOv.js → pieDiagram-ENE6RG2P-C1Gr48CK.js} +60 -60
- package/dist/{pieDiagram-ENE6RG2P-Cy_sUuLQ.cjs → pieDiagram-ENE6RG2P-D2nxDVFV.cjs} +1 -1
- package/dist/providers-BO7J62-7.cjs +1 -0
- package/dist/{providers-Drq7MT_K.js → providers-L5RM3KgR.js} +23 -23
- package/dist/{quadrantDiagram-ABIIQ3AL-D3c8xLpt.cjs → quadrantDiagram-ABIIQ3AL-C855tL3K.cjs} +1 -1
- package/dist/{quadrantDiagram-ABIIQ3AL-ubxphjb_.js → quadrantDiagram-ABIIQ3AL-DuD9ZdUQ.js} +18 -18
- package/dist/{railroadDiagram-RFXS5EU6-_Q4W5hB-.cjs → railroadDiagram-RFXS5EU6-BZsnhaQd.cjs} +1 -1
- package/dist/{railroadDiagram-RFXS5EU6-DvpD4C_A.js → railroadDiagram-RFXS5EU6-xx1d3Md8.js} +3 -3
- package/dist/{requirementDiagram-TGXJPOKE-Dk_6BuX9.js → requirementDiagram-TGXJPOKE-CCu1UYFH.js} +3 -3
- package/dist/{requirementDiagram-TGXJPOKE-DdYIO-wU.cjs → requirementDiagram-TGXJPOKE-D_NbFRkb.cjs} +1 -1
- package/dist/{sankeyDiagram-HTMAVEWB-zuYg6LTg.cjs → sankeyDiagram-HTMAVEWB-Dn2Ta-XX.cjs} +1 -1
- package/dist/{sankeyDiagram-HTMAVEWB-s3Kd7T8n.js → sankeyDiagram-HTMAVEWB-QGzXzczJ.js} +1 -1
- package/dist/{sequenceDiagram-DBY2YBRQ-BvNPCevg.cjs → sequenceDiagram-DBY2YBRQ-BA3Oc4pz.cjs} +1 -1
- package/dist/{sequenceDiagram-DBY2YBRQ-YQic4wxL.js → sequenceDiagram-DBY2YBRQ-CjnUnaw9.js} +3 -3
- package/dist/simple-logger-9yf7ypyB.cjs +1 -0
- package/dist/simple-logger-DwH1YQvq.js +103 -0
- package/dist/{sizeCapture-X5ZJPWSS-BqrdzzsI.cjs → sizeCapture-X5ZJPWSS-BPQhVBe0.cjs} +1 -1
- package/dist/{sizeCapture-X5ZJPWSS-qMsWGfjy.js → sizeCapture-X5ZJPWSS-nb9uU-BE.js} +1 -1
- package/dist/{stateDiagram-2N3HPSRC-D1Ub8LYq.js → stateDiagram-2N3HPSRC-Byg3E1AA.js} +11 -11
- package/dist/{stateDiagram-2N3HPSRC-Ds8f-scd.cjs → stateDiagram-2N3HPSRC-DSqLqSY5.cjs} +1 -1
- package/dist/{stateDiagram-v2-6OUMAXLB-PmrsPXuZ.cjs → stateDiagram-v2-6OUMAXLB-VRhXyf-C.cjs} +1 -1
- package/dist/{stateDiagram-v2-6OUMAXLB-DW8wjtk3.js → stateDiagram-v2-6OUMAXLB-hKcuYy9t.js} +2 -2
- package/dist/styles/markdown.css +1 -1
- package/dist/{swimlanes-5IMT3BWC-jZhcesRT.cjs → swimlanes-5IMT3BWC-CVnOKNcb.cjs} +1 -1
- package/dist/{swimlanes-5IMT3BWC-C8P8vU0w.js → swimlanes-5IMT3BWC-DyIDdThc.js} +3 -3
- package/dist/{swimlanesDiagram-G3AALYLV-B9FKeJRf.js → swimlanesDiagram-G3AALYLV-BF1ofRjP.js} +2 -2
- package/dist/{swimlanesDiagram-G3AALYLV-M5Cg2MHU.cjs → swimlanesDiagram-G3AALYLV-C3U5wLlX.cjs} +1 -1
- package/dist/{timeline-definition-FHXFAJF6-Ch-He--D.js → timeline-definition-FHXFAJF6-DBmE_qU3.js} +38 -38
- package/dist/{timeline-definition-FHXFAJF6-DZm1-KlQ.cjs → timeline-definition-FHXFAJF6-KUETCXLT.cjs} +1 -1
- package/dist/utils/simple-logger.d.ts +1 -0
- package/dist/{vennDiagram-L72KCM5P-CaoPscCM.js → vennDiagram-L72KCM5P-C6j4k5X-.js} +102 -102
- package/dist/{vennDiagram-L72KCM5P-mUSI238J.cjs → vennDiagram-L72KCM5P-DkSV3dIE.cjs} +1 -1
- package/dist/{wardleyDiagram-EHGQE667-CSAqF366.js → wardleyDiagram-EHGQE667-BaG6Cf_u.js} +18 -18
- package/dist/{wardleyDiagram-EHGQE667-CkKP97H-.cjs → wardleyDiagram-EHGQE667-uWMTMxL-.cjs} +1 -1
- package/dist/{xychartDiagram-FW5EYKEG-OEsTD_k4.js → xychartDiagram-FW5EYKEG-BPl5BnMB.js} +27 -27
- package/dist/{xychartDiagram-FW5EYKEG-BivGpkVk.cjs → xychartDiagram-FW5EYKEG-QAFE-xqg.cjs} +1 -1
- package/package.json +12 -8
- package/dist/arc-DzZml7Bc.js +0 -83
- package/dist/extractHeadings-DgefF9l1.cjs +0 -311
- package/dist/flowDiagram-23GEKE2U-BOmNlv7X.cjs +0 -1
- package/dist/flowDiagram-23GEKE2U-DMZnRz-6.js +0 -7
- package/dist/providers-Bxr2Wb-j.cjs +0 -1
package/dist/index.server.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("node:child_process"),f=require("node:fs"),q=require("node:module"),O=require("node:net"),J=require("node:path"),$=require("node:url"),y=require("@connectrpc/connect"),x=require("@connectrpc/connect-node"),n=require("@bufbuild/protobuf");var k=typeof document<"u"?document.currentScript:null;function _(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const E=_(O),w=_(J);class c extends n.Message{markdownText="";filePath="";workspaceRoot="";validateExistence=!1;enableSubscript;enableSuperscript;enableMark;enableTableMerge;enableEmbeds;enableZennDirectives;resolveImports=!1;maxHtmlBytes;deny;constructor(e){super(),n.proto3.util.initPartial(e,this)}static runtime=n.proto3;static typeName="markdown.v1.ConvertRequest";static fields=n.proto3.util.newFieldList(()=>[{no:1,name:"markdown_text",kind:"scalar",T:9},{no:2,name:"file_path",kind:"scalar",T:9},{no:3,name:"workspace_root",kind:"scalar",T:9},{no:4,name:"validate_existence",kind:"scalar",T:8},{no:5,name:"enable_subscript",kind:"scalar",T:8,opt:!0},{no:6,name:"enable_superscript",kind:"scalar",T:8,opt:!0},{no:7,name:"enable_mark",kind:"scalar",T:8,opt:!0},{no:8,name:"enable_table_merge",kind:"scalar",T:8,opt:!0},{no:9,name:"enable_embeds",kind:"scalar",T:8,opt:!0},{no:10,name:"enable_zenn_directives",kind:"scalar",T:8,opt:!0},{no:11,name:"resolve_imports",kind:"scalar",T:8},{no:12,name:"max_html_bytes",kind:"scalar",T:13,opt:!0},{no:13,name:"deny",kind:"message",T:o}]);static fromBinary(e,t){return new c().fromBinary(e,t)}static fromJson(e,t){return new c().fromJson(e,t)}static fromJsonString(e,t){return new c().fromJsonString(e,t)}static equals(e,t){return n.proto3.util.equals(c,e,t)}}class o extends n.Message{segmentPatterns=[];constructor(e){super(),n.proto3.util.initPartial(e,this)}static runtime=n.proto3;static typeName="markdown.v1.DenyRules";static fields=n.proto3.util.newFieldList(()=>[{no:1,name:"segment_patterns",kind:"scalar",T:9,repeated:!0}]);static fromBinary(e,t){return new o().fromBinary(e,t)}static fromJson(e,t){return new o().fromJson(e,t)}static fromJsonString(e,t){return new o().fromJsonString(e,t)}static equals(e,t){return n.proto3.util.equals(o,e,t)}}class l extends n.Message{htmlContent="";headings=[];constructor(e){super(),n.proto3.util.initPartial(e,this)}static runtime=n.proto3;static typeName="markdown.v1.ConvertResponse";static fields=n.proto3.util.newFieldList(()=>[{no:1,name:"html_content",kind:"scalar",T:9},{no:2,name:"headings",kind:"message",T:m,repeated:!0}]);static fromBinary(e,t){return new l().fromBinary(e,t)}static fromJson(e,t){return new l().fromJson(e,t)}static fromJsonString(e,t){return new l().fromJsonString(e,t)}static equals(e,t){return n.proto3.util.equals(l,e,t)}}class m extends n.Message{text="";depth=0;id="";constructor(e){super(),n.proto3.util.initPartial(e,this)}static runtime=n.proto3;static typeName="markdown.v1.Heading";static fields=n.proto3.util.newFieldList(()=>[{no:1,name:"text",kind:"scalar",T:9},{no:2,name:"depth",kind:"scalar",T:5},{no:3,name:"id",kind:"scalar",T:9}]);static fromBinary(e,t){return new m().fromBinary(e,t)}static fromJson(e,t){return new m().fromJson(e,t)}static fromJsonString(e,t){return new m().fromJsonString(e,t)}static equals(e,t){return n.proto3.util.equals(m,e,t)}}const H={typeName:"markdown.v1.MarkdownService",methods:{convert:{name:"Convert",I:c,O:l,kind:n.MethodKind.Unary}}},u=process.env.MARKDOWN_SOCKET_PATH||"/tmp/markdown.sock",L=new x.Http2SessionManager("http://localhost",void 0,{createConnection:()=>E.connect(u)}),P=64*1024,C=4294967295,g=Math.floor((C-P)/2);class B extends Error{constructor(e){super(e.rawMessage,{cause:e}),this.name="MarkdownResourceExhaustedError"}}const S=()=>{try{return w.dirname($.fileURLToPath(typeof document>"u"?require("url").pathToFileURL(__filename).href:k&&k.tagName.toUpperCase()==="SCRIPT"&&k.src||new URL("index.server.cjs",document.baseURI).href))}catch{return __dirname}},R=()=>`@aiquants/markdown-${process.platform}-${process.arch}`,T=()=>process.platform==="win32"?"bin/markdown-api.exe":"bin/markdown-api",D=()=>{const r=process.env.MARKDOWN_API_BINARY;if(r&&f.existsSync(r))return r;try{const t=q.createRequire(w.join(S(),"index.js")).resolve(`${R()}/${T()}`);if(f.existsSync(t))return t}catch{}const e=w.join(S(),"..","..","go","markdown-api","dist",w.basename(T()));return f.existsSync(e)?e:void 0},j=()=>[`markdown-api binary not found for ${process.platform}-${process.arch}.`,`Expected the optional dependency ${R()} to be installed.`,"If your platform is unsupported, build the service yourself","(https://github.com/fehde-k/aiquants/tree/main/packages/go/markdown-api)","and point MARKDOWN_API_BINARY at it."].join(" "),N=()=>new Promise(r=>{const e=E.connect(u);e.on("connect",()=>{e.destroy(),r(!0)}),e.on("error",()=>r(!1))}),v=async r=>{const e=Date.now();for(;Date.now()-e<r;){if(await N())return!0;await new Promise(t=>setTimeout(t,100))}return!1};let d=null,p=null;const U=2e3,F=()=>{const r=Number(process.env.MARKDOWN_API_STARTUP_TIMEOUT_MS);return Number.isFinite(r)&&r>0?r:1e4};let h=null;const K=async()=>{if(await N())return!0;if(p)return p;p=(async()=>{const e=D();if(!e)return await v(U)?!0:(h=j(),!1);h=null;try{f.existsSync(u)&&f.unlinkSync(u)}catch{}try{d=I.spawn(e,[],{stdio:"ignore"});const t=()=>{if(d){try{d.kill("SIGTERM")}catch{}d=null}};return process.once("exit",t),await v(F())?!0:(console.error("markdown-api Go server did not become ready on socket:",u),t(),process.removeListener("exit",t),!1)}catch(t){return console.error("Failed to spawn markdown-api Go server:",t),d=null,!1}})();const r=await p;return r||(p=null),r},Y=r=>{if(!Array.isArray(r.deniedPathSegments))throw new TypeError("parseMarkdown: deniedPathSegments must be an array of path segment patterns (an empty array denies nothing)");if(!Number.isSafeInteger(r.maxHtmlBytes)||r.maxHtmlBytes<=0||r.maxHtmlBytes>g)throw new RangeError(`parseMarkdown: maxHtmlBytes must be an integer from 1 to ${g}, got ${r.maxHtmlBytes}`);if(r.timeoutMs!==void 0&&(!Number.isSafeInteger(r.timeoutMs)||r.timeoutMs<=0))throw new RangeError(`parseMarkdown: timeoutMs must be a positive integer, got ${r.timeoutMs}`)},G=async(r,e,t,i,a)=>{if(Y(a),!await K()){const s=h?` ${h}`:"";throw new Error(`markdown service is not reachable on ${u}.${s}`)}const M={};i&&(M.Authorization=`Bearer ${i}`);const A=y.createClient(H,x.createConnectTransport({baseUrl:"http://localhost",httpVersion:"2",sessionManager:L,readMaxBytes:2*a.maxHtmlBytes+P}));try{const s=await A.convert({markdownText:r,filePath:e,workspaceRoot:t,validateExistence:a.validateExistence??!0,enableSubscript:a.enableSubscript,enableSuperscript:a.enableSuperscript,enableMark:a.enableMark,enableTableMerge:a.enableTableMerge,enableEmbeds:a.enableEmbeds,enableZennDirectives:a.enableZennDirectives,resolveImports:a.resolveImports??!1,maxHtmlBytes:a.maxHtmlBytes,deny:new o({segmentPatterns:[...a.deniedPathSegments]})},{headers:M,signal:a.signal,timeoutMs:a.timeoutMs});return{htmlContent:s.htmlContent,headings:s.headings.map(b=>({text:b.text,depth:b.depth,id:b.id}))}}catch(s){throw s instanceof y.ConnectError&&s.code===y.Code.ResourceExhausted?new B(s):s}};exports.MAX_HTML_BYTES_LIMIT=g;exports.MarkdownResourceExhaustedError=B;exports.parseMarkdown=G;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./linkCards-Bjd_vW39.cjs"),w=require("./simple-logger-9yf7ypyB.cjs"),Te=require("node:dns/promises"),C=require("node:net"),P=require("undici"),ye=require("htmlparser2"),Se=require("node:child_process"),L=require("node:fs"),_e=require("node:module"),ve=require("node:path"),Ae=require("node:url"),B=require("@connectrpc/connect"),ie=require("@connectrpc/connect-node"),u=require("@bufbuild/protobuf");var U=typeof document<"u"?document.currentScript:null;function le(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,n.get?n:{enumerable:!0,get:()=>t[e]})}}return r.default=t,Object.freeze(r)}const ce=le(C),I=le(ve),Re=[[[0],8],[[10],8],[[100,64],10],[[127],8],[[169,254],16],[[172,16],12],[[192,0,0],24],[[192,0,2],24],[[192,168],16],[[198,18],15],[[198,51,100],24],[[203,0,113],24],[[224],4],[[240],4]],Le=[[[100,65435],32],[[0,0,0,0,65535,0],96],[[256,0,0,0],64],[[256,0,0,1],64],[[8193,0],32],[[8193,2,0],48],[[8193,3512],32],[[8194],16],[[16383],20],[[24320],16],[[64512],7],[[65152],10],[[65216],10],[[65280],8]],y=new C.BlockList;for(const[t,r]of Re){const e=[...t,0,0,0].slice(0,4).join(".");y.addSubnet(e,r,"ipv4"),y.addSubnet(`::ffff:${e}`,96+r,"ipv6"),y.addSubnet(`::${e}`,96+r,"ipv6")}for(const[t,r]of Le)y.addSubnet(`${t.map(e=>e.toString(16)).join(":")}::`,r,"ipv6");const j=t=>{const r=t.replace(/^\[/u,"").replace(/\]$/u,"").replace(/%.*$/su,""),e=C.isIP(r);return e!==0&&y.check(r,e===4?"ipv4":"ipv6")},ue="ERR_LINK_CARD_PRIVATE_ADDRESS",Q=Object.freeze({timeoutMs:1e3,tries:2}),ee=new Te.Resolver({timeout:Q.timeoutMs,tries:Q.tries}),te=(t,r)=>({error:Object.assign(new Error(`Blocked hostname resolving to a private address: ${t} -> ${r}`),{code:ue})}),Ce=async(t,r)=>{const e=C.isIP(t);if(e!==0)return j(t)?te(t,t):{error:null,family:e===4?4:6,addresses:[t]};const[n,o]=await Promise.allSettled([r===6?Promise.resolve([]):ee.resolve4(t),r===4?Promise.resolve([]):ee.resolve6(t)]),s=n.status==="fulfilled"?n.value:[],a=o.status==="fulfilled"?o.value:[],i=[...s,...a].find(M=>j(M));if(i!==void 0)return te(t,i);const[l,...c]=s;if(l!==void 0)return{error:null,family:4,addresses:[l,...c]};const[f,..._]=a;return f!==void 0?{error:null,family:6,addresses:[f,..._]}:n.status==="rejected"?{error:n.reason}:o.status==="rejected"?{error:o.reason}:{error:Object.assign(new Error(`No address for ${t}`),{code:"ENOTFOUND"})}},Me=(t,r,e)=>{const n=r.family===4||r.family==="IPv4"?4:r.family===6||r.family==="IPv6"?6:0;Ce(t,n).then(o=>{if(o.error!==null){e(o.error,"");return}const{family:s,addresses:a}=o;r.all===!0?e(null,a.map(i=>({address:i,family:s}))):e(null,a[0],s)})},Oe=new Set(["127.0.0.1","0.0.0.0","[::1]"]),Ie=[".local",".internal",".home.arpa"],z=(t,r)=>{let e;try{e=new URL(t)}catch{return{ok:!1,reason:"forbidden-url",detail:"Invalid URL"}}if(e.protocol!=="http:"&&e.protocol!=="https:")return{ok:!1,reason:"forbidden-url",detail:"Only http(s) URLs are allowed"};if(e.username!==""||e.password!=="")return{ok:!1,reason:"forbidden-url",detail:"URLs with a user name or password are not allowed"};e.hash="";const n=e.hostname.replace(/\.+$/u,"");return n==="localhost"||n.endsWith(".localhost")||Oe.has(n)?{ok:!1,reason:"private-network",detail:"Localhost access is not allowed"}:j(n)?{ok:!1,reason:"private-network",detail:"Private network access is not allowed"}:!(n.startsWith("[")||n.includes("."))||Ie.some(s=>n.endsWith(s))?{ok:!1,reason:"private-network",detail:"Internal domain access is not allowed"}:{ok:!0,href:e.href}},de=t=>{let r;try{r=new URL(t)}catch{return"(unparsable URL)"}return r.protocol!=="http:"&&r.protocol!=="https:"?`(a ${r.protocol} URL)`:(r.username="",r.password="",r.href)},fe=1024,Pe=/^[\t\n\f\r ]$/u,g=t=>Pe.test(t),H=t=>t.replace(/[A-Z]/gu,r=>r.toLowerCase()),K=t=>{try{return new TextDecoder(t).encoding}catch{return null}},xe=t=>t[0]===239&&t[1]===187&&t[2]===191?"utf-8":t[0]===254&&t[1]===255?"utf-16be":t[0]===255&&t[1]===254?"utf-16le":null,Ne=t=>{for(const r of t.split(";").slice(1)){const e=r.indexOf("=");if(e!==-1&&r.slice(0,e).trim().toLowerCase()==="charset")return r.slice(e+1).trim().replace(/^"(.*)"$/su,"$1")}return null},De=t=>{let r=0;for(;;){const e=t.indexOf("charset",r);if(e===-1)return null;let n=e+7;for(;g(t.charAt(n));)n+=1;if(t.charAt(n)!=="="){r=n;continue}for(n+=1;g(t.charAt(n));)n+=1;const o=t.charAt(n);if(o==='"'||o==="'"){const a=t.indexOf(o,n+1);return a===-1?null:t.slice(n+1,a)}const s=t.slice(n).search(/[\t\n\f\r ;]/u);return s===-1?t.slice(n):t.slice(n,n+s)}},me=(t,r)=>{let e=r;for(;g(t.charAt(e))||t.charAt(e)==="/";)e+=1;if(t.charAt(e)===">"||e>=t.length)return{attribute:null,end:e};let n="";for(;;){const a=t.charAt(e);if(a==="")return{attribute:null,end:e};if(a==="="&&n!=="")break;if(g(a)){for(;g(t.charAt(e));)e+=1;if(t.charAt(e)!=="=")return{attribute:{name:n,value:""},end:e};break}if(a==="/"||a===">")return{attribute:{name:n,value:""},end:e};n+=H(a),e+=1}for(e+=1;g(t.charAt(e));)e+=1;const o=t.charAt(e);if(o==='"'||o==="'"){const a=t.indexOf(o,e+1);return a===-1?{attribute:null,end:t.length}:{attribute:{name:n,value:H(t.slice(e+1,a))},end:a+1}}if(o===">")return{attribute:{name:n,value:""},end:e};const s=t.slice(e).search(/[\t\n\f\r >]/u);return s===-1?{attribute:null,end:t.length}:{attribute:{name:n,value:H(t.slice(e,e+s))},end:e+s}},Be=(t,r)=>{const e=new Set;let n=!1,o=null,s=null,a=r;for(;;){const{attribute:i,end:l}=me(t,a);if(a=l,i===null)break;if(!e.has(i.name))if(e.add(i.name),i.name==="http-equiv")n=i.value==="content-type";else if(i.name==="content"){const c=De(i.value),f=c===null?null:K(c);f!==null&&s===null&&(s=f,o=!0)}else i.name==="charset"&&(s=K(i.value)??!1,o=!1)}return o===null||typeof s!="string"||o&&!n?{encoding:null,end:a}:s==="utf-16be"||s==="utf-16le"?{encoding:"utf-8",end:a}:{encoding:s==="x-user-defined"?"windows-1252":s,end:a}},Ue=t=>{const r=Array.from(t.subarray(0,fe),n=>String.fromCharCode(n)).join("");let e=0;for(;e<r.length;)if(r.startsWith("<!--",e)){const n=r.indexOf("-->",e+2);if(n===-1)return null;e=n+3}else if(/^<meta[\t\n\f\r /]$/iu.test(r.slice(e,e+6))){const{encoding:n,end:o}=Be(r,e+5);if(n!==null)return n;e=o+1}else if(/^<\/?[A-Za-z]/u.test(r.slice(e,e+3))){let n=e+1;for(;n<r.length&&!g(r.charAt(n))&&r.charAt(n)!==">";)n+=1;for(;;){const o=me(r,n);if(n=o.end,o.attribute===null)break}e=n+1}else if(/^<[!/?]$/u.test(r.slice(e,e+2))){const n=r.indexOf(">",e+1);if(n===-1)return null;e=n+1}else e+=1;return null},He=(t,r)=>{const e=xe(t);if(e!==null)return e;const n=Ne(r),o=n===null?null:K(n);return o!==null?o:Ue(t)??"utf-8"},$e=(t,r)=>{const e=new Uint8Array(r);let n=0;for(const o of t)e.set(o,n),n+=o.byteLength;return e},je=t=>{const r=[];let e=0,n=null;const o=()=>{const s=$e(r,e);r.length=0;const a=new TextDecoder(He(s,t));return n=a,{started:a,text:a.decode(s,{stream:!0})}};return{write:s=>n!==null?n.decode(s,{stream:!0}):(r.push(s),e+=s.byteLength,e<fe?"":o().text),end:()=>{if(n!==null)return n.decode();const{started:s,text:a}=o();return a+s.decode()}}},Ke=(t,r,e)=>{const n=new Map,o=new Map;return s=>{const a=n.get(s);if(a!==void 0&&a.expireAt>e())return Promise.resolve(a.value);const i=o.get(s);if(i!==void 0)return i;const l=t(s).then(c=>(!n.has(s)&&n.size>=r.maxEntries&&n.delete(n.keys().next().value),n.set(s,{value:c,expireAt:e()+r.ttlMsOf(c)}),c)).finally(()=>{o.delete(s)});return o.set(s,l),l}},qe=65536,ze=new Set([301,302,303,307,308]),Xe=new Set(["text/html","application/xhtml+xml"]),Fe=new Set(["ERR_IP_BLOCKED",ue]),pe=Object.freeze({timeoutMs:5e3,maxRedirects:5,maxBodyBytes:8*1024*1024}),Je=Object.freeze({lookup:Me,blockList:y}),Ge=(t,r)=>{const e=P.buildConnector({lookup:t.lookup,blockList:t.blockList,timeout:r}),n=P.buildConnector({timeout:r});return(o,s)=>{if(o.protocol!=="https:"){e(o,s);return}const a=C.connect({host:o.hostname,port:Number(o.port===""?443:o.port),lookup:t.lookup,blockList:t.blockList}),i=l=>{a.destroy(),s(l,null)};a.setTimeout(r,()=>i(Object.assign(new Error(`Connect timeout: ${o.hostname}`),{code:"UND_ERR_CONNECT_TIMEOUT"}))),a.once("error",i),a.once("connect",()=>{a.setTimeout(0),a.removeListener("error",i),n({...o,httpSocket:a},s)})}},Ve=t=>new P.Agent({maxHeaderSize:qe,connect:Ge(Je,pe.timeoutMs)}),$=async t=>{t.body!==null&&await Promise.allSettled([t.body.cancel()])},Ye=t=>t!==null&&Xe.has(t.split(";",1)[0].trim().toLowerCase()),We=t=>{const r=[t];for(let e=0;e<16&&r.length>0;e+=1){const n=r.shift();if(!(n instanceof Error))continue;const o=n.code;if(typeof o=="string"&&Fe.has(o))return n.message;r.push(n.cause,...n instanceof AggregateError?n.errors:[])}return null},he=(t,r)=>{const e=We(t);return e!==null?(w.linkCardLogger.info("Refused link-card connection to a private address:",r,e),{ok:!1,reason:"private-network"}):(w.linkCardLogger.error("Error fetching link-card metadata:",t),{ok:!1,reason:"unreachable"})},Ze=()=>new Promise(t=>{setImmediate(t)}),Qe=async(t,r,e,n)=>{if(t.body===null)return{ok:!0,value:r.end()};const o=t.body.getReader();let s=0;for(;;){let a;try{a=await o.read()}catch(f){return he(f,n)}if(a.done)break;const i=e-s,l=a.value.byteLength>i,c=l?a.value.subarray(0,i):a.value;if(s+=c.byteLength,!r.write(c)){await Promise.allSettled([o.cancel()]);break}if(l){await Promise.allSettled([o.cancel()]),w.linkCardLogger.warn("Link-card page body exceeds the size limit; parsing only its first bytes:",n,e);break}await Ze()}return{ok:!0,value:r.end()}},et=async(t,r,e,n)=>{let o=t;for(let s=0;s<=r.limits.maxRedirects;s+=1){let a;try{a=await P.fetch(o,{signal:n,redirect:"manual",dispatcher:r.agent})}catch(f){return he(f,o)}const i=ze.has(a.status)?a.headers.get("location")?.trim()??"":"";if(i===""){if(!a.ok)return await $(a),{ok:!1,reason:"unreachable"};const f=a.headers.get("content-type");return Ye(f)?Qe(a,e({url:o,contentType:f}),r.limits.maxBodyBytes,o):(await $(a),{ok:!1,reason:"not-html"})}await $(a);let l;try{l=new URL(i,o)}catch{return w.linkCardLogger.error("Blocked redirect to an unparsable Location from:",o),{ok:!1,reason:"unreachable"}}const c=z(l.href);if(!c.ok)return w.linkCardLogger.info("Refused link-card redirect:",de(l),`(${c.reason}: ${c.detail})`),{ok:!1,reason:c.reason};o=c.href}return w.linkCardLogger.error("Too many redirects while fetching link-card metadata:",t),{ok:!1,reason:"unreachable"}},tt=(t,r,e)=>{const n=new AbortController,o=setTimeout(()=>n.abort(),r.limits.timeoutMs);return et(t,r,e,n.signal).finally(()=>{clearTimeout(o)})},rt=256,nt=4096,ot=64,at=new Set(["html","head","title","meta","link","base","basefont","bgsound","noframes","script","style","template","noscript"]),st=new Set(["title","script","style"]),it=new Set(["noscript","template","noframes"]),lt=t=>t?.toLowerCase().split(/[\t\n\f\r ]+/u).includes("icon")===!0,ct=(t,r)=>{if(t===void 0)return r;let e;try{e=new URL(t,r)}catch{return r}return(e.protocol==="http:"||e.protocol==="https:")&&e.href.length<=p.LINK_CARD_URL_LIMIT?e.href:r},re=(t,r,e)=>{const n=t?.trim();if(n===void 0||n==="")return;let o;try{o=new URL(n,r)}catch{return}return o.href.length<=p.LINK_CARD_URL_LIMIT&&z(o.href).ok?o.href:void 0},ut=(t,r)=>{let e=!1,n=0,o=0,s=0,a=null,i=null,l=null,c,f,_,M,X,F,J=!1,G,V=!1;const N=()=>{e=!0,D.pause()},D=new ye.Parser({onopentagname(d){n+=1,o+=1,s=0,(n>rt||o>nt||a===null&&!at.has(d))&&N()},onattribute(){s+=1,s>ot&&N()},onopentag(d,m){if(!(e||a!==null)){if(it.has(d)){a=n;return}if(d==="meta"){const h=m.content;m.property==="og:site_name"&&(M=h),m.property==="og:title"&&(f=h),m.property==="og:description"&&(_=h),m.property==="og:image"&&(X=h),m.name==="description"&&(_=h)}else d==="link"&&!J&<(m.rel)?(J=!0,F=m.href):d==="base"&&!V&&Object.hasOwn(m,"href")&&(V=!0,G=m.href);st.has(d)&&(i=d,d==="title"&&c===void 0&&(l=""))}},ontext(d){a===null&&(l!==null?l+=d:i===null&&/[^\t\n\f\r ]/u.test(d)&&N())},onclosetag(d){if(!e){if(n-=1,a!==null){n<a&&(a=null);return}d===i&&(i=null,l!==null&&(c=l,l=null))}}},{decodeEntities:!0});return{write:d=>(e||D.write(d),!e),end:()=>{e||D.end();const d=p.linkCardTextOf(f,p.LINK_CARD_TEXT_LIMITS.title)??p.linkCardTextOf(c,p.LINK_CARD_TEXT_LIMITS.title),m=p.linkCardTextOf(_,p.LINK_CARD_TEXT_LIMITS.description),h=p.linkCardTextOf(M,p.LINK_CARD_TEXT_LIMITS.siteName),Y=ct(G,t),W=re(X,Y),Z=re(F,Y);return{...d===null?{}:{title:d},...m===null?{}:{description:m},...h===null?{}:{site_name:h},...W===void 0?{}:{image:W},...Z===void 0?{}:{icon:Z}}}}},dt=new Set(["authorize"]),ft="private, max-age=1800",mt=3600*1e3,we=Object.freeze({"private-network":1800,"forbidden-url":1800,unreachable:300,"not-html":300}),pt=1e3,O="no-store",v=(t,r,e,n,o={})=>new Response(t.method==="HEAD"?null:JSON.stringify(e),{status:r,headers:{"Content-Type":"application/json; charset=utf-8","Cache-Control":n,"X-Content-Type-Options":"nosniff",...o}}),ne=t=>new Response(null,{status:204,headers:{"Cache-Control":`private, max-age=${we[t]}`,"X-Content-Type-Options":"nosniff",[p.LINK_CARD_SKIP_HEADER]:t}}),ht=t=>{if(typeof t!="object"||t===null)throw new TypeError("createLinkCardHandler: options must be an object with an authorize function");if(typeof t.authorize!="function")throw new TypeError("createLinkCardHandler: options.authorize must be a function (pass () => true to serve everyone)");const r=Object.keys(t).filter(e=>!dt.has(e));if(r.length>0)throw new TypeError(`createLinkCardHandler: unknown option(s): ${r.join(", ")}`)},wt=t=>r=>{const e=je(r.contentType),n=ut(r.url);return{write:o=>n.write(e.write(o)),end:()=>(n.write(e.end()),n.end())}},gt=(t,r)=>{ht(t);const{authorize:e}=t,n=Ve(),o=Ke(s=>tt(s,{agent:n,scope:r,limits:pe},wt()),{maxEntries:pt,ttlMsOf:s=>s.ok?mt:we[s.reason]*1e3},Date.now);return async s=>{if(s.method!=="GET"&&s.method!=="HEAD")return v(s,405,{error:"Method Not Allowed"},O,{Allow:"GET, HEAD"});if(await e(s)!==!0)return v(s,401,{error:"Unauthorized"},O);const a=new URL(s.url).searchParams.get("url");if(a===null||a==="")return v(s,400,{error:"Missing 'url' parameter"},O);const i=z(a);if(!i.ok)return w.linkCardLogger.info("Refused link-card URL:",de(a),`(${i.reason}: ${i.detail})`),ne(i.reason);let l;try{l=await o(i.href)}catch(c){return w.linkCardLogger.error("Unexpected error while reading link-card metadata:",i.href,c),v(s,500,{error:"Internal Server Error"},O)}return l.ok?v(s,200,l.value,ft):ne(l.reason)}},kt=t=>gt(t,"public");class b extends u.Message{markdownText="";filePath="";workspaceRoot="";validateExistence=!1;enableSubscript;enableSuperscript;enableMark;enableTableMerge;enableEmbeds;enableZennDirectives;resolveImports=!1;maxHtmlBytes;deny;constructor(r){super(),u.proto3.util.initPartial(r,this)}static runtime=u.proto3;static typeName="markdown.v1.ConvertRequest";static fields=u.proto3.util.newFieldList(()=>[{no:1,name:"markdown_text",kind:"scalar",T:9},{no:2,name:"file_path",kind:"scalar",T:9},{no:3,name:"workspace_root",kind:"scalar",T:9},{no:4,name:"validate_existence",kind:"scalar",T:8},{no:5,name:"enable_subscript",kind:"scalar",T:8,opt:!0},{no:6,name:"enable_superscript",kind:"scalar",T:8,opt:!0},{no:7,name:"enable_mark",kind:"scalar",T:8,opt:!0},{no:8,name:"enable_table_merge",kind:"scalar",T:8,opt:!0},{no:9,name:"enable_embeds",kind:"scalar",T:8,opt:!0},{no:10,name:"enable_zenn_directives",kind:"scalar",T:8,opt:!0},{no:11,name:"resolve_imports",kind:"scalar",T:8},{no:12,name:"max_html_bytes",kind:"scalar",T:13,opt:!0},{no:13,name:"deny",kind:"message",T:k}]);static fromBinary(r,e){return new b().fromBinary(r,e)}static fromJson(r,e){return new b().fromJson(r,e)}static fromJsonString(r,e){return new b().fromJsonString(r,e)}static equals(r,e){return u.proto3.util.equals(b,r,e)}}class k extends u.Message{segmentPatterns=[];constructor(r){super(),u.proto3.util.initPartial(r,this)}static runtime=u.proto3;static typeName="markdown.v1.DenyRules";static fields=u.proto3.util.newFieldList(()=>[{no:1,name:"segment_patterns",kind:"scalar",T:9,repeated:!0}]);static fromBinary(r,e){return new k().fromBinary(r,e)}static fromJson(r,e){return new k().fromJson(r,e)}static fromJsonString(r,e){return new k().fromJsonString(r,e)}static equals(r,e){return u.proto3.util.equals(k,r,e)}}class E extends u.Message{htmlContent="";headings=[];constructor(r){super(),u.proto3.util.initPartial(r,this)}static runtime=u.proto3;static typeName="markdown.v1.ConvertResponse";static fields=u.proto3.util.newFieldList(()=>[{no:1,name:"html_content",kind:"scalar",T:9},{no:2,name:"headings",kind:"message",T,repeated:!0}]);static fromBinary(r,e){return new E().fromBinary(r,e)}static fromJson(r,e){return new E().fromJson(r,e)}static fromJsonString(r,e){return new E().fromJsonString(r,e)}static equals(r,e){return u.proto3.util.equals(E,r,e)}}class T extends u.Message{text="";depth=0;id="";constructor(r){super(),u.proto3.util.initPartial(r,this)}static runtime=u.proto3;static typeName="markdown.v1.Heading";static fields=u.proto3.util.newFieldList(()=>[{no:1,name:"text",kind:"scalar",T:9},{no:2,name:"depth",kind:"scalar",T:5},{no:3,name:"id",kind:"scalar",T:9}]);static fromBinary(r,e){return new T().fromBinary(r,e)}static fromJson(r,e){return new T().fromJson(r,e)}static fromJsonString(r,e){return new T().fromJsonString(r,e)}static equals(r,e){return u.proto3.util.equals(T,r,e)}}const bt={typeName:"markdown.v1.MarkdownService",methods:{convert:{name:"Convert",I:b,O:E,kind:u.MethodKind.Unary}}},S=process.env.MARKDOWN_SOCKET_PATH||"/tmp/markdown.sock",Et=new ie.Http2SessionManager("http://localhost",void 0,{createConnection:()=>ce.connect(S)}),ge=64*1024,Tt=4294967295,q=Math.floor((Tt-ge)/2);class ke extends Error{constructor(r){super(r.rawMessage,{cause:r}),this.name="MarkdownResourceExhaustedError"}}const oe=()=>{try{return I.dirname(Ae.fileURLToPath(typeof document>"u"?require("url").pathToFileURL(__filename).href:U&&U.tagName.toUpperCase()==="SCRIPT"&&U.src||new URL("index.server.cjs",document.baseURI).href))}catch{return __dirname}},be=()=>`@aiquants/markdown-${process.platform}-${process.arch}`,ae=()=>process.platform==="win32"?"bin/markdown-api.exe":"bin/markdown-api",yt=()=>{const t=process.env.MARKDOWN_API_BINARY;if(t&&L.existsSync(t))return t;try{const e=_e.createRequire(I.join(oe(),"index.js")).resolve(`${be()}/${ae()}`);if(L.existsSync(e))return e}catch{}const r=I.join(oe(),"..","..","go","markdown-api","dist",I.basename(ae()));return L.existsSync(r)?r:void 0},St=()=>[`markdown-api binary not found for ${process.platform}-${process.arch}.`,`Expected the optional dependency ${be()} to be installed.`,"If your platform is unsupported, build the service yourself","(https://github.com/fehde-k/aiquants/tree/main/packages/go/markdown-api)","and point MARKDOWN_API_BINARY at it."].join(" "),Ee=()=>new Promise(t=>{const r=ce.connect(S);r.on("connect",()=>{r.destroy(),t(!0)}),r.on("error",()=>t(!1))}),se=async t=>{const r=Date.now();for(;Date.now()-r<t;){if(await Ee())return!0;await new Promise(e=>setTimeout(e,100))}return!1};let A=null,R=null;const _t=2e3,vt=()=>{const t=Number(process.env.MARKDOWN_API_STARTUP_TIMEOUT_MS);return Number.isFinite(t)&&t>0?t:1e4};let x=null;const At=async()=>{if(await Ee())return!0;if(R)return R;R=(async()=>{const r=yt();if(!r)return await se(_t)?!0:(x=St(),!1);x=null;try{L.existsSync(S)&&L.unlinkSync(S)}catch{}try{A=Se.spawn(r,[],{stdio:"ignore"});const e=()=>{if(A){try{A.kill("SIGTERM")}catch{}A=null}};return process.once("exit",e),await se(vt())?!0:(console.error("markdown-api Go server did not become ready on socket:",S),e(),process.removeListener("exit",e),!1)}catch(e){return console.error("Failed to spawn markdown-api Go server:",e),A=null,!1}})();const t=await R;return t||(R=null),t},Rt=t=>{if(!Array.isArray(t.deniedPathSegments))throw new TypeError("parseMarkdown: deniedPathSegments must be an array of path segment patterns (an empty array denies nothing)");if(!Number.isSafeInteger(t.maxHtmlBytes)||t.maxHtmlBytes<=0||t.maxHtmlBytes>q)throw new RangeError(`parseMarkdown: maxHtmlBytes must be an integer from 1 to ${q}, got ${t.maxHtmlBytes}`);if(t.timeoutMs!==void 0&&(!Number.isSafeInteger(t.timeoutMs)||t.timeoutMs<=0))throw new RangeError(`parseMarkdown: timeoutMs must be a positive integer, got ${t.timeoutMs}`)},Lt=async(t,r,e,n,o)=>{if(Rt(o),!await At()){const i=x?` ${x}`:"";throw new Error(`markdown service is not reachable on ${S}.${i}`)}const s={};n&&(s.Authorization=`Bearer ${n}`);const a=B.createClient(bt,ie.createConnectTransport({baseUrl:"http://localhost",httpVersion:"2",sessionManager:Et,readMaxBytes:2*o.maxHtmlBytes+ge}));try{const i=await a.convert({markdownText:t,filePath:r,workspaceRoot:e,validateExistence:o.validateExistence??!0,enableSubscript:o.enableSubscript,enableSuperscript:o.enableSuperscript,enableMark:o.enableMark,enableTableMerge:o.enableTableMerge,enableEmbeds:o.enableEmbeds,enableZennDirectives:o.enableZennDirectives,resolveImports:o.resolveImports??!1,maxHtmlBytes:o.maxHtmlBytes,deny:new k({segmentPatterns:[...o.deniedPathSegments]})},{headers:s,signal:o.signal,timeoutMs:o.timeoutMs});return{htmlContent:i.htmlContent,headings:i.headings.map(l=>({text:l.text,depth:l.depth,id:l.id}))}}catch(i){throw i instanceof B.ConnectError&&i.code===B.Code.ResourceExhausted?new ke(i):i}};exports.MAX_HTML_BYTES_LIMIT=q;exports.MarkdownResourceExhaustedError=ke;exports.createLinkCardHandler=kt;exports.parseMarkdown=Lt;
|
package/dist/index.server.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
+
export { createLinkCardHandler, type LinkCardHandler, type LinkCardHandlerOptions } from "./linkCardServer/linkCardHandler.server.ts";
|
|
1
2
|
export { MAX_HTML_BYTES_LIMIT, MarkdownResourceExhaustedError, type ParseOptions, type ParseResult, parseMarkdown } from "./remarkProcessor.server.ts";
|