@dub/utils 0.0.53 → 0.0.55

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 (392) hide show
  1. package/dist/chunk-2HBAUG2V.mjs +1 -0
  2. package/dist/chunk-4TDRL2KB.mjs +1 -0
  3. package/dist/chunk-4YAXMKRQ.mjs +1 -0
  4. package/dist/chunk-5DT6AOV2.mjs +1 -0
  5. package/dist/chunk-5YAEEOIB.mjs +1 -0
  6. package/dist/chunk-76ELDZUK.mjs +1 -0
  7. package/dist/chunk-C4JMLACD.mjs +1 -0
  8. package/dist/chunk-C6YHGJJW.mjs +1 -0
  9. package/dist/chunk-CJDIT3IF.mjs +1 -0
  10. package/dist/chunk-CQUOVUQE.mjs +1 -0
  11. package/dist/chunk-EAYRT54A.mjs +1 -0
  12. package/dist/chunk-F4P6WJV7.mjs +1 -0
  13. package/dist/{chunk-GEU532AX.mjs → chunk-FPXOXMD4.mjs} +1 -1
  14. package/dist/chunk-IS7ER5CY.mjs +1 -0
  15. package/dist/chunk-JH4CWWXL.mjs +1 -0
  16. package/dist/chunk-K7XED2RW.mjs +1 -0
  17. package/dist/chunk-KDRQ6BUV.mjs +1 -0
  18. package/dist/{chunk-ERBNWBZS.mjs → chunk-L5BQNKZA.mjs} +1 -1
  19. package/dist/chunk-LAPYXK34.mjs +1 -0
  20. package/dist/chunk-LE6HPSC7.mjs +1 -0
  21. package/dist/chunk-MBZQIWRH.mjs +1 -0
  22. package/dist/{chunk-5VUO5P2B.mjs → chunk-OKHUN43N.mjs} +1 -1
  23. package/dist/chunk-OOOFAPFQ.mjs +1 -0
  24. package/dist/chunk-PMOQSSOL.mjs +1 -0
  25. package/dist/chunk-QAC4KSRZ.mjs +1 -0
  26. package/dist/chunk-RNWGZ4UJ.mjs +1 -0
  27. package/dist/chunk-T7G7FNH2.mjs +1 -0
  28. package/dist/{chunk-R3PJAF54.mjs → chunk-URLRZ32B.mjs} +1 -1
  29. package/dist/chunk-ZG64N7MK.mjs +1 -0
  30. package/dist/chunk-ZOUWCTIR.mjs +1 -0
  31. package/dist/constants/index.d.ts +3 -2
  32. package/dist/constants/index.mjs +1 -1
  33. package/dist/constants/middleware.d.ts +1 -3
  34. package/dist/constants/middleware.mjs +1 -1
  35. package/dist/constants/misc.mjs +1 -1
  36. package/dist/functions/capitalize.mjs +1 -1
  37. package/dist/functions/construct-metadata.mjs +1 -1
  38. package/dist/functions/datetime.d.ts +2 -1
  39. package/dist/functions/datetime.mjs +1 -1
  40. package/dist/functions/domains.mjs +1 -1
  41. package/dist/functions/hash-string.d.ts +3 -0
  42. package/dist/functions/hash-string.mjs +1 -0
  43. package/dist/functions/images.d.ts +7 -0
  44. package/dist/functions/images.mjs +1 -0
  45. package/dist/functions/index.d.ts +3 -2
  46. package/dist/functions/index.mjs +1 -1
  47. package/dist/functions/is-iframeable.mjs +1 -1
  48. package/dist/functions/link-constructor.mjs +1 -1
  49. package/dist/functions/urls.mjs +1 -1
  50. package/dist/index.d.ts +4 -3
  51. package/dist/index.mjs +1 -1
  52. package/package.json +1 -1
  53. package/dist/chunk-2CBXK3IX.mjs +0 -1
  54. package/dist/chunk-2DN4J7N7.mjs +0 -1
  55. package/dist/chunk-2J47GIUG.mjs +0 -1
  56. package/dist/chunk-2J5BCV2C.mjs +0 -1
  57. package/dist/chunk-2JOG52JO.mjs +0 -1
  58. package/dist/chunk-2RCZ6Q6L.mjs +0 -1
  59. package/dist/chunk-2T4TDTV2.mjs +0 -1
  60. package/dist/chunk-2TURBZEL.mjs +0 -1
  61. package/dist/chunk-32A5SDZL.mjs +0 -1
  62. package/dist/chunk-32E7EV62.mjs +0 -1
  63. package/dist/chunk-34MPJURK.mjs +0 -1
  64. package/dist/chunk-37754ABL.mjs +0 -1
  65. package/dist/chunk-3B5DP3T4.mjs +0 -1
  66. package/dist/chunk-3BUV2ANI.mjs +0 -1
  67. package/dist/chunk-3C2XEUEU.mjs +0 -1
  68. package/dist/chunk-3DLEUJV3.mjs +0 -1
  69. package/dist/chunk-3MMUFPNV.mjs +0 -1
  70. package/dist/chunk-3OOMLTJU.mjs +0 -1
  71. package/dist/chunk-3P54C65P.mjs +0 -1
  72. package/dist/chunk-3PRW7SAO.mjs +0 -1
  73. package/dist/chunk-3T7WWPZA.mjs +0 -1
  74. package/dist/chunk-3THE4C2K.mjs +0 -1
  75. package/dist/chunk-3UBZ222G.mjs +0 -1
  76. package/dist/chunk-3X7T3ABK.mjs +0 -1
  77. package/dist/chunk-46LXJSPI.mjs +0 -1
  78. package/dist/chunk-4BN7BHOL.mjs +0 -1
  79. package/dist/chunk-4CH6MXF3.mjs +0 -1
  80. package/dist/chunk-4M6WGMF5.mjs +0 -1
  81. package/dist/chunk-4Q6OLEY4.mjs +0 -1
  82. package/dist/chunk-4RSTNN7M.mjs +0 -1
  83. package/dist/chunk-4UYPINYJ.mjs +0 -1
  84. package/dist/chunk-4VHMU2SN.mjs +0 -1
  85. package/dist/chunk-4Y6ZNAOM.mjs +0 -1
  86. package/dist/chunk-4ZCVFQVA.mjs +0 -1
  87. package/dist/chunk-5FPTMLJS.mjs +0 -1
  88. package/dist/chunk-5IKS3MYC.mjs +0 -1
  89. package/dist/chunk-5KZBTOIK.mjs +0 -1
  90. package/dist/chunk-5LVKLKIV.mjs +0 -1
  91. package/dist/chunk-5NKPICDX.mjs +0 -1
  92. package/dist/chunk-5PD4TPH7.mjs +0 -1
  93. package/dist/chunk-5QBVA3C2.mjs +0 -1
  94. package/dist/chunk-5RWCY2T3.mjs +0 -1
  95. package/dist/chunk-5SBJ6SVD.mjs +0 -1
  96. package/dist/chunk-5STTY72A.mjs +0 -1
  97. package/dist/chunk-5SU2MWLU.mjs +0 -0
  98. package/dist/chunk-5UMPAJJX.mjs +0 -1
  99. package/dist/chunk-5XTNLJRY.mjs +0 -1
  100. package/dist/chunk-63ND5Z3I.mjs +0 -1
  101. package/dist/chunk-664ZT47I.mjs +0 -1
  102. package/dist/chunk-6F4SZBJ3.mjs +0 -1
  103. package/dist/chunk-6MXR5XLJ.mjs +0 -1
  104. package/dist/chunk-6N3NW2JB.mjs +0 -1
  105. package/dist/chunk-6Q2MCPZP.mjs +0 -1
  106. package/dist/chunk-6SBJPILW.mjs +0 -1
  107. package/dist/chunk-6TFUDH7S.mjs +0 -1
  108. package/dist/chunk-6VWTK5CW.mjs +0 -1
  109. package/dist/chunk-6YGW3G46.mjs +0 -1
  110. package/dist/chunk-6ZJZL5CL.mjs +0 -1
  111. package/dist/chunk-76VXH2L6.mjs +0 -1
  112. package/dist/chunk-7CR3I247.mjs +0 -1
  113. package/dist/chunk-7DGKYGEY.mjs +0 -1
  114. package/dist/chunk-7NBIGFDF.mjs +0 -1
  115. package/dist/chunk-7OQSL4CI.mjs +0 -2
  116. package/dist/chunk-7REZWZDA.mjs +0 -1
  117. package/dist/chunk-7S4ROSUS.mjs +0 -1
  118. package/dist/chunk-7ZLOS3H5.mjs +0 -1
  119. package/dist/chunk-A4FADA67.mjs +0 -1
  120. package/dist/chunk-ABQ54CVL.mjs +0 -1
  121. package/dist/chunk-AF65RPQS.mjs +0 -1
  122. package/dist/chunk-AHSNWOXV.mjs +0 -1
  123. package/dist/chunk-AI2STCLX.mjs +0 -1
  124. package/dist/chunk-AIRQ6LHD.mjs +0 -1
  125. package/dist/chunk-AL75Y3IJ.mjs +0 -1
  126. package/dist/chunk-ALOPKGPB.mjs +0 -1
  127. package/dist/chunk-ARUFZ3N7.mjs +0 -1
  128. package/dist/chunk-AZGTG7GS.mjs +0 -1
  129. package/dist/chunk-AZQ76GMJ.mjs +0 -1
  130. package/dist/chunk-B4R2MH5C.mjs +0 -1
  131. package/dist/chunk-BE3FE22D.mjs +0 -1
  132. package/dist/chunk-BEVRCJ4O.mjs +0 -1
  133. package/dist/chunk-BF4VFD3F.mjs +0 -1
  134. package/dist/chunk-BMMTE4CL.mjs +0 -1
  135. package/dist/chunk-BQ3MQSVS.mjs +0 -1
  136. package/dist/chunk-BXATL43P.mjs +0 -1
  137. package/dist/chunk-C65AUAAV.mjs +0 -1
  138. package/dist/chunk-C6XEPXSI.mjs +0 -1
  139. package/dist/chunk-C7CFYTBV.mjs +0 -1
  140. package/dist/chunk-CBKNYPTZ.mjs +0 -1
  141. package/dist/chunk-CFEHS6K2.mjs +0 -1
  142. package/dist/chunk-CFRAJHSR.mjs +0 -1
  143. package/dist/chunk-CGKMNADD.mjs +0 -1
  144. package/dist/chunk-CLZKQYIL.mjs +0 -1
  145. package/dist/chunk-CUD5PRR2.mjs +0 -1
  146. package/dist/chunk-CUQBIJCD.mjs +0 -1
  147. package/dist/chunk-CWX6UGU4.mjs +0 -1
  148. package/dist/chunk-DARJMLYS.mjs +0 -1
  149. package/dist/chunk-DHOWTHOI.mjs +0 -3
  150. package/dist/chunk-DNDRN3T4.mjs +0 -1
  151. package/dist/chunk-DPUZZ3ID.mjs +0 -1
  152. package/dist/chunk-DR4VTSWW.mjs +0 -1
  153. package/dist/chunk-DWGAAIZ7.mjs +0 -1
  154. package/dist/chunk-DZ5GL4XN.mjs +0 -1
  155. package/dist/chunk-E5X57EHU.mjs +0 -1
  156. package/dist/chunk-E67KYH6T.mjs +0 -1
  157. package/dist/chunk-EA7SA6OZ.mjs +0 -1
  158. package/dist/chunk-ECGA6763.mjs +0 -1
  159. package/dist/chunk-EEEOYXQI.mjs +0 -1
  160. package/dist/chunk-EHLVQXPN.mjs +0 -1
  161. package/dist/chunk-EKROEMNY.mjs +0 -1
  162. package/dist/chunk-EMGP7EVH.mjs +0 -1
  163. package/dist/chunk-ERNT7CVX.mjs +0 -1
  164. package/dist/chunk-ET54P7CM.mjs +0 -1
  165. package/dist/chunk-ETPBKZPC.mjs +0 -1
  166. package/dist/chunk-EUO4BP4C.mjs +0 -1
  167. package/dist/chunk-EZDUF4E5.mjs +0 -1
  168. package/dist/chunk-F4NEF5X6.mjs +0 -1
  169. package/dist/chunk-F6C3QYRM.mjs +0 -1
  170. package/dist/chunk-FBON3HW2.mjs +0 -1
  171. package/dist/chunk-FBVSWLK5.mjs +0 -1
  172. package/dist/chunk-FCP5HRN4.mjs +0 -1
  173. package/dist/chunk-FEGM4SDU.mjs +0 -1
  174. package/dist/chunk-FISJACJT.mjs +0 -1
  175. package/dist/chunk-FKZO6ZCE.mjs +0 -1
  176. package/dist/chunk-FLUV3ASQ.mjs +0 -1
  177. package/dist/chunk-FU73EKLM.mjs +0 -1
  178. package/dist/chunk-GDTIZXZ3.mjs +0 -1
  179. package/dist/chunk-GH6HTY6Z.mjs +0 -1
  180. package/dist/chunk-GLUCCYWG.mjs +0 -1
  181. package/dist/chunk-GPGPAVVA.mjs +0 -1
  182. package/dist/chunk-GPWH2RLO.mjs +0 -1
  183. package/dist/chunk-GQLUSHIW.mjs +0 -1
  184. package/dist/chunk-GSO7S5NU.mjs +0 -1
  185. package/dist/chunk-GTQBILTE.mjs +0 -1
  186. package/dist/chunk-GVB72EOZ.mjs +0 -1
  187. package/dist/chunk-GWQ4C2MC.mjs +0 -1
  188. package/dist/chunk-GXGDCOZU.mjs +0 -1
  189. package/dist/chunk-H2EZ5ZIA.mjs +0 -1
  190. package/dist/chunk-H3CKT4E4.mjs +0 -1
  191. package/dist/chunk-H65AVWMG.mjs +0 -1
  192. package/dist/chunk-HBI3VUWA.mjs +0 -1
  193. package/dist/chunk-HCAIWJBW.mjs +0 -1
  194. package/dist/chunk-HHZK2W6M.mjs +0 -1
  195. package/dist/chunk-HJVODQQT.mjs +0 -1
  196. package/dist/chunk-HMHVCAHP.mjs +0 -1
  197. package/dist/chunk-HNG4C6UJ.mjs +0 -1
  198. package/dist/chunk-HTKASIVN.mjs +0 -1
  199. package/dist/chunk-HTY27HEB.mjs +0 -1
  200. package/dist/chunk-HWO5N44E.mjs +0 -1
  201. package/dist/chunk-HX6TVXHR.mjs +0 -1
  202. package/dist/chunk-HZKMK3KA.mjs +0 -1
  203. package/dist/chunk-I5M3S3VS.mjs +0 -1
  204. package/dist/chunk-I5T4HQGY.mjs +0 -1
  205. package/dist/chunk-I6ZFEL2G.mjs +0 -1
  206. package/dist/chunk-IAODNORF.mjs +0 -1
  207. package/dist/chunk-IDJVO3SJ.mjs +0 -1
  208. package/dist/chunk-IGSNFZ4Y.mjs +0 -1
  209. package/dist/chunk-ILDBBC7S.mjs +0 -1
  210. package/dist/chunk-INKMK7VX.mjs +0 -1
  211. package/dist/chunk-IOH2TAGQ.mjs +0 -1
  212. package/dist/chunk-IOI3AZRU.mjs +0 -1
  213. package/dist/chunk-IUBJY7LD.mjs +0 -1
  214. package/dist/chunk-IVQJMP4E.mjs +0 -1
  215. package/dist/chunk-IWVXOYR4.mjs +0 -1
  216. package/dist/chunk-IX5HENBH.mjs +0 -1
  217. package/dist/chunk-J6V4PKNC.mjs +0 -1
  218. package/dist/chunk-J7NE4BUM.mjs +0 -1
  219. package/dist/chunk-JD46NPAZ.mjs +0 -1
  220. package/dist/chunk-JGFJKSKU.mjs +0 -1
  221. package/dist/chunk-JIMV7NXH.mjs +0 -1
  222. package/dist/chunk-JPCDHJLD.mjs +0 -1
  223. package/dist/chunk-JQHV2HJR.mjs +0 -1
  224. package/dist/chunk-JQZACITY.mjs +0 -1
  225. package/dist/chunk-JUE3IN3O.mjs +0 -1
  226. package/dist/chunk-JWLCJ6MQ.mjs +0 -1
  227. package/dist/chunk-JXEG2SJW.mjs +0 -1
  228. package/dist/chunk-K4QTPYBS.mjs +0 -1
  229. package/dist/chunk-K6FPYHTK.mjs +0 -1
  230. package/dist/chunk-KKQDG22H.mjs +0 -1
  231. package/dist/chunk-KKUAJ54V.mjs +0 -1
  232. package/dist/chunk-KL7VCF4Y.mjs +0 -1
  233. package/dist/chunk-KT3MZAWK.mjs +0 -1
  234. package/dist/chunk-L2SFRDQT.mjs +0 -1
  235. package/dist/chunk-L67ZJBWI.mjs +0 -1
  236. package/dist/chunk-L7JSRS6V.mjs +0 -1
  237. package/dist/chunk-LBQJ5TZQ.mjs +0 -1
  238. package/dist/chunk-LHYOSLSW.mjs +0 -1
  239. package/dist/chunk-LKZUZTIO.mjs +0 -1
  240. package/dist/chunk-LMQ4666D.mjs +0 -1
  241. package/dist/chunk-LP6ZANSI.mjs +0 -1
  242. package/dist/chunk-LPIDPOIS.mjs +0 -1
  243. package/dist/chunk-LQLVMKKY.mjs +0 -1
  244. package/dist/chunk-LREWF6LN.mjs +0 -1
  245. package/dist/chunk-LSTIY6OF.mjs +0 -1
  246. package/dist/chunk-LVZK27B4.mjs +0 -1
  247. package/dist/chunk-LXJVNY3R.mjs +0 -1
  248. package/dist/chunk-LYO5G6AB.mjs +0 -1
  249. package/dist/chunk-M36MRN4N.mjs +0 -1
  250. package/dist/chunk-MK4UFVOH.mjs +0 -1
  251. package/dist/chunk-MNF3SOUW.mjs +0 -1
  252. package/dist/chunk-MODISIUH.mjs +0 -1
  253. package/dist/chunk-MRTOVK5M.mjs +0 -1
  254. package/dist/chunk-MT3GLHZG.mjs +0 -1
  255. package/dist/chunk-MW23UGKA.mjs +0 -1
  256. package/dist/chunk-MWIL2V7E.mjs +0 -1
  257. package/dist/chunk-MWZYOB5U.mjs +0 -1
  258. package/dist/chunk-MZRHVWD5.mjs +0 -1
  259. package/dist/chunk-NAUL2FQY.mjs +0 -1
  260. package/dist/chunk-NCQTKAIG.mjs +0 -1
  261. package/dist/chunk-NDZIEH7M.mjs +0 -1
  262. package/dist/chunk-NI6IFTE4.mjs +0 -1
  263. package/dist/chunk-NQMIIYJS.mjs +0 -1
  264. package/dist/chunk-NQUREBTN.mjs +0 -1
  265. package/dist/chunk-NZ6LIVRY.mjs +0 -1
  266. package/dist/chunk-O37GSVGP.mjs +0 -1
  267. package/dist/chunk-OANHZJ6X.mjs +0 -1
  268. package/dist/chunk-OBO4Y4AA.mjs +0 -1
  269. package/dist/chunk-OBU4KABJ.mjs +0 -1
  270. package/dist/chunk-OIJ7WXXY.mjs +0 -1
  271. package/dist/chunk-OQD4PMKZ.mjs +0 -1
  272. package/dist/chunk-OQGZM33B.mjs +0 -1
  273. package/dist/chunk-OSU5S2YT.mjs +0 -3
  274. package/dist/chunk-OTWCQOKL.mjs +0 -1
  275. package/dist/chunk-OWV4H34S.mjs +0 -1
  276. package/dist/chunk-PCCGH2UI.mjs +0 -1
  277. package/dist/chunk-PDFNNMWJ.mjs +0 -1
  278. package/dist/chunk-PEPVOMPB.mjs +0 -1
  279. package/dist/chunk-PJ2NIR5L.mjs +0 -1
  280. package/dist/chunk-PMNLXLOX.mjs +0 -1
  281. package/dist/chunk-PXBT4TKP.mjs +0 -1
  282. package/dist/chunk-PXSGKN2A.mjs +0 -1
  283. package/dist/chunk-QGTFY7PK.mjs +0 -1
  284. package/dist/chunk-QHP5V4S4.mjs +0 -1
  285. package/dist/chunk-QN2IIR4A.mjs +0 -1
  286. package/dist/chunk-QOUKK3GE.mjs +0 -1
  287. package/dist/chunk-QQFYILG6.mjs +0 -1
  288. package/dist/chunk-QU7V46PO.mjs +0 -1
  289. package/dist/chunk-QYPFWXDY.mjs +0 -1
  290. package/dist/chunk-QYTC2VMO.mjs +0 -1
  291. package/dist/chunk-R3RG2UW3.mjs +0 -1
  292. package/dist/chunk-R4EED753.mjs +0 -1
  293. package/dist/chunk-R4RE3FAM.mjs +0 -1
  294. package/dist/chunk-RA4FDA2O.mjs +0 -1
  295. package/dist/chunk-RDVXOO55.mjs +0 -1
  296. package/dist/chunk-RDWIZP7F.mjs +0 -1
  297. package/dist/chunk-RGJGS4AZ.mjs +0 -1
  298. package/dist/chunk-RQTDGFGB.mjs +0 -1
  299. package/dist/chunk-RQYMBQ7I.mjs +0 -1
  300. package/dist/chunk-RWTTKLJM.mjs +0 -1
  301. package/dist/chunk-S5O5UY63.mjs +0 -1
  302. package/dist/chunk-S62WENCB.mjs +0 -1
  303. package/dist/chunk-SC7JSFPP.mjs +0 -1
  304. package/dist/chunk-SKVYWWBC.mjs +0 -3
  305. package/dist/chunk-SL5QAJSF.mjs +0 -1
  306. package/dist/chunk-SNEDSZS7.mjs +0 -1
  307. package/dist/chunk-SNXKEIDU.mjs +0 -1
  308. package/dist/chunk-SPSUTBZ7.mjs +0 -0
  309. package/dist/chunk-SQXHJWOE.mjs +0 -1
  310. package/dist/chunk-SRKZK4IA.mjs +0 -1
  311. package/dist/chunk-SV3RKM7M.mjs +0 -1
  312. package/dist/chunk-SZQGU46T.mjs +0 -1
  313. package/dist/chunk-T3EPQH24.mjs +0 -1
  314. package/dist/chunk-TLOL4ZCF.mjs +0 -1
  315. package/dist/chunk-TLVFY24T.mjs +0 -1
  316. package/dist/chunk-TLYJWHCK.mjs +0 -1
  317. package/dist/chunk-TM2H2P2D.mjs +0 -1
  318. package/dist/chunk-TTNDDYLJ.mjs +0 -1
  319. package/dist/chunk-TVYDH6QM.mjs +0 -1
  320. package/dist/chunk-TXEDXHC5.mjs +0 -1
  321. package/dist/chunk-TXJYGQAV.mjs +0 -1
  322. package/dist/chunk-UAGJDHMS.mjs +0 -1
  323. package/dist/chunk-UBCCNLBS.mjs +0 -1
  324. package/dist/chunk-UBVT572C.mjs +0 -1
  325. package/dist/chunk-UD2ICHSZ.mjs +0 -1
  326. package/dist/chunk-UH27OXLF.mjs +0 -1
  327. package/dist/chunk-UHFP5VHY.mjs +0 -1
  328. package/dist/chunk-UKYEDTBZ.mjs +0 -1
  329. package/dist/chunk-UL4CXGYV.mjs +0 -1
  330. package/dist/chunk-ULWVKJS4.mjs +0 -1
  331. package/dist/chunk-UOZXDTPI.mjs +0 -1
  332. package/dist/chunk-UQ5D3U6Z.mjs +0 -1
  333. package/dist/chunk-UT6YNZPF.mjs +0 -1
  334. package/dist/chunk-UUWTKITJ.mjs +0 -1
  335. package/dist/chunk-UUX7CPTL.mjs +0 -1
  336. package/dist/chunk-UVNDPH4P.mjs +0 -1
  337. package/dist/chunk-UXDNVOIH.mjs +0 -1
  338. package/dist/chunk-V2RYRJWZ.mjs +0 -1
  339. package/dist/chunk-V4CK2LIR.mjs +0 -1
  340. package/dist/chunk-VCVRICBE.mjs +0 -1
  341. package/dist/chunk-VEUP2DC6.mjs +0 -1
  342. package/dist/chunk-VJZP4EP5.mjs +0 -1
  343. package/dist/chunk-VOGFN73W.mjs +0 -1
  344. package/dist/chunk-VT2ZAMOL.mjs +0 -1
  345. package/dist/chunk-VT32LSIK.mjs +0 -1
  346. package/dist/chunk-VTLX43W7.mjs +0 -1
  347. package/dist/chunk-VX6RMXJA.mjs +0 -1
  348. package/dist/chunk-VZYPOBKB.mjs +0 -1
  349. package/dist/chunk-W5LUKKPM.mjs +0 -1
  350. package/dist/chunk-W67C4SNA.mjs +0 -1
  351. package/dist/chunk-W7MK4ZQS.mjs +0 -1
  352. package/dist/chunk-WCOSO55V.mjs +0 -1
  353. package/dist/chunk-WCUHRXGZ.mjs +0 -1
  354. package/dist/chunk-WE5LUVZO.mjs +0 -1
  355. package/dist/chunk-WEC6YZEP.mjs +0 -1
  356. package/dist/chunk-WEVTLTB7.mjs +0 -1
  357. package/dist/chunk-WHVHA4NB.mjs +0 -1
  358. package/dist/chunk-WJXI5YEO.mjs +0 -1
  359. package/dist/chunk-X2OFY45A.mjs +0 -1
  360. package/dist/chunk-XCPPFNWE.mjs +0 -1
  361. package/dist/chunk-XEJNQ2MU.mjs +0 -1
  362. package/dist/chunk-XEQVWA4N.mjs +0 -1
  363. package/dist/chunk-XICX7P4N.mjs +0 -1
  364. package/dist/chunk-XLREFEL6.mjs +0 -1
  365. package/dist/chunk-XP4JQI4P.mjs +0 -1
  366. package/dist/chunk-XVNZQ4VA.mjs +0 -1
  367. package/dist/chunk-XWSEDYR7.mjs +0 -1
  368. package/dist/chunk-Y5ST7E7S.mjs +0 -1
  369. package/dist/chunk-YBJHXOZZ.mjs +0 -1
  370. package/dist/chunk-YDE3WII6.mjs +0 -1
  371. package/dist/chunk-YO3P5WJF.mjs +0 -1
  372. package/dist/chunk-YOKGI4NP.mjs +0 -1
  373. package/dist/chunk-YOOUKTVN.mjs +0 -1
  374. package/dist/chunk-YXHGPHL2.mjs +0 -1
  375. package/dist/chunk-YY4NGU5S.mjs +0 -1
  376. package/dist/chunk-ZBBENF7Y.mjs +0 -1
  377. package/dist/chunk-ZGH4YH7K.mjs +0 -1
  378. package/dist/chunk-ZGLJW52C.mjs +0 -1
  379. package/dist/chunk-ZJKRLIJQ.mjs +0 -1
  380. package/dist/chunk-ZM4JP5B2.mjs +0 -1
  381. package/dist/chunk-ZNAHVPCM.mjs +0 -1
  382. package/dist/chunk-ZOJ2QZ7M.mjs +0 -1
  383. package/dist/chunk-ZQST7SKH.mjs +0 -1
  384. package/dist/chunk-ZRPMW6I7.mjs +0 -1
  385. package/dist/chunk-ZX7BGWQ7.mjs +0 -1
  386. package/dist/functions/hash.d.ts +0 -4
  387. package/dist/functions/hash.mjs +0 -1
  388. package/dist/functions/misc.d.ts +0 -115
  389. package/dist/functions/misc.mjs +0 -1
  390. package/dist/is-iframeable-4cf55b9f.d.ts +0 -6
  391. package/dist/trim-5dc0c1a7.d.ts +0 -3
  392. package/dist/url-to-deeplink-ac84c7cb.d.ts +0 -6
@@ -0,0 +1 @@
1
+ import{a as x}from"./chunk-OOOFAPFQ.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.link`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),D=new RegExp(/^[a-zA-Z0-9\-]+$/),J=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function z({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),ue=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),me=2,de=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,he=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),ge=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var xe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_e=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",Ae=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),be=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ke=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ye="https://assets.dub.co/logo.png",Ne="https://assets.dub.co/wordmark.png",Le="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",ve="clrflia0j0000vs7sqfhz9c7q",Ie="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],Oe=h.map(e=>e.slug),we=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function je({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{je as a,w as b,S as c,C as d,D as e,J as f,B as g,M as h,U as i,z as j,n as k,k as l,_ as m,y as n,N as o,ue as p,L as q,me as r,de as s,he as t,ge as u,xe as v,P as w,E as x,_e as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,Le as G,a as H,ve as I,Ie as J,h as K,Oe as L,we as M};
@@ -0,0 +1 @@
1
+ import{a as x}from"./chunk-5DT6AOV2.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.link`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),D=new RegExp(/^[a-zA-Z0-9\-]+$/),J=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function z({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),ue=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),me=2,de=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,he=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),ge=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var xe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_e=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",Ae=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),be=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ke=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ye="https://assets.dub.co/logo.png",Ne="https://assets.dub.co/wordmark.png",Le="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",ve="clrflia0j0000vs7sqfhz9c7q",Ie="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],Oe=h.map(e=>e.slug),we=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function je({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{je as a,w as b,S as c,C as d,D as e,J as f,B as g,M as h,U as i,z as j,n as k,k as l,_ as m,y as n,N as o,ue as p,L as q,me as r,de as s,he as t,ge as u,xe as v,P as w,E as x,_e as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,Le as G,a as H,ve as I,Ie as J,h as K,Oe as L,we as M};
@@ -0,0 +1 @@
1
+ import r from"punycode";function o(n){if(typeof n!="string")return"";try{return r.toUnicode(n)}catch{return n}}function u(n){return typeof n!="string"?"":r.toASCII(n)}export{o as a,u as b};
@@ -0,0 +1 @@
1
+ var n=e=>{try{return new URL(e),!0}catch{return!1}},c=e=>{if(n(e))return e;try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).toString()}catch{}return e},i=e=>{let r={};return new URL(e).searchParams.forEach(function(t,a){r[a]=t}),r},m=e=>{let r={};return new URL(e).searchParams.forEach(function(t,a){if(a in r){let s=r[a];Array.isArray(s)?s.push(t):r[a]=[s,t]}else r[a]=t}),r},u=e=>{if(!e)return{};try{let r=new URL(e).searchParams,t={};for(let[a,s]of r.entries())s&&s!==""&&(t[a]=s);return t}catch{return{}}},p=(e,r)=>{if(!e)return"";try{let t=new URL(e);for(let[a,s]of Object.entries(r))s===""?t.searchParams.delete(a):t.searchParams.set(a,s);return t.toString()}catch{return""}},o=[{display:"Referral (ref)",key:"ref",examples:"twitter, facebook"},{display:"UTM Source",key:"utm_source",examples:"twitter, facebook"},{display:"UTM Medium",key:"utm_medium",examples:"social, email"},{display:"UTM Campaign",key:"utm_campaign",examples:"summer_sale"},{display:"UTM Term",key:"utm_term",examples:"blue_shoes"},{display:"UTM Content",key:"utm_content",examples:"logolink"}],l=e=>{try{let r=new URL(e);return o.forEach(t=>r.searchParams.delete(t.key)),r.toString()}catch{return e}};export{n as a,c as b,i as c,m as d,u as e,p as f,o as g,l as h};
@@ -0,0 +1 @@
1
+ import{a as x}from"./chunk-5DT6AOV2.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.link`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),D=new RegExp(/^[a-zA-Z0-9\-]+$/),J=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e),T=e=>e.split(".").length>2;function V({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),me=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),de=2,he=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,ge=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),fe=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var _e=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,Pe=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ae=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",be=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),ke=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ye=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),Ne="https://assets.dub.co/logo.png",Le="https://assets.dub.co/wordmark.png",ve="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",Ie="clrflia0j0000vs7sqfhz9c7q",Oe="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],we=h.map(e=>e.slug),Se=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function $e({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{$e as a,w as b,S as c,C as d,D as e,J as f,B as g,M as h,U as i,T as j,V as k,n as l,k as m,_ as n,y as o,N as p,me as q,L as r,de as s,he as t,ge as u,fe as v,_e as w,P as x,E as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,Le as G,ve as H,a as I,Ie as J,Oe as K,h as L,we as M,Se as N};
@@ -0,0 +1 @@
1
+ var e={key:"",url:"",domain:"",archived:!1,tags:[],title:null,description:null,image:null,trackConversion:!1,proxy:!1,rewrite:!1,expiresAt:null,password:null,ios:null,android:null,noindex:!0,clicks:0,userId:""},n="https://www.google.com/s2/favicons?sz=64&domain_url=",o="https://api.dicebear.com/7.x/initials/svg?backgroundType=gradientLinear&fontFamily=Helvetica&fontSize=40&seed=",t=100,l=60*60*24*14;export{e as a,n as b,o as c,t as d,l as e};
@@ -0,0 +1 @@
1
+ var x=(b,s={width:1200,height:630,quality:1})=>new Promise((f,l)=>{let g=new FileReader;g.onload=h=>{var m;let e=new Image;e.src=(m=h.target)==null?void 0:m.result,e.onload=()=>{let t=s.width,c=s.height,r=document.createElement("canvas");r.width=t,r.height=c;let u=r.getContext("2d");u.imageSmoothingQuality="high";let a=e.width,n=e.height,I=a/n,d=t/c,o,i,w=0,R=0;I>d?(i=n,o=n*d,w=(a-o)/2):(o=a,i=a/d,R=(n-i)/2),u.drawImage(e,w,R,o,i,0,0,t,c);let v=r.toDataURL("image/jpeg",s.quality);f(v)},e.onerror=t=>l(new Error("Image loading error: "+t))},g.onerror=h=>l(new Error("FileReader error: "+h)),g.readAsDataURL(b)});export{x as a};
@@ -0,0 +1 @@
1
+ var o=async({url:n,requestDomain:a})=>{let e=await fetch(n,{headers:{"User-Agent":"Dub.co Bot"}});if(console.log({res:await e.text()}),!e.ok)return!1;let r=e.headers.get("X-Frame-Options");if(r==="DENY"||r==="SAMEORIGIN")return!1;let s=e.headers.get("content-security-policy");if(!s)return!0;let t=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(t&&(t[1]==="*"||t[1].split(/\s+/).includes(a)))};export{o as a};
@@ -0,0 +1 @@
1
+ var o=async({url:a,requestDomain:i})=>{let e=await fetch(a,{headers:{"User-Agent":"Dub.co Bot"}}).catch(n=>(console.log({e:n}),!1));if(!e.ok)return!1;let t=e.headers.get("X-Frame-Options");if(t==="DENY"||t==="SAMEORIGIN")return!1;let s=e.headers.get("content-security-policy");if(!s)return!0;let r=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(r&&(r[1]==="*"||r[1].split(/\s+/).includes(i)))};export{o as a};
@@ -0,0 +1 @@
1
+ import{a as x}from"./chunk-ZBU4VJM4.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.link`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),D=new RegExp(/^[a-zA-Z0-9\-]+$/),J=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function z({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),ue=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),me=2,de=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,he=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),ge=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var xe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_e=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",Ae=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),be=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ke=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ye="https://assets.dub.co/logo.png",Ne="https://assets.dub.co/wordmark.png",Le="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",ve="clrflia0j0000vs7sqfhz9c7q",Ie="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],Oe=h.map(e=>e.slug),we=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function je({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{je as a,w as b,S as c,C as d,D as e,J as f,B as g,M as h,U as i,z as j,n as k,k as l,_ as m,y as n,N as o,ue as p,L as q,me as r,de as s,he as t,ge as u,xe as v,P as w,E as x,_e as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,Le as G,a as H,ve as I,Ie as J,h as K,Oe as L,we as M};
@@ -0,0 +1 @@
1
+ var e={key:"",url:"",domain:"",archived:!1,expiresAt:null,password:null,title:null,description:null,image:null,trackConversion:!1,rewrite:!1,ios:null,android:null,clicks:0,userId:"",proxy:!1,tags:[]},o="https://www.google.com/s2/favicons?sz=64&domain_url=",l="https://api.dicebear.com/7.x/initials/svg?backgroundType=gradientLinear&fontFamily=Helvetica&fontSize=40&seed=",n=100,s=60*60*24*14;export{e as a,o as b,l as c,n as d,s as e};
@@ -0,0 +1 @@
1
+ async function c(r){let t=new TextEncoder().encode(r),n=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n)).map(a=>a.toString(16).padStart(2,"0")).join("")}export{c as a};
@@ -1 +1 @@
1
- import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as x}from"./chunk-ZBU4VJM4.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import A from"@sindresorhus/slugify";var w=e=>{let t=A(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.to`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),J=new RegExp(/^[a-zA-Z0-9\-]+$/),D=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function V({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:E=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:E},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],b=n.find(e=>e.name==="Free"),k=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),pe=[b,k,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),ue=2,me=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,de=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),he=e=>n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1];var fe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",_=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",P=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,xe=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),_e=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NGROK_URL||"http://localhost:8888",Ee=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${_}`,"api.localhost:8888"]),Ae=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",be=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ke="https://assets.dub.co/logo.png",ye="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",Ne="clrflia0j0000vs7sqfhz9c7q",Le="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:_,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],ve=h.map(e=>e.slug),Ie=[{id:"clqo10sum0006js08vutzfxt3",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function ze({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(P),...r&&{robots:{index:!1,follow:!1}}}}export{ze as a,w as b,S as c,C as d,J as e,D as f,B as g,M as h,U as i,V as j,n as k,b as l,k as m,y as n,N as o,pe as p,L as q,ue as r,me as s,de as t,he as u,fe as v,_ as w,P as x,xe as y,_e as z,Pe as A,Ee as B,Ae as C,be as D,ke as E,ye as F,a as G,Ne as H,Le as I,h as J,ve as K,Ie as L};
1
+ import{a as x}from"./chunk-ZBU4VJM4.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-4YAXMKRQ.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.to`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),J=new RegExp(/^[a-zA-Z0-9\-]+$/),D=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function R({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),ue=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),me=2,de=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,he=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),ge=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var xe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_e=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",Ae=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),be=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ke=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ye="https://assets.dub.co/logo.png",Ne="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",Le="clrflia0j0000vs7sqfhz9c7q",ve="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],Ie=h.map(e=>e.slug),Oe=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function qe({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{qe as a,w as b,S as c,C as d,J as e,D as f,B as g,M as h,U as i,R as j,n as k,k as l,_ as m,y as n,N as o,ue as p,L as q,me as r,de as s,he as t,ge as u,xe as v,P as w,E as x,_e as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,a as G,Le as H,ve as I,h as J,Ie as K,Oe as L};
@@ -0,0 +1 @@
1
+ import*as c from"chrono-node";var l=t=>{let e=t?new Date(t):new Date;return e.toString()==="Invalid Date"?"":new Date(e.getTime()-e.getTimezoneOffset()*6e4).toISOString().split(":").slice(0,2).join(":")},g=t=>t instanceof Date?t:c.parseDate(t),m=t=>t.toString()==="Invalid Date"?"":new Date(t).toLocaleDateString("en-US",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"}),f=t=>t.toString()==="Invalid Date"?"":new Date(t).toLocaleTimeString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",hour12:!0}),h=(t,e)=>{let a=Math.abs(e.getTime()-t.getTime());return Math.ceil(a/(1e3*60*60*24))},y=t=>{let e=new Date,a=e.getDate(),n=e.getMonth(),r=e.getFullYear();if(a>=t)return{firstDay:new Date(r,n,t),lastDay:new Date(r,n+1,t-1)};{let o=n===0?r-1:r,s=n===0?11:n-1;return{firstDay:new Date(o,s,t),lastDay:new Date(r,n,t-1)}}},D=()=>{let t=new Date;return new Date(t.getFullYear(),t.getMonth()+1,0).getDate()},u=t=>{let e=D();return t>e?e:t},w=t=>{let e=new Date,a=e.getDate(),n=e.getMonth(),r=e.getFullYear(),o=u(t);if(a<=o){let s=n===0?11:n-1,i=n===0?r-1:r;return new Date(i,s,o)}else return new Date(r,n,o)};export{l as a,g as b,m as c,f as d,h as e,y as f,D as g,u as h,w as i};
@@ -0,0 +1 @@
1
+ var o=async({url:n,requestDomain:a})=>{let e=await fetch(n,{headers:{"User-Agent":"Dub.co Bot"}});if(console.log({res:await e.json()}),!e.ok)return!1;let s=e.headers.get("X-Frame-Options");if(s==="DENY"||s==="SAMEORIGIN")return!1;let t=e.headers.get("content-security-policy");if(!t)return!0;let r=t.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(r&&(r[1]==="*"||r[1].split(/\s+/).includes(a)))};export{o as a};
@@ -0,0 +1 @@
1
+ var o=async({url:n,requestDomain:a})=>{let e=await fetch(n,{headers:{"User-Agent":"Dub.co Bot"}});if(console.log({res:e,xFrameOptions:e.headers.get("X-Frame-Options"),cspHeader:e.headers.get("content-security-policy")}),!e.ok)return!1;let t=e.headers.get("X-Frame-Options");if(t==="DENY"||t==="SAMEORIGIN")return!1;let s=e.headers.get("content-security-policy");if(!s)return!0;let r=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(r&&(r[1]==="*"||r[1].split(/\s+/).includes(a)))};export{o as a};
@@ -0,0 +1 @@
1
+ var o=async({url:n,requestDomain:a})=>{let e=await fetch(n,{headers:{"User-Agent":"Dub.co Bot"}});if(!e.ok)return!1;console.log({xFrameOptions:e.headers.get("X-Frame-Options"),cspHeader:e.headers.get("content-security-policy")});let t=e.headers.get("X-Frame-Options");if(t==="DENY"||t==="SAMEORIGIN")return!1;let s=e.headers.get("content-security-policy");if(!s)return!0;let r=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(r&&(r[1]==="*"||r[1].split(/\s+/).includes(a)))};export{o as a};
@@ -1 +1 @@
1
- import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as x}from"./chunk-ZBU4VJM4.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import A from"@sindresorhus/slugify";var w=e=>{let t=A(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.to`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),J=new RegExp(/^[a-zA-Z0-9\-]+$/),D=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function V({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:E=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:E},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 border-violet-600 hover:text-violet-600"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],b=n.find(e=>e.name==="Free"),k=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),pe=[b,k,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),ue=2,me=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,de=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),he=e=>n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1];var fe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",_=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",P=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,xe=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),_e=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NGROK_URL||"http://localhost:8888",Ee=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${_}`,"api.localhost:8888"]),Ae=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",be=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ke="https://assets.dub.co/logo.png",ye="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",Ne="clrflia0j0000vs7sqfhz9c7q",Le="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:_,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],ve=h.map(e=>e.slug),Ie=[{id:"clqo10sum0006js08vutzfxt3",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function ze({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(P),...r&&{robots:{index:!1,follow:!1}}}}export{ze as a,w as b,S as c,C as d,J as e,D as f,B as g,M as h,U as i,V as j,n as k,b as l,k as m,y as n,N as o,pe as p,L as q,ue as r,me as s,de as t,he as u,fe as v,_ as w,P as x,xe as y,_e as z,Pe as A,Ee as B,Ae as C,be as D,ke as E,ye as F,a as G,Ne as H,Le as I,h as J,ve as K,Ie as L};
1
+ import{a as x}from"./chunk-ZBU4VJM4.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.to`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),J=new RegExp(/^[a-zA-Z0-9\-]+$/),D=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function R({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),ue=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),me=2,de=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,he=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),ge=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var xe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_e=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",Ae=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),be=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ke=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ye="https://assets.dub.co/logo.png",Ne="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",Le="clrflia0j0000vs7sqfhz9c7q",ve="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],Ie=h.map(e=>e.slug),Oe=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function qe({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{qe as a,w as b,S as c,C as d,J as e,D as f,B as g,M as h,U as i,R as j,n as k,k as l,_ as m,y as n,N as o,ue as p,L as q,me as r,de as s,he as t,ge as u,xe as v,P as w,E as x,_e as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,a as G,Le as H,ve as I,h as J,Ie as K,Oe as L};
@@ -0,0 +1 @@
1
+ var e={key:"",url:"",domain:"",archived:!1,expiresAt:null,password:null,title:null,description:null,image:null,trackConversion:!1,proxy:!1,rewrite:!1,ios:null,android:null,noindex:!0,clicks:0,userId:"",tags:[]},n="https://www.google.com/s2/favicons?sz=64&domain_url=",o="https://api.dicebear.com/7.x/initials/svg?backgroundType=gradientLinear&fontFamily=Helvetica&fontSize=40&seed=",t=100,l=60*60*24*14;export{e as a,n as b,o as c,t as d,l as e};
@@ -0,0 +1 @@
1
+ var o=async({url:n,requestDomain:a})=>{let e=await fetch(n,{headers:{"User-Agent":"Dub.co Bot"}});if(console.log({xFrameOptions:e.headers.get("X-Frame-Options"),cspHeader:e.headers.get("content-security-policy")}),!e.ok)return!1;let t=e.headers.get("X-Frame-Options");if(t==="DENY"||t==="SAMEORIGIN")return!1;let s=e.headers.get("content-security-policy");if(!s)return!0;let r=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(r&&(r[1]==="*"||r[1].split(/\s+/).includes(a)))};export{o as a};
@@ -0,0 +1 @@
1
+ import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as x}from"./chunk-5DT6AOV2.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.link`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),D=new RegExp(/^[a-zA-Z0-9\-]+$/),J=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function z({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),ue=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),me=2,de=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,he=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),ge=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var xe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_e=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",Ae=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),be=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ke=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ye="https://assets.dub.co/logo.png",Ne="https://assets.dub.co/wordmark.png",Le="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",ve="clrflia0j0000vs7sqfhz9c7q",Ie="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],Oe=h.map(e=>e.slug),we=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function je({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{je as a,w as b,S as c,C as d,D as e,J as f,B as g,M as h,U as i,z as j,n as k,k as l,_ as m,y as n,N as o,ue as p,L as q,me as r,de as s,he as t,ge as u,xe as v,P as w,E as x,_e as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,Le as G,a as H,ve as I,Ie as J,h as K,Oe as L,we as M};
@@ -1 +1 @@
1
- var t={home:"https://dub.co",dub:"https://dub.co",signin:"https://app.dub.co/login",login:"https://app.dub.co/login",register:"https://app.dub.co/register",signup:"https://app.dub.co/register",app:"https://app.dub.co",dashboard:"https://app.dub.co",links:"https://app.dub.co/links",settings:"https://app.dub.co/settings",welcome:"https://app.dub.co/welcome",discord:"https://twitter.com/dubdotco"},p={headers:{"x-powered-by":"Dub.co - Link management for modern marketing teams"}};export{t as a,p as b};
1
+ var t={home:"https://dub.co",dub:"https://dub.co",signin:"https://app.dub.co/login",login:"https://app.dub.co/login",register:"https://app.dub.co/register",signup:"https://app.dub.co/register",app:"https://app.dub.co",dashboard:"https://app.dub.co",links:"https://app.dub.co/links",settings:"https://app.dub.co/settings",welcome:"https://app.dub.co/welcome",discord:"https://twitter.com/dubdotco"},p={"x-powered-by":"Dub.co - Link management for modern marketing teams"};export{t as a,p as b};
@@ -0,0 +1 @@
1
+ var s=r=>{try{return new URL(r),!0}catch{return!1}},o=r=>{if(s(r))return r;try{if(r.includes(".")&&!r.includes(" "))return new URL(`https://${r}`).toString()}catch{}return""},c=r=>{if(s(r))return r;try{if(r.includes(".")&&!r.includes(" "))return new URL(`https://${r}`).toString()}catch{}return r},m=r=>{let e={};return new URL(r).searchParams.forEach(function(t,n){e[n]=t}),e},u=r=>{let e={};return new URL(r).searchParams.forEach(function(t,n){if(n in e){let a=e[n];Array.isArray(a)?a.push(t):e[n]=[a,t]}else e[n]=t}),e},g=r=>{if(!r)return{};try{let e=new URL(r).searchParams,t={};for(let[n,a]of e.entries())a&&a!==""&&(t[n]=a);return t}catch{return{}}},l=(r,e)=>{if(!r)return"";try{let t=new URL(r);for(let[n,a]of Object.entries(e))a===""?t.searchParams.delete(n):t.searchParams.set(n,a);return t.toString()}catch{return""}},i=[{display:"Referral (ref)",key:"ref",examples:"twitter, facebook"},{display:"UTM Source",key:"utm_source",examples:"twitter, facebook"},{display:"UTM Medium",key:"utm_medium",examples:"social, email"},{display:"UTM Campaign",key:"utm_campaign",examples:"summer_sale"},{display:"UTM Term",key:"utm_term",examples:"blue_shoes"},{display:"UTM Content",key:"utm_content",examples:"logolink"}],p=r=>{try{let e=new URL(r);return i.forEach(t=>e.searchParams.delete(t.key)),e.toString()}catch{return r}};export{s as a,o as b,c,m as d,u as e,g as f,l as g,i as h,p as i};
@@ -0,0 +1 @@
1
+ function n(i){return!i||typeof i!="string"?i:i.split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}export{n as a};
@@ -0,0 +1 @@
1
+ import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as x}from"./chunk-ZBU4VJM4.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.link`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),D=new RegExp(/^[a-zA-Z0-9\-]+$/),J=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function z({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),ue=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),me=2,de=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,he=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),ge=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var xe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_e=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",Ae=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),be=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ke=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ye="https://assets.dub.co/logo.png",Ne="https://assets.dub.co/wordmark.png",Le="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",ve="clrflia0j0000vs7sqfhz9c7q",Ie="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],Oe=h.map(e=>e.slug),we=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function je({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{je as a,w as b,S as c,C as d,D as e,J as f,B as g,M as h,U as i,z as j,n as k,k as l,_ as m,y as n,N as o,ue as p,L as q,me as r,de as s,he as t,ge as u,xe as v,P as w,E as x,_e as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,Le as G,a as H,ve as I,Ie as J,h as K,Oe as L,we as M};
@@ -0,0 +1 @@
1
+ var o=async({url:n,requestDomain:a})=>{let e=await fetch(n,{headers:{"User-Agent":"Dub.co Bot"}});if(!e.ok)return!1;let t=e.headers.get("X-Frame-Options");if(t==="DENY"||t==="SAMEORIGIN")return!1;let s=e.headers.get("content-security-policy");if(!s)return!0;let r=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(r&&(r[1]==="*"||r[1].split(/\s+/).includes(a)))};export{o as a};
@@ -0,0 +1 @@
1
+ var o=async({url:a,requestDomain:i})=>{let e=await fetch(a,{headers:{"User-Agent":"Dub.co Bot"}}).catch(n=>{console.log({e:n})});if(!e.ok)return!1;let t=e.headers.get("X-Frame-Options");if(t==="DENY"||t==="SAMEORIGIN")return!1;let s=e.headers.get("content-security-policy");if(!s)return!0;let r=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(r&&(r[1]==="*"||r[1].split(/\s+/).includes(i)))};export{o as a};
@@ -1 +1 @@
1
- import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as x}from"./chunk-ZBU4VJM4.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import A from"@sindresorhus/slugify";var w=e=>{let t=A(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.to`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),J=new RegExp(/^[a-zA-Z0-9\-]+$/),D=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function V({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:E=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:E},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-200"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 border-violet-600 hover:text-violet-600"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],b=n.find(e=>e.name==="Free"),k=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),pe=[b,k,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),ue=2,me=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,de=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),he=e=>n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1];var fe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",_=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",P=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,xe=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),_e=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NGROK_URL||"http://localhost:8888",Ee=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${_}`,"api.localhost:8888"]),Ae=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",be=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ke="https://assets.dub.co/logo.png",ye="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",Ne="clrflia0j0000vs7sqfhz9c7q",Le="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:_,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],ve=h.map(e=>e.slug),Ie=[{id:"clqo10sum0006js08vutzfxt3",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function ze({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(P),...r&&{robots:{index:!1,follow:!1}}}}export{ze as a,w as b,S as c,C as d,J as e,D as f,B as g,M as h,U as i,V as j,n as k,b as l,k as m,y as n,N as o,pe as p,L as q,ue as r,me as s,de as t,he as u,fe as v,_ as w,P as x,xe as y,_e as z,Pe as A,Ee as B,Ae as C,be as D,ke as E,ye as F,a as G,Ne as H,Le as I,h as J,ve as K,Ie as L};
1
+ import{a as x}from"./chunk-ZBU4VJM4.mjs";import{a as u}from"./chunk-I5Y5DKPK.mjs";import{a as d}from"./chunk-IHX4EDUF.mjs";import{a as p}from"./chunk-YUMUNL66.mjs";import{a as g,b as f}from"./chunk-SYT2IXG6.mjs";import b from"@sindresorhus/slugify";var w=e=>{let t=b(e,{separator:""});if(t.length<3)return"";if(p.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let o=t.replace(/[aeiou]/g,"");return o.length>=3&&p.has(o.slice(-2))?`${o.slice(0,-2)}.${o.slice(-2)}`:`${[t,o].reduce((r,i)=>r.length<i.length?r:i)}.to`},S=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),C=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-\p{Emoji}]*$/u),D=new RegExp(/^[a-zA-Z0-9\-]+$/),J=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),B=e=>{let t;try{t=new URL(e.replace(/^[a-zA-Z]+:\/\//,"https://")).hostname}catch{return""}if(t==="youtu.be")return"youtube.com";if(t==="raw.githubusercontent.com")return"github.com";if(t.endsWith(".vercel.app"))return"vercel.app";let o=t.split(".");return o.length>2?g.has(o[o.length-2])&&p.has(o[o.length-1])||f.has(o.slice(-2).join("."))?o.slice(-3).join("."):o.slice(-2).join("."):t},M=e=>{if(x(e))return new URL(e).hostname.replace(/^www\./,"");try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).hostname.replace(/^www\./,"")}catch{return null}},U=e=>h.some(t=>t.slug===e);function z({domain:e,key:t,pretty:o,searchParams:s}){if(!e)return"";let r=`https://${d(e)}${t&&t!=="_root"?`/${d(t)}`:""}`;if(s){let i=new URLSearchParams;for(let[c,l]of Object.entries(s))i.set(c,l);r+=`?${i.toString()}`}return o?r.replace(/^https?:\/\//,""):r}var m=({name:e="Business",monthly:t=59,yearly:o=49,links:s=5e3,clicks:r=15e4,domains:i=40,tags:c=150,users:l=15,ids:A=[]})=>({name:e,tagline:"For larger teams with increased usage",link:"https://dub.co/help/article/business-plan",price:{monthly:t,yearly:o,ids:A},limits:{links:s,clicks:r,domains:i,tags:c,users:l,ai:1e3},colors:{bg:"bg-sky-900",text:"text-sky-900"},cta:{text:"Get started with Business",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-sky-900 hover:bg-sky-800 hover:ring-sky-100"},featureTitle:"Everything in Pro, plus:",features:[{text:`${u(s,{full:!0})} new links/mo`},{text:`${u(r)} tracked clicks/mo`},{text:"2-year analytics retention"},{text:`${i} custom domains`},{text:`${l} users`},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:`${u(c,{full:!0})} tags`,footnote:{title:"Organize your links with tags.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-use-tags"}},{text:"Elevated support",footnote:"Email and chat support."},{text:"Custom branding",footnote:{title:"Set custom QR code logos, password-protected links logos, and more.",cta:"Learn more.",href:"https://dub.co/help/article/custom-qr-codes"}}]}),n=[{name:"Free",tagline:"For hobby & side projects",price:{monthly:0,yearly:0},limits:{links:25,clicks:1e3,domains:3,tags:5,users:1,ai:10},colors:{bg:"bg-black",text:"text-black"},cta:{text:"Start for free",href:"https://app.dub.co/register",color:"bg-black hover:bg-gray-800 hover:ring-gray-200"},featureTitle:"What's included:",features:[{text:"25 new links/mo"},{text:"1K tracked clicks/mo"},{text:"30-day analytics retention"},{text:"3 custom domains"},{text:"1 user"},{text:"10 AI credits/mo"},{text:"Community support",footnote:"Help center + GitHub discussions."},{text:"API Access",footnote:{title:"Programatically manage your links using our REST API.",cta:"Learn more.",href:"https://dub.co/docs/api-reference/introduction"}}]},{name:"Pro",tagline:"For startups & small businesses",link:"https://dub.co/help/article/pro-plan",price:{monthly:24,yearly:19,ids:["price_1LodNLAlJJEpqkPVQSrt33Lc","price_1LodNLAlJJEpqkPVRxUyCQgZ","price_1OTcQBAlJJEpqkPViGtGEsbb","price_1OYJeBAlJJEpqkPVLjTsjX0E","price_1OTcQBAlJJEpqkPVYlCMqdLL","price_1OYJeBAlJJEpqkPVnPGEZeb0"]},limits:{links:1e3,clicks:5e4,domains:10,tags:25,users:5,ai:1e3},colors:{bg:"bg-blue-500",text:"text-blue-500"},cta:{text:"Get started with Pro",shortText:"Get started",href:"https://app.dub.co/register",color:"bg-blue-500 hover:bg-blue-600 hover:ring-blue-100"},featureTitle:"Everything in Free, plus:",features:[{text:"1,000 new links/mo"},{text:"50K tracked clicks/mo"},{text:"1-year analytics retention"},{text:"10 custom domains"},{text:"5 users"},{text:"Unlimited AI credits",footnote:{title:"Subject to fair use policy \u2013 you will be notified if you exceed the limit, which are high enough for frequent usage.",cta:"Learn more.",href:"https://dub.co/blog/introducing-dub-ai"}},{text:"Basic support",footnote:"Basic email support."},{text:"Root domain redirect",footnote:{title:"Redirect vistors that land on the root of your domain (e.g. yourdomain.com) to a page of your choice.",cta:"Learn more.",href:"https://dub.co/help/article/how-to-redirect-root-domain"}},{text:"Advanced link features",footnote:"Custom social media cards, password-protected links, link expiration, link cloaking, device targeting, geo targeting etc."}]},m({name:"Business",monthly:59,yearly:49,links:5e3,clicks:15e4,domains:40,tags:150,users:15,ids:["price_1LodLoAlJJEpqkPV9rD0rlNL","price_1LodLoAlJJEpqkPVJdwv5zrG","price_1OZgmnAlJJEpqkPVOj4kV64R","price_1OzNlmAlJJEpqkPV7s9HXNAC","price_1OzNmXAlJJEpqkPVYO89lTdx","price_1OzOFIAlJJEpqkPVJxzc9irl","price_1OzOXMAlJJEpqkPV9ERrjjbw"]}),m({name:"Business Plus",monthly:119,yearly:99,links:15e3,clicks:4e5,domains:100,tags:300,users:40,ids:["price_1OnWu0AlJJEpqkPVWk4144ZG","price_1OnWu0AlJJEpqkPVkDWVriAB","price_1OnaK3AlJJEpqkPVaCfCPdHi","price_1OzObrAlJJEpqkPVh6D9HWGO"]}),m({name:"Business Extra",monthly:249,yearly:199,links:4e4,clicks:1e6,domains:250,tags:500,users:100,ids:["price_1OnWvCAlJJEpqkPVLzLHx5QD","price_1OnWvCAlJJEpqkPVHhCCvIOq","price_1OnaKJAlJJEpqkPVeJSvPfJb","price_1OzOg1AlJJEpqkPVPlsrxoWm"]}),m({name:"Business Max",monthly:499,yearly:399,links:1e5,clicks:25e5,domains:500,tags:1e3,users:250,ids:["price_1OnWwLAlJJEpqkPVXtJyPqLk","price_1OnWwLAlJJEpqkPV4eMbOkNh","price_1OnaKOAlJJEpqkPVV6gkZPgt","price_1OzOh5AlJJEpqkPVtCSX7dlE"]}),{name:"Enterprise",tagline:"Custom tailored plans for large enterprises. Whether you're running a SMS campaign with millions of short links or a large marketing campaign with billions of clicks, we've got you covered.",link:"https://dub.co/enterprise",price:{monthly:null,yearly:null},limits:{links:null,clicks:null,domains:null},colors:{bg:"bg-violet-600",text:"text-violet-600"},cta:{text:"Contact us",href:"/enterprise",color:"bg-violet-600 hover:bg-violet-700 hover:ring-violet-100"},featureTitle:"Everything in Business, plus:",features:[{text:"Custom usage limits"},{text:"Volume discounts"},{text:"SSO/SAML"},{text:"Role-based access controls"},{text:"Custom contract & SLA"},{text:"Whiteglove onboarding"},{text:"Dedicated success manager"},{text:"Priority support"},{text:"Dedicated Slack channel"}]}],k=n.find(e=>e.name==="Free"),_=n.find(e=>e.name==="Pro"),y=n.find(e=>e.name==="Business"),N=n.find(e=>e.name==="Enterprise"),ue=[k,_,y,N],L=n.filter(e=>e.name!=="Free"&&e.name!=="Enterprise"),me=2,de=e=>n.find(t=>{var o;return(o=t.price.ids)==null?void 0:o.includes(e)})||null,he=e=>L.find(t=>t.name.toLowerCase()===e.toLowerCase()),ge=e=>e?n[n.findIndex(t=>t.name.toLowerCase()===e.toLowerCase())+1]:_;var xe=process.env.NEXT_PUBLIC_APP_NAME||"Dub.co",P=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",E=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_e=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),Pe=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://localhost:8888",Ee=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_NGROK_URL||"http://localhost:8888",Ae=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${P}`,"api.localhost:8888"]),be=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api-staging.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",ke=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),ye="https://assets.dub.co/logo.png",Ne="https://assets.dub.co/wordmark.png",Le="https://assets.dub.co/thumbnail.jpg",a="cl7pj5kq4006835rbjlt2ofka",ve="clrflia0j0000vs7sqfhz9c7q",Ie="clqei1lgc0000vsnzi01pbf47",h=[{id:"clce1z7ch00j0rbstbjufva4j",slug:P,verified:!0,primary:!0,archived:!1,publicStats:!1,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[],projectId:a},...process.env.NEXT_PUBLIC_IS_DUB?[{id:"clce1z7cs00y8rbstk4xtnj0k",slug:"chatg.pt",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/chatgpt-link-shortener",type:"redirect",placeholder:"https://chat.openai.com/g/g-UGjKKONEe-domainsgpt",clicks:0,allowedHostnames:["chat.openai.com","chatgpt.com"],projectId:a},{id:"cloxw8y2u0003js08a7mqg1j8",slug:"spti.fi",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"],projectId:a},{id:"cltgtd6s5000341itdszz20u2",slug:"git.new",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/github-link-shortener",type:"redirect",placeholder:"https://github.com/dubinc/dub",clicks:0,allowedHostnames:["github.com","gist.github.com"],projectId:a},{id:"cloxw8qtk000bjt08n9b812vs",slug:"amzn.id",verified:!0,primary:!1,archived:!1,publicStats:!1,target:"https://dub.co/tools/amazon-link-shortener",type:"redirect",placeholder:"https://www.amazon.com/dp/B0BW4SWNC8",clicks:0,allowedHostnames:["amazon.com","amazon.co.uk","amazon.ca","amazon.es","amazon.fr"],projectId:a},{id:"clugy7euh000a11h6ignmj42o",slug:"loooooooo.ng",verified:!0,primary:!1,archived:!0,publicStats:!0,target:"https://dub.co/tools/url-lengthener",type:"redirect",placeholder:"https://d.to/long",clicks:0,projectId:a}]:[]],Oe=h.map(e=>e.slug),we=[{id:"clqo10sum0006js08vutzfxt3",domain:"d.to",key:"try"},{id:"cltshzzpd0005126z3rd2lvo4",domain:"dub.sh",key:"try"},{id:"clot0z5rg000djp08ue98hxkn",domain:"chatg.pt",key:"domains"},{id:"clp4jh9av0001l308ormavtlu",domain:"spti.fi",key:"hans"},{id:"cltgtsex40003ck8z444hum5u",domain:"git.new",key:"dub"},{id:"clp3k3yoi0001ju0874nz899q",domain:"amzn.id",key:"tv"}];function je({title:e=`${process.env.NEXT_PUBLIC_APP_NAME} - Link Management for Modern Marketing Teams`,description:t=`${process.env.NEXT_PUBLIC_APP_NAME} is the open-source link management infrastructure for modern marketing teams to create, share, and track short links.`,image:o="https://assets.dub.co/thumbnail.jpg",icons:s=[{rel:"apple-touch-icon",sizes:"32x32",url:"/apple-touch-icon.png"},{rel:"icon",type:"image/png",sizes:"32x32",url:"/favicon-32x32.png"},{rel:"icon",type:"image/png",sizes:"16x16",url:"/favicon-16x16.png"}],noIndex:r=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,...o&&{images:[{url:o}]}},twitter:{title:e,description:t,...o&&{card:"summary_large_image",images:[o]},creator:"@dubdotco"},icons:s,metadataBase:new URL(E),...r&&{robots:{index:!1,follow:!1}}}}export{je as a,w as b,S as c,C as d,D as e,J as f,B as g,M as h,U as i,z as j,n as k,k as l,_ as m,y as n,N as o,ue as p,L as q,me as r,de as s,he as t,ge as u,xe as v,P as w,E as x,_e as y,Pe as z,Ee as A,Ae as B,be as C,ke as D,ye as E,Ne as F,Le as G,a as H,ve as I,Ie as J,h as K,Oe as L,we as M};
@@ -0,0 +1 @@
1
+ var e={key:"",url:"",domain:"",archived:!1,tags:[],title:null,description:null,image:null,trackConversion:!1,proxy:!1,rewrite:!1,expiresAt:null,password:null,ios:null,android:null,doIndex:!1,clicks:0,userId:""},o="https://www.google.com/s2/favicons?sz=64&domain_url=",l="https://api.dicebear.com/7.x/initials/svg?backgroundType=gradientLinear&fontFamily=Helvetica&fontSize=40&seed=",n=100,s=60*60*24*14;export{e as a,o as b,l as c,n as d,s as e};
@@ -0,0 +1 @@
1
+ var c=async({url:n,requestDomain:a})=>{let r=await fetch(n,{headers:{"User-Agent":"Dub.co Bot"}}),t=r.headers.get("X-Frame-Options");if(t==="DENY"||t==="SAMEORIGIN")return!1;let s=r.headers.get("content-security-policy");if(!s)return!0;let e=s.match(/frame-ancestors\s+([\s\S]+?)(?=;|$)/i);return!!(e&&(e[1]==="*"||e[1].split(/\s+/).includes(a)))};export{c as a};
@@ -1053,7 +1053,7 @@ declare const getPlanDetails: (plan: string) => {
1053
1053
  text: string;
1054
1054
  }[];
1055
1055
  };
1056
- declare const getNextPlan: (plan: string) => {
1056
+ declare const getNextPlan: (plan?: string | null) => {
1057
1057
  name: string;
1058
1058
  tagline: string;
1059
1059
  price: {
@@ -1180,6 +1180,7 @@ declare const API_HOSTNAMES: Set<string>;
1180
1180
  declare const API_DOMAIN: string;
1181
1181
  declare const ADMIN_HOSTNAMES: Set<string>;
1182
1182
  declare const DUB_LOGO = "https://assets.dub.co/logo.png";
1183
+ declare const DUB_WORDMARK = "https://assets.dub.co/wordmark.png";
1183
1184
  declare const DUB_THUMBNAIL = "https://assets.dub.co/thumbnail.jpg";
1184
1185
  declare const DUB_WORKSPACE_ID = "cl7pj5kq4006835rbjlt2ofka";
1185
1186
  declare const LEGAL_WORKSPACE_ID = "clrflia0j0000vs7sqfhz9c7q";
@@ -1218,4 +1219,4 @@ declare const DUB_DEMO_LINKS: {
1218
1219
  key: string;
1219
1220
  }[];
1220
1221
 
1221
- export { ADMIN_HOSTNAMES, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, APP_NAME, BUSINESS_PLAN, DUB_DEMO_LINKS, DUB_DOMAINS, DUB_DOMAINS_ARRAY, DUB_LOGO, DUB_THUMBNAIL, DUB_WORKSPACE_ID, ENTERPRISE_PLAN, FREE_PLAN, FREE_WORKSPACES_LIMIT, HOME_DOMAIN, LEGAL_USER_ID, LEGAL_WORKSPACE_ID, PLANS, PRO_PLAN, PUBLIC_PLANS, SELF_SERVE_PAID_PLANS, SHORT_DOMAIN, getNextPlan, getPlanDetails, getPlanFromPriceId };
1222
+ export { ADMIN_HOSTNAMES, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, APP_NAME, BUSINESS_PLAN, DUB_DEMO_LINKS, DUB_DOMAINS, DUB_DOMAINS_ARRAY, DUB_LOGO, DUB_THUMBNAIL, DUB_WORDMARK, DUB_WORKSPACE_ID, ENTERPRISE_PLAN, FREE_PLAN, FREE_WORKSPACES_LIMIT, HOME_DOMAIN, LEGAL_USER_ID, LEGAL_WORKSPACE_ID, PLANS, PRO_PLAN, PUBLIC_PLANS, SELF_SERVE_PAID_PLANS, SHORT_DOMAIN, getNextPlan, getPlanDetails, getPlanFromPriceId };