@dub/utils 0.0.18 → 0.0.19

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.
@@ -0,0 +1 @@
1
+ var s={city:"San Francisco",region:"CA",country:"US",latitude:"37.7695",longitude:"-122.385"},p="63.141.57.109",a={hidden:{scale:.8,opacity:0},show:{scale:1,opacity:1,transition:{type:"spring"}}},n={hidden:{opacity:0,y:20},show:{opacity:1,y:0,transition:{duration:.4,type:"spring"}}},r={initial:{height:0},animate:{height:"auto"},exit:{height:0},transition:{duration:.15,ease:"easeOut"}},i={initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2}},c=100,t=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",l=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),d=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",h=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",A=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${t}`,"api.localhost:8888"]),I=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",u=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),N={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"},E={headers:{"x-powered-by":"Dub.co - Link management for modern marketing teams"}},m="https://www.google.com/s2/favicons?sz=64&domain_url=",g="https://d2vwwcvoksz7ty.cloudfront.net/logo.png",P="https://d2vwwcvoksz7ty.cloudfront.net/thumbnail.png",L=["abuse","changelog","terms","privacy"],O=[{slug:t,verified:!0,primary:!0,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[]},...process.env.NEXT_PUBLIC_IS_DUB?[{slug:"chatg.pt",verified:!0,primary:!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"]},{slug:"amzn.id",verified:!0,primary:!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"]},{slug:"spti.fi",verified:!0,primary:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"]}]:[]],T=[{name:"ChatGPT Link Shortener",slug:"chatgpt-link-shortener"},{name:"Amazon Link Shortener",slug:"amazon-link-shortener"},{name:"Spotify Link Shortener",slug:"spotify-link-shortener"},{name:"Metatags API",slug:"metatags"},{name:"QR Code Generator",slug:"qr-code"},{name:"Link Inspector",slug:"inspector"}],S=new Set(["com","co","net","org","edu","gov","in"]),C=new Set(["my.id","github.io","vercel.app","now.sh","pages.dev","webflow.io","netlify.app","fly.dev","web.app"]),v={key:"",url:"",domain:"",archived:!1,expiresAt:null,password:null,title:null,description:null,image:null,rewrite:!1,ios:null,android:null,clicks:0,userId:"",proxy:!1},M="cl7pj5kq4006835rbjlt2ofka",D="clqei1lgc0000vsnzi01pbf47",y=[{name:"Okta",logo:"/_static/icons/okta.svg",saml:"okta",samlModalCopy:"Metadata URL",scim:"okta-scim-v2",scimModalCopy:{url:"SCIM 2.0 Base URL",token:"OAuth Bearer Token"},wip:!1},{name:"Azure AD",logo:"/_static/icons/azure.svg",saml:"azure",samlModalCopy:"App Federation Metadata URL",scim:"azure-scim-v2",scimModalCopy:{url:"Tenant URL",token:"Secret Token"},wip:!1},{name:"Google",logo:"/_static/icons/google.svg",saml:"google",samlModalCopy:"XML Metadata File",scim:"google",scimModalCopy:{url:"SCIM 2.0 Base URL",token:"OAuth Bearer Token"},wip:!1}];export{s as a,p as b,a as c,n as d,r as e,i as f,c as g,t as h,l as i,_ as j,d as k,h as l,A as m,I as n,u as o,N as p,E as q,m as r,g as s,P as t,L as u,O as v,T as w,S as x,C as y,v as z,M as A,D as B,y as C};
@@ -0,0 +1 @@
1
+ var s={city:"San Francisco",region:"CA",country:"US",latitude:"37.7695",longitude:"-122.385"},p="63.141.57.109",a={hidden:{scale:.8,opacity:0},show:{scale:1,opacity:1,transition:{type:"spring"}}},n={hidden:{opacity:0,y:20},show:{opacity:1,y:0,transition:{duration:.4,type:"spring"}}},r={initial:{height:0},animate:{height:"auto"},exit:{height:0},transition:{duration:.15,ease:"easeOut"}},i={initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2}},c=100,t=process.env.NEXT_PUBLIC_APP_SHORT_DOMAIN||"dub.sh",l=`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,_=new Set([`app.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`preview.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"localhost:8888","localhost"]),d=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",h=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",A=new Set([`api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,`api.${t}`,"api.localhost:8888"]),I=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?`https://api.${process.env.NEXT_PUBLIC_APP_DOMAIN}`:"http://api.localhost:8888",u=new Set([`admin.${process.env.NEXT_PUBLIC_APP_DOMAIN}`,"admin.localhost:8888"]),N={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"},E={headers:{"x-powered-by":"Dub.co - Link management for modern marketing teams"}},m="https://www.google.com/s2/favicons?sz=64&domain_url=",g="https://d2vwwcvoksz7ty.cloudfront.net/logo.png",P="https://d2vwwcvoksz7ty.cloudfront.net/thumbnail.png",L=["stats","changelog","terms","privacy","abuse"],O=[{slug:t,verified:!0,primary:!0,target:`https://${process.env.NEXT_PUBLIC_APP_DOMAIN}`,type:"redirect",placeholder:"https://dub.co/help/article/what-is-dub",clicks:0,allowedHostnames:[]},...process.env.NEXT_PUBLIC_IS_DUB?[{slug:"chatg.pt",verified:!0,primary:!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"]},{slug:"amzn.id",verified:!0,primary:!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"]},{slug:"spti.fi",verified:!0,primary:!1,target:"https://dub.co/tools/spotify-link-shortener",type:"redirect",placeholder:"https://open.spotify.com/album/1SCyi9a5pOasikidToUY5y",clicks:0,allowedHostnames:["open.spotify.com"]}]:[]],T=[{name:"ChatGPT Link Shortener",slug:"chatgpt-link-shortener"},{name:"Amazon Link Shortener",slug:"amazon-link-shortener"},{name:"Spotify Link Shortener",slug:"spotify-link-shortener"},{name:"Metatags API",slug:"metatags"},{name:"QR Code Generator",slug:"qr-code"},{name:"Link Inspector",slug:"inspector"}],S=new Set(["com","co","net","org","edu","gov","in"]),C=new Set(["my.id","github.io","vercel.app","now.sh","pages.dev","webflow.io","netlify.app","fly.dev","web.app"]),v={key:"",url:"",domain:"",archived:!1,expiresAt:null,password:null,title:null,description:null,image:null,rewrite:!1,ios:null,android:null,clicks:0,userId:"",proxy:!1},M="cl7pj5kq4006835rbjlt2ofka",D="clqei1lgc0000vsnzi01pbf47",y=[{name:"Okta",logo:"/_static/icons/okta.svg",saml:"okta",samlModalCopy:"Metadata URL",scim:"okta-scim-v2",scimModalCopy:{url:"SCIM 2.0 Base URL",token:"OAuth Bearer Token"},wip:!1},{name:"Azure AD",logo:"/_static/icons/azure.svg",saml:"azure",samlModalCopy:"App Federation Metadata URL",scim:"azure-scim-v2",scimModalCopy:{url:"Tenant URL",token:"Secret Token"},wip:!1},{name:"Google",logo:"/_static/icons/google.svg",saml:"google",samlModalCopy:"XML Metadata File",scim:"google",scimModalCopy:{url:"SCIM 2.0 Base URL",token:"OAuth Bearer Token"},wip:!1}];export{s as a,p as b,a as c,n as d,r as e,i as f,c as g,t as h,l as i,_ as j,d as k,h as l,A as m,I as n,u as o,N as p,E as q,m as r,g as s,P as t,L as u,O as v,T as w,S as x,C as y,v as z,M as A,D as B,y as C};
@@ -96,7 +96,7 @@ declare const DUB_HEADERS: {
96
96
  declare const GOOGLE_FAVICON_URL = "https://www.google.com/s2/favicons?sz=64&domain_url=";
97
97
  declare const DUB_LOGO = "https://d2vwwcvoksz7ty.cloudfront.net/logo.png";
98
98
  declare const DUB_THUMBNAIL = "https://d2vwwcvoksz7ty.cloudfront.net/thumbnail.png";
99
- declare const SHOW_BACKGROUND_SEGMENTS: string[];
99
+ declare const HIDE_BACKGROUND_SEGMENTS: string[];
100
100
  declare const DUB_DOMAINS: {
101
101
  slug: string;
102
102
  verified: boolean;
@@ -146,4 +146,4 @@ declare const SAML_PROVIDERS: {
146
146
  wip: boolean;
147
147
  }[];
148
148
 
149
- export { ADMIN_HOSTNAMES, ALL_TOOLS, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, DEFAULT_LINK_PROPS, DEFAULT_REDIRECTS, DUB_DOMAINS, DUB_HEADERS, DUB_LOGO, DUB_PROJECT_ID, DUB_THUMBNAIL, FADE_IN_ANIMATION_SETTINGS, FRAMER_MOTION_LIST_ITEM_VARIANTS, GOOGLE_FAVICON_URL, HOME_DOMAIN, LEGAL_USER_ID, LOCALHOST_GEO_DATA, LOCALHOST_IP, PAGINATION_LIMIT, SAML_PROVIDERS, SECOND_LEVEL_DOMAINS, SHORT_DOMAIN, SHOW_BACKGROUND_SEGMENTS, SPECIAL_APEX_DOMAINS, STAGGER_CHILD_VARIANTS, SWIPE_REVEAL_ANIMATION_SETTINGS };
149
+ export { ADMIN_HOSTNAMES, ALL_TOOLS, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, DEFAULT_LINK_PROPS, DEFAULT_REDIRECTS, DUB_DOMAINS, DUB_HEADERS, DUB_LOGO, DUB_PROJECT_ID, DUB_THUMBNAIL, FADE_IN_ANIMATION_SETTINGS, FRAMER_MOTION_LIST_ITEM_VARIANTS, GOOGLE_FAVICON_URL, HIDE_BACKGROUND_SEGMENTS, HOME_DOMAIN, LEGAL_USER_ID, LOCALHOST_GEO_DATA, LOCALHOST_IP, PAGINATION_LIMIT, SAML_PROVIDERS, SECOND_LEVEL_DOMAINS, SHORT_DOMAIN, SPECIAL_APEX_DOMAINS, STAGGER_CHILD_VARIANTS, SWIPE_REVEAL_ANIMATION_SETTINGS };
@@ -1 +1 @@
1
- import{A as C,B as D,C as E,a as c,b as d,c as e,d as f,e as g,f as h,g as i,h as j,i as k,j as l,k as m,l as n,m as o,n as p,o as q,p as r,q as s,r as t,s as u,t as v,u as w,v as x,w as y,x as z,y as A,z as B}from"../chunk-LREYXDLN.mjs";import{a}from"../chunk-MODISIUH.mjs";import{a as b}from"../chunk-3P54C65P.mjs";export{q as ADMIN_HOSTNAMES,y as ALL_TOOLS,p as API_DOMAIN,o as API_HOSTNAMES,m as APP_DOMAIN,n as APP_DOMAIN_WITH_NGROK,l as APP_HOSTNAMES,b as COUNTRIES,B as DEFAULT_LINK_PROPS,r as DEFAULT_REDIRECTS,x as DUB_DOMAINS,s as DUB_HEADERS,u as DUB_LOGO,C as DUB_PROJECT_ID,v as DUB_THUMBNAIL,h as FADE_IN_ANIMATION_SETTINGS,e as FRAMER_MOTION_LIST_ITEM_VARIANTS,t as GOOGLE_FAVICON_URL,k as HOME_DOMAIN,D as LEGAL_USER_ID,c as LOCALHOST_GEO_DATA,d as LOCALHOST_IP,i as PAGINATION_LIMIT,E as SAML_PROVIDERS,z as SECOND_LEVEL_DOMAINS,j as SHORT_DOMAIN,w as SHOW_BACKGROUND_SEGMENTS,A as SPECIAL_APEX_DOMAINS,f as STAGGER_CHILD_VARIANTS,g as SWIPE_REVEAL_ANIMATION_SETTINGS,a as ccTLDs};
1
+ import{A as C,B as D,C as E,a as c,b as d,c as e,d as f,e as g,f as h,g as i,h as j,i as k,j as l,k as m,l as n,m as o,n as p,o as q,p as r,q as s,r as t,s as u,t as v,u as w,v as x,w as y,x as z,y as A,z as B}from"../chunk-UUX7CPTL.mjs";import{a}from"../chunk-MODISIUH.mjs";import{a as b}from"../chunk-3P54C65P.mjs";export{q as ADMIN_HOSTNAMES,y as ALL_TOOLS,p as API_DOMAIN,o as API_HOSTNAMES,m as APP_DOMAIN,n as APP_DOMAIN_WITH_NGROK,l as APP_HOSTNAMES,b as COUNTRIES,B as DEFAULT_LINK_PROPS,r as DEFAULT_REDIRECTS,x as DUB_DOMAINS,s as DUB_HEADERS,u as DUB_LOGO,C as DUB_PROJECT_ID,v as DUB_THUMBNAIL,h as FADE_IN_ANIMATION_SETTINGS,e as FRAMER_MOTION_LIST_ITEM_VARIANTS,t as GOOGLE_FAVICON_URL,w as HIDE_BACKGROUND_SEGMENTS,k as HOME_DOMAIN,D as LEGAL_USER_ID,c as LOCALHOST_GEO_DATA,d as LOCALHOST_IP,i as PAGINATION_LIMIT,E as SAML_PROVIDERS,z as SECOND_LEVEL_DOMAINS,j as SHORT_DOMAIN,A as SPECIAL_APEX_DOMAINS,f as STAGGER_CHILD_VARIANTS,g as SWIPE_REVEAL_ANIMATION_SETTINGS,a as ccTLDs};
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import { Metadata } from 'next';
3
- export { ADMIN_HOSTNAMES, ALL_TOOLS, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, DEFAULT_LINK_PROPS, DEFAULT_REDIRECTS, DUB_DOMAINS, DUB_HEADERS, DUB_LOGO, DUB_PROJECT_ID, DUB_THUMBNAIL, FADE_IN_ANIMATION_SETTINGS, FRAMER_MOTION_LIST_ITEM_VARIANTS, GOOGLE_FAVICON_URL, HOME_DOMAIN, LEGAL_USER_ID, LOCALHOST_GEO_DATA, LOCALHOST_IP, PAGINATION_LIMIT, SAML_PROVIDERS, SECOND_LEVEL_DOMAINS, SHORT_DOMAIN, SHOW_BACKGROUND_SEGMENTS, SPECIAL_APEX_DOMAINS, STAGGER_CHILD_VARIANTS, SWIPE_REVEAL_ANIMATION_SETTINGS } from './constants/index.js';
3
+ export { ADMIN_HOSTNAMES, ALL_TOOLS, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, DEFAULT_LINK_PROPS, DEFAULT_REDIRECTS, DUB_DOMAINS, DUB_HEADERS, DUB_LOGO, DUB_PROJECT_ID, DUB_THUMBNAIL, FADE_IN_ANIMATION_SETTINGS, FRAMER_MOTION_LIST_ITEM_VARIANTS, GOOGLE_FAVICON_URL, HIDE_BACKGROUND_SEGMENTS, HOME_DOMAIN, LEGAL_USER_ID, LOCALHOST_GEO_DATA, LOCALHOST_IP, PAGINATION_LIMIT, SAML_PROVIDERS, SECOND_LEVEL_DOMAINS, SHORT_DOMAIN, SPECIAL_APEX_DOMAINS, STAGGER_CHILD_VARIANTS, SWIPE_REVEAL_ANIMATION_SETTINGS } from './constants/index.js';
4
4
  export { default as ccTLDs } from './constants/cctlds.js';
5
5
  export { default as COUNTRIES } from './constants/countries.js';
6
6
 
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{A as j,B as W,C as J,a as U,b as _,c as L,d as M,e as R,f as k,g as v,h as O,i as c,j as A,k as E,l as T,m as $,n as N,o as P,p as C,q as F,r as I,s as z,t as K,u as B,v as l,w as H,x as u,y as g,z as Z}from"./chunk-LREYXDLN.mjs";import{a}from"./chunk-MODISIUH.mjs";import{a as S}from"./chunk-3P54C65P.mjs";import m from"@sindresorhus/slugify";import{clsx as f}from"clsx";import h from"ms";import{customAlphabet as d}from"nanoid";import{twMerge as y}from"tailwind-merge";function ee(...e){return y(f(e))}function te({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:r="https://dub.co/_static/thumbnail.png",icons:o=[{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:n=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,images:[{url:r}]},twitter:{card:"summary_large_image",title:e,description:t,images:[r],creator:"@dubdotco"},icons:o,metadataBase:new URL(c),...n&&{robots:{index:!1,follow:!1}}}}var re=d("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",7);async function ne(e,t){let r=await fetch(e,t);if(!r.ok){let o=await r.text(),n=new Error(o);throw n.status=r.status,n}return r.json()}function oe(e,t={digits:1}){if(!e)return"0";if(t.full)return Intl.NumberFormat("en-US").format(e);let r=[{value:1,symbol:""},{value:1e3,symbol:"K"},{value:1e6,symbol:"M"},{value:1e9,symbol:"G"},{value:1e12,symbol:"T"},{value:1e15,symbol:"P"},{value:1e18,symbol:"E"}],o=/\.0+$|(\.[0-9]*[1-9])0+$/;var n=r.slice().reverse().find(function(s){return e>=s.value});return n?(e/n.value).toFixed(t.digits).replace(o,"$1")+n.symbol:"0"}function se(e){return!e||typeof e!="string"?e:e.charAt(0).toUpperCase()+e.slice(1)}var ae=(e,t)=>e.reduce((r,o,n)=>{let s=Math.floor(n/t);return r[s]||(r[s]=[]),r[s].push(o),r},[]);function ie({domain:e="dub.sh",key:t,localhost:r,pretty:o,noDomain:n}){let s=`${r?"http://home.localhost:8888":`https://${e}`}${t&&t!=="_root"?`/${t}`:""}`;return n?`/${t}`:o?s.replace(/^https?:\/\//,""):s}var ce=(e,{withAgo:t}={})=>{if(!e)return"Never";let r=Date.now()-new Date(e).getTime();return r<1e3?"Just now":r>828e5?new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:new Date(e).getFullYear()!==new Date().getFullYear()?"numeric":void 0}):`${h(r)}${t?" ago":""}`},le=e=>{let t=e?new Date(e):new Date;return t.toString()==="Invalid Date"?"":new Date(t.getTime()-t.getTimezoneOffset()*6e4).toISOString().split(":").slice(0,2).join(":")},ue=e=>new Date(`${e}T00:00:00Z`).toLocaleDateString("en-US",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"}),ge=e=>{let t=new Date,r=t.getDate(),o=t.getMonth(),n=t.getFullYear();if(r>=e)return{firstDay:new Date(n,o,e),lastDay:new Date(n,o+1,e-1)};{let s=o===0?n-1:n,i=o===0?11:o-1;return{firstDay:new Date(s,i,e),lastDay:new Date(n,o,e-1)}}},x=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()},pe=e=>{let t=x();return e>t?t:e},me=e=>{let t=m(e,{separator:""});if(t.length<3)return"";if(a.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&a.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,s)=>n.length<s.length?n:s)}.to`},fe=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),he=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-]*$/u),de=new RegExp(/^[a-zA-Z0-9\-]+$/),ye=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),xe=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 r=t.split(".");return r.length>2?u.has(r[r.length-2])&&a.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},p=e=>{try{return new URL(e),!0}catch{return!1}},De=e=>{if(p(e))return new URL(e).toString();try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).toString()}catch{return null}},we=e=>{if(p(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}},be=e=>l.some(t=>t.slug===e),Se=e=>{let t={};return new URL(e).searchParams.forEach(function(r,o){t[o]=r}),t},Ue=(e,t)=>!e||e.length<=t?e:`${e.slice(0,t-3)}...`,_e=e=>{if(!e)return{};try{let t=new URL(e).searchParams,r={};for(let[o,n]of t.entries())n&&n!==""&&(r[o]=n);return r}catch{return{}}},Le=(e,t)=>{if(!e)return"";try{let r=new URL(e);for(let[o,n]of Object.entries(t))n===""?r.searchParams.delete(o):r.searchParams.set(o,n);return r.toString()}catch{return""}},D=[{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"}],Me=e=>{try{let t=new URL(e);return D.forEach(r=>t.searchParams.delete(r.key)),t.toString()}catch{return e}};async function Re(e){let r=new TextEncoder().encode(e),o=await crypto.subtle.digest("MD5",r);return Array.from(new Uint8Array(o)).map(i=>i.toString(16).padStart(2,"0")).join("")}var w={cron:process.env.DUB_SLACK_HOOK_CRON,links:process.env.DUB_SLACK_HOOK_LINKS},ke=async({message:e,type:t,mention:r=!1})=>{(process.env.NODE_ENV==="development"||!process.env.DUB_SLACK_HOOK_CRON||!process.env.DUB_SLACK_HOOK_LINKS)&&console.log(e);let o=w[t];if(!!o)try{return await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({blocks:[{type:"section",text:{type:"mrkdwn",text:`${r?"<@U0404G6J3NJ> ":""}${e}`}}]})})}catch(n){console.log(`Failed to log to Dub Slack. Error: ${n}`)}},b=(e,t)=>{if(e===t)return!0;if(typeof e!="object"||typeof t!="object"||e===null||t===null)return!1;let r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return!1;for(let n of r)if(!o.includes(n)||!b(e[n],t[n]))return!1;return!0};export{P as ADMIN_HOSTNAMES,H as ALL_TOOLS,N as API_DOMAIN,$ as API_HOSTNAMES,E as APP_DOMAIN,T as APP_DOMAIN_WITH_NGROK,A as APP_HOSTNAMES,S as COUNTRIES,Z as DEFAULT_LINK_PROPS,C as DEFAULT_REDIRECTS,l as DUB_DOMAINS,F as DUB_HEADERS,z as DUB_LOGO,j as DUB_PROJECT_ID,K as DUB_THUMBNAIL,k as FADE_IN_ANIMATION_SETTINGS,L as FRAMER_MOTION_LIST_ITEM_VARIANTS,I as GOOGLE_FAVICON_URL,c as HOME_DOMAIN,W as LEGAL_USER_ID,U as LOCALHOST_GEO_DATA,_ as LOCALHOST_IP,v as PAGINATION_LIMIT,J as SAML_PROVIDERS,u as SECOND_LEVEL_DOMAINS,O as SHORT_DOMAIN,B as SHOW_BACKGROUND_SEGMENTS,g as SPECIAL_APEX_DOMAINS,M as STAGGER_CHILD_VARIANTS,R as SWIPE_REVEAL_ANIMATION_SETTINGS,se as capitalize,a as ccTLDs,ae as chunk,ee as cn,te as constructMetadata,Le as constructURLFromUTMParams,b as deepEqual,ne as fetcher,ue as formatDate,me as generateDomainFromName,Re as generateMD5Hash,pe as getAdjustedBillingCycleStart,xe as getApexDomain,le as getDateTimeLocal,we as getDomainWithoutWWW,ge as getFirstAndLastDay,x as getLastDayOfMonth,_e as getParamsFromURL,Se as getSearchParams,ye as getSubdomain,De as getUrlFromString,Me as getUrlWithoutUTMParams,be as isDubDomain,p as isValidUrl,ie as linkConstructor,ke as log,oe as nFormatter,re as nanoid,D as paramsMetadata,ce as timeAgo,Ue as truncate,fe as validDomainRegex,he as validKeyRegex,de as validSlugRegex};
1
+ import{A as j,B as W,C as J,a as U,b as _,c as L,d as M,e as R,f as k,g as v,h as O,i as c,j as A,k as E,l as T,m as $,n as N,o as P,p as C,q as F,r as I,s as z,t as K,u as B,v as l,w as H,x as u,y as g,z as Z}from"./chunk-UUX7CPTL.mjs";import{a}from"./chunk-MODISIUH.mjs";import{a as S}from"./chunk-3P54C65P.mjs";import m from"@sindresorhus/slugify";import{clsx as f}from"clsx";import h from"ms";import{customAlphabet as d}from"nanoid";import{twMerge as y}from"tailwind-merge";function ee(...e){return y(f(e))}function te({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:r="https://dub.co/_static/thumbnail.png",icons:o=[{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:n=!1}={}){return{title:e,description:t,openGraph:{title:e,description:t,images:[{url:r}]},twitter:{card:"summary_large_image",title:e,description:t,images:[r],creator:"@dubdotco"},icons:o,metadataBase:new URL(c),...n&&{robots:{index:!1,follow:!1}}}}var re=d("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",7);async function ne(e,t){let r=await fetch(e,t);if(!r.ok){let o=await r.text(),n=new Error(o);throw n.status=r.status,n}return r.json()}function oe(e,t={digits:1}){if(!e)return"0";if(t.full)return Intl.NumberFormat("en-US").format(e);let r=[{value:1,symbol:""},{value:1e3,symbol:"K"},{value:1e6,symbol:"M"},{value:1e9,symbol:"G"},{value:1e12,symbol:"T"},{value:1e15,symbol:"P"},{value:1e18,symbol:"E"}],o=/\.0+$|(\.[0-9]*[1-9])0+$/;var n=r.slice().reverse().find(function(s){return e>=s.value});return n?(e/n.value).toFixed(t.digits).replace(o,"$1")+n.symbol:"0"}function se(e){return!e||typeof e!="string"?e:e.charAt(0).toUpperCase()+e.slice(1)}var ae=(e,t)=>e.reduce((r,o,n)=>{let s=Math.floor(n/t);return r[s]||(r[s]=[]),r[s].push(o),r},[]);function ie({domain:e="dub.sh",key:t,localhost:r,pretty:o,noDomain:n}){let s=`${r?"http://home.localhost:8888":`https://${e}`}${t&&t!=="_root"?`/${t}`:""}`;return n?`/${t}`:o?s.replace(/^https?:\/\//,""):s}var ce=(e,{withAgo:t}={})=>{if(!e)return"Never";let r=Date.now()-new Date(e).getTime();return r<1e3?"Just now":r>828e5?new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:new Date(e).getFullYear()!==new Date().getFullYear()?"numeric":void 0}):`${h(r)}${t?" ago":""}`},le=e=>{let t=e?new Date(e):new Date;return t.toString()==="Invalid Date"?"":new Date(t.getTime()-t.getTimezoneOffset()*6e4).toISOString().split(":").slice(0,2).join(":")},ue=e=>new Date(`${e}T00:00:00Z`).toLocaleDateString("en-US",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"}),ge=e=>{let t=new Date,r=t.getDate(),o=t.getMonth(),n=t.getFullYear();if(r>=e)return{firstDay:new Date(n,o,e),lastDay:new Date(n,o+1,e-1)};{let s=o===0?n-1:n,i=o===0?11:o-1;return{firstDay:new Date(s,i,e),lastDay:new Date(n,o,e-1)}}},x=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()},pe=e=>{let t=x();return e>t?t:e},me=e=>{let t=m(e,{separator:""});if(t.length<3)return"";if(a.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&a.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,s)=>n.length<s.length?n:s)}.to`},fe=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),he=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-]*$/u),de=new RegExp(/^[a-zA-Z0-9\-]+$/),ye=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),xe=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 r=t.split(".");return r.length>2?u.has(r[r.length-2])&&a.has(r[r.length-1])||g.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},p=e=>{try{return new URL(e),!0}catch{return!1}},De=e=>{if(p(e))return new URL(e).toString();try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).toString()}catch{return null}},we=e=>{if(p(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}},be=e=>l.some(t=>t.slug===e),Se=e=>{let t={};return new URL(e).searchParams.forEach(function(r,o){t[o]=r}),t},Ue=(e,t)=>!e||e.length<=t?e:`${e.slice(0,t-3)}...`,_e=e=>{if(!e)return{};try{let t=new URL(e).searchParams,r={};for(let[o,n]of t.entries())n&&n!==""&&(r[o]=n);return r}catch{return{}}},Le=(e,t)=>{if(!e)return"";try{let r=new URL(e);for(let[o,n]of Object.entries(t))n===""?r.searchParams.delete(o):r.searchParams.set(o,n);return r.toString()}catch{return""}},D=[{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"}],Me=e=>{try{let t=new URL(e);return D.forEach(r=>t.searchParams.delete(r.key)),t.toString()}catch{return e}};async function Re(e){let r=new TextEncoder().encode(e),o=await crypto.subtle.digest("MD5",r);return Array.from(new Uint8Array(o)).map(i=>i.toString(16).padStart(2,"0")).join("")}var w={cron:process.env.DUB_SLACK_HOOK_CRON,links:process.env.DUB_SLACK_HOOK_LINKS},ke=async({message:e,type:t,mention:r=!1})=>{(process.env.NODE_ENV==="development"||!process.env.DUB_SLACK_HOOK_CRON||!process.env.DUB_SLACK_HOOK_LINKS)&&console.log(e);let o=w[t];if(!!o)try{return await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({blocks:[{type:"section",text:{type:"mrkdwn",text:`${r?"<@U0404G6J3NJ> ":""}${e}`}}]})})}catch(n){console.log(`Failed to log to Dub Slack. Error: ${n}`)}},b=(e,t)=>{if(e===t)return!0;if(typeof e!="object"||typeof t!="object"||e===null||t===null)return!1;let r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return!1;for(let n of r)if(!o.includes(n)||!b(e[n],t[n]))return!1;return!0};export{P as ADMIN_HOSTNAMES,H as ALL_TOOLS,N as API_DOMAIN,$ as API_HOSTNAMES,E as APP_DOMAIN,T as APP_DOMAIN_WITH_NGROK,A as APP_HOSTNAMES,S as COUNTRIES,Z as DEFAULT_LINK_PROPS,C as DEFAULT_REDIRECTS,l as DUB_DOMAINS,F as DUB_HEADERS,z as DUB_LOGO,j as DUB_PROJECT_ID,K as DUB_THUMBNAIL,k as FADE_IN_ANIMATION_SETTINGS,L as FRAMER_MOTION_LIST_ITEM_VARIANTS,I as GOOGLE_FAVICON_URL,B as HIDE_BACKGROUND_SEGMENTS,c as HOME_DOMAIN,W as LEGAL_USER_ID,U as LOCALHOST_GEO_DATA,_ as LOCALHOST_IP,v as PAGINATION_LIMIT,J as SAML_PROVIDERS,u as SECOND_LEVEL_DOMAINS,O as SHORT_DOMAIN,g as SPECIAL_APEX_DOMAINS,M as STAGGER_CHILD_VARIANTS,R as SWIPE_REVEAL_ANIMATION_SETTINGS,se as capitalize,a as ccTLDs,ae as chunk,ee as cn,te as constructMetadata,Le as constructURLFromUTMParams,b as deepEqual,ne as fetcher,ue as formatDate,me as generateDomainFromName,Re as generateMD5Hash,pe as getAdjustedBillingCycleStart,xe as getApexDomain,le as getDateTimeLocal,we as getDomainWithoutWWW,ge as getFirstAndLastDay,x as getLastDayOfMonth,_e as getParamsFromURL,Se as getSearchParams,ye as getSubdomain,De as getUrlFromString,Me as getUrlWithoutUTMParams,be as isDubDomain,p as isValidUrl,ie as linkConstructor,ke as log,oe as nFormatter,re as nanoid,D as paramsMetadata,ce as timeAgo,Ue as truncate,fe as validDomainRegex,he as validKeyRegex,de as validSlugRegex};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dub/utils",
3
3
  "description": "Utility functions and constants for Dub.co",
4
- "version": "0.0.18",
4
+ "version": "0.0.19",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",