nuxt-og-image 3.0.0-rc.3 → 3.0.0-rc.30

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.
Files changed (291) hide show
  1. package/README.md +4 -4
  2. package/dist/client/200.html +226 -15
  3. package/dist/client/404.html +226 -15
  4. package/dist/client/_nuxt/{IconCSS.a9e1bda0.js → IconCSS.CZ8ZjA39.js} +1 -1
  5. package/dist/client/_nuxt/IconCSS.UISSK5sv.css +1 -0
  6. package/dist/client/_nuxt/abap.bJqzlTLD.js +816 -0
  7. package/dist/client/_nuxt/actionscript-3.NUzLYz6e.js +1 -0
  8. package/dist/client/_nuxt/ada.HSb8VHJ5.js +1 -0
  9. package/dist/client/_nuxt/andromeeda.TE0Toi4a.js +1 -0
  10. package/dist/client/_nuxt/angular-html.ngCY688K.js +16 -0
  11. package/dist/client/_nuxt/angular-ts.JfRveWw0.js +666 -0
  12. package/dist/client/_nuxt/apache.TpqIaH_y.js +1 -0
  13. package/dist/client/_nuxt/apex.rLr5RF8N.js +274 -0
  14. package/dist/client/_nuxt/apl.ojEktQcO.js +87 -0
  15. package/dist/client/_nuxt/applescript.uEUaUzem.js +38 -0
  16. package/dist/client/_nuxt/ara.yxVemEif.js +21 -0
  17. package/dist/client/_nuxt/asm.N3zWSyW8.js +1 -0
  18. package/dist/client/_nuxt/astro.bVipJGkW.js +1 -0
  19. package/dist/client/_nuxt/aurora-x.23vffHpO.js +1 -0
  20. package/dist/client/_nuxt/awk.tQAliBPt.js +1 -0
  21. package/dist/client/_nuxt/ayu-dark.09-XTo9D.js +1 -0
  22. package/dist/client/_nuxt/ballerina.j08zL6tL.js +62 -0
  23. package/dist/client/_nuxt/bat.4hprCtpO.js +1 -0
  24. package/dist/client/_nuxt/beancount.B4bgLeBI.js +1 -0
  25. package/dist/client/_nuxt/berry.99Qqo7Pl.js +1 -0
  26. package/dist/client/_nuxt/bibtex.PUS4KD1G.js +1 -0
  27. package/dist/client/_nuxt/bicep.U1vZFTkg.js +1 -0
  28. package/dist/client/_nuxt/blade.HvKjdph-.js +831 -0
  29. package/dist/client/_nuxt/builds/latest.json +1 -1
  30. package/dist/client/_nuxt/builds/meta/bb98bdc4-cb43-44eb-b961-cca8b9050d48.json +1 -0
  31. package/dist/client/_nuxt/c.1HqcaTLZ.js +81 -0
  32. package/dist/client/_nuxt/cadence.wPBjDAPG.js +1 -0
  33. package/dist/client/_nuxt/catppuccin-frappe.3zzElYQH.js +1 -0
  34. package/dist/client/_nuxt/catppuccin-latte.7_seQpm6.js +1 -0
  35. package/dist/client/_nuxt/catppuccin-macchiato.xyLZ1Mzm.js +1 -0
  36. package/dist/client/_nuxt/catppuccin-mocha.sKQhYBeR.js +1 -0
  37. package/dist/client/_nuxt/clarity.9V3ikNUm.js +1 -0
  38. package/dist/client/_nuxt/clojure.m464_LIc.js +1 -0
  39. package/dist/client/_nuxt/cmake.YiKLaZ9A.js +1 -0
  40. package/dist/client/_nuxt/cobol.DIpfQcy2.js +1 -0
  41. package/dist/client/_nuxt/codeql.i7fhVOvX.js +1 -0
  42. package/dist/client/_nuxt/coffee.09Ode5TL.js +100 -0
  43. package/dist/client/_nuxt/cpp.UIU91NPT.js +186 -0
  44. package/dist/client/_nuxt/crystal.KqWgScGa.js +25 -0
  45. package/dist/client/_nuxt/csharp.SlsguwGx.js +755 -0
  46. package/dist/client/_nuxt/css.tuEqSfZX.js +505 -0
  47. package/dist/client/_nuxt/csv.REIP-dDb.js +1 -0
  48. package/dist/client/_nuxt/cue.ts9p4IYJ.js +1 -0
  49. package/dist/client/_nuxt/cypher.y2dXjvht.js +1 -0
  50. package/dist/client/_nuxt/d.91KOtcJM.js +1 -0
  51. package/dist/client/_nuxt/dark-plus.kgh98KCl.js +1 -0
  52. package/dist/client/_nuxt/dart.ATU8nP6d.js +1 -0
  53. package/dist/client/_nuxt/dax.M4oDHFBw.js +29 -0
  54. package/dist/client/_nuxt/diff.-l9-nN5b.js +1 -0
  55. package/dist/client/_nuxt/docker.FKXxym4E.js +1 -0
  56. package/dist/client/_nuxt/dracula-soft.E92bUq8i.js +1 -0
  57. package/dist/client/_nuxt/dracula.mNVTF5-9.js +1 -0
  58. package/dist/client/_nuxt/dream-maker.5lPMrnJr.js +52 -0
  59. package/dist/client/_nuxt/elixir.Q1fiwhg2.js +17 -0
  60. package/dist/client/_nuxt/elm.AR6G1sGv.js +1 -0
  61. package/dist/client/_nuxt/entry.OczI2MjB.css +1 -0
  62. package/dist/client/_nuxt/entry.v1zp98GR.js +134 -0
  63. package/dist/client/_nuxt/erb.K_ppY6Ln.js +1 -0
  64. package/dist/client/_nuxt/erlang._Br9gip-.js +1 -0
  65. package/dist/client/_nuxt/error-404.DkXpI38i.css +1 -0
  66. package/dist/client/_nuxt/{error-404.b7c0506a.js → error-404.VV5ycc25.js} +1 -1
  67. package/dist/client/_nuxt/{error-500.c45b2f29.js → error-500.VNY3c4OJ.js} +1 -1
  68. package/dist/client/_nuxt/fish.k6NZEVUm.js +5 -0
  69. package/dist/client/_nuxt/fsharp.37PDbGQ_.js +1 -0
  70. package/dist/client/_nuxt/gdresource.7GKJFf55.js +1 -0
  71. package/dist/client/_nuxt/gdscript.E1_SGClP.js +44 -0
  72. package/dist/client/_nuxt/gdshader.6pjKCTQy.js +1 -0
  73. package/dist/client/_nuxt/gherkin.hgsyILVZ.js +1 -0
  74. package/dist/client/_nuxt/git-commit.RtAxFnK2.js +1 -0
  75. package/dist/client/_nuxt/git-rebase.-_3Z3F37.js +1 -0
  76. package/dist/client/_nuxt/github-dark-dimmed.yDYFqRVv.js +1 -0
  77. package/dist/client/_nuxt/github-dark.WrpzPehD.js +1 -0
  78. package/dist/client/_nuxt/github-light.QjB713Ax.js +1 -0
  79. package/dist/client/_nuxt/glimmer-js.OxCy_kio.js +1 -0
  80. package/dist/client/_nuxt/glimmer-ts.ZLbawe8H.js +1 -0
  81. package/dist/client/_nuxt/glsl.yLv_V-GM.js +1 -0
  82. package/dist/client/_nuxt/gnuplot.fIlAWhXw.js +266 -0
  83. package/dist/client/_nuxt/go.2bJKq9hO.js +1 -0
  84. package/dist/client/_nuxt/graphql.Mw2TwDQV.js +4 -0
  85. package/dist/client/_nuxt/groovy.Z1Lrhk2B.js +37 -0
  86. package/dist/client/_nuxt/hack.8bxbrxw3.js +86 -0
  87. package/dist/client/_nuxt/haml.9njXWWYk.js +1 -0
  88. package/dist/client/_nuxt/handlebars.e6aZXt-Z.js +1 -0
  89. package/dist/client/_nuxt/haskell.HW0BBkRd.js +559 -0
  90. package/dist/client/_nuxt/hcl.M9siRbiv.js +1 -0
  91. package/dist/client/_nuxt/hjson.fLk7JbZa.js +50 -0
  92. package/dist/client/_nuxt/hlsl.Do_j-o-7.js +1 -0
  93. package/dist/client/_nuxt/html.q2IluNCo.js +74 -0
  94. package/dist/client/_nuxt/http.suDZEQUg.js +1 -0
  95. package/dist/client/_nuxt/imba.Shm_xfQD.js +223 -0
  96. package/dist/client/_nuxt/ini.T6bxBy5-.js +1 -0
  97. package/dist/client/_nuxt/java.tY-NU26U.js +68 -0
  98. package/dist/client/_nuxt/javascript.4rbEI_qn.js +699 -0
  99. package/dist/client/_nuxt/jinja.E4nwqofd.js +1 -0
  100. package/dist/client/_nuxt/jison.gkHJeffy.js +1 -0
  101. package/dist/client/_nuxt/json.xL80yL3n.js +25 -0
  102. package/dist/client/_nuxt/json5.NRuQoh_0.js +17 -0
  103. package/dist/client/_nuxt/jsonc.Bb1R3obU.js +25 -0
  104. package/dist/client/_nuxt/jsonl.Yjg0VwMG.js +25 -0
  105. package/dist/client/_nuxt/jsonnet.WK26vH-O.js +1 -0
  106. package/dist/client/_nuxt/jssm.eioTUq4-.js +1 -0
  107. package/dist/client/_nuxt/jsx.O5ZRGASz.js +699 -0
  108. package/dist/client/_nuxt/julia.ku4F-e-8.js +9 -0
  109. package/dist/client/_nuxt/kotlin.1iwCeGA4.js +1 -0
  110. package/dist/client/_nuxt/kusto.UpRCclYC.js +1 -0
  111. package/dist/client/_nuxt/latex.6xV8tHRw.js +3 -0
  112. package/dist/client/_nuxt/less.Mq8TrjER.js +159 -0
  113. package/dist/client/_nuxt/light-plus.TzXGjDsL.js +1 -0
  114. package/dist/client/_nuxt/liquid.O0W9gNJ1.js +14 -0
  115. package/dist/client/_nuxt/lisp.iIZdsWzX.js +1 -0
  116. package/dist/client/_nuxt/logo.WuHqTpFy.js +1 -0
  117. package/dist/client/_nuxt/lua.OGbZEs3U.js +1 -0
  118. package/dist/client/_nuxt/make.8zIAVqFD.js +1 -0
  119. package/dist/client/_nuxt/markdown.Y8p9X7h3.js +129 -0
  120. package/dist/client/_nuxt/marko.sELZHXF6.js +8 -0
  121. package/dist/client/_nuxt/material-theme-darker.e1lAwchJ.js +1 -0
  122. package/dist/client/_nuxt/material-theme-lighter.y77yPuAI.js +1 -0
  123. package/dist/client/_nuxt/material-theme-ocean.oIMAIpse.js +1 -0
  124. package/dist/client/_nuxt/material-theme-palenight.Z44VU5rQ.js +1 -0
  125. package/dist/client/_nuxt/material-theme.49YjOoAR.js +1 -0
  126. package/dist/client/_nuxt/matlab.LaB98_jd.js +70 -0
  127. package/dist/client/_nuxt/mdc.NowVT77H.js +76 -0
  128. package/dist/client/_nuxt/mdx.VhCSg2DJ.js +1 -0
  129. package/dist/client/_nuxt/mermaid.WuNnVULj.js +1 -0
  130. package/dist/client/_nuxt/min-dark._Ja8ZF5C.js +1 -0
  131. package/dist/client/_nuxt/min-light.N1m_6E3S.js +1 -0
  132. package/dist/client/_nuxt/mojo.zLNDSfD9.js +519 -0
  133. package/dist/client/_nuxt/monokai.WLw4Glvg.js +1 -0
  134. package/dist/client/_nuxt/narrat.KYi2rZr0.js +7 -0
  135. package/dist/client/_nuxt/nextflow.lYJjOZ_l.js +1 -0
  136. package/dist/client/_nuxt/nginx.CrBM8z2W.js +1 -0
  137. package/dist/client/_nuxt/night-owl.GWZK5Ce7.js +1 -0
  138. package/dist/client/_nuxt/nim.OZ1TiK9r.js +1 -0
  139. package/dist/client/_nuxt/nix.z3u_V08Q.js +1 -0
  140. package/dist/client/_nuxt/nord.1NrVtx79.js +1 -0
  141. package/dist/client/_nuxt/nushell.GDk9yul-.js +1 -0
  142. package/dist/client/_nuxt/objective-c.Eci2Q5FN.js +109 -0
  143. package/dist/client/_nuxt/objective-cpp.nGsV46Zk.js +239 -0
  144. package/dist/client/_nuxt/ocaml.oQRvlYTD.js +1 -0
  145. package/dist/client/_nuxt/one-dark-pro.qlkgvdEn.js +1 -0
  146. package/dist/client/_nuxt/onig.mBJmD8D5.js +1 -0
  147. package/dist/client/_nuxt/pascal.aIRIFbih.js +1 -0
  148. package/dist/client/_nuxt/perl.CaKiGeyl.js +1 -0
  149. package/dist/client/_nuxt/php.Q2jqa0n_.js +771 -0
  150. package/dist/client/_nuxt/plsql.vhhXsReo.js +1 -0
  151. package/dist/client/_nuxt/poimandres.oZrO-I17.js +1 -0
  152. package/dist/client/_nuxt/postcss.57yKeRpx.js +1 -0
  153. package/dist/client/_nuxt/powerquery.wBQvr9E-.js +1 -0
  154. package/dist/client/_nuxt/powershell.6Y_bsqLY.js +1 -0
  155. package/dist/client/_nuxt/prisma.fG9Ut-9i.js +1 -0
  156. package/dist/client/_nuxt/prolog.vggnm0Hd.js +1 -0
  157. package/dist/client/_nuxt/proto.yigfBmiL.js +1 -0
  158. package/dist/client/_nuxt/pug.dmyiUMO7.js +1 -0
  159. package/dist/client/_nuxt/puppet.NqXa_cO1.js +1 -0
  160. package/dist/client/_nuxt/purescript.NA5qsvV2.js +7 -0
  161. package/dist/client/_nuxt/python.V9Nu427R.js +518 -0
  162. package/dist/client/_nuxt/r.xMXDrvl2.js +1 -0
  163. package/dist/client/_nuxt/raku.NSWyGF40.js +1 -0
  164. package/dist/client/_nuxt/razor.X4IfBpol.js +40 -0
  165. package/dist/client/_nuxt/red.sV5NnIRC.js +1 -0
  166. package/dist/client/_nuxt/reg.Dr-lXfN9.js +1 -0
  167. package/dist/client/_nuxt/rel.vATIbX_E.js +1 -0
  168. package/dist/client/_nuxt/riscv.L73dAZEB.js +13 -0
  169. package/dist/client/_nuxt/rose-pine-dawn.qPi4euik.js +1 -0
  170. package/dist/client/_nuxt/rose-pine-moon.Im6VgKOx.js +1 -0
  171. package/dist/client/_nuxt/rose-pine._tQyNI4L.js +1 -0
  172. package/dist/client/_nuxt/rst.GKtlS3h3.js +1 -0
  173. package/dist/client/_nuxt/ruby.P9eGVNW4.js +80 -0
  174. package/dist/client/_nuxt/rust.FLHuhIzG.js +1 -0
  175. package/dist/client/_nuxt/sas.fTu4QUYF.js +1 -0
  176. package/dist/client/_nuxt/sass.URKSWxt9.js +2 -0
  177. package/dist/client/_nuxt/scala.7DKpDMtV.js +5 -0
  178. package/dist/client/_nuxt/scheme.S0VUhbaV.js +136 -0
  179. package/dist/client/_nuxt/scss.9u5wOjnF.js +90 -0
  180. package/dist/client/_nuxt/shaderlab.MYTNW71C.js +1 -0
  181. package/dist/client/_nuxt/shellscript.82BvnTib.js +4 -0
  182. package/dist/client/_nuxt/shellsession.e2TODbDv.js +1 -0
  183. package/dist/client/_nuxt/slack-dark.1ZggNzwg.js +1 -0
  184. package/dist/client/_nuxt/slack-ochin.IcMt0x71.js +1 -0
  185. package/dist/client/_nuxt/smalltalk.ymyryZ3T.js +1 -0
  186. package/dist/client/_nuxt/solarized-dark.3DcwRX9o.js +1 -0
  187. package/dist/client/_nuxt/solarized-light.iUVMuJ2F.js +1 -0
  188. package/dist/client/_nuxt/solidity.rGqtk2dD.js +1 -0
  189. package/dist/client/_nuxt/sparql.b6B4dWwT.js +1 -0
  190. package/dist/client/_nuxt/splunk.OYnOZZCZ.js +1 -0
  191. package/dist/client/_nuxt/sql.KWFjTZGI.js +21 -0
  192. package/dist/client/_nuxt/ssh-config.jdYjUr9x.js +1 -0
  193. package/dist/client/_nuxt/stata.cF_ucIcM.js +3 -0
  194. package/dist/client/_nuxt/stylus.sPHLw37c.js +15 -0
  195. package/dist/client/_nuxt/svelte.6zdtIlwM.js +1 -0
  196. package/dist/client/_nuxt/swift.YwiPyWKn.js +544 -0
  197. package/dist/client/_nuxt/synthwave-84.QD7ZGwpp.js +1 -0
  198. package/dist/client/_nuxt/system-verilog.gwJe9XJI.js +9 -0
  199. package/dist/client/_nuxt/tasl.IM3fg-4x.js +1 -0
  200. package/dist/client/_nuxt/tcl.h_zrCUh3.js +1 -0
  201. package/dist/client/_nuxt/tex.uNByjuDB.js +1 -0
  202. package/dist/client/_nuxt/tokyo-night.3j08uV2M.js +1 -0
  203. package/dist/client/_nuxt/toml.p_xIKQcU.js +69 -0
  204. package/dist/client/_nuxt/tsx.vbVEYvAd.js +699 -0
  205. package/dist/client/_nuxt/turtle.qvOLXpiq.js +1 -0
  206. package/dist/client/_nuxt/twig.h5iAhXmS.js +40 -0
  207. package/dist/client/_nuxt/typescript.IWNmnGsa.js +666 -0
  208. package/dist/client/_nuxt/v.BcVLQyAr.js +1 -0
  209. package/dist/client/_nuxt/vanilla-picker.P0dws0ou.js +8 -0
  210. package/dist/client/_nuxt/vb.nfm3ZogP.js +1 -0
  211. package/dist/client/_nuxt/verilog.32GaFvLA.js +1 -0
  212. package/dist/client/_nuxt/vhdl.BgfvI7C9.js +515 -0
  213. package/dist/client/_nuxt/viml.Ob-szSvk.js +1 -0
  214. package/dist/client/_nuxt/vitesse-black.uLlG6AUB.js +1 -0
  215. package/dist/client/_nuxt/vitesse-dark.5VceXvs6.js +1 -0
  216. package/dist/client/_nuxt/vitesse-light.HOMMxGxw.js +1 -0
  217. package/dist/client/_nuxt/vue-html.B2XvVFLk.js +1 -0
  218. package/dist/client/_nuxt/vue.CmUal76M.js +6 -0
  219. package/dist/client/_nuxt/vyper.0ItMHLZu.js +575 -0
  220. package/dist/client/_nuxt/wasm.5qeU6UJI.js +1 -0
  221. package/dist/client/_nuxt/wenyan.gl1zQYA8.js +1 -0
  222. package/dist/client/_nuxt/wgsl.KpVp-DWl.js +1 -0
  223. package/dist/client/_nuxt/wolfram.K_QzNdW-.js +1 -0
  224. package/dist/client/_nuxt/xml.GygmfNh9.js +1 -0
  225. package/dist/client/_nuxt/xsl.TptR0G-3.js +1 -0
  226. package/dist/client/_nuxt/yaml.zytfnWoA.js +200 -0
  227. package/dist/client/_nuxt/zenscript.htRIWiQY.js +2 -0
  228. package/dist/client/_nuxt/zig.VzlkOal1.js +1 -0
  229. package/dist/client/index.html +226 -15
  230. package/dist/module.d.mts +4 -3
  231. package/dist/module.d.ts +4 -3
  232. package/dist/module.json +2 -2
  233. package/dist/module.mjs +110 -87
  234. package/dist/runtime/components/OgImage/OgImage.d.ts +1 -1
  235. package/dist/runtime/components/OgImage/OgImageScreenshot.d.ts +1 -1
  236. package/dist/runtime/components/Templates/Community/NuxtSeo.vue +1 -1
  237. package/dist/runtime/components/Templates/Community/UnJs.vue +2 -2
  238. package/dist/runtime/composables/defineOgImage.mjs +4 -9
  239. package/dist/runtime/core/bindings/chromium/chrome-launcher.mjs +9 -0
  240. package/dist/runtime/core/bindings/chromium/on-demand.d.ts +2 -0
  241. package/dist/runtime/core/bindings/chromium/on-demand.mjs +36 -0
  242. package/dist/runtime/core/bindings/chromium/playwright.d.ts +2 -0
  243. package/dist/runtime/core/bindings/chromium/playwright.mjs +6 -0
  244. package/dist/runtime/core/bindings/css-inline/node.d.ts +8 -2
  245. package/dist/runtime/core/bindings/css-inline/node.mjs +7 -2
  246. package/dist/runtime/core/bindings/css-inline/wasm-fs.d.ts +8 -0
  247. package/dist/runtime/core/bindings/css-inline/wasm-fs.mjs +8 -0
  248. package/dist/runtime/core/bindings/css-inline/wasm.d.ts +8 -0
  249. package/dist/runtime/core/bindings/css-inline/wasm.mjs +8 -0
  250. package/dist/runtime/core/font/fetch.mjs +4 -1
  251. package/dist/runtime/core/html/applyInlineCss.mjs +26 -19
  252. package/dist/runtime/core/html/devIframeTemplate.mjs +3 -2
  253. package/dist/runtime/core/options/extract.d.ts +1 -0
  254. package/dist/runtime/core/options/extract.mjs +9 -0
  255. package/dist/runtime/core/renderers/satori/index.mjs +6 -5
  256. package/dist/runtime/core/renderers/satori/instances.mjs +2 -1
  257. package/dist/runtime/core/renderers/satori/plugins/encoding.mjs +14 -5
  258. package/dist/runtime/core/renderers/satori/plugins/imageSrc.mjs +49 -40
  259. package/dist/runtime/core/renderers/satori/vnodes.mjs +3 -1
  260. package/dist/runtime/core/utils/resolveRendererContext.mjs +5 -9
  261. package/dist/runtime/nitro/kit.d.ts +3 -0
  262. package/dist/runtime/nitro/kit.mjs +23 -0
  263. package/dist/runtime/nitro/plugins/nuxt-content.mjs +6 -3
  264. package/dist/runtime/nitro/plugins/prerender.d.ts +1 -1
  265. package/dist/runtime/nitro/plugins/prerender.mjs +5 -12
  266. package/dist/runtime/{server → nitro}/routes/__og-image__/debug.json.d.ts +0 -4
  267. package/dist/runtime/{server → nitro}/routes/__og-image__/debug.json.mjs +0 -6
  268. package/dist/runtime/nitro/routes/__og-image__/font-[name]-[weight].[extension].mjs +56 -0
  269. package/dist/runtime/{server → nitro}/routes/__og-image__/image.mjs +4 -3
  270. package/dist/runtime/nitro/tsconfig.json +3 -0
  271. package/dist/runtime/nitro/utils.mjs +1 -2
  272. package/dist/runtime/nuxt/plugins/og-image-canonical-urls.server.mjs +9 -2
  273. package/dist/runtime/nuxt/utils.d.ts +2 -1
  274. package/dist/runtime/nuxt/utils.mjs +5 -3
  275. package/dist/runtime/types.d.ts +5 -3
  276. package/dist/runtime/utils.pure.d.ts +2 -0
  277. package/dist/runtime/utils.pure.mjs +9 -1
  278. package/dist/types.d.mts +2 -2
  279. package/package.json +67 -44
  280. package/dist/client/_nuxt/IconCSS.f0b56d3e.css +0 -1
  281. package/dist/client/_nuxt/builds/meta/f6f30fc8-72d3-4090-90f8-10aeee14e041.json +0 -1
  282. package/dist/client/_nuxt/entry.a30f63d0.css +0 -1
  283. package/dist/client/_nuxt/entry.dd086114.js +0 -108
  284. package/dist/client/_nuxt/error-404.b751fa02.css +0 -1
  285. package/dist/client/_nuxt/vanilla-picker-NKbIFE8h.23409a58.js +0 -8
  286. package/dist/runtime/core/bindings/chromium/node.mjs +0 -33
  287. package/dist/runtime/server/routes/__og-image__/font-[name]-[weight].[extension].mjs +0 -30
  288. /package/dist/client/_nuxt/{error-500.69009e70.css → error-500.SLhS9LVu.css} +0 -0
  289. /package/dist/runtime/core/bindings/chromium/{node.d.ts → chrome-launcher.d.ts} +0 -0
  290. /package/dist/runtime/{server → nitro}/routes/__og-image__/font-[name]-[weight].[extension].d.ts +0 -0
  291. /package/dist/runtime/{server → nitro}/routes/__og-image__/image.d.ts +0 -0
package/dist/module.mjs CHANGED
@@ -1,20 +1,17 @@
1
1
  import * as fs from 'node:fs';
2
2
  import { existsSync } from 'node:fs';
3
- import { useNuxt, addTemplate, loadNuxtModuleInstance, createResolver, resolvePath, defineNuxtModule, useLogger, tryResolveModule, hasNuxtModule, addServerPlugin, addServerHandler, addImports, addComponentsDir, addComponent, addPlugin } from '@nuxt/kit';
3
+ import { useNuxt, addTemplate, loadNuxtModuleInstance, createResolver, resolvePath, tryResolveModule, defineNuxtModule, useLogger, hasNuxtModule, addServerPlugin, addServerHandler, addImports, addComponentsDir, addComponent, addPlugin } from '@nuxt/kit';
4
4
  import { assertSiteConfig, installNuxtSiteConfig } from 'nuxt-site-config-kit';
5
- import { provider, env, isDevelopment, isCI } from 'std-env';
5
+ import { provider, env, isCI, isDevelopment } from 'std-env';
6
6
  import { hash } from 'ohash';
7
7
  import { relative, dirname } from 'pathe';
8
8
  import { defu } from 'defu';
9
- import { Launcher } from 'chrome-launcher';
9
+ import { readPackageJSON } from 'pkg-types';
10
10
  import { ensureDependencyInstalled } from 'nypm';
11
11
  import { onDevToolsInitialized, extendServerRpc } from '@nuxt/devtools-kit';
12
12
  import { readFile, writeFile } from 'node:fs/promises';
13
13
  import { createHash } from 'node:crypto';
14
- import { execa } from 'execa';
15
- import terminate from 'terminate';
16
-
17
- const version = "3.0.0-rc.3";
14
+ import { Launcher } from 'chrome-launcher';
18
15
 
19
16
  const autodetectableProviders = {
20
17
  azure_static: "azure",
@@ -56,22 +53,24 @@ const awsLambda = {
56
53
  "sharp": false
57
54
  // 0.33.x has issues
58
55
  };
56
+ const WebContainer = {
57
+ "chromium": false,
58
+ "css-inline": "wasm-fs",
59
+ "resvg": "wasm-fs",
60
+ "satori": "wasm-fs",
61
+ "sharp": false
62
+ };
59
63
  const RuntimeCompatibility = {
60
64
  "nitro-dev": NodeRuntime,
61
65
  "nitro-prerender": NodeRuntime,
62
66
  "node-server": NodeRuntime,
63
- "stackblitz": {
64
- "chromium": false,
65
- "css-inline": false,
66
- "resvg": "wasm-fs",
67
- "satori": "wasm-fs",
68
- "sharp": false
69
- },
67
+ "stackblitz": WebContainer,
68
+ "codesandbox": WebContainer,
70
69
  "aws-lambda": awsLambda,
71
70
  "netlify": awsLambda,
72
71
  "netlify-edge": {
73
72
  "chromium": false,
74
- "css-inline": false,
73
+ "css-inline": "wasm",
75
74
  "resvg": "wasm",
76
75
  "satori": "node",
77
76
  "sharp": false,
@@ -86,7 +85,7 @@ const RuntimeCompatibility = {
86
85
  "vercel": awsLambda,
87
86
  "vercel-edge": {
88
87
  "chromium": false,
89
- "css-inline": false,
88
+ "css-inline": "wasm",
90
89
  "resvg": "wasm",
91
90
  "satori": "node",
92
91
  "sharp": false,
@@ -96,14 +95,15 @@ const RuntimeCompatibility = {
96
95
  }
97
96
  },
98
97
  "cloudflare-pages": cloudflare,
99
- "cloudflare": cloudflare
98
+ "cloudflare": cloudflare,
99
+ "cloudflare-module": cloudflare
100
100
  };
101
101
  function detectTarget(options = {}) {
102
102
  return options?.static ? autodetectableStaticProviders[provider] : autodetectableProviders[provider];
103
103
  }
104
104
  function resolveNitroPreset(nitroConfig) {
105
- if (provider === "stackblitz")
106
- return "stackblitz";
105
+ if (provider === "stackblitz" || provider === "codesandbox")
106
+ return provider;
107
107
  let preset;
108
108
  if (nitroConfig && nitroConfig?.preset)
109
109
  preset = nitroConfig.preset;
@@ -130,6 +130,8 @@ function applyNitroPresetCompatibility(nitroConfig, options) {
130
130
  let binding = options.compatibility?.[key];
131
131
  if (typeof binding === "undefined")
132
132
  binding = compatibility[key];
133
+ if (key === "chromium" && binding === "node")
134
+ binding = "playwright";
133
135
  resolvedCompatibility[key] = binding;
134
136
  return {
135
137
  [`#nuxt-og-image/bindings/${key}`]: binding === false ? "unenv/runtime/mock/empty" : resolve(`./runtime/core/bindings/${key}/${binding}`)
@@ -205,6 +207,9 @@ export {}
205
207
  references.push({ path: resolve(nuxt.options.buildDir, `module/${module}.d.ts`) });
206
208
  });
207
209
  }
210
+ function isNuxtGenerate(nuxt = useNuxt()) {
211
+ return nuxt.options._generate || nuxt.options.nitro.static || nuxt.options.nitro.preset === "static";
212
+ }
208
213
 
209
214
  const DEVTOOLS_UI_ROUTE = "/__nuxt-og-image";
210
215
  const DEVTOOLS_UI_LOCAL_PORT = 3030;
@@ -295,7 +300,9 @@ function setupGenerateHandler(options, resolve, nuxt = useNuxt()) {
295
300
  function setupPrerenderHandler(options, resolve, nuxt = useNuxt()) {
296
301
  nuxt.hooks.hook("nitro:init", async (nitro) => {
297
302
  nitro.hooks.hook("prerender:config", async (nitroConfig) => {
298
- applyNitroPresetCompatibility(nitroConfig, { compatibility: options.compatibility.prerender, resolve });
303
+ nitroConfig.serverAssets = nitroConfig.serverAssets || [];
304
+ nitroConfig.serverAssets.push({ baseName: "nuxt-og-image:fonts", dir: resolve("./runtime/server/assets") });
305
+ applyNitroPresetCompatibility(nitroConfig, { compatibility: options.compatibility?.prerender, resolve });
299
306
  nitroConfig.wasm = nitroConfig.wasm || {};
300
307
  nitroConfig.wasm.esmImport = false;
301
308
  const prerenderingPages = (nuxt.options.nitro.prerender?.routes || []).some((r) => r && (!r.includes(".") || r.includes("*")));
@@ -327,14 +334,16 @@ async function setupBuildHandler(config, resolve, nuxt = useNuxt()) {
327
334
  return;
328
335
  const configuredEntry = nitro.options.rollupConfig?.output.entryFileNames;
329
336
  let serverEntry = resolve(_nitro.options.output.serverDir, typeof configuredEntry === "string" ? configuredEntry : "index.mjs");
330
- if (target === "cloudflare-pages")
337
+ const isCloudflarePagesOrModule = target === "cloudflare-pages" || target === "cloudflare-module";
338
+ if (isCloudflarePagesOrModule)
331
339
  serverEntry = resolve(dirname(serverEntry), "./chunks/wasm.mjs");
332
340
  const contents = await readFile(serverEntry, "utf-8");
333
341
  const resvgHash = sha1(await readFile(await resolvePath("@resvg/resvg-wasm/index_bg.wasm")));
334
342
  const yogaHash = sha1(await readFile(await resolvePath("yoga-wasm-web/dist/yoga.wasm")));
343
+ const cssInlineHash = sha1(await readFile(await resolvePath("@css-inline/css-inline-wasm/index_bg.wasm")));
335
344
  const postfix = target === "vercel-edge" ? "?module" : "";
336
- const path = target === "cloudflare-pages" ? `../wasm/` : `./wasm/`;
337
- 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" });
345
+ const path = isCloudflarePagesOrModule ? `../wasm/` : `./wasm/`;
346
+ await writeFile(serverEntry, contents.replaceAll('"@resvg/resvg-wasm/index_bg.wasm"', `"${path}index_bg-${resvgHash}.wasm${postfix}"`).replaceAll('"@css-inline/css-inline-wasm/index_bg.wasm"', `"${path}index_bg-${cssInlineHash}.wasm${postfix}"`).replaceAll('"yoga-wasm-web/dist/yoga.wasm"', `"${path}yoga-${yogaHash}.wasm${postfix}"`), { encoding: "utf-8" });
338
347
  });
339
348
  });
340
349
  }
@@ -342,20 +351,19 @@ function sha1(source) {
342
351
  return createHash("sha1").update(source).digest("hex").slice(0, 16);
343
352
  }
344
353
 
345
- async function ensureChromium(logger) {
346
- logger.info("Ensuring Chromium install for og:image generation...");
347
- const installChromeProcess = execa("npx", ["playwright", "install", "chromium"], {
348
- stdio: "inherit"
349
- });
350
- installChromeProcess.stderr?.pipe(process.stderr);
351
- await new Promise((resolve) => {
352
- installChromeProcess.on("exit", (e) => {
353
- if (e !== 0)
354
- logger.error("Failed to install Playwright dependency for og:image generation. Trying anyway...");
355
- resolve(true);
356
- });
357
- });
358
- installChromeProcess.pid && terminate(installChromeProcess.pid);
354
+ const isUndefinedOrTruthy = (v) => typeof v === "undefined" || v !== false;
355
+ function checkLocalChrome() {
356
+ if (isCI)
357
+ return false;
358
+ let hasChromeLocally = false;
359
+ try {
360
+ hasChromeLocally = !!Launcher.getFirstInstallation();
361
+ } catch {
362
+ }
363
+ return hasChromeLocally;
364
+ }
365
+ async function checkPlaywrightDependency() {
366
+ return !!await tryResolveModule("playwright");
359
367
  }
360
368
 
361
369
  function normaliseFontInput(fonts) {
@@ -365,7 +373,7 @@ function normaliseFontInput(fonts) {
365
373
  return {
366
374
  cacheKey: f,
367
375
  name,
368
- weight: weight || "400",
376
+ weight: weight || 400,
369
377
  style: "normal",
370
378
  path: void 0
371
379
  };
@@ -383,7 +391,7 @@ const module = defineNuxtModule({
383
391
  meta: {
384
392
  name: "nuxt-og-image",
385
393
  compatibility: {
386
- nuxt: "^3.8.2",
394
+ nuxt: "^3.9.0",
387
395
  bridge: false
388
396
  },
389
397
  configKey: "ogImage"
@@ -395,6 +403,7 @@ const module = defineNuxtModule({
395
403
  emojis: "noto",
396
404
  renderer: "satori",
397
405
  component: "NuxtSeo",
406
+ extension: "png",
398
407
  width: 1200,
399
408
  height: 600,
400
409
  // default is to cache the image for 3 day (72 hours)
@@ -407,7 +416,9 @@ const module = defineNuxtModule({
407
416
  };
408
417
  },
409
418
  async setup(config, nuxt) {
410
- const logger = useLogger("nuxt-og-image");
419
+ const { resolve } = createResolver(import.meta.url);
420
+ const { name, version } = await readPackageJSON(resolve("../package.json"));
421
+ const logger = useLogger(name);
411
422
  logger.level = config.debug || nuxt.options.debug ? 4 : 3;
412
423
  if (config.enabled === false) {
413
424
  logger.debug("The module is disabled, skipping setup.");
@@ -417,13 +428,12 @@ const module = defineNuxtModule({
417
428
  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 }`).");
418
429
  return;
419
430
  }
420
- const { resolve } = createResolver(import.meta.url);
431
+ nuxt.options.build.transpile.push(resolve("./runtime"));
421
432
  const preset = resolveNitroPreset(nuxt.options.nitro);
422
433
  const targetCompatibility = getPresetNitroPresetCompatibility(preset);
423
434
  const hasSharpDependency = !!await tryResolveModule("sharp");
424
435
  const userConfiguredExtension = config.defaults.extension;
425
436
  const hasConfiguredJpegs = userConfiguredExtension && ["jpeg", "jpg"].includes(userConfiguredExtension);
426
- config.defaults.extension = userConfiguredExtension || (hasSharpDependency && targetCompatibility.sharp ? "jpg" : "png");
427
437
  if (hasConfiguredJpegs && config.defaults.renderer !== "chromium") {
428
438
  if (hasSharpDependency && !targetCompatibility.sharp) {
429
439
  logger.warn(`Rendering JPEGs requires sharp which does not work with ${preset}. Images will be rendered as PNG at runtime.`);
@@ -442,32 +452,32 @@ const module = defineNuxtModule({
442
452
  prerender: { sharp: false }
443
453
  });
444
454
  }
445
- let hasChromeLocally = false;
446
- try {
447
- hasChromeLocally = !!Launcher.getFirstInstallation();
448
- } catch {
449
- }
450
- const isUndefinedOrTruthy = (v) => typeof v === "undefined" || v !== false;
451
- if (isUndefinedOrTruthy(config.compatibility?.prerender?.chromium) && isUndefinedOrTruthy(config.compatibility?.runtime?.chromium)) {
452
- if (isCI)
453
- await ensureChromium(logger);
454
- const hasPlaywrightDependency = !!await tryResolveModule("playwright");
455
- if (hasChromeLocally) {
456
- config.compatibility = defu(config.compatibility, {
457
- runtime: { chromium: false },
458
- dev: { chromium: "node" },
459
- prerender: { chromium: "node" }
460
- });
461
- } else if (hasPlaywrightDependency && targetCompatibility.chromium) {
462
- config.compatibility = defu(config.compatibility, {
463
- runtime: { chromium: "node" },
464
- dev: { chromium: "node" },
465
- prerender: { chromium: "node" }
466
- });
467
- }
468
- } else if (!hasChromeLocally && nuxt.options.dev && config.compatibility?.dev?.chromium === "node") {
469
- await ensureChromium(logger);
455
+ const hasChromeLocally = checkLocalChrome();
456
+ const hasPlaywrightDependency = await checkPlaywrightDependency();
457
+ const chromeCompatibilityFlags = {
458
+ prerender: config.compatibility?.prerender?.chromium,
459
+ dev: config.compatibility?.dev?.chromium,
460
+ runtime: config.compatibility?.runtime?.chromium
461
+ };
462
+ const chromiumBinding = {
463
+ dev: null,
464
+ prerender: null,
465
+ runtime: null
466
+ };
467
+ if (nuxt.options.dev) {
468
+ if (isUndefinedOrTruthy(chromeCompatibilityFlags.dev))
469
+ chromiumBinding.dev = hasChromeLocally ? "chrome-launcher" : hasPlaywrightDependency ? "playwright" : "on-demand";
470
+ } else {
471
+ if (isUndefinedOrTruthy(chromeCompatibilityFlags.prerender))
472
+ chromiumBinding.prerender = hasChromeLocally ? "chrome-launcher" : hasPlaywrightDependency ? "playwright" : "on-demand";
473
+ if (isUndefinedOrTruthy(chromeCompatibilityFlags.runtime))
474
+ chromiumBinding.runtime = hasPlaywrightDependency ? "playwright" : null;
470
475
  }
476
+ config.compatibility = defu(config.compatibility, {
477
+ runtime: { chromium: chromiumBinding.runtime },
478
+ dev: { chromium: chromiumBinding.dev },
479
+ prerender: { chromium: chromiumBinding.prerender }
480
+ });
471
481
  await import('@resvg/resvg-js').catch(() => {
472
482
  logger.warn("ReSVG is missing dependencies for environment. Falling back to WASM version, this may slow down PNG rendering.");
473
483
  config.compatibility = defu(config.compatibility, {
@@ -485,7 +495,7 @@ const module = defineNuxtModule({
485
495
  addServerPlugin(resolve("./runtime/nitro/plugins/nuxt-content"));
486
496
  if (!config.fonts.length)
487
497
  config.fonts = ["Inter:400", "Inter:700"];
488
- if (preset === "cloudflare") {
498
+ if (preset === "cloudflare" || preset === "cloudflare-module") {
489
499
  config.fonts = config.fonts.filter((f) => {
490
500
  if (typeof f !== "string" && f.path) {
491
501
  logger.warn(`The ${f.name}:${f.weight} font was skipped because remote fonts are not available in Cloudflare Workers, please use a Google font.`);
@@ -520,27 +530,27 @@ const module = defineNuxtModule({
520
530
  addServerHandler({
521
531
  lazy: true,
522
532
  route: "/__og-image__/font/**",
523
- handler: resolve("./runtime/server/routes/__og-image__/font-[name]-[weight].[extension]")
533
+ handler: resolve("./runtime/nitro/routes/__og-image__/font-[name]-[weight].[extension]")
524
534
  });
525
535
  if (config.debug || nuxt.options.dev) {
526
536
  addServerHandler({
527
537
  lazy: true,
528
538
  route: "/__og-image__/debug.json",
529
- handler: resolve("./runtime/server/routes/__og-image__/debug.json")
539
+ handler: resolve("./runtime/nitro/routes/__og-image__/debug.json")
530
540
  });
531
541
  }
532
542
  addServerHandler({
533
543
  lazy: true,
534
544
  route: "/__og-image__/image/**",
535
- handler: resolve("./runtime/server/routes/__og-image__/image")
545
+ handler: resolve("./runtime/nitro/routes/__og-image__/image")
536
546
  });
537
547
  nuxt.options.optimization.treeShake.composables.client["nuxt-og-image"] = [];
538
- ["defineOgImage", "defineOgImageComponent", "defineOgImageScreenshot"].forEach((name) => {
548
+ ["defineOgImage", "defineOgImageComponent", "defineOgImageScreenshot"].forEach((name2) => {
539
549
  addImports({
540
- name,
541
- from: resolve(`./runtime/composables/${name}`)
550
+ name: name2,
551
+ from: resolve(`./runtime/composables/${name2}`)
542
552
  });
543
- nuxt.options.optimization.treeShake.composables.client["nuxt-og-image"].push(name);
553
+ nuxt.options.optimization.treeShake.composables.client["nuxt-og-image"].push(name2);
544
554
  });
545
555
  await addComponentsDir({
546
556
  path: resolve("./runtime/components/Templates/Community"),
@@ -551,10 +561,10 @@ const module = defineNuxtModule({
551
561
  // new
552
562
  "OgImage",
553
563
  "OgImageScreenshot"
554
- ].forEach((name) => {
564
+ ].forEach((name2) => {
555
565
  addComponent({
556
- name,
557
- filePath: resolve(`./runtime/components/OgImage/${name}`),
566
+ name: name2,
567
+ filePath: resolve(`./runtime/components/OgImage/${name2}`),
558
568
  ...config.componentOptions
559
569
  });
560
570
  });
@@ -603,9 +613,9 @@ const module = defineNuxtModule({
603
613
  nuxt.options.nitro.virtual["#nuxt-og-image/component-names.mjs"] = () => {
604
614
  return `export const componentNames = ${JSON.stringify(ogImageComponentCtx.components)}`;
605
615
  };
606
- let unoCssConfig = { theme: {} };
616
+ let unoCssConfig = {};
607
617
  nuxt.hook("tailwindcss:config", (tailwindConfig) => {
608
- unoCssConfig = defu(tailwindConfig.theme.extend, { ...tailwindConfig.theme || {}, extend: void 0 });
618
+ unoCssConfig = defu(tailwindConfig.theme?.extend, { ...tailwindConfig.theme, extend: void 0 });
609
619
  });
610
620
  nuxt.hook("unocss:config", (_unoCssConfig) => {
611
621
  unoCssConfig = { ..._unoCssConfig.theme };
@@ -616,7 +626,10 @@ const module = defineNuxtModule({
616
626
  extendTypes("nuxt-og-image", ({ typesPath }) => {
617
627
  const componentImports = ogImageComponentCtx.components.map((component) => {
618
628
  const relativeComponentPath = relative(resolve(nuxt.options.rootDir, nuxt.options.buildDir, "module"), component.path);
619
- return ` '${component.pascalName}': typeof import('${relativeComponentPath}')['default']`;
629
+ const name2 = config.componentDirs.sort((a, b) => b.length - a.length).reduce((name3, dir) => {
630
+ return name3.replace(new RegExp(`^${dir}`), "");
631
+ }, component.pascalName);
632
+ return ` '${name2}': typeof import('${relativeComponentPath}')['default']`;
620
633
  }).join("\n");
621
634
  return `
622
635
  declare module 'nitropack' {
@@ -628,7 +641,7 @@ declare module 'nitropack' {
628
641
  }
629
642
  interface NitroRuntimeHooks {
630
643
  'nuxt-og-image:context': (ctx: import('${typesPath}').OgImageRenderEventContext) => void | Promise<void>
631
- 'nuxt-og-image:satori:vnodes': (vnodes: import('${typesPath}').VNode, ctx: ctx: import('${typesPath}').OgImageRenderEventContext) => void | Promise<void>
644
+ 'nuxt-og-image:satori:vnodes': (vnodes: import('${typesPath}').VNode, ctx: import('${typesPath}').OgImageRenderEventContext) => void | Promise<void>
632
645
  }
633
646
  }
634
647
 
@@ -650,11 +663,19 @@ ${componentImports}
650
663
  }
651
664
  nuxt.hooks.hook("modules:done", async () => {
652
665
  const normalisedFonts = normaliseFontInput(config.fonts);
653
- if (!nuxt.options._generate && nuxt.options.build) {
666
+ if (!isNuxtGenerate() && nuxt.options.build) {
667
+ nuxt.options.nitro = nuxt.options.nitro || {};
654
668
  nuxt.options.nitro.prerender = nuxt.options.nitro.prerender || {};
655
669
  nuxt.options.nitro.prerender.routes = nuxt.options.nitro.prerender.routes || [];
656
- normalisedFonts.filter((f) => !f.path && !f.key).forEach(({ name, weight }) => {
657
- nuxt.options.nitro.prerender.routes.push(`/__og-image__/font/${name}/${weight}.ttf`);
670
+ normalisedFonts.filter((f) => !f.path && !f.key).forEach((entry, key) => {
671
+ const { name: name2, weight } = entry;
672
+ if (preset !== "cloudflare" && preset !== "cloudflare-module") {
673
+ entry.path = `/__og-image__/font/${name2}/${weight}.ttf`;
674
+ nuxt.options.nitro.prerender.routes.unshift(entry.path);
675
+ }
676
+ if (name2 === "Inter" && [400, 700].includes(Number(weight)))
677
+ entry.key = `nuxt-og-image:fonts:inter-latin-ext-${weight}-normal.woff`;
678
+ normalisedFonts[key] = entry;
658
679
  });
659
680
  }
660
681
  const hasColorModeModule = hasNuxtModule("@nuxtjs/color-mode");
@@ -677,7 +698,9 @@ ${componentImports}
677
698
  // convert the fonts to uniform type to fix ts issue
678
699
  fonts: normalisedFonts,
679
700
  hasNuxtIcon: hasNuxtModule("nuxt-icon"),
680
- colorPreference
701
+ colorPreference,
702
+ // @ts-expect-error runtime type
703
+ isNuxtContentDocumentDriven: !!nuxt.options.content?.documentDriven
681
704
  };
682
705
  nuxt.hooks.callHook("nuxt-og-image:runtime-config", runtimeConfig);
683
706
  nuxt.options.runtimeConfig["nuxt-og-image"] = runtimeConfig;
@@ -685,7 +708,7 @@ ${componentImports}
685
708
  if (nuxt.options.dev) {
686
709
  setupDevHandler(config, resolve);
687
710
  setupDevToolsUI(config, resolve);
688
- } else if (nuxt.options._generate) {
711
+ } else if (isNuxtGenerate()) {
689
712
  setupGenerateHandler(config, resolve);
690
713
  } else if (nuxt.options.build) {
691
714
  await setupBuildHandler(config, resolve);
@@ -1,5 +1,5 @@
1
1
  import type { OgImageOptions } from '../../types';
2
- declare const _default: import("vue").DefineComponent<OgImageOptions<"NuxtSeo">, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<OgImageOptions<"NuxtSeo">>, {
2
+ declare const _default: import("vue").DefineComponent<OgImageOptions<"NuxtSeo">, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<OgImageOptions<"NuxtSeo">>, {
3
3
  props?: any;
4
4
  }, {}>;
5
5
  export default _default;
@@ -1,5 +1,5 @@
1
1
  import type { OgImagePageScreenshotOptions } from '../../types';
2
- declare const _default: import("vue").DefineComponent<OgImagePageScreenshotOptions, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<OgImagePageScreenshotOptions>, {
2
+ declare const _default: import("vue").DefineComponent<OgImagePageScreenshotOptions, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<OgImagePageScreenshotOptions>, {
3
3
  props?: any;
4
4
  }, {}>;
5
5
  export default _default;
@@ -117,7 +117,7 @@ if (typeof props.icon === 'string' && !runtimeConfig.hasNuxtIcon && process.dev)
117
117
  {{ description }}
118
118
  </p>
119
119
  </div>
120
- <div v-if="icon" style="width: 30%;" class="flex justify-end">
120
+ <div v-if="Boolean(icon)" style="width: 30%;" class="flex justify-end">
121
121
  <IconComponent :name="icon" size="250px" style="margin: 0 auto; opacity: 0.7;" />
122
122
  </div>
123
123
  </div>
@@ -25,10 +25,10 @@ const org = computed(() => props.title.split('/')[0])
25
25
  const repo = computed(() => props.title.split('/')[1])
26
26
 
27
27
  const stars = computed(() => {
28
- return new Intl.NumberFormat('en-US', { notation: 'compact', compactDisplay: 'short' }).format(props.stars || 0)
28
+ return new Intl.NumberFormat('en-US', { notation: 'compact', compactDisplay: 'short' }).format(Number(props.stars || 0))
29
29
  })
30
30
  const downloads = computed(() => new Intl.NumberFormat('en-US', { notation: 'compact', compactDisplay: 'short' })
31
- .format(props.downloads || 0),
31
+ .format(Number(props.downloads || 0)),
32
32
  )
33
33
 
34
34
  const description = computed(() => (props.description || '').slice(0, 200))
@@ -1,10 +1,9 @@
1
1
  import { defu } from "defu";
2
2
  import { appendHeader } from "h3";
3
- import { createRouter as createRadixRouter, toRouteMatcher } from "radix3";
4
- import { withoutBase } from "ufo";
5
3
  import { getOgImagePath, separateProps, useOgImageRuntimeConfig } from "../utils.mjs";
6
4
  import { createOgImageMeta, normaliseOptions } from "../nuxt/utils.mjs";
7
- import { useNuxtApp, useRequestEvent, useRoute, useRuntimeConfig } from "#imports";
5
+ import { createNitroRouteRuleMatcher } from "../nitro/kit.mjs";
6
+ import { useNuxtApp, useRequestEvent, useRoute } from "#imports";
8
7
  export function defineOgImage(_options = {}) {
9
8
  if (!import.meta.server)
10
9
  return;
@@ -12,12 +11,8 @@ export function defineOgImage(_options = {}) {
12
11
  const ogImageInstances = nuxtApp.ssrContext._ogImageInstances || [];
13
12
  const route = useRoute();
14
13
  const basePath = route.path || "/";
15
- const _routeRulesMatcher = toRouteMatcher(
16
- createRadixRouter({ routes: useRuntimeConfig().nitro?.routeRules })
17
- );
18
- const routeRules = defu({}, ..._routeRulesMatcher.matchAll(
19
- withoutBase(basePath.split("?")[0], useRuntimeConfig().app.baseURL)
20
- ).reverse()).ogImage;
14
+ const routeRuleMatcher = createNitroRouteRuleMatcher();
15
+ const routeRules = routeRuleMatcher(basePath).ogImage;
21
16
  if (!_options || nuxtApp.ssrContext?.event.context._nitro?.routeRules?.ogImage === false || typeof routeRules !== "undefined" && routeRules === false) {
22
17
  ogImageInstances.forEach((e) => {
23
18
  e.dispose();
@@ -0,0 +1,9 @@
1
+ import playwrightCore from "playwright-core";
2
+ import { Launcher } from "chrome-launcher";
3
+ const chromePath = Launcher.getFirstInstallation();
4
+ export async function createBrowser() {
5
+ return playwrightCore.chromium.launch({
6
+ headless: true,
7
+ executablePath: chromePath
8
+ });
9
+ }
@@ -0,0 +1,2 @@
1
+ import type { Browser } from 'playwright-core';
2
+ export declare function createBrowser(): Promise<Browser | void>;
@@ -0,0 +1,36 @@
1
+ import { execa } from "execa";
2
+ import terminate from "terminate";
3
+ import { createConsola } from "consola";
4
+ import playwrightCore from "playwright-core";
5
+ let installedChromium = false;
6
+ let installChromiumPromise;
7
+ export async function createBrowser() {
8
+ if (installChromiumPromise)
9
+ await installChromiumPromise;
10
+ if (!installedChromium) {
11
+ installChromiumPromise = new Promise((_resolve) => {
12
+ const logger = createConsola().withTag("Nuxt OG Image");
13
+ logger.info("Installing Chromium install for og:image generation...");
14
+ const installChromeProcess = execa("npx", ["playwright", "install", "chromium"], {
15
+ stdio: "inherit"
16
+ });
17
+ installChromeProcess.stderr?.pipe(process.stderr);
18
+ new Promise((resolve) => {
19
+ installChromeProcess.on("exit", (e) => {
20
+ if (e !== 0)
21
+ logger.error("Failed to install Playwright dependency for og:image generation. Trying anyway...");
22
+ resolve(true);
23
+ });
24
+ }).then(() => {
25
+ installChromeProcess.pid && terminate(installChromeProcess.pid);
26
+ logger.info("Installed Chromium install for og:image generation.");
27
+ _resolve();
28
+ });
29
+ }).then(() => {
30
+ installedChromium = true;
31
+ });
32
+ }
33
+ return await playwrightCore.chromium.launch({
34
+ headless: true
35
+ });
36
+ }
@@ -0,0 +1,2 @@
1
+ import type { Browser } from 'playwright-core';
2
+ export declare function createBrowser(): Promise<Browser | void>;
@@ -0,0 +1,6 @@
1
+ import playwright from "playwright";
2
+ export async function createBrowser() {
3
+ return await playwright.chromium.launch({
4
+ headless: true
5
+ });
6
+ }
@@ -1,2 +1,8 @@
1
- import cssInline from 'css-inline';
2
- export default cssInline;
1
+ import { inline } from '@css-inline/css-inline';
2
+ declare const _default: {
3
+ initWasmPromise: Promise<void>;
4
+ cssInline: {
5
+ inline: typeof inline;
6
+ };
7
+ };
8
+ export default _default;
@@ -1,2 +1,7 @@
1
- import cssInline from "css-inline";
2
- export default cssInline;
1
+ import { inline } from "@css-inline/css-inline";
2
+ export default {
3
+ initWasmPromise: Promise.resolve(),
4
+ cssInline: {
5
+ inline
6
+ }
7
+ };
@@ -0,0 +1,8 @@
1
+ import { inline } from '@css-inline/css-inline-wasm';
2
+ declare const _default: {
3
+ initWasmPromise: Promise<void>;
4
+ cssInline: {
5
+ inline: typeof inline;
6
+ };
7
+ };
8
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { initWasm, inline } from "@css-inline/css-inline-wasm";
2
+ import { readWasmFile } from "../../utils/wasm.mjs";
3
+ export default {
4
+ initWasmPromise: initWasm(readWasmFile("@css-inline/css-inline-wasm/index_bg.wasm")),
5
+ cssInline: {
6
+ inline
7
+ }
8
+ };
@@ -0,0 +1,8 @@
1
+ import { inline } from '@css-inline/css-inline-wasm';
2
+ declare const _default: {
3
+ initWasmPromise: Promise<void>;
4
+ cssInline: {
5
+ inline: typeof inline;
6
+ };
7
+ };
8
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { initWasm, inline } from "@css-inline/css-inline-wasm";
2
+ import { importWasm } from "../../utils/wasm.mjs";
3
+ export default {
4
+ initWasmPromise: initWasm(importWasm(import("@css-inline/css-inline-wasm/index_bg.wasm"))),
5
+ cssInline: {
6
+ inline
7
+ }
8
+ };
@@ -27,7 +27,10 @@ export async function loadFont({ e }, font) {
27
27
  }
28
28
  } else {
29
29
  data = await e.$fetch(`/__og-image__/font/${name}/${weight}.ttf`, {
30
- responseType: "arrayBuffer"
30
+ responseType: "arrayBuffer",
31
+ query: {
32
+ font
33
+ }
31
34
  });
32
35
  }
33
36
  }