uomtiles 0.1.0

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 (507) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/public/_nuxt/1d1PDhA4.js +1 -0
  3. package/.output/public/_nuxt/3B2XYGg4.js +1 -0
  4. package/.output/public/_nuxt/981KwFWf.js +1 -0
  5. package/.output/public/_nuxt/B30dSvM4.js +1 -0
  6. package/.output/public/_nuxt/BN1Gp4Dm.js +1 -0
  7. package/.output/public/_nuxt/BQlj8Xoe.js +6 -0
  8. package/.output/public/_nuxt/BRkljK8J.js +1 -0
  9. package/.output/public/_nuxt/BSdHYVlE2.js +1 -0
  10. package/.output/public/_nuxt/B_MqTg2k2.js +1 -0
  11. package/.output/public/_nuxt/BiWblTbb2.js +64 -0
  12. package/.output/public/_nuxt/BrPwntMr.js +1 -0
  13. package/.output/public/_nuxt/BskybydR.js +1 -0
  14. package/.output/public/_nuxt/ByRlKR9F.js +1 -0
  15. package/.output/public/_nuxt/C0Zdl2EE2.js +1 -0
  16. package/.output/public/_nuxt/C4qlzA4o.js +1 -0
  17. package/.output/public/_nuxt/C7HxHbxA.js +1 -0
  18. package/.output/public/_nuxt/C97TfNgP.js +3 -0
  19. package/.output/public/_nuxt/CNs_Ozdc.js +1 -0
  20. package/.output/public/_nuxt/CPuhwLY1.js +1 -0
  21. package/.output/public/_nuxt/CVE291Pi.js +1 -0
  22. package/.output/public/_nuxt/C_0VY3Cv2.js +4 -0
  23. package/.output/public/_nuxt/Ce26t8_Y.js +1 -0
  24. package/.output/public/_nuxt/CfW544W5.js +1 -0
  25. package/.output/public/_nuxt/CgMd2Y5s.js +2 -0
  26. package/.output/public/_nuxt/CgdzV712.js +1 -0
  27. package/.output/public/_nuxt/D1wVNWS0.js +1 -0
  28. package/.output/public/_nuxt/DC3bhq63.js +1 -0
  29. package/.output/public/_nuxt/DK3Fl9T5.js +1 -0
  30. package/.output/public/_nuxt/DL1MZZLI.js +1 -0
  31. package/.output/public/_nuxt/DXm-42Fi.js +1 -0
  32. package/.output/public/_nuxt/Djg3Kzfv.js +1 -0
  33. package/.output/public/_nuxt/DkcySee1.js +1 -0
  34. package/.output/public/_nuxt/DmN-PKW1.js +1 -0
  35. package/.output/public/_nuxt/DtFVCXI9.js +1 -0
  36. package/.output/public/_nuxt/Dz7VMlHR.js +1 -0
  37. package/.output/public/_nuxt/NL65vbjG2.js +1 -0
  38. package/.output/public/_nuxt/Oxy7pKSk.js +3 -0
  39. package/.output/public/_nuxt/Pik8or8N2.js +1 -0
  40. package/.output/public/_nuxt/XZ59tThl.js +1 -0
  41. package/.output/public/_nuxt/ZpWjFsgV.js +1 -0
  42. package/.output/public/_nuxt/builds/latest.json +1 -0
  43. package/.output/public/_nuxt/builds/meta/9f85104e-738d-4a74-8daa-40b136ce17d5.json +1 -0
  44. package/.output/public/_nuxt/dXz6dFgW2.js +1 -0
  45. package/.output/public/_nuxt/entry.P6tFNE31.css +1 -0
  46. package/.output/public/_nuxt/error-404.Biv0P6cJ.css +1 -0
  47. package/.output/public/_nuxt/error-500.8ok468rV.css +1 -0
  48. package/.output/public/_nuxt/j0MRD-c3.js +1 -0
  49. package/.output/public/_nuxt/local-pixel-diff.worker-C6RdZoCq.js +2 -0
  50. package/.output/public/_nuxt/maplibre-gl-worker.nfnkSQvL.mjs +6 -0
  51. package/.output/public/_nuxt/nearest-area.worker-iSLH0Y_s.js +2 -0
  52. package/.output/public/_nuxt/q7DkoVkj.js +828 -0
  53. package/.output/public/_nuxt/raster-tile.worker-BFlOgJig.js +2 -0
  54. package/.output/public/_nuxt/services._3nQizF8.css +1 -0
  55. package/.output/public/_nuxt/sql-wasm.DfANybxk.wasm +0 -0
  56. package/.output/public/_nuxt/tile-diff.worker-CvWWI_eu.js +1 -0
  57. package/.output/public/_nuxt/zZ1EGR7Y.js +1 -0
  58. package/.output/public/apple-touch-icon.png +0 -0
  59. package/.output/public/favicon.ico +0 -0
  60. package/.output/public/favicon.svg +8 -0
  61. package/.output/public/icon-192.png +0 -0
  62. package/.output/public/icon-512.png +0 -0
  63. package/.output/public/site.webmanifest +11 -0
  64. package/.output/server/chunks/_/config.mjs +208 -0
  65. package/.output/server/chunks/_/config.mjs.map +1 -0
  66. package/.output/server/chunks/_/data-directory.mjs +24 -0
  67. package/.output/server/chunks/_/data-directory.mjs.map +1 -0
  68. package/.output/server/chunks/_/error-500.mjs +20 -0
  69. package/.output/server/chunks/_/error-500.mjs.map +1 -0
  70. package/.output/server/chunks/_/file-workspace.mjs +910 -0
  71. package/.output/server/chunks/_/file-workspace.mjs.map +1 -0
  72. package/.output/server/chunks/_/icons.mjs +6269 -0
  73. package/.output/server/chunks/_/icons.mjs.map +1 -0
  74. package/.output/server/chunks/_/map-service.mjs +233 -0
  75. package/.output/server/chunks/_/map-service.mjs.map +1 -0
  76. package/.output/server/chunks/_/missing-tile.mjs +104 -0
  77. package/.output/server/chunks/_/missing-tile.mjs.map +1 -0
  78. package/.output/server/chunks/_/pixel-diff.mjs +78 -0
  79. package/.output/server/chunks/_/pixel-diff.mjs.map +1 -0
  80. package/.output/server/chunks/_/uom-auth.mjs +334 -0
  81. package/.output/server/chunks/_/uom-auth.mjs.map +1 -0
  82. package/.output/server/chunks/_/uom-map.mjs +265 -0
  83. package/.output/server/chunks/_/uom-map.mjs.map +1 -0
  84. package/.output/server/chunks/build/Alert-0ngTJXxP.mjs +5076 -0
  85. package/.output/server/chunks/build/Alert-0ngTJXxP.mjs.map +1 -0
  86. package/.output/server/chunks/build/DashboardSidebarToggle-pncTaIJq.mjs +569 -0
  87. package/.output/server/chunks/build/DashboardSidebarToggle-pncTaIJq.mjs.map +1 -0
  88. package/.output/server/chunks/build/Empty-CkW3mADt.mjs +359 -0
  89. package/.output/server/chunks/build/Empty-CkW3mADt.mjs.map +1 -0
  90. package/.output/server/chunks/build/FocusScope-Cf0lg0zt.mjs +207 -0
  91. package/.output/server/chunks/build/FocusScope-Cf0lg0zt.mjs.map +1 -0
  92. package/.output/server/chunks/build/FormField-CEUZHcv7.mjs +278 -0
  93. package/.output/server/chunks/build/FormField-CEUZHcv7.mjs.map +1 -0
  94. package/.output/server/chunks/build/Input-BeNavYXb.mjs +592 -0
  95. package/.output/server/chunks/build/Input-BeNavYXb.mjs.map +1 -0
  96. package/.output/server/chunks/build/MapBaseLayerTabs-4445J6yh.mjs +2003 -0
  97. package/.output/server/chunks/build/MapBaseLayerTabs-4445J6yh.mjs.map +1 -0
  98. package/.output/server/chunks/build/Modal-DNZtVxca.mjs +1326 -0
  99. package/.output/server/chunks/build/Modal-DNZtVxca.mjs.map +1 -0
  100. package/.output/server/chunks/build/OnlineMap-CKwiuqUY.mjs +146 -0
  101. package/.output/server/chunks/build/OnlineMap-CKwiuqUY.mjs.map +1 -0
  102. package/.output/server/chunks/build/Pagination-CDHx4HTZ.mjs +1025 -0
  103. package/.output/server/chunks/build/Pagination-CDHx4HTZ.mjs.map +1 -0
  104. package/.output/server/chunks/build/PopperArrow-Bqfdf2Et.mjs +2066 -0
  105. package/.output/server/chunks/build/PopperArrow-Bqfdf2Et.mjs.map +1 -0
  106. package/.output/server/chunks/build/ScrollArea-BQK3em8b.mjs +379 -0
  107. package/.output/server/chunks/build/ScrollArea-BQK3em8b.mjs.map +1 -0
  108. package/.output/server/chunks/build/Slider-D-n8Y0CX.mjs +1087 -0
  109. package/.output/server/chunks/build/Slider-D-n8Y0CX.mjs.map +1 -0
  110. package/.output/server/chunks/build/Tooltip-CkpSktvJ.mjs +1345 -0
  111. package/.output/server/chunks/build/Tooltip-CkpSktvJ.mjs.map +1 -0
  112. package/.output/server/chunks/build/_virtual_public-CeOptKUP.mjs +7 -0
  113. package/.output/server/chunks/build/_virtual_public-CeOptKUP.mjs.map +1 -0
  114. package/.output/server/chunks/build/advanced-D1onodoF.mjs +1430 -0
  115. package/.output/server/chunks/build/advanced-D1onodoF.mjs.map +1 -0
  116. package/.output/server/chunks/build/compare-DmSAW8oA.mjs +1093 -0
  117. package/.output/server/chunks/build/compare-DmSAW8oA.mjs.map +1 -0
  118. package/.output/server/chunks/build/dashboard-BJxrZ19n.mjs +3217 -0
  119. package/.output/server/chunks/build/dashboard-BJxrZ19n.mjs.map +1 -0
  120. package/.output/server/chunks/build/details-CBMqXYyo.mjs +3714 -0
  121. package/.output/server/chunks/build/details-CBMqXYyo.mjs.map +1 -0
  122. package/.output/server/chunks/build/error-404-D9aQjJRn.mjs +86 -0
  123. package/.output/server/chunks/build/error-404-D9aQjJRn.mjs.map +1 -0
  124. package/.output/server/chunks/build/error-404-styles.DciiguV6.mjs +9 -0
  125. package/.output/server/chunks/build/error-404-styles.DciiguV6.mjs.map +1 -0
  126. package/.output/server/chunks/build/error-500-BNyA3wrb.mjs +74 -0
  127. package/.output/server/chunks/build/error-500-BNyA3wrb.mjs.map +1 -0
  128. package/.output/server/chunks/build/error-500-styles.C562DYMR.mjs +9 -0
  129. package/.output/server/chunks/build/error-500-styles.C562DYMR.mjs.map +1 -0
  130. package/.output/server/chunks/build/esm-Dp2lJXbp.mjs +1121 -0
  131. package/.output/server/chunks/build/esm-Dp2lJXbp.mjs.map +1 -0
  132. package/.output/server/chunks/build/interval-BxUMpo78.mjs +411 -0
  133. package/.output/server/chunks/build/interval-BxUMpo78.mjs.map +1 -0
  134. package/.output/server/chunks/build/login-lbtjN0MV.mjs +642 -0
  135. package/.output/server/chunks/build/login-lbtjN0MV.mjs.map +1 -0
  136. package/.output/server/chunks/build/pages-Ba0Eixbd.mjs +220 -0
  137. package/.output/server/chunks/build/pages-Ba0Eixbd.mjs.map +1 -0
  138. package/.output/server/chunks/build/services-DuJwjAB8.mjs +3005 -0
  139. package/.output/server/chunks/build/services-DuJwjAB8.mjs.map +1 -0
  140. package/.output/server/chunks/build/services-styles.eoO16BY9.mjs +9 -0
  141. package/.output/server/chunks/build/services-styles.eoO16BY9.mjs.map +1 -0
  142. package/.output/server/chunks/build/tasks-CyN9x492.mjs +915 -0
  143. package/.output/server/chunks/build/tasks-CyN9x492.mjs.map +1 -0
  144. package/.output/server/chunks/build/tasks-D_Q5EDnn.mjs +87 -0
  145. package/.output/server/chunks/build/tasks-D_Q5EDnn.mjs.map +1 -0
  146. package/.output/server/chunks/nitro/nitro.mjs +6215 -0
  147. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  148. package/.output/server/chunks/routes/api/auth/captcha.post.mjs +21 -0
  149. package/.output/server/chunks/routes/api/auth/captcha.post.mjs.map +1 -0
  150. package/.output/server/chunks/routes/api/auth/login.post.mjs +27 -0
  151. package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -0
  152. package/.output/server/chunks/routes/api/auth/logout.post.mjs +22 -0
  153. package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -0
  154. package/.output/server/chunks/routes/api/auth/map-token.post.mjs +22 -0
  155. package/.output/server/chunks/routes/api/auth/map-token.post.mjs.map +1 -0
  156. package/.output/server/chunks/routes/api/auth/send-sms.post.mjs +31 -0
  157. package/.output/server/chunks/routes/api/auth/send-sms.post.mjs.map +1 -0
  158. package/.output/server/chunks/routes/api/auth/status.get.mjs +21 -0
  159. package/.output/server/chunks/routes/api/auth/status.get.mjs.map +1 -0
  160. package/.output/server/chunks/routes/api/map/base/_baseLayer/_zoom/_tileX/_tileY_.get.mjs +44 -0
  161. package/.output/server/chunks/routes/api/map/base/_baseLayer/_zoom/_tileX/_tileY_.get.mjs.map +1 -0
  162. package/.output/server/chunks/routes/api/map/live/status.get.mjs +32 -0
  163. package/.output/server/chunks/routes/api/map/live/status.get.mjs.map +1 -0
  164. package/.output/server/chunks/routes/api/map/online/_layerGroup/_zoom/_tileX/_tileY_.get.mjs +48 -0
  165. package/.output/server/chunks/routes/api/map/online/_layerGroup/_zoom/_tileX/_tileY_.get.mjs.map +1 -0
  166. package/.output/server/chunks/routes/api/map/online-root/_layerGroup/_rootX/_rootY_.get.mjs +46 -0
  167. package/.output/server/chunks/routes/api/map/online-root/_layerGroup/_rootX/_rootY_.get.mjs.map +1 -0
  168. package/.output/server/chunks/routes/api/map-service/config.post.mjs +38 -0
  169. package/.output/server/chunks/routes/api/map-service/config.post.mjs.map +1 -0
  170. package/.output/server/chunks/routes/api/map-service/file.post.mjs +41 -0
  171. package/.output/server/chunks/routes/api/map-service/file.post.mjs.map +1 -0
  172. package/.output/server/chunks/routes/api/map-service/source.post.mjs +35 -0
  173. package/.output/server/chunks/routes/api/map-service/source.post.mjs.map +1 -0
  174. package/.output/server/chunks/routes/api/map-service/status.get.mjs +32 -0
  175. package/.output/server/chunks/routes/api/map-service/status.get.mjs.map +1 -0
  176. package/.output/server/chunks/routes/api/workspace/_filename/analysis.get.mjs +47 -0
  177. package/.output/server/chunks/routes/api/workspace/_filename/analysis.get.mjs.map +1 -0
  178. package/.output/server/chunks/routes/api/workspace/_filename/download.get.mjs +38 -0
  179. package/.output/server/chunks/routes/api/workspace/_filename/download.get.mjs.map +1 -0
  180. package/.output/server/chunks/routes/api/workspace/_filename/export/_format_.get.mjs +42 -0
  181. package/.output/server/chunks/routes/api/workspace/_filename/export/_format_.get.mjs.map +1 -0
  182. package/.output/server/chunks/routes/api/workspace/_filename/tile.get.mjs +48 -0
  183. package/.output/server/chunks/routes/api/workspace/_filename/tile.get.mjs.map +1 -0
  184. package/.output/server/chunks/routes/api/workspace/_filename/tiles.get.mjs +45 -0
  185. package/.output/server/chunks/routes/api/workspace/_filename/tiles.get.mjs.map +1 -0
  186. package/.output/server/chunks/routes/api/workspace/_filename_.delete.mjs +32 -0
  187. package/.output/server/chunks/routes/api/workspace/_filename_.delete.mjs.map +1 -0
  188. package/.output/server/chunks/routes/api/workspace/compare/batch.get.mjs +38 -0
  189. package/.output/server/chunks/routes/api/workspace/compare/batch.get.mjs.map +1 -0
  190. package/.output/server/chunks/routes/api/workspace/compare.post.mjs +33 -0
  191. package/.output/server/chunks/routes/api/workspace/compare.post.mjs.map +1 -0
  192. package/.output/server/chunks/routes/api/workspace/fetch.post.mjs +33 -0
  193. package/.output/server/chunks/routes/api/workspace/fetch.post.mjs.map +1 -0
  194. package/.output/server/chunks/routes/api/workspace/files.get.mjs +27 -0
  195. package/.output/server/chunks/routes/api/workspace/files.get.mjs.map +1 -0
  196. package/.output/server/chunks/routes/api/workspace/files.post.mjs +38 -0
  197. package/.output/server/chunks/routes/api/workspace/files.post.mjs.map +1 -0
  198. package/.output/server/chunks/routes/api/workspace/stop.post.mjs +32 -0
  199. package/.output/server/chunks/routes/api/workspace/stop.post.mjs.map +1 -0
  200. package/.output/server/chunks/routes/api/workspace/tasks.post.mjs +36 -0
  201. package/.output/server/chunks/routes/api/workspace/tasks.post.mjs.map +1 -0
  202. package/.output/server/chunks/routes/renderer.mjs +422 -0
  203. package/.output/server/chunks/routes/renderer.mjs.map +1 -0
  204. package/.output/server/chunks/routes/services/wms.get.mjs +54 -0
  205. package/.output/server/chunks/routes/services/wms.get.mjs.map +1 -0
  206. package/.output/server/chunks/routes/services/wmts.get.mjs +54 -0
  207. package/.output/server/chunks/routes/services/wmts.get.mjs.map +1 -0
  208. package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  209. package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  210. package/.output/server/chunks/virtual/entry.mjs +18545 -0
  211. package/.output/server/chunks/virtual/entry.mjs.map +1 -0
  212. package/.output/server/chunks/virtual/precomputed.mjs +4 -0
  213. package/.output/server/chunks/virtual/precomputed.mjs.map +1 -0
  214. package/.output/server/chunks/virtual/styles.mjs +10 -0
  215. package/.output/server/chunks/virtual/styles.mjs.map +1 -0
  216. package/.output/server/index.mjs +12 -0
  217. package/.output/server/index.mjs.map +1 -0
  218. package/.output/server/node_modules/@babel/parser/lib/index.js +14611 -0
  219. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  220. package/.output/server/node_modules/@iconify/utils/lib/colors/index.js +295 -0
  221. package/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +701 -0
  222. package/.output/server/node_modules/@iconify/utils/lib/css/common.js +75 -0
  223. package/.output/server/node_modules/@iconify/utils/lib/css/format.js +39 -0
  224. package/.output/server/node_modules/@iconify/utils/lib/css/icon.js +47 -0
  225. package/.output/server/node_modules/@iconify/utils/lib/css/icons.js +128 -0
  226. package/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +19 -0
  227. package/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +13 -0
  228. package/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +17 -0
  229. package/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +16 -0
  230. package/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +30 -0
  231. package/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +78 -0
  232. package/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +100 -0
  233. package/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +28 -0
  234. package/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +58 -0
  235. package/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +48 -0
  236. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +203 -0
  237. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +33 -0
  238. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +132 -0
  239. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +165 -0
  240. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +79 -0
  241. package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +92 -0
  242. package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +26 -0
  243. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +76 -0
  244. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +66 -0
  245. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +45 -0
  246. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +103 -0
  247. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +36 -0
  248. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +92 -0
  249. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +62 -0
  250. package/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +25 -0
  251. package/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +16 -0
  252. package/.output/server/node_modules/@iconify/utils/lib/icon/name.js +57 -0
  253. package/.output/server/node_modules/@iconify/utils/lib/icon/square.js +33 -0
  254. package/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +12 -0
  255. package/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +125 -0
  256. package/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +19 -0
  257. package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +25 -0
  258. package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +36 -0
  259. package/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +91 -0
  260. package/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +46 -0
  261. package/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +23 -0
  262. package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +42 -0
  263. package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +123 -0
  264. package/.output/server/node_modules/@iconify/utils/lib/index.js +52 -0
  265. package/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +30 -0
  266. package/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +26 -0
  267. package/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +27 -0
  268. package/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +105 -0
  269. package/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +26 -0
  270. package/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +26 -0
  271. package/.output/server/node_modules/@iconify/utils/lib/misc/title.js +9 -0
  272. package/.output/server/node_modules/@iconify/utils/lib/svg/build.js +113 -0
  273. package/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +31 -0
  274. package/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +13 -0
  275. package/.output/server/node_modules/@iconify/utils/lib/svg/html.js +9 -0
  276. package/.output/server/node_modules/@iconify/utils/lib/svg/id.js +41 -0
  277. package/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +22 -0
  278. package/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +67 -0
  279. package/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +54 -0
  280. package/.output/server/node_modules/@iconify/utils/lib/svg/size.js +27 -0
  281. package/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +7 -0
  282. package/.output/server/node_modules/@iconify/utils/lib/svg/url.js +22 -0
  283. package/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +8 -0
  284. package/.output/server/node_modules/@iconify/utils/package.json +119 -0
  285. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6801 -0
  286. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  287. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +692 -0
  288. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  289. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1420 -0
  290. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  291. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1903 -0
  292. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  293. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6976 -0
  294. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  295. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1841 -0
  296. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  297. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +904 -0
  298. package/.output/server/node_modules/@vue/server-renderer/package.json +53 -0
  299. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +609 -0
  300. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  301. package/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  302. package/.output/server/node_modules/consola/dist/core.mjs +512 -0
  303. package/.output/server/node_modules/consola/dist/index.mjs +651 -0
  304. package/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  305. package/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  306. package/.output/server/node_modules/consola/package.json +136 -0
  307. package/.output/server/node_modules/devalue/index.js +17 -0
  308. package/.output/server/node_modules/devalue/package.json +39 -0
  309. package/.output/server/node_modules/devalue/src/base64.js +60 -0
  310. package/.output/server/node_modules/devalue/src/constants.js +12 -0
  311. package/.output/server/node_modules/devalue/src/operations.js +193 -0
  312. package/.output/server/node_modules/devalue/src/parse.js +270 -0
  313. package/.output/server/node_modules/devalue/src/stringify.js +428 -0
  314. package/.output/server/node_modules/devalue/src/uneval.js +582 -0
  315. package/.output/server/node_modules/devalue/src/utils.js +185 -0
  316. package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  317. package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  318. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  319. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  320. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  321. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  322. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  323. package/.output/server/node_modules/entities/package.json +120 -0
  324. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  325. package/.output/server/node_modules/estree-walker/package.json +37 -0
  326. package/.output/server/node_modules/fflate/esm/index.mjs +2710 -0
  327. package/.output/server/node_modules/fflate/package.json +128 -0
  328. package/.output/server/node_modules/fnv1a-64/dist/index.mjs +95 -0
  329. package/.output/server/node_modules/fnv1a-64/package.json +75 -0
  330. package/.output/server/node_modules/hookable/dist/index.mjs +257 -0
  331. package/.output/server/node_modules/hookable/package.json +53 -0
  332. package/.output/server/node_modules/nostics/dist/formatters/ansi.mjs +19 -0
  333. package/.output/server/node_modules/nostics/dist/index.mjs +187 -0
  334. package/.output/server/node_modules/nostics/package.json +125 -0
  335. package/.output/server/node_modules/object-identity/index.js +60 -0
  336. package/.output/server/node_modules/object-identity/package.json +40 -0
  337. package/.output/server/node_modules/p-limit/index.js +104 -0
  338. package/.output/server/node_modules/p-limit/package.json +58 -0
  339. package/.output/server/node_modules/pmtiles/dist/esm/index.js +2 -0
  340. package/.output/server/node_modules/pmtiles/package.json +50 -0
  341. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  342. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  343. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  344. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  345. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  346. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  347. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  348. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  349. package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  350. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  351. package/.output/server/node_modules/source-map-js/package.json +71 -0
  352. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  353. package/.output/server/node_modules/tailwindcss/dist/chunk-DCG7AFIE.mjs +1 -0
  354. package/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
  355. package/.output/server/node_modules/tailwindcss/package.json +89 -0
  356. package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  357. package/.output/server/node_modules/ufo/package.json +48 -0
  358. package/.output/server/node_modules/unhead/dist/client.mjs +22 -0
  359. package/.output/server/node_modules/unhead/dist/index.mjs +52 -0
  360. package/.output/server/node_modules/unhead/dist/legacy.mjs +33 -0
  361. package/.output/server/node_modules/unhead/dist/minify.mjs +183 -0
  362. package/.output/server/node_modules/unhead/dist/parser.mjs +518 -0
  363. package/.output/server/node_modules/unhead/dist/plugins.mjs +631 -0
  364. package/.output/server/node_modules/unhead/dist/scripts.node.mjs +6 -0
  365. package/.output/server/node_modules/unhead/dist/server.mjs +99 -0
  366. package/.output/server/node_modules/unhead/dist/shared/unhead.BEmVMkeA.mjs +673 -0
  367. package/.output/server/node_modules/unhead/dist/shared/unhead.BGFxPGPQ.mjs +47 -0
  368. package/.output/server/node_modules/unhead/dist/shared/unhead.BQWSw36o.mjs +192 -0
  369. package/.output/server/node_modules/unhead/dist/shared/unhead.Bb4d5b9h.mjs +67 -0
  370. package/.output/server/node_modules/unhead/dist/shared/unhead.BdK3SLPN.mjs +585 -0
  371. package/.output/server/node_modules/unhead/dist/shared/unhead.Bf_fPVYA.mjs +6 -0
  372. package/.output/server/node_modules/unhead/dist/shared/unhead.Bm4Y6XQI.mjs +17 -0
  373. package/.output/server/node_modules/unhead/dist/shared/unhead.C3b2Ipoj.mjs +223 -0
  374. package/.output/server/node_modules/unhead/dist/shared/unhead.CGPOfp5O.mjs +32 -0
  375. package/.output/server/node_modules/unhead/dist/shared/unhead.CHEy9ana.mjs +7 -0
  376. package/.output/server/node_modules/unhead/dist/shared/unhead.CTjuIdzk.mjs +27 -0
  377. package/.output/server/node_modules/unhead/dist/shared/unhead.CfKy3Kuq.mjs +196 -0
  378. package/.output/server/node_modules/unhead/dist/shared/unhead.D7HkBzZn.mjs +59 -0
  379. package/.output/server/node_modules/unhead/dist/shared/unhead.DNKiVLV7.mjs +400 -0
  380. package/.output/server/node_modules/unhead/dist/shared/unhead.MC5RsXLj.mjs +19 -0
  381. package/.output/server/node_modules/unhead/dist/shared/unhead.jEy9BmRq.mjs +264 -0
  382. package/.output/server/node_modules/unhead/dist/shared/unhead.tQnRaXfX.mjs +240 -0
  383. package/.output/server/node_modules/unhead/dist/stream/client.mjs +28 -0
  384. package/.output/server/node_modules/unhead/dist/stream/iife.mjs +2 -0
  385. package/.output/server/node_modules/unhead/dist/stream/server.mjs +264 -0
  386. package/.output/server/node_modules/unhead/dist/utils.mjs +7 -0
  387. package/.output/server/node_modules/unhead/package.json +179 -0
  388. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  389. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  390. package/.output/server/node_modules/vue/index.js +7 -0
  391. package/.output/server/node_modules/vue/index.mjs +1 -0
  392. package/.output/server/node_modules/vue/package.json +112 -0
  393. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  394. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +278 -0
  395. package/.output/server/node_modules/vue-bundle-renderer/package.json +54 -0
  396. package/.output/server/node_modules/yocto-queue/index.js +90 -0
  397. package/.output/server/node_modules/yocto-queue/package.json +48 -0
  398. package/.output/server/node_modules/zod/index.js +4 -0
  399. package/.output/server/node_modules/zod/package.json +135 -0
  400. package/.output/server/node_modules/zod/v4/classic/checks.js +1 -0
  401. package/.output/server/node_modules/zod/v4/classic/coerce.js +17 -0
  402. package/.output/server/node_modules/zod/v4/classic/compat.js +31 -0
  403. package/.output/server/node_modules/zod/v4/classic/errors.js +48 -0
  404. package/.output/server/node_modules/zod/v4/classic/external.js +20 -0
  405. package/.output/server/node_modules/zod/v4/classic/from-json-schema.js +599 -0
  406. package/.output/server/node_modules/zod/v4/classic/iso.js +30 -0
  407. package/.output/server/node_modules/zod/v4/classic/package.json +7 -0
  408. package/.output/server/node_modules/zod/v4/classic/parse.js +15 -0
  409. package/.output/server/node_modules/zod/v4/classic/schemas.js +1395 -0
  410. package/.output/server/node_modules/zod/v4/core/api.js +1087 -0
  411. package/.output/server/node_modules/zod/v4/core/checks.js +575 -0
  412. package/.output/server/node_modules/zod/v4/core/core.js +78 -0
  413. package/.output/server/node_modules/zod/v4/core/doc.js +35 -0
  414. package/.output/server/node_modules/zod/v4/core/errors.js +185 -0
  415. package/.output/server/node_modules/zod/v4/core/index.js +16 -0
  416. package/.output/server/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  417. package/.output/server/node_modules/zod/v4/core/json-schema-processors.js +601 -0
  418. package/.output/server/node_modules/zod/v4/core/json-schema.js +1 -0
  419. package/.output/server/node_modules/zod/v4/core/package.json +7 -0
  420. package/.output/server/node_modules/zod/v4/core/parse.js +93 -0
  421. package/.output/server/node_modules/zod/v4/core/regexes.js +139 -0
  422. package/.output/server/node_modules/zod/v4/core/registries.js +51 -0
  423. package/.output/server/node_modules/zod/v4/core/schemas.js +2239 -0
  424. package/.output/server/node_modules/zod/v4/core/to-json-schema.js +448 -0
  425. package/.output/server/node_modules/zod/v4/core/util.js +674 -0
  426. package/.output/server/node_modules/zod/v4/core/versions.js +5 -0
  427. package/.output/server/node_modules/zod/v4/locales/ar.js +106 -0
  428. package/.output/server/node_modules/zod/v4/locales/az.js +105 -0
  429. package/.output/server/node_modules/zod/v4/locales/be.js +156 -0
  430. package/.output/server/node_modules/zod/v4/locales/bg.js +120 -0
  431. package/.output/server/node_modules/zod/v4/locales/ca.js +107 -0
  432. package/.output/server/node_modules/zod/v4/locales/cs.js +111 -0
  433. package/.output/server/node_modules/zod/v4/locales/da.js +115 -0
  434. package/.output/server/node_modules/zod/v4/locales/de.js +108 -0
  435. package/.output/server/node_modules/zod/v4/locales/el.js +109 -0
  436. package/.output/server/node_modules/zod/v4/locales/en.js +113 -0
  437. package/.output/server/node_modules/zod/v4/locales/eo.js +109 -0
  438. package/.output/server/node_modules/zod/v4/locales/es.js +132 -0
  439. package/.output/server/node_modules/zod/v4/locales/fa.js +114 -0
  440. package/.output/server/node_modules/zod/v4/locales/fi.js +112 -0
  441. package/.output/server/node_modules/zod/v4/locales/fr-CA.js +107 -0
  442. package/.output/server/node_modules/zod/v4/locales/fr.js +125 -0
  443. package/.output/server/node_modules/zod/v4/locales/he.js +214 -0
  444. package/.output/server/node_modules/zod/v4/locales/hr.js +122 -0
  445. package/.output/server/node_modules/zod/v4/locales/hu.js +108 -0
  446. package/.output/server/node_modules/zod/v4/locales/hy.js +147 -0
  447. package/.output/server/node_modules/zod/v4/locales/id.js +106 -0
  448. package/.output/server/node_modules/zod/v4/locales/index.js +52 -0
  449. package/.output/server/node_modules/zod/v4/locales/is.js +109 -0
  450. package/.output/server/node_modules/zod/v4/locales/it.js +108 -0
  451. package/.output/server/node_modules/zod/v4/locales/ja.js +107 -0
  452. package/.output/server/node_modules/zod/v4/locales/ka.js +112 -0
  453. package/.output/server/node_modules/zod/v4/locales/kh.js +5 -0
  454. package/.output/server/node_modules/zod/v4/locales/km.js +110 -0
  455. package/.output/server/node_modules/zod/v4/locales/ko.js +111 -0
  456. package/.output/server/node_modules/zod/v4/locales/lt.js +203 -0
  457. package/.output/server/node_modules/zod/v4/locales/mk.js +109 -0
  458. package/.output/server/node_modules/zod/v4/locales/ms.js +107 -0
  459. package/.output/server/node_modules/zod/v4/locales/nl.js +110 -0
  460. package/.output/server/node_modules/zod/v4/locales/no.js +108 -0
  461. package/.output/server/node_modules/zod/v4/locales/ota.js +109 -0
  462. package/.output/server/node_modules/zod/v4/locales/package.json +7 -0
  463. package/.output/server/node_modules/zod/v4/locales/pl.js +109 -0
  464. package/.output/server/node_modules/zod/v4/locales/ps.js +114 -0
  465. package/.output/server/node_modules/zod/v4/locales/pt.js +108 -0
  466. package/.output/server/node_modules/zod/v4/locales/ro.js +119 -0
  467. package/.output/server/node_modules/zod/v4/locales/ru.js +156 -0
  468. package/.output/server/node_modules/zod/v4/locales/sl.js +109 -0
  469. package/.output/server/node_modules/zod/v4/locales/sv.js +110 -0
  470. package/.output/server/node_modules/zod/v4/locales/ta.js +110 -0
  471. package/.output/server/node_modules/zod/v4/locales/th.js +110 -0
  472. package/.output/server/node_modules/zod/v4/locales/tr.js +105 -0
  473. package/.output/server/node_modules/zod/v4/locales/ua.js +5 -0
  474. package/.output/server/node_modules/zod/v4/locales/uk.js +108 -0
  475. package/.output/server/node_modules/zod/v4/locales/ur.js +110 -0
  476. package/.output/server/node_modules/zod/v4/locales/uz.js +110 -0
  477. package/.output/server/node_modules/zod/v4/locales/vi.js +108 -0
  478. package/.output/server/node_modules/zod/v4/locales/yo.js +107 -0
  479. package/.output/server/node_modules/zod/v4/locales/zh-CN.js +109 -0
  480. package/.output/server/node_modules/zod/v4/locales/zh-TW.js +107 -0
  481. package/.output/server/package.json +37 -0
  482. package/LICENSE +3 -0
  483. package/README.md +125 -0
  484. package/dist/src/bbox.js +55 -0
  485. package/dist/src/cli.js +255 -0
  486. package/dist/src/config.js +56 -0
  487. package/dist/src/core/fetch-process.js +19 -0
  488. package/dist/src/core/grid-renderer.js +149 -0
  489. package/dist/src/core/lease.js +103 -0
  490. package/dist/src/core/paths.js +13 -0
  491. package/dist/src/core/png.js +192 -0
  492. package/dist/src/core/raster-style.js +33 -0
  493. package/dist/src/core/uomtiles.js +307 -0
  494. package/dist/src/fetcher.js +208 -0
  495. package/dist/src/geographic-grid.js +162 -0
  496. package/dist/src/grid-crawl.js +478 -0
  497. package/dist/src/mask-image.js +16 -0
  498. package/dist/src/official-grid.js +51 -0
  499. package/dist/src/quality.js +30 -0
  500. package/dist/src/token.js +206 -0
  501. package/package.json +68 -0
  502. package/public/apple-touch-icon.png +0 -0
  503. package/public/favicon.ico +0 -0
  504. package/public/favicon.svg +8 -0
  505. package/public/icon-192.png +0 -0
  506. package/public/icon-512.png +0 -0
  507. package/public/site.webmanifest +11 -0
@@ -0,0 +1,631 @@
1
+ export { A as AliasSortingPlugin, D as DeprecationsPlugin, P as PromisesPlugin, T as TemplateParamsPlugin } from './shared/unhead.tQnRaXfX.mjs';
2
+ import { d as defineHeadPlugin } from './shared/unhead.CHEy9ana.mjs';
3
+ export { F as FlatMetaPlugin, S as SafeInputPlugin } from './shared/unhead.jEy9BmRq.mjs';
4
+ import { h as hasContent } from './shared/unhead.CGPOfp5O.mjs';
5
+ import { minifyJS, minifyCSS, minifyJSON } from './minify.mjs';
6
+ import { t as tagInputFromRuntime, u as tagPredicates, i as inputShapeFromRuntime, b as inputShapePredicates, U as URL_META_KEYS, v as titleInputFromRuntime, h as headInputPredicates } from './shared/unhead.BEmVMkeA.mjs';
7
+ import './shared/unhead.BGFxPGPQ.mjs';
8
+ import './shared/unhead.BQWSw36o.mjs';
9
+
10
+ const META_TRANSFORMABLE_URL = [
11
+ "og:url",
12
+ "og:image",
13
+ "og:image:url",
14
+ "og:image:secure_url",
15
+ "twitter:image",
16
+ "twitter:image:src",
17
+ "og:video",
18
+ "og:video:url",
19
+ "og:video:secure_url",
20
+ "og:audio",
21
+ "og:audio:url",
22
+ "og:audio:secure_url",
23
+ "twitter:player",
24
+ "twitter:player:stream"
25
+ ];
26
+ const LINK_REL_RESOLVABLE = /* @__PURE__ */ new Set([
27
+ "canonical",
28
+ "next",
29
+ "prev",
30
+ "alternate",
31
+ "author",
32
+ "license",
33
+ "help",
34
+ "search",
35
+ "pingback"
36
+ ]);
37
+ const META_CANONICAL_URL = /* @__PURE__ */ new Set([
38
+ "og:url"
39
+ ]);
40
+ function CanonicalPlugin(options) {
41
+ return (head) => {
42
+ let host = options.canonicalHost || (!head.ssr ? window.location.origin : "");
43
+ if (!host.startsWith("http") && !host.startsWith("//")) {
44
+ host = `https://${host}`;
45
+ }
46
+ host = new URL(host).origin;
47
+ const whitelist = options.queryWhitelist !== void 0 ? options.queryWhitelist : [];
48
+ function normalizeCanonicalUrl(url) {
49
+ try {
50
+ const parsed = new URL(url, host);
51
+ parsed.hash = "";
52
+ if (whitelist !== false && parsed.search) {
53
+ const filtered = new URLSearchParams();
54
+ for (const key of whitelist) {
55
+ if (parsed.searchParams.has(key)) {
56
+ for (const value of parsed.searchParams.getAll(key)) {
57
+ filtered.append(key, value);
58
+ }
59
+ }
60
+ }
61
+ parsed.search = filtered.toString();
62
+ }
63
+ if (options.trailingSlash === true && !parsed.pathname.endsWith("/")) {
64
+ parsed.pathname = `${parsed.pathname}/`;
65
+ } else if (options.trailingSlash === false && parsed.pathname !== "/" && parsed.pathname.endsWith("/")) {
66
+ parsed.pathname = parsed.pathname.slice(0, -1);
67
+ }
68
+ return parsed.toString();
69
+ } catch {
70
+ return url;
71
+ }
72
+ }
73
+ function resolvePath(path) {
74
+ if (options?.customResolver) {
75
+ return options.customResolver(path);
76
+ }
77
+ if (path.startsWith("http") || path.startsWith("//"))
78
+ return path;
79
+ try {
80
+ return new URL(path, host).toString();
81
+ } catch {
82
+ return path;
83
+ }
84
+ }
85
+ return {
86
+ key: "canonical",
87
+ hooks: {
88
+ "tags:resolve": (ctx) => {
89
+ for (const tag of ctx.tags) {
90
+ const metaKey = tag.props?.property || tag.props?.name;
91
+ if (tag.tag === "meta" && META_TRANSFORMABLE_URL.includes(metaKey)) {
92
+ tag.props.content = resolvePath(tag.props.content);
93
+ if (META_CANONICAL_URL.has(metaKey)) {
94
+ tag.props.content = normalizeCanonicalUrl(tag.props.content);
95
+ }
96
+ } else if (tag.tag === "link" && LINK_REL_RESOLVABLE.has(tag.props.rel)) {
97
+ const isCanonical = tag.props.rel === "canonical";
98
+ tag.props.href = resolvePath(tag.props.href);
99
+ if (isCanonical) {
100
+ tag.props.href = normalizeCanonicalUrl(tag.props.href);
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ };
107
+ };
108
+ }
109
+
110
+ function InferSeoMetaPlugin(options = {}) {
111
+ return defineHeadPlugin((head) => {
112
+ if (options.twitterCard !== false) {
113
+ head.push({
114
+ meta: [
115
+ {
116
+ name: "twitter:card",
117
+ content: options.twitterCard || "summary_large_image",
118
+ tagPriority: "low"
119
+ }
120
+ ]
121
+ });
122
+ }
123
+ head.push({
124
+ meta: [
125
+ // content is intentionally omitted - inferred from title/description by the hook below
126
+ {
127
+ "property": "og:title",
128
+ "tagPriority": "low",
129
+ "data-infer": ""
130
+ },
131
+ {
132
+ "property": "og:description",
133
+ "tagPriority": "low",
134
+ "data-infer": ""
135
+ }
136
+ ]
137
+ });
138
+ return {
139
+ key: "infer-seo-meta",
140
+ hooks: {
141
+ "tags:beforeResolve": ({ tagMap }) => {
142
+ let title = head._titleTemplate || head._title;
143
+ const ogTitle = tagMap.get("meta:og:title");
144
+ if (typeof ogTitle?.props["data-infer"] !== "undefined") {
145
+ if (typeof title === "function") {
146
+ title = title(head._title);
147
+ }
148
+ title = hasContent(title) ? String(title) : void 0;
149
+ ogTitle.props.content = options.ogTitle ? options.ogTitle(title) : title || "";
150
+ ogTitle.processTemplateParams = true;
151
+ }
152
+ const descriptionValue = tagMap.get("meta:description")?.props?.content;
153
+ const description = hasContent(descriptionValue) ? String(descriptionValue) : void 0;
154
+ const ogDescription = tagMap.get("meta:og:description");
155
+ if (typeof ogDescription?.props["data-infer"] !== "undefined") {
156
+ ogDescription.props.content = options.ogDescription ? options.ogDescription(description) : description || "";
157
+ ogDescription.processTemplateParams = true;
158
+ }
159
+ }
160
+ }
161
+ };
162
+ }, "infer-seo-meta");
163
+ }
164
+
165
+ const JSON_TYPES = /* @__PURE__ */ new Set(["application/json", "application/ld+json", "speculationrules", "importmap"]);
166
+ function MinifyPlugin(options) {
167
+ const jsMinify = options?.js === false ? false : options?.js || minifyJS;
168
+ const cssMinify = options?.css === false ? false : options?.css || minifyCSS;
169
+ const jsonMinify = options?.json !== false;
170
+ const omitLineBreaks = options?.omitLineBreaks === true;
171
+ return {
172
+ key: "minify",
173
+ hooks: {
174
+ "ssr:render": (ctx) => {
175
+ if (omitLineBreaks)
176
+ ctx.options.omitLineBreaks = true;
177
+ for (const tag of ctx.tags) {
178
+ const content = tag.innerHTML;
179
+ if (!content || content.length < 20)
180
+ continue;
181
+ if (tag.tag === "script") {
182
+ const type = tag.props?.type;
183
+ if (type && JSON_TYPES.has(type)) {
184
+ if (jsonMinify) {
185
+ const min = minifyJSON(content);
186
+ if (min.length < content.length)
187
+ tag.innerHTML = min;
188
+ }
189
+ continue;
190
+ }
191
+ if (jsMinify) {
192
+ const min = jsMinify(content);
193
+ if (min.length < content.length)
194
+ tag.innerHTML = min;
195
+ }
196
+ } else if (tag.tag === "style" && cssMinify) {
197
+ const min = cssMinify(content);
198
+ if (min.length < content.length)
199
+ tag.innerHTML = min;
200
+ }
201
+ }
202
+ }
203
+ }
204
+ };
205
+ }
206
+
207
+ const TEMPLATE_PARAM_RE = /%\w+(?:\.\w+)?%/;
208
+ const AT_PREFIX_RE = /^at\s+/;
209
+ const SLACK_TWITTER_META_NAMES = /* @__PURE__ */ new Set([
210
+ "twitter:data1",
211
+ "twitter:data2",
212
+ "twitter:label1",
213
+ "twitter:label2"
214
+ ]);
215
+ const PREDICATE_SEVERITY = {
216
+ "defer-on-module-script": "info",
217
+ "deprecated-prop-body": "warn",
218
+ "deprecated-prop-children": "warn",
219
+ "deprecated-prop-hid-vmid": "warn",
220
+ "empty-meta-content": "warn",
221
+ "html-in-title": "warn",
222
+ "invalid-input-shape": "warn",
223
+ "non-absolute-canonical": "warn",
224
+ "numeric-tag-priority": "info",
225
+ "possible-typo": "warn",
226
+ "preload-font-crossorigin": "warn",
227
+ "preload-missing-as": "warn",
228
+ "robots-conflict": "warn",
229
+ "script-src-with-content": "warn",
230
+ "twitter-handle-missing-at": "warn",
231
+ "viewport-user-scalable": "info"
232
+ };
233
+ function isAbsoluteUrl(url) {
234
+ return url.startsWith("http://") || url.startsWith("https://");
235
+ }
236
+ function extractOrigin(url) {
237
+ if (!isAbsoluteUrl(url))
238
+ return void 0;
239
+ const slash = url.indexOf("/", url.indexOf("//") + 2);
240
+ return slash === -1 ? url : url.slice(0, slash);
241
+ }
242
+ function resolveSeverity(config, fallback) {
243
+ if (config == null)
244
+ return fallback;
245
+ return Array.isArray(config) ? config[0] : config;
246
+ }
247
+ function resolveOptions(config, id, defaults) {
248
+ const entry = config[id];
249
+ if (Array.isArray(entry))
250
+ return { ...defaults, ...entry[1] };
251
+ return defaults;
252
+ }
253
+ function captureSource(root) {
254
+ const stack = new Error("source").stack;
255
+ if (!stack)
256
+ return void 0;
257
+ const lines = stack.split("\n");
258
+ for (let i = 4; i < lines.length; i++) {
259
+ const line = lines[i].trim();
260
+ if (line && !line.includes("node_modules") && !line.includes("unhead/src/")) {
261
+ let source = line.replace(AT_PREFIX_RE, "");
262
+ if (root) {
263
+ const prefix = root.endsWith("/") ? root : `${root}/`;
264
+ source = source.replace(prefix, "./");
265
+ }
266
+ return source;
267
+ }
268
+ }
269
+ return void 0;
270
+ }
271
+ function createInputShapeObserver() {
272
+ let remainingRootKeys;
273
+ let resolvedValues;
274
+ const resolver = (key, value) => {
275
+ if (key === void 0) {
276
+ if (value?.constructor === Object) {
277
+ remainingRootKeys = new Set(Object.keys(value));
278
+ resolvedValues = /* @__PURE__ */ new Map();
279
+ } else {
280
+ remainingRootKeys = void 0;
281
+ resolvedValues = void 0;
282
+ }
283
+ } else if (remainingRootKeys?.delete(key)) {
284
+ resolvedValues?.set(key, value);
285
+ }
286
+ return value;
287
+ };
288
+ resolver._static = true;
289
+ return {
290
+ resolver,
291
+ take() {
292
+ const input = resolvedValues ? Object.fromEntries(resolvedValues) : void 0;
293
+ remainingRootKeys = void 0;
294
+ resolvedValues = void 0;
295
+ return input;
296
+ }
297
+ };
298
+ }
299
+ function ValidatePlugin(options = {}) {
300
+ const ruleConfig = options.rules || {};
301
+ const root = options.root;
302
+ const stacks = /* @__PURE__ */ new Map();
303
+ return defineHeadPlugin((head) => {
304
+ const pendingInputDiagnostics = [];
305
+ const inputShapeObserver = createInputShapeObserver();
306
+ head.resolvedOptions.propResolvers = [
307
+ ...head.resolvedOptions.propResolvers || [],
308
+ inputShapeObserver.resolver
309
+ ];
310
+ const hooks = head.hooks;
311
+ if (hooks) {
312
+ const _callHook = hooks.callHook.bind(hooks);
313
+ let warnedAsyncHook = false;
314
+ hooks.callHook = (name, ...args) => {
315
+ const result = _callHook(name, ...args);
316
+ if (result?.then && !warnedAsyncHook) {
317
+ warnedAsyncHook = true;
318
+ console.warn(`[unhead] promise ignored: ${name}`);
319
+ }
320
+ return result;
321
+ };
322
+ }
323
+ const _push = head.push.bind(head);
324
+ head.push = (input, opts) => {
325
+ if (opts?.mode && resolveSeverity(ruleConfig["deprecated-option-mode"], "warn") !== "off") {
326
+ console.warn(`[unhead] "mode: '${opts.mode}'" option was removed in v3. Use the appropriate createHead import (unhead/client or unhead/server) instead.`);
327
+ }
328
+ const source = captureSource(root);
329
+ const active = _push(input, opts);
330
+ if (source)
331
+ stacks.set(active._i, source);
332
+ const _dispose = active.dispose;
333
+ active.dispose = () => {
334
+ stacks.delete(active._i);
335
+ _dispose();
336
+ };
337
+ return active;
338
+ };
339
+ return {
340
+ key: "validate",
341
+ hooks: {
342
+ "entries:normalize": ({ entry }) => {
343
+ const input = inputShapeObserver.take();
344
+ if (!input || input.constructor !== Object)
345
+ return;
346
+ const shape = inputShapeFromRuntime("head", input);
347
+ for (const predicate of Object.values(inputShapePredicates)) {
348
+ for (const diagnostic of predicate(shape))
349
+ pendingInputDiagnostics.push({ diagnostic, entryIndex: entry._i });
350
+ }
351
+ },
352
+ "tags:afterResolve": ({ tags }) => {
353
+ const rules = [];
354
+ function report(id, message, defaultSeverity, tag, inputEntryIndex) {
355
+ const severity = resolveSeverity(ruleConfig[id], defaultSeverity);
356
+ if (severity === "off")
357
+ return;
358
+ const entryIndex = inputEntryIndex ?? (tag?._p != null ? tag._p >> 10 : void 0);
359
+ const source = entryIndex != null ? stacks.get(entryIndex) : void 0;
360
+ rules.push({ id, message, severity, source, tag });
361
+ }
362
+ for (const { diagnostic, entryIndex } of pendingInputDiagnostics) {
363
+ const severity = PREDICATE_SEVERITY[diagnostic.ruleId] ?? "warn";
364
+ report(diagnostic.ruleId, diagnostic.message, severity, void 0, entryIndex);
365
+ }
366
+ pendingInputDiagnostics.length = 0;
367
+ const metaByKey = /* @__PURE__ */ new Map();
368
+ let canonicalHref;
369
+ let hasOgTags = false;
370
+ let hasTitle = false;
371
+ let hasDescription = false;
372
+ let isIndexable = true;
373
+ for (const tag of tags) {
374
+ if (tag.tag === "title")
375
+ hasTitle = true;
376
+ if (tag.tag === "meta") {
377
+ const key = tag.props.property || (tag.props.name ? String(tag.props.name).toLowerCase() : void 0);
378
+ if (key) {
379
+ metaByKey.set(key, tag);
380
+ if (key.startsWith("og:"))
381
+ hasOgTags = true;
382
+ if (key === "description")
383
+ hasDescription = true;
384
+ if (key === "robots" && String(tag.props.content ?? "").toLowerCase().includes("noindex"))
385
+ isIndexable = false;
386
+ }
387
+ }
388
+ if (tag.tag === "link" && tag.props.rel === "canonical")
389
+ canonicalHref = tag.props.href;
390
+ }
391
+ function emitFromPredicates(diagnostics, tag) {
392
+ for (const diag of diagnostics) {
393
+ const sev = PREDICATE_SEVERITY[diag.ruleId] ?? "warn";
394
+ report(diag.ruleId, diag.message, sev, tag);
395
+ }
396
+ }
397
+ for (const tag of tags) {
398
+ const { props } = tag;
399
+ const metaKey = props.property || (props.name ? String(props.name).toLowerCase() : void 0);
400
+ const tagInput = tagInputFromRuntime(tag);
401
+ if (tagInput) {
402
+ for (const predicate of Object.values(tagPredicates))
403
+ emitFromPredicates(predicate(tagInput), tag);
404
+ }
405
+ if (tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs") {
406
+ const inputShape = inputShapeFromRuntime(tag.tag, tag.props);
407
+ for (const predicate of Object.values(inputShapePredicates))
408
+ emitFromPredicates(predicate(inputShape), tag);
409
+ }
410
+ if (tag.tag === "meta" && typeof metaKey === "string") {
411
+ const normalizedMetaKey = metaKey.toLowerCase();
412
+ if (normalizedMetaKey.startsWith("twitter:") && !SLACK_TWITTER_META_NAMES.has(normalizedMetaKey))
413
+ report("deprecated-twitter-meta", `${normalizedMetaKey} is deprecated. Use Open Graph metadata instead.`, "warn", tag);
414
+ }
415
+ if (tag.tag === "meta" && metaKey && URL_META_KEYS.has(metaKey)) {
416
+ const content = String(props.content ?? "");
417
+ if (content && !isAbsoluteUrl(content))
418
+ report("non-absolute-og-url", `${metaKey} should be an absolute URL, received "${content}".`, "warn", tag);
419
+ }
420
+ if (tag.tag === "meta" && metaKey) {
421
+ const content = String(props.content ?? "");
422
+ if (content && TEMPLATE_PARAM_RE.test(content))
423
+ report("unresolved-template-param", `Unresolved template param in ${metaKey}: "${content}".`, "warn", tag);
424
+ }
425
+ if (tag.tag === "title") {
426
+ const titleInput = titleInputFromRuntime(tag);
427
+ if (titleInput) {
428
+ for (const diag of headInputPredicates["no-html-in-title"](titleInput))
429
+ report(diag.ruleId, diag.message, "warn", tag);
430
+ }
431
+ const text = String(tag.textContent ?? "");
432
+ if (TEMPLATE_PARAM_RE.test(text))
433
+ report("unresolved-template-param", `Unresolved template param in title: "${text}".`, "warn", tag);
434
+ if (!text.trim())
435
+ report("empty-title", `Title tag is empty. If using titleTemplate, ensure it produces output.`, "warn", tag);
436
+ }
437
+ if (tag.tag === "script" && props.src && !props.async && !props.defer && props.type !== "module" && (!tag.tagPosition || tag.tagPosition === "head"))
438
+ report("render-blocking-script", `Script "${props.src}" is render-blocking. Add "async", "defer", or use type="module" to avoid blocking the critical rendering path.`, "warn", tag);
439
+ if (tag.tag === "link" && props.rel === "preload" && props.fetchpriority === "low" && props.as !== "script")
440
+ report("preload-fetchpriority-conflict", `Preload with fetchpriority="low" is contradictory \u2014 preload signals critical, low priority contradicts that.`, "warn", tag);
441
+ if (tag.tag === "style" && (tag.innerHTML || tag.textContent)) {
442
+ const content = tag.innerHTML || tag.textContent || "";
443
+ const sizeKB = new TextEncoder().encode(content).byteLength / 1024;
444
+ const { maxKB: styleMaxKB } = resolveOptions(ruleConfig, "inline-style-size", { maxKB: 14 });
445
+ if (sizeKB > styleMaxKB)
446
+ report("inline-style-size", `Inline <style> is ${sizeKB.toFixed(1)}KB \u2014 exceeds ${styleMaxKB}KB critical CSS budget. Consider moving to an external stylesheet for cacheability.`, "info", tag);
447
+ }
448
+ if (tag.tag === "script" && !props.src && (tag.innerHTML || tag.textContent)) {
449
+ const content = tag.innerHTML || tag.textContent || "";
450
+ const sizeKB = new TextEncoder().encode(content).byteLength / 1024;
451
+ const { maxKB: scriptMaxKB } = resolveOptions(ruleConfig, "inline-script-size", { maxKB: 2 });
452
+ if (sizeKB > scriptMaxKB)
453
+ report("inline-script-size", `Inline <script> is ${sizeKB.toFixed(1)}KB \u2014 consider moving to an external file for cacheability.`, "info", tag);
454
+ }
455
+ }
456
+ const ogUrl = metaByKey.get("og:url");
457
+ if (canonicalHref && ogUrl?.props.content && canonicalHref !== ogUrl.props.content)
458
+ report("canonical-og-url-mismatch", `Canonical URL "${canonicalHref}" differs from og:url "${ogUrl.props.content}".`, "warn", ogUrl);
459
+ if (metaByKey.has("og:image") && (!metaByKey.has("og:image:width") || !metaByKey.has("og:image:height")))
460
+ report("og-image-missing-dimensions", `og:image is set but og:image:width and/or og:image:height are missing \u2014 social platforms may not display the image.`, "warn", metaByKey.get("og:image"));
461
+ if (hasOgTags) {
462
+ if (!metaByKey.has("og:title"))
463
+ report("og-missing-title", `Open Graph tags are present but og:title is missing.`, "warn");
464
+ if (!metaByKey.has("og:description"))
465
+ report("og-missing-description", `Open Graph tags are present but og:description is missing.`, "warn");
466
+ }
467
+ if (!hasTitle)
468
+ report("missing-title", `Page is missing a <title> tag.`, "warn");
469
+ if (!hasDescription && isIndexable)
470
+ report("missing-description", `Page is missing a meta description and is indexable by search engines.`, "warn");
471
+ const { max: maxPreloads } = resolveOptions(ruleConfig, "too-many-preloads", { max: 6 });
472
+ const preloadCount = tags.filter((t) => t.tag === "link" && t.props.rel === "preload").length;
473
+ if (preloadCount > maxPreloads)
474
+ report("too-many-preloads", `Found ${preloadCount} preload links \u2014 more than ${maxPreloads} preloads compete for bandwidth and can hurt performance.`, "warn");
475
+ const { max: maxPrefetches } = resolveOptions(ruleConfig, "too-many-prefetches", { max: 50 });
476
+ const prefetchCount = tags.filter((t) => t.tag === "link" && t.props.rel === "prefetch").length;
477
+ if (prefetchCount > maxPrefetches)
478
+ report("too-many-prefetches", `Found ${prefetchCount} prefetch links. The configured maximum of ${maxPrefetches} is an advisory guardrail, not a standards limit. Large speculative fetch sets can consume bandwidth and cache capacity.`, "info");
479
+ const { max: maxPreconnects } = resolveOptions(ruleConfig, "too-many-preconnects", { max: 4 });
480
+ const preconnectCount = tags.filter((t) => t.tag === "link" && t.props.rel === "preconnect").length;
481
+ if (preconnectCount > maxPreconnects)
482
+ report("too-many-preconnects", `Found ${preconnectCount} preconnect links \u2014 each initiates a TCP+TLS handshake, more than ${maxPreconnects} compete for limited connections.`, "warn");
483
+ const preconnectOrigins = /* @__PURE__ */ new Set();
484
+ const dnsPrefetchTags = [];
485
+ for (const tag of tags) {
486
+ if (tag.tag === "link" && tag.props.href) {
487
+ if (tag.props.rel === "preconnect")
488
+ preconnectOrigins.add(tag.props.href);
489
+ else if (tag.props.rel === "dns-prefetch")
490
+ dnsPrefetchTags.push(tag);
491
+ }
492
+ }
493
+ for (const tag of dnsPrefetchTags) {
494
+ if (preconnectOrigins.has(tag.props.href))
495
+ report("redundant-dns-prefetch", `dns-prefetch for "${tag.props.href}" is redundant \u2014 preconnect already includes DNS resolution.`, "info", tag);
496
+ }
497
+ const preloadScriptHrefs = /* @__PURE__ */ new Map();
498
+ for (const tag of tags) {
499
+ if (tag.tag === "link" && tag.props.rel === "preload" && tag.props.as === "script" && tag.props.href && tag.props.fetchpriority !== "low")
500
+ preloadScriptHrefs.set(tag.props.href, tag);
501
+ }
502
+ for (const tag of tags) {
503
+ if (tag.tag === "script" && tag.props.src && (tag.props.async || tag.props.defer)) {
504
+ const preloadTag = preloadScriptHrefs.get(tag.props.src);
505
+ if (preloadTag) {
506
+ const attr = tag.props.async ? "async" : "defer";
507
+ report("preload-async-defer-conflict", `Script "${tag.props.src}" is preloaded but has "${attr}" \u2014 preload escalates priority, defeating the purpose of ${attr}. Remove the preload or add fetchpriority="low" to the script.`, "warn", preloadTag);
508
+ }
509
+ }
510
+ }
511
+ const preloadHrefs = /* @__PURE__ */ new Set();
512
+ for (const tag of tags) {
513
+ if (tag.tag === "link" && tag.props.rel === "preload" && tag.props.href)
514
+ preloadHrefs.add(tag.props.href);
515
+ }
516
+ for (const tag of tags) {
517
+ if (tag.tag === "link" && tag.props.rel === "prefetch" && tag.props.href && preloadHrefs.has(tag.props.href))
518
+ report("prefetch-preload-conflict", `"${tag.props.href}" has both preload and prefetch \u2014 use preload for current page resources, prefetch for future navigation.`, "warn", tag);
519
+ }
520
+ if (!head.plugins.has("template-params")) {
521
+ const tpTag = tags.find((t) => t.tag === "templateParams");
522
+ if (tpTag)
523
+ report("missing-template-params-plugin", `templateParams are set but TemplateParamsPlugin is not registered. In v3, this plugin is opt-in. Add it to createHead({ plugins: [TemplateParamsPlugin] }).`, "warn", tpTag);
524
+ }
525
+ if (!head.plugins.has("aliasSorting")) {
526
+ for (const tag of tags) {
527
+ const p = typeof tag.tagPriority === "string" ? tag.tagPriority : "";
528
+ if (p.startsWith("before:") || p.startsWith("after:")) {
529
+ report("missing-alias-sorting-plugin", `Tag priority alias "${p}" requires AliasSortingPlugin. In v3, this plugin is opt-in. Add it to createHead({ plugins: [AliasSortingPlugin] }).`, "warn", tag);
530
+ break;
531
+ }
532
+ }
533
+ }
534
+ const { max: maxHighPriority } = resolveOptions(ruleConfig, "too-many-fetchpriority-high", { max: 2 });
535
+ const highPriorityCount = tags.filter((t) => t.props.fetchpriority === "high").length;
536
+ if (highPriorityCount > maxHighPriority)
537
+ report("too-many-fetchpriority-high", `Found ${highPriorityCount} resources with fetchpriority="high". When everything is high priority, nothing is. Limit to ${maxHighPriority} for the signal to be effective.`, "warn");
538
+ const resourceHintsSeen = /* @__PURE__ */ new Map();
539
+ for (const tag of tags) {
540
+ if (tag.tag === "link" && tag.props.href && (tag.props.rel === "preload" || tag.props.rel === "prefetch" || tag.props.rel === "preconnect")) {
541
+ const crossoriginSuffix = tag.props.rel === "preconnect" && "crossorigin" in tag.props ? ":cors" : "";
542
+ const key = `${tag.props.rel}:${tag.props.href}${crossoriginSuffix}`;
543
+ if (resourceHintsSeen.has(key))
544
+ report("duplicate-resource-hint", `Duplicate ${tag.props.rel} for "${tag.props.href}".`, "warn", tag);
545
+ else
546
+ resourceHintsSeen.set(key, tag);
547
+ }
548
+ }
549
+ if (head.ssr) {
550
+ const { maxPosition: charsetMaxPos } = resolveOptions(ruleConfig, "charset-not-early", { maxPosition: 3 });
551
+ const headElementTags = /* @__PURE__ */ new Set(["title", "base", "meta", "link", "style", "script", "noscript"]);
552
+ const sortedHeadTags = tags.filter((t) => headElementTags.has(t.tag) && (!t.tagPosition || t.tagPosition === "head")).sort((a, b) => (a._w ?? 100) === (b._w ?? 100) ? (a._p ?? 0) - (b._p ?? 0) : (a._w ?? 100) - (b._w ?? 100));
553
+ let charsetTag;
554
+ let charsetPosition = -1;
555
+ for (let i = 0; i < sortedHeadTags.length; i++) {
556
+ const tag = sortedHeadTags[i];
557
+ if (tag.tag === "meta" && ("charset" in tag.props || tag.props["http-equiv"]?.toLowerCase() === "content-type")) {
558
+ charsetTag = tag;
559
+ charsetPosition = i + 1;
560
+ break;
561
+ }
562
+ }
563
+ if (charsetTag && charsetPosition > charsetMaxPos)
564
+ report("charset-not-early", `<meta charset> is at position ${charsetPosition} in <head>. It should be within the first ${charsetMaxPos} tags so the browser doesn't need to re-parse.`, "warn", charsetTag);
565
+ }
566
+ const moduleScriptSrcs = /* @__PURE__ */ new Set();
567
+ for (const tag of tags) {
568
+ if (tag.tag === "script" && tag.props.type === "module" && tag.props.src)
569
+ moduleScriptSrcs.add(tag.props.src);
570
+ }
571
+ for (const tag of tags) {
572
+ if (tag.tag === "link" && tag.props.rel === "preload" && tag.props.as === "script" && tag.props.href && moduleScriptSrcs.has(tag.props.href))
573
+ report("preload-not-modulepreload", `"${tag.props.href}" is a module script but uses rel="preload". Use rel="modulepreload" instead to also trigger module parsing.`, "warn", tag);
574
+ }
575
+ const corsOrigins = /* @__PURE__ */ new Set();
576
+ const preconnectCorsOrigins = /* @__PURE__ */ new Set();
577
+ for (const tag of tags) {
578
+ if (tag.tag === "link" && tag.props.href && "crossorigin" in tag.props) {
579
+ const origin = extractOrigin(tag.props.href);
580
+ if (origin) {
581
+ corsOrigins.add(origin);
582
+ if (tag.props.rel === "preconnect")
583
+ preconnectCorsOrigins.add(origin);
584
+ }
585
+ }
586
+ }
587
+ for (const tag of tags) {
588
+ if (tag.tag === "link" && tag.props.rel === "preconnect" && tag.props.href && !("crossorigin" in tag.props)) {
589
+ const origin = extractOrigin(tag.props.href);
590
+ if (origin && corsOrigins.has(origin) && !preconnectCorsOrigins.has(origin))
591
+ report("preconnect-missing-crossorigin", `Preconnect to "${tag.props.href}" is missing "crossorigin" but CORS resources are loaded from this origin. Without it, the browser opens a separate connection for CORS requests.`, "warn", tag);
592
+ }
593
+ }
594
+ const { maxBytes: crawlerMaxBytes } = resolveOptions(ruleConfig, "meta-beyond-1mb", { maxBytes: 1048576 });
595
+ let byteOffset = 0;
596
+ for (const tag of tags) {
597
+ if (tag.tagPosition && tag.tagPosition !== "head")
598
+ continue;
599
+ const props = Object.entries(tag.props).filter(([, v]) => v !== false && v != null).map(([k, v]) => v === true || v === "" ? ` ${k}` : ` ${k}="${v}"`).join("");
600
+ const content = tag.innerHTML || tag.textContent || "";
601
+ const tagSize = `<${tag.tag}${props}>${content}</${tag.tag}>
602
+ `.length;
603
+ byteOffset += tagSize;
604
+ if (byteOffset > crawlerMaxBytes && tag.tag === "meta") {
605
+ const key = tag.props.property || tag.props.name || "unknown";
606
+ report(
607
+ "meta-beyond-1mb",
608
+ `Meta tag "${key}" is rendered ~${(byteOffset / 1024).toFixed(0)}KB into <head>, beyond the ${(crawlerMaxBytes / 1048576).toFixed(0)}MB crawler parsing limit. Social crawlers (Facebook, Twitter) may not see it. Use \`tagPriority\` to promote it, or configure a custom \`tagWeight\` to reorder tags for bot requests.`,
609
+ "warn",
610
+ tag
611
+ );
612
+ }
613
+ }
614
+ head._validationRules = rules;
615
+ if (rules.length) {
616
+ if (options.onReport) {
617
+ options.onReport(rules);
618
+ } else {
619
+ for (const rule of rules) {
620
+ const loc = rule.source ? ` (${rule.source})` : "";
621
+ console.warn(`[unhead] ${rule.message}${loc}`);
622
+ }
623
+ }
624
+ }
625
+ }
626
+ }
627
+ };
628
+ }, "validate");
629
+ }
630
+
631
+ export { CanonicalPlugin, InferSeoMetaPlugin, MinifyPlugin, ValidatePlugin, defineHeadPlugin };
@@ -0,0 +1,6 @@
1
+ import 'unhead/server';
2
+ export { c as createSpyProxy } from './shared/unhead.CTjuIdzk.mjs';
3
+ export { u as useScript } from './shared/unhead.BdK3SLPN.mjs';
4
+ import './shared/unhead.Bf_fPVYA.mjs';
5
+ import './shared/unhead.Bm4Y6XQI.mjs';
6
+ import 'hookable';