nuxt-og-image 3.0.0-rc.5 → 3.0.0-rc.51
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 +5 -10
- package/dist/client/200.html +238 -15
- package/dist/client/404.html +238 -15
- package/dist/client/_nuxt/-7WWnkdy.js +517 -0
- package/dist/client/_nuxt/1Je9_Reo.js +136 -0
- package/dist/client/_nuxt/2rhOc95h.js +135 -0
- package/dist/client/_nuxt/37ic6j3l.js +1 -0
- package/dist/client/_nuxt/3ghuYFLd.js +1 -0
- package/dist/client/_nuxt/6Kuza3Wr.js +1 -0
- package/dist/client/_nuxt/6XBPEST2.js +1 -0
- package/dist/client/_nuxt/7fd6vGzb.js +1 -0
- package/dist/client/_nuxt/8t4jSAMm.js +1 -0
- package/dist/client/_nuxt/9B1nZgL-.js +1 -0
- package/dist/client/_nuxt/9ZOzOPqN.js +1 -0
- package/dist/client/_nuxt/A1WiD9SJ.js +1 -0
- package/dist/client/_nuxt/AgnqFTPX.js +13 -0
- package/dist/client/_nuxt/B1nm99XP.js +2 -0
- package/dist/client/_nuxt/B2BuIiKK.js +1 -0
- package/dist/client/_nuxt/B2DkETJQ.js +1 -0
- package/dist/client/_nuxt/B4yE-MfL.js +38 -0
- package/dist/client/_nuxt/B6nY7VDA.js +25 -0
- package/dist/client/_nuxt/B9CT-1u6.js +7 -0
- package/dist/client/_nuxt/B9E_xdxs.js +666 -0
- package/dist/client/_nuxt/B9S9BZZh.js +1 -0
- package/dist/client/_nuxt/BBDuFDsq.js +1 -0
- package/dist/client/_nuxt/BBJYjQ0k.js +1 -0
- package/dist/client/_nuxt/BBv1LFm6.js +6 -0
- package/dist/client/_nuxt/BF6G6X0H.js +1 -0
- package/dist/client/_nuxt/BG_OyJVq.js +1 -0
- package/dist/client/_nuxt/BH1M7C1g.js +1 -0
- package/dist/client/_nuxt/BH_RS3WO.js +1 -0
- package/dist/client/_nuxt/BICIrM8O.js +1 -0
- package/dist/client/_nuxt/BILqrcpa.js +1 -0
- package/dist/client/_nuxt/BIMuYTWL.js +3 -0
- package/dist/client/_nuxt/BITGhEdf.js +1 -0
- package/dist/client/_nuxt/BIxS-Weu.js +1 -0
- package/dist/client/_nuxt/BLluXI4E.js +1 -0
- package/dist/client/_nuxt/BN4LRXf6.js +4 -0
- package/dist/client/_nuxt/BOnd8D4O.js +186 -0
- package/dist/client/_nuxt/BOpLLL-w.js +1 -0
- package/dist/client/_nuxt/BPiaQZfK.js +1 -0
- package/dist/client/_nuxt/BR6CMsBL.js +1 -0
- package/dist/client/_nuxt/BSB_bK09.js +1 -0
- package/dist/client/_nuxt/BSyl5yf0.js +1 -0
- package/dist/client/_nuxt/BT9ZzGyQ.js +69 -0
- package/dist/client/_nuxt/BTtaZsq5.js +1 -0
- package/dist/client/_nuxt/BUpeXbsf.js +25 -0
- package/dist/client/_nuxt/BWKJ1FCf.js +239 -0
- package/dist/client/_nuxt/BXF7Vm5l.js +1 -0
- package/dist/client/_nuxt/BXfENWL6.js +1 -0
- package/dist/client/_nuxt/BZz1Hhek.js +1 -0
- package/dist/client/_nuxt/B_SUYfiV.js +1 -0
- package/dist/client/_nuxt/BaNxgKSR.js +17 -0
- package/dist/client/_nuxt/BaWyeHV_.js +1 -0
- package/dist/client/_nuxt/BaedD2tq.js +1 -0
- package/dist/client/_nuxt/BbJj1K1w.js +1 -0
- package/dist/client/_nuxt/Bbv8ARUV.js +13 -0
- package/dist/client/_nuxt/Bd7iooY8.js +8 -0
- package/dist/client/_nuxt/Bdb36Id5.js +1 -0
- package/dist/client/_nuxt/BeX7Iu5M.js +90 -0
- package/dist/client/_nuxt/BeocmOPF.js +1 -0
- package/dist/client/_nuxt/Bg0wAK5a.js +100 -0
- package/dist/client/_nuxt/BgBwMnrY.js +76 -0
- package/dist/client/_nuxt/Bgpqy2XC.js +1 -0
- package/dist/client/_nuxt/Bh8mriwU.js +17 -0
- package/dist/client/_nuxt/BiDE021q.js +1 -0
- package/dist/client/_nuxt/Bj5xdiaE.js +1 -0
- package/dist/client/_nuxt/BlxWTfDV.js +699 -0
- package/dist/client/_nuxt/BmCW-tYz.js +86 -0
- package/dist/client/_nuxt/Bn5gmY5k.js +1 -0
- package/dist/client/_nuxt/BrGg7AAd.js +1 -0
- package/dist/client/_nuxt/BsfQk1vf.js +1 -0
- package/dist/client/_nuxt/Bsp1M94H.js +1 -0
- package/dist/client/_nuxt/BsvsQ1iS.js +1 -0
- package/dist/client/_nuxt/BswfO-CF.js +1 -0
- package/dist/client/_nuxt/Btshr8M_.js +70 -0
- package/dist/client/_nuxt/BxwAa5i0.js +1 -0
- package/dist/client/_nuxt/ByMv4Xf1.js +1 -0
- package/dist/client/_nuxt/Bz4xi2rU.js +1 -0
- package/dist/client/_nuxt/C-i5r_gR.js +1 -0
- package/dist/client/_nuxt/C15OxdQ5.js +1 -0
- package/dist/client/_nuxt/C1DVX8_8.js +831 -0
- package/dist/client/_nuxt/C2TBxDwV.js +1 -0
- package/dist/client/_nuxt/C3YqBJkQ.js +1 -0
- package/dist/client/_nuxt/C5gCGmDW.js +200 -0
- package/dist/client/_nuxt/C6Aznpr-.js +1 -0
- package/dist/client/_nuxt/C7oZ9nno.js +1 -0
- package/dist/client/_nuxt/C86elO-m.js +1 -0
- package/dist/client/_nuxt/C9d3aiqh.js +1 -0
- package/dist/client/_nuxt/CApMHEaB.js +1 -0
- package/dist/client/_nuxt/CBL0qBdF.js +1 -0
- package/dist/client/_nuxt/CBPJd_fO.js +1 -0
- package/dist/client/_nuxt/CG4fK2Nq.js +21 -0
- package/dist/client/_nuxt/CGQbO34C.js +1 -0
- package/dist/client/_nuxt/CIekO_uJ.js +1 -0
- package/dist/client/_nuxt/CJQrLysU.js +1 -0
- package/dist/client/_nuxt/CL7Ixq1B.js +1 -0
- package/dist/client/_nuxt/CMDmr8et.js +2 -0
- package/dist/client/_nuxt/CPHkTjfH.js +1 -0
- package/dist/client/_nuxt/CQTpvb7m.js +1 -0
- package/dist/client/_nuxt/CQUCfALx.js +13 -0
- package/dist/client/_nuxt/CRDKj6ck.js +1 -0
- package/dist/client/_nuxt/CRWwmX0L.js +1 -0
- package/dist/client/_nuxt/CRlnGVMD.js +1 -0
- package/dist/client/_nuxt/CThH5sBG.js +1 -0
- package/dist/client/_nuxt/CUVblut_.js +1 -0
- package/dist/client/_nuxt/CX_FIdg1.js +1 -0
- package/dist/client/_nuxt/CZZ6oYdA.js +1 -0
- package/dist/client/_nuxt/C_8Fx7bH.js +1 -0
- package/dist/client/_nuxt/CbViG2Xw.js +74 -0
- package/dist/client/_nuxt/CbYhyuC0.js +505 -0
- package/dist/client/_nuxt/Cda-MJFk.js +1 -0
- package/dist/client/_nuxt/CdedUr_-.js +1 -0
- package/dist/client/_nuxt/CfPQhs6g.js +7 -0
- package/dist/client/_nuxt/Cicx_DS6.js +1 -0
- package/dist/client/_nuxt/ClXEvkw9.js +68 -0
- package/dist/client/_nuxt/CoEqzGFw.js +44 -0
- package/dist/client/_nuxt/CowR2XfX.js +1 -0
- package/dist/client/_nuxt/CrhH3_Og.js +1 -0
- package/dist/client/_nuxt/CrjQeCwm.js +1 -0
- package/dist/client/_nuxt/CsTmP73Z.js +1 -0
- package/dist/client/_nuxt/CsYA0RN7.js +1 -0
- package/dist/client/_nuxt/CsyjKwr8.js +1 -0
- package/dist/client/_nuxt/CsyrCbsw.js +699 -0
- package/dist/client/_nuxt/Cthz8VOO.js +771 -0
- package/dist/client/_nuxt/CupVZNk8.js +25 -0
- package/dist/client/_nuxt/CxrokwfH.js +1 -0
- package/dist/client/_nuxt/CzPA46E-.js +1 -0
- package/dist/client/_nuxt/D-pQtGOP.js +1 -0
- package/dist/client/_nuxt/D384ylkT.js +1 -0
- package/dist/client/_nuxt/D3VXSfF0.js +1 -0
- package/dist/client/_nuxt/D4LaosRr.js +1 -0
- package/dist/client/_nuxt/D4LhxNOI.js +1 -0
- package/dist/client/_nuxt/D4k753MY.js +1 -0
- package/dist/client/_nuxt/D6NljDpC.js +1 -0
- package/dist/client/_nuxt/D6pmzCqS.js +1 -0
- package/dist/client/_nuxt/D7gg1Usp.js +1 -0
- package/dist/client/_nuxt/DAGYewaG.js +559 -0
- package/dist/client/_nuxt/DAVo6uMX.js +1 -0
- package/dist/client/_nuxt/DBxHOdLe.js +1 -0
- package/dist/client/_nuxt/DC4hdoM9.js +87 -0
- package/dist/client/_nuxt/DC8MraHL.js +666 -0
- package/dist/client/_nuxt/DCAtC51B.js +80 -0
- package/dist/client/_nuxt/DCdPDLy4.js +40 -0
- package/dist/client/_nuxt/DCj4DH6i.js +1 -0
- package/dist/client/_nuxt/DCk2z-Tu.js +129 -0
- package/dist/client/_nuxt/DDRuGeQH.js +1 -0
- package/dist/client/_nuxt/DFF-wSSt.js +8 -0
- package/dist/client/_nuxt/DGO8GyiP.js +1 -0
- package/dist/client/_nuxt/DHmGyzbM.js +109 -0
- package/dist/client/_nuxt/DISxKEhY.js +756 -0
- package/dist/client/_nuxt/DIr-ordK.js +1 -0
- package/dist/client/_nuxt/DJZWsvj0.js +1 -0
- package/dist/client/_nuxt/DLP9ZvWb.js +3 -0
- package/dist/client/_nuxt/DNR26wTC.js +1 -0
- package/dist/client/_nuxt/DOtRmeXT.js +1 -0
- package/dist/client/_nuxt/DSrLtGYv.js +15 -0
- package/dist/client/_nuxt/DSsji4Hu.js +1 -0
- package/dist/client/_nuxt/DUdlC5k_.js +1 -0
- package/dist/client/_nuxt/DVfdqzEq.js +1 -0
- package/dist/client/_nuxt/DXFkqnOI.js +816 -0
- package/dist/client/_nuxt/DXT9h7v2.js +1 -0
- package/dist/client/_nuxt/DXZpi2gR.js +1 -0
- package/dist/client/_nuxt/DXpYegZJ.js +1 -0
- package/dist/client/_nuxt/DY7_9Ga-.js +1 -0
- package/dist/client/_nuxt/DYI1rfmx.js +25 -0
- package/dist/client/_nuxt/DZ3fVoEH.js +1 -0
- package/dist/client/_nuxt/DZ_89pU7.js +1 -0
- package/dist/client/_nuxt/DZqG9GXz.js +50 -0
- package/dist/client/_nuxt/DbK06e1c.js +21 -0
- package/dist/client/_nuxt/Dble9ECP.js +1 -0
- package/dist/client/_nuxt/Dch3xQiY.js +699 -0
- package/dist/client/_nuxt/DdacRhvC.js +1 -0
- package/dist/client/_nuxt/DeVv6D4_.js +1 -0
- package/dist/client/_nuxt/Dez-Qvcc.js +544 -0
- package/dist/client/_nuxt/DfUNg_8t.js +1 -0
- package/dist/client/_nuxt/DfeQjIbs.js +5 -0
- package/dist/client/_nuxt/Dg0DGYq4.js +14 -0
- package/dist/client/_nuxt/DggdVF2v.js +1 -0
- package/dist/client/_nuxt/DhFF74a2.js +1 -0
- package/dist/client/_nuxt/DjTlIhuc.js +1 -0
- package/dist/client/_nuxt/DmDrTTlz.js +1 -0
- package/dist/client/_nuxt/DnLUQrgA.js +1 -0
- package/dist/client/_nuxt/DnhXxWz-.js +1 -0
- package/dist/client/_nuxt/DouzTJIq.js +1 -0
- package/dist/client/_nuxt/DsfXcHUZ.js +29 -0
- package/dist/client/_nuxt/DsudziMp.js +16 -0
- package/dist/client/_nuxt/Dszwcx0o.js +1 -0
- package/dist/client/_nuxt/DvyTQcux.js +1 -0
- package/dist/client/_nuxt/Dwo2i-71.js +1 -0
- package/dist/client/_nuxt/DwuVtWc2.js +518 -0
- package/dist/client/_nuxt/DywwDckn.js +159 -0
- package/dist/client/_nuxt/Dz2Ca8U2.js +1 -0
- package/dist/client/_nuxt/DzPyIVdT.js +9 -0
- package/dist/client/_nuxt/DzwdaLuO.js +223 -0
- package/dist/client/_nuxt/Eh5U-gDp.js +52 -0
- package/dist/client/_nuxt/I4qd5QHW.js +10 -0
- package/dist/client/_nuxt/IHMnEr_d.js +1 -0
- package/dist/client/_nuxt/IconCSS.DI_jUTCX.css +1 -0
- package/dist/client/_nuxt/KEYLhlmT.js +1 -0
- package/dist/client/_nuxt/NL97_oaV.js +1 -0
- package/dist/client/_nuxt/PWN5J14X.js +1 -0
- package/dist/client/_nuxt/PifQWv0n.js +1 -0
- package/dist/client/_nuxt/QZ3jNtnE.js +515 -0
- package/dist/client/_nuxt/RCJZWN-0.js +81 -0
- package/dist/client/_nuxt/RE3ujT-k.js +1 -0
- package/dist/client/_nuxt/RgJsN3zu.js +1 -0
- package/dist/client/_nuxt/RqY_Nz63.js +1 -0
- package/dist/client/_nuxt/Sfo2eW0G.js +274 -0
- package/dist/client/_nuxt/T9ysyp6P.js +62 -0
- package/dist/client/_nuxt/TQ9oWRfF.js +1 -0
- package/dist/client/_nuxt/UREJT2Bw.js +1 -0
- package/dist/client/_nuxt/Urb1RsFe.js +1 -0
- package/dist/client/_nuxt/VEmPXi1y.js +1 -0
- package/dist/client/_nuxt/WoBtJUue.js +1 -0
- package/dist/client/_nuxt/YxQm0tCS.js +1 -0
- package/dist/client/_nuxt/ZQC2c-5V.js +9 -0
- package/dist/client/_nuxt/beD-FUib.js +1 -0
- package/dist/client/_nuxt/bmJ2objS.js +1 -0
- package/dist/client/_nuxt/builds/latest.json +1 -1
- package/dist/client/_nuxt/builds/meta/daab05e2-db9f-459a-926a-1824e9329bff.json +1 -0
- package/dist/client/_nuxt/builds/meta/dev.json +1 -0
- package/dist/client/_nuxt/doGI2cFk.js +1 -0
- package/dist/client/_nuxt/eJfcURhx.js +1 -0
- package/dist/client/_nuxt/entry.CyZsr2dM.css +1 -0
- package/dist/client/_nuxt/error-404.BRldFSII.css +1 -0
- package/dist/client/_nuxt/error-500.D8yw_IbC.css +1 -0
- package/dist/client/_nuxt/hXH8Gyq8.js +1 -0
- package/dist/client/_nuxt/i0IPvypD.js +1 -0
- package/dist/client/_nuxt/iSbrOpM4.js +1 -0
- package/dist/client/_nuxt/j8KhMG0x.js +1 -0
- package/dist/client/_nuxt/jaXbsbtS.js +1 -0
- package/dist/client/_nuxt/nclm9rTJ.js +266 -0
- package/dist/client/_nuxt/o-cPXEvd.js +575 -0
- package/dist/client/_nuxt/rS0jd3Ly.js +1 -0
- package/dist/client/_nuxt/sMI-pExk.js +1 -0
- package/dist/client/_nuxt/sQpxpyUs.js +1 -0
- package/dist/client/_nuxt/vMsNTMhM.js +5 -0
- package/dist/client/_nuxt/wChcbJ1V.js +37 -0
- package/dist/client/_nuxt/wORFcijT.js +32 -0
- package/dist/client/_nuxt/wPLeKH6q.js +40 -0
- package/dist/client/_nuxt/xPNGhBYe.js +1 -0
- package/dist/client/index.html +238 -15
- package/dist/module.d.mts +13 -5
- package/dist/module.d.ts +13 -5
- package/dist/module.json +2 -2
- package/dist/module.mjs +195 -128
- package/dist/runtime/assets/Inter-400.ttf.base64 +1 -0
- package/dist/runtime/assets/Inter-700.ttf.base64 +1 -0
- package/dist/runtime/nitro/og-image/bindings/chromium/chrome-launcher.mjs +9 -0
- package/dist/runtime/nitro/og-image/bindings/chromium/on-demand.d.ts +2 -0
- package/dist/runtime/nitro/og-image/bindings/chromium/on-demand.mjs +36 -0
- package/dist/runtime/nitro/og-image/bindings/chromium/playwright.d.ts +2 -0
- package/dist/runtime/nitro/og-image/bindings/chromium/playwright.mjs +6 -0
- package/dist/runtime/nitro/og-image/bindings/css-inline/node.d.ts +8 -0
- package/dist/runtime/nitro/og-image/bindings/css-inline/node.mjs +7 -0
- package/dist/runtime/nitro/og-image/bindings/css-inline/wasm-fs.d.ts +8 -0
- package/dist/runtime/nitro/og-image/bindings/css-inline/wasm-fs.mjs +8 -0
- package/dist/runtime/nitro/og-image/bindings/css-inline/wasm.d.ts +8 -0
- package/dist/runtime/nitro/og-image/bindings/css-inline/wasm.mjs +7 -0
- package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm-fs.mjs +1 -1
- package/dist/runtime/nitro/og-image/bindings/resvg/wasm.mjs +5 -0
- package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm-fs.mjs +1 -1
- package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm.mjs +1 -2
- package/dist/runtime/nitro/og-image/cache.d.ts +7 -0
- package/dist/runtime/{core/cache/htmlPayload.mjs → nitro/og-image/cache.mjs} +4 -1
- package/dist/runtime/{core/renderers → nitro/og-image}/chromium/screenshot.mjs +1 -1
- package/dist/runtime/nitro/og-image/context.d.ts +5 -0
- package/dist/runtime/nitro/og-image/context.mjs +177 -0
- package/dist/runtime/nitro/og-image/instances.d.ts +2 -0
- package/dist/runtime/nitro/og-image/instances.mjs +10 -0
- package/dist/runtime/{core/font/fetch.d.ts → nitro/og-image/satori/font.d.ts} +1 -1
- package/dist/runtime/nitro/og-image/satori/font.mjs +33 -0
- package/dist/runtime/{core/renderers → nitro/og-image}/satori/instances.d.ts +0 -2
- package/dist/runtime/{core/renderers → nitro/og-image}/satori/instances.mjs +2 -11
- package/dist/runtime/nitro/og-image/satori/plugins/classes.mjs +17 -0
- package/dist/runtime/nitro/og-image/satori/plugins/encoding.mjs +17 -0
- package/dist/runtime/nitro/og-image/satori/plugins/imageSrc.mjs +82 -0
- package/dist/runtime/{core/renderers/satori/index.mjs → nitro/og-image/satori/renderer.mjs} +28 -15
- package/dist/runtime/{core/html/applyEmojis.d.ts → nitro/og-image/satori/transforms/emojis.d.ts} +3 -1
- package/dist/runtime/nitro/og-image/satori/transforms/emojis.mjs +3597 -0
- package/dist/runtime/{core/html/applyInlineCss.d.ts → nitro/og-image/satori/transforms/inlineCss.d.ts} +1 -1
- package/dist/runtime/nitro/og-image/satori/transforms/inlineCss.mjs +41 -0
- package/dist/runtime/{core/renderers → nitro/og-image}/satori/vnodes.mjs +9 -7
- package/dist/runtime/nitro/og-image/templates/html.d.ts +2 -0
- package/dist/runtime/{core/html/devIframeTemplate.mjs → nitro/og-image/templates/html.mjs} +17 -9
- package/dist/runtime/nitro/plugins/nuxt-content.mjs +7 -4
- package/dist/runtime/nitro/plugins/prerender.d.ts +1 -1
- package/dist/runtime/nitro/plugins/prerender.mjs +8 -16
- package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/debug.json.d.ts +1 -1
- package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/debug.json.mjs +1 -1
- package/dist/runtime/{server/routes/__og-image__/font-[name]-[weight].[extension].mjs → nitro/routes/font.mjs} +18 -1
- package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/image.mjs +9 -10
- package/dist/runtime/nitro/tsconfig.json +3 -0
- package/dist/runtime/{cache.d.ts → nitro/util/cache.d.ts} +1 -1
- package/dist/runtime/nitro/util/encoding.d.ts +3 -0
- package/dist/runtime/nitro/util/encoding.mjs +15 -0
- package/dist/runtime/nitro/util/kit.d.ts +6 -0
- package/dist/runtime/nitro/util/kit.mjs +32 -0
- package/dist/runtime/{components → nuxt/components}/OgImage/OgImage.d.ts +2 -2
- package/dist/runtime/{components → nuxt/components}/OgImage/OgImageScreenshot.d.ts +2 -2
- package/dist/runtime/nuxt/components/Templates/Community/Frame.vue +64 -0
- package/dist/runtime/{components → nuxt/components}/Templates/Community/NuxtSeo.vue +1 -1
- package/dist/runtime/{components → nuxt/components}/Templates/Community/UnJs.vue +2 -2
- package/dist/runtime/{composables → nuxt/composables}/defineOgImage.d.ts +1 -1
- package/dist/runtime/{composables → nuxt/composables}/defineOgImage.mjs +6 -11
- package/dist/runtime/{composables → nuxt/composables}/defineOgImageComponent.d.ts +1 -1
- package/dist/runtime/{composables → nuxt/composables}/defineOgImageScreenshot.d.ts +1 -1
- package/dist/runtime/nuxt/composables/mock.d.ts +0 -0
- package/dist/runtime/nuxt/composables/mock.mjs +6 -0
- package/dist/runtime/nuxt/plugins/og-image-canonical-urls.server.mjs +14 -5
- package/dist/runtime/nuxt/plugins/route-rule-og-image.server.mjs +1 -1
- package/dist/runtime/nuxt/utils.d.ts +2 -1
- package/dist/runtime/nuxt/utils.mjs +1 -1
- package/dist/runtime/{utils.pure.d.ts → pure.d.ts} +1 -0
- package/dist/runtime/{utils.pure.mjs → pure.mjs} +12 -3
- package/dist/runtime/{utils.d.ts → shared.d.ts} +1 -1
- package/dist/runtime/{utils.mjs → shared.mjs} +3 -2
- package/dist/runtime/types.d.ts +12 -5
- package/dist/types.d.mts +2 -2
- package/package.json +78 -53
- package/dist/client/_nuxt/IconCSS.b7e5876d.js +0 -1
- package/dist/client/_nuxt/IconCSS.f0b56d3e.css +0 -1
- package/dist/client/_nuxt/builds/meta/4b44e059-802c-46c9-90d2-f73641cbd674.json +0 -1
- package/dist/client/_nuxt/entry.006451f1.js +0 -108
- package/dist/client/_nuxt/entry.a30f63d0.css +0 -1
- package/dist/client/_nuxt/error-404.b751fa02.css +0 -1
- package/dist/client/_nuxt/error-404.d6ff1eb0.js +0 -1
- package/dist/client/_nuxt/error-500.3acec475.js +0 -1
- package/dist/client/_nuxt/error-500.69009e70.css +0 -1
- package/dist/client/_nuxt/vanilla-picker-NKbIFE8h.23409a58.js +0 -8
- package/dist/runtime/core/bindings/chromium/node.mjs +0 -33
- package/dist/runtime/core/bindings/css-inline/node.d.ts +0 -2
- package/dist/runtime/core/bindings/css-inline/node.mjs +0 -2
- package/dist/runtime/core/bindings/resvg/wasm.mjs +0 -6
- package/dist/runtime/core/cache/emojis.d.ts +0 -1
- package/dist/runtime/core/cache/emojis.mjs +0 -5
- package/dist/runtime/core/cache/fonts.d.ts +0 -3
- package/dist/runtime/core/cache/fonts.mjs +0 -6
- package/dist/runtime/core/cache/htmlPayload.d.ts +0 -5
- package/dist/runtime/core/cache/prerender.d.ts +0 -2
- package/dist/runtime/core/cache/prerender.mjs +0 -5
- package/dist/runtime/core/env/assets.d.ts +0 -1
- package/dist/runtime/core/env/assets.mjs +0 -11
- package/dist/runtime/core/font/fetch.mjs +0 -36
- package/dist/runtime/core/html/applyEmojis.mjs +0 -37
- package/dist/runtime/core/html/applyInlineCss.mjs +0 -32
- package/dist/runtime/core/html/devIframeTemplate.d.ts +0 -2
- package/dist/runtime/core/html/fetchIsland.d.ts +0 -3
- package/dist/runtime/core/html/fetchIsland.mjs +0 -17
- package/dist/runtime/core/options/extract.d.ts +0 -3
- package/dist/runtime/core/options/extract.mjs +0 -49
- package/dist/runtime/core/options/fetch.d.ts +0 -3
- package/dist/runtime/core/options/fetch.mjs +0 -32
- package/dist/runtime/core/renderers/satori/plugins/encoding.mjs +0 -8
- package/dist/runtime/core/renderers/satori/plugins/imageSrc.mjs +0 -75
- package/dist/runtime/core/renderers/satori/plugins/twClasses.mjs +0 -8
- package/dist/runtime/core/utils/resolveRendererContext.d.ts +0 -3
- package/dist/runtime/core/utils/resolveRendererContext.mjs +0 -97
- package/dist/runtime/nitro/utils.d.ts +0 -2
- package/dist/runtime/nitro/utils.mjs +0 -16
- package/dist/runtime/server/assets/inter-latin-ext-400-normal.woff +0 -0
- package/dist/runtime/server/assets/inter-latin-ext-700-normal.woff +0 -0
- /package/dist/runtime/{core/bindings/chromium/node.d.ts → nitro/og-image/bindings/chromium/chrome-launcher.d.ts} +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/resvg/node.d.ts +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/resvg/node.mjs +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm-fs.d.ts +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm.d.ts +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/satori/node.d.ts +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/satori/node.mjs +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm-fs.d.ts +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm.d.ts +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/sharp/node.d.ts +0 -0
- /package/dist/runtime/{core → nitro/og-image}/bindings/sharp/node.mjs +0 -0
- /package/dist/runtime/{core/renderers/chromium/index.d.ts → nitro/og-image/chromium/renderer.d.ts} +0 -0
- /package/dist/runtime/{core/renderers/chromium/index.mjs → nitro/og-image/chromium/renderer.mjs} +0 -0
- /package/dist/runtime/{core/renderers → nitro/og-image}/chromium/screenshot.d.ts +0 -0
- /package/dist/runtime/{core/renderers/satori/plugins/emojis.d.ts → nitro/og-image/satori/plugins/classes.d.ts} +0 -0
- /package/dist/runtime/{core/renderers/satori/plugins/encoding.d.ts → nitro/og-image/satori/plugins/emojis.d.ts} +0 -0
- /package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/emojis.mjs +0 -0
- /package/dist/runtime/{core/renderers/satori/plugins/flex.d.ts → nitro/og-image/satori/plugins/encoding.d.ts} +0 -0
- /package/dist/runtime/{core/renderers/satori/plugins/imageSrc.d.ts → nitro/og-image/satori/plugins/flex.d.ts} +0 -0
- /package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/flex.mjs +0 -0
- /package/dist/runtime/{core/renderers/satori/plugins/twClasses.d.ts → nitro/og-image/satori/plugins/imageSrc.d.ts} +0 -0
- /package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/unocss.d.ts +0 -0
- /package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/unocss.mjs +0 -0
- /package/dist/runtime/{core/renderers/satori/index.d.ts → nitro/og-image/satori/renderer.d.ts} +0 -0
- /package/dist/runtime/{core/renderers → nitro/og-image}/satori/utils.d.ts +0 -0
- /package/dist/runtime/{core/renderers → nitro/og-image}/satori/utils.mjs +0 -0
- /package/dist/runtime/{core/renderers → nitro/og-image}/satori/vnodes.d.ts +0 -0
- /package/dist/runtime/{server/routes/__og-image__/font-[name]-[weight].[extension].d.ts → nitro/routes/font.d.ts} +0 -0
- /package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/image.d.ts +0 -0
- /package/dist/runtime/{cache.mjs → nitro/util/cache.mjs} +0 -0
- /package/dist/runtime/{core/utils → nitro/util}/wasm.d.ts +0 -0
- /package/dist/runtime/{core/utils → nitro/util}/wasm.mjs +0 -0
- /package/dist/runtime/{components → nuxt/components}/OgImage/OgImage.mjs +0 -0
- /package/dist/runtime/{components → nuxt/components}/OgImage/OgImageScreenshot.mjs +0 -0
- /package/dist/runtime/{components → nuxt/components}/Templates/Community/BrandedLogo.vue +0 -0
- /package/dist/runtime/{components → nuxt/components}/Templates/Community/Nuxt.vue +0 -0
- /package/dist/runtime/{components → nuxt/components}/Templates/Community/Pergel.vue +0 -0
- /package/dist/runtime/{components → nuxt/components}/Templates/Community/SimpleBlog.vue +0 -0
- /package/dist/runtime/{components → nuxt/components}/Templates/Community/Wave.vue +0 -0
- /package/dist/runtime/{components → nuxt/components}/Templates/Community/WithEmoji.vue +0 -0
- /package/dist/runtime/{composables → nuxt/composables}/defineOgImageComponent.mjs +0 -0
- /package/dist/runtime/{composables → nuxt/composables}/defineOgImageScreenshot.mjs +0 -0
package/dist/module.mjs
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
|
-
import {
|
|
3
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { useNuxt, addTemplate, loadNuxtModuleInstance, createResolver, resolvePath, tryResolveModule, defineNuxtModule, useLogger, addImports, hasNuxtModule, addServerPlugin, addServerHandler, addComponentsDir, addComponent, addPlugin } from '@nuxt/kit';
|
|
4
5
|
import { assertSiteConfig, installNuxtSiteConfig } from 'nuxt-site-config-kit';
|
|
5
|
-
import { provider, env,
|
|
6
|
+
import { provider, env, isCI, isDevelopment } from 'std-env';
|
|
6
7
|
import { hash } from 'ohash';
|
|
7
|
-
import { relative, dirname } from 'pathe';
|
|
8
|
+
import { relative, dirname, basename, join } from 'pathe';
|
|
8
9
|
import { defu } from 'defu';
|
|
9
|
-
import {
|
|
10
|
+
import { readPackageJSON } from 'pkg-types';
|
|
11
|
+
import { createStorage } from 'unstorage';
|
|
12
|
+
import fsDriver from 'unstorage/drivers/fs';
|
|
13
|
+
import { withoutLeadingSlash } from 'ufo';
|
|
10
14
|
import { ensureDependencyInstalled } from 'nypm';
|
|
15
|
+
import { relative as relative$1 } from 'node:path';
|
|
11
16
|
import { onDevToolsInitialized, extendServerRpc } from '@nuxt/devtools-kit';
|
|
12
|
-
import { readFile, writeFile } from 'node:fs/promises';
|
|
13
17
|
import { createHash } from 'node:crypto';
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
-
|
|
17
|
-
const version = "3.0.0-rc.5";
|
|
18
|
+
import { Launcher } from 'chrome-launcher';
|
|
19
|
+
import { $fetch } from 'ofetch';
|
|
18
20
|
|
|
19
21
|
const autodetectableProviders = {
|
|
20
22
|
azure_static: "azure",
|
|
@@ -31,7 +33,8 @@ const autodetectableStaticProviders = {
|
|
|
31
33
|
};
|
|
32
34
|
const NodeRuntime = {
|
|
33
35
|
// node-server runtime
|
|
34
|
-
"chromium": "
|
|
36
|
+
"chromium": "on-demand",
|
|
37
|
+
// this gets changed build start
|
|
35
38
|
"css-inline": "node",
|
|
36
39
|
"resvg": "node",
|
|
37
40
|
"satori": "node",
|
|
@@ -45,7 +48,8 @@ const cloudflare = {
|
|
|
45
48
|
"satori": "node",
|
|
46
49
|
"sharp": false,
|
|
47
50
|
"wasm": {
|
|
48
|
-
esmImport: true
|
|
51
|
+
esmImport: true,
|
|
52
|
+
lazy: true
|
|
49
53
|
}
|
|
50
54
|
};
|
|
51
55
|
const awsLambda = {
|
|
@@ -56,22 +60,24 @@ const awsLambda = {
|
|
|
56
60
|
"sharp": false
|
|
57
61
|
// 0.33.x has issues
|
|
58
62
|
};
|
|
63
|
+
const WebContainer = {
|
|
64
|
+
"chromium": false,
|
|
65
|
+
"css-inline": "wasm-fs",
|
|
66
|
+
"resvg": "wasm-fs",
|
|
67
|
+
"satori": "wasm-fs",
|
|
68
|
+
"sharp": false
|
|
69
|
+
};
|
|
59
70
|
const RuntimeCompatibility = {
|
|
60
71
|
"nitro-dev": NodeRuntime,
|
|
61
72
|
"nitro-prerender": NodeRuntime,
|
|
62
73
|
"node-server": NodeRuntime,
|
|
63
|
-
"stackblitz":
|
|
64
|
-
|
|
65
|
-
"css-inline": false,
|
|
66
|
-
"resvg": "wasm-fs",
|
|
67
|
-
"satori": "wasm-fs",
|
|
68
|
-
"sharp": false
|
|
69
|
-
},
|
|
74
|
+
"stackblitz": WebContainer,
|
|
75
|
+
"codesandbox": WebContainer,
|
|
70
76
|
"aws-lambda": awsLambda,
|
|
71
77
|
"netlify": awsLambda,
|
|
72
78
|
"netlify-edge": {
|
|
73
79
|
"chromium": false,
|
|
74
|
-
"css-inline":
|
|
80
|
+
"css-inline": "wasm",
|
|
75
81
|
"resvg": "wasm",
|
|
76
82
|
"satori": "node",
|
|
77
83
|
"sharp": false,
|
|
@@ -87,23 +93,26 @@ const RuntimeCompatibility = {
|
|
|
87
93
|
"vercel-edge": {
|
|
88
94
|
"chromium": false,
|
|
89
95
|
"css-inline": false,
|
|
96
|
+
// size constraint (2mb is max)
|
|
90
97
|
"resvg": "wasm",
|
|
91
98
|
"satori": "node",
|
|
92
99
|
"sharp": false,
|
|
93
100
|
"wasm": {
|
|
94
101
|
// lowers workers kb size
|
|
95
|
-
esmImport: true
|
|
102
|
+
esmImport: true,
|
|
103
|
+
lazy: true
|
|
96
104
|
}
|
|
97
105
|
},
|
|
98
106
|
"cloudflare-pages": cloudflare,
|
|
99
|
-
"cloudflare": cloudflare
|
|
107
|
+
"cloudflare": cloudflare,
|
|
108
|
+
"cloudflare-module": cloudflare
|
|
100
109
|
};
|
|
101
110
|
function detectTarget(options = {}) {
|
|
102
111
|
return options?.static ? autodetectableStaticProviders[provider] : autodetectableProviders[provider];
|
|
103
112
|
}
|
|
104
113
|
function resolveNitroPreset(nitroConfig) {
|
|
105
|
-
if (provider === "stackblitz")
|
|
106
|
-
return
|
|
114
|
+
if (provider === "stackblitz" || provider === "codesandbox")
|
|
115
|
+
return provider;
|
|
107
116
|
let preset;
|
|
108
117
|
if (nitroConfig && nitroConfig?.preset)
|
|
109
118
|
preset = nitroConfig.preset;
|
|
@@ -123,16 +132,18 @@ function applyNitroPresetCompatibility(nitroConfig, options) {
|
|
|
123
132
|
const { resolve } = options;
|
|
124
133
|
const satoriEnabled = typeof options.compatibility?.satori !== "undefined" ? !!options.compatibility.satori : !!compatibility.satori;
|
|
125
134
|
const chromiumEnabled = typeof options.compatibility?.chromium !== "undefined" ? !!options.compatibility.chromium : !!compatibility.chromium;
|
|
126
|
-
nitroConfig.alias["#nuxt-og-image/renderers/satori"] = satoriEnabled ? resolve("./runtime/
|
|
127
|
-
nitroConfig.alias["#nuxt-og-image/renderers/chromium"] = chromiumEnabled ? resolve("./runtime/
|
|
135
|
+
nitroConfig.alias["#nuxt-og-image/renderers/satori"] = satoriEnabled ? resolve("./runtime/nitro/og-image/satori/renderer") : "unenv/runtime/mock/empty";
|
|
136
|
+
nitroConfig.alias["#nuxt-og-image/renderers/chromium"] = chromiumEnabled ? resolve("./runtime/nitro/og-image/chromium/renderer") : "unenv/runtime/mock/empty";
|
|
128
137
|
const resolvedCompatibility = {};
|
|
129
138
|
function applyBinding(key) {
|
|
130
139
|
let binding = options.compatibility?.[key];
|
|
131
140
|
if (typeof binding === "undefined")
|
|
132
141
|
binding = compatibility[key];
|
|
142
|
+
if (key === "chromium" && binding === "node")
|
|
143
|
+
binding = "playwright";
|
|
133
144
|
resolvedCompatibility[key] = binding;
|
|
134
145
|
return {
|
|
135
|
-
[`#nuxt-og-image/bindings/${key}`]: binding === false ? "unenv/runtime/mock/empty" : resolve(`./runtime/
|
|
146
|
+
[`#nuxt-og-image/bindings/${key}`]: binding === false ? "unenv/runtime/mock/empty" : resolve(`./runtime/nitro/og-image/bindings/${key}/${binding}`)
|
|
136
147
|
};
|
|
137
148
|
}
|
|
138
149
|
nitroConfig.alias = defu(
|
|
@@ -204,6 +215,12 @@ export {}
|
|
|
204
215
|
nuxt.hooks.hook("prepare:types", ({ references }) => {
|
|
205
216
|
references.push({ path: resolve(nuxt.options.buildDir, `module/${module}.d.ts`) });
|
|
206
217
|
});
|
|
218
|
+
nuxt.hooks.hook("nitro:config", (config) => {
|
|
219
|
+
config.typescript = config.typescript || {};
|
|
220
|
+
config.typescript.tsConfig = config.typescript.tsConfig || {};
|
|
221
|
+
config.typescript.tsConfig.include = config.typescript.tsConfig.include || [];
|
|
222
|
+
config.typescript.tsConfig.include.push(`./module/${module}.d.ts`);
|
|
223
|
+
});
|
|
207
224
|
}
|
|
208
225
|
function isNuxtGenerate(nuxt = useNuxt()) {
|
|
209
226
|
return nuxt.options._generate || nuxt.options.nitro.static || nuxt.options.nitro.preset === "static";
|
|
@@ -237,6 +254,7 @@ function setupDevToolsUI(options, resolve, nuxt = useNuxt()) {
|
|
|
237
254
|
onDevToolsInitialized(async () => {
|
|
238
255
|
const rpc = extendServerRpc("nuxt-og-image", {});
|
|
239
256
|
nuxt.hook("builder:watch", (e, path) => {
|
|
257
|
+
path = relative$1(nuxt.options.srcDir, resolve(nuxt.options.srcDir, path));
|
|
240
258
|
if ((e === "change" || e.includes("link")) && path.startsWith("pages")) {
|
|
241
259
|
rpc.broadcast.refreshRouteData(path).catch(() => {
|
|
242
260
|
});
|
|
@@ -298,7 +316,7 @@ function setupGenerateHandler(options, resolve, nuxt = useNuxt()) {
|
|
|
298
316
|
function setupPrerenderHandler(options, resolve, nuxt = useNuxt()) {
|
|
299
317
|
nuxt.hooks.hook("nitro:init", async (nitro) => {
|
|
300
318
|
nitro.hooks.hook("prerender:config", async (nitroConfig) => {
|
|
301
|
-
applyNitroPresetCompatibility(nitroConfig, { compatibility: options.compatibility
|
|
319
|
+
applyNitroPresetCompatibility(nitroConfig, { compatibility: options.compatibility?.prerender, resolve });
|
|
302
320
|
nitroConfig.wasm = nitroConfig.wasm || {};
|
|
303
321
|
nitroConfig.wasm.esmImport = false;
|
|
304
322
|
const prerenderingPages = (nuxt.options.nitro.prerender?.routes || []).some((r) => r && (!r.includes(".") || r.includes("*")));
|
|
@@ -330,14 +348,20 @@ async function setupBuildHandler(config, resolve, nuxt = useNuxt()) {
|
|
|
330
348
|
return;
|
|
331
349
|
const configuredEntry = nitro.options.rollupConfig?.output.entryFileNames;
|
|
332
350
|
let serverEntry = resolve(_nitro.options.output.serverDir, typeof configuredEntry === "string" ? configuredEntry : "index.mjs");
|
|
333
|
-
|
|
334
|
-
|
|
351
|
+
const isCloudflarePagesOrModule = target === "cloudflare-pages" || target === "cloudflare-module";
|
|
352
|
+
if (isCloudflarePagesOrModule) {
|
|
353
|
+
serverEntry = [
|
|
354
|
+
resolve(dirname(serverEntry), "./chunks/wasm.mjs"),
|
|
355
|
+
resolve(dirname(serverEntry), "./chunks/_/wasm.mjs")
|
|
356
|
+
].filter(existsSync)[0] || serverEntry;
|
|
357
|
+
}
|
|
335
358
|
const contents = await readFile(serverEntry, "utf-8");
|
|
336
359
|
const resvgHash = sha1(await readFile(await resolvePath("@resvg/resvg-wasm/index_bg.wasm")));
|
|
337
360
|
const yogaHash = sha1(await readFile(await resolvePath("yoga-wasm-web/dist/yoga.wasm")));
|
|
361
|
+
const cssInlineHash = sha1(await readFile(await resolvePath("@css-inline/css-inline-wasm/index_bg.wasm")));
|
|
338
362
|
const postfix = target === "vercel-edge" ? "?module" : "";
|
|
339
|
-
const path =
|
|
340
|
-
await writeFile(serverEntry, contents.replaceAll('"@resvg/resvg-wasm/index_bg.wasm"', `"${path}index_bg-${resvgHash}.wasm${postfix}"`).replaceAll('"yoga-wasm-web/dist/yoga.wasm"', `"${path}yoga-${yogaHash}.wasm${postfix}"`), { encoding: "utf-8" });
|
|
363
|
+
const path = isCloudflarePagesOrModule ? `../wasm/` : `./wasm/`;
|
|
364
|
+
await writeFile(serverEntry, contents.replaceAll('"@resvg/resvg-wasm/index_bg.wasm?module"', `"${path}index_bg-${resvgHash}.wasm${postfix}"`).replaceAll('"@css-inline/css-inline-wasm/index_bg.wasm?module"', `"${path}index_bg-${cssInlineHash}.wasm${postfix}"`).replaceAll('"yoga-wasm-web/dist/yoga.wasm?module"', `"${path}yoga-${yogaHash}.wasm${postfix}"`), { encoding: "utf-8" });
|
|
341
365
|
});
|
|
342
366
|
});
|
|
343
367
|
}
|
|
@@ -345,20 +369,46 @@ function sha1(source) {
|
|
|
345
369
|
return createHash("sha1").update(source).digest("hex").slice(0, 16);
|
|
346
370
|
}
|
|
347
371
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
372
|
+
const isUndefinedOrTruthy = (v) => typeof v === "undefined" || v !== false;
|
|
373
|
+
function checkLocalChrome() {
|
|
374
|
+
if (isCI)
|
|
375
|
+
return false;
|
|
376
|
+
let hasChromeLocally = false;
|
|
377
|
+
try {
|
|
378
|
+
hasChromeLocally = !!Launcher.getFirstInstallation();
|
|
379
|
+
} catch {
|
|
380
|
+
}
|
|
381
|
+
return hasChromeLocally;
|
|
382
|
+
}
|
|
383
|
+
async function checkPlaywrightDependency() {
|
|
384
|
+
return !!await tryResolveModule("playwright");
|
|
385
|
+
}
|
|
386
|
+
async function downloadFont(font, storage, mirror) {
|
|
387
|
+
const { name, weight } = font;
|
|
388
|
+
const key = `${name}-${weight}.ttf.base64`;
|
|
389
|
+
if (await storage.hasItem(key))
|
|
390
|
+
return true;
|
|
391
|
+
const host = typeof mirror === "undefined" ? "fonts.googleapis.com" : mirror === true ? "fonts.font.im" : mirror;
|
|
392
|
+
const css = await $fetch(`https://${host}/css2?family=${name}:wght@${weight}`, {
|
|
393
|
+
timeout: 10 * 1e3,
|
|
394
|
+
// 10 second timeout
|
|
395
|
+
headers: {
|
|
396
|
+
// Make sure it returns TTF.
|
|
397
|
+
"User-Agent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"
|
|
398
|
+
}
|
|
399
|
+
}).catch(() => {
|
|
400
|
+
return false;
|
|
360
401
|
});
|
|
361
|
-
|
|
402
|
+
if (!css)
|
|
403
|
+
return false;
|
|
404
|
+
const ttfResource = css.match(/src: url\((.+)\) format\('(opentype|truetype)'\)/);
|
|
405
|
+
if (ttfResource?.[1]) {
|
|
406
|
+
const buf = await $fetch(ttfResource[1], { baseURL: host, responseType: "arrayBuffer" });
|
|
407
|
+
const base64Font = Buffer.from(buf).toString("base64");
|
|
408
|
+
await storage.setItem(key, base64Font);
|
|
409
|
+
return true;
|
|
410
|
+
}
|
|
411
|
+
return false;
|
|
362
412
|
}
|
|
363
413
|
|
|
364
414
|
function normaliseFontInput(fonts) {
|
|
@@ -368,7 +418,7 @@ function normaliseFontInput(fonts) {
|
|
|
368
418
|
return {
|
|
369
419
|
cacheKey: f,
|
|
370
420
|
name,
|
|
371
|
-
weight: weight ||
|
|
421
|
+
weight: weight || 400,
|
|
372
422
|
style: "normal",
|
|
373
423
|
path: void 0
|
|
374
424
|
};
|
|
@@ -386,7 +436,7 @@ const module = defineNuxtModule({
|
|
|
386
436
|
meta: {
|
|
387
437
|
name: "nuxt-og-image",
|
|
388
438
|
compatibility: {
|
|
389
|
-
nuxt: "^3.
|
|
439
|
+
nuxt: "^3.10.3",
|
|
390
440
|
bridge: false
|
|
391
441
|
},
|
|
392
442
|
configKey: "ogImage"
|
|
@@ -398,6 +448,7 @@ const module = defineNuxtModule({
|
|
|
398
448
|
emojis: "noto",
|
|
399
449
|
renderer: "satori",
|
|
400
450
|
component: "NuxtSeo",
|
|
451
|
+
extension: "png",
|
|
401
452
|
width: 1200,
|
|
402
453
|
height: 600,
|
|
403
454
|
// default is to cache the image for 3 day (72 hours)
|
|
@@ -410,23 +461,27 @@ const module = defineNuxtModule({
|
|
|
410
461
|
};
|
|
411
462
|
},
|
|
412
463
|
async setup(config, nuxt) {
|
|
413
|
-
const
|
|
464
|
+
const { resolve } = createResolver(import.meta.url);
|
|
465
|
+
const { name, version } = await readPackageJSON(resolve("../package.json"));
|
|
466
|
+
const logger = useLogger(name);
|
|
414
467
|
logger.level = config.debug || nuxt.options.debug ? 4 : 3;
|
|
415
468
|
if (config.enabled === false) {
|
|
416
469
|
logger.debug("The module is disabled, skipping setup.");
|
|
470
|
+
["defineOgImage", "defineOgImageComponent", "defineOgImageScreenshot"].forEach((name2) => {
|
|
471
|
+
addImports({ name: name2, from: resolve(`./runtime/nuxt/composables/mock`) });
|
|
472
|
+
});
|
|
417
473
|
return;
|
|
418
474
|
}
|
|
419
475
|
if (config.enabled && !nuxt.options.ssr) {
|
|
420
476
|
logger.warn("Nuxt OG Image is enabled but SSR is disabled.\n\nYou should enable SSR (`ssr: true`) or disable the module (`ogImage: { enabled: false }`).");
|
|
421
477
|
return;
|
|
422
478
|
}
|
|
423
|
-
|
|
479
|
+
nuxt.options.build.transpile.push(resolve("./runtime"));
|
|
424
480
|
const preset = resolveNitroPreset(nuxt.options.nitro);
|
|
425
481
|
const targetCompatibility = getPresetNitroPresetCompatibility(preset);
|
|
426
482
|
const hasSharpDependency = !!await tryResolveModule("sharp");
|
|
427
483
|
const userConfiguredExtension = config.defaults.extension;
|
|
428
484
|
const hasConfiguredJpegs = userConfiguredExtension && ["jpeg", "jpg"].includes(userConfiguredExtension);
|
|
429
|
-
config.defaults.extension = userConfiguredExtension || (hasSharpDependency && targetCompatibility.sharp ? "jpg" : "png");
|
|
430
485
|
if (hasConfiguredJpegs && config.defaults.renderer !== "chromium") {
|
|
431
486
|
if (hasSharpDependency && !targetCompatibility.sharp) {
|
|
432
487
|
logger.warn(`Rendering JPEGs requires sharp which does not work with ${preset}. Images will be rendered as PNG at runtime.`);
|
|
@@ -445,32 +500,32 @@ const module = defineNuxtModule({
|
|
|
445
500
|
prerender: { sharp: false }
|
|
446
501
|
});
|
|
447
502
|
}
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
prerender: { chromium: "node" }
|
|
469
|
-
});
|
|
470
|
-
}
|
|
471
|
-
} else if (!hasChromeLocally && nuxt.options.dev && config.compatibility?.dev?.chromium === "node") {
|
|
472
|
-
await ensureChromium(logger);
|
|
503
|
+
const hasChromeLocally = checkLocalChrome();
|
|
504
|
+
const hasPlaywrightDependency = await checkPlaywrightDependency();
|
|
505
|
+
const chromeCompatibilityFlags = {
|
|
506
|
+
prerender: config.compatibility?.prerender?.chromium,
|
|
507
|
+
dev: config.compatibility?.dev?.chromium,
|
|
508
|
+
runtime: config.compatibility?.runtime?.chromium
|
|
509
|
+
};
|
|
510
|
+
const chromiumBinding = {
|
|
511
|
+
dev: null,
|
|
512
|
+
prerender: null,
|
|
513
|
+
runtime: null
|
|
514
|
+
};
|
|
515
|
+
if (nuxt.options.dev) {
|
|
516
|
+
if (isUndefinedOrTruthy(chromeCompatibilityFlags.dev))
|
|
517
|
+
chromiumBinding.dev = hasChromeLocally ? "chrome-launcher" : hasPlaywrightDependency ? "playwright" : "on-demand";
|
|
518
|
+
} else {
|
|
519
|
+
if (isUndefinedOrTruthy(chromeCompatibilityFlags.prerender))
|
|
520
|
+
chromiumBinding.prerender = hasChromeLocally ? "chrome-launcher" : hasPlaywrightDependency ? "playwright" : "on-demand";
|
|
521
|
+
if (isUndefinedOrTruthy(chromeCompatibilityFlags.runtime))
|
|
522
|
+
chromiumBinding.runtime = hasPlaywrightDependency ? "playwright" : null;
|
|
473
523
|
}
|
|
524
|
+
config.compatibility = defu(config.compatibility, {
|
|
525
|
+
runtime: { chromium: chromiumBinding.runtime },
|
|
526
|
+
dev: { chromium: chromiumBinding.dev },
|
|
527
|
+
prerender: { chromium: chromiumBinding.prerender }
|
|
528
|
+
});
|
|
474
529
|
await import('@resvg/resvg-js').catch(() => {
|
|
475
530
|
logger.warn("ReSVG is missing dependencies for environment. Falling back to WASM version, this may slow down PNG rendering.");
|
|
476
531
|
config.compatibility = defu(config.compatibility, {
|
|
@@ -486,67 +541,80 @@ const module = defineNuxtModule({
|
|
|
486
541
|
await installNuxtSiteConfig();
|
|
487
542
|
if (hasNuxtModule("@nuxt/content"))
|
|
488
543
|
addServerPlugin(resolve("./runtime/nitro/plugins/nuxt-content"));
|
|
489
|
-
if (!config.fonts.length)
|
|
490
|
-
config.fonts = [
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
544
|
+
if (!config.fonts.length) {
|
|
545
|
+
config.fonts = [
|
|
546
|
+
{ name: "Inter", weight: 400, path: resolve("./runtime/assets/Inter-400.ttf.base64"), absolutePath: true },
|
|
547
|
+
{ name: "Inter", weight: 700, path: resolve("./runtime/assets/Inter-700.ttf.base64"), absolutePath: true }
|
|
548
|
+
];
|
|
549
|
+
}
|
|
550
|
+
const serverFontsDir = resolve(nuxt.options.buildDir, "cache", `nuxt-og-image@${version}`, "_fonts");
|
|
551
|
+
const fontStorage = createStorage({
|
|
552
|
+
driver: fsDriver({
|
|
553
|
+
base: serverFontsDir
|
|
554
|
+
})
|
|
555
|
+
});
|
|
556
|
+
config.fonts = (await Promise.all(normaliseFontInput(config.fonts).map(async (f) => {
|
|
557
|
+
if (!f.key && !f.path) {
|
|
558
|
+
if (preset === "stackblitz") {
|
|
559
|
+
logger.warn(`The ${f.name}:${f.weight} font was skipped because remote fonts are not available in StackBlitz, please use a local font.`);
|
|
495
560
|
return false;
|
|
496
561
|
}
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
if (typeof f === "string" && f.startsWith("Inter:")) {
|
|
503
|
-
const [_, weight] = f.split(":");
|
|
504
|
-
return {
|
|
505
|
-
name: "Inter",
|
|
506
|
-
weight,
|
|
507
|
-
// nuxt server assets
|
|
508
|
-
key: `nuxt-og-image:fonts:inter-latin-ext-${weight}-normal.woff`
|
|
509
|
-
};
|
|
562
|
+
if (await downloadFont(f, fontStorage, config.googleFontMirror)) {
|
|
563
|
+
f.key = `nuxt-og-image:fonts:${f.name}-${f.weight}.ttf.base64`;
|
|
564
|
+
} else {
|
|
565
|
+
logger.warn(`Failed to download font ${f.name}:${f.weight}. You may be offline or behind a firewall blocking Google. Consider setting \`googleFontMirror: true\`.`);
|
|
566
|
+
return false;
|
|
510
567
|
}
|
|
511
|
-
|
|
512
|
-
|
|
568
|
+
} else if (f.path) {
|
|
569
|
+
const extension = basename(f.path.replace(".base64", "")).split(".").pop();
|
|
570
|
+
if (!["woff", "ttf", "otf"].includes(extension)) {
|
|
571
|
+
logger.warn(`The ${f.name}:${f.weight} font was skipped because the file extension ${extension} is not supported. Only woff, ttf and otf are supported.`);
|
|
513
572
|
return false;
|
|
514
573
|
}
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
574
|
+
if (!f.absolutePath)
|
|
575
|
+
f.path = join(nuxt.options.rootDir, nuxt.options.dir.public, withoutLeadingSlash(f.path));
|
|
576
|
+
if (!existsSync(f.path)) {
|
|
577
|
+
logger.warn(`The ${f.name}:${f.weight} font was skipped because the file does not exist at path ${f.path}.`);
|
|
578
|
+
return false;
|
|
579
|
+
}
|
|
580
|
+
const fontData = await readFile(f.path, f.path.endsWith(".base64") ? "utf-8" : "base64");
|
|
581
|
+
f.key = `nuxt-og-image:fonts:${f.name}-${f.weight}.${extension}.base64`;
|
|
582
|
+
await fontStorage.setItem(`${f.name}-${f.weight}.${extension}.base64`, fontData);
|
|
583
|
+
delete f.path;
|
|
584
|
+
delete f.absolutePath;
|
|
585
|
+
}
|
|
586
|
+
return f;
|
|
587
|
+
}))).filter(Boolean);
|
|
588
|
+
nuxt.options.nitro.serverAssets = nuxt.options.nitro.serverAssets || [];
|
|
589
|
+
nuxt.options.nitro.serverAssets.push({ baseName: "nuxt-og-image:fonts", dir: serverFontsDir });
|
|
522
590
|
nuxt.options.experimental.componentIslands = true;
|
|
523
591
|
addServerHandler({
|
|
524
592
|
lazy: true,
|
|
525
593
|
route: "/__og-image__/font/**",
|
|
526
|
-
handler: resolve("./runtime/
|
|
594
|
+
handler: resolve("./runtime/nitro/routes/font")
|
|
527
595
|
});
|
|
528
596
|
if (config.debug || nuxt.options.dev) {
|
|
529
597
|
addServerHandler({
|
|
530
598
|
lazy: true,
|
|
531
599
|
route: "/__og-image__/debug.json",
|
|
532
|
-
handler: resolve("./runtime/
|
|
600
|
+
handler: resolve("./runtime/nitro/routes/debug.json")
|
|
533
601
|
});
|
|
534
602
|
}
|
|
535
603
|
addServerHandler({
|
|
536
604
|
lazy: true,
|
|
537
605
|
route: "/__og-image__/image/**",
|
|
538
|
-
handler: resolve("./runtime/
|
|
606
|
+
handler: resolve("./runtime/nitro/routes/image")
|
|
539
607
|
});
|
|
540
608
|
nuxt.options.optimization.treeShake.composables.client["nuxt-og-image"] = [];
|
|
541
|
-
["defineOgImage", "defineOgImageComponent", "defineOgImageScreenshot"].forEach((
|
|
609
|
+
["defineOgImage", "defineOgImageComponent", "defineOgImageScreenshot"].forEach((name2) => {
|
|
542
610
|
addImports({
|
|
543
|
-
name,
|
|
544
|
-
from: resolve(`./runtime/composables/${
|
|
611
|
+
name: name2,
|
|
612
|
+
from: resolve(`./runtime/nuxt/composables/${name2}`)
|
|
545
613
|
});
|
|
546
|
-
nuxt.options.optimization.treeShake.composables.client["nuxt-og-image"].push(
|
|
614
|
+
nuxt.options.optimization.treeShake.composables.client["nuxt-og-image"].push(name2);
|
|
547
615
|
});
|
|
548
616
|
await addComponentsDir({
|
|
549
|
-
path: resolve("./runtime/components/Templates/Community"),
|
|
617
|
+
path: resolve("./runtime/nuxt/components/Templates/Community"),
|
|
550
618
|
island: true,
|
|
551
619
|
watch: true
|
|
552
620
|
});
|
|
@@ -554,10 +622,10 @@ const module = defineNuxtModule({
|
|
|
554
622
|
// new
|
|
555
623
|
"OgImage",
|
|
556
624
|
"OgImageScreenshot"
|
|
557
|
-
].forEach((
|
|
625
|
+
].forEach((name2) => {
|
|
558
626
|
addComponent({
|
|
559
|
-
name,
|
|
560
|
-
filePath: resolve(`./runtime/components/OgImage/${
|
|
627
|
+
name: name2,
|
|
628
|
+
filePath: resolve(`./runtime/nuxt/components/OgImage/${name2}`),
|
|
561
629
|
...config.componentOptions
|
|
562
630
|
});
|
|
563
631
|
});
|
|
@@ -572,13 +640,13 @@ const module = defineNuxtModule({
|
|
|
572
640
|
if (component.pascalName.startsWith(dir) || component.kebabName.startsWith(dir) || component.shortPath.includes(`/${dir}/`))
|
|
573
641
|
valid = true;
|
|
574
642
|
});
|
|
575
|
-
if (component.filePath.includes(resolve("./runtime/components/Templates")))
|
|
643
|
+
if (component.filePath.includes(resolve("./runtime/nuxt/components/Templates")))
|
|
576
644
|
valid = true;
|
|
577
645
|
if (valid && fs.existsSync(component.filePath)) {
|
|
578
646
|
component.island = true;
|
|
579
647
|
component.mode = "server";
|
|
580
648
|
let category = "app";
|
|
581
|
-
if (component.filePath.includes(resolve("./runtime/components/Templates/Community")))
|
|
649
|
+
if (component.filePath.includes(resolve("./runtime/nuxt/components/Templates/Community")))
|
|
582
650
|
category = "community";
|
|
583
651
|
const componentFile = fs.readFileSync(component.filePath, "utf-8");
|
|
584
652
|
const credits = componentFile.split("\n").find((line) => line.startsWith(" * @credits"))?.replace("* @credits", "").trim();
|
|
@@ -606,9 +674,9 @@ const module = defineNuxtModule({
|
|
|
606
674
|
nuxt.options.nitro.virtual["#nuxt-og-image/component-names.mjs"] = () => {
|
|
607
675
|
return `export const componentNames = ${JSON.stringify(ogImageComponentCtx.components)}`;
|
|
608
676
|
};
|
|
609
|
-
let unoCssConfig = {
|
|
677
|
+
let unoCssConfig = {};
|
|
610
678
|
nuxt.hook("tailwindcss:config", (tailwindConfig) => {
|
|
611
|
-
unoCssConfig = defu(tailwindConfig.theme
|
|
679
|
+
unoCssConfig = defu(tailwindConfig.theme?.extend, { ...tailwindConfig.theme, extend: void 0 });
|
|
612
680
|
});
|
|
613
681
|
nuxt.hook("unocss:config", (_unoCssConfig) => {
|
|
614
682
|
unoCssConfig = { ..._unoCssConfig.theme };
|
|
@@ -619,7 +687,10 @@ const module = defineNuxtModule({
|
|
|
619
687
|
extendTypes("nuxt-og-image", ({ typesPath }) => {
|
|
620
688
|
const componentImports = ogImageComponentCtx.components.map((component) => {
|
|
621
689
|
const relativeComponentPath = relative(resolve(nuxt.options.rootDir, nuxt.options.buildDir, "module"), component.path);
|
|
622
|
-
|
|
690
|
+
const name2 = config.componentDirs.sort((a, b) => b.length - a.length).reduce((name3, dir) => {
|
|
691
|
+
return name3.replace(new RegExp(`^${dir}`), "");
|
|
692
|
+
}, component.pascalName);
|
|
693
|
+
return ` '${name2}': typeof import('${relativeComponentPath}')['default']`;
|
|
623
694
|
}).join("\n");
|
|
624
695
|
return `
|
|
625
696
|
declare module 'nitropack' {
|
|
@@ -640,6 +711,9 @@ declare module '#nuxt-og-image/components' {
|
|
|
640
711
|
${componentImports}
|
|
641
712
|
}
|
|
642
713
|
}
|
|
714
|
+
declare module '#nuxt-og-image/unocss-config' {
|
|
715
|
+
export type theme = any
|
|
716
|
+
}
|
|
643
717
|
`;
|
|
644
718
|
});
|
|
645
719
|
const cacheEnabled = typeof config.runtimeCacheStorage !== "undefined" && config.runtimeCacheStorage !== false;
|
|
@@ -657,15 +731,6 @@ ${componentImports}
|
|
|
657
731
|
nuxt.options.nitro = nuxt.options.nitro || {};
|
|
658
732
|
nuxt.options.nitro.prerender = nuxt.options.nitro.prerender || {};
|
|
659
733
|
nuxt.options.nitro.prerender.routes = nuxt.options.nitro.prerender.routes || [];
|
|
660
|
-
normalisedFonts.filter((f) => !f.path && !f.key).forEach(({ name, weight }, key) => {
|
|
661
|
-
const path = `/__og-image__/font/${name.toLowerCase()}/${weight}.ttf`;
|
|
662
|
-
nuxt.options.nitro.prerender.routes.push(path);
|
|
663
|
-
normalisedFonts[key] = {
|
|
664
|
-
path,
|
|
665
|
-
name,
|
|
666
|
-
weight
|
|
667
|
-
};
|
|
668
|
-
});
|
|
669
734
|
}
|
|
670
735
|
const hasColorModeModule = hasNuxtModule("@nuxtjs/color-mode");
|
|
671
736
|
const colorModeOptions = hasColorModeModule ? await getNuxtModuleOptions("@nuxtjs/color-mode") : {};
|
|
@@ -687,7 +752,9 @@ ${componentImports}
|
|
|
687
752
|
// convert the fonts to uniform type to fix ts issue
|
|
688
753
|
fonts: normalisedFonts,
|
|
689
754
|
hasNuxtIcon: hasNuxtModule("nuxt-icon"),
|
|
690
|
-
colorPreference
|
|
755
|
+
colorPreference,
|
|
756
|
+
// @ts-expect-error runtime type
|
|
757
|
+
isNuxtContentDocumentDriven: !!nuxt.options.content?.documentDriven
|
|
691
758
|
};
|
|
692
759
|
nuxt.hooks.callHook("nuxt-og-image:runtime-config", runtimeConfig);
|
|
693
760
|
nuxt.options.runtimeConfig["nuxt-og-image"] = runtimeConfig;
|