nuxt-og-image 3.0.0-rc.4 → 3.0.0-rc.40

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 (393) hide show
  1. package/README.md +4 -4
  2. package/dist/client/200.html +233 -15
  3. package/dist/client/404.html +233 -15
  4. package/dist/client/_nuxt/IconCSS.NC-oxnpY.css +1 -0
  5. package/dist/client/_nuxt/IconCSS.NJFIBlcf.js +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.2kK3Ey_6.js +16 -0
  11. package/dist/client/_nuxt/angular-ts.oipk5Mpx.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.XB4V8Q_3.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.5Up4Y-tq.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.dLd1FX1V.js +831 -0
  29. package/dist/client/_nuxt/builds/latest.json +1 -1
  30. package/dist/client/_nuxt/builds/meta/6c43a4bf-3a94-4d1d-b019-d8354885743d.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.RsX2ypHK.js +1 -0
  34. package/dist/client/_nuxt/catppuccin-latte.VMh3L8Ce.js +1 -0
  35. package/dist/client/_nuxt/catppuccin-macchiato.ub_rvpAX.js +1 -0
  36. package/dist/client/_nuxt/catppuccin-mocha.GVeD5rZX.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.yHzQax91.js +1 -0
  41. package/dist/client/_nuxt/codeql.i7fhVOvX.js +1 -0
  42. package/dist/client/_nuxt/coffee.UjKhX0iS.js +100 -0
  43. package/dist/client/_nuxt/cpp.UIU91NPT.js +186 -0
  44. package/dist/client/_nuxt/crystal.p1-x8UtH.js +25 -0
  45. package/dist/client/_nuxt/csharp.xHVQI8QI.js +756 -0
  46. package/dist/client/_nuxt/css.tuEqSfZX.js +505 -0
  47. package/dist/client/_nuxt/csv.89HA7eVC.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.dYoE9A9d.js +17 -0
  60. package/dist/client/_nuxt/elm.AR6G1sGv.js +1 -0
  61. package/dist/client/_nuxt/entry.fFwg0pA-.js +134 -0
  62. package/dist/client/_nuxt/entry.x0oA1XnQ.css +1 -0
  63. package/dist/client/_nuxt/erb.P8EuRJSc.js +1 -0
  64. package/dist/client/_nuxt/erlang._Br9gip-.js +1 -0
  65. package/dist/client/_nuxt/{error-404.3430ff98.js → error-404.4msf9X3t.js} +1 -1
  66. package/dist/client/_nuxt/error-404.DkXpI38i.css +1 -0
  67. package/dist/client/_nuxt/{error-500.17781b5f.js → error-500.arg9BSKV.js} +1 -1
  68. package/dist/client/_nuxt/fish.k6NZEVUm.js +5 -0
  69. package/dist/client/_nuxt/fortran-fixed-form.3PunHBsT.js +1 -0
  70. package/dist/client/_nuxt/fortran-free-form.uz_LTDoO.js +1 -0
  71. package/dist/client/_nuxt/fsharp.R678YdIV.js +1 -0
  72. package/dist/client/_nuxt/gdresource.Fwi0K6XA.js +1 -0
  73. package/dist/client/_nuxt/gdscript.OhUZTpfD.js +44 -0
  74. package/dist/client/_nuxt/gdshader.6pjKCTQy.js +1 -0
  75. package/dist/client/_nuxt/gherkin.hgsyILVZ.js +1 -0
  76. package/dist/client/_nuxt/git-commit.RtAxFnK2.js +1 -0
  77. package/dist/client/_nuxt/git-rebase.0KF-V_b8.js +1 -0
  78. package/dist/client/_nuxt/github-dark-dimmed.yDYFqRVv.js +1 -0
  79. package/dist/client/_nuxt/github-dark.WrpzPehD.js +1 -0
  80. package/dist/client/_nuxt/github-light.QjB713Ax.js +1 -0
  81. package/dist/client/_nuxt/glimmer-js.-fTe8v8P.js +13 -0
  82. package/dist/client/_nuxt/glimmer-ts.iMdjtd1u.js +13 -0
  83. package/dist/client/_nuxt/glsl.yLv_V-GM.js +1 -0
  84. package/dist/client/_nuxt/gnuplot.fIlAWhXw.js +266 -0
  85. package/dist/client/_nuxt/go.uwBNuH-c.js +1 -0
  86. package/dist/client/_nuxt/graphql.aYTh5yPU.js +4 -0
  87. package/dist/client/_nuxt/groovy.Z1Lrhk2B.js +37 -0
  88. package/dist/client/_nuxt/hack.9pFjhnG2.js +86 -0
  89. package/dist/client/_nuxt/haml.20r8Wj9i.js +1 -0
  90. package/dist/client/_nuxt/handlebars.Z9TIkDUw.js +1 -0
  91. package/dist/client/_nuxt/haskell.HW0BBkRd.js +559 -0
  92. package/dist/client/_nuxt/hcl.M9siRbiv.js +1 -0
  93. package/dist/client/_nuxt/hjson.fLk7JbZa.js +50 -0
  94. package/dist/client/_nuxt/hlsl.Do_j-o-7.js +1 -0
  95. package/dist/client/_nuxt/html-derivative.3Qc0V0lp.js +1 -0
  96. package/dist/client/_nuxt/html.ZVb9jHrO.js +74 -0
  97. package/dist/client/_nuxt/http.67dI9VDY.js +1 -0
  98. package/dist/client/_nuxt/imba.guICF3zN.js +223 -0
  99. package/dist/client/_nuxt/ini.T6bxBy5-.js +1 -0
  100. package/dist/client/_nuxt/java.tY-NU26U.js +68 -0
  101. package/dist/client/_nuxt/javascript.JMZ6uy5M.js +699 -0
  102. package/dist/client/_nuxt/jinja.H2a5aKFq.js +1 -0
  103. package/dist/client/_nuxt/jison.hEN1Pilr.js +1 -0
  104. package/dist/client/_nuxt/json.xL80yL3n.js +25 -0
  105. package/dist/client/_nuxt/json5.NRuQoh_0.js +17 -0
  106. package/dist/client/_nuxt/jsonc.Bb1R3obU.js +25 -0
  107. package/dist/client/_nuxt/jsonl.Yjg0VwMG.js +25 -0
  108. package/dist/client/_nuxt/jsonnet.WK26vH-O.js +1 -0
  109. package/dist/client/_nuxt/jssm.eioTUq4-.js +1 -0
  110. package/dist/client/_nuxt/jsx.3LZ_BoLB.js +699 -0
  111. package/dist/client/_nuxt/julia.zN5MNt1V.js +9 -0
  112. package/dist/client/_nuxt/kotlin.1iwCeGA4.js +1 -0
  113. package/dist/client/_nuxt/kusto.UpRCclYC.js +1 -0
  114. package/dist/client/_nuxt/latex.hBr1lDpC.js +3 -0
  115. package/dist/client/_nuxt/less.Mq8TrjER.js +159 -0
  116. package/dist/client/_nuxt/light-plus.TzXGjDsL.js +1 -0
  117. package/dist/client/_nuxt/liquid.UuwAmqmc.js +14 -0
  118. package/dist/client/_nuxt/lisp.iIZdsWzX.js +1 -0
  119. package/dist/client/_nuxt/logo.WuHqTpFy.js +1 -0
  120. package/dist/client/_nuxt/lua.OGbZEs3U.js +1 -0
  121. package/dist/client/_nuxt/make.8zIAVqFD.js +1 -0
  122. package/dist/client/_nuxt/markdown.BZyvP-q3.js +129 -0
  123. package/dist/client/_nuxt/marko.gbQhFTQa.js +8 -0
  124. package/dist/client/_nuxt/material-theme-darker.e1lAwchJ.js +1 -0
  125. package/dist/client/_nuxt/material-theme-lighter.y77yPuAI.js +1 -0
  126. package/dist/client/_nuxt/material-theme-ocean.oIMAIpse.js +1 -0
  127. package/dist/client/_nuxt/material-theme-palenight.Z44VU5rQ.js +1 -0
  128. package/dist/client/_nuxt/material-theme.49YjOoAR.js +1 -0
  129. package/dist/client/_nuxt/matlab.LaB98_jd.js +70 -0
  130. package/dist/client/_nuxt/mdc.YjnAaITK.js +76 -0
  131. package/dist/client/_nuxt/mdx.VhCSg2DJ.js +1 -0
  132. package/dist/client/_nuxt/mermaid.WuNnVULj.js +1 -0
  133. package/dist/client/_nuxt/min-dark._Ja8ZF5C.js +1 -0
  134. package/dist/client/_nuxt/min-light.N1m_6E3S.js +1 -0
  135. package/dist/client/_nuxt/mojo.zLNDSfD9.js +519 -0
  136. package/dist/client/_nuxt/monokai.WLw4Glvg.js +1 -0
  137. package/dist/client/_nuxt/move.WSL1-Uy6.js +1 -0
  138. package/dist/client/_nuxt/narrat.KYi2rZr0.js +7 -0
  139. package/dist/client/_nuxt/nextflow.lYJjOZ_l.js +1 -0
  140. package/dist/client/_nuxt/nginx.CrBM8z2W.js +1 -0
  141. package/dist/client/_nuxt/night-owl.GWZK5Ce7.js +1 -0
  142. package/dist/client/_nuxt/nim.XEbgpvRN.js +1 -0
  143. package/dist/client/_nuxt/nix.z3u_V08Q.js +1 -0
  144. package/dist/client/_nuxt/nord.1NrVtx79.js +1 -0
  145. package/dist/client/_nuxt/nushell.Pupc41gF.js +1 -0
  146. package/dist/client/_nuxt/objective-c.Eci2Q5FN.js +109 -0
  147. package/dist/client/_nuxt/objective-cpp.nGsV46Zk.js +239 -0
  148. package/dist/client/_nuxt/ocaml.oQRvlYTD.js +1 -0
  149. package/dist/client/_nuxt/one-dark-pro.qlkgvdEn.js +1 -0
  150. package/dist/client/_nuxt/onig.mBJmD8D5.js +1 -0
  151. package/dist/client/_nuxt/pascal.aIRIFbih.js +1 -0
  152. package/dist/client/_nuxt/perl._x09KDDb.js +1 -0
  153. package/dist/client/_nuxt/php.2PDLwZAX.js +771 -0
  154. package/dist/client/_nuxt/plsql.vhhXsReo.js +1 -0
  155. package/dist/client/_nuxt/poimandres.oZrO-I17.js +1 -0
  156. package/dist/client/_nuxt/postcss.57yKeRpx.js +1 -0
  157. package/dist/client/_nuxt/powerquery.wBQvr9E-.js +1 -0
  158. package/dist/client/_nuxt/powershell.6Y_bsqLY.js +1 -0
  159. package/dist/client/_nuxt/prisma.fG9Ut-9i.js +1 -0
  160. package/dist/client/_nuxt/prolog.vggnm0Hd.js +1 -0
  161. package/dist/client/_nuxt/proto.yigfBmiL.js +1 -0
  162. package/dist/client/_nuxt/pug.ieZS468c.js +1 -0
  163. package/dist/client/_nuxt/puppet.NqXa_cO1.js +1 -0
  164. package/dist/client/_nuxt/purescript.NA5qsvV2.js +7 -0
  165. package/dist/client/_nuxt/python.V9Nu427R.js +518 -0
  166. package/dist/client/_nuxt/r.xMXDrvl2.js +1 -0
  167. package/dist/client/_nuxt/raku.NSWyGF40.js +1 -0
  168. package/dist/client/_nuxt/razor.i0YTcUHW.js +40 -0
  169. package/dist/client/_nuxt/red.sV5NnIRC.js +1 -0
  170. package/dist/client/_nuxt/reg.Dr-lXfN9.js +1 -0
  171. package/dist/client/_nuxt/rel.vATIbX_E.js +1 -0
  172. package/dist/client/_nuxt/riscv.L73dAZEB.js +13 -0
  173. package/dist/client/_nuxt/rose-pine-dawn.qPi4euik.js +1 -0
  174. package/dist/client/_nuxt/rose-pine-moon.Im6VgKOx.js +1 -0
  175. package/dist/client/_nuxt/rose-pine._tQyNI4L.js +1 -0
  176. package/dist/client/_nuxt/rst.3hexci4q.js +1 -0
  177. package/dist/client/_nuxt/ruby.HRYdKFAp.js +80 -0
  178. package/dist/client/_nuxt/rust.yNm59Dur.js +1 -0
  179. package/dist/client/_nuxt/sas.fTu4QUYF.js +1 -0
  180. package/dist/client/_nuxt/sass.URKSWxt9.js +2 -0
  181. package/dist/client/_nuxt/scala.JNsk4MRP.js +5 -0
  182. package/dist/client/_nuxt/scheme.S0VUhbaV.js +136 -0
  183. package/dist/client/_nuxt/scss.9u5wOjnF.js +90 -0
  184. package/dist/client/_nuxt/shaderlab.MYTNW71C.js +1 -0
  185. package/dist/client/_nuxt/shellscript.QP4ZqdYB.js +1 -0
  186. package/dist/client/_nuxt/shellsession.zflFzomD.js +1 -0
  187. package/dist/client/_nuxt/slack-dark.1ZggNzwg.js +1 -0
  188. package/dist/client/_nuxt/slack-ochin.IcMt0x71.js +1 -0
  189. package/dist/client/_nuxt/smalltalk.ymyryZ3T.js +1 -0
  190. package/dist/client/_nuxt/solarized-dark.3DcwRX9o.js +1 -0
  191. package/dist/client/_nuxt/solarized-light.iUVMuJ2F.js +1 -0
  192. package/dist/client/_nuxt/solidity.rGqtk2dD.js +1 -0
  193. package/dist/client/_nuxt/sparql.b6B4dWwT.js +1 -0
  194. package/dist/client/_nuxt/splunk.OYnOZZCZ.js +1 -0
  195. package/dist/client/_nuxt/sql.KWFjTZGI.js +21 -0
  196. package/dist/client/_nuxt/ssh-config.jdYjUr9x.js +1 -0
  197. package/dist/client/_nuxt/stata.cF_ucIcM.js +3 -0
  198. package/dist/client/_nuxt/stylus.sPHLw37c.js +15 -0
  199. package/dist/client/_nuxt/svelte.pLFP2FPE.js +1 -0
  200. package/dist/client/_nuxt/swift.YwiPyWKn.js +544 -0
  201. package/dist/client/_nuxt/synthwave-84.QD7ZGwpp.js +1 -0
  202. package/dist/client/_nuxt/system-verilog.gwJe9XJI.js +9 -0
  203. package/dist/client/_nuxt/tasl.IM3fg-4x.js +1 -0
  204. package/dist/client/_nuxt/tcl.h_zrCUh3.js +1 -0
  205. package/dist/client/_nuxt/terraform.Fe8Ioisv.js +1 -0
  206. package/dist/client/_nuxt/tex.uNByjuDB.js +1 -0
  207. package/dist/client/_nuxt/tokyo-night.3j08uV2M.js +1 -0
  208. package/dist/client/_nuxt/toml.p_xIKQcU.js +69 -0
  209. package/dist/client/_nuxt/tsx.7LxggtAE.js +699 -0
  210. package/dist/client/_nuxt/turtle.qvOLXpiq.js +1 -0
  211. package/dist/client/_nuxt/twig.tyrBq40F.js +40 -0
  212. package/dist/client/_nuxt/typescript.HpdcmTOD.js +666 -0
  213. package/dist/client/_nuxt/typst.t_XmezDA.js +10 -0
  214. package/dist/client/_nuxt/v.BcVLQyAr.js +1 -0
  215. package/dist/client/_nuxt/vanilla-picker.P0dws0ou.js +8 -0
  216. package/dist/client/_nuxt/vb.nfm3ZogP.js +1 -0
  217. package/dist/client/_nuxt/verilog.32GaFvLA.js +1 -0
  218. package/dist/client/_nuxt/vesper.aMfKacnm.js +1 -0
  219. package/dist/client/_nuxt/vhdl.BgfvI7C9.js +515 -0
  220. package/dist/client/_nuxt/viml.Ob-szSvk.js +1 -0
  221. package/dist/client/_nuxt/vitesse-black.uLlG6AUB.js +1 -0
  222. package/dist/client/_nuxt/vitesse-dark.5VceXvs6.js +1 -0
  223. package/dist/client/_nuxt/vitesse-light.HOMMxGxw.js +1 -0
  224. package/dist/client/_nuxt/vue-html.EeiA1ksk.js +1 -0
  225. package/dist/client/_nuxt/vue.HERpo4_W.js +6 -0
  226. package/dist/client/_nuxt/vyper.0ItMHLZu.js +575 -0
  227. package/dist/client/_nuxt/wasm.5qeU6UJI.js +1 -0
  228. package/dist/client/_nuxt/wenyan.gl1zQYA8.js +1 -0
  229. package/dist/client/_nuxt/wgsl.KpVp-DWl.js +1 -0
  230. package/dist/client/_nuxt/wolfram.K_QzNdW-.js +1 -0
  231. package/dist/client/_nuxt/xml.GygmfNh9.js +1 -0
  232. package/dist/client/_nuxt/xsl.TptR0G-3.js +1 -0
  233. package/dist/client/_nuxt/yaml.zytfnWoA.js +200 -0
  234. package/dist/client/_nuxt/zenscript.htRIWiQY.js +2 -0
  235. package/dist/client/_nuxt/zig.AVPlmtxo.js +1 -0
  236. package/dist/client/index.html +233 -15
  237. package/dist/module.d.mts +11 -3
  238. package/dist/module.d.ts +11 -3
  239. package/dist/module.json +2 -2
  240. package/dist/module.mjs +190 -121
  241. package/dist/runtime/assets/Inter-400.ttf.base64 +1 -0
  242. package/dist/runtime/assets/Inter-700.ttf.base64 +1 -0
  243. package/dist/runtime/nitro/og-image/bindings/chromium/chrome-launcher.mjs +9 -0
  244. package/dist/runtime/nitro/og-image/bindings/chromium/on-demand.d.ts +2 -0
  245. package/dist/runtime/nitro/og-image/bindings/chromium/on-demand.mjs +36 -0
  246. package/dist/runtime/nitro/og-image/bindings/chromium/playwright.d.ts +2 -0
  247. package/dist/runtime/nitro/og-image/bindings/chromium/playwright.mjs +6 -0
  248. package/dist/runtime/nitro/og-image/bindings/css-inline/node.d.ts +8 -0
  249. package/dist/runtime/nitro/og-image/bindings/css-inline/node.mjs +7 -0
  250. package/dist/runtime/nitro/og-image/bindings/css-inline/wasm-fs.d.ts +8 -0
  251. package/dist/runtime/nitro/og-image/bindings/css-inline/wasm-fs.mjs +8 -0
  252. package/dist/runtime/nitro/og-image/bindings/css-inline/wasm.d.ts +8 -0
  253. package/dist/runtime/nitro/og-image/bindings/css-inline/wasm.mjs +8 -0
  254. package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm-fs.mjs +1 -1
  255. package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm.mjs +1 -1
  256. package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm-fs.mjs +1 -1
  257. package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm.mjs +1 -1
  258. package/dist/runtime/nitro/og-image/cache.d.ts +7 -0
  259. package/dist/runtime/{core/cache/htmlPayload.mjs → nitro/og-image/cache.mjs} +3 -0
  260. package/dist/runtime/{core/renderers → nitro/og-image}/chromium/screenshot.mjs +1 -1
  261. package/dist/runtime/nitro/og-image/context.d.ts +5 -0
  262. package/dist/runtime/nitro/og-image/context.mjs +177 -0
  263. package/dist/runtime/nitro/og-image/instances.d.ts +2 -0
  264. package/dist/runtime/nitro/og-image/instances.mjs +10 -0
  265. package/dist/runtime/{core/font/fetch.d.ts → nitro/og-image/satori/font.d.ts} +1 -1
  266. package/dist/runtime/nitro/og-image/satori/font.mjs +29 -0
  267. package/dist/runtime/{core/renderers → nitro/og-image}/satori/instances.d.ts +0 -2
  268. package/dist/runtime/{core/renderers → nitro/og-image}/satori/instances.mjs +2 -11
  269. package/dist/runtime/nitro/og-image/satori/plugins/classes.mjs +17 -0
  270. package/dist/runtime/nitro/og-image/satori/plugins/encoding.mjs +17 -0
  271. package/dist/runtime/nitro/og-image/satori/plugins/imageSrc.mjs +82 -0
  272. package/dist/runtime/{core/renderers/satori/index.mjs → nitro/og-image/satori/renderer.mjs} +28 -15
  273. package/dist/runtime/{core/html/applyEmojis.d.ts → nitro/og-image/satori/transforms/emojis.d.ts} +3 -1
  274. package/dist/runtime/{core/html/applyEmojis.mjs → nitro/og-image/satori/transforms/emojis.mjs} +6 -2
  275. package/dist/runtime/{core/html/applyInlineCss.d.ts → nitro/og-image/satori/transforms/inlineCss.d.ts} +1 -1
  276. package/dist/runtime/nitro/og-image/satori/transforms/inlineCss.mjs +41 -0
  277. package/dist/runtime/{core/renderers → nitro/og-image}/satori/vnodes.mjs +9 -7
  278. package/dist/runtime/nitro/og-image/templates/html.d.ts +2 -0
  279. package/dist/runtime/{core/html/devIframeTemplate.mjs → nitro/og-image/templates/html.mjs} +17 -9
  280. package/dist/runtime/nitro/plugins/nuxt-content.mjs +7 -4
  281. package/dist/runtime/nitro/plugins/prerender.d.ts +1 -1
  282. package/dist/runtime/nitro/plugins/prerender.mjs +8 -16
  283. package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/debug.json.d.ts +1 -5
  284. package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/debug.json.mjs +1 -7
  285. package/dist/runtime/{server/routes/__og-image__/font-[name]-[weight].[extension].mjs → nitro/routes/font.mjs} +22 -3
  286. package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/image.mjs +9 -12
  287. package/dist/runtime/nitro/tsconfig.json +3 -0
  288. package/dist/runtime/{cache.d.ts → nitro/util/cache.d.ts} +1 -1
  289. package/dist/runtime/nitro/util/encoding.d.ts +3 -0
  290. package/dist/runtime/nitro/util/encoding.mjs +15 -0
  291. package/dist/runtime/nitro/util/kit.d.ts +6 -0
  292. package/dist/runtime/nitro/util/kit.mjs +32 -0
  293. package/dist/runtime/{components → nuxt/components}/OgImage/OgImage.d.ts +2 -2
  294. package/dist/runtime/{components → nuxt/components}/OgImage/OgImageScreenshot.d.ts +2 -2
  295. package/dist/runtime/{components → nuxt/components}/Templates/Community/NuxtSeo.vue +2 -2
  296. package/dist/runtime/{components → nuxt/components}/Templates/Community/UnJs.vue +2 -2
  297. package/dist/runtime/{composables → nuxt/composables}/defineOgImage.d.ts +1 -1
  298. package/dist/runtime/{composables → nuxt/composables}/defineOgImage.mjs +6 -11
  299. package/dist/runtime/{composables → nuxt/composables}/defineOgImageComponent.d.ts +1 -1
  300. package/dist/runtime/{composables → nuxt/composables}/defineOgImageScreenshot.d.ts +1 -1
  301. package/dist/runtime/nuxt/composables/mock.d.ts +0 -0
  302. package/dist/runtime/nuxt/composables/mock.mjs +6 -0
  303. package/dist/runtime/nuxt/plugins/og-image-canonical-urls.server.mjs +10 -3
  304. package/dist/runtime/nuxt/plugins/route-rule-og-image.server.mjs +1 -1
  305. package/dist/runtime/nuxt/utils.d.ts +2 -1
  306. package/dist/runtime/nuxt/utils.mjs +5 -3
  307. package/dist/runtime/{utils.pure.d.ts → pure.d.ts} +3 -0
  308. package/dist/runtime/{utils.pure.mjs → pure.mjs} +20 -3
  309. package/dist/runtime/{utils.d.ts → shared.d.ts} +1 -1
  310. package/dist/runtime/{utils.mjs → shared.mjs} +1 -1
  311. package/dist/runtime/types.d.ts +10 -3
  312. package/dist/types.d.mts +2 -2
  313. package/package.json +72 -47
  314. package/dist/client/_nuxt/IconCSS.921d8bb4.js +0 -1
  315. package/dist/client/_nuxt/IconCSS.f0b56d3e.css +0 -1
  316. package/dist/client/_nuxt/builds/meta/f3272063-a39c-4336-ba58-ab7e348c7608.json +0 -1
  317. package/dist/client/_nuxt/entry.81e38674.js +0 -108
  318. package/dist/client/_nuxt/entry.a30f63d0.css +0 -1
  319. package/dist/client/_nuxt/error-404.b751fa02.css +0 -1
  320. package/dist/client/_nuxt/vanilla-picker-NKbIFE8h.23409a58.js +0 -8
  321. package/dist/runtime/core/bindings/chromium/node.mjs +0 -33
  322. package/dist/runtime/core/bindings/css-inline/node.d.ts +0 -2
  323. package/dist/runtime/core/bindings/css-inline/node.mjs +0 -2
  324. package/dist/runtime/core/cache/emojis.d.ts +0 -1
  325. package/dist/runtime/core/cache/emojis.mjs +0 -5
  326. package/dist/runtime/core/cache/fonts.d.ts +0 -3
  327. package/dist/runtime/core/cache/fonts.mjs +0 -6
  328. package/dist/runtime/core/cache/htmlPayload.d.ts +0 -5
  329. package/dist/runtime/core/cache/prerender.d.ts +0 -2
  330. package/dist/runtime/core/cache/prerender.mjs +0 -5
  331. package/dist/runtime/core/env/assets.d.ts +0 -1
  332. package/dist/runtime/core/env/assets.mjs +0 -11
  333. package/dist/runtime/core/font/fetch.mjs +0 -36
  334. package/dist/runtime/core/html/applyInlineCss.mjs +0 -32
  335. package/dist/runtime/core/html/devIframeTemplate.d.ts +0 -2
  336. package/dist/runtime/core/html/fetchIsland.d.ts +0 -3
  337. package/dist/runtime/core/html/fetchIsland.mjs +0 -17
  338. package/dist/runtime/core/options/extract.d.ts +0 -3
  339. package/dist/runtime/core/options/extract.mjs +0 -49
  340. package/dist/runtime/core/options/fetch.d.ts +0 -3
  341. package/dist/runtime/core/options/fetch.mjs +0 -32
  342. package/dist/runtime/core/renderers/satori/plugins/encoding.mjs +0 -8
  343. package/dist/runtime/core/renderers/satori/plugins/imageSrc.mjs +0 -75
  344. package/dist/runtime/core/renderers/satori/plugins/twClasses.mjs +0 -8
  345. package/dist/runtime/core/utils/resolveRendererContext.d.ts +0 -3
  346. package/dist/runtime/core/utils/resolveRendererContext.mjs +0 -96
  347. package/dist/runtime/nitro/utils.d.ts +0 -2
  348. package/dist/runtime/nitro/utils.mjs +0 -17
  349. package/dist/runtime/server/assets/inter-latin-ext-400-normal.woff +0 -0
  350. package/dist/runtime/server/assets/inter-latin-ext-700-normal.woff +0 -0
  351. /package/dist/client/_nuxt/{error-500.69009e70.css → error-500.SLhS9LVu.css} +0 -0
  352. /package/dist/runtime/{core/bindings/chromium/node.d.ts → nitro/og-image/bindings/chromium/chrome-launcher.d.ts} +0 -0
  353. /package/dist/runtime/{core → nitro/og-image}/bindings/resvg/node.d.ts +0 -0
  354. /package/dist/runtime/{core → nitro/og-image}/bindings/resvg/node.mjs +0 -0
  355. /package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm-fs.d.ts +0 -0
  356. /package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm.d.ts +0 -0
  357. /package/dist/runtime/{core → nitro/og-image}/bindings/satori/node.d.ts +0 -0
  358. /package/dist/runtime/{core → nitro/og-image}/bindings/satori/node.mjs +0 -0
  359. /package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm-fs.d.ts +0 -0
  360. /package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm.d.ts +0 -0
  361. /package/dist/runtime/{core → nitro/og-image}/bindings/sharp/node.d.ts +0 -0
  362. /package/dist/runtime/{core → nitro/og-image}/bindings/sharp/node.mjs +0 -0
  363. /package/dist/runtime/{core/renderers/chromium/index.d.ts → nitro/og-image/chromium/renderer.d.ts} +0 -0
  364. /package/dist/runtime/{core/renderers/chromium/index.mjs → nitro/og-image/chromium/renderer.mjs} +0 -0
  365. /package/dist/runtime/{core/renderers → nitro/og-image}/chromium/screenshot.d.ts +0 -0
  366. /package/dist/runtime/{core/renderers/satori/plugins/emojis.d.ts → nitro/og-image/satori/plugins/classes.d.ts} +0 -0
  367. /package/dist/runtime/{core/renderers/satori/plugins/encoding.d.ts → nitro/og-image/satori/plugins/emojis.d.ts} +0 -0
  368. /package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/emojis.mjs +0 -0
  369. /package/dist/runtime/{core/renderers/satori/plugins/flex.d.ts → nitro/og-image/satori/plugins/encoding.d.ts} +0 -0
  370. /package/dist/runtime/{core/renderers/satori/plugins/imageSrc.d.ts → nitro/og-image/satori/plugins/flex.d.ts} +0 -0
  371. /package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/flex.mjs +0 -0
  372. /package/dist/runtime/{core/renderers/satori/plugins/twClasses.d.ts → nitro/og-image/satori/plugins/imageSrc.d.ts} +0 -0
  373. /package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/unocss.d.ts +0 -0
  374. /package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/unocss.mjs +0 -0
  375. /package/dist/runtime/{core/renderers/satori/index.d.ts → nitro/og-image/satori/renderer.d.ts} +0 -0
  376. /package/dist/runtime/{core/renderers → nitro/og-image}/satori/utils.d.ts +0 -0
  377. /package/dist/runtime/{core/renderers → nitro/og-image}/satori/utils.mjs +0 -0
  378. /package/dist/runtime/{core/renderers → nitro/og-image}/satori/vnodes.d.ts +0 -0
  379. /package/dist/runtime/{server/routes/__og-image__/font-[name]-[weight].[extension].d.ts → nitro/routes/font.d.ts} +0 -0
  380. /package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/image.d.ts +0 -0
  381. /package/dist/runtime/{cache.mjs → nitro/util/cache.mjs} +0 -0
  382. /package/dist/runtime/{core/utils → nitro/util}/wasm.d.ts +0 -0
  383. /package/dist/runtime/{core/utils → nitro/util}/wasm.mjs +0 -0
  384. /package/dist/runtime/{components → nuxt/components}/OgImage/OgImage.mjs +0 -0
  385. /package/dist/runtime/{components → nuxt/components}/OgImage/OgImageScreenshot.mjs +0 -0
  386. /package/dist/runtime/{components → nuxt/components}/Templates/Community/BrandedLogo.vue +0 -0
  387. /package/dist/runtime/{components → nuxt/components}/Templates/Community/Nuxt.vue +0 -0
  388. /package/dist/runtime/{components → nuxt/components}/Templates/Community/Pergel.vue +0 -0
  389. /package/dist/runtime/{components → nuxt/components}/Templates/Community/SimpleBlog.vue +0 -0
  390. /package/dist/runtime/{components → nuxt/components}/Templates/Community/Wave.vue +0 -0
  391. /package/dist/runtime/{components → nuxt/components}/Templates/Community/WithEmoji.vue +0 -0
  392. /package/dist/runtime/{composables → nuxt/composables}/defineOgImageComponent.mjs +0 -0
  393. /package/dist/runtime/{composables → nuxt/composables}/defineOgImageScreenshot.mjs +0 -0
@@ -1,5 +1,9 @@
1
1
  import defaultCharMap from "@iconify-json/noto/chars.json";
2
- import { emojiCache } from "../cache/emojis.mjs";
2
+ import { createStorage } from "unstorage";
3
+ import lruCacheDriver from "unstorage/drivers/lru-cache";
4
+ export const emojiCache = createStorage({
5
+ driver: lruCacheDriver({ max: 1e3 })
6
+ });
3
7
  const RE_MATCH_EMOJIS = /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
4
8
  export async function applyEmojis(ctx, island) {
5
9
  const html = island.html;
@@ -15,7 +19,7 @@ export async function applyEmojis(ctx, island) {
15
19
  if (await emojiCache.hasItem(key))
16
20
  svg = await emojiCache.getItem(key);
17
21
  if (!svg) {
18
- svg = await ctx.e.$fetch(`https://api.iconify.design/${ctx.options.emojis}/${emoji}.svg`, {
22
+ svg = await $fetch(`https://api.iconify.design/${ctx.options.emojis}/${emoji}.svg`, {
19
23
  responseType: "text"
20
24
  });
21
25
  if (svg === "404")
@@ -1,3 +1,3 @@
1
1
  import type { NuxtIslandResponse } from 'nuxt/dist/core/runtime/nitro/renderer';
2
- import type { OgImageRenderEventContext } from '../../types';
2
+ import type { OgImageRenderEventContext } from '../../../../types';
3
3
  export declare function applyInlineCss({ e }: OgImageRenderEventContext, island: NuxtIslandResponse): Promise<boolean>;
@@ -0,0 +1,41 @@
1
+ import { useCssInline } from "../instances.mjs";
2
+ import { useNitroOrigin } from "#imports";
3
+ import cssInline from "#nuxt-og-image/bindings/css-inline";
4
+ export async function applyInlineCss({ e }, island) {
5
+ let html = island.html;
6
+ if (!cssInline.__unenv__) {
7
+ let css = island.head.style.map((s) => s.innerHTML).join("\n");
8
+ const componentInlineStyles = island.head.link.filter((l) => l.href.startsWith("/_nuxt/components"));
9
+ if (process.dev) {
10
+ const linksToCss = componentInlineStyles.length ? (await Promise.all(
11
+ componentInlineStyles.map((l) => {
12
+ const url = l.href.endsWith("lang.css") ? `${l.href}&hmr=false` : l.href;
13
+ return e.$fetch(url, {
14
+ responseType: "text",
15
+ baseURL: useNitroOrigin(e)
16
+ }).then((res) => {
17
+ if (res.includes("__vite__css"))
18
+ return res.match(/__vite__css = "([^"]+)"/)?.[1];
19
+ return res.trim().split("\n").filter((l2) => !l2.startsWith("//")).join("\n").trim();
20
+ }).catch(() => {
21
+ return "";
22
+ });
23
+ })
24
+ )).join("\n") : "";
25
+ css = `${linksToCss}${css}`;
26
+ }
27
+ if (!css.trim().length)
28
+ return false;
29
+ const cssInline2 = await useCssInline();
30
+ html = cssInline2.inline(island.html, {
31
+ loadRemoteStylesheets: false,
32
+ extraCss: css
33
+ });
34
+ const classes = css.match(/\.([a-zA-Z0-9-_]+)/g)?.map((c) => c.replace(".", ""));
35
+ if (classes)
36
+ html = html.replace(new RegExp(`class="(${classes.join("|")})"`, "g"), "");
37
+ island.html = html;
38
+ return true;
39
+ }
40
+ return false;
41
+ }
@@ -1,28 +1,30 @@
1
1
  import { html as convertHtmlToSatori } from "satori-html";
2
- import { fetchIsland } from "../../html/fetchIsland.mjs";
3
- import { applyInlineCss } from "../../html/applyInlineCss.mjs";
4
- import { applyEmojis } from "../../html/applyEmojis.mjs";
2
+ import { fetchIsland } from "../../util/kit.mjs";
3
+ import { htmlDecodeQuotes } from "../../util/encoding.mjs";
4
+ import { applyInlineCss } from "./transforms/inlineCss.mjs";
5
+ import { applyEmojis } from "./transforms/emojis.mjs";
5
6
  import { walkSatoriTree } from "./utils.mjs";
6
7
  import unocss from "./plugins/unocss.mjs";
7
8
  import emojis from "./plugins/emojis.mjs";
8
- import twClasses from "./plugins/twClasses.mjs";
9
+ import classes from "./plugins/classes.mjs";
9
10
  import imageSrc from "./plugins/imageSrc.mjs";
10
11
  import flex from "./plugins/flex.mjs";
11
12
  import encoding from "./plugins/encoding.mjs";
12
13
  export async function createVNodes(ctx) {
13
14
  let html = ctx.options.html;
14
15
  if (!html) {
15
- const island = await fetchIsland(ctx);
16
+ const island = await fetchIsland(ctx.e, ctx.options.component, typeof ctx.options.props !== "undefined" ? ctx.options.props : ctx.options);
17
+ island.html = htmlDecodeQuotes(island.html);
16
18
  await applyInlineCss(ctx, island);
17
19
  await applyEmojis(ctx, island);
18
20
  html = island.html;
19
21
  }
20
- const template = `<div data-v-inspector-ignore="true" style="position: relative; display: flex; margin: 0 auto; width: ${ctx.options.width}px; height: ${ctx.options.height}px; overflow: hidden;">${html}</div>`;
22
+ const template = `<div style="position: relative; display: flex; margin: 0 auto; width: ${ctx.options.width}px; height: ${ctx.options.height}px; overflow: hidden;">${html}</div>`;
21
23
  const satoriTree = convertHtmlToSatori(template);
22
24
  await walkSatoriTree(ctx, satoriTree, [
23
25
  unocss,
24
26
  emojis,
25
- twClasses,
27
+ classes,
26
28
  imageSrc,
27
29
  flex,
28
30
  encoding
@@ -0,0 +1,2 @@
1
+ import type { OgImageRenderEventContext } from '../../../types';
2
+ export declare function html(ctx: OgImageRenderEventContext): Promise<string>;
@@ -1,21 +1,29 @@
1
1
  import { createHeadCore } from "@unhead/vue";
2
2
  import { renderSSRHead } from "@unhead/ssr";
3
- import { useOgImageRuntimeConfig } from "../../utils.mjs";
4
- import { applyEmojis } from "./applyEmojis.mjs";
5
- import { fetchIsland } from "./fetchIsland.mjs";
3
+ import { createError } from "h3";
4
+ import { normaliseFontInput, useOgImageRuntimeConfig } from "../../../shared.mjs";
5
+ import { fetchIsland } from "../../util/kit.mjs";
6
+ import { applyEmojis } from "../satori/transforms/emojis.mjs";
6
7
  import { theme } from "#nuxt-og-image/unocss-config.mjs";
7
- export async function devIframeTemplate(ctx) {
8
+ export async function html(ctx) {
8
9
  const { options } = ctx;
9
10
  const { fonts } = useOgImageRuntimeConfig();
10
- const island = await fetchIsland(ctx);
11
+ if (!options.component) {
12
+ throw createError({
13
+ statusCode: 500,
14
+ statusMessage: `[Nuxt OG Image] Rendering an invalid component. Received options: ${JSON.stringify(options)}.`
15
+ });
16
+ }
17
+ const island = await fetchIsland(ctx.e, ctx.options.component, typeof ctx.options.props !== "undefined" ? ctx.options.props : ctx.options);
11
18
  const head = createHeadCore();
12
19
  head.push(island.head);
13
20
  let defaultFontFamily = "sans-serif";
14
- const firstFont = fonts[0];
21
+ const normalisedFonts = normaliseFontInput([...options.fonts || [], ...fonts]);
22
+ const firstFont = normalisedFonts[0];
15
23
  if (firstFont)
16
24
  defaultFontFamily = firstFont.name;
17
25
  await applyEmojis(ctx, island);
18
- let html = island.html;
26
+ let html2 = island.html;
19
27
  const googleFonts = {};
20
28
  fonts.filter((font) => !font.path).forEach((font) => {
21
29
  if (!googleFonts[font.name])
@@ -98,11 +106,11 @@ svg[data-emoji] {
98
106
  })
99
107
  ]
100
108
  });
101
- html = html.replaceAll(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "");
109
+ html2 = html2.replaceAll(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "");
102
110
  const headChunk = await renderSSRHead(head);
103
111
  return `<!DOCTYPE html>
104
112
  <html ${headChunk.htmlAttrs}>
105
113
  <head>${headChunk.headTags}</head>
106
- <body ${headChunk.bodyAttrs}>${headChunk.bodyTagsOpen}<div data-v-inspector-ignore="true" style="position: relative; display: flex; margin: 0 auto; width: ${options.width}px; height: ${options.height}px; overflow: hidden;">${html}</div>${headChunk.bodyTags}</body>
114
+ <body ${headChunk.bodyAttrs}>${headChunk.bodyTagsOpen}<div data-v-inspector-ignore="true" style="position: relative; display: flex; margin: 0 auto; width: ${options.width}px; height: ${options.height}px; overflow: hidden;">${html2}</div>${headChunk.bodyTags}</body>
107
115
  </html>`;
108
116
  }
@@ -1,15 +1,18 @@
1
1
  import { defineNitroPlugin } from "nitropack/dist/runtime/plugin";
2
2
  import { defu } from "defu";
3
- import { getOgImagePath, useOgImageRuntimeConfig } from "../../utils.mjs";
3
+ import { getOgImagePath, useOgImageRuntimeConfig } from "../../shared.mjs";
4
4
  export default defineNitroPlugin((nitroApp) => {
5
+ const { isNuxtContentDocumentDriven, defaults } = useOgImageRuntimeConfig();
5
6
  nitroApp.hooks.hook("content:file:afterParse", async (content) => {
6
7
  if (content._draft || content._extension !== "md" || content._partial || content.indexable === false || content.index === false)
7
8
  return;
8
- if (content.path && content.ogImage) {
9
+ let path = content.path;
10
+ if (isNuxtContentDocumentDriven)
11
+ path = content._path;
12
+ if (path && content.ogImage) {
9
13
  const ogImageConfig = typeof content.ogImage === "object" ? content.ogImage : {};
10
- const { defaults } = useOgImageRuntimeConfig();
11
14
  const optionsWithDefault = defu(ogImageConfig, defaults);
12
- const src = getOgImagePath(content.path, optionsWithDefault);
15
+ const src = getOgImagePath(path, optionsWithDefault);
13
16
  const payload = {
14
17
  title: content.title,
15
18
  excerpt: content.description || content.excerpt,
@@ -1,2 +1,2 @@
1
- declare const _default: import("nitropack").NitroAppPlugin;
1
+ declare const _default: import("nitropack/dist/runtime/plugin").NitroAppPlugin;
2
2
  export default _default;
@@ -1,12 +1,9 @@
1
- import { parseURL, withoutBase } from "ufo";
1
+ import { parseURL } from "ufo";
2
2
  import { defineNitroPlugin } from "nitropack/dist/runtime/plugin";
3
- import { createRouter as createRadixRouter, toRouteMatcher } from "radix3";
4
- import { defu } from "defu";
5
- import { extractAndNormaliseOgImageOptions } from "../../core/options/extract.mjs";
6
- import { prerenderOptionsCache } from "../../core/cache/prerender.mjs";
7
- import { isInternalRoute } from "../../utils.pure.mjs";
8
- import { resolvePathCacheKey } from "../utils.mjs";
9
- import { useRuntimeConfig } from "#internal/nitro";
3
+ import { extractAndNormaliseOgImageOptions, resolvePathCacheKey } from "../og-image/context.mjs";
4
+ import { prerenderOptionsCache } from "../og-image/cache.mjs";
5
+ import { isInternalRoute } from "../../pure.mjs";
6
+ import { createNitroRouteRuleMatcher } from "../util/kit.mjs";
10
7
  export default defineNitroPlugin(async (nitro) => {
11
8
  if (!import.meta.prerender)
12
9
  return;
@@ -15,14 +12,9 @@ export default defineNitroPlugin(async (nitro) => {
15
12
  const path = parseURL(ctx.event.path).pathname;
16
13
  if (isInternalRoute(path))
17
14
  return;
18
- const runtimeConfig = useRuntimeConfig();
19
- const _routeRulesMatcher = toRouteMatcher(
20
- createRadixRouter({ routes: runtimeConfig.nitro?.routeRules })
21
- );
22
- const routeRules = defu({}, ..._routeRulesMatcher.matchAll(
23
- withoutBase(path.split("?")[0], runtimeConfig.app.baseURL)
24
- ).reverse()).ogImage;
25
- if (routeRules === false)
15
+ const routeRuleMatcher = createNitroRouteRuleMatcher();
16
+ const routeRules = routeRuleMatcher(path);
17
+ if (routeRules.ogImage === false)
26
18
  return;
27
19
  const options = extractAndNormaliseOgImageOptions([
28
20
  head.join("\n"),
@@ -1,10 +1,6 @@
1
1
  declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<{
2
- siteConfigUrl: {
3
- value: any;
4
- source: any;
5
- };
6
2
  componentNames: any;
7
- runtimeConfig: import("../../../types").OgImageRuntimeConfig;
3
+ runtimeConfig: import("../../types").OgImageRuntimeConfig;
8
4
  compatibility: any;
9
5
  }>>;
10
6
  export default _default;
@@ -1,17 +1,11 @@
1
1
  import { defineEventHandler, setHeader } from "h3";
2
- import { useOgImageRuntimeConfig } from "../../../utils.mjs";
3
- import { useSiteConfig } from "#imports";
2
+ import { useOgImageRuntimeConfig } from "../../shared.mjs";
4
3
  import compatibility from "#nuxt-og-image/compatibility";
5
4
  import { componentNames } from "#nuxt-og-image/component-names.mjs";
6
5
  export default defineEventHandler(async (e) => {
7
6
  setHeader(e, "Content-Type", "application/json");
8
7
  const runtimeConfig = useOgImageRuntimeConfig();
9
- const siteConfig = await useSiteConfig(e, { debug: true });
10
8
  return {
11
- siteConfigUrl: {
12
- value: siteConfig.url,
13
- source: siteConfig._context.url || "unknown"
14
- },
15
9
  componentNames,
16
10
  runtimeConfig,
17
11
  compatibility
@@ -1,10 +1,29 @@
1
- import { createError, defineEventHandler, proxyRequest, sendRedirect } from "h3";
1
+ import { createError, defineEventHandler, getQuery, proxyRequest, sendRedirect } from "h3";
2
2
  import { parseURL } from "ufo";
3
+ import { normaliseFontInput, useOgImageRuntimeConfig } from "../../shared.mjs";
3
4
  export default defineEventHandler(async (e) => {
4
5
  const path = parseURL(e.path).pathname;
5
- const [name, weight] = path.split("/font/")[1].split(".")[0].split("/");
6
- if (!name || !weight)
6
+ const [_name, _weight] = path.split("/font/")[1].split(".")[0].split("/");
7
+ if (!_name || !_weight)
7
8
  return "Provide a font name and weight";
9
+ const name = _name[0].toUpperCase() + _name.slice(1);
10
+ const weight = Math.round(Number.parseInt(_weight) / 100) * 100;
11
+ const config = useOgImageRuntimeConfig();
12
+ const normalisedFonts = normaliseFontInput(config.fonts);
13
+ let font;
14
+ if (typeof getQuery(e).font === "string")
15
+ font = JSON.parse(getQuery(e).font);
16
+ if (!font) {
17
+ font = normalisedFonts.find((font2) => {
18
+ return font2.name.toLowerCase() === name.toLowerCase() && weight === Number(font2.weight);
19
+ });
20
+ }
21
+ if (!font) {
22
+ return createError({
23
+ statusCode: 404,
24
+ statusMessage: `[Nuxt OG Image] Font ${name}:${weight} not found`
25
+ });
26
+ }
8
27
  const css = await globalThis.$fetch(`https://fonts.googleapis.com/css2?family=${name}:wght@${weight}`, {
9
28
  headers: {
10
29
  // Make sure it returns TTF.
@@ -1,13 +1,10 @@
1
1
  import { H3Error, createError, defineEventHandler, getQuery, setHeader } from "h3";
2
- import { resolveRendererContext } from "../../../core/utils/resolveRendererContext.mjs";
3
- import { fetchIsland } from "../../../core/html/fetchIsland.mjs";
4
- import { devIframeTemplate } from "../../../core/html/devIframeTemplate.mjs";
5
- import { applyInlineCss } from "../../../core/html/applyInlineCss.mjs";
6
- import { useOgImageBufferCache } from "../../../cache.mjs";
7
- import { useOgImageRuntimeConfig } from "../../../utils.mjs";
8
- import { useSiteConfig } from "#imports";
2
+ import { useOgImageBufferCache } from "../util/cache.mjs";
3
+ import { useOgImageRuntimeConfig } from "../../shared.mjs";
4
+ import { resolveContext } from "../og-image/context.mjs";
5
+ import { html } from "../og-image/templates/html.mjs";
9
6
  export default defineEventHandler(async (e) => {
10
- const ctx = await resolveRendererContext(e);
7
+ const ctx = await resolveContext(e);
11
8
  if (ctx instanceof H3Error)
12
9
  return ctx;
13
10
  const { isDebugJsonPayload, extension, options, renderer } = ctx;
@@ -19,21 +16,21 @@ export default defineEventHandler(async (e) => {
19
16
  compatibilityHints.push("Converting PNGs to JPEGs requires Sharp which only runs on Node based systems.");
20
17
  if (options.renderer === "chromium")
21
18
  compatibilityHints.push("Using Chromium to generate images is only supported in Node based environments. It's recommended to only use this if you're prerendering");
22
- if (options.component !== "PageScreenshot" && await applyInlineCss(ctx, await fetchIsland(ctx)))
23
- compatibilityHints.push("Inlining CSS is only supported in Node based environments.");
24
19
  setHeader(e, "Content-Type", "application/json");
25
20
  return {
21
+ siteConfig: {
22
+ url: e.context.siteConfig.get().url
23
+ },
26
24
  compatibilityHints,
27
25
  cacheKey: ctx.key,
28
26
  options: ctx.options,
29
- siteConfig: useSiteConfig(e),
30
27
  ...options.renderer === "satori" ? await renderer.debug(ctx) : void 0
31
28
  };
32
29
  }
33
30
  switch (extension) {
34
31
  case "html":
35
32
  setHeader(e, "Content-Type", `text/html`);
36
- return devIframeTemplate(ctx);
33
+ return html(ctx);
37
34
  case "svg":
38
35
  if (!debug && !import.meta.dev) {
39
36
  return createError({
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "../../../.nuxt/tsconfig.server.json"
3
+ }
@@ -1,5 +1,5 @@
1
1
  import { type H3Error } from 'h3';
2
- import type { OgImageRenderEventContext } from './types';
2
+ import type { OgImageRenderEventContext } from '../../types';
3
3
  export declare function useOgImageBufferCache(ctx: OgImageRenderEventContext, options: {
4
4
  baseCacheKey: string | false;
5
5
  cacheMaxAgeSeconds?: number;
@@ -0,0 +1,3 @@
1
+ export declare function htmlDecodeQuotes(html: string): string;
2
+ export declare function decodeHtml(html: string): string;
3
+ export declare function decodeObjectHtmlEntities(obj: Record<string, string | any>): Record<string, any>;
@@ -0,0 +1,15 @@
1
+ export function htmlDecodeQuotes(html) {
2
+ return html.replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&#x27;/g, "'");
3
+ }
4
+ export function decodeHtml(html) {
5
+ return html.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&").replace(/&cent;/g, "\xA2").replace(/&pound;/g, "\xA3").replace(/&yen;/g, "\xA5").replace(/&euro;/g, "\u20AC").replace(/&copy;/g, "\xA9").replace(/&reg;/g, "\xAE").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&#x27;/g, "'").replace(/&#x2F;/g, "/").replace(/&#([0-9]+);/g, (full, int) => {
6
+ return String.fromCharCode(Number.parseInt(int));
7
+ });
8
+ }
9
+ export function decodeObjectHtmlEntities(obj) {
10
+ Object.entries(obj).forEach(([key, value]) => {
11
+ if (typeof value === "string")
12
+ obj[key] = decodeHtml(value);
13
+ });
14
+ return obj;
15
+ }
@@ -0,0 +1,6 @@
1
+ import type { NitroRouteRules } from 'nitropack';
2
+ import type { H3Event } from 'h3';
3
+ import type { NuxtIslandResponse } from 'nuxt/dist/core/runtime/nitro/renderer';
4
+ export declare function fetchIsland(e: H3Event, component: string, props: Record<string, any>): Promise<NuxtIslandResponse>;
5
+ export declare function withoutQuery(path: string): string;
6
+ export declare function createNitroRouteRuleMatcher(): ((path: string) => NitroRouteRules);
@@ -0,0 +1,32 @@
1
+ import { createRouter as createRadixRouter, toRouteMatcher } from "radix3";
2
+ import { defu } from "defu";
3
+ import { withoutBase, withoutTrailingSlash } from "ufo";
4
+ import { hash } from "ohash";
5
+ import { useRuntimeConfig } from "#imports";
6
+ export function fetchIsland(e, component, props) {
7
+ const hashId = hash([component, props]);
8
+ return e.$fetch(`/__nuxt_island/${component}_${hashId}.json`, {
9
+ params: {
10
+ props: JSON.stringify(props)
11
+ }
12
+ });
13
+ }
14
+ export function withoutQuery(path) {
15
+ return path.split("?")[0];
16
+ }
17
+ export function createNitroRouteRuleMatcher() {
18
+ const { nitro, app } = useRuntimeConfig();
19
+ const _routeRulesMatcher = toRouteMatcher(
20
+ createRadixRouter({
21
+ routes: Object.fromEntries(
22
+ Object.entries(nitro?.routeRules || {}).map(([path, rules]) => [withoutTrailingSlash(path), rules])
23
+ )
24
+ })
25
+ );
26
+ return (path) => {
27
+ return defu({}, ..._routeRulesMatcher.matchAll(
28
+ // radix3 does not support trailing slashes
29
+ withoutBase(withoutTrailingSlash(withoutQuery(path)), app.baseURL)
30
+ ).reverse());
31
+ };
32
+ }
@@ -1,5 +1,5 @@
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">>, {
1
+ import type { OgImageOptions } from '../../../types';
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
- 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>, {
1
+ import type { OgImagePageScreenshotOptions } from '../../../types';
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;
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { computed, defineComponent, h, resolveComponent } from 'vue'
7
- import { useOgImageRuntimeConfig } from '../../../utils'
7
+ import { useOgImageRuntimeConfig } from '../../../../shared'
8
8
  import { useSiteConfig } from '#imports'
9
9
 
10
10
  // convert to typescript props
@@ -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,2 +1,2 @@
1
- import type { DefineOgImageInput } from '../types';
1
+ import type { DefineOgImageInput } from '../../types';
2
2
  export declare function defineOgImage(_options?: DefineOgImageInput): void;
@@ -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
- import { getOgImagePath, separateProps, useOgImageRuntimeConfig } from "../utils.mjs";
6
- import { createOgImageMeta, normaliseOptions } from "../nuxt/utils.mjs";
7
- import { useNuxtApp, useRequestEvent, useRoute, useRuntimeConfig } from "#imports";
3
+ import { getOgImagePath, separateProps, useOgImageRuntimeConfig } from "../../shared.mjs";
4
+ import { createOgImageMeta, normaliseOptions } from "../utils.mjs";
5
+ import { createNitroRouteRuleMatcher } from "../../nitro/util/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();
@@ -1,3 +1,3 @@
1
- import type { ExtractComponentProps, OgImageOptions } from '../types';
1
+ import type { ExtractComponentProps, OgImageOptions } from '../../types';
2
2
  import type { OgImageComponents } from '#nuxt-og-image/components';
3
3
  export declare function defineOgImageComponent<T extends keyof OgImageComponents>(component: T, props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, options?: OgImageOptions): void;
@@ -1,2 +1,2 @@
1
- import type { OgImagePageScreenshotOptions } from '../types';
1
+ import type { OgImagePageScreenshotOptions } from '../../types';
2
2
  export declare function defineOgImageScreenshot(options?: OgImagePageScreenshotOptions): any;
File without changes
@@ -0,0 +1,6 @@
1
+ export function defineOgImage(_options = {}) {
2
+ }
3
+ export function defineOgImageComponent(component, props = {}, options = {}) {
4
+ }
5
+ export function defineOgImageScreenshot(options = {}) {
6
+ }
@@ -1,7 +1,7 @@
1
1
  import { parseURL } from "ufo";
2
2
  import { toValue } from "vue";
3
3
  import { defu } from "defu";
4
- import { isInternalRoute, separateProps } from "../../utils.pure.mjs";
4
+ import { isInternalRoute, separateProps } from "../../pure.mjs";
5
5
  import { defineNuxtPlugin, useRequestEvent, withSiteUrl } from "#imports";
6
6
  export default defineNuxtPlugin({
7
7
  setup(nuxtApp) {
@@ -15,11 +15,18 @@ export default defineNuxtPlugin({
15
15
  key: "nuxt-og-image:overrides-and-canonical-urls",
16
16
  hooks: {
17
17
  "tags:resolve": async (ctx2) => {
18
+ const hasPrimaryPayload = ctx2.tags.some((tag) => tag.tag === "script" && tag.props.id === "nuxt-og-image-options");
18
19
  let overrides;
19
20
  for (const tag of ctx2.tags) {
20
21
  if (tag.tag === "script" && tag.props.id === "nuxt-og-image-overrides") {
21
- overrides = separateProps(JSON.parse(tag.innerHTML || "{}"));
22
- delete ctx2.tags[ctx2.tags.indexOf(tag)];
22
+ if (hasPrimaryPayload) {
23
+ overrides = separateProps(JSON.parse(tag.innerHTML || "{}"));
24
+ delete ctx2.tags[ctx2.tags.indexOf(tag)];
25
+ } else {
26
+ tag.props.id = "nuxt-og-image-options";
27
+ tag.innerHTML = JSON.stringify(separateProps(JSON.parse(tag.innerHTML || "{}")));
28
+ tag._d = "script:id:nuxt-og-image-options";
29
+ }
23
30
  break;
24
31
  }
25
32
  }
@@ -1,7 +1,7 @@
1
1
  import { defu } from "defu";
2
2
  import { parseURL, withoutBase } from "ufo";
3
3
  import { createRouter as createRadixRouter, toRouteMatcher } from "radix3";
4
- import { getOgImagePath, isInternalRoute, useOgImageRuntimeConfig } from "../../utils.mjs";
4
+ import { getOgImagePath, isInternalRoute, useOgImageRuntimeConfig } from "../../shared.mjs";
5
5
  import { createOgImageMeta, normaliseOptions } from "../utils.mjs";
6
6
  import { defineNuxtPlugin, useRequestEvent } from "#imports";
7
7
  export default defineNuxtPlugin((nuxtApp) => {
@@ -1,3 +1,4 @@
1
+ import type { NuxtSSRContext } from 'nuxt/app';
1
2
  import type { DefineOgImageInput, OgImageOptions, OgImagePrebuilt } from '../types';
2
- export declare function createOgImageMeta(src: string | null, input: OgImageOptions | OgImagePrebuilt, resolvedOptions: OgImageOptions, ssrContext: Record<string, any>): void;
3
+ export declare function createOgImageMeta(src: string | null, input: OgImageOptions | OgImagePrebuilt, resolvedOptions: OgImageOptions, ssrContext: NuxtSSRContext): void;
3
4
  export declare function normaliseOptions(_options: DefineOgImageInput): OgImageOptions | OgImagePrebuilt;