@dub/utils 0.0.9 → 0.0.11

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 e={city:"San Francisco",region:"CA",country:"US",latitude:"37.7695",longitude:"-122.385"},s="63.141.57.109",p={hidden:{scale:.8,opacity:0},show:{scale:1,opacity:1,transition:{type:"spring"}}},a={hidden:{opacity:0,y:20},show:{opacity:1,y:0,transition:{duration:.4,type:"spring"}}},n={initial:{height:0},animate:{height:"auto"},exit:{height:0},transition:{duration:.15,ease:"easeOut"}},c={initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2}},i=100,r="https://dub.co",l=new Set(["app.dub.co","preview.dub.co","localhost:8888","localhost"]),d=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?"https://app.dub.co":process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?"https://preview.dub.co":"http://localhost:8888",u=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?"https://app.dub.co":process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?"https://preview.dub.co":process.env.NGROK_URL,_=new Set(["api.dub.co","api.dub.sh","api.localhost:8888"]),E=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?"https://api.dub.co":process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?"https://api.dub.sh":"http://api.localhost:8888",h=new Set(["admin.dub.co","admin.localhost:8888"]),g={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"},A={headers:{"x-powered-by":"Dub.co - Link management for modern marketing teams"}},I="/_static/favicons",m="https://www.google.com/s2/favicons?sz=64&domain_url=",L="https://d2vwwcvoksz7ty.cloudfront.net/logo.png",N="https://d2vwwcvoksz7ty.cloudfront.net/thumbnail.png",O=["tools","pricing","help","features","compare","customers","blog","(blog-post)","login","register","auth"],S=[{name:"Metatags API",slug:"metatags"},{name:"Link Inspector",slug:"inspector"},{name:"QR Code Generator",slug:"qr-code"}],T=new Set(["com","co","net","org","edu","gov","in"]),b=new Set(["my.id","github.io","vercel.app","now.sh","pages.dev","webflow.io","netlify.app","fly.dev","web.app"]),x={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},w="cl7pj5kq4006835rbjlt2ofka",C=[{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{e as a,s as b,p as c,a as d,n as e,c as f,i as g,r as h,l as i,d as j,u as k,_ as l,E as m,h as n,g as o,A as p,I as q,m as r,L as s,N as t,O as u,S as v,T as w,b as x,x as y,w as z,C as A};
@@ -0,0 +1 @@
1
+ var e={city:"San Francisco",region:"CA",country:"US",latitude:"37.7695",longitude:"-122.385"},s="63.141.57.109",p={hidden:{scale:.8,opacity:0},show:{scale:1,opacity:1,transition:{type:"spring"}}},a={hidden:{opacity:0,y:20},show:{opacity:1,y:0,transition:{duration:.4,type:"spring"}}},n={initial:{height:0},animate:{height:"auto"},exit:{height:0},transition:{duration:.15,ease:"easeOut"}},c={initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2}},i=100,r="https://dub.co",l=new Set(["app.dub.co","preview.dub.co","localhost:8888","localhost"]),d=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?"https://app.dub.co":process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?"https://preview.dub.co":"http://localhost:8888",u=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?"https://app.dub.co":process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?"https://preview.dub.co":process.env.NGROK_URL,_=new Set(["api.dub.co","api.dub.sh","api.localhost:8888"]),E=process.env.NEXT_PUBLIC_VERCEL_ENV==="production"?"https://api.dub.co":process.env.NEXT_PUBLIC_VERCEL_ENV==="preview"?"https://api.dub.sh":"http://api.localhost:8888",h=new Set(["admin.dub.co","admin.localhost:8888"]),g={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"},A={headers:{"x-powered-by":"Dub.co - Link management for modern marketing teams"}},I="/_static/favicons",m="https://www.google.com/s2/favicons?sz=64&domain_url=",L="https://d2vwwcvoksz7ty.cloudfront.net/logo.png",N="https://d2vwwcvoksz7ty.cloudfront.net/thumbnail.png",O=["tools","pricing","help","features","compare","customers","blog","(blog-post)","login","register","auth"],S=[{name:"Metatags API",slug:"metatags"},{name:"QR Code Generator",slug:"qr-code"},{name:"Link Inspector",slug:"inspector"}],T=new Set(["com","co","net","org","edu","gov","in"]),b=new Set(["my.id","github.io","vercel.app","now.sh","pages.dev","webflow.io","netlify.app","fly.dev","web.app"]),x={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},w="cl7pj5kq4006835rbjlt2ofka",C=[{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{e as a,s as b,p as c,a as d,n as e,c as f,i as g,r as h,l as i,d as j,u as k,_ as l,E as m,h as n,g as o,A as p,I as q,m as r,L as s,N as t,O as u,S as v,T as w,b as x,x as y,w as z,C as A};
@@ -96,6 +96,7 @@ declare const FAVICON_FOLDER = "/_static/favicons";
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
100
  declare const ALL_TOOLS: {
100
101
  name: string;
101
102
  slug: string;
@@ -134,4 +135,4 @@ declare const SAML_PROVIDERS: {
134
135
  wip: boolean;
135
136
  }[];
136
137
 
137
- export { ADMIN_HOSTNAMES, ALL_TOOLS, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, DEFAULT_LINK_PROPS, DEFAULT_REDIRECTS, DUB_HEADERS, DUB_LOGO, DUB_PROJECT_ID, DUB_THUMBNAIL, FADE_IN_ANIMATION_SETTINGS, FAVICON_FOLDER, FRAMER_MOTION_LIST_ITEM_VARIANTS, GOOGLE_FAVICON_URL, HOME_DOMAIN, LOCALHOST_GEO_DATA, LOCALHOST_IP, PAGINATION_LIMIT, SAML_PROVIDERS, SECOND_LEVEL_DOMAINS, SPECIAL_APEX_DOMAINS, STAGGER_CHILD_VARIANTS, SWIPE_REVEAL_ANIMATION_SETTINGS };
138
+ export { ADMIN_HOSTNAMES, ALL_TOOLS, API_DOMAIN, API_HOSTNAMES, APP_DOMAIN, APP_DOMAIN_WITH_NGROK, APP_HOSTNAMES, DEFAULT_LINK_PROPS, DEFAULT_REDIRECTS, DUB_HEADERS, DUB_LOGO, DUB_PROJECT_ID, DUB_THUMBNAIL, FADE_IN_ANIMATION_SETTINGS, FAVICON_FOLDER, FRAMER_MOTION_LIST_ITEM_VARIANTS, GOOGLE_FAVICON_URL, HOME_DOMAIN, LOCALHOST_GEO_DATA, LOCALHOST_IP, PAGINATION_LIMIT, SAML_PROVIDERS, SECOND_LEVEL_DOMAINS, SHOW_BACKGROUND_SEGMENTS, SPECIAL_APEX_DOMAINS, STAGGER_CHILD_VARIANTS, SWIPE_REVEAL_ANIMATION_SETTINGS };
@@ -1 +1 @@
1
- import{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-2LDZT5PZ.mjs";import{a}from"../chunk-MODISIUH.mjs";import{a as b}from"../chunk-3P54C65P.mjs";export{p as ADMIN_HOSTNAMES,w as ALL_TOOLS,o as API_DOMAIN,n as API_HOSTNAMES,l as APP_DOMAIN,m as APP_DOMAIN_WITH_NGROK,k as APP_HOSTNAMES,b as COUNTRIES,z as DEFAULT_LINK_PROPS,q as DEFAULT_REDIRECTS,r as DUB_HEADERS,u as DUB_LOGO,A as DUB_PROJECT_ID,v as DUB_THUMBNAIL,h as FADE_IN_ANIMATION_SETTINGS,s as FAVICON_FOLDER,e as FRAMER_MOTION_LIST_ITEM_VARIANTS,t as GOOGLE_FAVICON_URL,j as HOME_DOMAIN,c as LOCALHOST_GEO_DATA,d as LOCALHOST_IP,i as PAGINATION_LIMIT,B as SAML_PROVIDERS,x as SECOND_LEVEL_DOMAINS,y as SPECIAL_APEX_DOMAINS,f as STAGGER_CHILD_VARIANTS,g as SWIPE_REVEAL_ANIMATION_SETTINGS,a as ccTLDs};
1
+ import{A as C,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-SY6M3GJT.mjs";import{a}from"../chunk-MODISIUH.mjs";import{a as b}from"../chunk-3P54C65P.mjs";export{p as ADMIN_HOSTNAMES,x as ALL_TOOLS,o as API_DOMAIN,n as API_HOSTNAMES,l as APP_DOMAIN,m as APP_DOMAIN_WITH_NGROK,k as APP_HOSTNAMES,b as COUNTRIES,A as DEFAULT_LINK_PROPS,q as DEFAULT_REDIRECTS,r as DUB_HEADERS,u as DUB_LOGO,B as DUB_PROJECT_ID,v as DUB_THUMBNAIL,h as FADE_IN_ANIMATION_SETTINGS,s as FAVICON_FOLDER,e as FRAMER_MOTION_LIST_ITEM_VARIANTS,t as GOOGLE_FAVICON_URL,j as HOME_DOMAIN,c as LOCALHOST_GEO_DATA,d as LOCALHOST_IP,i as PAGINATION_LIMIT,C as SAML_PROVIDERS,y as SECOND_LEVEL_DOMAINS,w as SHOW_BACKGROUND_SEGMENTS,z 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_HEADERS, DUB_LOGO, DUB_PROJECT_ID, DUB_THUMBNAIL, FADE_IN_ANIMATION_SETTINGS, FAVICON_FOLDER, FRAMER_MOTION_LIST_ITEM_VARIANTS, GOOGLE_FAVICON_URL, HOME_DOMAIN, LOCALHOST_GEO_DATA, LOCALHOST_IP, PAGINATION_LIMIT, SAML_PROVIDERS, SECOND_LEVEL_DOMAINS, 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_HEADERS, DUB_LOGO, DUB_PROJECT_ID, DUB_THUMBNAIL, FADE_IN_ANIMATION_SETTINGS, FAVICON_FOLDER, FRAMER_MOTION_LIST_ITEM_VARIANTS, GOOGLE_FAVICON_URL, HOME_DOMAIN, LOCALHOST_GEO_DATA, LOCALHOST_IP, PAGINATION_LIMIT, SAML_PROVIDERS, SECOND_LEVEL_DOMAINS, SHOW_BACKGROUND_SEGMENTS, 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 S,b as U,c as k,d as R,e as L,f as v,g as M,h as c,i as O,j as _,k as T,l as A,m as E,n as $,o as F,p as N,q as C,r as P,s as I,t as K,u as z,v as l,w as u,x as H,y as Z,z as j}from"./chunk-2LDZT5PZ.mjs";import{a as s}from"./chunk-MODISIUH.mjs";import{a as b}from"./chunk-3P54C65P.mjs";import m from"@sindresorhus/slugify";import{clsx as p}from"clsx";import f from"ms";import{customAlphabet as h}from"nanoid";import{twMerge as d}from"tailwind-merge";function G(...e){return d(p(e))}function X({title:e="Dub - Link Management for Modern Marketing Teams",description:t="Dub is an open-source link management tool for modern marketing teams to create, share, and track short links.",image:r="https://dub.co/_static/thumbnail.png",icons:o="/favicon.ico",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 Q=h("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",7);async function ee(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 te(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(a){return e>=a.value});return n?(e/n.value).toFixed(t.digits).replace(o,"$1")+n.symbol:"0"}function re(e){return!e||typeof e!="string"?e:e.charAt(0).toUpperCase()+e.slice(1)}var ne=(e,t)=>e.reduce((r,o,n)=>{let a=Math.floor(n/t);return r[a]||(r[a]=[]),r[a].push(o),r},[]);function oe({domain:e="dub.sh",key:t,localhost:r,pretty:o,noDomain:n}){let a=`${r?"http://home.localhost:8888":`https://${e}`}${t&&t!=="_root"?`/${t}`:""}`;return n?`/${t}`:o?a.replace(/^https?:\/\//,""):a}var ae=(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}):`${f(r)}${t?" ago":""}`},se=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(":")},ie=e=>new Date(`${e}T00:00:00Z`).toLocaleDateString("en-US",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"}),ce=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 a=o===0?n-1:n,i=o===0?11:o-1;return{firstDay:new Date(a,i,e),lastDay:new Date(n,o,e-1)}}},y=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()},le=e=>{let t=y();return e>t?t:e},ue=e=>{let t=m(e,{separator:""});if(t.length<3)return"";if(s.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&s.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,a)=>n.length<a.length?n:a)}.to`},ge=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),me=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-]*$/u),pe=new RegExp(/^[a-zA-Z0-9\-]+$/),fe=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),he=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?l.has(r[r.length-2])&&s.has(r[r.length-1])||u.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},g=e=>{try{return new URL(e),!0}catch{return!1}},de=e=>{if(g(e))return e;try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).toString()}catch{return null}},ye=e=>{if(g(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}},xe=e=>{let t={};return new URL(e).searchParams.forEach(function(r,o){t[o]=r}),t},De=(e,t)=>!e||e.length<=t?e:`${e.slice(0,t-3)}...`,we=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{}}},be=(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""}},x=[{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"}],Se=e=>{try{let t=new URL(e);return x.forEach(r=>t.searchParams.delete(r.key)),t.toString()}catch{return e}};async function Ue(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 D={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=D[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}`)}},w=(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)||!w(e[n],t[n]))return!1;return!0};export{$ as ADMIN_HOSTNAMES,z as ALL_TOOLS,E as API_DOMAIN,A as API_HOSTNAMES,_ as APP_DOMAIN,T as APP_DOMAIN_WITH_NGROK,O as APP_HOSTNAMES,b as COUNTRIES,H as DEFAULT_LINK_PROPS,F as DEFAULT_REDIRECTS,N as DUB_HEADERS,I as DUB_LOGO,Z as DUB_PROJECT_ID,K as DUB_THUMBNAIL,v as FADE_IN_ANIMATION_SETTINGS,C as FAVICON_FOLDER,k as FRAMER_MOTION_LIST_ITEM_VARIANTS,P as GOOGLE_FAVICON_URL,c as HOME_DOMAIN,S as LOCALHOST_GEO_DATA,U as LOCALHOST_IP,M as PAGINATION_LIMIT,j as SAML_PROVIDERS,l as SECOND_LEVEL_DOMAINS,u as SPECIAL_APEX_DOMAINS,R as STAGGER_CHILD_VARIANTS,L as SWIPE_REVEAL_ANIMATION_SETTINGS,re as capitalize,s as ccTLDs,ne as chunk,G as cn,X as constructMetadata,be as constructURLFromUTMParams,w as deepEqual,ee as fetcher,ie as formatDate,ue as generateDomainFromName,Ue as generateMD5Hash,le as getAdjustedBillingCycleStart,he as getApexDomain,se as getDateTimeLocal,ye as getDomainWithoutWWW,ce as getFirstAndLastDay,y as getLastDayOfMonth,we as getParamsFromURL,xe as getSearchParams,fe as getSubdomain,de as getUrlFromString,Se as getUrlWithoutUTMParams,g as isValidUrl,oe as linkConstructor,ke as log,te as nFormatter,Q as nanoid,x as paramsMetadata,ae as timeAgo,De as truncate,ge as validDomainRegex,me as validKeyRegex,pe as validSlugRegex};
1
+ import{A as W,a as S,b as U,c as k,d as R,e as L,f as v,g as M,h as c,i as O,j as _,k as T,l as A,m as E,n as $,o as F,p as N,q as C,r as P,s as I,t as K,u as z,v as H,w as l,x as u,y as Z,z as j}from"./chunk-SY6M3GJT.mjs";import{a as s}from"./chunk-MODISIUH.mjs";import{a as b}from"./chunk-3P54C65P.mjs";import m from"@sindresorhus/slugify";import{clsx as p}from"clsx";import f from"ms";import{customAlphabet as h}from"nanoid";import{twMerge as d}from"tailwind-merge";function X(...e){return d(p(e))}function Q({title:e="Dub - Link Management for Modern Marketing Teams",description:t="Dub is an open-source link management tool for modern marketing teams to create, share, and track short links.",image:r="https://dub.co/_static/thumbnail.png",icons:o="/favicon.ico",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 ee=h("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",7);async function te(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 re(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(a){return e>=a.value});return n?(e/n.value).toFixed(t.digits).replace(o,"$1")+n.symbol:"0"}function ne(e){return!e||typeof e!="string"?e:e.charAt(0).toUpperCase()+e.slice(1)}var oe=(e,t)=>e.reduce((r,o,n)=>{let a=Math.floor(n/t);return r[a]||(r[a]=[]),r[a].push(o),r},[]);function ae({domain:e="dub.sh",key:t,localhost:r,pretty:o,noDomain:n}){let a=`${r?"http://home.localhost:8888":`https://${e}`}${t&&t!=="_root"?`/${t}`:""}`;return n?`/${t}`:o?a.replace(/^https?:\/\//,""):a}var se=(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}):`${f(r)}${t?" ago":""}`},ie=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(":")},ce=e=>new Date(`${e}T00:00:00Z`).toLocaleDateString("en-US",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"}),le=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 a=o===0?n-1:n,i=o===0?11:o-1;return{firstDay:new Date(a,i,e),lastDay:new Date(n,o,e-1)}}},y=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()},ue=e=>{let t=y();return e>t?t:e},ge=e=>{let t=m(e,{separator:""});if(t.length<3)return"";if(s.has(t.slice(-2)))return`${t.slice(0,-2)}.${t.slice(-2)}`;let r=t.replace(/[aeiou]/g,"");return r.length>=3&&s.has(r.slice(-2))?`${r.slice(0,-2)}.${r.slice(-2)}`:`${[t,r].reduce((n,a)=>n.length<a.length?n:a)}.to`},me=new RegExp(/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/),pe=new RegExp(/^[0-9A-Za-z\u0080-\uFFFF\/\-]*$/u),fe=new RegExp(/^[a-zA-Z0-9\-]+$/),he=(e,t)=>e===t?null:e.slice(0,e.length-t.length-1),de=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?l.has(r[r.length-2])&&s.has(r[r.length-1])||u.has(r.slice(-2).join("."))?r.slice(-3).join("."):r.slice(-2).join("."):t},g=e=>{try{return new URL(e),!0}catch{return!1}},ye=e=>{if(g(e))return e;try{if(e.includes(".")&&!e.includes(" "))return new URL(`https://${e}`).toString()}catch{return null}},xe=e=>{if(g(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}},De=e=>{let t={};return new URL(e).searchParams.forEach(function(r,o){t[o]=r}),t},we=(e,t)=>!e||e.length<=t?e:`${e.slice(0,t-3)}...`,be=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{}}},Se=(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""}},x=[{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"}],Ue=e=>{try{let t=new URL(e);return x.forEach(r=>t.searchParams.delete(r.key)),t.toString()}catch{return e}};async function ke(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 D={cron:process.env.DUB_SLACK_HOOK_CRON,links:process.env.DUB_SLACK_HOOK_LINKS},Re=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=D[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}`)}},w=(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)||!w(e[n],t[n]))return!1;return!0};export{$ as ADMIN_HOSTNAMES,H as ALL_TOOLS,E as API_DOMAIN,A as API_HOSTNAMES,_ as APP_DOMAIN,T as APP_DOMAIN_WITH_NGROK,O as APP_HOSTNAMES,b as COUNTRIES,Z as DEFAULT_LINK_PROPS,F as DEFAULT_REDIRECTS,N as DUB_HEADERS,I as DUB_LOGO,j as DUB_PROJECT_ID,K as DUB_THUMBNAIL,v as FADE_IN_ANIMATION_SETTINGS,C as FAVICON_FOLDER,k as FRAMER_MOTION_LIST_ITEM_VARIANTS,P as GOOGLE_FAVICON_URL,c as HOME_DOMAIN,S as LOCALHOST_GEO_DATA,U as LOCALHOST_IP,M as PAGINATION_LIMIT,W as SAML_PROVIDERS,l as SECOND_LEVEL_DOMAINS,z as SHOW_BACKGROUND_SEGMENTS,u as SPECIAL_APEX_DOMAINS,R as STAGGER_CHILD_VARIANTS,L as SWIPE_REVEAL_ANIMATION_SETTINGS,ne as capitalize,s as ccTLDs,oe as chunk,X as cn,Q as constructMetadata,Se as constructURLFromUTMParams,w as deepEqual,te as fetcher,ce as formatDate,ge as generateDomainFromName,ke as generateMD5Hash,ue as getAdjustedBillingCycleStart,de as getApexDomain,ie as getDateTimeLocal,xe as getDomainWithoutWWW,le as getFirstAndLastDay,y as getLastDayOfMonth,be as getParamsFromURL,De as getSearchParams,he as getSubdomain,ye as getUrlFromString,Ue as getUrlWithoutUTMParams,g as isValidUrl,ae as linkConstructor,Re as log,re as nFormatter,ee as nanoid,x as paramsMetadata,se as timeAgo,we as truncate,me as validDomainRegex,pe as validKeyRegex,fe 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.9",
4
+ "version": "0.0.11",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",