@nuxt/hints 1.0.0-alpha.9 → 1.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 (278) hide show
  1. package/README.md +50 -3
  2. package/dist/client/200.html +1 -1
  3. package/dist/client/404.html +1 -1
  4. package/dist/client/_nuxt/2UxHyX5q.js +1 -0
  5. package/dist/client/_nuxt/4A_iFExJ.js +1 -0
  6. package/dist/client/_nuxt/85-TOEBH.js +1 -0
  7. package/dist/client/_nuxt/B1yitclQ.js +1 -0
  8. package/dist/client/_nuxt/B7c-h3xW.js +1 -0
  9. package/dist/client/_nuxt/{BS0rITwE.js → BAtxTl2q.js} +1 -1
  10. package/dist/client/_nuxt/BBf5iR-q.js +1 -0
  11. package/dist/client/_nuxt/BERRCDM3.js +1 -0
  12. package/dist/client/_nuxt/BETggiCN.js +1 -0
  13. package/dist/client/_nuxt/BEwlwnbL.js +1 -0
  14. package/dist/client/_nuxt/BFfxhgS-.js +1 -0
  15. package/dist/client/_nuxt/BGHnOYBU.js +1 -0
  16. package/dist/client/_nuxt/BH7IYjvW.js +1 -0
  17. package/dist/client/_nuxt/BJDFO7_C.js +1 -0
  18. package/dist/client/_nuxt/BM1_JUlF.js +1 -0
  19. package/dist/client/_nuxt/BMWR74SV.js +1 -0
  20. package/dist/client/_nuxt/BQ8w6xss.js +1 -0
  21. package/dist/client/_nuxt/BR5kRUq4.js +1 -0
  22. package/dist/client/_nuxt/BRHolxvo.js +1 -0
  23. package/dist/client/_nuxt/BRZ36xJF.js +1 -0
  24. package/dist/client/_nuxt/BTJTHyun.js +1 -0
  25. package/dist/client/_nuxt/BTifaqeh.js +1 -0
  26. package/dist/client/_nuxt/BV7otONQ.js +1 -0
  27. package/dist/client/_nuxt/BVQ-GDCI.js +1 -0
  28. package/dist/client/_nuxt/BWvSN4gD.js +1 -0
  29. package/dist/client/_nuxt/{BKRej55Q.js → BY2SE5zy.js} +1 -1
  30. package/dist/client/_nuxt/BYV0-3_D.js +1 -0
  31. package/dist/client/_nuxt/BYunw83y.js +1 -0
  32. package/dist/client/_nuxt/BZvkOJ9d.js +1 -0
  33. package/dist/client/_nuxt/B_m7g4N7.js +1 -0
  34. package/dist/client/_nuxt/BcOcwvcX.js +1 -0
  35. package/dist/client/_nuxt/BcVCzyr7.js +1 -0
  36. package/dist/client/_nuxt/BdImnpbu.js +1 -0
  37. package/dist/client/_nuxt/BdnUsdx6.js +1 -0
  38. package/dist/client/_nuxt/BdyeT68K.js +1 -0
  39. package/dist/client/_nuxt/BeH2EWoN.js +1 -0
  40. package/dist/client/_nuxt/BhOHFoWU.js +1 -0
  41. package/dist/client/_nuxt/BkioyH1T.js +1 -0
  42. package/dist/client/_nuxt/BmXAJ9_W.js +1 -0
  43. package/dist/client/_nuxt/Bmn6On1c.js +1 -0
  44. package/dist/client/_nuxt/Bp6g37R7.js +1 -0
  45. package/dist/client/_nuxt/BqTXFGrv.js +1 -0
  46. package/dist/client/_nuxt/BqWnGSMi.js +1 -0
  47. package/dist/client/_nuxt/BqYA7rlc.js +1 -0
  48. package/dist/client/_nuxt/{DOJAAXAk.js → BsJUmJIm.js} +1 -1
  49. package/dist/client/_nuxt/BsS91CYL.js +1 -0
  50. package/dist/client/_nuxt/BspZqrRM.js +1 -0
  51. package/dist/client/_nuxt/BtCnVYZw.js +1 -0
  52. package/dist/client/_nuxt/BtOb2qkB.js +1 -0
  53. package/dist/client/_nuxt/BtqSS_iP.js +1 -0
  54. package/dist/client/_nuxt/BuQSe7zV.js +13 -0
  55. package/dist/client/_nuxt/Bv_4Rxtq.js +1 -0
  56. package/dist/client/_nuxt/BvzEVeQv.js +1 -0
  57. package/dist/client/_nuxt/BxgE0vQu.js +1 -0
  58. package/dist/client/_nuxt/{CuE35eZa.js → Bz59FrZb.js} +1 -1
  59. package/dist/client/_nuxt/BzTr9Aqm.js +1 -0
  60. package/dist/client/_nuxt/C-HG3fhB.js +1 -0
  61. package/dist/client/_nuxt/C-SQnVFl.js +1 -0
  62. package/dist/client/_nuxt/C0HS_06l.js +1 -0
  63. package/dist/client/_nuxt/C0hk2d4L.js +1 -0
  64. package/dist/client/_nuxt/C151Ov-r.js +1 -0
  65. package/dist/client/_nuxt/C2t-YnRu.js +1 -0
  66. package/dist/client/_nuxt/C3B-1QV4.js +1 -0
  67. package/dist/client/_nuxt/C4EeE6gA.js +1 -0
  68. package/dist/client/_nuxt/C4IJs8-o.js +1 -0
  69. package/dist/client/_nuxt/C5BYcBs_.js +1 -0
  70. package/dist/client/_nuxt/C5YyOfLZ.js +1 -0
  71. package/dist/client/_nuxt/C7zT0LnQ.js +1 -0
  72. package/dist/client/_nuxt/{CTf7BuVz.js → C8XNfCrI.js} +1 -1
  73. package/dist/client/_nuxt/C8lEn-DE.js +1 -0
  74. package/dist/client/_nuxt/C98Dy4si.js +1 -0
  75. package/dist/client/_nuxt/C9XAeP06.js +1 -0
  76. package/dist/client/_nuxt/CDx5xZoG.js +1 -0
  77. package/dist/client/_nuxt/CEL-wOlO.js +1 -0
  78. package/dist/client/_nuxt/CENFIVCM.js +1 -0
  79. package/dist/client/_nuxt/CEu0bR-o.js +1 -0
  80. package/dist/client/_nuxt/CF10PKvl.js +1 -0
  81. package/dist/client/_nuxt/CG8Ifv2g.js +1 -0
  82. package/dist/client/_nuxt/CHLpvVh8.js +1 -0
  83. package/dist/client/_nuxt/CHM0blh-.js +1 -0
  84. package/dist/client/_nuxt/CJc9bBzg.js +1 -0
  85. package/dist/client/_nuxt/CKIfxQSi.js +1 -0
  86. package/dist/client/_nuxt/CLZrNe3w.js +1 -0
  87. package/dist/client/_nuxt/CLxacb5B.js +1 -0
  88. package/dist/client/_nuxt/CO1LY3CK.js +1 -0
  89. package/dist/client/_nuxt/COcwbKMJ.js +1 -0
  90. package/dist/client/_nuxt/COkxafJQ.js +1 -0
  91. package/dist/client/_nuxt/CSXwinHm.js +1 -0
  92. package/dist/client/_nuxt/CXDyekYo.js +3 -0
  93. package/dist/client/_nuxt/CYpkKp66.js +1 -0
  94. package/dist/client/_nuxt/{BFRyJUvr.js → CZ1OMT3Z.js} +1 -1
  95. package/dist/client/_nuxt/CZhp0h8q.js +1 -0
  96. package/dist/client/_nuxt/CbFg5uaA.js +1 -0
  97. package/dist/client/_nuxt/CeAyd5Ju.js +1 -0
  98. package/dist/client/_nuxt/CeZK1NFH.js +1 -0
  99. package/dist/client/_nuxt/CenWIFCC.js +1 -0
  100. package/dist/client/_nuxt/Cg-RD9OK.js +1 -0
  101. package/dist/client/_nuxt/CgK0fS9t.js +1 -0
  102. package/dist/client/_nuxt/CgrjxMR_.js +6 -0
  103. package/dist/client/_nuxt/ChMvpjG-.js +1 -0
  104. package/dist/client/_nuxt/CkByrt1z.js +1 -0
  105. package/dist/client/_nuxt/CklMAg4u.js +1 -0
  106. package/dist/client/_nuxt/Cl_HNi2c.js +4 -0
  107. package/dist/client/_nuxt/Cn7AkR1O.js +1 -0
  108. package/dist/client/_nuxt/CnnmHF94.js +1 -0
  109. package/dist/client/_nuxt/CnsnAmq5.js +1 -0
  110. package/dist/client/_nuxt/Co6uUVPk.js +1 -0
  111. package/dist/client/_nuxt/CoDkCxhg.js +1 -0
  112. package/dist/client/_nuxt/CpOuai2O.js +1 -0
  113. package/dist/client/_nuxt/Cq5zzVJU.js +1 -0
  114. package/dist/client/_nuxt/CquLrc37.js +1 -0
  115. package/dist/client/_nuxt/CsfeWuGM.js +1 -0
  116. package/dist/client/_nuxt/CuPHTKiy.js +1 -0
  117. package/dist/client/_nuxt/CwoSXNpI.js +1 -0
  118. package/dist/client/_nuxt/CxGSJlkm.js +1 -0
  119. package/dist/client/_nuxt/CxLEBnE3.js +1 -0
  120. package/dist/client/_nuxt/Cz2AlsmD.js +1 -0
  121. package/dist/client/_nuxt/CzTSHFRz.js +1 -0
  122. package/dist/client/_nuxt/D0YGMca9.js +1 -0
  123. package/dist/client/_nuxt/D17OF-Vu.js +1 -0
  124. package/dist/client/_nuxt/D1j8_8rp.js +1 -0
  125. package/dist/client/_nuxt/D3lLCCz7.js +1 -0
  126. package/dist/client/_nuxt/D5-asLiD.js +1 -0
  127. package/dist/client/_nuxt/D53aC0YG.js +1 -0
  128. package/dist/client/_nuxt/D7o27uSR.js +1 -0
  129. package/dist/client/_nuxt/D82EKSYY.js +1 -0
  130. package/dist/client/_nuxt/D82vCrfD.js +1 -0
  131. package/dist/client/_nuxt/D8_7TLub.js +1 -0
  132. package/dist/client/_nuxt/D8l8udqQ.js +1 -0
  133. package/dist/client/_nuxt/D93ZcfNL.js +1 -0
  134. package/dist/client/_nuxt/D97Zzqfu.js +1 -0
  135. package/dist/client/_nuxt/DDvzSYfr.js +1 -0
  136. package/dist/client/_nuxt/DFQXde-d.js +1 -0
  137. package/dist/client/_nuxt/DFXneXwc.js +1 -0
  138. package/dist/client/_nuxt/DHCkPAjA.js +1 -0
  139. package/dist/client/_nuxt/DM8c43g1.js +1 -0
  140. package/dist/client/_nuxt/DMLP1f5n.js +24 -0
  141. package/dist/client/_nuxt/DMzUqQB5.js +1 -0
  142. package/dist/client/_nuxt/{DOHcV6MR.js → DO_IqDaw.js} +1 -1
  143. package/dist/client/_nuxt/DPOp833l.js +1 -0
  144. package/dist/client/_nuxt/DRJZaHtK.js +1 -0
  145. package/dist/client/_nuxt/DRg8JJMk.js +1 -0
  146. package/dist/client/_nuxt/DV7GczEv.js +1 -0
  147. package/dist/client/_nuxt/DVFEvuxE.js +1 -0
  148. package/dist/client/_nuxt/DVxCFoDh.js +1 -0
  149. package/dist/client/_nuxt/DWrx1Km3.js +1 -0
  150. package/dist/client/_nuxt/DXmwc3jG.js +1 -0
  151. package/dist/client/_nuxt/DXvB9xmW.js +1 -0
  152. package/dist/client/_nuxt/DZf3V79B.js +1 -0
  153. package/dist/client/_nuxt/DZu-aV2c.js +1 -0
  154. package/dist/client/_nuxt/D_Q5rh1f.js +1 -0
  155. package/dist/client/_nuxt/Da5cRb03.js +1 -0
  156. package/dist/client/_nuxt/Dd19v3D-.js +1 -0
  157. package/dist/client/_nuxt/DdkO51Og.js +1 -0
  158. package/dist/client/_nuxt/Df6bDoY_.js +1 -0
  159. package/dist/client/_nuxt/DhmSosst.js +1 -0
  160. package/dist/client/_nuxt/DjAJT7YJ.js +1 -0
  161. package/dist/client/_nuxt/DkFqJrB1.js +1 -0
  162. package/dist/client/_nuxt/DkwncUOv.js +1 -0
  163. package/dist/client/_nuxt/Dpen1YoG.js +1 -0
  164. package/dist/client/_nuxt/Dph4kLrZ.js +1 -0
  165. package/dist/client/_nuxt/{BHYWC4mf.js → Dq5iEy-J.js} +1 -1
  166. package/dist/client/_nuxt/DsOJ9woJ.js +1 -0
  167. package/dist/client/_nuxt/DsumFeuD.js +1 -0
  168. package/dist/client/_nuxt/{BMheLZQI.js → DuO5kjlf.js} +1 -1
  169. package/dist/client/_nuxt/DvAmuSmV.js +1 -0
  170. package/dist/client/_nuxt/DyxjwDmM.js +1 -0
  171. package/dist/client/_nuxt/Dzze3sRP.js +1 -0
  172. package/dist/client/_nuxt/FtFNcQmh.js +1 -0
  173. package/dist/client/_nuxt/IF9eRakj.js +1 -0
  174. package/dist/client/_nuxt/IeuSbFQv.js +1 -0
  175. package/dist/client/_nuxt/LCb0JLof.js +1 -0
  176. package/dist/client/_nuxt/P80f7IUj.js +1 -0
  177. package/dist/client/_nuxt/Pmp26Uib.js +1 -0
  178. package/dist/client/_nuxt/QIJgUcNo.js +1 -0
  179. package/dist/client/_nuxt/RxLv4Mw1.js +1 -0
  180. package/dist/client/_nuxt/VOosw3JB.js +1 -0
  181. package/dist/client/_nuxt/Ve4PFQV2.js +1 -0
  182. package/dist/client/_nuxt/YqXBG_HV.js +1 -0
  183. package/dist/client/_nuxt/_H4v1dQx.js +1 -0
  184. package/dist/client/_nuxt/_ykCGR6B.js +1 -0
  185. package/dist/client/_nuxt/{BZWgH84o.js → a9uSpr3S.js} +1 -1
  186. package/dist/client/_nuxt/bCR0ucgS.js +1 -0
  187. package/dist/client/_nuxt/builds/latest.json +1 -1
  188. package/dist/client/_nuxt/builds/meta/99ecb9ec-79bf-4090-9942-9ce383dac370.json +1 -0
  189. package/dist/client/_nuxt/dwOrl1Do.js +1 -0
  190. package/dist/client/_nuxt/{entry.bXb283Sw.css → entry.D5OyC1nV.css} +1 -1
  191. package/dist/client/_nuxt/eo99z4R2.js +1 -0
  192. package/dist/client/_nuxt/error-404.B6ZMX39t.css +1 -0
  193. package/dist/client/_nuxt/error-500.dS86tDkg.css +1 -0
  194. package/dist/client/_nuxt/fKv21gyL.js +1 -0
  195. package/dist/client/_nuxt/gcz8RCvz.js +1 -0
  196. package/dist/client/_nuxt/hydration.BczHrsb5.css +1 -0
  197. package/dist/client/_nuxt/k_qm7-4y.js +1 -0
  198. package/dist/client/_nuxt/lXgVvXCa.js +1 -0
  199. package/dist/client/_nuxt/mWjccvbQ.js +1 -0
  200. package/dist/client/_nuxt/mjskCLCv.js +1 -0
  201. package/dist/client/_nuxt/n2N0HUVH.js +1 -0
  202. package/dist/client/_nuxt/oH_c3LbQ.js +1 -0
  203. package/dist/client/_nuxt/rGO070M0.js +1 -0
  204. package/dist/client/_nuxt/rZm6bMo-.js +1 -0
  205. package/dist/client/_nuxt/u5AG7uiY.js +1 -0
  206. package/dist/client/_nuxt/uYugtg8r.js +1 -0
  207. package/dist/client/_nuxt/vGWfd6FD.js +1 -0
  208. package/dist/client/_nuxt/yv6CvBhz.js +1 -0
  209. package/dist/client/component-lazy-load/index.html +1 -1
  210. package/dist/client/html-validate/index.html +1 -0
  211. package/dist/client/hydration/index.html +1 -1
  212. package/dist/client/index.html +1 -1
  213. package/dist/client/third-party-scripts/index.html +1 -1
  214. package/dist/client/web-vitals/index.html +1 -1
  215. package/dist/module.d.mts +5 -1
  216. package/dist/module.json +1 -1
  217. package/dist/module.mjs +75 -37
  218. package/dist/runtime/core/components/nuxt-island.d.ts +136 -1
  219. package/dist/runtime/core/features.d.ts +6 -0
  220. package/dist/runtime/core/features.js +17 -0
  221. package/dist/runtime/core/plugins/features.client.d.ts +2 -0
  222. package/dist/runtime/core/plugins/features.client.js +16 -0
  223. package/dist/runtime/core/plugins/vue-tracer-state.client.d.ts +1 -1
  224. package/dist/runtime/core/types.d.ts +17 -0
  225. package/dist/runtime/core/types.js +0 -0
  226. package/dist/runtime/feature-options.d.ts +8 -0
  227. package/dist/runtime/feature-options.js +0 -0
  228. package/dist/runtime/html-validate/handlers/delete.d.ts +1 -0
  229. package/dist/runtime/html-validate/handlers/delete.js +17 -0
  230. package/dist/runtime/html-validate/handlers/get.d.ts +2 -0
  231. package/dist/runtime/html-validate/handlers/get.js +5 -0
  232. package/dist/runtime/html-validate/handlers/nitro-handlers.plugin.d.ts +3 -0
  233. package/dist/runtime/html-validate/handlers/nitro-handlers.plugin.js +36 -0
  234. package/dist/runtime/html-validate/nitro.plugin.d.ts +3 -0
  235. package/dist/runtime/html-validate/nitro.plugin.js +54 -0
  236. package/dist/runtime/html-validate/plugin.client.d.ts +2 -0
  237. package/dist/runtime/html-validate/plugin.client.js +28 -0
  238. package/dist/runtime/html-validate/storage.d.ts +1 -0
  239. package/dist/runtime/html-validate/storage.js +2 -0
  240. package/dist/runtime/html-validate/types.d.ts +8 -0
  241. package/dist/runtime/html-validate/types.js +0 -0
  242. package/dist/runtime/html-validate/utils.d.ts +3 -0
  243. package/dist/runtime/html-validate/utils.js +12 -0
  244. package/dist/runtime/hydration/composables.js +15 -13
  245. package/dist/runtime/hydration/plugin.client.d.ts +1 -1
  246. package/dist/runtime/hydration/utils.d.ts +1 -0
  247. package/dist/runtime/hydration/utils.js +2 -0
  248. package/dist/runtime/lazy-load/plugin.client.d.ts +1 -1
  249. package/dist/runtime/lazy-load/plugin.client.js +3 -3
  250. package/dist/runtime/lazy-load/utils.d.ts +1 -0
  251. package/dist/runtime/lazy-load/utils.js +2 -0
  252. package/dist/runtime/logger.d.ts +2 -0
  253. package/dist/runtime/logger.js +6 -0
  254. package/dist/runtime/third-party-scripts/plugin.client.d.ts +1 -1
  255. package/dist/runtime/third-party-scripts/plugin.client.js +28 -8
  256. package/dist/runtime/third-party-scripts/types.d.ts +6 -0
  257. package/dist/runtime/third-party-scripts/types.js +0 -0
  258. package/dist/runtime/third-party-scripts/utils.d.ts +1 -0
  259. package/dist/runtime/third-party-scripts/utils.js +2 -0
  260. package/dist/runtime/types.d.ts +12 -0
  261. package/dist/runtime/web-vitals/plugin.client.d.ts +1 -1
  262. package/dist/runtime/web-vitals/plugin.client.js +124 -94
  263. package/dist/runtime/web-vitals/types.d.ts +4 -0
  264. package/dist/runtime/web-vitals/types.js +0 -0
  265. package/dist/runtime/web-vitals/utils.d.ts +1 -0
  266. package/dist/runtime/web-vitals/utils.js +2 -0
  267. package/package.json +21 -17
  268. package/dist/client/_nuxt/16LZ-2rN.js +0 -1
  269. package/dist/client/_nuxt/BOWvZIQC.js +0 -4
  270. package/dist/client/_nuxt/BY53PIN5.js +0 -1
  271. package/dist/client/_nuxt/BYo9cb9R.js +0 -36
  272. package/dist/client/_nuxt/D7xuZOu8.js +0 -1
  273. package/dist/client/_nuxt/DaNrdrhj.js +0 -1
  274. package/dist/client/_nuxt/GiOWC8es.js +0 -6
  275. package/dist/client/_nuxt/builds/meta/9cd25584-d8cd-4e50-8973-949eec6b2524.json +0 -1
  276. package/dist/client/_nuxt/error-404.LspKb3Ne.css +0 -1
  277. package/dist/client/_nuxt/error-500.B_qDdXYW.css +0 -1
  278. package/dist/client/_nuxt/hydration.CLUG10u4.css +0 -1
@@ -1,2 +1,137 @@
1
- declare const HintsNuxtIsland: any;
1
+ declare const HintsNuxtIsland: {
2
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
3
+ name: {
4
+ type: StringConstructor;
5
+ required: true;
6
+ };
7
+ lazy: BooleanConstructor;
8
+ props: {
9
+ type: ObjectConstructor;
10
+ default: () => undefined;
11
+ };
12
+ context: {
13
+ type: ObjectConstructor;
14
+ default: () => {};
15
+ };
16
+ scopeId: {
17
+ type: import("vue").PropType<string | undefined | null>;
18
+ default: () => undefined;
19
+ };
20
+ source: {
21
+ type: StringConstructor;
22
+ default: () => undefined;
23
+ };
24
+ dangerouslyLoadClientComponents: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ }>> & Readonly<{
29
+ onError?: ((...args: any[]) => any) | undefined;
30
+ }>, (_ctx: any, _cache: any) => (import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
31
+ [key: string]: any;
32
+ }> | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
33
+ [key: string]: any;
34
+ }>[])[] | import("vue").VNode<any, any, {
35
+ [key: string]: any;
36
+ }>[], {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "error"[], import("vue").PublicProps, {
37
+ props: Record<string, any>;
38
+ source: string;
39
+ scopeId: string | null | undefined;
40
+ lazy: boolean;
41
+ context: Record<string, any>;
42
+ dangerouslyLoadClientComponents: boolean;
43
+ }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
44
+ P: {};
45
+ B: {};
46
+ D: {};
47
+ C: {};
48
+ M: {};
49
+ Defaults: {};
50
+ }, Readonly<import("vue").ExtractPropTypes<{
51
+ name: {
52
+ type: StringConstructor;
53
+ required: true;
54
+ };
55
+ lazy: BooleanConstructor;
56
+ props: {
57
+ type: ObjectConstructor;
58
+ default: () => undefined;
59
+ };
60
+ context: {
61
+ type: ObjectConstructor;
62
+ default: () => {};
63
+ };
64
+ scopeId: {
65
+ type: import("vue").PropType<string | undefined | null>;
66
+ default: () => undefined;
67
+ };
68
+ source: {
69
+ type: StringConstructor;
70
+ default: () => undefined;
71
+ };
72
+ dangerouslyLoadClientComponents: {
73
+ type: BooleanConstructor;
74
+ default: boolean;
75
+ };
76
+ }>> & Readonly<{
77
+ onError?: ((...args: any[]) => any) | undefined;
78
+ }>, (_ctx: any, _cache: any) => (import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
79
+ [key: string]: any;
80
+ }> | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
81
+ [key: string]: any;
82
+ }>[])[] | import("vue").VNode<any, any, {
83
+ [key: string]: any;
84
+ }>[], {}, {}, {}, {
85
+ props: Record<string, any>;
86
+ source: string;
87
+ scopeId: string | null | undefined;
88
+ lazy: boolean;
89
+ context: Record<string, any>;
90
+ dangerouslyLoadClientComponents: boolean;
91
+ }>;
92
+ __isFragment?: never;
93
+ __isTeleport?: never;
94
+ __isSuspense?: never;
95
+ } & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
96
+ name: {
97
+ type: StringConstructor;
98
+ required: true;
99
+ };
100
+ lazy: BooleanConstructor;
101
+ props: {
102
+ type: ObjectConstructor;
103
+ default: () => undefined;
104
+ };
105
+ context: {
106
+ type: ObjectConstructor;
107
+ default: () => {};
108
+ };
109
+ scopeId: {
110
+ type: import("vue").PropType<string | undefined | null>;
111
+ default: () => undefined;
112
+ };
113
+ source: {
114
+ type: StringConstructor;
115
+ default: () => undefined;
116
+ };
117
+ dangerouslyLoadClientComponents: {
118
+ type: BooleanConstructor;
119
+ default: boolean;
120
+ };
121
+ }>> & Readonly<{
122
+ onError?: ((...args: any[]) => any) | undefined;
123
+ }>, (_ctx: any, _cache: any) => (import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
124
+ [key: string]: any;
125
+ }> | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
126
+ [key: string]: any;
127
+ }>[])[] | import("vue").VNode<any, any, {
128
+ [key: string]: any;
129
+ }>[], {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "error"[], "error", {
130
+ props: Record<string, any>;
131
+ source: string;
132
+ scopeId: string | null | undefined;
133
+ lazy: boolean;
134
+ context: Record<string, any>;
135
+ dangerouslyLoadClientComponents: boolean;
136
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
2
137
  export default HintsNuxtIsland;
@@ -0,0 +1,6 @@
1
+ import type { FeaturesName } from './types.js';
2
+ import type { FeatureOptionsMap } from '../feature-options.js';
3
+ export declare function isFeatureDevtoolsEnabled(feature: FeaturesName): boolean;
4
+ export declare function isFeatureLogsEnabled(feature: FeaturesName): boolean;
5
+ export declare function isFeatureEnabled(feature: FeaturesName): boolean;
6
+ export declare function getFeatureOptions<K extends keyof FeatureOptionsMap>(feature: K): FeatureOptionsMap[K] | undefined;
@@ -0,0 +1,17 @@
1
+ import { features } from "#shared/hints-config";
2
+ export function isFeatureDevtoolsEnabled(feature) {
3
+ return features[feature] != null && typeof features[feature] === "object" ? features[feature].devtools !== false : !!features[feature];
4
+ }
5
+ export function isFeatureLogsEnabled(feature) {
6
+ return features[feature] != null && typeof features[feature] === "object" ? features[feature].logs !== false : !!features[feature];
7
+ }
8
+ export function isFeatureEnabled(feature) {
9
+ return !!features[feature];
10
+ }
11
+ export function getFeatureOptions(feature) {
12
+ const val = features[feature];
13
+ if (typeof val === "object" && val.options) {
14
+ return val.options;
15
+ }
16
+ return void 0;
17
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import { defineNuxtPlugin } from "#imports";
2
+ import { features } from "#shared/hints-config";
3
+ export default defineNuxtPlugin({
4
+ name: "hints:features",
5
+ setup(nuxtApp) {
6
+ Object.defineProperty(nuxtApp, "hints", {
7
+ get() {
8
+ return Object.freeze({
9
+ config: {
10
+ features
11
+ }
12
+ });
13
+ }
14
+ });
15
+ }
16
+ });
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
2
  export default _default;
@@ -0,0 +1,17 @@
1
+ import type { FeatureOptionsMap } from '../feature-options.js';
2
+ export type FeaturesName = 'hydration' | 'lazyLoad' | 'webVitals' | 'thirdPartyScripts' | 'htmlValidate';
3
+ export type FeatureFlags<T extends Record<string, any> = Record<string, never>> = {
4
+ logs?: boolean;
5
+ devtools?: boolean;
6
+ /**
7
+ * Any feature specific options
8
+ */
9
+ options?: T;
10
+ };
11
+ /**
12
+ * Fully-resolved features configuration type, where each feature
13
+ * can be a simple boolean or a FeatureFlags with its own options.
14
+ */
15
+ export type Features = {
16
+ [K in FeaturesName]: boolean | FeatureFlags<K extends keyof FeatureOptionsMap ? FeatureOptionsMap[K] : Record<string, never>>;
17
+ };
File without changes
@@ -0,0 +1,8 @@
1
+ import type { HtmlValidateFeatureOptions } from './html-validate/types.js';
2
+ import type { ThirdPartyScriptsFeatureOptions } from './third-party-scripts/types.js';
3
+ import type { WebVitalsFeatureOptions } from './web-vitals/types.js';
4
+ export interface FeatureOptionsMap {
5
+ thirdPartyScripts: ThirdPartyScriptsFeatureOptions;
6
+ htmlValidate: HtmlValidateFeatureOptions;
7
+ webVitals: WebVitalsFeatureOptions;
8
+ }
File without changes
@@ -0,0 +1 @@
1
+ export declare const deleteHandler: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<{}>>;
@@ -0,0 +1,17 @@
1
+ import { createError, defineEventHandler, setResponseStatus } from "h3";
2
+ import { storage } from "../storage.js";
3
+ import { useNitroApp } from "nitropack/runtime";
4
+ export const deleteHandler = defineEventHandler(async (event) => {
5
+ const nitro = useNitroApp();
6
+ const id = event.context.params?.id;
7
+ if (typeof id === "string") {
8
+ await storage.removeItem(id);
9
+ setResponseStatus(event, 204);
10
+ nitro.hooks.callHook("hints:html-validate:deleted", id);
11
+ return {};
12
+ }
13
+ throw createError({
14
+ statusCode: 404,
15
+ statusMessage: "Not Found"
16
+ });
17
+ });
@@ -0,0 +1,2 @@
1
+ import type { HtmlValidateReport } from '../types.js';
2
+ export declare const getAllHandler: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<HtmlValidateReport[]>>;
@@ -0,0 +1,5 @@
1
+ import { defineEventHandler } from "h3";
2
+ import { storage } from "../storage.js";
3
+ export const getAllHandler = defineEventHandler(() => {
4
+ return storage.getKeys().then((keys) => Promise.all(keys.map((key) => storage.getItem(key)))).then((items) => items.filter((item) => item !== null));
5
+ });
@@ -0,0 +1,3 @@
1
+ import type { NitroAppPlugin } from 'nitropack/types';
2
+ declare const _default: NitroAppPlugin;
3
+ export default _default;
@@ -0,0 +1,36 @@
1
+ import { join } from "pathe";
2
+ import { HTMLVALIDATE_ROUTE } from "../utils.js";
3
+ import { getAllHandler } from "./get.js";
4
+ import { deleteHandler } from "./delete.js";
5
+ export default (function(nitro) {
6
+ nitro.router.add(
7
+ HTMLVALIDATE_ROUTE,
8
+ getAllHandler,
9
+ "get"
10
+ );
11
+ nitro.router.add(
12
+ join(HTMLVALIDATE_ROUTE, ":id"),
13
+ deleteHandler,
14
+ "delete"
15
+ );
16
+ nitro.hooks.hook("hints:sse:setup", (context) => {
17
+ context.unsubscribers.push(
18
+ nitro.hooks.hook("hints:html-validate:report", (report) => {
19
+ context.eventStream.push(
20
+ {
21
+ data: JSON.stringify(report),
22
+ event: "hints:html-validate:report"
23
+ }
24
+ );
25
+ }),
26
+ nitro.hooks.hook("hints:html-validate:deleted", (id) => {
27
+ context.eventStream.push(
28
+ {
29
+ data: id,
30
+ event: "hints:html-validate:deleted"
31
+ }
32
+ );
33
+ })
34
+ );
35
+ });
36
+ });
@@ -0,0 +1,3 @@
1
+ import type { NitroAppPlugin } from 'nitropack/types';
2
+ declare const _default: NitroAppPlugin;
3
+ export default _default;
@@ -0,0 +1,54 @@
1
+ import { HtmlValidate } from "html-validate";
2
+ import { addBeforeBodyEndTag } from "./utils.js";
3
+ import { storage } from "./storage.js";
4
+ import { randomUUID } from "crypto";
5
+ import { stringify } from "devalue";
6
+ import { format } from "prettier/standalone";
7
+ import html from "prettier/parser-html";
8
+ import { getFeatureOptions } from "../core/features.js";
9
+ import { defu } from "defu";
10
+ const DEFAULT_EXTENDS = [
11
+ "html-validate:standard",
12
+ "html-validate:document",
13
+ "html-validate:browser"
14
+ ];
15
+ const DEFAULT_RULES = {
16
+ "svg-focusable": "off",
17
+ "no-unknown-elements": "error",
18
+ "void-style": "off",
19
+ "no-trailing-whitespace": "off",
20
+ // Conflict with Nuxt defaults
21
+ "require-sri": "off",
22
+ "attribute-boolean-style": "off",
23
+ "doctype-style": "off",
24
+ // Unreasonable rule
25
+ "no-inline-style": "off"
26
+ };
27
+ export default (function(nitro) {
28
+ const opts = defu({
29
+ extends: DEFAULT_EXTENDS,
30
+ rules: DEFAULT_RULES
31
+ }, getFeatureOptions("htmlValidate") ?? {});
32
+ const validator = new HtmlValidate(opts);
33
+ nitro.hooks.hook("render:response", async (response, { event }) => {
34
+ if (typeof response.body === "string" && (response.headers?.["Content-Type"] || response.headers?.["content-type"])?.includes("html")) {
35
+ const formattedBody = await format(response.body, { plugins: [html], parser: "html" });
36
+ const results = await validator.validateString(formattedBody);
37
+ if (response.body && results.errorCount > 0) {
38
+ const id = randomUUID();
39
+ const data = {
40
+ id,
41
+ path: event.path,
42
+ html: formattedBody,
43
+ results: results.results
44
+ };
45
+ storage.setItem(id, data);
46
+ response.body = addBeforeBodyEndTag(
47
+ response.body,
48
+ `<script id="hints-html-validate" type="application/json">${stringify(data)}<\/script>`
49
+ );
50
+ nitro.hooks.callHook("hints:html-validate:report", data);
51
+ }
52
+ }
53
+ });
54
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
+ export default _default;
@@ -0,0 +1,28 @@
1
+ import { defineNuxtPlugin } from "#imports";
2
+ import { parse } from "devalue";
3
+ import { logger } from "./utils.js";
4
+ export default defineNuxtPlugin({
5
+ name: "@nuxt/hints:html-validate",
6
+ setup() {
7
+ const el = document.getElementById("hints-html-validate");
8
+ const raw = el?.textContent;
9
+ if (!raw) {
10
+ return;
11
+ }
12
+ let data;
13
+ try {
14
+ data = parse(raw);
15
+ } catch (err) {
16
+ logger.warn("[html-validate] Failed to parse report payload", err);
17
+ return;
18
+ }
19
+ if (!data?.results || !Array.isArray(data.results)) {
20
+ return;
21
+ }
22
+ for (const result of data.results) {
23
+ result.messages.forEach((message) => {
24
+ logger.warn(`[html-validate] ${message.ruleId} at ${result.filePath}:${message.line}:${message.column} - ${message.message}`);
25
+ });
26
+ }
27
+ }
28
+ });
@@ -0,0 +1 @@
1
+ export declare const storage: import("unstorage").Storage<import("unstorage").StorageValue>;
@@ -0,0 +1,2 @@
1
+ import { createStorage } from "unstorage";
2
+ export const storage = createStorage();
@@ -0,0 +1,8 @@
1
+ import type { ConfigData } from 'html-validate';
2
+ export type HtmlValidateFeatureOptions = ConfigData;
3
+ export type HtmlValidateReport = {
4
+ id: string;
5
+ html: string;
6
+ results: import('html-validate').Result[];
7
+ path: string;
8
+ };
File without changes
@@ -0,0 +1,3 @@
1
+ export declare const logger: import("consola").ConsolaInstance;
2
+ export declare const HTMLVALIDATE_ROUTE: string;
3
+ export declare function addBeforeBodyEndTag(html: string, content: string): string;
@@ -0,0 +1,12 @@
1
+ import { join } from "pathe";
2
+ import { HINTS_ROUTE } from "../core/server/types.js";
3
+ import { createHintsLogger } from "../logger.js";
4
+ export const logger = createHintsLogger("htmlValidate");
5
+ export const HTMLVALIDATE_ROUTE = join(HINTS_ROUTE, "html-validate");
6
+ export function addBeforeBodyEndTag(html, content) {
7
+ const closingBodyTagIndex = html.lastIndexOf("</body>");
8
+ if (closingBodyTagIndex === -1) {
9
+ return html + content;
10
+ }
11
+ return html.slice(0, closingBodyTagIndex) + content + html.slice(closingBodyTagIndex);
12
+ }
@@ -1,8 +1,8 @@
1
- import { getCurrentInstance, inject, onMounted } from "vue";
1
+ import { getCurrentInstance, inject, markRaw, onMounted } from "vue";
2
2
  import { useNuxtApp } from "#imports";
3
- import { HYDRATION_ROUTE, formatHTML } from "./utils.js";
4
- import { logger } from "../logger.js";
3
+ import { HYDRATION_ROUTE, formatHTML, logger } from "./utils.js";
5
4
  import { clientOnlySymbol } from "#app/components/client-only";
5
+ import { isFeatureDevtoolsEnabled } from "../core/features.js";
6
6
  export function useHydrationCheck() {
7
7
  const isClientOnly = inject(clientOnlySymbol, false);
8
8
  if (import.meta.server || isClientOnly) {
@@ -27,17 +27,19 @@ export function useHydrationCheck() {
27
27
  componentName,
28
28
  fileLocation
29
29
  };
30
- $fetch(new URL(HYDRATION_ROUTE, window.location.origin).href, {
31
- method: "POST",
32
- body
33
- }).then((payload) => {
34
- nuxtApp.payload.__hints.hydration.push({
35
- ...payload,
36
- instance,
37
- vnode: vnodePrehydration
30
+ if (isFeatureDevtoolsEnabled("hydration")) {
31
+ $fetch(new URL(HYDRATION_ROUTE, window.location.origin).href, {
32
+ method: "POST",
33
+ body
34
+ }).then((payload) => {
35
+ nuxtApp.payload.__hints.hydration.push({
36
+ ...payload,
37
+ instance: markRaw(instance),
38
+ vnode: markRaw(vnodePrehydration)
39
+ });
38
40
  });
39
- });
40
- logger.warn(`[hydration] Component ${componentName ?? instance.type.__file} seems to have different html pre and post-hydration. Please make sure you don't have any hydration issue.`);
41
+ }
42
+ logger.warn(`[hydration] Component ${componentName} at ${fileLocation} seems to have different html pre and post-hydration. Please make sure you don't have any hydration issue.`);
41
43
  }
42
44
  });
43
45
  }
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
2
  export default _default;
@@ -1,3 +1,4 @@
1
+ export declare const logger: import("consola").ConsolaInstance;
1
2
  export declare const HYDRATION_ROUTE = "/__nuxt_hints/hydration";
2
3
  export declare const HYDRATION_SSE_ROUTE = "/__nuxt_hints/sse";
3
4
  export declare function formatHTML(html: string | undefined): string;
@@ -1,4 +1,6 @@
1
1
  import { HINTS_ROUTE, HINTS_SSE_ROUTE } from "../core/server/types.js";
2
+ import { createHintsLogger } from "../logger.js";
3
+ export const logger = createHintsLogger("hydration");
2
4
  export const HYDRATION_ROUTE = `${HINTS_ROUTE}/hydration`;
3
5
  export const HYDRATION_SSE_ROUTE = HINTS_SSE_ROUTE;
4
6
  export function formatHTML(html) {
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
2
  export default _default;
@@ -1,8 +1,8 @@
1
1
  import { defineNuxtPlugin, useNuxtApp, useRoute } from "#imports";
2
2
  import { defu } from "defu";
3
3
  import { useLazyComponentTracking } from "./composables.js";
4
- import { logger } from "../logger.js";
5
- import { LAZY_LOAD_ROUTE } from "./utils.js";
4
+ import { logger, LAZY_LOAD_ROUTE } from "./utils.js";
5
+ import { isFeatureDevtoolsEnabled } from "../core/features.js";
6
6
  export default defineNuxtPlugin({
7
7
  name: "@nuxt/hints:lazy-load",
8
8
  dependsOn: ["nuxt:router"],
@@ -53,7 +53,7 @@ function reportSuggestions(suggestions) {
53
53
  Used in: ${suggestion.importedBy}`
54
54
  );
55
55
  }
56
- if (suggestions.length) {
56
+ if (suggestions.length && isFeatureDevtoolsEnabled("lazyLoad")) {
57
57
  const payload = {
58
58
  id: `${encodeURIComponent(route.path)}-${Date.now()}`,
59
59
  route: route.path,
@@ -1 +1,2 @@
1
+ export declare const logger: import("consola").ConsolaInstance;
1
2
  export declare const LAZY_LOAD_ROUTE = "/__nuxt_hints/lazy-load";
@@ -1,2 +1,4 @@
1
1
  import { HINTS_ROUTE } from "../core/server/types.js";
2
+ import { createHintsLogger } from "../logger.js";
3
+ export const logger = createHintsLogger("lazyLoad");
2
4
  export const LAZY_LOAD_ROUTE = `${HINTS_ROUTE}/lazy-load`;
@@ -1 +1,3 @@
1
+ import type { FeaturesName } from './core/types.js';
2
+ export declare function createHintsLogger(feature: FeaturesName): import("consola").ConsolaInstance;
1
3
  export declare const logger: import("consola").ConsolaInstance;
@@ -1,2 +1,8 @@
1
1
  import { createConsola } from "consola";
2
+ import { isFeatureLogsEnabled } from "./core/features.js";
3
+ export function createHintsLogger(feature) {
4
+ return createConsola({
5
+ level: isFeatureLogsEnabled(feature) ? void 0 : 0
6
+ }).withTag(`hints:${feature}`);
7
+ }
2
8
  export const logger = createConsola().withTag("hints");
@@ -1,2 +1,2 @@
1
- declare const _default: any;
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
2
  export default _default;
@@ -1,11 +1,18 @@
1
- import { defineNuxtPlugin, ref, useNuxtApp } from "#imports";
1
+ import { defineNuxtPlugin, shallowRef, useNuxtApp } from "#imports";
2
2
  import { defu } from "defu";
3
- import { logger } from "../logger.js";
4
- const EXTENSIONS_SCHEMES_RE = /^(chrome-extension|moz-extension|safari-extension|ms-browser-extension):/;
5
- function isExtensionScript(src) {
3
+ import { logger } from "./utils.js";
4
+ import { getFeatureOptions } from "../core/features.js";
5
+ const DEFAULT_EXTENSION_SCHEMES = ["chrome-extension", "moz-extension", "safari-extension", "ms-browser-extension"];
6
+ function escapeRegExp(s) {
7
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
8
+ }
9
+ function buildExtensionSchemesRegex(schemes) {
10
+ return new RegExp(`^(${schemes.map(escapeRegExp).join("|")}):`);
11
+ }
12
+ function isExtensionScript(src, schemesRegex) {
6
13
  try {
7
14
  const url = new URL(src, window.location.origin);
8
- return EXTENSIONS_SCHEMES_RE.test(url.protocol);
15
+ return schemesRegex.test(url.protocol);
9
16
  } catch {
10
17
  return false;
11
18
  }
@@ -18,15 +25,28 @@ function isSameOriginScript(src) {
18
25
  return false;
19
26
  }
20
27
  }
21
- function isIgnoredScript(src) {
22
- return isSameOriginScript(src) || isExtensionScript(src);
28
+ function isIgnoredDomain(src, ignoredDomains) {
29
+ if (ignoredDomains.length === 0) return false;
30
+ try {
31
+ const url = new URL(src, window.location.origin);
32
+ return ignoredDomains.some((domain) => url.hostname === domain || url.hostname.endsWith(`.${domain}`));
33
+ } catch {
34
+ return false;
35
+ }
23
36
  }
24
37
  export default defineNuxtPlugin({
25
38
  name: "nuxt-hints:third-party-scripts",
26
39
  setup() {
27
40
  const nuxtApp = useNuxtApp();
41
+ const opts = getFeatureOptions("thirdPartyScripts") ?? {};
42
+ const extensionSchemes = [...DEFAULT_EXTENSION_SCHEMES, ...opts.ignoredSchemes ?? []];
43
+ const schemesRegex = buildExtensionSchemesRegex(extensionSchemes);
44
+ const ignoredDomains = opts.ignoredDomains ?? [];
45
+ function isIgnoredScript(src) {
46
+ return isSameOriginScript(src) || isExtensionScript(src, schemesRegex) || isIgnoredDomain(src, ignoredDomains);
47
+ }
28
48
  nuxtApp.payload.__hints = defu(nuxtApp.payload.__hints, {
29
- thirdPartyScripts: ref([])
49
+ thirdPartyScripts: shallowRef([])
30
50
  });
31
51
  const scripts = nuxtApp.payload.__hints.thirdPartyScripts;
32
52
  const isUsingNuxtScripts = !!nuxtApp.$scripts;
@@ -0,0 +1,6 @@
1
+ export interface ThirdPartyScriptsFeatureOptions {
2
+ /** Additional domains to ignore when detecting third-party scripts */
3
+ ignoredDomains?: string[];
4
+ /** Additional URL scheme patterns to ignore (default includes browser extension schemes) */
5
+ ignoredSchemes?: string[];
6
+ }
File without changes
@@ -0,0 +1 @@
1
+ export declare const logger: import("consola").ConsolaInstance;
@@ -0,0 +1,2 @@
1
+ import { createHintsLogger } from "../logger.js";
2
+ export const logger = createHintsLogger("thirdPartyScripts");