nuxt-og-image 3.0.0-rc.9 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/README.md +8 -24
  2. package/dist/client/200.html +274 -15
  3. package/dist/client/404.html +274 -15
  4. package/dist/client/_nuxt/0OCEc-sb.js +1 -0
  5. package/dist/client/_nuxt/16nqZaIT.js +1 -0
  6. package/dist/client/_nuxt/3Ts0ZrM4.js +4 -0
  7. package/dist/client/_nuxt/44JOqR_V.js +1 -0
  8. package/dist/client/_nuxt/4FkZXfg1.js +3 -0
  9. package/dist/client/_nuxt/4WleZr1P.js +1 -0
  10. package/dist/client/_nuxt/5HixFuyr.js +1 -0
  11. package/dist/client/_nuxt/5bRVBCrv.js +1 -0
  12. package/dist/client/_nuxt/7LPQ6a13.js +2 -0
  13. package/dist/client/_nuxt/8WiSp-0_.js +1 -0
  14. package/dist/client/_nuxt/9CfBjzQa.js +1 -0
  15. package/dist/client/_nuxt/B-9EjyZr.js +1 -0
  16. package/dist/client/_nuxt/B-a2BbyY.js +1 -0
  17. package/dist/client/_nuxt/B0LoMq2b.js +1 -0
  18. package/dist/client/_nuxt/B1ejXUAS.js +1 -0
  19. package/dist/client/_nuxt/B2DkETJQ.js +1 -0
  20. package/dist/client/_nuxt/B3LRAdDP.js +1 -0
  21. package/dist/client/_nuxt/B3a86pAO.js +1 -0
  22. package/dist/client/_nuxt/B5La0Eyp.js +1 -0
  23. package/dist/client/_nuxt/B6E6ObS_.js +8 -0
  24. package/dist/client/_nuxt/B7-FEXAT.js +1 -0
  25. package/dist/client/_nuxt/B9HI_aQy.js +1 -0
  26. package/dist/client/_nuxt/B9vFkdfw.js +1 -0
  27. package/dist/client/_nuxt/BAGvEKUB.js +1 -0
  28. package/dist/client/_nuxt/BAp2aEeE.js +1 -0
  29. package/dist/client/_nuxt/BB9S_66N.js +1 -0
  30. package/dist/client/_nuxt/BBDuFDsq.js +1 -0
  31. package/dist/client/_nuxt/BC7ivatP.js +1 -0
  32. package/dist/client/_nuxt/BCOu96sC.js +1 -0
  33. package/dist/client/_nuxt/BD3t3nJY.js +1 -0
  34. package/dist/client/_nuxt/BDJ7po1j.js +1 -0
  35. package/dist/client/_nuxt/BGk6HrHT.js +1 -0
  36. package/dist/client/_nuxt/BHSTd-7M.js +1 -0
  37. package/dist/client/_nuxt/BITGhEdf.js +1 -0
  38. package/dist/client/_nuxt/BKFBoKT4.js +1 -0
  39. package/dist/client/_nuxt/BKNiEhql.js +1 -0
  40. package/dist/client/_nuxt/BLmvGqlk.js +1 -0
  41. package/dist/client/_nuxt/BMRpS3Xo.js +1 -0
  42. package/dist/client/_nuxt/BMkdSFOr.js +1 -0
  43. package/dist/client/_nuxt/BNgG76gt.js +1 -0
  44. package/dist/client/_nuxt/BNofkYSZ.js +165 -0
  45. package/dist/client/_nuxt/BOp3HRET.js +1 -0
  46. package/dist/client/_nuxt/BPhJoBd6.js +1 -0
  47. package/dist/client/_nuxt/BQnHL-cn.js +1 -0
  48. package/dist/client/_nuxt/BS9sT-GQ.js +1 -0
  49. package/dist/client/_nuxt/BSB_bK09.js +1 -0
  50. package/dist/client/_nuxt/BTtaZsq5.js +1 -0
  51. package/dist/client/_nuxt/BU83OF-G.js +1 -0
  52. package/dist/client/_nuxt/BUeIC4cT.js +1 -0
  53. package/dist/client/_nuxt/BXF7Vm5l.js +1 -0
  54. package/dist/client/_nuxt/BXP-NDAE.js +1 -0
  55. package/dist/client/_nuxt/BXUVD3TH.js +1 -0
  56. package/dist/client/_nuxt/BXWtGw2n.js +6 -0
  57. package/dist/client/_nuxt/BYLuaE_S.js +3 -0
  58. package/dist/client/_nuxt/BYelj_cE.js +1 -0
  59. package/dist/client/_nuxt/B_Sdu6N9.js +1 -0
  60. package/dist/client/_nuxt/BaWyeHV_.js +1 -0
  61. package/dist/client/_nuxt/Ba_2pva2.js +1 -0
  62. package/dist/client/_nuxt/BbJj1K1w.js +1 -0
  63. package/dist/client/_nuxt/BeX7BQ1y.js +1 -0
  64. package/dist/client/_nuxt/BeocmOPF.js +1 -0
  65. package/dist/client/_nuxt/BfVRrWqI.js +1 -0
  66. package/dist/client/_nuxt/BgEvnnZj.js +1 -0
  67. package/dist/client/_nuxt/Bgrlo6mM.js +1 -0
  68. package/dist/client/_nuxt/BiVAY1KT.js +1 -0
  69. package/dist/client/_nuxt/Bl6w8nq6.js +29 -0
  70. package/dist/client/_nuxt/BmUjtHPt.js +1 -0
  71. package/dist/client/_nuxt/Bn5gmY5k.js +1 -0
  72. package/dist/client/_nuxt/BnYPtiAB.js +1 -0
  73. package/dist/client/_nuxt/BotTw_1M.js +1 -0
  74. package/dist/client/_nuxt/BpDWT_aG.js +1 -0
  75. package/dist/client/_nuxt/BpqPLH6b.js +1 -0
  76. package/dist/client/_nuxt/Br4herk8.js +1 -0
  77. package/dist/client/_nuxt/Brmco9EZ.js +2 -0
  78. package/dist/client/_nuxt/Bs9WCFOo.js +1 -0
  79. package/dist/client/_nuxt/BsvsQ1iS.js +1 -0
  80. package/dist/client/_nuxt/BtPWTO6-.js +1 -0
  81. package/dist/client/_nuxt/BuqjW-Uc.js +1 -0
  82. package/dist/client/_nuxt/BvCdDh2R.js +1 -0
  83. package/dist/client/_nuxt/BwUg_Rem.js +1 -0
  84. package/dist/client/_nuxt/Bxuka25Y.js +1 -0
  85. package/dist/client/_nuxt/BxwAa5i0.js +1 -0
  86. package/dist/client/_nuxt/BxwkrKyP.js +3 -0
  87. package/dist/client/_nuxt/ByN1NmdT.js +11 -0
  88. package/dist/client/_nuxt/C2Z2wNnw.js +1 -0
  89. package/dist/client/_nuxt/C3wf4cjV.js +27 -0
  90. package/dist/client/_nuxt/C5J_9lw5.js +1 -0
  91. package/dist/client/_nuxt/C6doOGgB.js +1 -0
  92. package/dist/client/_nuxt/C7n-thn-.js +1 -0
  93. package/dist/client/_nuxt/C7oZ9nno.js +1 -0
  94. package/dist/client/_nuxt/C7xspq5a.js +1 -0
  95. package/dist/client/_nuxt/C86elO-m.js +1 -0
  96. package/dist/client/_nuxt/C8DXlOXe.js +1 -0
  97. package/dist/client/_nuxt/C9CNr0dZ.js +1 -0
  98. package/dist/client/_nuxt/CA2blNRc.js +1 -0
  99. package/dist/client/_nuxt/CA9nliXM.js +1 -0
  100. package/dist/client/_nuxt/CCW61mLD.js +1 -0
  101. package/dist/client/_nuxt/CDNnVXJ3.js +1 -0
  102. package/dist/client/_nuxt/CDP-pALJ.js +1 -0
  103. package/dist/client/_nuxt/CFTaR7kf.js +1 -0
  104. package/dist/client/_nuxt/CFy8Z7mU.js +1 -0
  105. package/dist/client/_nuxt/CGmujMTu.js +1 -0
  106. package/dist/client/_nuxt/CHDuk4cg.js +1 -0
  107. package/dist/client/_nuxt/CJYoS41Z.js +1 -0
  108. package/dist/client/_nuxt/CKK8qrH7.js +3 -0
  109. package/dist/client/_nuxt/CKqhLkpw.js +1 -0
  110. package/dist/client/_nuxt/CLTURUqp.js +9 -0
  111. package/dist/client/_nuxt/CO7HdiM_.js +1 -0
  112. package/dist/client/_nuxt/CPQn-Lhb.js +1 -0
  113. package/dist/client/_nuxt/CPw9RxLe.js +1 -0
  114. package/dist/client/_nuxt/CRDKj6ck.js +1 -0
  115. package/dist/client/_nuxt/CRUEGcu5.js +1 -0
  116. package/dist/client/_nuxt/CRlnGVMD.js +1 -0
  117. package/dist/client/_nuxt/CS6sTstm.js +4 -0
  118. package/dist/client/_nuxt/CSPPpfsQ.js +1 -0
  119. package/dist/client/_nuxt/CTeQKLZv.js +1 -0
  120. package/dist/client/_nuxt/CTsPJjdJ.js +1 -0
  121. package/dist/client/_nuxt/CUNQUWO_.js +1 -0
  122. package/dist/client/_nuxt/CV5B5C80.js +1 -0
  123. package/dist/client/_nuxt/CZZ6oYdA.js +1 -0
  124. package/dist/client/_nuxt/CZkFsSlX.js +1 -0
  125. package/dist/client/_nuxt/C_g069vW.js +1 -0
  126. package/dist/client/_nuxt/C_h5G2He.js +20 -0
  127. package/dist/client/_nuxt/CaR_I2C-.js +1 -0
  128. package/dist/client/_nuxt/Cb48SAmt.js +1 -0
  129. package/dist/client/_nuxt/Cda-MJFk.js +1 -0
  130. package/dist/client/_nuxt/CeIpHJfZ.js +12 -0
  131. package/dist/client/_nuxt/CgwOUXSn.js +1 -0
  132. package/dist/client/_nuxt/ChH25C4w.js +1 -0
  133. package/dist/client/_nuxt/CidHYXz9.js +1 -0
  134. package/dist/client/_nuxt/ClPxYbPx.js +1 -0
  135. package/dist/client/_nuxt/Clj_IpB8.js +1 -0
  136. package/dist/client/_nuxt/CmN1UzhW.js +1 -0
  137. package/dist/client/_nuxt/Crs1WKlG.js +1 -0
  138. package/dist/client/_nuxt/CsTmP73Z.js +1 -0
  139. package/dist/client/_nuxt/CsW3I34-.js +1 -0
  140. package/dist/client/_nuxt/CsuMf1xJ.js +1 -0
  141. package/dist/client/_nuxt/CsyjKwr8.js +1 -0
  142. package/dist/client/_nuxt/Ctb_e1-I.js +1 -0
  143. package/dist/client/_nuxt/CvHWZNAB.js +1 -0
  144. package/dist/client/_nuxt/CxK4ekaG.js +1 -0
  145. package/dist/client/_nuxt/CyUS7F7b.js +17 -0
  146. package/dist/client/_nuxt/Cz-n9WvF.js +1 -0
  147. package/dist/client/_nuxt/Cz3ygVR-.js +1 -0
  148. package/dist/client/_nuxt/CzK8D06Z.js +1 -0
  149. package/dist/client/_nuxt/CzPA46E-.js +1 -0
  150. package/dist/client/_nuxt/D0N_qbs7.js +2 -0
  151. package/dist/client/_nuxt/D0pnavP-.js +1 -0
  152. package/dist/client/_nuxt/D3VXSfF0.js +1 -0
  153. package/dist/client/_nuxt/D46m5Xd3.js +1 -0
  154. package/dist/client/_nuxt/D4miJ1xw.js +1 -0
  155. package/dist/client/_nuxt/D5lQfeOG.js +1 -0
  156. package/dist/client/_nuxt/D6oCKXcX.js +1 -0
  157. package/dist/client/_nuxt/D71BffLY.js +1 -0
  158. package/dist/client/_nuxt/D8V69RRQ.js +1 -0
  159. package/dist/client/_nuxt/DBLgxP_1.js +2 -0
  160. package/dist/client/_nuxt/DCmDdbvy.js +1 -0
  161. package/dist/client/_nuxt/DDG_rSGg.js +8 -0
  162. package/dist/client/_nuxt/DDK5Hw8n.js +1 -0
  163. package/dist/client/_nuxt/DFHN_7lU.js +3 -0
  164. package/dist/client/_nuxt/DFaziNDp.js +1 -0
  165. package/dist/client/_nuxt/DFsxFixh.js +1 -0
  166. package/dist/client/_nuxt/DGhhRy1e.js +1 -0
  167. package/dist/client/_nuxt/DIw1DfnK.js +1 -0
  168. package/dist/client/_nuxt/DJNHLfzP.js +1 -0
  169. package/dist/client/_nuxt/DJOPMAPO.js +10 -0
  170. package/dist/client/_nuxt/DKgh9jPU.js +20 -0
  171. package/dist/client/_nuxt/DNR26wTC.js +1 -0
  172. package/dist/client/_nuxt/DO04iIl4.js +1 -0
  173. package/dist/client/_nuxt/DOOuMSMh.js +1 -0
  174. package/dist/client/_nuxt/DOqtC9FP.js +1 -0
  175. package/dist/client/_nuxt/DQ-rpzxz.js +1 -0
  176. package/dist/client/_nuxt/DRuVOcqL.js +1 -0
  177. package/dist/client/_nuxt/DSmiUmWA.js +1 -0
  178. package/dist/client/_nuxt/DSv7Jr7N.js +5 -0
  179. package/dist/client/_nuxt/DTMFIK7w.js +1 -0
  180. package/dist/client/_nuxt/DV9_Ze0W.js +1 -0
  181. package/dist/client/_nuxt/DXZpi2gR.js +1 -0
  182. package/dist/client/_nuxt/DXdsTRaC.js +1 -0
  183. package/dist/client/_nuxt/DXtfa3TF.js +1 -0
  184. package/dist/client/_nuxt/DYgwfmdY.js +1 -0
  185. package/dist/client/_nuxt/DYikCEmq.js +1 -0
  186. package/dist/client/_nuxt/DYrknm32.js +1 -0
  187. package/dist/client/_nuxt/D_lsq3cR.js +1 -0
  188. package/dist/client/_nuxt/D_nC6SfZ.js +1 -0
  189. package/dist/client/_nuxt/Dc3u8CCo.js +1 -0
  190. package/dist/client/_nuxt/DeVv6D4_.js +1 -0
  191. package/dist/client/_nuxt/Df4vQnuo.js +1 -0
  192. package/dist/client/_nuxt/Di1G_BEd.js +1 -0
  193. package/dist/client/_nuxt/DjTlIhuc.js +1 -0
  194. package/dist/client/_nuxt/Dk2kDqHs.js +1 -0
  195. package/dist/client/_nuxt/DkIL16gc.js +2 -0
  196. package/dist/client/_nuxt/DkfuXiRx.js +204 -0
  197. package/dist/client/_nuxt/DmixpzPA.js +1 -0
  198. package/dist/client/_nuxt/DnLUQrgA.js +1 -0
  199. package/dist/client/_nuxt/Dnd6U92I.js +25 -0
  200. package/dist/client/_nuxt/DofIr7ih.js +1 -0
  201. package/dist/client/_nuxt/DrUHIbQf.js +1 -0
  202. package/dist/client/_nuxt/DrhOmAGa.js +1 -0
  203. package/dist/client/_nuxt/DsO5WfEU.js +1 -0
  204. package/dist/client/_nuxt/DsclqnHy.js +4 -0
  205. package/dist/client/_nuxt/Dwk9V841.js +1 -0
  206. package/dist/client/_nuxt/DyLIn2qo.js +1 -0
  207. package/dist/client/_nuxt/DzhYcJWo.js +1 -0
  208. package/dist/client/_nuxt/Dziqk49f.js +1 -0
  209. package/dist/client/_nuxt/E5r7Moxb.js +16 -0
  210. package/dist/client/_nuxt/FJDVp-XM.js +1 -0
  211. package/dist/client/_nuxt/FMRyFT8D.js +1 -0
  212. package/dist/client/_nuxt/GACPk8cj.js +16 -0
  213. package/dist/client/_nuxt/H94RPpLS.js +1 -0
  214. package/dist/client/_nuxt/HrnDn_2Q.js +1 -0
  215. package/dist/client/_nuxt/HxmVvryO.js +1 -0
  216. package/dist/client/_nuxt/JYC31MTV.js +1 -0
  217. package/dist/client/_nuxt/Jl0QvYgb.js +1 -0
  218. package/dist/client/_nuxt/KA8c-whL.js +1 -0
  219. package/dist/client/_nuxt/KEYLhlmT.js +1 -0
  220. package/dist/client/_nuxt/KN-DOLVO.js +1 -0
  221. package/dist/client/_nuxt/Ka_J5llu.js +1 -0
  222. package/dist/client/_nuxt/KuNYkU7X.js +1 -0
  223. package/dist/client/_nuxt/MS3qTAOR.js +1 -0
  224. package/dist/client/_nuxt/N3zwmhmW.js +1 -0
  225. package/dist/client/_nuxt/O4cDyHwR.js +1 -0
  226. package/dist/client/_nuxt/OPd3ySAa.js +1 -0
  227. package/dist/client/_nuxt/Opso89zU.js +16 -0
  228. package/dist/client/_nuxt/P3XzCKkX.js +1 -0
  229. package/dist/client/_nuxt/PBlC1IT3.js +1 -0
  230. package/dist/client/_nuxt/PauOf_jS.js +1 -0
  231. package/dist/client/_nuxt/Qj0mFepl.js +14 -0
  232. package/dist/client/_nuxt/R9SNgiQ9.js +1 -0
  233. package/dist/client/_nuxt/Rc0-bMtX.js +1 -0
  234. package/dist/client/_nuxt/TYaudu4O.js +1 -0
  235. package/dist/client/_nuxt/UREJT2Bw.js +1 -0
  236. package/dist/client/_nuxt/VRCUJX8G.js +1 -0
  237. package/dist/client/_nuxt/VntNkNt1.js +1 -0
  238. package/dist/client/_nuxt/Ys9ZunwU.js +1 -0
  239. package/dist/client/_nuxt/YxQm0tCS.js +1 -0
  240. package/dist/client/_nuxt/alpzPJ78.js +1 -0
  241. package/dist/client/_nuxt/bEygH-WE.js +3 -0
  242. package/dist/client/_nuxt/builds/latest.json +1 -1
  243. package/dist/client/_nuxt/builds/meta/d105fb01-545e-4b40-b706-5b2d4c655752.json +1 -0
  244. package/dist/client/_nuxt/cW9vKj3g.js +1 -0
  245. package/dist/client/_nuxt/eJKZXzCK.js +1 -0
  246. package/dist/client/_nuxt/eQYbbmqd.js +16 -0
  247. package/dist/client/_nuxt/entry.DtsycVcr.css +1 -0
  248. package/dist/client/_nuxt/error-404.D2eZnIkK.css +1 -0
  249. package/dist/client/_nuxt/error-500.BJ-KsTwR.css +1 -0
  250. package/dist/client/_nuxt/gwSZkKbG.js +1 -0
  251. package/dist/client/_nuxt/hXH8Gyq8.js +1 -0
  252. package/dist/client/_nuxt/i0hkWYmE.js +1 -0
  253. package/dist/client/_nuxt/iSbrOpM4.js +1 -0
  254. package/dist/client/_nuxt/ithPx4uF.js +1 -0
  255. package/dist/client/_nuxt/jDrCW69G.js +1 -0
  256. package/dist/client/_nuxt/jaXbsbtS.js +1 -0
  257. package/dist/client/_nuxt/kveMaAK5.js +1 -0
  258. package/dist/client/_nuxt/lBoe4CZw.js +1 -0
  259. package/dist/client/_nuxt/lPxKsdjn.js +1 -0
  260. package/dist/client/_nuxt/lRZxrFTT.js +1 -0
  261. package/dist/client/_nuxt/mvTh5Gok.js +1 -0
  262. package/dist/client/_nuxt/pCnzZaOt.js +1 -0
  263. package/dist/client/_nuxt/qpF8edk8.js +1 -0
  264. package/dist/client/_nuxt/qvnQm5y7.js +1 -0
  265. package/dist/client/_nuxt/qwoaayiL.js +1 -0
  266. package/dist/client/_nuxt/qxoleWdb.js +1 -0
  267. package/dist/client/_nuxt/rS0jd3Ly.js +1 -0
  268. package/dist/client/_nuxt/sMI-pExk.js +1 -0
  269. package/dist/client/_nuxt/t1S7pxBA.js +1 -0
  270. package/dist/client/_nuxt/t6MJYFCU.js +5 -0
  271. package/dist/client/_nuxt/tEd5xQ4M.js +1 -0
  272. package/dist/client/_nuxt/xGgVA17b.js +1 -0
  273. package/dist/client/_nuxt/xPNGhBYe.js +1 -0
  274. package/dist/client/_nuxt/xuIuMB9j.js +1 -0
  275. package/dist/client/_nuxt/yvfKceIB.js +1 -0
  276. package/dist/client/_nuxt/z5DqfkHR.js +1 -0
  277. package/dist/client/index.html +274 -15
  278. package/dist/module.d.mts +23 -108
  279. package/dist/module.d.ts +23 -108
  280. package/dist/module.json +6 -2
  281. package/dist/module.mjs +426 -222
  282. package/dist/runtime/assets/Inter-400.ttf.base64 +1 -0
  283. package/dist/runtime/assets/Inter-700.ttf.base64 +1 -0
  284. package/dist/runtime/nitro/og-image/bindings/chromium/chrome-launcher.js +9 -0
  285. package/dist/runtime/nitro/og-image/bindings/chromium/on-demand.d.ts +2 -0
  286. package/dist/runtime/nitro/og-image/bindings/chromium/on-demand.js +35 -0
  287. package/dist/runtime/nitro/og-image/bindings/chromium/playwright.d.ts +2 -0
  288. package/dist/runtime/nitro/og-image/bindings/chromium/playwright.js +6 -0
  289. package/dist/runtime/nitro/og-image/bindings/css-inline/node.d.ts +8 -0
  290. package/dist/runtime/nitro/og-image/bindings/css-inline/node.js +7 -0
  291. package/dist/runtime/nitro/og-image/bindings/css-inline/wasm-fs.d.ts +7 -0
  292. package/dist/runtime/nitro/og-image/bindings/css-inline/wasm-fs.js +8 -0
  293. package/dist/runtime/nitro/og-image/bindings/css-inline/wasm.d.ts +7 -0
  294. package/dist/runtime/nitro/og-image/bindings/css-inline/wasm.js +7 -0
  295. package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm-fs.d.ts +1 -1
  296. package/dist/runtime/{core/bindings/resvg/wasm-fs.mjs → nitro/og-image/bindings/resvg/wasm-fs.js} +1 -1
  297. package/dist/runtime/{core → nitro/og-image}/bindings/resvg/wasm.d.ts +1 -1
  298. package/dist/runtime/nitro/og-image/bindings/resvg/wasm.js +5 -0
  299. package/dist/runtime/{core/bindings/satori/wasm-fs.mjs → nitro/og-image/bindings/satori/wasm-fs.js} +1 -1
  300. package/dist/runtime/{core/bindings/satori/wasm.mjs → nitro/og-image/bindings/satori/wasm.js} +2 -3
  301. package/dist/runtime/nitro/og-image/cache/lru.d.ts +9 -0
  302. package/dist/runtime/nitro/og-image/cache/lru.js +15 -0
  303. package/dist/runtime/nitro/og-image/cache/mock.d.ts +9 -0
  304. package/dist/runtime/nitro/og-image/cache/mock.js +9 -0
  305. package/dist/runtime/{core/renderers/chromium/index.d.ts → nitro/og-image/chromium/renderer.d.ts} +1 -1
  306. package/dist/runtime/{core/renderers/chromium/index.mjs → nitro/og-image/chromium/renderer.js} +2 -2
  307. package/dist/runtime/{core/renderers → nitro/og-image}/chromium/screenshot.d.ts +1 -2
  308. package/dist/runtime/{core/renderers/chromium/screenshot.mjs → nitro/og-image/chromium/screenshot.js} +2 -2
  309. package/dist/runtime/nitro/og-image/context.d.ts +5 -0
  310. package/dist/runtime/nitro/og-image/context.js +185 -0
  311. package/dist/runtime/nitro/og-image/instances.d.ts +2 -0
  312. package/dist/runtime/nitro/og-image/instances.js +10 -0
  313. package/dist/runtime/nitro/og-image/satori/font.d.ts +3 -0
  314. package/dist/runtime/nitro/og-image/satori/font.js +39 -0
  315. package/dist/runtime/{core/renderers → nitro/og-image}/satori/instances.d.ts +3 -4
  316. package/dist/runtime/{core/renderers/satori/instances.mjs → nitro/og-image/satori/instances.js} +2 -11
  317. package/dist/runtime/nitro/og-image/satori/plugins/classes.js +17 -0
  318. package/dist/runtime/{core/renderers/satori/plugins/emojis.mjs → nitro/og-image/satori/plugins/emojis.js} +2 -2
  319. package/dist/runtime/nitro/og-image/satori/plugins/encoding.js +17 -0
  320. package/dist/runtime/nitro/og-image/satori/plugins/flex.js +35 -0
  321. package/dist/runtime/nitro/og-image/satori/plugins/imageSrc.js +89 -0
  322. package/dist/runtime/{core/renderers/satori/plugins/unocss.mjs → nitro/og-image/satori/plugins/unocss.js} +15 -3
  323. package/dist/runtime/{core/renderers/satori/index.d.ts → nitro/og-image/satori/renderer.d.ts} +1 -1
  324. package/dist/runtime/{core/renderers/satori/index.mjs → nitro/og-image/satori/renderer.js} +26 -17
  325. package/dist/runtime/{core/html/applyEmojis.d.ts → nitro/og-image/satori/transforms/emojis.d.ts} +2 -2
  326. package/dist/runtime/nitro/og-image/satori/transforms/emojis.js +3593 -0
  327. package/dist/runtime/nitro/og-image/satori/transforms/inlineCss.d.ts +3 -0
  328. package/dist/runtime/nitro/og-image/satori/transforms/inlineCss.js +50 -0
  329. package/dist/runtime/{core/renderers → nitro/og-image}/satori/utils.d.ts +2 -2
  330. package/dist/runtime/{core/renderers/satori/utils.mjs → nitro/og-image/satori/utils.js} +9 -5
  331. package/dist/runtime/{core/renderers → nitro/og-image}/satori/vnodes.d.ts +1 -1
  332. package/dist/runtime/nitro/og-image/satori/vnodes.js +38 -0
  333. package/dist/runtime/nitro/og-image/templates/html.d.ts +2 -0
  334. package/dist/runtime/{core/html/devIframeTemplate.mjs → nitro/og-image/templates/html.js} +31 -29
  335. package/dist/runtime/nitro/plugins/__zero-runtime/nuxt-content.d.ts +2 -0
  336. package/dist/runtime/nitro/plugins/__zero-runtime/nuxt-content.js +9 -0
  337. package/dist/runtime/nitro/plugins/nuxt-content.d.ts +1 -1
  338. package/dist/runtime/nitro/plugins/nuxt-content.js +5 -0
  339. package/dist/runtime/nitro/plugins/prerender.js +33 -0
  340. package/dist/runtime/nitro/routes/__zero-runtime/font.js +8 -0
  341. package/dist/runtime/nitro/routes/__zero-runtime/image.js +8 -0
  342. package/dist/runtime/{server/routes/__og-image__ → nitro/routes}/debug.json.d.ts +1 -1
  343. package/dist/runtime/{server/routes/__og-image__/debug.json.mjs → nitro/routes/debug.json.js} +2 -2
  344. package/dist/runtime/nitro/routes/font.d.ts +2 -0
  345. package/dist/runtime/nitro/routes/font.js +3 -0
  346. package/dist/runtime/nitro/routes/image.d.ts +2 -0
  347. package/dist/runtime/nitro/routes/image.js +3 -0
  348. package/dist/runtime/nitro/tsconfig.json +3 -0
  349. package/dist/runtime/{cache.d.ts → nitro/util/cache.d.ts} +2 -2
  350. package/dist/runtime/{cache.mjs → nitro/util/cache.js} +5 -4
  351. package/dist/runtime/nitro/util/encoding.d.ts +3 -0
  352. package/dist/runtime/nitro/util/encoding.js +15 -0
  353. package/dist/runtime/nitro/util/eventHandlers.d.ts +3 -0
  354. package/dist/runtime/nitro/util/eventHandlers.js +155 -0
  355. package/dist/runtime/nitro/util/kit.d.ts +6 -0
  356. package/dist/runtime/nitro/util/kit.js +32 -0
  357. package/dist/runtime/nitro/util/logger.d.ts +1 -0
  358. package/dist/runtime/nitro/util/logger.js +6 -0
  359. package/dist/runtime/nitro/util/options.d.ts +2 -0
  360. package/dist/runtime/nitro/util/options.js +18 -0
  361. package/dist/runtime/nitro/util/plugins.d.ts +2 -0
  362. package/dist/runtime/nitro/{plugins/nuxt-content.mjs → util/plugins.js} +12 -8
  363. package/dist/runtime/{core/utils → nitro/util}/wasm.d.ts +0 -1
  364. package/dist/runtime/{components → nuxt/components}/OgImage/OgImage.d.ts +2 -4
  365. package/dist/runtime/nuxt/components/OgImage/OgImageScreenshot.d.ts +3 -0
  366. package/dist/runtime/nuxt/components/Templates/Community/Frame.vue +64 -0
  367. package/dist/runtime/{components → nuxt/components}/Templates/Community/Nuxt.vue +6 -5
  368. package/dist/runtime/{components → nuxt/components}/Templates/Community/NuxtSeo.vue +7 -7
  369. package/dist/runtime/{components → nuxt/components}/Templates/Community/Pergel.vue +1 -2
  370. package/dist/runtime/{components → nuxt/components}/Templates/Community/UnJs.vue +2 -2
  371. package/dist/runtime/{composables → nuxt/composables}/defineOgImage.d.ts +1 -1
  372. package/dist/runtime/{composables/defineOgImage.mjs → nuxt/composables/defineOgImage.js} +12 -15
  373. package/dist/runtime/{composables → nuxt/composables}/defineOgImageComponent.d.ts +1 -1
  374. package/dist/runtime/{composables/defineOgImageComponent.mjs → nuxt/composables/defineOgImageComponent.js} +1 -1
  375. package/dist/runtime/nuxt/composables/defineOgImageScreenshot.d.ts +2 -0
  376. package/dist/runtime/nuxt/composables/mock.d.ts +5 -0
  377. package/dist/runtime/nuxt/composables/mock.js +6 -0
  378. package/dist/runtime/nuxt/plugins/__zero-runtime/og-image-canonical-urls.server.d.ts +2 -0
  379. package/dist/runtime/nuxt/plugins/__zero-runtime/og-image-canonical-urls.server.js +9 -0
  380. package/dist/runtime/nuxt/plugins/__zero-runtime/route-rule-og-image.server.d.ts +2 -0
  381. package/dist/runtime/nuxt/plugins/__zero-runtime/route-rule-og-image.server.js +9 -0
  382. package/dist/runtime/nuxt/plugins/og-image-canonical-urls.server.d.ts +1 -1
  383. package/dist/runtime/nuxt/plugins/og-image-canonical-urls.server.js +5 -0
  384. package/dist/runtime/nuxt/plugins/route-rule-og-image.server.d.ts +1 -1
  385. package/dist/runtime/nuxt/plugins/route-rule-og-image.server.js +5 -0
  386. package/dist/runtime/nuxt/utils/plugins.d.ts +3 -0
  387. package/dist/runtime/nuxt/utils/plugins.js +87 -0
  388. package/dist/runtime/nuxt/utils.d.ts +3 -2
  389. package/dist/runtime/nuxt/{utils.mjs → utils.js} +12 -7
  390. package/dist/runtime/{utils.pure.d.ts → pure.d.ts} +2 -1
  391. package/dist/runtime/{utils.pure.mjs → pure.js} +22 -3
  392. package/dist/runtime/{utils.d.ts → shared.d.ts} +2 -2
  393. package/dist/runtime/{utils.mjs → shared.js} +5 -4
  394. package/dist/runtime/types.d.ts +19 -10
  395. package/dist/types.d.mts +2 -13
  396. package/dist/types.d.ts +2 -13
  397. package/package.json +86 -59
  398. package/dist/client/_nuxt/IconCSS.d0e7b355.js +0 -1
  399. package/dist/client/_nuxt/IconCSS.f0b56d3e.css +0 -1
  400. package/dist/client/_nuxt/builds/meta/bb3d9bad-71c2-44e9-bdfb-e309e6d8b22d.json +0 -1
  401. package/dist/client/_nuxt/entry.a30f63d0.css +0 -1
  402. package/dist/client/_nuxt/entry.c7946b24.js +0 -108
  403. package/dist/client/_nuxt/error-404.1290b959.js +0 -1
  404. package/dist/client/_nuxt/error-404.b751fa02.css +0 -1
  405. package/dist/client/_nuxt/error-500.69009e70.css +0 -1
  406. package/dist/client/_nuxt/error-500.de7cdd09.js +0 -1
  407. package/dist/client/_nuxt/vanilla-picker-NKbIFE8h.23409a58.js +0 -8
  408. package/dist/runtime/components/OgImage/OgImageScreenshot.d.ts +0 -5
  409. package/dist/runtime/composables/defineOgImageScreenshot.d.ts +0 -2
  410. package/dist/runtime/core/bindings/chromium/node.mjs +0 -33
  411. package/dist/runtime/core/bindings/css-inline/node.d.ts +0 -2
  412. package/dist/runtime/core/bindings/css-inline/node.mjs +0 -2
  413. package/dist/runtime/core/bindings/resvg/wasm.mjs +0 -6
  414. package/dist/runtime/core/cache/emojis.d.ts +0 -1
  415. package/dist/runtime/core/cache/emojis.mjs +0 -5
  416. package/dist/runtime/core/cache/fonts.d.ts +0 -3
  417. package/dist/runtime/core/cache/fonts.mjs +0 -6
  418. package/dist/runtime/core/cache/htmlPayload.d.ts +0 -5
  419. package/dist/runtime/core/cache/htmlPayload.mjs +0 -6
  420. package/dist/runtime/core/cache/prerender.d.ts +0 -2
  421. package/dist/runtime/core/cache/prerender.mjs +0 -5
  422. package/dist/runtime/core/env/assets.d.ts +0 -1
  423. package/dist/runtime/core/env/assets.mjs +0 -11
  424. package/dist/runtime/core/font/fetch.d.ts +0 -2
  425. package/dist/runtime/core/font/fetch.mjs +0 -36
  426. package/dist/runtime/core/html/applyEmojis.mjs +0 -37
  427. package/dist/runtime/core/html/applyInlineCss.d.ts +0 -3
  428. package/dist/runtime/core/html/applyInlineCss.mjs +0 -32
  429. package/dist/runtime/core/html/devIframeTemplate.d.ts +0 -2
  430. package/dist/runtime/core/html/fetchIsland.d.ts +0 -3
  431. package/dist/runtime/core/html/fetchIsland.mjs +0 -17
  432. package/dist/runtime/core/options/extract.d.ts +0 -3
  433. package/dist/runtime/core/options/extract.mjs +0 -49
  434. package/dist/runtime/core/options/fetch.d.ts +0 -3
  435. package/dist/runtime/core/options/fetch.mjs +0 -32
  436. package/dist/runtime/core/renderers/satori/plugins/encoding.mjs +0 -8
  437. package/dist/runtime/core/renderers/satori/plugins/flex.mjs +0 -10
  438. package/dist/runtime/core/renderers/satori/plugins/imageSrc.mjs +0 -75
  439. package/dist/runtime/core/renderers/satori/plugins/twClasses.mjs +0 -8
  440. package/dist/runtime/core/renderers/satori/vnodes.mjs +0 -31
  441. package/dist/runtime/core/utils/resolveRendererContext.d.ts +0 -3
  442. package/dist/runtime/core/utils/resolveRendererContext.mjs +0 -97
  443. package/dist/runtime/nitro/plugins/prerender.mjs +0 -36
  444. package/dist/runtime/nitro/utils.d.ts +0 -2
  445. package/dist/runtime/nitro/utils.mjs +0 -16
  446. package/dist/runtime/nuxt/plugins/og-image-canonical-urls.server.mjs +0 -43
  447. package/dist/runtime/nuxt/plugins/route-rule-og-image.server.mjs +0 -37
  448. package/dist/runtime/server/assets/inter-latin-ext-400-normal.woff +0 -0
  449. package/dist/runtime/server/assets/inter-latin-ext-700-normal.woff +0 -0
  450. package/dist/runtime/server/routes/__og-image__/font-[name]-[weight].[extension].mjs +0 -49
  451. package/dist/runtime/server/routes/__og-image__/image.mjs +0 -91
  452. package/dist/runtime/{core/bindings/chromium/node.d.ts → nitro/og-image/bindings/chromium/chrome-launcher.d.ts} +0 -0
  453. package/dist/runtime/{core → nitro/og-image}/bindings/resvg/node.d.ts +0 -0
  454. package/dist/runtime/{core/bindings/resvg/node.mjs → nitro/og-image/bindings/resvg/node.js} +0 -0
  455. package/dist/runtime/{core → nitro/og-image}/bindings/satori/node.d.ts +0 -0
  456. package/dist/runtime/{core/bindings/satori/node.mjs → nitro/og-image/bindings/satori/node.js} +0 -0
  457. package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm-fs.d.ts +0 -0
  458. package/dist/runtime/{core → nitro/og-image}/bindings/satori/wasm.d.ts +0 -0
  459. package/dist/runtime/{core → nitro/og-image}/bindings/sharp/node.d.ts +0 -0
  460. package/dist/runtime/{core/bindings/sharp/node.mjs → nitro/og-image/bindings/sharp/node.js} +0 -0
  461. package/dist/runtime/{core/renderers/satori/plugins/emojis.d.ts → nitro/og-image/satori/plugins/classes.d.ts} +0 -0
  462. package/dist/runtime/{core/renderers/satori/plugins/encoding.d.ts → nitro/og-image/satori/plugins/emojis.d.ts} +0 -0
  463. package/dist/runtime/{core/renderers/satori/plugins/flex.d.ts → nitro/og-image/satori/plugins/encoding.d.ts} +0 -0
  464. package/dist/runtime/{core/renderers/satori/plugins/imageSrc.d.ts → nitro/og-image/satori/plugins/flex.d.ts} +0 -0
  465. package/dist/runtime/{core/renderers/satori/plugins/twClasses.d.ts → nitro/og-image/satori/plugins/imageSrc.d.ts} +0 -0
  466. package/dist/runtime/{core/renderers → nitro/og-image}/satori/plugins/unocss.d.ts +0 -0
  467. package/dist/runtime/{server/routes/__og-image__/font-[name]-[weight].[extension].d.ts → nitro/routes/__zero-runtime/font.d.ts} +0 -0
  468. package/dist/runtime/{server/routes/__og-image__ → nitro/routes/__zero-runtime}/image.d.ts +0 -0
  469. package/dist/runtime/{core/utils/wasm.mjs → nitro/util/wasm.js} +0 -0
  470. package/dist/runtime/{components/OgImage/OgImage.mjs → nuxt/components/OgImage/OgImage.js} +1 -1
  471. package/dist/runtime/{components/OgImage/OgImageScreenshot.mjs → nuxt/components/OgImage/OgImageScreenshot.js} +1 -1
  472. package/dist/runtime/{components → nuxt/components}/Templates/Community/BrandedLogo.vue +0 -0
  473. package/dist/runtime/{components → nuxt/components}/Templates/Community/SimpleBlog.vue +1 -1
  474. /package/dist/runtime/{components → nuxt/components}/Templates/Community/Wave.vue +0 -0
  475. /package/dist/runtime/{components → nuxt/components}/Templates/Community/WithEmoji.vue +0 -0
  476. /package/dist/runtime/{composables/defineOgImageScreenshot.mjs → nuxt/composables/defineOgImageScreenshot.js} +0 -0
  477. /package/dist/runtime/{types.mjs → types.js} +0 -0
@@ -0,0 +1,9 @@
1
+ import { Launcher } from "chrome-launcher";
2
+ import playwrightCore from "playwright-core";
3
+ const chromePath = Launcher.getFirstInstallation();
4
+ export async function createBrowser() {
5
+ return playwrightCore.chromium.launch({
6
+ headless: true,
7
+ executablePath: chromePath
8
+ });
9
+ }
@@ -0,0 +1,2 @@
1
+ import type { Browser } from 'playwright-core';
2
+ export declare function createBrowser(): Promise<Browser | void>;
@@ -0,0 +1,35 @@
1
+ import { createConsola } from "consola";
2
+ import { execa } from "execa";
3
+ import playwrightCore from "playwright-core";
4
+ let installedChromium = false;
5
+ let installChromiumPromise;
6
+ export async function createBrowser() {
7
+ if (installChromiumPromise)
8
+ await installChromiumPromise;
9
+ if (!installedChromium) {
10
+ installChromiumPromise = new Promise((_resolve) => {
11
+ const logger = createConsola().withTag("Nuxt OG Image");
12
+ logger.info("Installing Chromium install for og:image generation...");
13
+ const installChromeProcess = execa("npx", ["playwright", "install", "chromium"], {
14
+ stdio: "inherit"
15
+ });
16
+ installChromeProcess.stderr?.pipe(process.stderr);
17
+ new Promise((resolve) => {
18
+ installChromeProcess.on("exit", (e) => {
19
+ if (e !== 0)
20
+ logger.error("Failed to install Playwright dependency for og:image generation. Trying anyway...");
21
+ resolve(true);
22
+ });
23
+ }).then(() => {
24
+ installChromeProcess.kill();
25
+ logger.info("Installed Chromium install for og:image generation.");
26
+ _resolve();
27
+ });
28
+ }).then(() => {
29
+ installedChromium = true;
30
+ });
31
+ }
32
+ return await playwrightCore.chromium.launch({
33
+ headless: true
34
+ });
35
+ }
@@ -0,0 +1,2 @@
1
+ import type { Browser } from 'playwright-core';
2
+ export declare function createBrowser(): Promise<Browser | void>;
@@ -0,0 +1,6 @@
1
+ import playwright from "playwright";
2
+ export async function createBrowser() {
3
+ return await playwright.chromium.launch({
4
+ headless: true
5
+ });
6
+ }
@@ -0,0 +1,8 @@
1
+ import { inline } from '@css-inline/css-inline';
2
+ declare const _default: {
3
+ initWasmPromise: Promise<void>;
4
+ cssInline: {
5
+ inline: typeof inline;
6
+ };
7
+ };
8
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { inline } from "@css-inline/css-inline";
2
+ export default {
3
+ initWasmPromise: Promise.resolve(),
4
+ cssInline: {
5
+ inline
6
+ }
7
+ };
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ initWasmPromise: any;
3
+ cssInline: {
4
+ inline: any;
5
+ };
6
+ };
7
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { initWasm, inline } from "@css-inline/css-inline-wasm";
2
+ import { readWasmFile } from "../../../util/wasm.js";
3
+ export default {
4
+ initWasmPromise: initWasm(readWasmFile("@css-inline/css-inline-wasm/index_bg.wasm")),
5
+ cssInline: {
6
+ inline
7
+ }
8
+ };
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ initWasmPromise: any;
3
+ cssInline: {
4
+ inline: any;
5
+ };
6
+ };
7
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { initWasm, inline } from "@css-inline/css-inline-wasm";
2
+ export default {
3
+ initWasmPromise: initWasm(import("@css-inline/css-inline-wasm/index_bg.wasm?module").then((r) => r.default || r)),
4
+ cssInline: {
5
+ inline
6
+ }
7
+ };
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  initWasmPromise: Promise<void>;
3
- Resvg: new (svg: string | Uint8Array, options?: import("@resvg/resvg-wasm").ResvgRenderOptions | undefined) => {
3
+ Resvg: new (svg: Uint8Array | string, options?: import("@resvg/resvg-wasm").ResvgRenderOptions) => {
4
4
  free(): void;
5
5
  render(): {
6
6
  free(): void;
@@ -1,5 +1,5 @@
1
1
  import { Resvg as _Resvg, initWasm } from "@resvg/resvg-wasm";
2
- import { readWasmFile } from "../../utils/wasm.mjs";
2
+ import { readWasmFile } from "../../../util/wasm.js";
3
3
  export default {
4
4
  initWasmPromise: initWasm(readWasmFile("@resvg/resvg-wasm/index_bg.wasm")),
5
5
  Resvg: _Resvg
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  initWasmPromise: Promise<void>;
3
- Resvg: new (svg: string | Uint8Array, options?: import("@resvg/resvg-wasm").ResvgRenderOptions | undefined) => {
3
+ Resvg: new (svg: Uint8Array | string, options?: import("@resvg/resvg-wasm").ResvgRenderOptions) => {
4
4
  free(): void;
5
5
  render(): {
6
6
  free(): void;
@@ -0,0 +1,5 @@
1
+ import { Resvg as _Resvg, initWasm } from "@resvg/resvg-wasm";
2
+ export default {
3
+ initWasmPromise: initWasm(import("@resvg/resvg-wasm/index_bg.wasm?module").then((r) => r.default || r)),
4
+ Resvg: _Resvg
5
+ };
@@ -1,6 +1,6 @@
1
1
  import _satori, { init } from "satori/wasm";
2
2
  import initYoga from "yoga-wasm-web";
3
- import { readWasmFile } from "../../utils/wasm.mjs";
3
+ import { readWasmFile } from "../../../util/wasm.js";
4
4
  const wasm = readWasmFile("yoga-wasm-web/dist/yoga.wasm").then(async (yoga) => await initYoga(yoga));
5
5
  export default {
6
6
  initWasmPromise: new Promise((resolve) => {
@@ -1,8 +1,7 @@
1
+ import { init } from "satori";
1
2
  import _satori from "satori/wasm";
2
3
  import initYoga from "yoga-wasm-web";
3
- import { init } from "satori";
4
- import { importWasm } from "../../utils/wasm.mjs";
5
- const wasm = importWasm(import("yoga-wasm-web/dist/yoga.wasm")).then(async (yoga) => await initYoga(yoga));
4
+ const wasm = import("yoga-wasm-web/dist/yoga.wasm?module").then(async (yoga) => await initYoga(yoga.default || yoga));
6
5
  export default {
7
6
  initWasmPromise: new Promise((resolve) => {
8
7
  wasm.then((yoga) => {
@@ -0,0 +1,9 @@
1
+ import type { Storage } from 'unstorage';
2
+ import type { OgImageOptions } from '../../../types.js';
3
+ export declare const htmlPayloadCache: Storage<{
4
+ expiresAt: number;
5
+ value: OgImageOptions;
6
+ }>;
7
+ export declare const prerenderOptionsCache: Storage<OgImageOptions> | undefined;
8
+ export declare const fontCache: Storage<BufferSource>;
9
+ export declare const emojiCache: Storage<string>;
@@ -0,0 +1,15 @@
1
+ import { createStorage } from "unstorage";
2
+ import lruCacheDriver from "unstorage/drivers/lru-cache";
3
+ export const htmlPayloadCache = createStorage({
4
+ // short cache time so we don't need many entries at runtime
5
+ driver: lruCacheDriver({ max: import.meta.prerender ? 1e4 : 50 })
6
+ });
7
+ export const prerenderOptionsCache = import.meta.prerender ? createStorage({
8
+ driver: lruCacheDriver({ max: 1e4 })
9
+ }) : void 0;
10
+ export const fontCache = createStorage({
11
+ driver: lruCacheDriver({ max: 10 })
12
+ });
13
+ export const emojiCache = createStorage({
14
+ driver: lruCacheDriver({ max: 1e3 })
15
+ });
@@ -0,0 +1,9 @@
1
+ import type { Storage } from 'unstorage';
2
+ import type { OgImageOptions } from '../../../types.js';
3
+ export declare const htmlPayloadCache: Storage<{
4
+ expiresAt: number;
5
+ value: OgImageOptions;
6
+ }>;
7
+ export declare const prerenderOptionsCache: Storage<OgImageOptions> | undefined;
8
+ export declare const fontCache: Storage<OgImageOptions<"NuxtSeo">>;
9
+ export declare const emojiCache: Storage<string>;
@@ -0,0 +1,9 @@
1
+ import { createStorage } from "unstorage";
2
+ import memoryDriver from "unstorage/drivers/memory";
3
+ const storage = createStorage({
4
+ driver: memoryDriver()
5
+ });
6
+ export const htmlPayloadCache = storage;
7
+ export const prerenderOptionsCache = storage;
8
+ export const fontCache = storage;
9
+ export const emojiCache = storage;
@@ -1,3 +1,3 @@
1
- import type { Renderer } from '../../../types';
1
+ import type { Renderer } from '../../../types.js';
2
2
  declare const ChromiumRenderer: Renderer;
3
3
  export default ChromiumRenderer;
@@ -1,6 +1,6 @@
1
- import { createError } from "h3";
2
- import { createScreenshot } from "./screenshot.mjs";
3
1
  import { createBrowser } from "#nuxt-og-image/bindings/chromium";
2
+ import { createError } from "h3";
3
+ import { createScreenshot } from "./screenshot.js";
4
4
  const ChromiumRenderer = {
5
5
  name: "chromium",
6
6
  supportedFormats: ["png", "jpeg", "jpg"],
@@ -1,5 +1,4 @@
1
- /// <reference types="node" />
2
1
  import type { Buffer } from 'node:buffer';
3
2
  import type { Browser } from 'playwright-core';
4
- import type { OgImageRenderEventContext } from '../../../types';
3
+ import type { OgImageRenderEventContext } from '../../../types.js';
5
4
  export declare function createScreenshot({ basePath, e, options, extension }: OgImageRenderEventContext, browser: Browser): Promise<Buffer>;
@@ -1,6 +1,6 @@
1
- import { joinURL, withQuery } from "ufo";
2
- import { useOgImageRuntimeConfig } from "../../../utils.mjs";
3
1
  import { useNitroOrigin } from "#imports";
2
+ import { joinURL, withQuery } from "ufo";
3
+ import { useOgImageRuntimeConfig } from "../../../shared.js";
4
4
  export async function createScreenshot({ basePath, e, options, extension }, browser) {
5
5
  const { colorPreference } = useOgImageRuntimeConfig();
6
6
  const path = options.component === "PageScreenshot" ? basePath : joinURL("/__og-image__/image", basePath, `og.html`);
@@ -0,0 +1,5 @@
1
+ import type { H3Error, H3Event } from 'h3';
2
+ import type { OgImageOptions, OgImageRenderEventContext } from '../../types.js';
3
+ export declare function resolvePathCacheKey(e: H3Event, path?: string): string;
4
+ export declare function resolveContext(e: H3Event): Promise<H3Error | OgImageRenderEventContext>;
5
+ export declare function extractAndNormaliseOgImageOptions(html: string): OgImageOptions | false;
@@ -0,0 +1,185 @@
1
+ import { htmlPayloadCache, prerenderOptionsCache } from "#nuxt-og-image-cache";
2
+ import { defu } from "defu";
3
+ import { parse } from "devalue";
4
+ import { createError, getQuery } from "h3";
5
+ import { useNitroApp } from "nitropack/runtime";
6
+ import { hash } from "ohash";
7
+ import { parseURL, withoutLeadingSlash, withoutTrailingSlash, withQuery } from "ufo";
8
+ import { normalizeKey } from "unstorage";
9
+ import { separateProps, useOgImageRuntimeConfig } from "../../shared.js";
10
+ import { decodeObjectHtmlEntities } from "../util/encoding.js";
11
+ import { createNitroRouteRuleMatcher } from "../util/kit.js";
12
+ import { useChromiumRenderer, useSatoriRenderer } from "./instances.js";
13
+ export function resolvePathCacheKey(e, path) {
14
+ const siteConfig = e.context.siteConfig.get();
15
+ const basePath = withoutTrailingSlash(withoutLeadingSlash(normalizeKey(path || e.path)));
16
+ return [
17
+ !basePath || basePath === "/" ? "index" : basePath,
18
+ hash([
19
+ basePath,
20
+ siteConfig.url,
21
+ hash(getQuery(e))
22
+ ])
23
+ ].join(":");
24
+ }
25
+ export async function resolveContext(e) {
26
+ const runtimeConfig = useOgImageRuntimeConfig();
27
+ const path = parseURL(e.path).pathname;
28
+ const extension = path.split(".").pop();
29
+ if (!extension) {
30
+ return createError({
31
+ statusCode: 400,
32
+ statusMessage: `[Nuxt OG Image] Missing OG Image type.`
33
+ });
34
+ }
35
+ if (!["png", "jpeg", "jpg", "svg", "html", "json"].includes(extension)) {
36
+ return createError({
37
+ statusCode: 400,
38
+ statusMessage: `[Nuxt OG Image] Unknown OG Image type ${extension}.`
39
+ });
40
+ }
41
+ let queryParams = { ...getQuery(e) };
42
+ queryParams.props = JSON.parse(queryParams.props || "{}");
43
+ queryParams = separateProps(queryParams);
44
+ let basePath = withoutTrailingSlash(
45
+ path.replace(`/__og-image__/image`, "").replace(`/__og-image__/static`, "").replace(`/og.${extension}`, "")
46
+ );
47
+ if (queryParams._query)
48
+ basePath = withQuery(basePath, JSON.parse(queryParams._query));
49
+ const isDebugJsonPayload = extension === "json" && runtimeConfig.debug;
50
+ const key = resolvePathCacheKey(e, basePath);
51
+ let options = queryParams.options;
52
+ if (!options) {
53
+ if (import.meta.prerender)
54
+ options = await prerenderOptionsCache?.getItem(key);
55
+ if (!options) {
56
+ const payload = await fetchPathHtmlAndExtractOptions(e, basePath, key);
57
+ if (payload instanceof Error)
58
+ return payload;
59
+ options = payload;
60
+ }
61
+ }
62
+ delete queryParams.options;
63
+ const routeRuleMatcher = createNitroRouteRuleMatcher();
64
+ const routeRules = routeRuleMatcher(basePath);
65
+ if (typeof routeRules.ogImage === "undefined" && !options) {
66
+ return createError({
67
+ statusCode: 400,
68
+ statusMessage: "The route is missing the Nuxt OG Image payload or route rules."
69
+ });
70
+ }
71
+ const ogImageRouteRules = separateProps(routeRules.ogImage);
72
+ options = defu(queryParams, options, ogImageRouteRules, runtimeConfig.defaults);
73
+ if (!options) {
74
+ return createError({
75
+ statusCode: 404,
76
+ statusMessage: "[Nuxt OG Image] OG Image not found."
77
+ });
78
+ }
79
+ let renderer;
80
+ switch (options.renderer) {
81
+ case "satori":
82
+ renderer = await useSatoriRenderer();
83
+ break;
84
+ case "chromium":
85
+ renderer = await useChromiumRenderer();
86
+ break;
87
+ }
88
+ if (!renderer || renderer.__unenv__) {
89
+ throw createError({
90
+ statusCode: 400,
91
+ statusMessage: `[Nuxt OG Image] Renderer ${options.renderer} is missing.`
92
+ });
93
+ }
94
+ const ctx = {
95
+ e,
96
+ key,
97
+ renderer,
98
+ isDebugJsonPayload,
99
+ publicStoragePath: runtimeConfig.publicStoragePath,
100
+ extension,
101
+ basePath,
102
+ options,
103
+ _nitro: useNitroApp()
104
+ };
105
+ await ctx._nitro.hooks.callHook("nuxt-og-image:context", ctx);
106
+ return ctx;
107
+ }
108
+ export function extractAndNormaliseOgImageOptions(html) {
109
+ const htmlPayload = html.match(/<script.+id="nuxt-og-image-options"[^>]*>(.+?)<\/script>/)?.[1];
110
+ if (!htmlPayload)
111
+ return false;
112
+ let options = false;
113
+ try {
114
+ const payload2 = parse(htmlPayload);
115
+ Object.entries(payload2).forEach(([key, value]) => {
116
+ if (!value)
117
+ delete payload2[key];
118
+ });
119
+ options = payload2;
120
+ } catch (e) {
121
+ if (import.meta.dev)
122
+ console.warn("Failed to parse #nuxt-og-image-options", e, options);
123
+ }
124
+ if (!options)
125
+ return false;
126
+ if (typeof options.props?.description === "undefined") {
127
+ const description = html.match(/<meta[^>]+name="description"[^>]*>/)?.[0];
128
+ if (description) {
129
+ const [, content] = description.match(/content="([^"]+)"/) || [];
130
+ if (content && !options.props.description)
131
+ options.props.description = content;
132
+ }
133
+ }
134
+ const payload = decodeObjectHtmlEntities(options);
135
+ if (import.meta.dev) {
136
+ const socialPreview = {};
137
+ const socialMetaTags = html.match(/<meta[^>]+(property|name)="(twitter|og):([^"]+)"[^>]*>/g);
138
+ if (socialMetaTags) {
139
+ socialMetaTags.forEach((tag) => {
140
+ const [, , type, key] = tag.match(/(property|name)="(twitter|og):([^"]+)"/);
141
+ const value = tag.match(/content="([^"]+)"/)?.[1];
142
+ if (!value)
143
+ return;
144
+ if (!socialPreview[type])
145
+ socialPreview[type] = {};
146
+ socialPreview[type][key] = value;
147
+ });
148
+ }
149
+ payload.socialPreview = socialPreview;
150
+ }
151
+ return payload;
152
+ }
153
+ async function fetchPathHtmlAndExtractOptions(e, path, key) {
154
+ const cachedHtmlPayload = await htmlPayloadCache.getItem(key);
155
+ if (!import.meta.dev && cachedHtmlPayload && cachedHtmlPayload.expiresAt < Date.now())
156
+ return cachedHtmlPayload.value;
157
+ let html;
158
+ try {
159
+ html = await e.$fetch(path, {
160
+ // follow redirects
161
+ redirect: "follow",
162
+ responseType: "text"
163
+ });
164
+ } catch (err) {
165
+ return createError({
166
+ statusCode: 500,
167
+ statusMessage: `[Nuxt OG Image] Failed to read the path ${path} for og-image extraction. ${err.message}.`
168
+ });
169
+ }
170
+ if (typeof html !== "string") {
171
+ return createError({
172
+ statusCode: 500,
173
+ statusMessage: `[Nuxt OG Image] Got invalid response from ${path} for og-image extraction.`
174
+ });
175
+ }
176
+ const payload = extractAndNormaliseOgImageOptions(html);
177
+ if (!import.meta.dev && payload) {
178
+ await htmlPayloadCache.setItem(key, {
179
+ // 60 minutes for prerender, 10 seconds for runtime
180
+ expiresAt: Date.now() + 1e3 * (import.meta.prerender ? 60 * 60 : 10),
181
+ value: payload
182
+ });
183
+ }
184
+ return payload;
185
+ }
@@ -0,0 +1,2 @@
1
+ export declare function useSatoriRenderer(): Promise<import("../../types").Renderer>;
2
+ export declare function useChromiumRenderer(): Promise<import("../../types").Renderer>;
@@ -0,0 +1,10 @@
1
+ const satoriRendererInstance = { instance: void 0 };
2
+ const chromiumRendererInstance = { instance: void 0 };
3
+ export async function useSatoriRenderer() {
4
+ satoriRendererInstance.instance = satoriRendererInstance.instance || await import("#nuxt-og-image/renderers/satori").then((m) => m.default);
5
+ return satoriRendererInstance.instance;
6
+ }
7
+ export async function useChromiumRenderer() {
8
+ chromiumRendererInstance.instance = chromiumRendererInstance.instance || await import("#nuxt-og-image/renderers/chromium").then((m) => m.default);
9
+ return chromiumRendererInstance.instance;
10
+ }
@@ -0,0 +1,3 @@
1
+ import type { OgImageRenderEventContext, ResolvedFontConfig } from '../../../types.js';
2
+ export declare const assets: import("unstorage").Storage<import("unstorage").StorageValue>;
3
+ export declare function loadFont({ e, publicStoragePath }: OgImageRenderEventContext, font: ResolvedFontConfig): Promise<ResolvedFontConfig>;
@@ -0,0 +1,39 @@
1
+ import { useNitroOrigin, useStorage } from "#imports";
2
+ import { prefixStorage } from "unstorage";
3
+ export const assets = prefixStorage(useStorage(), "/assets");
4
+ export async function loadFont({ e, publicStoragePath }, font) {
5
+ const { name, weight } = font;
6
+ if (font.data)
7
+ return font;
8
+ if (font.key && await assets.hasItem(font.key)) {
9
+ let fontData = await assets.getItem(font.key);
10
+ if (fontData instanceof Uint8Array) {
11
+ const decoder = new TextDecoder();
12
+ fontData = decoder.decode(fontData);
13
+ }
14
+ font.data = Buffer.from(fontData, "base64");
15
+ return font;
16
+ }
17
+ let data;
18
+ if (font.path) {
19
+ if (import.meta.dev || import.meta.prerender) {
20
+ const key = `${publicStoragePath}${font.path.replace("./", ":").replace("/", ":")}`;
21
+ if (await useStorage().hasItem(key))
22
+ data = await useStorage().getItemRaw(key);
23
+ } else {
24
+ data = await e.$fetch(font.path, {
25
+ baseURL: useNitroOrigin(e),
26
+ responseType: "arrayBuffer"
27
+ });
28
+ }
29
+ } else {
30
+ data = await e.$fetch(`/__og-image__/font/${name}/${weight}.ttf`, {
31
+ responseType: "arrayBuffer",
32
+ query: {
33
+ font
34
+ }
35
+ });
36
+ }
37
+ font.data = data;
38
+ return font;
39
+ }
@@ -1,7 +1,6 @@
1
1
  import type _satori from 'satori';
2
- export declare function useSatoriRenderer(): Promise<import("../../../types").Renderer>;
3
- export declare function useChromiumRenderer(): Promise<import("../../../types").Renderer>;
4
- export declare function useResvg(): Promise<new (svg: string | Uint8Array, options?: import("@resvg/resvg-wasm").ResvgRenderOptions | undefined) => {
2
+ import type _sharp from 'sharp';
3
+ export declare function useResvg(): Promise<new (svg: Uint8Array | string, options?: import("@resvg/resvg-wasm").ResvgRenderOptions) => {
5
4
  free(): void;
6
5
  render(): {
7
6
  free(): void;
@@ -38,5 +37,5 @@ export declare function useResvg(): Promise<new (svg: string | Uint8Array, optio
38
37
  readonly width: number;
39
38
  }>;
40
39
  export declare function useSatori(): Promise<typeof _satori>;
41
- export declare function useSharp(): Promise<any>;
40
+ export declare function useSharp(): Promise<typeof _sharp>;
42
41
  export declare function useCssInline(): Promise<any>;
@@ -2,16 +2,6 @@ const cssInlineInstance = { instance: void 0 };
2
2
  const sharpInstance = { instance: void 0 };
3
3
  const resvgInstance = { instance: void 0 };
4
4
  const satoriInstance = { instance: void 0 };
5
- const satoriRendererInstance = { instance: void 0 };
6
- const chromiumRendererInstance = { instance: void 0 };
7
- export async function useSatoriRenderer() {
8
- satoriRendererInstance.instance = satoriRendererInstance.instance || await import("#nuxt-og-image/renderers/satori").then((m) => m.default);
9
- return satoriRendererInstance.instance;
10
- }
11
- export async function useChromiumRenderer() {
12
- chromiumRendererInstance.instance = chromiumRendererInstance.instance || await import("#nuxt-og-image/renderers/chromium").then((m) => m.default);
13
- return chromiumRendererInstance.instance;
14
- }
15
5
  export async function useResvg() {
16
6
  resvgInstance.instance = resvgInstance.instance || await import("#nuxt-og-image/bindings/resvg").then((m) => m.default);
17
7
  await resvgInstance.instance.initWasmPromise;
@@ -28,5 +18,6 @@ export async function useSharp() {
28
18
  }
29
19
  export async function useCssInline() {
30
20
  cssInlineInstance.instance = cssInlineInstance.instance || await import("#nuxt-og-image/bindings/css-inline").then((m) => m.default);
31
- return cssInlineInstance.instance;
21
+ await cssInlineInstance.instance.initWasmPromise;
22
+ return cssInlineInstance.instance.cssInline;
32
23
  }
@@ -0,0 +1,17 @@
1
+ import { defineSatoriTransformer } from "../utils.js";
2
+ export default defineSatoriTransformer([
3
+ {
4
+ filter: (node) => !!node.props?.class && !node.props?.tw,
5
+ transform(node) {
6
+ node.props.tw = node.props.class;
7
+ node.props.tw = node.props.tw.replace(/icon|inline-style/g, "");
8
+ }
9
+ },
10
+ {
11
+ filter: (node) => !!node.props?.style?.display,
12
+ transform(node) {
13
+ if (["inline-block", "inline"].includes(node.props.style.display))
14
+ delete node.props.style.display;
15
+ }
16
+ }
17
+ ]);
@@ -1,4 +1,4 @@
1
- import { defineSatoriTransformer } from "../utils.mjs";
1
+ import { defineSatoriTransformer } from "../utils.js";
2
2
  function isEmojiFilter(node) {
3
3
  return node.type === "svg" && typeof node.props?.["data-emoji"] !== "undefined";
4
4
  }
@@ -6,7 +6,7 @@ export default defineSatoriTransformer([
6
6
  // need to make sure parent div has flex for the emoji to render inline
7
7
  {
8
8
  filter: (node) => ["div", "p"].includes(node.type) && Array.isArray(node.props?.children) && node.props.children.some(isEmojiFilter),
9
- transform: async (node) => {
9
+ transform: (node) => {
10
10
  node.props.style = node.props.style || {};
11
11
  node.props.style.display = "flex";
12
12
  node.props.style.alignItems = "center";
@@ -0,0 +1,17 @@
1
+ import { decodeHtml } from "../../../util/encoding.js";
2
+ import { defineSatoriTransformer } from "../utils.js";
3
+ export default defineSatoriTransformer([
4
+ // clean up
5
+ {
6
+ filter: (node) => node.props?.["data-v-inspector"],
7
+ transform: (node) => {
8
+ delete node.props["data-v-inspector"];
9
+ }
10
+ },
11
+ {
12
+ filter: (node) => typeof node.props?.children === "string",
13
+ transform: (node) => {
14
+ node.props.children = decodeHtml(node.props.children);
15
+ }
16
+ }
17
+ ]);
@@ -0,0 +1,35 @@
1
+ import { defineSatoriTransformer } from "../utils.js";
2
+ const BLOCK_ELEMENTS = [
3
+ "div",
4
+ "p",
5
+ "ul",
6
+ "ol",
7
+ "li",
8
+ "blockquote",
9
+ "pre",
10
+ "hr",
11
+ "table",
12
+ "dl"
13
+ ];
14
+ export default defineSatoriTransformer({
15
+ filter: (node) => node.type === "div" && (Array.isArray(node.props?.children) && node.props?.children.length >= 1) && !node.props?.class?.includes("hidden"),
16
+ transform: (node) => {
17
+ node.props.style = node.props.style || {};
18
+ if (node.props.style?.display && node.props.style?.display !== "flex") {
19
+ return;
20
+ }
21
+ node.props.style.display = "flex";
22
+ if (!node.props?.class?.includes("flex-") && node.props.children.some((child) => BLOCK_ELEMENTS.includes(child.type))) {
23
+ node.props.style.flexDirection = "column";
24
+ return;
25
+ }
26
+ let flexWrap = node.props?.class?.includes("flex-wrap");
27
+ if (!node.props?.class?.includes("flex-")) {
28
+ node.props.style.flexWrap = "wrap";
29
+ flexWrap = true;
30
+ }
31
+ if (flexWrap && !node.props?.class?.includes("gap")) {
32
+ node.props.style.gap = "0.2em";
33
+ }
34
+ }
35
+ });