nuxt-og-image 3.0.0-rc.5 → 3.0.0-rc.51

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