tanstack_start_ts 1.0.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 (336) hide show
  1. package/.wrangler/deploy/config.json +1 -0
  2. package/bunfig.toml +6 -0
  3. package/components.json +22 -0
  4. package/config.json +0 -0
  5. package/dist/client/.assetsignore +2 -0
  6. package/dist/client/assets/ProductCard-DbIkJAE-.js +1 -0
  7. package/dist/client/assets/about-AskxOruL.js +1 -0
  8. package/dist/client/assets/admin-BZVcAQM3.js +1 -0
  9. package/dist/client/assets/admin.functions--RdVcuBx.js +1 -0
  10. package/dist/client/assets/admin.login-QgrF_9Fp.js +1 -0
  11. package/dist/client/assets/affiliate-disclosure-BIAsA-HO.js +1 -0
  12. package/dist/client/assets/categories-D0N418mK.js +1 -0
  13. package/dist/client/assets/category._slug-aCaQm14E.js +1 -0
  14. package/dist/client/assets/contact-PhvO-V15.js +1 -0
  15. package/dist/client/assets/faq-BsiHWPM8.js +1 -0
  16. package/dist/client/assets/hero-bg-BP2eVUIX.jpg +0 -0
  17. package/dist/client/assets/index-BU9rnkF3.js +1 -0
  18. package/dist/client/assets/index-BpJWZkva.js +1 -0
  19. package/dist/client/assets/index-vRX-zAyq.js +1 -0
  20. package/dist/client/assets/login-DteE0ZGp.js +1 -0
  21. package/dist/client/assets/logo-pSNfLJQk.png +0 -0
  22. package/dist/client/assets/privacy-B_Pu7040.js +1 -0
  23. package/dist/client/assets/product-links-BkZ41Gv3.js +1 -0
  24. package/dist/client/assets/product._id-BVUysCW-.js +1 -0
  25. package/dist/client/assets/products.functions-cGzRziKO.js +1 -0
  26. package/dist/client/assets/profile-CveRcKq2.js +1 -0
  27. package/dist/client/assets/reset-password-ySEjItX_.js +1 -0
  28. package/dist/client/assets/saved-CHtdQDJF.js +1 -0
  29. package/dist/client/assets/search-CXWfET1y.js +1 -0
  30. package/dist/client/assets/signup-CEx90iuV.js +1 -0
  31. package/dist/client/assets/styles-DrNJG0BO.css +1 -0
  32. package/dist/client/assets/terms-VqJ9kX9b.js +1 -0
  33. package/dist/client/assets/update-password-C-d0ix5e.js +1 -0
  34. package/dist/client/assets/vendor-aria-hidden-DvXkyWUv.js +1 -0
  35. package/dist/client/assets/vendor-class-variance-authority-5VPnzWs2.js +1 -0
  36. package/dist/client/assets/vendor-clsx-B-dksMZM.js +1 -0
  37. package/dist/client/assets/vendor-cookie-es-CS0aJGDi.js +1 -0
  38. package/dist/client/assets/vendor-detect-node-es-l0sNRNKZ.js +1 -0
  39. package/dist/client/assets/vendor-floating-ui-core-BlUy28sp.js +1 -0
  40. package/dist/client/assets/vendor-floating-ui-dom-BxK0hn2R.js +1 -0
  41. package/dist/client/assets/vendor-floating-ui-react-dom-Bas3975S.js +1 -0
  42. package/dist/client/assets/vendor-floating-ui-utils-BfYUAVcw.js +1 -0
  43. package/dist/client/assets/vendor-framer-motion-BMdL-cuX.js +9 -0
  44. package/dist/client/assets/vendor-get-nonce-C-Z93AgS.js +1 -0
  45. package/dist/client/assets/vendor-iceberg-js-tWD4K6Lg.js +1 -0
  46. package/dist/client/assets/vendor-lovable.dev-cloud-auth-js-VuzqtJVg.js +1 -0
  47. package/dist/client/assets/vendor-lucide-react-b5K2fehp.js +1 -0
  48. package/dist/client/assets/vendor-motion-dom-BETJamZt.js +1 -0
  49. package/dist/client/assets/vendor-motion-utils-BuWewJbj.js +1 -0
  50. package/dist/client/assets/vendor-radix-ui-primitive-Dc_FVRD7.js +1 -0
  51. package/dist/client/assets/vendor-radix-ui-react-accordion-C22Rgxe9.js +1 -0
  52. package/dist/client/assets/vendor-radix-ui-react-arrow-DMHj2mKI.js +1 -0
  53. package/dist/client/assets/vendor-radix-ui-react-avatar-CVPBkFXg.js +1 -0
  54. package/dist/client/assets/vendor-radix-ui-react-collapsible-BvM-4sKX.js +1 -0
  55. package/dist/client/assets/vendor-radix-ui-react-collection-D9KtqmHm.js +1 -0
  56. package/dist/client/assets/vendor-radix-ui-react-compose-refs-Cvq0AS8Z.js +1 -0
  57. package/dist/client/assets/vendor-radix-ui-react-context-CAqqn5Nx.js +1 -0
  58. package/dist/client/assets/vendor-radix-ui-react-dialog-DZ01vOLq.js +5 -0
  59. package/dist/client/assets/vendor-radix-ui-react-direction-DxZwNuei.js +1 -0
  60. package/dist/client/assets/vendor-radix-ui-react-dismissable-layer-Dqgrs55Y.js +1 -0
  61. package/dist/client/assets/vendor-radix-ui-react-dropdown-menu-0uzvrqkn.js +1 -0
  62. package/dist/client/assets/vendor-radix-ui-react-focus-guards-DgWoZ-fP.js +1 -0
  63. package/dist/client/assets/vendor-radix-ui-react-focus-scope-BLIu5QaL.js +1 -0
  64. package/dist/client/assets/vendor-radix-ui-react-id-bpga_rLa.js +1 -0
  65. package/dist/client/assets/vendor-radix-ui-react-menu-D0qf2r6_.js +1 -0
  66. package/dist/client/assets/vendor-radix-ui-react-popper-BafIylxU.js +1 -0
  67. package/dist/client/assets/vendor-radix-ui-react-portal-BnAsfNCS.js +1 -0
  68. package/dist/client/assets/vendor-radix-ui-react-presence-C-f3UKQ2.js +1 -0
  69. package/dist/client/assets/vendor-radix-ui-react-primitive-zTHwXNoz.js +1 -0
  70. package/dist/client/assets/vendor-radix-ui-react-roving-focus-jyJB8K2E.js +1 -0
  71. package/dist/client/assets/vendor-radix-ui-react-slot-6LXHJrHl.js +1 -0
  72. package/dist/client/assets/vendor-radix-ui-react-use-callback-ref-E91aPc6s.js +1 -0
  73. package/dist/client/assets/vendor-radix-ui-react-use-controllable-state-Ca3eMtxa.js +1 -0
  74. package/dist/client/assets/vendor-radix-ui-react-use-effect-event-CPeX4A3c.js +1 -0
  75. package/dist/client/assets/vendor-radix-ui-react-use-escape-keydown-7n3YsXFo.js +1 -0
  76. package/dist/client/assets/vendor-radix-ui-react-use-is-hydrated-C1PY1qNv.js +1 -0
  77. package/dist/client/assets/vendor-radix-ui-react-use-layout-effect-B3AcGWPy.js +1 -0
  78. package/dist/client/assets/vendor-radix-ui-react-use-size-CXS04sct.js +1 -0
  79. package/dist/client/assets/vendor-react-dom-BnNs-kzm.js +9 -0
  80. package/dist/client/assets/vendor-react-gJPiVnX5.js +1 -0
  81. package/dist/client/assets/vendor-react-remove-scroll-DHKl-IMP.js +4 -0
  82. package/dist/client/assets/vendor-react-remove-scroll-bar-CSjdInc2.js +38 -0
  83. package/dist/client/assets/vendor-react-style-singleton-BqHpkgXn.js +1 -0
  84. package/dist/client/assets/vendor-scheduler-7OC5HNn7.js +1 -0
  85. package/dist/client/assets/vendor-seroval-B_Fur-nl.js +3 -0
  86. package/dist/client/assets/vendor-seroval-plugins-CBHnPkZJ.js +1 -0
  87. package/dist/client/assets/vendor-sonner-71-LdGG1.js +1 -0
  88. package/dist/client/assets/vendor-supabase-auth-js-DWrN-bIx.js +18 -0
  89. package/dist/client/assets/vendor-supabase-functions-js-uY_V-TxC.js +1 -0
  90. package/dist/client/assets/vendor-supabase-phoenix-BzEf37Ve.js +2 -0
  91. package/dist/client/assets/vendor-supabase-postgrest-js-C4rBWbCx.js +4 -0
  92. package/dist/client/assets/vendor-supabase-realtime-js-D6BlOYKE.js +23 -0
  93. package/dist/client/assets/vendor-supabase-storage-js-BG98L3Zz.js +1 -0
  94. package/dist/client/assets/vendor-supabase-supabase-js-DCCzdwBJ.js +1 -0
  95. package/dist/client/assets/vendor-tailwind-merge-Ct12j0u0.js +1 -0
  96. package/dist/client/assets/vendor-tanstack-history-C617CaxG.js +1 -0
  97. package/dist/client/assets/vendor-tanstack-query-core-7wuJJ5ZL.js +1 -0
  98. package/dist/client/assets/vendor-tanstack-react-query-HImzo8sX.js +1 -0
  99. package/dist/client/assets/vendor-tanstack-react-router-sIZLK-LU.js +1 -0
  100. package/dist/client/assets/vendor-tanstack-react-start-client-GiYCfWmf.js +1 -0
  101. package/dist/client/assets/vendor-tanstack-react-store-EvTi3ahh.js +1 -0
  102. package/dist/client/assets/vendor-tanstack-router-core-Cr7bYUZv.js +1 -0
  103. package/dist/client/assets/vendor-tanstack-start-client-core-C-00BBOu.js +2 -0
  104. package/dist/client/assets/vendor-tanstack-start-fn-stubs-l0sNRNKZ.js +1 -0
  105. package/dist/client/assets/vendor-tanstack-store-BC7mA7pq.js +1 -0
  106. package/dist/client/assets/vendor-tslib-Du-meQkk.js +1 -0
  107. package/dist/client/assets/vendor-use-callback-ref-C_fIAtot.js +1 -0
  108. package/dist/client/assets/vendor-use-sidecar-Bh0DDN6h.js +1 -0
  109. package/dist/client/assets/vendor-use-sync-external-store-ZvKHXaIn.js +1 -0
  110. package/dist/client/assets/vendor-vercel-analytics-DwPM5BWs.js +1 -0
  111. package/dist/client/assets/vendor-zod-By9teAtI.js +1 -0
  112. package/dist/client/robots.txt +2 -0
  113. package/dist/server/.dev.vars +5 -0
  114. package/dist/server/.vite/manifest.json +2528 -0
  115. package/dist/server/assets/ProductCard-CUPXy5Eo.js +149 -0
  116. package/dist/server/assets/_tanstack-start-manifest_v-do7vTWFD.js +4 -0
  117. package/dist/server/assets/about-TfKQw0Ga.js +28 -0
  118. package/dist/server/assets/admin-DspfJOJk.js +578 -0
  119. package/dist/server/assets/admin.functions-B78ppWLR.js +645 -0
  120. package/dist/server/assets/admin.functions-BWlKBoTL.js +93 -0
  121. package/dist/server/assets/admin.login-CV7QfeA6.js +139 -0
  122. package/dist/server/assets/affiliate-disclosure-B1wI1cDb.js +86 -0
  123. package/dist/server/assets/auth-middleware-Cn49MidW.js +62 -0
  124. package/dist/server/assets/categories-Z7jnAYZP.js +108 -0
  125. package/dist/server/assets/category._slug-D0XY3FGK.js +112 -0
  126. package/dist/server/assets/contact-IzyONsXs.js +104 -0
  127. package/dist/server/assets/faq-aRhB_CR3.js +133 -0
  128. package/dist/server/assets/hero-bg-BP2eVUIX.jpg +0 -0
  129. package/dist/server/assets/index-BTPHbXw9.js +221 -0
  130. package/dist/server/assets/index-ByJkHkrU.js +30 -0
  131. package/dist/server/assets/login-Dvy5Dm0f.js +175 -0
  132. package/dist/server/assets/logo-pSNfLJQk.png +0 -0
  133. package/dist/server/assets/privacy-B6Wiez1P.js +93 -0
  134. package/dist/server/assets/product-links-CGYEPP56.js +16 -0
  135. package/dist/server/assets/product._id-BpRa-1z0.js +231 -0
  136. package/dist/server/assets/products.functions-DSlmibYN.js +209 -0
  137. package/dist/server/assets/products.functions-DlHkRiqi.js +24 -0
  138. package/dist/server/assets/profile-B0NWzVAZ.js +314 -0
  139. package/dist/server/assets/reset-password-CY-rmqMr.js +115 -0
  140. package/dist/server/assets/saved-7FA6Dbom.js +126 -0
  141. package/dist/server/assets/search-Yw5c_fZa.js +329 -0
  142. package/dist/server/assets/signup-UPzgZo4i.js +143 -0
  143. package/dist/server/assets/styles-DrNJG0BO.css +1 -0
  144. package/dist/server/assets/terms-CMnX95bP.js +89 -0
  145. package/dist/server/assets/update-password-Cr94ea8n.js +131 -0
  146. package/dist/server/assets/vendor-aria-hidden-DPa16MWu.js +122 -0
  147. package/dist/server/assets/vendor-class-variance-authority-0YxJPB9Y.js +44 -0
  148. package/dist/server/assets/vendor-cloudflare-unenv-preset-ya0VEFBz.js +250 -0
  149. package/dist/server/assets/vendor-clsx-DgYk2OaC.js +16 -0
  150. package/dist/server/assets/vendor-cookie-es-DAoofYiI.js +44 -0
  151. package/dist/server/assets/vendor-detect-node-es-l0sNRNKZ.js +1 -0
  152. package/dist/server/assets/vendor-floating-ui-core-3tkK0THV.js +726 -0
  153. package/dist/server/assets/vendor-floating-ui-dom-C-cPtgJv.js +626 -0
  154. package/dist/server/assets/vendor-floating-ui-react-dom-CRG6gBpH.js +319 -0
  155. package/dist/server/assets/vendor-floating-ui-utils-DmXANH-E.js +320 -0
  156. package/dist/server/assets/vendor-framer-motion-X4zAkX3J.js +1979 -0
  157. package/dist/server/assets/vendor-get-nonce-DiSj3EHl.js +9 -0
  158. package/dist/server/assets/vendor-h3-v2-CCobnLY5.js +287 -0
  159. package/dist/server/assets/vendor-iceberg-js-bHCkXyJn.js +534 -0
  160. package/dist/server/assets/vendor-isbot-CZ7WjwVs.js +21 -0
  161. package/dist/server/assets/vendor-lovable.dev-cloud-auth-js-BE03njZw.js +180 -0
  162. package/dist/server/assets/vendor-lucide-react-Ddew6HYb.js +458 -0
  163. package/dist/server/assets/vendor-motion-dom-D2MTwGIG.js +5983 -0
  164. package/dist/server/assets/vendor-motion-utils-LJlIFN6m.js +161 -0
  165. package/dist/server/assets/vendor-radix-ui-primitive-B-mNdDrH.js +11 -0
  166. package/dist/server/assets/vendor-radix-ui-react-accordion-1Izf6x00.js +308 -0
  167. package/dist/server/assets/vendor-radix-ui-react-arrow-B882lnFK.js +23 -0
  168. package/dist/server/assets/vendor-radix-ui-react-avatar-BVgZt2Ab.js +209 -0
  169. package/dist/server/assets/vendor-radix-ui-react-collapsible-DCBbMZiS.js +147 -0
  170. package/dist/server/assets/vendor-radix-ui-react-collection-BZ2srfgU.js +150 -0
  171. package/dist/server/assets/vendor-radix-ui-react-compose-refs-D3qsKVk1.js +39 -0
  172. package/dist/server/assets/vendor-radix-ui-react-context-BVoNDLue.js +78 -0
  173. package/dist/server/assets/vendor-radix-ui-react-dialog-DlxMaNYK.js +406 -0
  174. package/dist/server/assets/vendor-radix-ui-react-direction-Dt_WDL1t.js +9 -0
  175. package/dist/server/assets/vendor-radix-ui-react-dismissable-layer-CjsuPohV.js +210 -0
  176. package/dist/server/assets/vendor-radix-ui-react-dropdown-menu-DVxKumY8.js +263 -0
  177. package/dist/server/assets/vendor-radix-ui-react-focus-guards-D_6NoePE.js +29 -0
  178. package/dist/server/assets/vendor-radix-ui-react-focus-scope-DEIhTJJH.js +206 -0
  179. package/dist/server/assets/vendor-radix-ui-react-id-DFFpgh6m.js +14 -0
  180. package/dist/server/assets/vendor-radix-ui-react-menu-CiTMLwjT.js +893 -0
  181. package/dist/server/assets/vendor-radix-ui-react-popper-23Ye2Vyc.js +286 -0
  182. package/dist/server/assets/vendor-radix-ui-react-portal-CZCH5uPk.js +16 -0
  183. package/dist/server/assets/vendor-radix-ui-react-presence-CaAULlDU.js +128 -0
  184. package/dist/server/assets/vendor-radix-ui-react-primitive-BeOk3UYa.js +124 -0
  185. package/dist/server/assets/vendor-radix-ui-react-roving-focus-DES9GR8l.js +224 -0
  186. package/dist/server/assets/vendor-radix-ui-react-slot-DUhZbzoH.js +103 -0
  187. package/dist/server/assets/vendor-radix-ui-react-use-callback-ref-BynBgohw.js +11 -0
  188. package/dist/server/assets/vendor-radix-ui-react-use-controllable-state-C9KpT6DG.js +69 -0
  189. package/dist/server/assets/vendor-radix-ui-react-use-effect-event-gpNY2xjS.js +1 -0
  190. package/dist/server/assets/vendor-radix-ui-react-use-escape-keydown-CcYRQ2pp.js +17 -0
  191. package/dist/server/assets/vendor-radix-ui-react-use-is-hydrated-D_LcBPXY.js +15 -0
  192. package/dist/server/assets/vendor-radix-ui-react-use-layout-effect-1LNLXAjr.js +6 -0
  193. package/dist/server/assets/vendor-radix-ui-react-use-size-D6fiKJQo.js +39 -0
  194. package/dist/server/assets/vendor-react-DvBrY0qp.js +511 -0
  195. package/dist/server/assets/vendor-react-dom-yvMLPM0j.js +10484 -0
  196. package/dist/server/assets/vendor-react-remove-scroll-BNtiEvVN.js +328 -0
  197. package/dist/server/assets/vendor-react-remove-scroll-bar-hLqRASRk.js +82 -0
  198. package/dist/server/assets/vendor-react-style-singleton-BXjcXskB.js +69 -0
  199. package/dist/server/assets/vendor-rou3-3NaGPdI8.js +8 -0
  200. package/dist/server/assets/vendor-seroval-dJyC-Zhz.js +1775 -0
  201. package/dist/server/assets/vendor-seroval-plugins-Pq_U2meB.js +58 -0
  202. package/dist/server/assets/vendor-sonner-CqbjhsRh.js +1086 -0
  203. package/dist/server/assets/vendor-srvx-BA-baEX9.js +6 -0
  204. package/dist/server/assets/vendor-supabase-auth-js-D4xjVprw.js +7602 -0
  205. package/dist/server/assets/vendor-supabase-functions-js-sWy4UYn1.js +322 -0
  206. package/dist/server/assets/vendor-supabase-phoenix-Bw3Uh2Nn.js +1777 -0
  207. package/dist/server/assets/vendor-supabase-postgrest-js-AO-BXa7I.js +4938 -0
  208. package/dist/server/assets/vendor-supabase-realtime-js-BtdNgJbm.js +2111 -0
  209. package/dist/server/assets/vendor-supabase-storage-js-Dk_MrPYO.js +2679 -0
  210. package/dist/server/assets/vendor-supabase-supabase-js-D1EEtG3j.js +697 -0
  211. package/dist/server/assets/vendor-tailwind-merge-BHb_obmC.js +3255 -0
  212. package/dist/server/assets/vendor-tanstack-history-C4pKJmkt.js +204 -0
  213. package/dist/server/assets/vendor-tanstack-query-core-PwwTR5ld.js +2552 -0
  214. package/dist/server/assets/vendor-tanstack-react-query-hhHzXAK1.js +190 -0
  215. package/dist/server/assets/vendor-tanstack-react-router-XzqpA65A.js +1120 -0
  216. package/dist/server/assets/vendor-tanstack-react-start-RvWUpvat.js +37 -0
  217. package/dist/server/assets/vendor-tanstack-react-start-client-gpNY2xjS.js +1 -0
  218. package/dist/server/assets/vendor-tanstack-react-start-server-uj_Y9pEN.js +15 -0
  219. package/dist/server/assets/vendor-tanstack-react-store-gpNY2xjS.js +1 -0
  220. package/dist/server/assets/vendor-tanstack-router-core-6wywV3KN.js +4252 -0
  221. package/dist/server/assets/vendor-tanstack-start-client-core-DoOKV2pA.js +1741 -0
  222. package/dist/server/assets/vendor-tanstack-start-fn-stubs-l0sNRNKZ.js +1 -0
  223. package/dist/server/assets/vendor-tanstack-start-server-core-CsAstXv7.js +1421 -0
  224. package/dist/server/assets/vendor-tanstack-start-storage-context-DgH9hIJT.js +17 -0
  225. package/dist/server/assets/vendor-tanstack-store-l0sNRNKZ.js +1 -0
  226. package/dist/server/assets/vendor-tslib-_8ICaZ64.js +67 -0
  227. package/dist/server/assets/vendor-unenv-DUvF4YIF.js +544 -0
  228. package/dist/server/assets/vendor-use-callback-ref-DMFDRvmi.js +66 -0
  229. package/dist/server/assets/vendor-use-sidecar-DG1tHua4.js +106 -0
  230. package/dist/server/assets/vendor-use-sync-external-store-rZ8vi0It.js +64 -0
  231. package/dist/server/assets/vendor-vercel-analytics-oP8BDp0L.js +168 -0
  232. package/dist/server/assets/vendor-zod-BRyQdbC-.js +3580 -0
  233. package/dist/server/index.js +158 -0
  234. package/dist/server/wrangler.json +1 -0
  235. package/enable-powershell.ps1 +7 -0
  236. package/eslint.config.js +41 -0
  237. package/lint.bat +4 -0
  238. package/package.json +95 -0
  239. package/public/robots.txt +2 -0
  240. package/run-npm-build.cjs +20 -0
  241. package/run-npm-build.js +20 -0
  242. package/src/assets/hero-bg.jpg +0 -0
  243. package/src/assets/logo.png +0 -0
  244. package/src/components/scrollsy/Footer.tsx +68 -0
  245. package/src/components/scrollsy/LiveTicker.tsx +31 -0
  246. package/src/components/scrollsy/Logo.tsx +28 -0
  247. package/src/components/scrollsy/Nav.tsx +255 -0
  248. package/src/components/scrollsy/ProductCard.tsx +190 -0
  249. package/src/components/scrollsy/ProductFilters.tsx +226 -0
  250. package/src/components/scrollsy/SupportWidget.tsx +197 -0
  251. package/src/components/ui/accordion.tsx +51 -0
  252. package/src/components/ui/alert-dialog.tsx +115 -0
  253. package/src/components/ui/alert.tsx +49 -0
  254. package/src/components/ui/aspect-ratio.tsx +5 -0
  255. package/src/components/ui/avatar.tsx +47 -0
  256. package/src/components/ui/badge.tsx +32 -0
  257. package/src/components/ui/breadcrumb.tsx +101 -0
  258. package/src/components/ui/button.tsx +49 -0
  259. package/src/components/ui/calendar.tsx +177 -0
  260. package/src/components/ui/card.tsx +55 -0
  261. package/src/components/ui/carousel.tsx +240 -0
  262. package/src/components/ui/chart.tsx +331 -0
  263. package/src/components/ui/checkbox.tsx +26 -0
  264. package/src/components/ui/collapsible.tsx +11 -0
  265. package/src/components/ui/command.tsx +143 -0
  266. package/src/components/ui/context-menu.tsx +187 -0
  267. package/src/components/ui/dialog.tsx +104 -0
  268. package/src/components/ui/drawer.tsx +98 -0
  269. package/src/components/ui/dropdown-menu.tsx +188 -0
  270. package/src/components/ui/form.tsx +171 -0
  271. package/src/components/ui/hover-card.tsx +27 -0
  272. package/src/components/ui/input-otp.tsx +69 -0
  273. package/src/components/ui/input.tsx +22 -0
  274. package/src/components/ui/label.tsx +21 -0
  275. package/src/components/ui/menubar.tsx +229 -0
  276. package/src/components/ui/navigation-menu.tsx +120 -0
  277. package/src/components/ui/pagination.tsx +98 -0
  278. package/src/components/ui/popover.tsx +31 -0
  279. package/src/components/ui/progress.tsx +25 -0
  280. package/src/components/ui/radio-group.tsx +36 -0
  281. package/src/components/ui/resizable.tsx +37 -0
  282. package/src/components/ui/scroll-area.tsx +44 -0
  283. package/src/components/ui/select.tsx +152 -0
  284. package/src/components/ui/separator.tsx +24 -0
  285. package/src/components/ui/sheet.tsx +122 -0
  286. package/src/components/ui/sidebar.tsx +744 -0
  287. package/src/components/ui/skeleton.tsx +7 -0
  288. package/src/components/ui/slider.tsx +23 -0
  289. package/src/components/ui/sonner.tsx +23 -0
  290. package/src/components/ui/switch.tsx +27 -0
  291. package/src/components/ui/table.tsx +94 -0
  292. package/src/components/ui/tabs.tsx +53 -0
  293. package/src/components/ui/textarea.tsx +21 -0
  294. package/src/components/ui/toggle-group.tsx +57 -0
  295. package/src/components/ui/toggle.tsx +42 -0
  296. package/src/components/ui/tooltip.tsx +32 -0
  297. package/src/hooks/use-auth.ts +26 -0
  298. package/src/hooks/use-mobile.tsx +19 -0
  299. package/src/integrations/lovable/index.ts +41 -0
  300. package/src/lib/admin.functions.ts +564 -0
  301. package/src/lib/error-capture.ts +27 -0
  302. package/src/lib/error-page.ts +30 -0
  303. package/src/lib/product-links.ts +39 -0
  304. package/src/lib/products.functions.ts +101 -0
  305. package/src/lib/utils.ts +6 -0
  306. package/src/routeTree.gen.ts +480 -0
  307. package/src/router.tsx +16 -0
  308. package/src/routes/__root.tsx +177 -0
  309. package/src/routes/about.tsx +66 -0
  310. package/src/routes/admin.login.tsx +95 -0
  311. package/src/routes/admin.tsx +811 -0
  312. package/src/routes/affiliate-disclosure.tsx +35 -0
  313. package/src/routes/categories.tsx +57 -0
  314. package/src/routes/category.$slug.tsx +51 -0
  315. package/src/routes/contact.tsx +69 -0
  316. package/src/routes/faq.tsx +63 -0
  317. package/src/routes/index.tsx +269 -0
  318. package/src/routes/login.tsx +160 -0
  319. package/src/routes/privacy.tsx +39 -0
  320. package/src/routes/product.$id.tsx +212 -0
  321. package/src/routes/profile.tsx +393 -0
  322. package/src/routes/reset-password.tsx +71 -0
  323. package/src/routes/saved.tsx +83 -0
  324. package/src/routes/search.tsx +136 -0
  325. package/src/routes/signup.tsx +108 -0
  326. package/src/routes/sitemap[.]xml.ts +34 -0
  327. package/src/routes/terms.tsx +40 -0
  328. package/src/routes/update-password.tsx +91 -0
  329. package/src/server.ts +80 -0
  330. package/src/start.ts +24 -0
  331. package/src/styles.css +333 -0
  332. package/terminal-test-output.txt +1 -0
  333. package/tsconfig.json +27 -0
  334. package/vercel.json +26 -0
  335. package/vite.config.ts +38 -0
  336. package/wrangler.jsonc +7 -0
@@ -0,0 +1,534 @@
1
+ var IcebergError = class extends Error {
2
+ constructor(message, opts) {
3
+ super(message);
4
+ this.name = "IcebergError";
5
+ this.status = opts.status;
6
+ this.icebergType = opts.icebergType;
7
+ this.icebergCode = opts.icebergCode;
8
+ this.details = opts.details;
9
+ this.isCommitStateUnknown = opts.icebergType === "CommitStateUnknownException" || [500, 502, 504].includes(opts.status) && opts.icebergType?.includes("CommitState") === true;
10
+ }
11
+ /**
12
+ * Returns true if the error is a 404 Not Found error.
13
+ */
14
+ isNotFound() {
15
+ return this.status === 404;
16
+ }
17
+ /**
18
+ * Returns true if the error is a 409 Conflict error.
19
+ */
20
+ isConflict() {
21
+ return this.status === 409;
22
+ }
23
+ /**
24
+ * Returns true if the error is a 419 Authentication Timeout error.
25
+ */
26
+ isAuthenticationTimeout() {
27
+ return this.status === 419;
28
+ }
29
+ };
30
+ function buildUrl(baseUrl, path, query) {
31
+ const url = new URL(path, baseUrl);
32
+ if (query) {
33
+ for (const [key, value] of Object.entries(query)) {
34
+ if (value !== void 0) {
35
+ url.searchParams.set(key, value);
36
+ }
37
+ }
38
+ }
39
+ return url.toString();
40
+ }
41
+ async function buildAuthHeaders(auth) {
42
+ if (!auth || auth.type === "none") {
43
+ return {};
44
+ }
45
+ if (auth.type === "bearer") {
46
+ return { Authorization: `Bearer ${auth.token}` };
47
+ }
48
+ if (auth.type === "header") {
49
+ return { [auth.name]: auth.value };
50
+ }
51
+ if (auth.type === "custom") {
52
+ return await auth.getHeaders();
53
+ }
54
+ return {};
55
+ }
56
+ function createFetchClient(options) {
57
+ const fetchFn = options.fetchImpl ?? globalThis.fetch;
58
+ return {
59
+ async request({
60
+ method,
61
+ path,
62
+ query,
63
+ body,
64
+ headers
65
+ }) {
66
+ const url = buildUrl(options.baseUrl, path, query);
67
+ const authHeaders = await buildAuthHeaders(options.auth);
68
+ const res = await fetchFn(url, {
69
+ method,
70
+ headers: {
71
+ ...body ? { "Content-Type": "application/json" } : {},
72
+ ...authHeaders,
73
+ ...headers
74
+ },
75
+ body: body ? JSON.stringify(body) : void 0
76
+ });
77
+ const text = await res.text();
78
+ const isJson = (res.headers.get("content-type") || "").includes("application/json");
79
+ const data = isJson && text ? JSON.parse(text) : text;
80
+ if (!res.ok) {
81
+ const errBody = isJson ? data : void 0;
82
+ const errorDetail = errBody?.error;
83
+ throw new IcebergError(
84
+ errorDetail?.message ?? `Request failed with status ${res.status}`,
85
+ {
86
+ status: res.status,
87
+ icebergType: errorDetail?.type,
88
+ icebergCode: errorDetail?.code,
89
+ details: errBody
90
+ }
91
+ );
92
+ }
93
+ return { status: res.status, headers: res.headers, data };
94
+ }
95
+ };
96
+ }
97
+ function namespaceToPath(namespace) {
98
+ return namespace.join("");
99
+ }
100
+ var NamespaceOperations = class {
101
+ constructor(client, prefix = "") {
102
+ this.client = client;
103
+ this.prefix = prefix;
104
+ }
105
+ async listNamespaces(parent) {
106
+ const query = parent ? { parent: namespaceToPath(parent.namespace) } : void 0;
107
+ const response = await this.client.request({
108
+ method: "GET",
109
+ path: `${this.prefix}/namespaces`,
110
+ query
111
+ });
112
+ return response.data.namespaces.map((ns) => ({ namespace: ns }));
113
+ }
114
+ async createNamespace(id, metadata) {
115
+ const request = {
116
+ namespace: id.namespace,
117
+ properties: metadata?.properties
118
+ };
119
+ const response = await this.client.request({
120
+ method: "POST",
121
+ path: `${this.prefix}/namespaces`,
122
+ body: request
123
+ });
124
+ return response.data;
125
+ }
126
+ async dropNamespace(id) {
127
+ await this.client.request({
128
+ method: "DELETE",
129
+ path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`
130
+ });
131
+ }
132
+ async loadNamespaceMetadata(id) {
133
+ const response = await this.client.request({
134
+ method: "GET",
135
+ path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`
136
+ });
137
+ return {
138
+ properties: response.data.properties
139
+ };
140
+ }
141
+ async namespaceExists(id) {
142
+ try {
143
+ await this.client.request({
144
+ method: "HEAD",
145
+ path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`
146
+ });
147
+ return true;
148
+ } catch (error) {
149
+ if (error instanceof IcebergError && error.status === 404) {
150
+ return false;
151
+ }
152
+ throw error;
153
+ }
154
+ }
155
+ async createNamespaceIfNotExists(id, metadata) {
156
+ try {
157
+ return await this.createNamespace(id, metadata);
158
+ } catch (error) {
159
+ if (error instanceof IcebergError && error.status === 409) {
160
+ return;
161
+ }
162
+ throw error;
163
+ }
164
+ }
165
+ };
166
+ function namespaceToPath2(namespace) {
167
+ return namespace.join("");
168
+ }
169
+ var TableOperations = class {
170
+ constructor(client, prefix = "", accessDelegation) {
171
+ this.client = client;
172
+ this.prefix = prefix;
173
+ this.accessDelegation = accessDelegation;
174
+ }
175
+ async listTables(namespace) {
176
+ const response = await this.client.request({
177
+ method: "GET",
178
+ path: `${this.prefix}/namespaces/${namespaceToPath2(namespace.namespace)}/tables`
179
+ });
180
+ return response.data.identifiers;
181
+ }
182
+ async createTable(namespace, request) {
183
+ const headers = {};
184
+ if (this.accessDelegation) {
185
+ headers["X-Iceberg-Access-Delegation"] = this.accessDelegation;
186
+ }
187
+ const response = await this.client.request({
188
+ method: "POST",
189
+ path: `${this.prefix}/namespaces/${namespaceToPath2(namespace.namespace)}/tables`,
190
+ body: request,
191
+ headers
192
+ });
193
+ return response.data.metadata;
194
+ }
195
+ async updateTable(id, request) {
196
+ const response = await this.client.request({
197
+ method: "POST",
198
+ path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,
199
+ body: request
200
+ });
201
+ return {
202
+ "metadata-location": response.data["metadata-location"],
203
+ metadata: response.data.metadata
204
+ };
205
+ }
206
+ async dropTable(id, options) {
207
+ await this.client.request({
208
+ method: "DELETE",
209
+ path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,
210
+ query: { purgeRequested: String(options?.purge ?? false) }
211
+ });
212
+ }
213
+ async loadTable(id) {
214
+ const headers = {};
215
+ if (this.accessDelegation) {
216
+ headers["X-Iceberg-Access-Delegation"] = this.accessDelegation;
217
+ }
218
+ const response = await this.client.request({
219
+ method: "GET",
220
+ path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,
221
+ headers
222
+ });
223
+ return response.data.metadata;
224
+ }
225
+ async tableExists(id) {
226
+ const headers = {};
227
+ if (this.accessDelegation) {
228
+ headers["X-Iceberg-Access-Delegation"] = this.accessDelegation;
229
+ }
230
+ try {
231
+ await this.client.request({
232
+ method: "HEAD",
233
+ path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,
234
+ headers
235
+ });
236
+ return true;
237
+ } catch (error) {
238
+ if (error instanceof IcebergError && error.status === 404) {
239
+ return false;
240
+ }
241
+ throw error;
242
+ }
243
+ }
244
+ async createTableIfNotExists(namespace, request) {
245
+ try {
246
+ return await this.createTable(namespace, request);
247
+ } catch (error) {
248
+ if (error instanceof IcebergError && error.status === 409) {
249
+ return await this.loadTable({ namespace: namespace.namespace, name: request.name });
250
+ }
251
+ throw error;
252
+ }
253
+ }
254
+ };
255
+ var IcebergRestCatalog = class {
256
+ /**
257
+ * Creates a new Iceberg REST Catalog client.
258
+ *
259
+ * @param options - Configuration options for the catalog client
260
+ */
261
+ constructor(options) {
262
+ let prefix = "v1";
263
+ if (options.catalogName) {
264
+ prefix += `/${options.catalogName}`;
265
+ }
266
+ const baseUrl = options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`;
267
+ this.client = createFetchClient({
268
+ baseUrl,
269
+ auth: options.auth,
270
+ fetchImpl: options.fetch
271
+ });
272
+ this.accessDelegation = options.accessDelegation?.join(",");
273
+ this.namespaceOps = new NamespaceOperations(this.client, prefix);
274
+ this.tableOps = new TableOperations(this.client, prefix, this.accessDelegation);
275
+ }
276
+ /**
277
+ * Lists all namespaces in the catalog.
278
+ *
279
+ * @param parent - Optional parent namespace to list children under
280
+ * @returns Array of namespace identifiers
281
+ *
282
+ * @example
283
+ * ```typescript
284
+ * // List all top-level namespaces
285
+ * const namespaces = await catalog.listNamespaces();
286
+ *
287
+ * // List namespaces under a parent
288
+ * const children = await catalog.listNamespaces({ namespace: ['analytics'] });
289
+ * ```
290
+ */
291
+ async listNamespaces(parent) {
292
+ return this.namespaceOps.listNamespaces(parent);
293
+ }
294
+ /**
295
+ * Creates a new namespace in the catalog.
296
+ *
297
+ * @param id - Namespace identifier to create
298
+ * @param metadata - Optional metadata properties for the namespace
299
+ * @returns Response containing the created namespace and its properties
300
+ *
301
+ * @example
302
+ * ```typescript
303
+ * const response = await catalog.createNamespace(
304
+ * { namespace: ['analytics'] },
305
+ * { properties: { owner: 'data-team' } }
306
+ * );
307
+ * console.log(response.namespace); // ['analytics']
308
+ * console.log(response.properties); // { owner: 'data-team', ... }
309
+ * ```
310
+ */
311
+ async createNamespace(id, metadata) {
312
+ return this.namespaceOps.createNamespace(id, metadata);
313
+ }
314
+ /**
315
+ * Drops a namespace from the catalog.
316
+ *
317
+ * The namespace must be empty (contain no tables) before it can be dropped.
318
+ *
319
+ * @param id - Namespace identifier to drop
320
+ *
321
+ * @example
322
+ * ```typescript
323
+ * await catalog.dropNamespace({ namespace: ['analytics'] });
324
+ * ```
325
+ */
326
+ async dropNamespace(id) {
327
+ await this.namespaceOps.dropNamespace(id);
328
+ }
329
+ /**
330
+ * Loads metadata for a namespace.
331
+ *
332
+ * @param id - Namespace identifier to load
333
+ * @returns Namespace metadata including properties
334
+ *
335
+ * @example
336
+ * ```typescript
337
+ * const metadata = await catalog.loadNamespaceMetadata({ namespace: ['analytics'] });
338
+ * console.log(metadata.properties);
339
+ * ```
340
+ */
341
+ async loadNamespaceMetadata(id) {
342
+ return this.namespaceOps.loadNamespaceMetadata(id);
343
+ }
344
+ /**
345
+ * Lists all tables in a namespace.
346
+ *
347
+ * @param namespace - Namespace identifier to list tables from
348
+ * @returns Array of table identifiers
349
+ *
350
+ * @example
351
+ * ```typescript
352
+ * const tables = await catalog.listTables({ namespace: ['analytics'] });
353
+ * console.log(tables); // [{ namespace: ['analytics'], name: 'events' }, ...]
354
+ * ```
355
+ */
356
+ async listTables(namespace) {
357
+ return this.tableOps.listTables(namespace);
358
+ }
359
+ /**
360
+ * Creates a new table in the catalog.
361
+ *
362
+ * @param namespace - Namespace to create the table in
363
+ * @param request - Table creation request including name, schema, partition spec, etc.
364
+ * @returns Table metadata for the created table
365
+ *
366
+ * @example
367
+ * ```typescript
368
+ * const metadata = await catalog.createTable(
369
+ * { namespace: ['analytics'] },
370
+ * {
371
+ * name: 'events',
372
+ * schema: {
373
+ * type: 'struct',
374
+ * fields: [
375
+ * { id: 1, name: 'id', type: 'long', required: true },
376
+ * { id: 2, name: 'timestamp', type: 'timestamp', required: true }
377
+ * ],
378
+ * 'schema-id': 0
379
+ * },
380
+ * 'partition-spec': {
381
+ * 'spec-id': 0,
382
+ * fields: [
383
+ * { source_id: 2, field_id: 1000, name: 'ts_day', transform: 'day' }
384
+ * ]
385
+ * }
386
+ * }
387
+ * );
388
+ * ```
389
+ */
390
+ async createTable(namespace, request) {
391
+ return this.tableOps.createTable(namespace, request);
392
+ }
393
+ /**
394
+ * Updates an existing table's metadata.
395
+ *
396
+ * Can update the schema, partition spec, or properties of a table.
397
+ *
398
+ * @param id - Table identifier to update
399
+ * @param request - Update request with fields to modify
400
+ * @returns Response containing the metadata location and updated table metadata
401
+ *
402
+ * @example
403
+ * ```typescript
404
+ * const response = await catalog.updateTable(
405
+ * { namespace: ['analytics'], name: 'events' },
406
+ * {
407
+ * properties: { 'read.split.target-size': '134217728' }
408
+ * }
409
+ * );
410
+ * console.log(response['metadata-location']); // s3://...
411
+ * console.log(response.metadata); // TableMetadata object
412
+ * ```
413
+ */
414
+ async updateTable(id, request) {
415
+ return this.tableOps.updateTable(id, request);
416
+ }
417
+ /**
418
+ * Drops a table from the catalog.
419
+ *
420
+ * @param id - Table identifier to drop
421
+ *
422
+ * @example
423
+ * ```typescript
424
+ * await catalog.dropTable({ namespace: ['analytics'], name: 'events' });
425
+ * ```
426
+ */
427
+ async dropTable(id, options) {
428
+ await this.tableOps.dropTable(id, options);
429
+ }
430
+ /**
431
+ * Loads metadata for a table.
432
+ *
433
+ * @param id - Table identifier to load
434
+ * @returns Table metadata including schema, partition spec, location, etc.
435
+ *
436
+ * @example
437
+ * ```typescript
438
+ * const metadata = await catalog.loadTable({ namespace: ['analytics'], name: 'events' });
439
+ * console.log(metadata.schema);
440
+ * console.log(metadata.location);
441
+ * ```
442
+ */
443
+ async loadTable(id) {
444
+ return this.tableOps.loadTable(id);
445
+ }
446
+ /**
447
+ * Checks if a namespace exists in the catalog.
448
+ *
449
+ * @param id - Namespace identifier to check
450
+ * @returns True if the namespace exists, false otherwise
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * const exists = await catalog.namespaceExists({ namespace: ['analytics'] });
455
+ * console.log(exists); // true or false
456
+ * ```
457
+ */
458
+ async namespaceExists(id) {
459
+ return this.namespaceOps.namespaceExists(id);
460
+ }
461
+ /**
462
+ * Checks if a table exists in the catalog.
463
+ *
464
+ * @param id - Table identifier to check
465
+ * @returns True if the table exists, false otherwise
466
+ *
467
+ * @example
468
+ * ```typescript
469
+ * const exists = await catalog.tableExists({ namespace: ['analytics'], name: 'events' });
470
+ * console.log(exists); // true or false
471
+ * ```
472
+ */
473
+ async tableExists(id) {
474
+ return this.tableOps.tableExists(id);
475
+ }
476
+ /**
477
+ * Creates a namespace if it does not exist.
478
+ *
479
+ * If the namespace already exists, returns void. If created, returns the response.
480
+ *
481
+ * @param id - Namespace identifier to create
482
+ * @param metadata - Optional metadata properties for the namespace
483
+ * @returns Response containing the created namespace and its properties, or void if it already exists
484
+ *
485
+ * @example
486
+ * ```typescript
487
+ * const response = await catalog.createNamespaceIfNotExists(
488
+ * { namespace: ['analytics'] },
489
+ * { properties: { owner: 'data-team' } }
490
+ * );
491
+ * if (response) {
492
+ * console.log('Created:', response.namespace);
493
+ * } else {
494
+ * console.log('Already exists');
495
+ * }
496
+ * ```
497
+ */
498
+ async createNamespaceIfNotExists(id, metadata) {
499
+ return this.namespaceOps.createNamespaceIfNotExists(id, metadata);
500
+ }
501
+ /**
502
+ * Creates a table if it does not exist.
503
+ *
504
+ * If the table already exists, returns its metadata instead.
505
+ *
506
+ * @param namespace - Namespace to create the table in
507
+ * @param request - Table creation request including name, schema, partition spec, etc.
508
+ * @returns Table metadata for the created or existing table
509
+ *
510
+ * @example
511
+ * ```typescript
512
+ * const metadata = await catalog.createTableIfNotExists(
513
+ * { namespace: ['analytics'] },
514
+ * {
515
+ * name: 'events',
516
+ * schema: {
517
+ * type: 'struct',
518
+ * fields: [
519
+ * { id: 1, name: 'id', type: 'long', required: true },
520
+ * { id: 2, name: 'timestamp', type: 'timestamp', required: true }
521
+ * ],
522
+ * 'schema-id': 0
523
+ * }
524
+ * }
525
+ * );
526
+ * ```
527
+ */
528
+ async createTableIfNotExists(namespace, request) {
529
+ return this.tableOps.createTableIfNotExists(namespace, request);
530
+ }
531
+ };
532
+ export {
533
+ IcebergRestCatalog as I
534
+ };
@@ -0,0 +1,21 @@
1
+ var fullPattern = " daum[ /]| deusu/|(?:^|[^g])news(?!sapphire)|(?<! (?:channel/|google/))google(?!(app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!(?:lib))http|(?<!cam)scan|24x7|@[a-z][\\w-]+\\.|\\(\\)|\\.com\\b|\\b\\w+\\.ai|\\bcursor/|\\bmanus-user/|\\bort/|\\bperl\\b|\\bplaywright\\b|\\bsecurityheaders\\b|\\bselenium\\b|\\btime/|\\||^[\\w \\.\\-\\(?:\\):%]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[\\w\\-]+/[\\w]+$|^[^ ]{50,}$|^\\d+\\b|^\\W|^\\w*search\\b|^\\w+/[\\w\\(\\)]*$|^\\w+/\\d\\.\\d\\s\\([\\w@]+\\)$|^active|^ad muncher|^amaya|^apache/|^avsdevicesdk/|^azure|^biglotron|^bot|^bw/|^clamav[ /]|^claude-code/|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^email|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^igetter/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d\\s[\\w\\.-]+$|^mozilla/\\d\\.\\d\\s\\((?:compatible;)?(?:\\s?[\\w\\d-.]+\\/\\d+\\.\\d+)?\\)$|^navermailapp|^netsurf|^offline|^openai/|^owler|^php|^postman|^python|^rank|^read|^reed|^rest|^rss|^snapchat|^space bison|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|advisor|agent\\b|analyzer|archive|ask jeeves/teoma|audit|bit\\.ly/|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|convertify|crawl|cypress/|dareboost|datanyze|dejaclick|detect|dmbrowser|download|exaleadcloudview|feed|fetcher|firephp|functionize|grab|headless|httrack|hubspot marketing grader|ibisbrowser|infrawatch|insight|inspect|iplabel|java(?!;)|library|linkcheck|mail\\.ru/|manager|measure|monitor\\b|neustar wpm|node\\b|nutch|offbyone|onetrust|optimize|pageburst|pagespeed|parser|phantomjs|pingdom|powermarks|preview|proxy|ptst[ /]\\d|retriever|rexx;|rigor|rss\\b|scrape|server|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|tools|torrent|transcoder|url|validator|virtuoso|wappalyzer|webglance|webkit2png|whatcms/|xtate/";
2
+ var naivePattern = /bot|crawl|http|lighthouse|scan|search|spider/i;
3
+ var pattern;
4
+ function getPattern() {
5
+ if (pattern instanceof RegExp) {
6
+ return pattern;
7
+ }
8
+ try {
9
+ pattern = new RegExp(fullPattern, "i");
10
+ } catch (error) {
11
+ pattern = naivePattern;
12
+ }
13
+ return pattern;
14
+ }
15
+ var isNonEmptyString = (value) => typeof value === "string" && value !== "";
16
+ function isbot(userAgent) {
17
+ return isNonEmptyString(userAgent) && getPattern().test(userAgent);
18
+ }
19
+ export {
20
+ isbot as i
21
+ };