@sonordev/site-kit 5.7.0 → 5.8.1
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 +3 -3
- package/agent-manifest.json +14 -2
- package/dist/AnalyticsProvider-ERNSZ4DH.mjs +12 -0
- package/dist/{AnalyticsProvider-EWF7JN2X.mjs.map → AnalyticsProvider-ERNSZ4DH.mjs.map} +1 -1
- package/dist/AnalyticsProvider-HE6V5UJD.js +33 -0
- package/dist/{AnalyticsProvider-GJFG7YXA.js.map → AnalyticsProvider-HE6V5UJD.js.map} +1 -1
- package/dist/{BlogViewTracker-CKYG6MYU.mjs → BlogViewTracker-2NQ5LBVR.mjs} +13 -10
- package/dist/BlogViewTracker-2NQ5LBVR.mjs.map +1 -0
- package/dist/{BlogViewTracker-2D3IJPJK.js → BlogViewTracker-4OGWSC2Q.js} +14 -11
- package/dist/BlogViewTracker-4OGWSC2Q.js.map +1 -0
- package/dist/ChatWidget-67CHHONZ.js +24 -0
- package/dist/{ChatWidget-AWP6GBVW.js.map → ChatWidget-67CHHONZ.js.map} +1 -1
- package/dist/ChatWidget-T4RICLLT.mjs +15 -0
- package/dist/{ChatWidget-Z5QXDZP3.mjs.map → ChatWidget-T4RICLLT.mjs.map} +1 -1
- package/dist/EngageWidget-TDW2ZI3Q.js +21 -0
- package/dist/{EngageWidget-VT4DYXVO.js.map → EngageWidget-TDW2ZI3Q.js.map} +1 -1
- package/dist/EngageWidget-WXEQTV4X.mjs +12 -0
- package/dist/{EngageWidget-BKEY5TPO.mjs.map → EngageWidget-WXEQTV4X.mjs.map} +1 -1
- package/dist/{FileField-62ZWZMQK.js → FileField-DEVOXJSO.js} +6 -6
- package/dist/{FileField-62ZWZMQK.js.map → FileField-DEVOXJSO.js.map} +1 -1
- package/dist/{FileField-JJN5QKDL.mjs → FileField-Y5YM365S.mjs} +5 -5
- package/dist/{FileField-JJN5QKDL.mjs.map → FileField-Y5YM365S.mjs.map} +1 -1
- package/dist/{FormSpotlight-URS4XRS7.js → FormSpotlight-4Q5FM3YS.js} +25 -21
- package/dist/FormSpotlight-4Q5FM3YS.js.map +1 -0
- package/dist/{FormSpotlight-OTFB6QM5.mjs → FormSpotlight-T3ASGUYB.mjs} +11 -7
- package/dist/FormSpotlight-T3ASGUYB.mjs.map +1 -0
- package/dist/{FormStage-FVKMIV73.js → FormStage-PSAIPZBS.js} +20 -15
- package/dist/FormStage-PSAIPZBS.js.map +1 -0
- package/dist/{FormStage-VPGOCMAV.mjs → FormStage-U5V4MI5Q.mjs} +9 -4
- package/dist/FormStage-U5V4MI5Q.mjs.map +1 -0
- package/dist/ManagedForm-EAZOMNSL.mjs +16 -0
- package/dist/{ManagedForm-CXVDJMHN.mjs.map → ManagedForm-EAZOMNSL.mjs.map} +1 -1
- package/dist/ManagedForm-R6DJXU34.js +25 -0
- package/dist/{ManagedForm-FGNTDGED.js.map → ManagedForm-R6DJXU34.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-SQYB4BZU.mjs → ManagedNewsletterForm-5RY3TWPQ.mjs} +9 -7
- package/dist/ManagedNewsletterForm-5RY3TWPQ.mjs.map +1 -0
- package/dist/{ManagedNewsletterForm-3O5L44AZ.js → ManagedNewsletterForm-VX6GMZXJ.js} +10 -8
- package/dist/ManagedNewsletterForm-VX6GMZXJ.js.map +1 -0
- package/dist/{SignalCore-RFBOBNLQ.js → SignalCore-MWHF2WG4.js} +14 -20
- package/dist/SignalCore-MWHF2WG4.js.map +1 -0
- package/dist/{SignalCore-M2PKKIGH.mjs → SignalCore-ZT6EQGV3.mjs} +8 -14
- package/dist/SignalCore-ZT6EQGV3.mjs.map +1 -0
- package/dist/SitemapSync-OG4TQLDB.mjs +9 -0
- package/dist/{SitemapSync-4OVMIIGC.mjs.map → SitemapSync-OG4TQLDB.mjs.map} +1 -1
- package/dist/SitemapSync-Z62BGZMV.js +18 -0
- package/dist/{SitemapSync-RK3SQ4M2.js.map → SitemapSync-Z62BGZMV.js.map} +1 -1
- package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
- package/dist/analytics/index.js +10 -9
- package/dist/analytics/index.mjs +5 -4
- package/dist/api-D745LGGU.mjs +0 -1
- package/dist/api-XR5APCH3.js +0 -1
- package/dist/blog/BlogLayout.d.ts +3 -1
- package/dist/blog/BlogLayout.d.ts.map +1 -1
- package/dist/blog/BlogList.d.ts +7 -1
- package/dist/blog/BlogList.d.ts.map +1 -1
- package/dist/blog/BlogPost.d.ts +20 -1
- package/dist/blog/BlogPost.d.ts.map +1 -1
- package/dist/blog/BlogSidebar.d.ts +3 -1
- package/dist/blog/BlogSidebar.d.ts.map +1 -1
- package/dist/blog/BlogViewTracker.d.ts +8 -2
- package/dist/blog/BlogViewTracker.d.ts.map +1 -1
- package/dist/blog/ClusterLandingPage.d.ts +3 -1
- package/dist/blog/ClusterLandingPage.d.ts.map +1 -1
- package/dist/blog/ClusterNavigation.d.ts +5 -2
- package/dist/blog/ClusterNavigation.d.ts.map +1 -1
- package/dist/blog/RelatedPosts.d.ts +3 -1
- package/dist/blog/RelatedPosts.d.ts.map +1 -1
- package/dist/blog/index.d.ts +1 -1
- package/dist/blog/index.d.ts.map +1 -1
- package/dist/blog/index.js +40 -31
- package/dist/blog/index.js.map +1 -1
- package/dist/blog/index.mjs +11 -6
- package/dist/blog/index.mjs.map +1 -1
- package/dist/blog/processBlogHtml.d.ts +19 -2
- package/dist/blog/processBlogHtml.d.ts.map +1 -1
- package/dist/blog/public-reads.d.ts +27 -0
- package/dist/blog/public-reads.d.ts.map +1 -0
- package/dist/blog/server-core.d.ts +76 -10
- package/dist/blog/server-core.d.ts.map +1 -1
- package/dist/blog/server-ui.js +29 -23
- package/dist/blog/server-ui.js.map +1 -1
- package/dist/blog/server-ui.mjs +12 -6
- package/dist/blog/server-ui.mjs.map +1 -1
- package/dist/blog/server.d.ts +76 -10
- package/dist/blog/server.d.ts.map +1 -1
- package/dist/blog/server.js +54 -47
- package/dist/blog/server.mjs +5 -2
- package/dist/brand/extract-brand-profile.d.ts +36 -2
- package/dist/brand/extract-brand-profile.d.ts.map +1 -1
- package/dist/{chunk-MW2M6O7A.mjs → chunk-26EKSVXM.mjs} +4 -4
- package/dist/{chunk-MW2M6O7A.mjs.map → chunk-26EKSVXM.mjs.map} +1 -1
- package/dist/{chunk-D553G64G.js → chunk-2HPQTRUB.js} +13 -13
- package/dist/{chunk-D553G64G.js.map → chunk-2HPQTRUB.js.map} +1 -1
- package/dist/{chunk-BFJOZ3MU.mjs → chunk-3EY5E35M.mjs} +36 -71
- package/dist/chunk-3EY5E35M.mjs.map +1 -0
- package/dist/{chunk-BUJWXSYZ.mjs → chunk-3TQUARVN.mjs} +4 -4
- package/dist/{chunk-BUJWXSYZ.mjs.map → chunk-3TQUARVN.mjs.map} +1 -1
- package/dist/{chunk-OYOO2OO5.js → chunk-3VRWKKTD.js} +10 -10
- package/dist/{chunk-OYOO2OO5.js.map → chunk-3VRWKKTD.js.map} +1 -1
- package/dist/{chunk-BFM5PEFV.js → chunk-43I7U5AI.js} +56 -177
- package/dist/chunk-43I7U5AI.js.map +1 -0
- package/dist/{chunk-ILNCUSXW.mjs → chunk-4L7OHRWB.mjs} +12 -9
- package/dist/chunk-4L7OHRWB.mjs.map +1 -0
- package/dist/chunk-4LYW6PMU.mjs +72 -0
- package/dist/chunk-4LYW6PMU.mjs.map +1 -0
- package/dist/chunk-4TLFZ6NR.mjs +16 -0
- package/dist/chunk-4TLFZ6NR.mjs.map +1 -0
- package/dist/{chunk-JQ7M6CVL.mjs → chunk-4VSDMNQU.mjs} +3 -3
- package/dist/{chunk-JQ7M6CVL.mjs.map → chunk-4VSDMNQU.mjs.map} +1 -1
- package/dist/{chunk-4B4S56WJ.mjs → chunk-5B4J3IBX.mjs} +75 -21
- package/dist/chunk-5B4J3IBX.mjs.map +1 -0
- package/dist/{chunk-M5GY2AI3.mjs → chunk-5K6B4LWV.mjs} +4 -10
- package/dist/chunk-5K6B4LWV.mjs.map +1 -0
- package/dist/chunk-5SANRSX3.mjs +17 -0
- package/dist/chunk-5SANRSX3.mjs.map +1 -0
- package/dist/chunk-5XFFUP6D.js +100 -0
- package/dist/chunk-5XFFUP6D.js.map +1 -0
- package/dist/chunk-5YA6SI4Z.mjs +0 -1
- package/dist/{chunk-TDJKGN5Q.mjs → chunk-62Y4W4LR.mjs} +216 -103
- package/dist/chunk-62Y4W4LR.mjs.map +1 -0
- package/dist/{chunk-3CLP35TT.mjs → chunk-6S3JE66D.mjs} +62 -97
- package/dist/chunk-6S3JE66D.mjs.map +1 -0
- package/dist/{chunk-4A5V73SR.mjs → chunk-6WEZWYRU.mjs} +9 -9
- package/dist/{chunk-4A5V73SR.mjs.map → chunk-6WEZWYRU.mjs.map} +1 -1
- package/dist/{chunk-JTF4DFUF.mjs → chunk-7AEVA667.mjs} +4 -4
- package/dist/{chunk-JTF4DFUF.mjs.map → chunk-7AEVA667.mjs.map} +1 -1
- package/dist/{chunk-H65OX263.js → chunk-7DV7Y7BZ.js} +15 -15
- package/dist/{chunk-H65OX263.js.map → chunk-7DV7Y7BZ.js.map} +1 -1
- package/dist/{chunk-7ZX6TO6C.mjs → chunk-7H4HB4UZ.mjs} +50 -26
- package/dist/chunk-7H4HB4UZ.mjs.map +1 -0
- package/dist/{chunk-FO4KGPGF.js → chunk-7TC3GRXQ.js} +73 -38
- package/dist/chunk-7TC3GRXQ.js.map +1 -0
- package/dist/{chunk-UQ5YULFU.mjs → chunk-AUHUEIBB.mjs} +4 -4
- package/dist/{chunk-UQ5YULFU.mjs.map → chunk-AUHUEIBB.mjs.map} +1 -1
- package/dist/{chunk-BQGEVMIR.mjs → chunk-AWF73RU2.mjs} +5 -5
- package/dist/{chunk-BQGEVMIR.mjs.map → chunk-AWF73RU2.mjs.map} +1 -1
- package/dist/{chunk-ELQ4SRRR.js → chunk-BHBW2SZF.js} +15 -15
- package/dist/{chunk-ELQ4SRRR.js.map → chunk-BHBW2SZF.js.map} +1 -1
- package/dist/{chunk-RNAGCAIB.js → chunk-BIGXEYKT.js} +7 -7
- package/dist/{chunk-RNAGCAIB.js.map → chunk-BIGXEYKT.js.map} +1 -1
- package/dist/chunk-BQP6JIE2.mjs +28 -0
- package/dist/chunk-BQP6JIE2.mjs.map +1 -0
- package/dist/{chunk-VFGEY6FJ.js → chunk-BY35X57A.js} +223 -110
- package/dist/chunk-BY35X57A.js.map +1 -0
- package/dist/{chunk-3YQILJKJ.js → chunk-CGCUHIAR.js} +60 -35
- package/dist/chunk-CGCUHIAR.js.map +1 -0
- package/dist/chunk-CUNZAD46.js +53 -0
- package/dist/chunk-CUNZAD46.js.map +1 -0
- package/dist/{chunk-FEWWGEQF.js → chunk-CWUYI6LI.js} +4 -4
- package/dist/{chunk-FEWWGEQF.js.map → chunk-CWUYI6LI.js.map} +1 -1
- package/dist/chunk-CXAXZFFW.js +157 -0
- package/dist/chunk-CXAXZFFW.js.map +1 -0
- package/dist/{chunk-H4OBGC43.mjs → chunk-DA7IANFG.mjs} +14 -3
- package/dist/chunk-DA7IANFG.mjs.map +1 -0
- package/dist/{chunk-57AFHENV.mjs → chunk-EHAUNF4V.mjs} +3 -3
- package/dist/{chunk-57AFHENV.mjs.map → chunk-EHAUNF4V.mjs.map} +1 -1
- package/dist/{chunk-2N27LCZH.js → chunk-FEKPEI2G.js} +9 -9
- package/dist/{chunk-2N27LCZH.js.map → chunk-FEKPEI2G.js.map} +1 -1
- package/dist/{chunk-LC7AM4J5.js → chunk-FHPW7XVH.js} +77 -20
- package/dist/chunk-FHPW7XVH.js.map +1 -0
- package/dist/{chunk-JNRHTZL4.js → chunk-FVW6FT6L.js} +73 -29
- package/dist/chunk-FVW6FT6L.js.map +1 -0
- package/dist/{chunk-YKUEFRZI.js → chunk-FWW4K6QP.js} +14 -14
- package/dist/{chunk-YKUEFRZI.js.map → chunk-FWW4K6QP.js.map} +1 -1
- package/dist/{chunk-JNAXDFC4.mjs → chunk-GF4LV5LX.mjs} +38 -156
- package/dist/chunk-GF4LV5LX.mjs.map +1 -0
- package/dist/{chunk-C563AHZZ.mjs → chunk-GKFTJ5AF.mjs} +3 -3
- package/dist/{chunk-C563AHZZ.mjs.map → chunk-GKFTJ5AF.mjs.map} +1 -1
- package/dist/{chunk-OZ3FU4BT.js → chunk-H5NBFNND.js} +2 -2
- package/dist/chunk-H5NBFNND.js.map +1 -0
- package/dist/chunk-HCN3IKMW.mjs +106 -0
- package/dist/chunk-HCN3IKMW.mjs.map +1 -0
- package/dist/{chunk-6FC5Q4KU.mjs → chunk-HOJ4J4X2.mjs} +30 -12
- package/dist/chunk-HOJ4J4X2.mjs.map +1 -0
- package/dist/{chunk-H6YVT3BL.js → chunk-I3ND4XYW.js} +12 -9
- package/dist/chunk-I3ND4XYW.js.map +1 -0
- package/dist/chunk-I7AZC5ZQ.js +0 -1
- package/dist/{chunk-V5THCFPG.mjs → chunk-JFJ7NHS3.mjs} +4 -4
- package/dist/{chunk-V5THCFPG.mjs.map → chunk-JFJ7NHS3.mjs.map} +1 -1
- package/dist/{chunk-KXGD4E7G.js → chunk-JI4EUPHB.js} +7 -7
- package/dist/{chunk-KXGD4E7G.js.map → chunk-JI4EUPHB.js.map} +1 -1
- package/dist/{chunk-GZJE23Y5.mjs → chunk-JLVCWC6A.mjs} +2 -2
- package/dist/chunk-JLVCWC6A.mjs.map +1 -0
- package/dist/chunk-JOYMIGR2.mjs +0 -1
- package/dist/chunk-JS75ORH7.js +0 -1
- package/dist/{chunk-Q7347KP6.mjs → chunk-JX5SM2MX.mjs} +6 -12
- package/dist/chunk-JX5SM2MX.mjs.map +1 -0
- package/dist/chunk-K4TCEAUX.js +52 -0
- package/dist/chunk-K4TCEAUX.js.map +1 -0
- package/dist/chunk-KV7XXLJV.mjs +30 -0
- package/dist/chunk-KV7XXLJV.mjs.map +1 -0
- package/dist/{chunk-JTCQJKJE.js → chunk-LIAISQUE.js} +76 -111
- package/dist/chunk-LIAISQUE.js.map +1 -0
- package/dist/{chunk-CPY74A4F.js → chunk-LMEUYRRR.js} +72 -106
- package/dist/chunk-LMEUYRRR.js.map +1 -0
- package/dist/{chunk-4WBTM6YE.js → chunk-LOEP76MQ.js} +4 -4
- package/dist/{chunk-4WBTM6YE.js.map → chunk-LOEP76MQ.js.map} +1 -1
- package/dist/chunk-LVGSOW2F.js +32 -0
- package/dist/chunk-LVGSOW2F.js.map +1 -0
- package/dist/{chunk-DOB37PV4.js → chunk-M45AL7EA.js} +37 -19
- package/dist/chunk-M45AL7EA.js.map +1 -0
- package/dist/{chunk-RCSTDJUH.js → chunk-M4UVFUFR.js} +8 -13
- package/dist/chunk-M4UVFUFR.js.map +1 -0
- package/dist/{chunk-R2SXXFXZ.mjs → chunk-MI2SRBCR.mjs} +3 -3
- package/dist/{chunk-R2SXXFXZ.mjs.map → chunk-MI2SRBCR.mjs.map} +1 -1
- package/dist/chunk-MLVHVKFT.mjs +148 -0
- package/dist/chunk-MLVHVKFT.mjs.map +1 -0
- package/dist/{chunk-L7ACQ6PC.js → chunk-MOAYT3KN.js} +4 -4
- package/dist/{chunk-L7ACQ6PC.js.map → chunk-MOAYT3KN.js.map} +1 -1
- package/dist/chunk-NG2TTI7D.js +8 -0
- package/dist/{chunk-5TXXTYXL.js.map → chunk-NG2TTI7D.js.map} +1 -1
- package/dist/{chunk-C4PZ2R3B.js → chunk-NLDN6PYM.js} +10 -10
- package/dist/{chunk-C4PZ2R3B.js.map → chunk-NLDN6PYM.js.map} +1 -1
- package/dist/chunk-NN2YE5WT.js +0 -1
- package/dist/chunk-NNZDWY3L.mjs +0 -1
- package/dist/chunk-NRBITVDK.js +114 -0
- package/dist/chunk-NRBITVDK.js.map +1 -0
- package/dist/{chunk-TSZIACRC.js → chunk-OBKYF4TP.js} +6 -12
- package/dist/chunk-OBKYF4TP.js.map +1 -0
- package/dist/{chunk-TP7H6BSK.mjs → chunk-OE7CTIOU.mjs} +73 -30
- package/dist/chunk-OE7CTIOU.mjs.map +1 -0
- package/dist/chunk-OESGRWI4.mjs +6 -0
- package/dist/{chunk-QRBPT6Z6.mjs.map → chunk-OESGRWI4.mjs.map} +1 -1
- package/dist/{chunk-UJ6CHZAI.mjs → chunk-OEW2LFOV.js} +169 -25
- package/dist/chunk-OEW2LFOV.js.map +1 -0
- package/dist/chunk-P4Y75QSU.js +19 -0
- package/dist/chunk-P4Y75QSU.js.map +1 -0
- package/dist/{chunk-47XQWV4S.mjs → chunk-PQVQAX67.mjs} +3 -3
- package/dist/{chunk-47XQWV4S.mjs.map → chunk-PQVQAX67.mjs.map} +1 -1
- package/dist/chunk-QRHVMTHF.mjs +94 -0
- package/dist/chunk-QRHVMTHF.mjs.map +1 -0
- package/dist/{chunk-FBDHKYNF.mjs → chunk-R4B3DFF4.mjs} +3 -3
- package/dist/{chunk-FBDHKYNF.mjs.map → chunk-R4B3DFF4.mjs.map} +1 -1
- package/dist/chunk-R7GHP3FY.js +81 -0
- package/dist/chunk-R7GHP3FY.js.map +1 -0
- package/dist/{chunk-4UVM7E2W.js → chunk-S5VL7AWW.js} +3 -3
- package/dist/{chunk-4UVM7E2W.js.map → chunk-S5VL7AWW.js.map} +1 -1
- package/dist/{chunk-P4TB4ROG.js → chunk-SEP5D4MI.js} +8 -2
- package/dist/chunk-SEP5D4MI.js.map +1 -0
- package/dist/{chunk-L4V6TKMJ.mjs → chunk-U2V542EO.mjs} +7 -3
- package/dist/chunk-U2V542EO.mjs.map +1 -0
- package/dist/{chunk-HBN4A2N4.mjs → chunk-U6H5ZY3B.mjs} +3 -3
- package/dist/{chunk-HBN4A2N4.mjs.map → chunk-U6H5ZY3B.mjs.map} +1 -1
- package/dist/{chunk-H7274TKR.mjs → chunk-VJV7WUR2.mjs} +12 -4
- package/dist/chunk-VJV7WUR2.mjs.map +1 -0
- package/dist/{chunk-F3AKYZOH.js → chunk-WED6ZDVS.js} +6 -13
- package/dist/chunk-WED6ZDVS.js.map +1 -0
- package/dist/{chunk-5B4FABFK.js → chunk-WS7MH3GD.js} +14 -2
- package/dist/chunk-WS7MH3GD.js.map +1 -0
- package/dist/{chunk-XLPU3TEE.mjs → chunk-X22BGNVL.mjs} +4 -4
- package/dist/{chunk-XLPU3TEE.mjs.map → chunk-X22BGNVL.mjs.map} +1 -1
- package/dist/{chunk-IPV2TUAT.js → chunk-XA2GJFVM.js} +12 -4
- package/dist/chunk-XA2GJFVM.js.map +1 -0
- package/dist/chunk-XBX2K3GA.js +33 -0
- package/dist/chunk-XBX2K3GA.js.map +1 -0
- package/dist/{chunk-ABZGEHTC.mjs → chunk-XSAHJ2BB.mjs} +3 -3
- package/dist/{chunk-ABZGEHTC.mjs.map → chunk-XSAHJ2BB.mjs.map} +1 -1
- package/dist/{chunk-6CJP7BFM.js → chunk-XZO5I4RS.mjs} +147 -20
- package/dist/chunk-XZO5I4RS.mjs.map +1 -0
- package/dist/chunk-Y5QZPUL3.mjs +47 -0
- package/dist/chunk-Y5QZPUL3.mjs.map +1 -0
- package/dist/{chunk-NOU3JQJK.js → chunk-Y6Z2W45H.js} +8 -8
- package/dist/{chunk-NOU3JQJK.js.map → chunk-Y6Z2W45H.js.map} +1 -1
- package/dist/{chunk-YYDZ2TYR.js → chunk-YCFYQN2Q.js} +3 -3
- package/dist/{chunk-YYDZ2TYR.js.map → chunk-YCFYQN2Q.js.map} +1 -1
- package/dist/chunk-YN7QHLWF.js +19 -0
- package/dist/chunk-YN7QHLWF.js.map +1 -0
- package/dist/{chunk-O2VJZOR2.mjs → chunk-YRNDASQY.mjs} +6 -11
- package/dist/chunk-YRNDASQY.mjs.map +1 -0
- package/dist/chunk-YU7QZ3PP.mjs +45 -0
- package/dist/chunk-YU7QZ3PP.mjs.map +1 -0
- package/dist/{chunk-3S5JN6KL.js → chunk-ZV6HIQRQ.js} +6 -6
- package/dist/{chunk-3S5JN6KL.js.map → chunk-ZV6HIQRQ.js.map} +1 -1
- package/dist/{chunk-RVRN5U7W.mjs → chunk-ZVI7MBVF.mjs} +73 -38
- package/dist/chunk-ZVI7MBVF.mjs.map +1 -0
- package/dist/cli/agent/checks.d.ts +15 -1
- package/dist/cli/agent/checks.d.ts.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/og.d.ts +26 -8
- package/dist/cli/commands/og.d.ts.map +1 -1
- package/dist/cli/index.js +683 -323
- package/dist/cli/index.mjs +604 -244
- package/dist/client/index.js +6 -6
- package/dist/client/index.mjs +5 -5
- package/dist/commerce/CheckoutForm.d.ts.map +1 -1
- package/dist/commerce/ProductDetail.d.ts.map +1 -1
- package/dist/commerce/api.d.ts +14 -0
- package/dist/commerce/api.d.ts.map +1 -1
- package/dist/commerce/index.d.ts +1 -1
- package/dist/commerce/index.d.ts.map +1 -1
- package/dist/commerce/index.js +61 -56
- package/dist/commerce/index.mjs +6 -5
- package/dist/config/index.js +3 -3
- package/dist/config/index.mjs +1 -1
- package/dist/discover-CYXYKHZ2.mjs +4 -0
- package/dist/{discover-FGTKWOL3.mjs.map → discover-CYXYKHZ2.mjs.map} +1 -1
- package/dist/discover-NGEPXZOD.js +21 -0
- package/dist/{discover-NJZPWTDL.js.map → discover-NGEPXZOD.js.map} +1 -1
- package/dist/engage/index.js +12 -10
- package/dist/engage/index.js.map +1 -1
- package/dist/engage/index.mjs +9 -7
- package/dist/engage/index.mjs.map +1 -1
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/FormClient.d.ts.map +1 -1
- package/dist/forms/FormField.d.ts +7 -1
- package/dist/forms/FormField.d.ts.map +1 -1
- package/dist/forms/FormSpotlight.d.ts +1 -1
- package/dist/forms/FormSpotlight.d.ts.map +1 -1
- package/dist/forms/FormStage.d.ts +1 -1
- package/dist/forms/FormStage.d.ts.map +1 -1
- package/dist/forms/experience-plan.d.ts +0 -1
- package/dist/forms/experience-plan.d.ts.map +1 -1
- package/dist/forms/field-interactions.d.ts +63 -0
- package/dist/forms/field-interactions.d.ts.map +1 -0
- package/dist/forms/field-rules.d.ts +41 -0
- package/dist/forms/field-rules.d.ts.map +1 -0
- package/dist/forms/index.js +25 -23
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/index.mjs +13 -11
- package/dist/forms/index.mjs.map +1 -1
- package/dist/forms/server.js +11 -11
- package/dist/forms/server.mjs +9 -9
- package/dist/forms/static.js +8 -8
- package/dist/forms/static.mjs +7 -7
- package/dist/forms/tracking-session.d.ts +48 -3
- package/dist/forms/tracking-session.d.ts.map +1 -1
- package/dist/forms/types.d.ts +11 -0
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/useForm.d.ts +8 -0
- package/dist/forms/useForm.d.ts.map +1 -1
- package/dist/forms/useFormTracking.d.ts +29 -4
- package/dist/forms/useFormTracking.d.ts.map +1 -1
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +72 -68
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -10
- package/dist/index.mjs.map +1 -1
- package/dist/layout/client.js +10 -10
- package/dist/layout/client.mjs +9 -9
- package/dist/layout/index.js +13 -12
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +11 -10
- package/dist/layout/index.mjs.map +1 -1
- package/dist/lib-6HOOMENJ.js +0 -1
- package/dist/lib-BGAWCSUH.js +0 -1
- package/dist/lib-R7IQ4ZHE.mjs +0 -1
- package/dist/lib-RSDMEKDQ.mjs +0 -1
- package/dist/llms/aiRobots.d.ts +20 -4
- package/dist/llms/aiRobots.d.ts.map +1 -1
- package/dist/llms/api.d.ts +8 -3
- package/dist/llms/api.d.ts.map +1 -1
- package/dist/llms/discovery-headers.d.ts +24 -0
- package/dist/llms/discovery-headers.d.ts.map +1 -1
- package/dist/llms/generateLLMsTxt.d.ts.map +1 -1
- package/dist/llms/index.d.ts +2 -2
- package/dist/llms/index.d.ts.map +1 -1
- package/dist/llms/index.js +45 -96
- package/dist/llms/index.js.map +1 -1
- package/dist/llms/index.mjs +11 -81
- package/dist/llms/index.mjs.map +1 -1
- package/dist/llms/links.d.ts +26 -0
- package/dist/llms/links.d.ts.map +1 -0
- package/dist/llms/types.d.ts +15 -0
- package/dist/llms/types.d.ts.map +1 -1
- package/dist/llms/wiring.d.ts +22 -0
- package/dist/llms/wiring.d.ts.map +1 -1
- package/dist/llms/writeLLMsTxt.d.ts +9 -0
- package/dist/llms/writeLLMsTxt.d.ts.map +1 -1
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/motion/gsap.d.ts +54 -0
- package/dist/motion/gsap.d.ts.map +1 -1
- package/dist/motion/gsap.js +34 -4
- package/dist/motion/gsap.js.map +1 -1
- package/dist/motion/gsap.mjs +33 -5
- package/dist/motion/gsap.mjs.map +1 -1
- package/dist/og/config.d.ts +6 -0
- package/dist/og/config.d.ts.map +1 -1
- package/dist/og/contrast.d.ts +33 -0
- package/dist/og/contrast.d.ts.map +1 -0
- package/dist/og/index.d.ts +2 -0
- package/dist/og/index.d.ts.map +1 -1
- package/dist/og/index.js +26 -8
- package/dist/og/index.mjs +3 -1
- package/dist/og/pages.d.ts +101 -0
- package/dist/og/pages.d.ts.map +1 -1
- package/dist/og/route-copy.d.ts +34 -0
- package/dist/og/route-copy.d.ts.map +1 -0
- package/dist/og/route-fit.d.ts +77 -0
- package/dist/og/route-fit.d.ts.map +1 -0
- package/dist/og/route.d.ts +80 -20
- package/dist/og/route.d.ts.map +1 -1
- package/dist/og/route.js +195 -25
- package/dist/og/route.js.map +1 -1
- package/dist/og/route.mjs +193 -26
- package/dist/og/route.mjs.map +1 -1
- package/dist/og/template.d.ts.map +1 -1
- package/dist/og/wiring.d.ts +43 -3
- package/dist/og/wiring.d.ts.map +1 -1
- package/dist/proxy/index.d.ts.map +1 -1
- package/dist/proxy/index.js +15 -10
- package/dist/proxy/index.js.map +1 -1
- package/dist/proxy/index.mjs +12 -7
- package/dist/proxy/index.mjs.map +1 -1
- package/dist/redirects/index.d.ts +24 -0
- package/dist/redirects/index.d.ts.map +1 -1
- package/dist/redirects/index.js +11 -8
- package/dist/redirects/index.mjs +4 -1
- package/dist/redirects/not-found.js +8 -5
- package/dist/redirects/not-found.js.map +1 -1
- package/dist/redirects/not-found.mjs +4 -1
- package/dist/redirects/not-found.mjs.map +1 -1
- package/dist/robots/index.d.ts +2 -0
- package/dist/robots/index.d.ts.map +1 -1
- package/dist/robots/index.js +23 -3
- package/dist/robots/index.js.map +1 -1
- package/dist/robots/index.mjs +2 -2
- package/dist/robots/index.mjs.map +1 -1
- package/dist/search/index.js +4 -4
- package/dist/search/index.mjs +3 -3
- package/dist/seo/ManagedContent.d.ts +4 -2
- package/dist/seo/ManagedContent.d.ts.map +1 -1
- package/dist/seo/ManagedFAQ.d.ts.map +1 -1
- package/dist/seo/ManagedInternalLinks.d.ts.map +1 -1
- package/dist/seo/ManagedSchema.d.ts.map +1 -1
- package/dist/seo/client.js +6 -6
- package/dist/seo/client.mjs +5 -5
- package/dist/seo/getManagedMetadata.d.ts.map +1 -1
- package/dist/seo/index.js +59 -49
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +29 -19
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo/register-sitemap-cli-impl.d.ts +32 -0
- package/dist/seo/register-sitemap-cli-impl.d.ts.map +1 -1
- package/dist/seo/register-sitemap-cli.d.ts +7 -0
- package/dist/seo/register-sitemap-cli.d.ts.map +1 -1
- package/dist/seo/register-sitemap-cli.js +273 -57
- package/dist/seo/register-sitemap-cli.mjs +269 -53
- package/dist/seo/register-sitemap-request.d.ts +36 -0
- package/dist/seo/register-sitemap-request.d.ts.map +1 -0
- package/dist/seo/routing.d.ts +2 -0
- package/dist/seo/routing.d.ts.map +1 -1
- package/dist/seo/schema-filter.d.ts +43 -0
- package/dist/seo/schema-filter.d.ts.map +1 -0
- package/dist/seo/server-api.d.ts +15 -2
- package/dist/seo/server-api.d.ts.map +1 -1
- package/dist/seo/server.js +23 -18
- package/dist/seo/server.mjs +7 -2
- package/dist/seo/types.d.ts +30 -0
- package/dist/seo/types.d.ts.map +1 -1
- package/dist/seo-meta/contract.d.ts +60 -0
- package/dist/seo-meta/contract.d.ts.map +1 -0
- package/dist/seo-meta/contract.js +41 -0
- package/dist/seo-meta/contract.js.map +1 -0
- package/dist/seo-meta/contract.mjs +4 -0
- package/dist/seo-meta/contract.mjs.map +1 -0
- package/dist/server/index.js +4 -3
- package/dist/server/index.mjs +3 -2
- package/dist/server/mint-site-token.d.ts +2 -32
- package/dist/server/mint-site-token.d.ts.map +1 -1
- package/dist/{server-api-RG3ZL3DV.mjs → server-api-A2EFCTZX.mjs} +7 -3
- package/dist/{server-api-RG3ZL3DV.mjs.map → server-api-A2EFCTZX.mjs.map} +1 -1
- package/dist/{server-api-RYJQAUGO.js → server-api-IWTZ7C3O.js} +25 -21
- package/dist/{server-api-RYJQAUGO.js.map → server-api-IWTZ7C3O.js.map} +1 -1
- package/dist/shared/build-entries.d.ts +2 -0
- package/dist/shared/build-entries.d.ts.map +1 -1
- package/dist/shared/fresh-fetch.d.ts +64 -0
- package/dist/shared/fresh-fetch.d.ts.map +1 -0
- package/dist/shared/next-files.d.ts +7 -0
- package/dist/shared/next-files.d.ts.map +1 -1
- package/dist/shared/page-leave.d.ts +27 -0
- package/dist/shared/page-leave.d.ts.map +1 -0
- package/dist/shared/source-graph.d.ts +63 -0
- package/dist/shared/source-graph.d.ts.map +1 -0
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/SignalCore.d.ts.map +1 -1
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sitemap/index.d.ts +19 -4
- package/dist/sitemap/index.d.ts.map +1 -1
- package/dist/sitemap/index.js +53 -43
- package/dist/sitemap/index.js.map +1 -1
- package/dist/sitemap/index.mjs +37 -27
- package/dist/sitemap/index.mjs.map +1 -1
- package/dist/sitemap/shared.d.ts +65 -0
- package/dist/sitemap/shared.d.ts.map +1 -1
- package/dist/sites/resolve.d.ts.map +1 -1
- package/dist/sites/site-param.d.ts +16 -0
- package/dist/sites/site-param.d.ts.map +1 -0
- package/dist/sync/index.js +17 -17
- package/dist/sync/index.mjs +4 -4
- package/dist/writeLLMsTxt-CQ7A4AAL.js +19 -0
- package/dist/writeLLMsTxt-NX5MSPYX.mjs +10 -0
- package/package.json +9 -4
- package/dist/AnalyticsProvider-EWF7JN2X.mjs +0 -11
- package/dist/AnalyticsProvider-GJFG7YXA.js +0 -32
- package/dist/BlogViewTracker-2D3IJPJK.js.map +0 -1
- package/dist/BlogViewTracker-CKYG6MYU.mjs.map +0 -1
- package/dist/ChatWidget-AWP6GBVW.js +0 -22
- package/dist/ChatWidget-Z5QXDZP3.mjs +0 -13
- package/dist/EngageWidget-BKEY5TPO.mjs +0 -12
- package/dist/EngageWidget-VT4DYXVO.js +0 -21
- package/dist/FormSpotlight-OTFB6QM5.mjs.map +0 -1
- package/dist/FormSpotlight-URS4XRS7.js.map +0 -1
- package/dist/FormStage-FVKMIV73.js.map +0 -1
- package/dist/FormStage-VPGOCMAV.mjs.map +0 -1
- package/dist/ManagedForm-CXVDJMHN.mjs +0 -14
- package/dist/ManagedForm-FGNTDGED.js +0 -23
- package/dist/ManagedNewsletterForm-3O5L44AZ.js.map +0 -1
- package/dist/ManagedNewsletterForm-SQYB4BZU.mjs.map +0 -1
- package/dist/SignalCore-M2PKKIGH.mjs.map +0 -1
- package/dist/SignalCore-RFBOBNLQ.js.map +0 -1
- package/dist/SitemapSync-4OVMIIGC.mjs +0 -9
- package/dist/SitemapSync-RK3SQ4M2.js +0 -18
- package/dist/analytics/send-gate.test.d.ts +0 -20
- package/dist/analytics/send-gate.test.d.ts.map +0 -1
- package/dist/api-D745LGGU.mjs.map +0 -1
- package/dist/api-XR5APCH3.js.map +0 -1
- package/dist/blog/artwork-components.test.d.ts +0 -2
- package/dist/blog/artwork-components.test.d.ts.map +0 -1
- package/dist/blog/artwork.test.d.ts +0 -2
- package/dist/blog/artwork.test.d.ts.map +0 -1
- package/dist/blog/author-social.test.d.ts +0 -2
- package/dist/blog/author-social.test.d.ts.map +0 -1
- package/dist/blog/blog-tables.test.d.ts +0 -2
- package/dist/blog/blog-tables.test.d.ts.map +0 -1
- package/dist/blog/blog-view-tracker.test.d.ts +0 -2
- package/dist/blog/blog-view-tracker.test.d.ts.map +0 -1
- package/dist/blog/category-metadata.test.d.ts +0 -2
- package/dist/blog/category-metadata.test.d.ts.map +0 -1
- package/dist/blog/metadata-images.test.d.ts +0 -2
- package/dist/blog/metadata-images.test.d.ts.map +0 -1
- package/dist/blog/newsletter-widget.test.d.ts +0 -2
- package/dist/blog/newsletter-widget.test.d.ts.map +0 -1
- package/dist/blog/publication-render.test.d.ts +0 -2
- package/dist/blog/publication-render.test.d.ts.map +0 -1
- package/dist/blog/publication-routes.test.d.ts +0 -2
- package/dist/blog/publication-routes.test.d.ts.map +0 -1
- package/dist/blog/reading-time.test.d.ts +0 -2
- package/dist/blog/reading-time.test.d.ts.map +0 -1
- package/dist/blog/sanitize-excerpt.test.d.ts +0 -2
- package/dist/blog/sanitize-excerpt.test.d.ts.map +0 -1
- package/dist/blog/server-core-contract.test.d.ts +0 -2
- package/dist/blog/server-core-contract.test.d.ts.map +0 -1
- package/dist/blog/static-params.test.d.ts +0 -2
- package/dist/blog/static-params.test.d.ts.map +0 -1
- package/dist/blog/tag-links.test.d.ts +0 -2
- package/dist/blog/tag-links.test.d.ts.map +0 -1
- package/dist/blog/types-wire-shape.test.d.ts +0 -2
- package/dist/blog/types-wire-shape.test.d.ts.map +0 -1
- package/dist/brand/status-contrast.test.d.ts +0 -2
- package/dist/brand/status-contrast.test.d.ts.map +0 -1
- package/dist/chunk-3CLP35TT.mjs.map +0 -1
- package/dist/chunk-3UC6JETG.js +0 -32
- package/dist/chunk-3UC6JETG.js.map +0 -1
- package/dist/chunk-3YQILJKJ.js.map +0 -1
- package/dist/chunk-4B4S56WJ.mjs.map +0 -1
- package/dist/chunk-5B4FABFK.js.map +0 -1
- package/dist/chunk-5TXXTYXL.js +0 -8
- package/dist/chunk-5YA6SI4Z.mjs.map +0 -1
- package/dist/chunk-6CJP7BFM.js.map +0 -1
- package/dist/chunk-6FC5Q4KU.mjs.map +0 -1
- package/dist/chunk-7ZX6TO6C.mjs.map +0 -1
- package/dist/chunk-AWK57R5S.mjs +0 -29
- package/dist/chunk-AWK57R5S.mjs.map +0 -1
- package/dist/chunk-BFJOZ3MU.mjs.map +0 -1
- package/dist/chunk-BFM5PEFV.js.map +0 -1
- package/dist/chunk-CPY74A4F.js.map +0 -1
- package/dist/chunk-DOB37PV4.js.map +0 -1
- package/dist/chunk-F3AKYZOH.js.map +0 -1
- package/dist/chunk-FO4KGPGF.js.map +0 -1
- package/dist/chunk-GZJE23Y5.mjs.map +0 -1
- package/dist/chunk-H4OBGC43.mjs.map +0 -1
- package/dist/chunk-H6YVT3BL.js.map +0 -1
- package/dist/chunk-H7274TKR.mjs.map +0 -1
- package/dist/chunk-I7AZC5ZQ.js.map +0 -1
- package/dist/chunk-ILNCUSXW.mjs.map +0 -1
- package/dist/chunk-IPV2TUAT.js.map +0 -1
- package/dist/chunk-JEOKDUPQ.js +0 -45
- package/dist/chunk-JEOKDUPQ.js.map +0 -1
- package/dist/chunk-JNAXDFC4.mjs.map +0 -1
- package/dist/chunk-JNRHTZL4.js.map +0 -1
- package/dist/chunk-JOYMIGR2.mjs.map +0 -1
- package/dist/chunk-JS75ORH7.js.map +0 -1
- package/dist/chunk-JTCQJKJE.js.map +0 -1
- package/dist/chunk-L4V6TKMJ.mjs.map +0 -1
- package/dist/chunk-LC7AM4J5.js.map +0 -1
- package/dist/chunk-M5GY2AI3.mjs.map +0 -1
- package/dist/chunk-NN2YE5WT.js.map +0 -1
- package/dist/chunk-NNZDWY3L.mjs.map +0 -1
- package/dist/chunk-O2VJZOR2.mjs.map +0 -1
- package/dist/chunk-OZ3FU4BT.js.map +0 -1
- package/dist/chunk-P4TB4ROG.js.map +0 -1
- package/dist/chunk-Q7347KP6.mjs.map +0 -1
- package/dist/chunk-QJU6HBSK.mjs +0 -39
- package/dist/chunk-QJU6HBSK.mjs.map +0 -1
- package/dist/chunk-QRBPT6Z6.mjs +0 -6
- package/dist/chunk-RCSTDJUH.js.map +0 -1
- package/dist/chunk-RVRN5U7W.mjs.map +0 -1
- package/dist/chunk-TDJKGN5Q.mjs.map +0 -1
- package/dist/chunk-TP7H6BSK.mjs.map +0 -1
- package/dist/chunk-TSZIACRC.js.map +0 -1
- package/dist/chunk-UJ6CHZAI.mjs.map +0 -1
- package/dist/chunk-VFGEY6FJ.js.map +0 -1
- package/dist/cli/agent/envelope.test.d.ts +0 -2
- package/dist/cli/agent/envelope.test.d.ts.map +0 -1
- package/dist/cli/agent/ssr-bailout.test.d.ts +0 -2
- package/dist/cli/agent/ssr-bailout.test.d.ts.map +0 -1
- package/dist/cli/codemod/diff.test.d.ts +0 -2
- package/dist/cli/codemod/diff.test.d.ts.map +0 -1
- package/dist/cli/codemod/transforms.test.d.ts +0 -2
- package/dist/cli/codemod/transforms.test.d.ts.map +0 -1
- package/dist/cli/commands/config-regression.test.d.ts +0 -2
- package/dist/cli/commands/config-regression.test.d.ts.map +0 -1
- package/dist/cli/commands/geo.test.d.ts +0 -2
- package/dist/cli/commands/geo.test.d.ts.map +0 -1
- package/dist/cli/commands/og.test.d.ts +0 -2
- package/dist/cli/commands/og.test.d.ts.map +0 -1
- package/dist/cli/config.test.d.ts +0 -2
- package/dist/cli/config.test.d.ts.map +0 -1
- package/dist/cli/generators/index.test.d.ts +0 -2
- package/dist/cli/generators/index.test.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/index.mjs.map +0 -1
- package/dist/cli/state.test.d.ts +0 -2
- package/dist/cli/state.test.d.ts.map +0 -1
- package/dist/commerce/events-extras.test.d.ts +0 -2
- package/dist/commerce/events-extras.test.d.ts.map +0 -1
- package/dist/commerce/server-result.test.d.ts +0 -2
- package/dist/commerce/server-result.test.d.ts.map +0 -1
- package/dist/discover-FGTKWOL3.mjs +0 -4
- package/dist/discover-NJZPWTDL.js +0 -21
- package/dist/engage/chat-launcher.test.d.ts +0 -2
- package/dist/engage/chat-launcher.test.d.ts.map +0 -1
- package/dist/engage/dependency-contract.test.d.ts +0 -2
- package/dist/engage/dependency-contract.test.d.ts.map +0 -1
- package/dist/engage/launcher-placement.test.d.ts +0 -2
- package/dist/engage/launcher-placement.test.d.ts.map +0 -1
- package/dist/fleet/contract.test.d.ts +0 -2
- package/dist/fleet/contract.test.d.ts.map +0 -1
- package/dist/fleet/heartbeat.test.d.ts +0 -2
- package/dist/fleet/heartbeat.test.d.ts.map +0 -1
- package/dist/forms/contract.test.d.ts +0 -2
- package/dist/forms/contract.test.d.ts.map +0 -1
- package/dist/forms/ga4-identity.test.d.ts +0 -2
- package/dist/forms/ga4-identity.test.d.ts.map +0 -1
- package/dist/forms/native-fallback.test.d.ts +0 -2
- package/dist/forms/native-fallback.test.d.ts.map +0 -1
- package/dist/forms/stage.test.d.ts +0 -2
- package/dist/forms/stage.test.d.ts.map +0 -1
- package/dist/forms/static-form.test.d.ts +0 -2
- package/dist/forms/static-form.test.d.ts.map +0 -1
- package/dist/forms/tracking-session.test.d.ts +0 -22
- package/dist/forms/tracking-session.test.d.ts.map +0 -1
- package/dist/landing/contract.test.d.ts +0 -2
- package/dist/landing/contract.test.d.ts.map +0 -1
- package/dist/landing/server-entry.test.d.ts +0 -2
- package/dist/landing/server-entry.test.d.ts.map +0 -1
- package/dist/lib-6HOOMENJ.js.map +0 -1
- package/dist/lib-BGAWCSUH.js.map +0 -1
- package/dist/lib-R7IQ4ZHE.mjs.map +0 -1
- package/dist/lib-RSDMEKDQ.mjs.map +0 -1
- package/dist/llms/aiRobots.test.d.ts +0 -2
- package/dist/llms/aiRobots.test.d.ts.map +0 -1
- package/dist/llms/contract.test.d.ts +0 -2
- package/dist/llms/contract.test.d.ts.map +0 -1
- package/dist/llms/discovery-headers.test.d.ts +0 -2
- package/dist/llms/discovery-headers.test.d.ts.map +0 -1
- package/dist/llms/generateLLMsTxt.test.d.ts +0 -2
- package/dist/llms/generateLLMsTxt.test.d.ts.map +0 -1
- package/dist/llms/handlers.test.d.ts +0 -2
- package/dist/llms/handlers.test.d.ts.map +0 -1
- package/dist/llms/humanize-industry.test.d.ts +0 -2
- package/dist/llms/humanize-industry.test.d.ts.map +0 -1
- package/dist/llms/sourcedFacts.test.d.ts +0 -2
- package/dist/llms/sourcedFacts.test.d.ts.map +0 -1
- package/dist/llms/wiring.test.d.ts +0 -2
- package/dist/llms/wiring.test.d.ts.map +0 -1
- package/dist/llms/writeLLMsTxt.test.d.ts +0 -2
- package/dist/llms/writeLLMsTxt.test.d.ts.map +0 -1
- package/dist/mcp/protocol.test.d.ts +0 -2
- package/dist/mcp/protocol.test.d.ts.map +0 -1
- package/dist/motion/motion.test.d.ts +0 -16
- package/dist/motion/motion.test.d.ts.map +0 -1
- package/dist/og/pages.test.d.ts +0 -2
- package/dist/og/pages.test.d.ts.map +0 -1
- package/dist/og/template.test.d.ts +0 -2
- package/dist/og/template.test.d.ts.map +0 -1
- package/dist/og/wiring.test.d.ts +0 -2
- package/dist/og/wiring.test.d.ts.map +0 -1
- package/dist/portfolio/contract.test.d.ts +0 -2
- package/dist/portfolio/contract.test.d.ts.map +0 -1
- package/dist/proxy/securityHeaders.test.d.ts +0 -2
- package/dist/proxy/securityHeaders.test.d.ts.map +0 -1
- package/dist/proxy/segment.test.d.ts +0 -2
- package/dist/proxy/segment.test.d.ts.map +0 -1
- package/dist/robots/index.test.d.ts +0 -2
- package/dist/robots/index.test.d.ts.map +0 -1
- package/dist/seo/register-sitemap-cli-impl.test.d.ts +0 -2
- package/dist/seo/register-sitemap-cli-impl.test.d.ts.map +0 -1
- package/dist/seo/register-sitemap-cli.js.map +0 -1
- package/dist/seo/register-sitemap-cli.mjs.map +0 -1
- package/dist/seo-pages/contract.test.d.ts +0 -2
- package/dist/seo-pages/contract.test.d.ts.map +0 -1
- package/dist/server/mint-site-token.test.d.ts +0 -2
- package/dist/server/mint-site-token.test.d.ts.map +0 -1
- package/dist/server/server-fetch.test.d.ts +0 -2
- package/dist/server/server-fetch.test.d.ts.map +0 -1
- package/dist/shared/client-entry-boundary.test.d.ts +0 -2
- package/dist/shared/client-entry-boundary.test.d.ts.map +0 -1
- package/dist/shared/next-files.test.d.ts +0 -2
- package/dist/shared/next-files.test.d.ts.map +0 -1
- package/dist/shared/no-cjs-require.test.d.ts +0 -2
- package/dist/shared/no-cjs-require.test.d.ts.map +0 -1
- package/dist/shared/publishCredential.test.d.ts +0 -2
- package/dist/shared/publishCredential.test.d.ts.map +0 -1
- package/dist/shared/raw-browser-api-guard.test.d.ts +0 -15
- package/dist/shared/raw-browser-api-guard.test.d.ts.map +0 -1
- package/dist/shared/siteToken.test.d.ts +0 -2
- package/dist/shared/siteToken.test.d.ts.map +0 -1
- package/dist/shared/sonorFetch.test.d.ts +0 -2
- package/dist/shared/sonorFetch.test.d.ts.map +0 -1
- package/dist/shared/uuid.test.d.ts +0 -2
- package/dist/shared/uuid.test.d.ts.map +0 -1
- package/dist/shared/version.test.d.ts +0 -2
- package/dist/shared/version.test.d.ts.map +0 -1
- package/dist/shared/visual-viewport-gap.test.d.ts +0 -2
- package/dist/shared/visual-viewport-gap.test.d.ts.map +0 -1
- package/dist/sitemap/discover.test.d.ts +0 -2
- package/dist/sitemap/discover.test.d.ts.map +0 -1
- package/dist/sitemap/shared.test.d.ts +0 -2
- package/dist/sitemap/shared.test.d.ts.map +0 -1
- package/dist/sitemap/site-scope.test.d.ts +0 -2
- package/dist/sitemap/site-scope.test.d.ts.map +0 -1
- package/dist/sites/contract.test.d.ts +0 -2
- package/dist/sites/contract.test.d.ts.map +0 -1
- package/dist/slots/ManagedSlot.test.d.ts +0 -2
- package/dist/slots/ManagedSlot.test.d.ts.map +0 -1
- package/dist/slots/contract.test.d.ts +0 -2
- package/dist/slots/contract.test.d.ts.map +0 -1
- package/dist/slots/revalidate.test.d.ts +0 -2
- package/dist/slots/revalidate.test.d.ts.map +0 -1
- package/dist/slots/server-api.test.d.ts +0 -2
- package/dist/slots/server-api.test.d.ts.map +0 -1
- package/dist/sync/add-to-calendar.test.d.ts +0 -2
- package/dist/sync/add-to-calendar.test.d.ts.map +0 -1
- package/dist/sync/api-errors.test.d.ts +0 -2
- package/dist/sync/api-errors.test.d.ts.map +0 -1
- package/dist/sync/booking-flow.test.d.ts +0 -2
- package/dist/sync/booking-flow.test.d.ts.map +0 -1
package/dist/cli/index.mjs
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { traverse, isJSXIdentifier, isJSXAttribute, isFunctionDeclaration, isVariableDeclarator, isIdentifier, isStringLiteral, isJSXMemberExpression, isJSXExpressionContainer, isTemplateLiteral, isArrayExpression, isObjectExpression, isJSXText } from '../chunk-JOYMIGR2.mjs';
|
|
3
3
|
import { parse } from '../chunk-5YA6SI4Z.mjs';
|
|
4
|
-
import { buildOgHtml,
|
|
4
|
+
import { paramCardKeys, unmatchedCardKeys, DYNAMIC, PARAM_CARD_DIR, buildOgHtml, pageCardConfig, paramCardUrl } from '../chunk-XZO5I4RS.mjs';
|
|
5
|
+
import { TITLE_MAX_PX, OG_REPORT_ATTR } from '../chunk-YU7QZ3PP.mjs';
|
|
5
6
|
import { require_main } from '../chunk-NNZDWY3L.mjs';
|
|
6
|
-
import { findAppDirForDiscovery, NEXT_PROXY_FILES, NEXT_MIDDLEWARE_FILES, findConventionFile, NEXT_APP_DIRS, findSitemapRoute, findProxyFiles, findRootLayout, discoverNextJsRoutes, hasPageFile } from '../chunk-
|
|
7
|
-
import {
|
|
7
|
+
import { findAppDirForDiscovery, NEXT_PROXY_FILES, NEXT_MIDDLEWARE_FILES, findConventionFile, NEXT_APP_DIRS, findSitemapRoute, findProxyFiles, findNextConfig, findRootLayout, discoverNextJsRoutes, hasPageFile, NEXT_SOURCE_EXTENSIONS } from '../chunk-U2V542EO.mjs';
|
|
8
|
+
import { applyTrailingSlash } from '../chunk-4LYW6PMU.mjs';
|
|
9
|
+
import { SITE_KIT_VERSION } from '../chunk-OESGRWI4.mjs';
|
|
8
10
|
import { __commonJS, __require, __toESM, __export, __privateAdd, __publicField, __privateGet, __privateMethod, __privateSet, __privateWrapper } from '../chunk-BEXTDHO4.mjs';
|
|
9
11
|
import { EventEmitter } from 'events';
|
|
10
12
|
import childProcess, { execFile as execFile$1, execSync, spawnSync, spawn } from 'child_process';
|
|
11
13
|
import path12, { win32, posix } from 'path';
|
|
12
|
-
import * as
|
|
13
|
-
import
|
|
14
|
+
import * as fs20 from 'fs';
|
|
15
|
+
import fs20__default, { realpathSync, existsSync, readFileSync, readdirSync, statSync, readlinkSync, readdir as readdir$1, lstatSync, rmSync, mkdtempSync, writeFileSync } from 'fs';
|
|
14
16
|
import process2 from 'process';
|
|
15
17
|
import { styleText, promisify, stripVTControlCharacters } from 'util';
|
|
16
18
|
import os from 'os';
|
|
@@ -19,7 +21,7 @@ import { AsyncLocalStorage, AsyncResource } from 'async_hooks';
|
|
|
19
21
|
import * as readline3 from 'readline';
|
|
20
22
|
import readline3__default from 'readline';
|
|
21
23
|
import { randomUUID } from 'crypto';
|
|
22
|
-
import fs3, { realpath, readlink, readdir, lstat, constants } from 'fs/promises';
|
|
24
|
+
import fs3, { realpath as realpath$1, readlink, readdir, lstat, constants } from 'fs/promises';
|
|
23
25
|
import { fileURLToPath, URL as URL$1 } from 'url';
|
|
24
26
|
import { Buffer as Buffer$1 } from 'buffer';
|
|
25
27
|
import http from 'http';
|
|
@@ -6202,10 +6204,10 @@ var require_lib2 = __commonJS({
|
|
|
6202
6204
|
exports.analyse = analyse;
|
|
6203
6205
|
var detectFile = (filepath, opts = {}) => new Promise((resolve, reject) => {
|
|
6204
6206
|
let fd;
|
|
6205
|
-
const
|
|
6207
|
+
const fs31 = (0, node_1.default)();
|
|
6206
6208
|
const handler = (err, buffer) => {
|
|
6207
6209
|
if (fd) {
|
|
6208
|
-
|
|
6210
|
+
fs31.closeSync(fd);
|
|
6209
6211
|
}
|
|
6210
6212
|
if (err) {
|
|
6211
6213
|
reject(err);
|
|
@@ -6217,9 +6219,9 @@ var require_lib2 = __commonJS({
|
|
|
6217
6219
|
};
|
|
6218
6220
|
const sampleSize = (opts === null || opts === void 0 ? void 0 : opts.sampleSize) || 0;
|
|
6219
6221
|
if (sampleSize > 0) {
|
|
6220
|
-
fd =
|
|
6222
|
+
fd = fs31.openSync(filepath, "r");
|
|
6221
6223
|
let sample = Buffer.allocUnsafe(sampleSize);
|
|
6222
|
-
|
|
6224
|
+
fs31.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => {
|
|
6223
6225
|
if (err) {
|
|
6224
6226
|
handler(err, null);
|
|
6225
6227
|
} else {
|
|
@@ -6231,22 +6233,22 @@ var require_lib2 = __commonJS({
|
|
|
6231
6233
|
});
|
|
6232
6234
|
return;
|
|
6233
6235
|
}
|
|
6234
|
-
|
|
6236
|
+
fs31.readFile(filepath, handler);
|
|
6235
6237
|
});
|
|
6236
6238
|
exports.detectFile = detectFile;
|
|
6237
6239
|
var detectFileSync = (filepath, opts = {}) => {
|
|
6238
|
-
const
|
|
6240
|
+
const fs31 = (0, node_1.default)();
|
|
6239
6241
|
if (opts && opts.sampleSize) {
|
|
6240
|
-
const fd =
|
|
6242
|
+
const fd = fs31.openSync(filepath, "r");
|
|
6241
6243
|
let sample = Buffer.allocUnsafe(opts.sampleSize);
|
|
6242
|
-
const bytesRead =
|
|
6244
|
+
const bytesRead = fs31.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
|
|
6243
6245
|
if (bytesRead < opts.sampleSize) {
|
|
6244
6246
|
sample = sample.subarray(0, bytesRead);
|
|
6245
6247
|
}
|
|
6246
|
-
|
|
6248
|
+
fs31.closeSync(fd);
|
|
6247
6249
|
return (0, exports.detect)(sample);
|
|
6248
6250
|
}
|
|
6249
|
-
return (0, exports.detect)(
|
|
6251
|
+
return (0, exports.detect)(fs31.readFileSync(filepath));
|
|
6250
6252
|
};
|
|
6251
6253
|
exports.detectFileSync = detectFileSync;
|
|
6252
6254
|
exports.default = {
|
|
@@ -12247,7 +12249,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
12247
12249
|
* @param {string} subcommandName
|
|
12248
12250
|
*/
|
|
12249
12251
|
_checkForMissingExecutable(executableFile, executableDir, subcommandName) {
|
|
12250
|
-
if (
|
|
12252
|
+
if (fs20__default.existsSync(executableFile)) return;
|
|
12251
12253
|
const executableDirMessage = executableDir ? `searched for local subcommand relative to directory '${executableDir}'` : "no directory for search for local subcommand, use .executableDir() to supply a custom directory";
|
|
12252
12254
|
const executableMissing = `'${executableFile}' does not exist
|
|
12253
12255
|
- if '${subcommandName}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
@@ -12265,10 +12267,10 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
12265
12267
|
const sourceExt = [".js", ".ts", ".tsx", ".mjs", ".cjs"];
|
|
12266
12268
|
function findFile(baseDir, baseName) {
|
|
12267
12269
|
const localBin = path12.resolve(baseDir, baseName);
|
|
12268
|
-
if (
|
|
12270
|
+
if (fs20__default.existsSync(localBin)) return localBin;
|
|
12269
12271
|
if (sourceExt.includes(path12.extname(baseName))) return void 0;
|
|
12270
12272
|
const foundExt = sourceExt.find(
|
|
12271
|
-
(ext2) =>
|
|
12273
|
+
(ext2) => fs20__default.existsSync(`${localBin}${ext2}`)
|
|
12272
12274
|
);
|
|
12273
12275
|
if (foundExt) return `${localBin}${foundExt}`;
|
|
12274
12276
|
return void 0;
|
|
@@ -12280,7 +12282,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
12280
12282
|
if (this._scriptPath) {
|
|
12281
12283
|
let resolvedScriptPath;
|
|
12282
12284
|
try {
|
|
12283
|
-
resolvedScriptPath =
|
|
12285
|
+
resolvedScriptPath = fs20__default.realpathSync(this._scriptPath);
|
|
12284
12286
|
} catch {
|
|
12285
12287
|
resolvedScriptPath = this._scriptPath;
|
|
12286
12288
|
}
|
|
@@ -13236,9 +13238,9 @@ Expecting one of '${allowedValues.join("', '")}'`);
|
|
|
13236
13238
|
* @param {string} [path]
|
|
13237
13239
|
* @return {(string|null|Command)}
|
|
13238
13240
|
*/
|
|
13239
|
-
executableDir(
|
|
13240
|
-
if (
|
|
13241
|
-
this._executableDir =
|
|
13241
|
+
executableDir(path31) {
|
|
13242
|
+
if (path31 === void 0) return this._executableDir;
|
|
13243
|
+
this._executableDir = path31;
|
|
13242
13244
|
return this;
|
|
13243
13245
|
}
|
|
13244
13246
|
/**
|
|
@@ -20345,9 +20347,9 @@ function observableToAsyncIterable(source) {
|
|
|
20345
20347
|
|
|
20346
20348
|
// node_modules/.pnpm/inquirer@14.0.2_@types+node@26.2.0/node_modules/inquirer/dist/ui/prompt.js
|
|
20347
20349
|
var _ = {
|
|
20348
|
-
set: (obj,
|
|
20350
|
+
set: (obj, path31 = "", value) => {
|
|
20349
20351
|
let pointer = obj;
|
|
20350
|
-
|
|
20352
|
+
path31.split(".").forEach((key, index, arr) => {
|
|
20351
20353
|
if (key === "__proto__" || key === "constructor")
|
|
20352
20354
|
return;
|
|
20353
20355
|
if (index === arr.length - 1) {
|
|
@@ -20358,8 +20360,8 @@ var _ = {
|
|
|
20358
20360
|
pointer = pointer[key];
|
|
20359
20361
|
});
|
|
20360
20362
|
},
|
|
20361
|
-
get: (obj,
|
|
20362
|
-
const travel = (regexp) => String.prototype.split.call(
|
|
20363
|
+
get: (obj, path31 = "", defaultValue) => {
|
|
20364
|
+
const travel = (regexp) => String.prototype.split.call(path31, regexp).filter(Boolean).reduce(
|
|
20363
20365
|
// @ts-expect-error implicit any on res[key]
|
|
20364
20366
|
(res, key) => res == null ? res : res[key],
|
|
20365
20367
|
obj
|
|
@@ -20716,18 +20718,18 @@ function scanForForms(ast, content, filePath) {
|
|
|
20716
20718
|
const forms = [];
|
|
20717
20719
|
content.split("\n");
|
|
20718
20720
|
traverse(ast, {
|
|
20719
|
-
JSXElement(
|
|
20720
|
-
const opening =
|
|
20721
|
+
JSXElement(path31) {
|
|
20722
|
+
const opening = path31.node.openingElement;
|
|
20721
20723
|
if (isJSXIdentifier(opening.name) && opening.name.name === "form") {
|
|
20722
|
-
const fields = extractFieldsFromForm(
|
|
20724
|
+
const fields = extractFieldsFromForm(path31);
|
|
20723
20725
|
const hasOnSubmit = opening.attributes.some(
|
|
20724
20726
|
(attr) => isJSXAttribute(attr) && isJSXIdentifier(attr.name) && attr.name.name === "onSubmit"
|
|
20725
20727
|
);
|
|
20726
20728
|
if (hasOnSubmit && fields.length > 0) {
|
|
20727
|
-
const startLine =
|
|
20728
|
-
const endLine =
|
|
20729
|
+
const startLine = path31.node.loc?.start.line || 0;
|
|
20730
|
+
const endLine = path31.node.loc?.end.line || 0;
|
|
20729
20731
|
let componentName = "UnknownForm";
|
|
20730
|
-
let current =
|
|
20732
|
+
let current = path31.parentPath;
|
|
20731
20733
|
while (current) {
|
|
20732
20734
|
if (isFunctionDeclaration(current.node) && current.node.id) {
|
|
20733
20735
|
componentName = current.node.id.name;
|
|
@@ -20760,7 +20762,7 @@ function scanForForms(ast, content, filePath) {
|
|
|
20760
20762
|
}
|
|
20761
20763
|
if (isJSXIdentifier(opening.name) && opening.name.name === "Form") {
|
|
20762
20764
|
if (content.includes("Formik") || content.includes("formik")) {
|
|
20763
|
-
const fields = extractFieldsFromFormik(
|
|
20765
|
+
const fields = extractFieldsFromFormik(path31);
|
|
20764
20766
|
if (fields.length > 0) {
|
|
20765
20767
|
forms.push({
|
|
20766
20768
|
filePath,
|
|
@@ -20771,8 +20773,8 @@ function scanForForms(ast, content, filePath) {
|
|
|
20771
20773
|
submitsTo: null,
|
|
20772
20774
|
complexity: "moderate",
|
|
20773
20775
|
suggestedAction: "assisted",
|
|
20774
|
-
startLine:
|
|
20775
|
-
endLine:
|
|
20776
|
+
startLine: path31.node.loc?.start.line || 0,
|
|
20777
|
+
endLine: path31.node.loc?.end.line || 0
|
|
20776
20778
|
});
|
|
20777
20779
|
}
|
|
20778
20780
|
}
|
|
@@ -20790,8 +20792,8 @@ function extractFieldsFromForm(formPath) {
|
|
|
20790
20792
|
const radioGroups = /* @__PURE__ */ new Map();
|
|
20791
20793
|
const checkboxGroups = /* @__PURE__ */ new Map();
|
|
20792
20794
|
formPath.traverse({
|
|
20793
|
-
JSXElement(
|
|
20794
|
-
const opening =
|
|
20795
|
+
JSXElement(path31) {
|
|
20796
|
+
const opening = path31.node.openingElement;
|
|
20795
20797
|
const tagName = isJSXIdentifier(opening.name) ? opening.name.name : null;
|
|
20796
20798
|
if (["input", "textarea", "select"].includes(tagName || "")) {
|
|
20797
20799
|
const attrs = opening.attributes;
|
|
@@ -20838,7 +20840,7 @@ function extractFieldsFromForm(formPath) {
|
|
|
20838
20840
|
}
|
|
20839
20841
|
if (tagName === "select") {
|
|
20840
20842
|
const selectOptions = [];
|
|
20841
|
-
|
|
20843
|
+
path31.traverse({
|
|
20842
20844
|
JSXElement(optionPath) {
|
|
20843
20845
|
const optOpening = optionPath.node.openingElement;
|
|
20844
20846
|
const optTagName = isJSXIdentifier(optOpening.name) ? optOpening.name.name : null;
|
|
@@ -20913,8 +20915,8 @@ function extractFieldsFromForm(formPath) {
|
|
|
20913
20915
|
function extractFieldsFromFormik(formPath, content) {
|
|
20914
20916
|
const fields = [];
|
|
20915
20917
|
formPath.traverse({
|
|
20916
|
-
JSXElement(
|
|
20917
|
-
const opening =
|
|
20918
|
+
JSXElement(path31) {
|
|
20919
|
+
const opening = path31.node.openingElement;
|
|
20918
20920
|
const tagName = isJSXIdentifier(opening.name) ? opening.name.name : null;
|
|
20919
20921
|
if (tagName === "Field" || tagName === "FastField") {
|
|
20920
20922
|
const attrs = opening.attributes;
|
|
@@ -21033,11 +21035,11 @@ function scanForMetadata(ast, content, filePath) {
|
|
|
21033
21035
|
}
|
|
21034
21036
|
let hasHeadComponent = false;
|
|
21035
21037
|
traverse(ast, {
|
|
21036
|
-
JSXElement(
|
|
21037
|
-
const opening =
|
|
21038
|
+
JSXElement(path31) {
|
|
21039
|
+
const opening = path31.node.openingElement;
|
|
21038
21040
|
if (isJSXIdentifier(opening.name) && opening.name.name === "Head") {
|
|
21039
21041
|
hasHeadComponent = true;
|
|
21040
|
-
|
|
21042
|
+
path31.stop();
|
|
21041
21043
|
}
|
|
21042
21044
|
}
|
|
21043
21045
|
});
|
|
@@ -21072,8 +21074,8 @@ function scanForWidgets(ast, content, filePath) {
|
|
|
21072
21074
|
for (const { pattern, type } of widgetPatterns) {
|
|
21073
21075
|
if (pattern.test(content)) {
|
|
21074
21076
|
traverse(ast, {
|
|
21075
|
-
JSXElement(
|
|
21076
|
-
const opening =
|
|
21077
|
+
JSXElement(path31) {
|
|
21078
|
+
const opening = path31.node.openingElement;
|
|
21077
21079
|
if (isJSXIdentifier(opening.name) && (opening.name.name === "script" || opening.name.name === "Script")) {
|
|
21078
21080
|
const srcAttr = opening.attributes.find(
|
|
21079
21081
|
(attr) => isJSXAttribute(attr) && isJSXIdentifier(attr.name) && attr.name.name === "src"
|
|
@@ -21088,8 +21090,8 @@ function scanForWidgets(ast, content, filePath) {
|
|
|
21088
21090
|
filePath,
|
|
21089
21091
|
widgetType: type,
|
|
21090
21092
|
scriptTag: src,
|
|
21091
|
-
startLine:
|
|
21092
|
-
endLine:
|
|
21093
|
+
startLine: path31.node.loc?.start.line || 0,
|
|
21094
|
+
endLine: path31.node.loc?.end.line || 0
|
|
21093
21095
|
});
|
|
21094
21096
|
}
|
|
21095
21097
|
}
|
|
@@ -21228,8 +21230,8 @@ function scanForSchemas(ast, content, filePath) {
|
|
|
21228
21230
|
return schemas;
|
|
21229
21231
|
}
|
|
21230
21232
|
traverse(ast, {
|
|
21231
|
-
JSXElement(
|
|
21232
|
-
const opening =
|
|
21233
|
+
JSXElement(path31) {
|
|
21234
|
+
const opening = path31.node.openingElement;
|
|
21233
21235
|
if (isJSXIdentifier(opening.name) && (opening.name.name === "script" || opening.name.name === "Script")) {
|
|
21234
21236
|
const typeAttr = opening.attributes.find(
|
|
21235
21237
|
(attr) => isJSXAttribute(attr) && isJSXIdentifier(attr.name) && attr.name.name === "type"
|
|
@@ -21256,8 +21258,8 @@ function scanForSchemas(ast, content, filePath) {
|
|
|
21256
21258
|
filePath,
|
|
21257
21259
|
type: detectedType,
|
|
21258
21260
|
schemaType,
|
|
21259
|
-
startLine:
|
|
21260
|
-
endLine:
|
|
21261
|
+
startLine: path31.node.loc?.start.line || 0,
|
|
21262
|
+
endLine: path31.node.loc?.end.line || 0
|
|
21261
21263
|
});
|
|
21262
21264
|
}
|
|
21263
21265
|
}
|
|
@@ -21290,8 +21292,8 @@ function scanForFAQs(ast, content, filePath) {
|
|
|
21290
21292
|
/questions?\s*(?:and|&)?\s*answers?/i
|
|
21291
21293
|
];
|
|
21292
21294
|
traverse(ast, {
|
|
21293
|
-
JSXElement(
|
|
21294
|
-
const opening =
|
|
21295
|
+
JSXElement(path31) {
|
|
21296
|
+
const opening = path31.node.openingElement;
|
|
21295
21297
|
let tagName = "";
|
|
21296
21298
|
if (isJSXIdentifier(opening.name)) {
|
|
21297
21299
|
tagName = opening.name.name;
|
|
@@ -21304,8 +21306,8 @@ function scanForFAQs(ast, content, filePath) {
|
|
|
21304
21306
|
faqs.push({
|
|
21305
21307
|
filePath,
|
|
21306
21308
|
type: "details-summary",
|
|
21307
|
-
startLine:
|
|
21308
|
-
endLine:
|
|
21309
|
+
startLine: path31.node.loc?.start.line || 0,
|
|
21310
|
+
endLine: path31.node.loc?.end.line || 0,
|
|
21309
21311
|
hasSchema: content.includes("FAQPage") || content.includes("application/ld+json")
|
|
21310
21312
|
});
|
|
21311
21313
|
return;
|
|
@@ -21313,7 +21315,7 @@ function scanForFAQs(ast, content, filePath) {
|
|
|
21313
21315
|
for (const pattern of faqPatterns) {
|
|
21314
21316
|
if (pattern.test(tagName)) {
|
|
21315
21317
|
let itemCount = 0;
|
|
21316
|
-
|
|
21318
|
+
path31.traverse({
|
|
21317
21319
|
JSXElement(itemPath) {
|
|
21318
21320
|
const itemOpening = itemPath.node.openingElement;
|
|
21319
21321
|
if (isJSXIdentifier(itemOpening.name)) {
|
|
@@ -21329,8 +21331,8 @@ function scanForFAQs(ast, content, filePath) {
|
|
|
21329
21331
|
type: "accordion",
|
|
21330
21332
|
componentName: tagName,
|
|
21331
21333
|
itemCount: itemCount || void 0,
|
|
21332
|
-
startLine:
|
|
21333
|
-
endLine:
|
|
21334
|
+
startLine: path31.node.loc?.start.line || 0,
|
|
21335
|
+
endLine: path31.node.loc?.end.line || 0,
|
|
21334
21336
|
hasSchema: content.includes("FAQPage") || content.includes("application/ld+json")
|
|
21335
21337
|
});
|
|
21336
21338
|
return;
|
|
@@ -21453,8 +21455,8 @@ function scanForImages(ast, content, filePath) {
|
|
|
21453
21455
|
return images;
|
|
21454
21456
|
}
|
|
21455
21457
|
traverse(ast, {
|
|
21456
|
-
JSXElement(
|
|
21457
|
-
const opening =
|
|
21458
|
+
JSXElement(path31) {
|
|
21459
|
+
const opening = path31.node.openingElement;
|
|
21458
21460
|
if (!isJSXIdentifier(opening.name)) return;
|
|
21459
21461
|
const tagName = opening.name.name;
|
|
21460
21462
|
if (tagName === "img" || tagName === "Image") {
|
|
@@ -21482,8 +21484,8 @@ function scanForImages(ast, content, filePath) {
|
|
|
21482
21484
|
src: src || void 0,
|
|
21483
21485
|
alt: alt || void 0,
|
|
21484
21486
|
isLocal,
|
|
21485
|
-
startLine:
|
|
21486
|
-
endLine:
|
|
21487
|
+
startLine: path31.node.loc?.start.line || 0,
|
|
21488
|
+
endLine: path31.node.loc?.end.line || 0
|
|
21487
21489
|
});
|
|
21488
21490
|
}
|
|
21489
21491
|
}
|
|
@@ -22374,18 +22376,18 @@ async function migrateFile(filePath, options) {
|
|
|
22374
22376
|
let componentName = "Form";
|
|
22375
22377
|
const traverse2 = (await import('../lib-RSDMEKDQ.mjs')).default;
|
|
22376
22378
|
traverse2(ast, {
|
|
22377
|
-
ExportNamedDeclaration(
|
|
22378
|
-
const decl =
|
|
22379
|
+
ExportNamedDeclaration(path31) {
|
|
22380
|
+
const decl = path31.node.declaration;
|
|
22379
22381
|
if (decl && decl.type === "FunctionDeclaration" && decl.id) {
|
|
22380
22382
|
componentName = decl.id.name;
|
|
22381
|
-
|
|
22383
|
+
path31.stop();
|
|
22382
22384
|
}
|
|
22383
22385
|
},
|
|
22384
|
-
ExportDefaultDeclaration(
|
|
22385
|
-
const decl =
|
|
22386
|
+
ExportDefaultDeclaration(path31) {
|
|
22387
|
+
const decl = path31.node.declaration;
|
|
22386
22388
|
if (decl && decl.type === "FunctionDeclaration" && decl.id) {
|
|
22387
22389
|
componentName = decl.id.name;
|
|
22388
|
-
|
|
22390
|
+
path31.stop();
|
|
22389
22391
|
}
|
|
22390
22392
|
}
|
|
22391
22393
|
});
|
|
@@ -22540,7 +22542,7 @@ async function findLayoutFile() {
|
|
|
22540
22542
|
var isDockerCached;
|
|
22541
22543
|
function hasDockerEnv() {
|
|
22542
22544
|
try {
|
|
22543
|
-
|
|
22545
|
+
fs20__default.statSync("/.dockerenv");
|
|
22544
22546
|
return true;
|
|
22545
22547
|
} catch {
|
|
22546
22548
|
return false;
|
|
@@ -22548,7 +22550,7 @@ function hasDockerEnv() {
|
|
|
22548
22550
|
}
|
|
22549
22551
|
function hasDockerCGroup() {
|
|
22550
22552
|
try {
|
|
22551
|
-
return
|
|
22553
|
+
return fs20__default.readFileSync("/proc/self/cgroup", "utf8").includes("docker");
|
|
22552
22554
|
} catch {
|
|
22553
22555
|
return false;
|
|
22554
22556
|
}
|
|
@@ -22564,7 +22566,7 @@ function isDocker() {
|
|
|
22564
22566
|
var cachedResult;
|
|
22565
22567
|
var hasContainerEnv = () => {
|
|
22566
22568
|
try {
|
|
22567
|
-
|
|
22569
|
+
fs20__default.statSync("/run/.containerenv");
|
|
22568
22570
|
return true;
|
|
22569
22571
|
} catch {
|
|
22570
22572
|
return false;
|
|
@@ -22589,12 +22591,12 @@ var isWsl = () => {
|
|
|
22589
22591
|
return true;
|
|
22590
22592
|
}
|
|
22591
22593
|
try {
|
|
22592
|
-
if (
|
|
22594
|
+
if (fs20__default.readFileSync("/proc/version", "utf8").toLowerCase().includes("microsoft")) {
|
|
22593
22595
|
return !isInsideContainer();
|
|
22594
22596
|
}
|
|
22595
22597
|
} catch {
|
|
22596
22598
|
}
|
|
22597
|
-
if (
|
|
22599
|
+
if (fs20__default.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop") || fs20__default.existsSync("/run/WSL")) {
|
|
22598
22600
|
return !isInsideContainer();
|
|
22599
22601
|
}
|
|
22600
22602
|
return false;
|
|
@@ -22697,15 +22699,15 @@ var wslDefaultBrowser = async () => {
|
|
|
22697
22699
|
const { stdout } = await executePowerShell(command, { powerShellPath: psPath });
|
|
22698
22700
|
return stdout.trim();
|
|
22699
22701
|
};
|
|
22700
|
-
var convertWslPathToWindows = async (
|
|
22701
|
-
if (/^[a-z]+:\/\//i.test(
|
|
22702
|
-
return
|
|
22702
|
+
var convertWslPathToWindows = async (path31) => {
|
|
22703
|
+
if (/^[a-z]+:\/\//i.test(path31)) {
|
|
22704
|
+
return path31;
|
|
22703
22705
|
}
|
|
22704
22706
|
try {
|
|
22705
|
-
const { stdout } = await execFile2("wslpath", ["-aw",
|
|
22707
|
+
const { stdout } = await execFile2("wslpath", ["-aw", path31], { encoding: "utf8" });
|
|
22706
22708
|
return stdout.trim();
|
|
22707
22709
|
} catch {
|
|
22708
|
-
return
|
|
22710
|
+
return path31;
|
|
22709
22711
|
}
|
|
22710
22712
|
};
|
|
22711
22713
|
|
|
@@ -25193,8 +25195,8 @@ async function templateCommand(sourcePath, options) {
|
|
|
25193
25195
|
const slots = [];
|
|
25194
25196
|
const componentNames = [];
|
|
25195
25197
|
traverse(ast, {
|
|
25196
|
-
JSXElement(
|
|
25197
|
-
const openingElement =
|
|
25198
|
+
JSXElement(path31) {
|
|
25199
|
+
const openingElement = path31.node.openingElement;
|
|
25198
25200
|
if (isJSXIdentifier(openingElement.name)) {
|
|
25199
25201
|
const componentName = openingElement.name.name;
|
|
25200
25202
|
if (componentName[0] === componentName[0].toUpperCase()) {
|
|
@@ -26318,10 +26320,230 @@ async function uploadSchemas(pages, globalSchema, config2) {
|
|
|
26318
26320
|
}
|
|
26319
26321
|
}
|
|
26320
26322
|
}
|
|
26323
|
+
var SOURCE_EXTENSIONS = [".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"];
|
|
26324
|
+
function stripComments(source) {
|
|
26325
|
+
return source.replace(
|
|
26326
|
+
/("(?:\\.|[^"\\\n])*"|'(?:\\.|[^'\\\n])*'|`(?:\\.|[^`\\])*`)|\/\*[\s\S]*?\*\/|\/\/[^\n]*/g,
|
|
26327
|
+
(match, literal) => literal ?? (match.startsWith("/*") ? match.replace(/[^\n]/g, "") : "")
|
|
26328
|
+
);
|
|
26329
|
+
}
|
|
26330
|
+
function readText(file) {
|
|
26331
|
+
try {
|
|
26332
|
+
return fs20__default.readFileSync(file, "utf-8");
|
|
26333
|
+
} catch {
|
|
26334
|
+
return null;
|
|
26335
|
+
}
|
|
26336
|
+
}
|
|
26337
|
+
function isFile(p) {
|
|
26338
|
+
try {
|
|
26339
|
+
return fs20__default.statSync(p).isFile();
|
|
26340
|
+
} catch {
|
|
26341
|
+
return false;
|
|
26342
|
+
}
|
|
26343
|
+
}
|
|
26344
|
+
function realpath(p) {
|
|
26345
|
+
try {
|
|
26346
|
+
return fs20__default.realpathSync(p);
|
|
26347
|
+
} catch {
|
|
26348
|
+
return null;
|
|
26349
|
+
}
|
|
26350
|
+
}
|
|
26351
|
+
function resolveFile(base) {
|
|
26352
|
+
if (isFile(base) && SOURCE_EXTENSIONS.includes(path12.extname(base))) return base;
|
|
26353
|
+
const stem = base.replace(/\.(m|c)?js$/, "");
|
|
26354
|
+
for (const ext2 of SOURCE_EXTENSIONS) {
|
|
26355
|
+
if (isFile(stem + ext2)) return stem + ext2;
|
|
26356
|
+
}
|
|
26357
|
+
for (const ext2 of SOURCE_EXTENSIONS) {
|
|
26358
|
+
const index = path12.join(base, `index${ext2}`);
|
|
26359
|
+
if (isFile(index)) return index;
|
|
26360
|
+
}
|
|
26361
|
+
return null;
|
|
26362
|
+
}
|
|
26363
|
+
function importSpecifiers(source) {
|
|
26364
|
+
const found = /* @__PURE__ */ new Set();
|
|
26365
|
+
const patterns = [
|
|
26366
|
+
/\b(?:import|export)\s+(?:type\s+)?[^'"`;]*?\bfrom\s*['"]([^'"]+)['"]/g,
|
|
26367
|
+
/\bimport\s*['"]([^'"]+)['"]/g,
|
|
26368
|
+
/\bimport\s*\(\s*['"]([^'"]+)['"]\s*\)/g,
|
|
26369
|
+
/\brequire\s*\(\s*['"]([^'"]+)['"]\s*\)/g
|
|
26370
|
+
];
|
|
26371
|
+
for (const re2 of patterns) {
|
|
26372
|
+
for (const m of source.matchAll(re2)) found.add(m[1]);
|
|
26373
|
+
}
|
|
26374
|
+
return [...found];
|
|
26375
|
+
}
|
|
26376
|
+
function readLooseJson(file) {
|
|
26377
|
+
const text = readText(file);
|
|
26378
|
+
if (!text) return null;
|
|
26379
|
+
try {
|
|
26380
|
+
return JSON.parse(text);
|
|
26381
|
+
} catch {
|
|
26382
|
+
try {
|
|
26383
|
+
const stripped = text.replace(/("(?:\\.|[^"\\])*")|\/\*[\s\S]*?\*\/|\/\/[^\n]*/g, (_m4, str) => str ?? "").replace(/,(\s*[}\]])/g, "$1");
|
|
26384
|
+
return JSON.parse(stripped);
|
|
26385
|
+
} catch {
|
|
26386
|
+
return null;
|
|
26387
|
+
}
|
|
26388
|
+
}
|
|
26389
|
+
}
|
|
26390
|
+
function loadScope(root) {
|
|
26391
|
+
const tsconfig = readLooseJson(path12.join(root, "tsconfig.json")) ?? readLooseJson(path12.join(root, "jsconfig.json"));
|
|
26392
|
+
const options = tsconfig?.compilerOptions ?? {};
|
|
26393
|
+
const baseUrl = path12.resolve(root, options.baseUrl ?? ".");
|
|
26394
|
+
const aliases = [];
|
|
26395
|
+
for (const [key, value] of Object.entries(options.paths ?? {})) {
|
|
26396
|
+
const star = key.indexOf("*");
|
|
26397
|
+
aliases.push({
|
|
26398
|
+
prefix: star === -1 ? key : key.slice(0, star),
|
|
26399
|
+
suffix: star === -1 ? "" : key.slice(star + 1),
|
|
26400
|
+
exact: star === -1,
|
|
26401
|
+
targets: (Array.isArray(value) ? value : [value]).map((t) => path12.resolve(baseUrl, t))
|
|
26402
|
+
});
|
|
26403
|
+
}
|
|
26404
|
+
return { root, aliases };
|
|
26405
|
+
}
|
|
26406
|
+
function packageRoot(dir) {
|
|
26407
|
+
let current = dir;
|
|
26408
|
+
for (; ; ) {
|
|
26409
|
+
if (["package.json", "tsconfig.json", "jsconfig.json"].some((f) => isFile(path12.join(current, f)))) return current;
|
|
26410
|
+
const parent = path12.dirname(current);
|
|
26411
|
+
if (parent === current) return dir;
|
|
26412
|
+
current = parent;
|
|
26413
|
+
}
|
|
26414
|
+
}
|
|
26415
|
+
function pickExportTarget(value) {
|
|
26416
|
+
if (typeof value === "string") return value;
|
|
26417
|
+
if (Array.isArray(value)) {
|
|
26418
|
+
for (const v2 of value) {
|
|
26419
|
+
const t = pickExportTarget(v2);
|
|
26420
|
+
if (t) return t;
|
|
26421
|
+
}
|
|
26422
|
+
return null;
|
|
26423
|
+
}
|
|
26424
|
+
if (value && typeof value === "object") {
|
|
26425
|
+
const conditions = value;
|
|
26426
|
+
for (const key of ["source", "import", "default", "require", "node", "types"]) {
|
|
26427
|
+
if (key in conditions) {
|
|
26428
|
+
const t = pickExportTarget(conditions[key]);
|
|
26429
|
+
if (t) return t;
|
|
26430
|
+
}
|
|
26431
|
+
}
|
|
26432
|
+
}
|
|
26433
|
+
return null;
|
|
26434
|
+
}
|
|
26435
|
+
function resolvePackageSubpath(pkgRoot, subpath) {
|
|
26436
|
+
const pkg = readLooseJson(path12.join(pkgRoot, "package.json")) ?? {};
|
|
26437
|
+
const exportsField = pkg.exports;
|
|
26438
|
+
if (exportsField !== void 0) {
|
|
26439
|
+
const map = typeof exportsField === "string" || Array.isArray(exportsField) || !Object.keys(exportsField).some((k2) => k2.startsWith(".")) ? { ".": exportsField } : exportsField;
|
|
26440
|
+
if (subpath in map) {
|
|
26441
|
+
const target = pickExportTarget(map[subpath]);
|
|
26442
|
+
if (target) return resolveFile(path12.resolve(pkgRoot, target));
|
|
26443
|
+
}
|
|
26444
|
+
for (const [key, value] of Object.entries(map)) {
|
|
26445
|
+
const star = key.indexOf("*");
|
|
26446
|
+
if (star === -1) continue;
|
|
26447
|
+
const prefix = key.slice(0, star);
|
|
26448
|
+
const suffix = key.slice(star + 1);
|
|
26449
|
+
if (subpath.startsWith(prefix) && subpath.endsWith(suffix) && subpath.length >= prefix.length + suffix.length) {
|
|
26450
|
+
const matched = subpath.slice(prefix.length, subpath.length - suffix.length);
|
|
26451
|
+
const target = pickExportTarget(value);
|
|
26452
|
+
if (target) return resolveFile(path12.resolve(pkgRoot, target.replace("*", matched)));
|
|
26453
|
+
}
|
|
26454
|
+
}
|
|
26455
|
+
}
|
|
26456
|
+
if (subpath === ".") {
|
|
26457
|
+
const main = pkg.source ?? pkg.module ?? pkg.main;
|
|
26458
|
+
if (typeof main === "string") {
|
|
26459
|
+
const hit = resolveFile(path12.resolve(pkgRoot, main));
|
|
26460
|
+
if (hit) return hit;
|
|
26461
|
+
}
|
|
26462
|
+
return resolveFile(path12.join(pkgRoot, "index"));
|
|
26463
|
+
}
|
|
26464
|
+
return resolveFile(path12.resolve(pkgRoot, subpath));
|
|
26465
|
+
}
|
|
26466
|
+
function workspacePackage(fromDir, name) {
|
|
26467
|
+
let current = fromDir;
|
|
26468
|
+
for (; ; ) {
|
|
26469
|
+
const candidate = path12.join(current, "node_modules", name);
|
|
26470
|
+
if (fs20__default.existsSync(candidate)) {
|
|
26471
|
+
const real = realpath(candidate);
|
|
26472
|
+
if (!real || real.split(path12.sep).includes("node_modules")) return null;
|
|
26473
|
+
return real;
|
|
26474
|
+
}
|
|
26475
|
+
const parent = path12.dirname(current);
|
|
26476
|
+
if (parent === current) return null;
|
|
26477
|
+
current = parent;
|
|
26478
|
+
}
|
|
26479
|
+
}
|
|
26480
|
+
function splitBare(specifier) {
|
|
26481
|
+
const parts = specifier.split("/");
|
|
26482
|
+
const nameParts = specifier.startsWith("@") ? parts.slice(0, 2) : parts.slice(0, 1);
|
|
26483
|
+
const rest = parts.slice(nameParts.length);
|
|
26484
|
+
return { name: nameParts.join("/"), subpath: rest.length ? `./${rest.join("/")}` : "." };
|
|
26485
|
+
}
|
|
26486
|
+
function readSourceGraph(entries, options = {}) {
|
|
26487
|
+
const { maxDepth = 4, maxFiles = 300 } = options;
|
|
26488
|
+
const scopes = /* @__PURE__ */ new Map();
|
|
26489
|
+
const scopeFor = (file) => {
|
|
26490
|
+
const root = packageRoot(path12.dirname(file));
|
|
26491
|
+
let scope = scopes.get(root);
|
|
26492
|
+
if (!scope) {
|
|
26493
|
+
scope = loadScope(root);
|
|
26494
|
+
scopes.set(root, scope);
|
|
26495
|
+
}
|
|
26496
|
+
return scope;
|
|
26497
|
+
};
|
|
26498
|
+
const resolve = (specifier, fromFile) => {
|
|
26499
|
+
const fromDir = path12.dirname(fromFile);
|
|
26500
|
+
if (specifier.startsWith(".")) return resolveFile(path12.resolve(fromDir, specifier));
|
|
26501
|
+
if (specifier.startsWith("/") || /^[a-z]+:/i.test(specifier)) return null;
|
|
26502
|
+
const scope = scopeFor(fromFile);
|
|
26503
|
+
for (const alias of scope.aliases) {
|
|
26504
|
+
const hit = alias.exact ? specifier === alias.prefix : specifier.startsWith(alias.prefix) && specifier.endsWith(alias.suffix);
|
|
26505
|
+
if (!hit) continue;
|
|
26506
|
+
const matched = alias.exact ? "" : specifier.slice(alias.prefix.length, specifier.length - alias.suffix.length);
|
|
26507
|
+
for (const target of alias.targets) {
|
|
26508
|
+
const hit2 = resolveFile(target.replace("*", matched));
|
|
26509
|
+
if (hit2) return hit2;
|
|
26510
|
+
}
|
|
26511
|
+
}
|
|
26512
|
+
const { name, subpath } = splitBare(specifier);
|
|
26513
|
+
const pkg = workspacePackage(fromDir, name);
|
|
26514
|
+
return pkg ? resolvePackageSubpath(pkg, subpath) : null;
|
|
26515
|
+
};
|
|
26516
|
+
const seen = /* @__PURE__ */ new Set();
|
|
26517
|
+
const out = [];
|
|
26518
|
+
let frontier = entries.map((e) => path12.resolve(e));
|
|
26519
|
+
for (let depth = 0; depth <= maxDepth && frontier.length && out.length < maxFiles; depth++) {
|
|
26520
|
+
const next = [];
|
|
26521
|
+
for (const file of frontier) {
|
|
26522
|
+
if (seen.has(file) || out.length >= maxFiles) continue;
|
|
26523
|
+
seen.add(file);
|
|
26524
|
+
const raw = readText(file);
|
|
26525
|
+
if (raw === null) continue;
|
|
26526
|
+
const source = stripComments(raw);
|
|
26527
|
+
out.push({ file, source });
|
|
26528
|
+
if (depth === maxDepth) continue;
|
|
26529
|
+
for (const specifier of importSpecifiers(source)) {
|
|
26530
|
+
const hit = resolve(specifier, file);
|
|
26531
|
+
if (hit && !seen.has(hit)) next.push(hit);
|
|
26532
|
+
}
|
|
26533
|
+
}
|
|
26534
|
+
frontier = next;
|
|
26535
|
+
}
|
|
26536
|
+
return out;
|
|
26537
|
+
}
|
|
26538
|
+
function readWithImports(cwd, rel, options) {
|
|
26539
|
+
return readSourceGraph([path12.join(cwd, rel)], options).map((f) => f.source).join("\n");
|
|
26540
|
+
}
|
|
26541
|
+
|
|
26542
|
+
// src/og/wiring.ts
|
|
26321
26543
|
var CARD_FILE = /^(opengraph-image|twitter-image)\b.*\.(png|jpe?g|gif|webp|tsx|ts|jsx|js)$/i;
|
|
26322
26544
|
function safeExists(p) {
|
|
26323
26545
|
try {
|
|
26324
|
-
return
|
|
26546
|
+
return fs20__default.existsSync(p);
|
|
26325
26547
|
} catch {
|
|
26326
26548
|
return false;
|
|
26327
26549
|
}
|
|
@@ -26331,7 +26553,7 @@ function findPageCards(cwd) {
|
|
|
26331
26553
|
const walk = (dir) => {
|
|
26332
26554
|
let entries;
|
|
26333
26555
|
try {
|
|
26334
|
-
entries =
|
|
26556
|
+
entries = fs20__default.readdirSync(dir, { withFileTypes: true });
|
|
26335
26557
|
} catch {
|
|
26336
26558
|
return;
|
|
26337
26559
|
}
|
|
@@ -26345,7 +26567,59 @@ function findPageCards(cwd) {
|
|
|
26345
26567
|
for (const rel of NEXT_APP_DIRS) walk(path12.join(cwd, rel));
|
|
26346
26568
|
return found;
|
|
26347
26569
|
}
|
|
26348
|
-
function
|
|
26570
|
+
function findPageFiles(cwd) {
|
|
26571
|
+
const found = [];
|
|
26572
|
+
const pageFile = new RegExp(`^page\\.(${NEXT_SOURCE_EXTENSIONS.join("|")})$`);
|
|
26573
|
+
const walk = (dir) => {
|
|
26574
|
+
let entries;
|
|
26575
|
+
try {
|
|
26576
|
+
entries = fs20__default.readdirSync(dir, { withFileTypes: true });
|
|
26577
|
+
} catch {
|
|
26578
|
+
return;
|
|
26579
|
+
}
|
|
26580
|
+
for (const entry of entries) {
|
|
26581
|
+
if (entry.name.startsWith(".") || entry.name === "node_modules") continue;
|
|
26582
|
+
const full = path12.join(dir, entry.name);
|
|
26583
|
+
if (entry.isDirectory()) walk(full);
|
|
26584
|
+
else if (pageFile.test(entry.name)) found.push(full);
|
|
26585
|
+
}
|
|
26586
|
+
};
|
|
26587
|
+
for (const rel of NEXT_APP_DIRS) walk(path12.join(cwd, rel));
|
|
26588
|
+
return found;
|
|
26589
|
+
}
|
|
26590
|
+
function routeOf(cwd, dir) {
|
|
26591
|
+
const appRoot = NEXT_APP_DIRS.map((rel2) => path12.join(cwd, rel2)).find((root) => dir === root || dir.startsWith(root + path12.sep));
|
|
26592
|
+
const rel = appRoot ? path12.relative(appRoot, dir) : dir;
|
|
26593
|
+
const segments = rel.split(path12.sep).filter((s) => s && !(s.startsWith("(") && s.endsWith(")"))).map((s) => s.startsWith("[") && s.endsWith("]") ? "*" : s);
|
|
26594
|
+
return `/${segments.join("/")}`;
|
|
26595
|
+
}
|
|
26596
|
+
function readCodeCards(cwd, pageCards) {
|
|
26597
|
+
const code = pageCards.filter((f) => /^opengraph-image\.(tsx|ts|jsx|js)$/.test(path12.basename(f)));
|
|
26598
|
+
return code.map((file) => {
|
|
26599
|
+
const dir = path12.dirname(file);
|
|
26600
|
+
const page = findConventionFile(dir, "page");
|
|
26601
|
+
const source = page ? readSourceGraph([page], { maxDepth: 2, maxFiles: 40 }).map((f) => f.source).join("\n") : "";
|
|
26602
|
+
const pageOwn = page ? readSourceGraph([page], { maxDepth: 0 })[0]?.source ?? "" : "";
|
|
26603
|
+
return {
|
|
26604
|
+
file: path12.relative(cwd, file),
|
|
26605
|
+
route: routeOf(cwd, dir),
|
|
26606
|
+
declaresUrl: /\bcodeCardImage\s*\(/.test(source),
|
|
26607
|
+
// A page that deletes the key itself (the pre-`images: false` workaround)
|
|
26608
|
+
// is fine too.
|
|
26609
|
+
blogDeclaresImages: /\bgenerateBlogPostMetadata\s*\(/.test(pageOwn) && !/\bimages\s*:\s*false\b/.test(pageOwn) && !/\bdelete\s+[\w.]+\.images\b/.test(pageOwn)
|
|
26610
|
+
};
|
|
26611
|
+
});
|
|
26612
|
+
}
|
|
26613
|
+
function readTrailingSlash(cwd) {
|
|
26614
|
+
const rel = findNextConfig(cwd);
|
|
26615
|
+
if (!rel) return false;
|
|
26616
|
+
try {
|
|
26617
|
+
return /\btrailingSlash\s*:\s*true\b/.test(fs20__default.readFileSync(path12.join(cwd, rel), "utf-8"));
|
|
26618
|
+
} catch {
|
|
26619
|
+
return false;
|
|
26620
|
+
}
|
|
26621
|
+
}
|
|
26622
|
+
function readOgWiring(cwd, known = {}) {
|
|
26349
26623
|
const siteCard = ["public/og.png", "public/og.jpg", "public/opengraph.png"].some(
|
|
26350
26624
|
(rel) => safeExists(path12.join(cwd, rel))
|
|
26351
26625
|
);
|
|
@@ -26353,17 +26627,23 @@ function readOgWiring(cwd) {
|
|
|
26353
26627
|
let layout = "";
|
|
26354
26628
|
if (layoutPath) {
|
|
26355
26629
|
try {
|
|
26356
|
-
layout =
|
|
26630
|
+
layout = fs20__default.readFileSync(layoutPath, "utf-8");
|
|
26357
26631
|
} catch {
|
|
26358
26632
|
}
|
|
26359
26633
|
}
|
|
26634
|
+
const pageCards = findPageCards(cwd);
|
|
26635
|
+
const entries = [...layoutPath ? [layoutPath] : [], ...findPageFiles(cwd)];
|
|
26636
|
+
const largeCard = /summary_large_image/.test(layout) || pageCards.some((f) => /^twitter-image\b/.test(path12.basename(f))) || readSourceGraph(entries, { maxDepth: 3, maxFiles: 400 }).some((f) => /summary_large_image/.test(f.source));
|
|
26360
26637
|
return {
|
|
26361
26638
|
siteCard,
|
|
26362
|
-
pageCards
|
|
26639
|
+
pageCards,
|
|
26363
26640
|
layoutDeclaresImages: /images:\s*\[/.test(layout),
|
|
26364
|
-
largeCard
|
|
26641
|
+
largeCard,
|
|
26365
26642
|
referencesImage: /og\.png|opengraph-image|og:image|images:\s*\[/.test(layout),
|
|
26366
|
-
layoutFound: !!layoutPath
|
|
26643
|
+
layoutFound: !!layoutPath,
|
|
26644
|
+
trailingSlash: readTrailingSlash(cwd),
|
|
26645
|
+
codeCards: readCodeCards(cwd, pageCards),
|
|
26646
|
+
...known.managedOgImages && { managedOgImages: known.managedOgImages }
|
|
26367
26647
|
};
|
|
26368
26648
|
}
|
|
26369
26649
|
function judgeOgWiring(facts) {
|
|
@@ -26391,10 +26671,13 @@ function judgeOgWiring(facts) {
|
|
|
26391
26671
|
fix: "Remove the images arrays from the root layout metadata and let Next serve each route its own opengraph-image file."
|
|
26392
26672
|
});
|
|
26393
26673
|
}
|
|
26394
|
-
|
|
26395
|
-
|
|
26396
|
-
|
|
26397
|
-
|
|
26674
|
+
const managed = facts.managedOgImages ?? [];
|
|
26675
|
+
if (managed.length) {
|
|
26676
|
+
problems.push({
|
|
26677
|
+
message: `seo_pages.managed_og_image is set for ${managed.length} page${managed.length === 1 ? "" : "s"} (${managed.slice(0, 5).join(", ")}${managed.length > 5 ? ", \u2026" : ""}), which overrides ${managed.length === 1 ? "its" : "their"} own card`,
|
|
26678
|
+
fix: "Clear managed_og_image on those pages in Sonor so each serves its own card."
|
|
26679
|
+
});
|
|
26680
|
+
}
|
|
26398
26681
|
} else if (!facts.referencesImage) {
|
|
26399
26682
|
problems.push({
|
|
26400
26683
|
message: "card asset exists but layout metadata never references it",
|
|
@@ -26407,10 +26690,24 @@ function judgeOgWiring(facts) {
|
|
|
26407
26690
|
fix: "Set twitter: { card: 'summary_large_image' } in the root layout metadata."
|
|
26408
26691
|
});
|
|
26409
26692
|
}
|
|
26693
|
+
for (const card of facts.codeCards ?? []) {
|
|
26694
|
+
if (card.blogDeclaresImages) {
|
|
26695
|
+
problems.push({
|
|
26696
|
+
message: `${card.route} has its own card (${card.file}), but its page's generateBlogPostMetadata declares the featured image, which beats the card`,
|
|
26697
|
+
fix: "Pass images: false to generateBlogPostMetadata in that page."
|
|
26698
|
+
});
|
|
26699
|
+
}
|
|
26700
|
+
if (facts.trailingSlash && !card.declaresUrl) {
|
|
26701
|
+
problems.push({
|
|
26702
|
+
message: `${card.route}'s card (${card.file}) is served at \u2026/opengraph-image with no extension, which trailingSlash: true 308-redirects`,
|
|
26703
|
+
fix: "Declare the slashed URL from the page's metadata: openGraph.images = [codeCardImage(path)] from @sonordev/site-kit/og. Or, for cards that can be rendered ahead of time, key them in og.config.ts `cards` by URL and use paramCardImage."
|
|
26704
|
+
});
|
|
26705
|
+
}
|
|
26706
|
+
}
|
|
26410
26707
|
return problems;
|
|
26411
26708
|
}
|
|
26412
|
-
function checkOgWiring(cwd) {
|
|
26413
|
-
return judgeOgWiring(readOgWiring(cwd));
|
|
26709
|
+
function checkOgWiring(cwd, known = {}) {
|
|
26710
|
+
return judgeOgWiring(readOgWiring(cwd, known));
|
|
26414
26711
|
}
|
|
26415
26712
|
|
|
26416
26713
|
// src/cli/agent/ssr-bailout.ts
|
|
@@ -26617,6 +26914,90 @@ async function checkPostbuildSitemap(cwd) {
|
|
|
26617
26914
|
fix: 'Add "postbuild": "sonor-register-sitemap --auto-discover || true" to package.json scripts.'
|
|
26618
26915
|
};
|
|
26619
26916
|
}
|
|
26917
|
+
var TRAILING_SLASH_ON = /\btrailingSlash\s*:\s*true\b/;
|
|
26918
|
+
async function readBuiltSitemaps(cwd) {
|
|
26919
|
+
const appDir = path12.join(cwd, ".next", "server", "app");
|
|
26920
|
+
const single = await readFileOrNull(path12.join(appDir, "sitemap.xml.body"));
|
|
26921
|
+
if (single !== null) return [single];
|
|
26922
|
+
let shards;
|
|
26923
|
+
try {
|
|
26924
|
+
shards = (await fs3.readdir(path12.join(appDir, "sitemap"))).filter((f) => f.endsWith(".xml.body"));
|
|
26925
|
+
} catch {
|
|
26926
|
+
return null;
|
|
26927
|
+
}
|
|
26928
|
+
if (shards.length === 0) return null;
|
|
26929
|
+
const bodies = await Promise.all(shards.map((f) => readFileOrNull(path12.join(appDir, "sitemap", f))));
|
|
26930
|
+
return bodies.filter((b) => b !== null);
|
|
26931
|
+
}
|
|
26932
|
+
function locPath(loc) {
|
|
26933
|
+
try {
|
|
26934
|
+
return new URL(loc).pathname;
|
|
26935
|
+
} catch {
|
|
26936
|
+
return loc;
|
|
26937
|
+
}
|
|
26938
|
+
}
|
|
26939
|
+
async function checkSitemapTrailingSlash(cwd) {
|
|
26940
|
+
const id = "sitemap.trailing-slash";
|
|
26941
|
+
const title = "Sitemap trailing slash";
|
|
26942
|
+
const configRel = findNextConfig(cwd);
|
|
26943
|
+
const config2 = configRel ? await readFileOrNull(path12.join(cwd, configRel)) || "" : "";
|
|
26944
|
+
if (!TRAILING_SLASH_ON.test(config2)) {
|
|
26945
|
+
return { id, title, level: "ok", message: "next.config leaves trailingSlash off" };
|
|
26946
|
+
}
|
|
26947
|
+
const sitemapRel = findSitemapRoute(cwd);
|
|
26948
|
+
const source = sitemapRel ? await readFileOrNull(path12.join(cwd, sitemapRel)) || "" : "";
|
|
26949
|
+
const forcesOff = /\btrailingSlash\s*:\s*false\b/.test(source);
|
|
26950
|
+
const removeForcedOff = `Remove trailingSlash: false from ${sitemapRel}. createSitemap follows next.config.`;
|
|
26951
|
+
const built = await readBuiltSitemaps(cwd);
|
|
26952
|
+
if (built) {
|
|
26953
|
+
const locs = built.flatMap((xml) => [...xml.matchAll(/<loc>\s*([^<\s]+)\s*<\/loc>/g)].map((m) => m[1]));
|
|
26954
|
+
const unslashed = locs.filter((loc) => {
|
|
26955
|
+
const p = locPath(loc);
|
|
26956
|
+
return applyTrailingSlash(p, true) !== p;
|
|
26957
|
+
});
|
|
26958
|
+
if (unslashed.length === 0) {
|
|
26959
|
+
return { id, title, level: "ok", message: `All ${locs.length} URLs in the built sitemap match trailingSlash: true` };
|
|
26960
|
+
}
|
|
26961
|
+
const fix = forcesOff ? removeForcedOff : source.includes("createSitemap") ? "Upgrade @sonordev/site-kit: createSitemap now follows next.config trailingSlash. If it's already current, something loads the kit outside Next's bundler (serverExternalPackages), so pass createSitemap({ trailingSlash: true })." : `End every <loc> except / and files like /llms.txt in "/", or switch ${sitemapRel ?? "the sitemap route"} to createSitemap.`;
|
|
26962
|
+
return {
|
|
26963
|
+
id,
|
|
26964
|
+
title,
|
|
26965
|
+
level: "warn",
|
|
26966
|
+
message: `${unslashed.length} of ${locs.length} built sitemap URLs lack the trailing slash ${configRel} requires`,
|
|
26967
|
+
detail: `Each one 308-redirects. ${unslashed.slice(0, 5).join(", ")}`,
|
|
26968
|
+
fix: `${fix} Then rebuild.`
|
|
26969
|
+
};
|
|
26970
|
+
}
|
|
26971
|
+
if (!sitemapRel) {
|
|
26972
|
+
return { id, title, level: "skip", message: "No sitemap route to check" };
|
|
26973
|
+
}
|
|
26974
|
+
if (forcesOff) {
|
|
26975
|
+
return {
|
|
26976
|
+
id,
|
|
26977
|
+
title,
|
|
26978
|
+
level: "warn",
|
|
26979
|
+
message: `${sitemapRel} passes trailingSlash: false but ${configRel} sets trailingSlash: true`,
|
|
26980
|
+
detail: "Every sitemap URL except / will 308-redirect.",
|
|
26981
|
+
fix: removeForcedOff
|
|
26982
|
+
};
|
|
26983
|
+
}
|
|
26984
|
+
if (source.includes("createSitemap")) {
|
|
26985
|
+
return {
|
|
26986
|
+
id,
|
|
26987
|
+
title,
|
|
26988
|
+
level: "ok",
|
|
26989
|
+
message: "createSitemap follows next.config trailingSlash",
|
|
26990
|
+
detail: "No build to confirm against. Run `next build`, then doctor again to check the emitted URLs."
|
|
26991
|
+
};
|
|
26992
|
+
}
|
|
26993
|
+
return {
|
|
26994
|
+
id,
|
|
26995
|
+
title,
|
|
26996
|
+
level: "skip",
|
|
26997
|
+
message: "Custom sitemap and no build to check",
|
|
26998
|
+
fix: 'Run `next build`, then doctor again. Every <loc> except / and files like /llms.txt must end in "/".'
|
|
26999
|
+
};
|
|
27000
|
+
}
|
|
26620
27001
|
async function checkApiReachable(timeoutMs = 5e3) {
|
|
26621
27002
|
const key = process.env.SONOR_API_KEY;
|
|
26622
27003
|
try {
|
|
@@ -27060,8 +27441,8 @@ async function checkImageDimsDrift(cwd) {
|
|
|
27060
27441
|
}
|
|
27061
27442
|
return { id: "images.dims-drift", title: "Image dims vs SVG", level: "ok", message: "Declared dims match SVG viewBoxes" };
|
|
27062
27443
|
}
|
|
27063
|
-
async function checkOgCard(cwd) {
|
|
27064
|
-
const problems = judgeOgWiring(readOgWiring(cwd));
|
|
27444
|
+
async function checkOgCard(cwd, known = {}) {
|
|
27445
|
+
const problems = judgeOgWiring(readOgWiring(cwd, known));
|
|
27065
27446
|
if (!problems.length) {
|
|
27066
27447
|
return { id: "og.card", title: "Open Graph card", level: "ok", message: "Cards present and wired" };
|
|
27067
27448
|
}
|
|
@@ -27082,12 +27463,59 @@ async function staticChecks(cwd) {
|
|
|
27082
27463
|
await checkSiteKitLayout(cwd),
|
|
27083
27464
|
await checkSitemap(cwd),
|
|
27084
27465
|
await checkPostbuildSitemap(cwd),
|
|
27466
|
+
await checkSitemapTrailingSlash(cwd),
|
|
27085
27467
|
await checkNetlifyMiddleware(cwd),
|
|
27086
27468
|
await checkImageDimsDrift(cwd),
|
|
27087
27469
|
await checkOgCard(cwd)
|
|
27088
27470
|
];
|
|
27089
27471
|
}
|
|
27090
27472
|
|
|
27473
|
+
// src/og/route-copy.ts
|
|
27474
|
+
var RENDER_CONCURRENCY = 4;
|
|
27475
|
+
async function pooled(items, limit, fn) {
|
|
27476
|
+
const results = new Array(items.length);
|
|
27477
|
+
let cursor = 0;
|
|
27478
|
+
const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
|
|
27479
|
+
while (cursor < items.length) {
|
|
27480
|
+
const i = cursor++;
|
|
27481
|
+
results[i] = await fn(items[i], i);
|
|
27482
|
+
}
|
|
27483
|
+
});
|
|
27484
|
+
await Promise.all(workers);
|
|
27485
|
+
return results;
|
|
27486
|
+
}
|
|
27487
|
+
async function resolveRouteCopy(paths) {
|
|
27488
|
+
let getSEOPageData = null;
|
|
27489
|
+
try {
|
|
27490
|
+
if (process.env.SONOR_API_KEY) {
|
|
27491
|
+
;
|
|
27492
|
+
({ getSEOPageData } = await import('../api-D745LGGU.mjs'));
|
|
27493
|
+
}
|
|
27494
|
+
} catch {
|
|
27495
|
+
getSEOPageData = null;
|
|
27496
|
+
}
|
|
27497
|
+
if (!getSEOPageData) return paths.map((p) => ({ path: p }));
|
|
27498
|
+
return pooled(paths, RENDER_CONCURRENCY, async (p) => {
|
|
27499
|
+
try {
|
|
27500
|
+
const page = await getSEOPageData("", p);
|
|
27501
|
+
const title = page?.managed_title ?? page?.managed_og_title;
|
|
27502
|
+
const description = page?.managed_meta_description ?? page?.managed_og_description;
|
|
27503
|
+
const managedOgImage = page?.managed_og_image || void 0;
|
|
27504
|
+
return { path: p, title: title || void 0, description: description || void 0, managedOgImage };
|
|
27505
|
+
} catch {
|
|
27506
|
+
return { path: p };
|
|
27507
|
+
}
|
|
27508
|
+
});
|
|
27509
|
+
}
|
|
27510
|
+
async function readManagedOgImages(cwd) {
|
|
27511
|
+
if (!process.env.SONOR_API_KEY) return void 0;
|
|
27512
|
+
const appDir = findAppDirForDiscovery(cwd);
|
|
27513
|
+
if (!appDir) return void 0;
|
|
27514
|
+
const routes = [...new Set(discoverNextJsRoutes(appDir).map((r) => r.path))];
|
|
27515
|
+
const copy = await resolveRouteCopy(routes);
|
|
27516
|
+
return copy.filter((r) => r.managedOgImage).map((r) => r.path);
|
|
27517
|
+
}
|
|
27518
|
+
|
|
27091
27519
|
// src/cli/commands/doctor.ts
|
|
27092
27520
|
function countLevels(checks) {
|
|
27093
27521
|
return {
|
|
@@ -27100,6 +27528,11 @@ function countLevels(checks) {
|
|
|
27100
27528
|
async function collectChecks(cwd, online) {
|
|
27101
27529
|
const checks = await staticChecks(cwd);
|
|
27102
27530
|
if (online) {
|
|
27531
|
+
const managedOgImages = await readManagedOgImages(cwd).catch(() => void 0);
|
|
27532
|
+
if (managedOgImages) {
|
|
27533
|
+
const i = checks.findIndex((c) => c.id === "og.card");
|
|
27534
|
+
if (i !== -1) checks[i] = await checkOgCard(cwd, { managedOgImages });
|
|
27535
|
+
}
|
|
27103
27536
|
checks.push(await checkApiReachable(), await checkKeyValid(), await checkLlmsTxt());
|
|
27104
27537
|
checks.push(...await checkClientAuth());
|
|
27105
27538
|
}
|
|
@@ -27156,87 +27589,7 @@ async function statusCommand(options) {
|
|
|
27156
27589
|
const online = options.offline ? false : true;
|
|
27157
27590
|
await runCommand(ctx, (c) => run2(c, online), renderChecksHuman("Site-Kit Integration Status"));
|
|
27158
27591
|
}
|
|
27159
|
-
|
|
27160
|
-
// src/og/pages.ts
|
|
27161
|
-
var DYNAMIC = "*";
|
|
27162
|
-
function pathSegments(path30) {
|
|
27163
|
-
return path30.split("/").filter(Boolean);
|
|
27164
|
-
}
|
|
27165
|
-
function stripBrandSuffix(title, brand) {
|
|
27166
|
-
const cleaned = title.replace(/\s*[|–—-]\s*[^|–—-]+$/, "").trim();
|
|
27167
|
-
if (!cleaned) return title.trim();
|
|
27168
|
-
if (brand && cleaned.toLowerCase() === brand.toLowerCase()) return title.trim();
|
|
27169
|
-
return cleaned;
|
|
27170
|
-
}
|
|
27171
|
-
function titleFromPath(path30) {
|
|
27172
|
-
const last = pathSegments(path30).filter((s) => s !== DYNAMIC).pop();
|
|
27173
|
-
if (!last) return "Home";
|
|
27174
|
-
return last.replace(/[-_]+/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()).trim();
|
|
27175
|
-
}
|
|
27176
|
-
function kickerFromPath(path30, fallback) {
|
|
27177
|
-
const parts = pathSegments(path30);
|
|
27178
|
-
const section = parts.includes(DYNAMIC) ? parts.filter((s) => s !== DYNAMIC) : parts.slice(0, -1);
|
|
27179
|
-
if (!section.length) return fallback;
|
|
27180
|
-
return section.join(" / ").replace(/[-_]+/g, " ");
|
|
27181
|
-
}
|
|
27182
|
-
function clampSubtitle(text, max = 100) {
|
|
27183
|
-
if (!text) return void 0;
|
|
27184
|
-
const flat = text.replace(/\s+/g, " ").trim();
|
|
27185
|
-
if (!flat) return void 0;
|
|
27186
|
-
if (flat.length <= max) return flat;
|
|
27187
|
-
const sentence = flat.slice(0, max + 1).match(/^.*[.!?](?=\s|$)/)?.[0];
|
|
27188
|
-
if (sentence && sentence.length >= 30) return sentence.trim();
|
|
27189
|
-
return void 0;
|
|
27190
|
-
}
|
|
27191
|
-
function kickerIsRedundant(kicker, title) {
|
|
27192
|
-
if (!kicker) return false;
|
|
27193
|
-
const norm = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
27194
|
-
const k2 = norm(kicker);
|
|
27195
|
-
const t = norm(title);
|
|
27196
|
-
if (!k2) return true;
|
|
27197
|
-
if (t.includes(k2) || k2.includes(t)) return true;
|
|
27198
|
-
const titleWords = new Set(t.split(" "));
|
|
27199
|
-
return k2.split(" ").every((w) => titleWords.has(w));
|
|
27200
|
-
}
|
|
27201
|
-
function slugForPath(path30) {
|
|
27202
|
-
const segments = pathSegments(path30);
|
|
27203
|
-
if (!segments.length) return "home";
|
|
27204
|
-
return segments.map((s) => s === DYNAMIC ? "any" : s).join("-").replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase();
|
|
27205
|
-
}
|
|
27206
|
-
function unmatchedCardKeys(cards, paths) {
|
|
27207
|
-
if (!cards) return [];
|
|
27208
|
-
const known = new Set(paths.flatMap((p) => [p, slugForPath(p)]));
|
|
27209
|
-
return Object.keys(cards).filter((key) => !known.has(key));
|
|
27210
|
-
}
|
|
27211
|
-
function pageCardConfig(base, route, brand) {
|
|
27212
|
-
const override = base.cards?.[route.path] ?? base.cards?.[slugForPath(route.path)];
|
|
27213
|
-
const isHome = route.path === "/";
|
|
27214
|
-
const derived = isHome ? { ...base, cards: void 0 } : (() => {
|
|
27215
|
-
const title = route.title ? stripBrandSuffix(route.title, brand) : titleFromPath(route.path);
|
|
27216
|
-
const kicker = kickerFromPath(route.path, base.content.kicker);
|
|
27217
|
-
return {
|
|
27218
|
-
...base,
|
|
27219
|
-
// `cards` is a build-time instruction, not part of a rendered card.
|
|
27220
|
-
cards: void 0,
|
|
27221
|
-
content: {
|
|
27222
|
-
...base.content,
|
|
27223
|
-
kicker: kickerIsRedundant(kicker, title) ? void 0 : kicker,
|
|
27224
|
-
title,
|
|
27225
|
-
subtitle: clampSubtitle(route.description) ?? base.content.subtitle
|
|
27226
|
-
}
|
|
27227
|
-
};
|
|
27228
|
-
})();
|
|
27229
|
-
if (!override) return derived;
|
|
27230
|
-
return {
|
|
27231
|
-
...derived,
|
|
27232
|
-
...override,
|
|
27233
|
-
content: { ...derived.content, ...override.content }
|
|
27234
|
-
};
|
|
27235
|
-
}
|
|
27236
|
-
|
|
27237
|
-
// src/cli/commands/og.ts
|
|
27238
27592
|
var execFileAsync5 = promisify(execFile$1);
|
|
27239
|
-
var RENDER_CONCURRENCY = 4;
|
|
27240
27593
|
var CARD_KEY_FIX = "Key `cards` by route path (`/services/garage`) or slug (`services-garage`). A dynamic route is one `*` per dynamic level \u2014 `/services/*` for `[slug]`, plus a star for each nested `[param]`.";
|
|
27241
27594
|
var CHROME_CANDIDATES = [
|
|
27242
27595
|
process.env.SONOR_CHROME_PATH,
|
|
@@ -27361,7 +27714,7 @@ async function compressCard(pngPath, cwd) {
|
|
|
27361
27714
|
}
|
|
27362
27715
|
}
|
|
27363
27716
|
function codeOgImageFile(dir) {
|
|
27364
|
-
return findConventionFile(dir, "opengraph-image");
|
|
27717
|
+
return findConventionFile(dir, "opengraph-image") ?? findConventionFile(path12.join(dir, "opengraph-image"), "route");
|
|
27365
27718
|
}
|
|
27366
27719
|
function discoverDynamicSegments(appDir) {
|
|
27367
27720
|
const found = [];
|
|
@@ -27379,6 +27732,8 @@ function discoverDynamicSegments(appDir) {
|
|
|
27379
27732
|
if (hasPageFile(full)) {
|
|
27380
27733
|
found.push({ dir: full, path: `/${nextPattern.join("/")}`, parent: `/${urlSegments.join("/")}` });
|
|
27381
27734
|
}
|
|
27735
|
+
} else if (!isGroup && nextPattern.includes(DYNAMIC) && hasPageFile(full)) {
|
|
27736
|
+
found.push({ dir: full, path: `/${nextPattern.join("/")}`, parent: null });
|
|
27382
27737
|
}
|
|
27383
27738
|
walk(full, nextUrl, nextPattern);
|
|
27384
27739
|
}
|
|
@@ -27386,40 +27741,6 @@ function discoverDynamicSegments(appDir) {
|
|
|
27386
27741
|
walk(appDir, [], []);
|
|
27387
27742
|
return found;
|
|
27388
27743
|
}
|
|
27389
|
-
async function pooled(items, limit, fn) {
|
|
27390
|
-
const results = new Array(items.length);
|
|
27391
|
-
let cursor = 0;
|
|
27392
|
-
const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
|
|
27393
|
-
while (cursor < items.length) {
|
|
27394
|
-
const i = cursor++;
|
|
27395
|
-
results[i] = await fn(items[i], i);
|
|
27396
|
-
}
|
|
27397
|
-
});
|
|
27398
|
-
await Promise.all(workers);
|
|
27399
|
-
return results;
|
|
27400
|
-
}
|
|
27401
|
-
async function resolveRouteCopy(paths) {
|
|
27402
|
-
let getSEOPageData = null;
|
|
27403
|
-
try {
|
|
27404
|
-
if (process.env.SONOR_API_KEY) {
|
|
27405
|
-
;
|
|
27406
|
-
({ getSEOPageData } = await import('../api-D745LGGU.mjs'));
|
|
27407
|
-
}
|
|
27408
|
-
} catch {
|
|
27409
|
-
getSEOPageData = null;
|
|
27410
|
-
}
|
|
27411
|
-
if (!getSEOPageData) return paths.map((p) => ({ path: p }));
|
|
27412
|
-
return pooled(paths, RENDER_CONCURRENCY, async (p) => {
|
|
27413
|
-
try {
|
|
27414
|
-
const page = await getSEOPageData("", p);
|
|
27415
|
-
const title = page?.managed_title ?? page?.managed_og_title;
|
|
27416
|
-
const description = page?.managed_meta_description ?? page?.managed_og_description;
|
|
27417
|
-
return { path: p, title: title || void 0, description: description || void 0 };
|
|
27418
|
-
} catch {
|
|
27419
|
-
return { path: p };
|
|
27420
|
-
}
|
|
27421
|
-
});
|
|
27422
|
-
}
|
|
27423
27744
|
function reportCard(label, report) {
|
|
27424
27745
|
if (report.fits && !report.issues.length) {
|
|
27425
27746
|
const shrunk = report.titlePx < TITLE_MAX_PX ? source_default.gray(` (title fitted to ${report.titlePx}px)`) : "";
|
|
@@ -27464,6 +27785,7 @@ async function runOg(options) {
|
|
|
27464
27785
|
let cardKeyFix = null;
|
|
27465
27786
|
let pageCardsWritten = 0;
|
|
27466
27787
|
let totalCardBytes = 0;
|
|
27788
|
+
let managedOgImages;
|
|
27467
27789
|
const spinner = ora("Rendering the site card...").start();
|
|
27468
27790
|
try {
|
|
27469
27791
|
const report = await renderCard(config2, outPath, cwd, chrome, "site");
|
|
@@ -27495,6 +27817,9 @@ async function runOg(options) {
|
|
|
27495
27817
|
const withCopy = await resolveRouteCopy(routes);
|
|
27496
27818
|
const named = withCopy.filter((r) => r.title).length;
|
|
27497
27819
|
copySpinner.stop();
|
|
27820
|
+
if (process.env.SONOR_API_KEY) {
|
|
27821
|
+
managedOgImages = withCopy.filter((r) => r.managedOgImage).map((r) => r.path);
|
|
27822
|
+
}
|
|
27498
27823
|
if (named) {
|
|
27499
27824
|
console.log(source_default.gray(` ${named}/${routes.length} titled from Sonor, the rest from the route path`));
|
|
27500
27825
|
} else {
|
|
@@ -27503,11 +27828,13 @@ async function runOg(options) {
|
|
|
27503
27828
|
const brand = config2.content.title.replace(/\n/g, " ").trim();
|
|
27504
27829
|
const copyByPath = new Map(withCopy.map((r) => [r.path, r]));
|
|
27505
27830
|
const dynamic = discoverDynamicSegments(appDir).map((seg) => ({
|
|
27506
|
-
...copyByPath.get(seg.parent)
|
|
27831
|
+
...seg.parent !== null && copyByPath.get(seg.parent) || {},
|
|
27507
27832
|
path: seg.path,
|
|
27508
27833
|
dir: seg.dir
|
|
27509
27834
|
}));
|
|
27510
27835
|
const targets = [...withCopy, ...dynamic];
|
|
27836
|
+
const paramKeys = paramCardKeys(config2.cards, targets.map((t) => t.path));
|
|
27837
|
+
const paramRoutes = paramKeys.length ? await resolveRouteCopy(paramKeys.map((k2) => k2.path)) : [];
|
|
27511
27838
|
const strayKeys = unmatchedCardKeys(config2.cards, targets.map((t) => t.path));
|
|
27512
27839
|
if (strayKeys.length) {
|
|
27513
27840
|
const patterns = targets.filter((t) => t.path.includes(DYNAMIC)).map((t) => t.path);
|
|
@@ -27554,10 +27881,36 @@ async function runOg(options) {
|
|
|
27554
27881
|
clean = reportCard(`${route.path} ${source_default.gray(path12.relative(cwd, file))}`, report) && clean;
|
|
27555
27882
|
checks.push(cardCheck(route.path, path12.relative(cwd, file), report));
|
|
27556
27883
|
}
|
|
27557
|
-
|
|
27558
|
-
|
|
27884
|
+
const paramDir = path12.join(cwd, "public", PARAM_CARD_DIR);
|
|
27885
|
+
await fs3.rm(paramDir, { recursive: true, force: true });
|
|
27886
|
+
let paramReports = [];
|
|
27887
|
+
if (paramRoutes.length) {
|
|
27888
|
+
console.log("");
|
|
27889
|
+
console.log(source_default.bold(" Per-URL cards") + source_default.gray(` public/${PARAM_CARD_DIR}/, declare with paramCardImage()`));
|
|
27890
|
+
paramReports = await pooled(paramRoutes, RENDER_CONCURRENCY, async (route, i) => {
|
|
27891
|
+
const pageConfig = pageCardConfig(config2, route, brand);
|
|
27892
|
+
const jpg = path12.join(cwd, "public", paramCardUrl(route.path));
|
|
27893
|
+
const png = jpg.replace(/\.jpg$/, ".png");
|
|
27894
|
+
const report = await renderCard(pageConfig, png, cwd, chrome, `param-${i}`);
|
|
27895
|
+
const file = await compressCard(png, cwd);
|
|
27896
|
+
if (file !== jpg) {
|
|
27897
|
+
report.fits = false;
|
|
27898
|
+
report.issues = [...report.issues, "sharp is needed to write per-URL cards as .jpg. Add it: pnpm add -D sharp"];
|
|
27899
|
+
}
|
|
27900
|
+
return { route, file, report };
|
|
27901
|
+
});
|
|
27902
|
+
for (const { route, file, report } of paramReports) {
|
|
27903
|
+
clean = reportCard(`${route.path} ${source_default.gray(path12.relative(cwd, file))}`, report) && clean;
|
|
27904
|
+
checks.push(cardCheck(route.path, path12.relative(cwd, file), report));
|
|
27905
|
+
}
|
|
27906
|
+
}
|
|
27907
|
+
pageCardsWritten = reports.length + paramReports.length;
|
|
27908
|
+
const bytes = await totalBytes([...reports, ...paramReports].map((r) => r.file));
|
|
27559
27909
|
totalCardBytes = bytes;
|
|
27560
|
-
console.log(source_default.gray(` ${(bytes / 1024 / 1024).toFixed(1)} MB of cards. Next serves
|
|
27910
|
+
console.log(source_default.gray(` ${(bytes / 1024 / 1024).toFixed(1)} MB of cards. Next serves the route cards automatically \u2014 no per-page metadata needed.`));
|
|
27911
|
+
if (paramReports.length) {
|
|
27912
|
+
console.log(source_default.gray(" Per-URL cards need the page to declare them: openGraph.images = [paramCardImage(path, { config })]."));
|
|
27913
|
+
}
|
|
27561
27914
|
}
|
|
27562
27915
|
}
|
|
27563
27916
|
}
|
|
@@ -27574,7 +27927,7 @@ async function runOg(options) {
|
|
|
27574
27927
|
console.log(source_default.gray(" (sharp not resolvable \u2014 skipped the 300px preview)"));
|
|
27575
27928
|
}
|
|
27576
27929
|
}
|
|
27577
|
-
const problems = checkOgWiring(cwd);
|
|
27930
|
+
const problems = checkOgWiring(cwd, { managedOgImages });
|
|
27578
27931
|
console.log("");
|
|
27579
27932
|
if (problems.length) {
|
|
27580
27933
|
console.log(source_default.yellow(" Metadata wiring:"));
|
|
@@ -27776,14 +28129,14 @@ var hs = new RegExp(pe, "g");
|
|
|
27776
28129
|
var as = /\\\\/g;
|
|
27777
28130
|
var ls = /\\{/g;
|
|
27778
28131
|
var cs = /\\}/g;
|
|
27779
|
-
var
|
|
28132
|
+
var fs23 = /\\,/g;
|
|
27780
28133
|
var us = /\\./g;
|
|
27781
28134
|
var ds = 1e5;
|
|
27782
28135
|
function Ht(n5) {
|
|
27783
28136
|
return isNaN(n5) ? n5.charCodeAt(0) : parseInt(n5, 10);
|
|
27784
28137
|
}
|
|
27785
28138
|
function ps(n5) {
|
|
27786
|
-
return n5.replace(as, fe).replace(ls, ue).replace(cs, qt).replace(
|
|
28139
|
+
return n5.replace(as, fe).replace(ls, ue).replace(cs, qt).replace(fs23, de).replace(us, pe);
|
|
27787
28140
|
}
|
|
27788
28141
|
function ms(n5) {
|
|
27789
28142
|
return n5.replace(is, "\\").replace(rs, "{").replace(ns, "}").replace(os5, ",").replace(hs, ".");
|
|
@@ -29404,8 +29757,8 @@ var V = class extends EventEmitter {
|
|
|
29404
29757
|
}
|
|
29405
29758
|
};
|
|
29406
29759
|
var vi = realpathSync.native;
|
|
29407
|
-
var wt = { lstatSync: lstatSync, readdir: readdir$1, readdirSync: readdirSync, readlinkSync: readlinkSync, realpathSync: vi, promises: { lstat: lstat, readdir: readdir, readlink: readlink, realpath: realpath } };
|
|
29408
|
-
var Ue = (n5) => !n5 || n5 === wt || n5 ===
|
|
29760
|
+
var wt = { lstatSync: lstatSync, readdir: readdir$1, readdirSync: readdirSync, readlinkSync: readlinkSync, realpathSync: vi, promises: { lstat: lstat, readdir: readdir, readlink: readlink, realpath: realpath$1 } };
|
|
29761
|
+
var Ue = (n5) => !n5 || n5 === wt || n5 === fs20 ? wt : { ...wt, ...n5, promises: { ...wt.promises, ...n5.promises || {} } };
|
|
29409
29762
|
var $e = /^\\\\\?\\([a-z]:)\\?$/i;
|
|
29410
29763
|
var Ri = (n5) => n5.replace(/\//g, "\\").replace($e, "$1\\");
|
|
29411
29764
|
var Oi = /[\\\/]/;
|
|
@@ -31134,7 +31487,7 @@ function findManifestPath() {
|
|
|
31134
31487
|
let dir = baseDir;
|
|
31135
31488
|
for (let i = 0; i < 8; i++) {
|
|
31136
31489
|
const candidate = path12.join(dir, "agent-manifest.json");
|
|
31137
|
-
if (
|
|
31490
|
+
if (fs20__default.existsSync(candidate)) return candidate;
|
|
31138
31491
|
const parent = path12.dirname(dir);
|
|
31139
31492
|
if (parent === dir) break;
|
|
31140
31493
|
dir = parent;
|
|
@@ -31150,7 +31503,7 @@ async function run5(ctx, options) {
|
|
|
31150
31503
|
"Reinstall @sonordev/site-kit, or run `npm run build` if working from source."
|
|
31151
31504
|
);
|
|
31152
31505
|
}
|
|
31153
|
-
const manifest = JSON.parse(
|
|
31506
|
+
const manifest = JSON.parse(fs20__default.readFileSync(manifestPath, "utf-8"));
|
|
31154
31507
|
if (options.section) {
|
|
31155
31508
|
const section = options.section;
|
|
31156
31509
|
if (!(section in manifest)) {
|
|
@@ -32146,17 +32499,16 @@ var LLMS_FILES = [
|
|
|
32146
32499
|
{ path: "/llms.txt", handler: "createLLMsTxtHandler" },
|
|
32147
32500
|
{ path: "/llms-full.txt", handler: "createLLMsFullTxtHandler" }
|
|
32148
32501
|
];
|
|
32149
|
-
var NEXT_CONFIGS = ["next.config.ts", "next.config.mts", "next.config.mjs", "next.config.js", "next.config.cjs"];
|
|
32150
32502
|
function read(cwd, rel) {
|
|
32151
32503
|
try {
|
|
32152
|
-
return
|
|
32504
|
+
return fs20__default.readFileSync(path12.join(cwd, rel), "utf-8");
|
|
32153
32505
|
} catch {
|
|
32154
32506
|
return "";
|
|
32155
32507
|
}
|
|
32156
32508
|
}
|
|
32157
32509
|
function exists(cwd, rel) {
|
|
32158
32510
|
try {
|
|
32159
|
-
return
|
|
32511
|
+
return fs20__default.existsSync(path12.join(cwd, rel));
|
|
32160
32512
|
} catch {
|
|
32161
32513
|
return false;
|
|
32162
32514
|
}
|
|
@@ -32213,37 +32565,38 @@ function findHostNoindex(cwd, urlPath) {
|
|
|
32213
32565
|
if (vercel && vercelJsonNoindex(vercel, urlPath)) return "vercel.json";
|
|
32214
32566
|
return null;
|
|
32215
32567
|
}
|
|
32568
|
+
function readGraph(cwd, rel) {
|
|
32569
|
+
return exists(cwd, rel) ? readWithImports(cwd, rel, { maxDepth: 3, maxFiles: 60 }) : "";
|
|
32570
|
+
}
|
|
32216
32571
|
var LINK_DISCOVERY_LINE = /^.*\bLink\b.*(llms[^\n]*describedby|describedby[^\n]*llms).*$/im;
|
|
32217
32572
|
function findDiscoverySource(cwd) {
|
|
32218
32573
|
for (const rel of findProxyFiles(cwd)) {
|
|
32219
|
-
const src =
|
|
32574
|
+
const src = readGraph(cwd, rel);
|
|
32220
32575
|
const viaFactory = /\bcreate(Proxy|Middleware)\s*\(/.test(src) && /\bllmsDiscovery\b(?!\s*:\s*false\b)/.test(src);
|
|
32221
32576
|
if (viaFactory) return `${rel} (createProxy llmsDiscovery)`;
|
|
32222
32577
|
if (src.includes("buildAiDiscoveryHeaders")) return `${rel} (buildAiDiscoveryHeaders)`;
|
|
32223
32578
|
}
|
|
32224
|
-
|
|
32225
|
-
|
|
32226
|
-
|
|
32227
|
-
if (/\bllmsTxtDiscoveryLink\s*:(?!\s*false\b)/.test(src)) return `${
|
|
32228
|
-
if (src.includes("buildAiDiscoveryHeaders")) return `${
|
|
32229
|
-
break;
|
|
32230
|
-
}
|
|
32231
|
-
const layout = findRootLayout(cwd);
|
|
32232
|
-
if (layout) {
|
|
32233
|
-
const src = read(cwd, path12.relative(cwd, layout));
|
|
32234
|
-
if (src.includes("buildAiDiscoveryHeaders") || src.includes("llmsTxtDiscoveryLink")) {
|
|
32235
|
-
return path12.relative(cwd, layout);
|
|
32236
|
-
}
|
|
32579
|
+
const nextConfig = findNextConfig(cwd);
|
|
32580
|
+
if (nextConfig) {
|
|
32581
|
+
const src = read(cwd, nextConfig);
|
|
32582
|
+
if (/\bllmsTxtDiscoveryLink\s*:(?!\s*false\b)/.test(src)) return `${nextConfig} (llmsTxtDiscoveryLink)`;
|
|
32583
|
+
if (src.includes("buildAiDiscoveryHeaders")) return `${nextConfig} (buildAiDiscoveryHeaders)`;
|
|
32237
32584
|
}
|
|
32238
32585
|
for (const rel of ["netlify.toml", "public/_headers"]) {
|
|
32239
32586
|
if (LINK_DISCOVERY_LINE.test(read(cwd, rel))) return rel;
|
|
32240
32587
|
}
|
|
32241
32588
|
return null;
|
|
32242
32589
|
}
|
|
32590
|
+
function findLayoutHeadersAttempt(cwd) {
|
|
32591
|
+
const layout = findRootLayout(cwd);
|
|
32592
|
+
if (!layout) return null;
|
|
32593
|
+
const src = read(cwd, path12.relative(cwd, layout));
|
|
32594
|
+
return src.includes("buildAiDiscoveryHeaders") || /\bexport\s+(async\s+)?function\s+headers\b/.test(src) ? path12.relative(cwd, layout) : null;
|
|
32595
|
+
}
|
|
32243
32596
|
function readGeoWiring(cwd) {
|
|
32244
32597
|
const appDir = NEXT_APP_DIRS.find((rel) => exists(cwd, rel)) ?? null;
|
|
32245
32598
|
const sitemap = findSitemapRoute(cwd);
|
|
32246
|
-
const sitemapSrc = sitemap ?
|
|
32599
|
+
const sitemapSrc = sitemap ? readGraph(cwd, sitemap) : "";
|
|
32247
32600
|
const sitemapListsLlms = /\bincludeLlms(Full)?TxtInSitemap\s*:\s*true\b/.test(sitemapSrc) || /['"`/]llms(-full)?\.txt['"`]/.test(sitemapSrc);
|
|
32248
32601
|
const sitemapWritesStatic = /\bcreateSitemap\s*\(/.test(sitemapSrc);
|
|
32249
32602
|
const writesLlms = sitemapWritesStatic && !/\boptimizedLLMsTxt\s*:\s*false\b/.test(sitemapSrc);
|
|
@@ -32252,7 +32605,7 @@ function readGeoWiring(cwd) {
|
|
|
32252
32605
|
const file = urlPath.slice(1);
|
|
32253
32606
|
const routeAbs = appDir ? findConventionFile(path12.join(cwd, appDir, file), "route") : null;
|
|
32254
32607
|
const route = routeAbs ? path12.relative(cwd, routeAbs) : null;
|
|
32255
|
-
const routeSrc = route ?
|
|
32608
|
+
const routeSrc = route ? readGraph(cwd, route) : "";
|
|
32256
32609
|
const publicFile = exists(cwd, path12.join("public", file));
|
|
32257
32610
|
const built = urlPath === "/llms.txt" ? writesLlms : writesLlmsFull;
|
|
32258
32611
|
return {
|
|
@@ -32266,7 +32619,15 @@ function readGeoWiring(cwd) {
|
|
|
32266
32619
|
hostNoindex: findHostNoindex(cwd, urlPath)
|
|
32267
32620
|
};
|
|
32268
32621
|
});
|
|
32269
|
-
|
|
32622
|
+
const discovery = findDiscoverySource(cwd);
|
|
32623
|
+
return {
|
|
32624
|
+
appDir,
|
|
32625
|
+
llms,
|
|
32626
|
+
sitemap,
|
|
32627
|
+
sitemapListsLlms,
|
|
32628
|
+
discovery,
|
|
32629
|
+
layoutHeadersAttempt: discovery ? null : findLayoutHeadersAttempt(cwd)
|
|
32630
|
+
};
|
|
32270
32631
|
}
|
|
32271
32632
|
var DISCOVERY_FIX = "Add llmsDiscovery to the proxy: createProxy({ llmsDiscovery: { siteUrl } }) in proxy.ts. Or withSiteKitConfig({ llmsTxtDiscoveryLink: true }) in next.config.";
|
|
32272
32633
|
var SITEMAP_FIX = "Drop includeLlmsTxtInSitemap / includeLlmsFullTxtInSitemap (and any hand-added /llms*.txt entry) from the sitemap. A sitemap lists indexable HTML pages; AI crawlers find llms.txt at /llms.txt.";
|
|
@@ -32307,7 +32668,7 @@ function judgeGeoWiring(facts) {
|
|
|
32307
32668
|
id: "geo.discovery",
|
|
32308
32669
|
label: 'discovery header (Link rel="describedby")',
|
|
32309
32670
|
level: "fail",
|
|
32310
|
-
detail: "not wired in proxy, next.config,
|
|
32671
|
+
detail: facts.layoutHeadersAttempt ? `${facts.layoutHeadersAttempt} exports headers(), which is a next.config API: from a layout it's never called and sends nothing` : "not wired in proxy, next.config, or host config",
|
|
32311
32672
|
fix: DISCOVERY_FIX
|
|
32312
32673
|
}
|
|
32313
32674
|
);
|
|
@@ -32509,4 +32870,3 @@ program2.command("geo").description("Check llms.txt / GEO wiring (routes, sitema
|
|
|
32509
32870
|
}
|
|
32510
32871
|
program2.parse();
|
|
32511
32872
|
//# sourceMappingURL=index.mjs.map
|
|
32512
|
-
//# sourceMappingURL=index.mjs.map
|