@heybrostudio/utils
Version:
Opinionated collection of commonly used JavaScript/TypeScript utilities by @heybrostudio
1 lines • 8.59 kB
Source Map (JSON)
{"version":3,"sources":["../src/promise.ts","../src/console.ts","../src/string.ts","../src/url.ts","../src/node.ts","../src/dom.ts"],"names":["sleep","ms","callback","resolve","green","text","cyan","red","gray","camelToUnderscore","key","match","generateDiscount","length","start","removeTracking","url","baseUrl","hash","baseWithoutParams","params","trackingParams","cleanParams","acc","param","cleanedUrl","cwd","getRootByPackageName","packageName","downloadXlsx","value","filename","link","blob"],"mappings":"AASO,SAASA,EAAMC,EAAYC,EAA2C,CAC5E,OAAO,IAAI,QAAeC,GACzB,WAAW,SAAY,CACtB,MAAMD,IAAW,EACjBC,EAAQ,CACT,EAAGF,CAAE,CACN,CACD,CCVO,SAASG,EAAMC,EAAsB,CAC3C,MAAO,WAAWA,CAAI,SACvB,CAQO,SAASC,EAAKD,EAAsB,CAC1C,MAAO,WAAWA,CAAI,SACvB,CAOO,SAASE,EAAIF,EAAsB,CACzC,MAAO,WAAWA,CAAI,SACvB,CAOO,SAASG,EAAKH,EAAsB,CAC1C,MAAO,WAAWA,CAAI,SACvB,CC/BO,SAASI,EAAkBC,EAAa,CAC9C,OAAOA,EAAI,QAAQ,SAAWC,GAAU,IAAIA,EAAM,YAAY,CAAC,EAAE,CAClE,CAQO,SAASC,EAAiBC,EAAS,EAAG,CAE5C,IAAMC,EAAQ,GAAM,KAAK,IAAI,EAAGD,CAAM,EAEtC,OAAO,KAAK,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,MAAMC,EAAO,EAAG,EAAE,YAAY,CAClE,CCdO,SAASC,EAAeC,EAAa,CAE3C,GAAM,CAACC,EAASC,CAAI,EAAIF,EAAI,MAAM,GAAG,EAE/B,CAACG,EAAmBC,CAAM,EAAIH,EAAQ,MAAM,GAAG,EAG/CI,EAAiB,CACtB,aACA,aACA,eACA,WACA,cACA,QACA,SACA,cACA,SACA,UACA,SACA,SACA,QACA,QACA,SACA,UACA,UACA,MACA,MACA,SACA,UACA,UACA,QACA,SACA,SACA,SACA,cACA,YACA,SACA,aACA,QACA,SACA,YACA,eACA,aACA,aACA,eACA,cACA,WACA,QACA,QACA,SACA,SACA,UACA,QACA,UACA,SACA,SACA,UACA,QACA,YACA,SACA,UACA,UACA,QACA,OACA,WACA,YACA,eACA,SACA,MACA,MACA,KACA,WACA,aACA,aACA,eACA,cACA,WACA,QACA,SACA,QACA,SACA,UACA,UACA,QACA,UACA,QACA,iBACA,YACA,eACA,eACA,aACA,MACA,SACA,SACA,UACA,OACA,UACA,QACA,KACA,QACA,QACA,SACA,SACA,SACA,SACA,WACA,QACA,OACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,OACA,OACA,QACA,QACA,QACA,OACA,SACA,QACA,SACA,SACA,OACA,OACA,OACA,cACA,SACA,UACA,SACA,YACA,SACA,YACA,UACA,SACA,mBACD,EAGMC,EAAcF,EAAO,MAAM,GAAG,EAAE,OAAO,CAACG,EAAeC,IAAU,CACtE,GAAM,CAACd,CAAG,EAAIc,EAAM,MAAM,GAAG,EAG7B,OAAKH,EAAe,SAASX,CAAG,GAC/Ba,EAAI,KAAKC,CAAK,EAERD,CACR,EAAG,CAAC,CAAC,EAGCE,EAAaH,EAAY,OAAS,EAAI,GAAGH,CAAiB,IAAIG,EAAY,KAAK,GAAG,CAAC,GAAKH,EAC9F,OAAOD,EAAO,GAAGO,CAAU,IAAIP,CAAI,GAAKO,CACzC,CCtKA,OAAS,OAAAC,MAAW,UAOb,SAASC,EAAqBC,EAAqB,CACzD,GAAI,OAAO,OAAW,KAAe,OAAO,OAAO,SAAa,IAC/D,MAAM,MAAM,gDAAgD,EAE7D,MAAO,GAAGF,EAAI,CAAC,iBAAiBE,CAAW,EAC5C,CCPO,SAASC,EAAaC,EAAiBC,EAAkB,CAC/D,IAAMC,EAAO,SAAS,cAAc,GAAG,EACjCC,EAAO,IAAI,KAAK,CAACH,CAAK,EAAG,CAAE,KAAM,mEAAoE,CAAC,EAC5GE,EAAK,MAAM,QAAU,OACrBA,EAAK,KAAO,IAAI,gBAAgBC,CAAI,EACpCD,EAAK,SAAW,GAAGD,CAAQ,QAE3B,SAAS,KAAK,YAAYC,CAAI,EAC9BA,EAAK,MAAM,EACX,SAAS,KAAK,YAAYA,CAAI,CAC/B","sourcesContent":["import type { Func, MayBePromise } from './types'\n\n/**\n * Promised `setTimeout`\n *\n * @param ms milliseconds\n * @param callback callback method\n * @returns Promise\n */\nexport function sleep(ms: number, callback?: Func<void, MayBePromise<void>>) {\n\treturn new Promise<void>((resolve) =>\n\t\tsetTimeout(async () => {\n\t\t\tawait callback?.()\n\t\t\tresolve()\n\t\t}, ms),\n\t)\n}\n","/**\n * Print green text\n *\n * @param text Text you want to print\n * @returns Output green text\n */\nexport function green(text: string): string {\n\treturn `\\x1b[32m${text}\\x1b[0m`\n}\n\n/**\n * Print cyan text\n *\n * @param text Text you want to print\n * @returns Output cyan text\n */\nexport function cyan(text: string): string {\n\treturn `\\x1b[36m${text}\\x1b[0m`\n}\n\n/**\n * Print red text\n * @param text Text you want to print\n * @returns Output red text\n */\nexport function red(text: string): string {\n\treturn `\\x1b[31m${text}\\x1b[0m`\n}\n\n/**\n * Print gray text\n * @param text Text you want to print\n * @returns Output gray text\n */\nexport function gray(text: string): string {\n\treturn `\\x1b[90m${text}\\x1b[0m`\n}\n","/**\n * Camel to underscore\n * @param key The string to be converted\n * @returns The string linked by underscores\n */\nexport function camelToUnderscore(key: string) {\n\treturn key.replace(/[A-Z]/g, (match) => `_${match.toLowerCase()}`)\n}\n\n/**\n * Generate a discount code\n *\n * @param length Specify the number of characters, default 8, max 18\n * @returns A string of the specified number of characters consisting of uppercase letters and numbers.\n */\nexport function generateDiscount(length = 8) {\n\tconst end = -2\n\tconst start = end - Math.max(0, length)\n\n\treturn btoa(Date.now().toString()).slice(start, end).toUpperCase()\n}\n","/**\n * Remove tracking parameters from url\n *\n * @param url The url with tracking parameters\n * @returns The url after removing the tracking parameter\n */\nexport function removeTracking(url: string) {\n\t// Remove the hash part of the URL\n\tconst [baseUrl, hash] = url.split('#')\n\t// Remove the query parameter part of the URL\n\tconst [baseWithoutParams, params] = baseUrl.split('?')\n\n\t// List of common tracking parameters\n\tconst trackingParams = [\n\t\t'utm_source',\n\t\t'utm_medium',\n\t\t'utm_campaign',\n\t\t'utm_term',\n\t\t'utm_content',\n\t\t'gclid',\n\t\t'fbclid',\n\t\t'pk_campaign',\n\t\t'pk_kwd',\n\t\t'msclkid',\n\t\t'mc_cid',\n\t\t'mc_eid',\n\t\t'yclid',\n\t\t'dclid',\n\t\t'gclsrc',\n\t\t'msnclid',\n\t\t'msclkid',\n\t\t'cid',\n\t\t'trk',\n\t\t'cm_mmc',\n\t\t'cm_mmca',\n\t\t'cm_mmcb',\n\t\t'cm_lm',\n\t\t'sc_cid',\n\t\t'sc_ven',\n\t\t'sc_src',\n\t\t'sc_campaign',\n\t\t'sc_medium',\n\t\t'sc_cmp',\n\t\t'sc_content',\n\t\t'sc_kw',\n\t\t'sc_geo',\n\t\t'sc_device',\n\t\t'sc_placement',\n\t\t'utm_source',\n\t\t'utm_medium',\n\t\t'utm_campaign',\n\t\t'utm_content',\n\t\t'utm_term',\n\t\t'gclid',\n\t\t'dclid',\n\t\t'gclsrc',\n\t\t'fbclid',\n\t\t'msclkid',\n\t\t'yclid',\n\t\t'msnclid',\n\t\t'utm_id',\n\t\t'ga_cid',\n\t\t'utmclid',\n\t\t'vclid',\n\t\t'_openstat',\n\t\t'cm_mmc',\n\t\t'cm_mmca',\n\t\t'cm_mmcb',\n\t\t'cm_lm',\n\t\t'ncid',\n\t\t'openstat',\n\t\t'affiliate',\n\t\t'affiliate_id',\n\t\t'aff_id',\n\t\t'aff',\n\t\t'tid',\n\t\t'ct',\n\t\t'sourceid',\n\t\t'utm_source',\n\t\t'utm_medium',\n\t\t'utm_campaign',\n\t\t'utm_content',\n\t\t'utm_term',\n\t\t'gclid',\n\t\t'gclsrc',\n\t\t'dclid',\n\t\t'fbclid',\n\t\t'msclkid',\n\t\t'p_click',\n\t\t'urlid',\n\t\t'mkt_tok',\n\t\t's_cid',\n\t\t'piwik_campaign',\n\t\t'piwik_kwd',\n\t\t'piwik_medium',\n\t\t'piwik_source',\n\t\t'piwik_term',\n\t\t'ito',\n\t\t'__hstc',\n\t\t'__hssc',\n\t\t'__hssrc',\n\t\t'clid',\n\t\t'msclkid',\n\t\t'irgwc',\n\t\t'mc',\n\t\t'mclid',\n\t\t'mctag',\n\t\t'utmccn',\n\t\t'utmcid',\n\t\t'utmcmd',\n\t\t'utmctr',\n\t\t'utmgclid',\n\t\t'utmdt',\n\t\t'utme',\n\t\t'utmfl',\n\t\t'utmhid',\n\t\t'utmipc',\n\t\t'utmipn',\n\t\t'utmipr',\n\t\t'utmiva',\n\t\t'utmje',\n\t\t'utmju',\n\t\t'utmjv',\n\t\t'utmjw',\n\t\t'utmk',\n\t\t'utmls',\n\t\t'utmmi',\n\t\t'utmn',\n\t\t'utmp',\n\t\t'utmsa',\n\t\t'utmsc',\n\t\t'utmsr',\n\t\t'utmt',\n\t\t'utmtid',\n\t\t'utmtr',\n\t\t'utmtto',\n\t\t'utmuid',\n\t\t'utmv',\n\t\t'utmx',\n\t\t'utmz',\n\t\t'lr_referrer',\n\t\t'lr_aid',\n\t\t'lr_cust',\n\t\t'lr_ekw',\n\t\t'lr_medium',\n\t\t'lr_mid',\n\t\t'lr_source',\n\t\t'lr_term',\n\t\t'lr_url',\n\t\t'email_tracking_id',\n\t]\n\n\t// Partial splitting of query parameters into an array of key-value pairs\n\tconst cleanParams = params.split('&').reduce((acc: string[], param) => {\n\t\tconst [key] = param.split('=')\n\t\t// console.log(key)\n\n\t\tif (!trackingParams.includes(key)) {\n\t\t\tacc.push(param)\n\t\t}\n\t\treturn acc\n\t}, [])\n\n\t// Refactoring URL\n\tconst cleanedUrl = cleanParams.length > 0 ? `${baseWithoutParams}?${cleanParams.join('&')}` : baseWithoutParams\n\treturn hash ? `${cleanedUrl}#${hash}` : cleanedUrl\n}\n","import { cwd } from 'node:process'\n\n/**\n * Get the package path of the specified dependency\n * @param packageName Package name\n * @returns Package path\n */\nexport function getRootByPackageName(packageName: string) {\n\tif (typeof window !== 'undefined' && typeof window.document !== 'undefined')\n\t\tthrow Error('Only supported in the node runtime environment')\n\n\treturn `${cwd()}/node_modules/${packageName}`\n}\n","/**\n * Download of xlsx documents\n * @param value BlobPart value\n * @param filename File name\n */\nexport function downloadXlsx(value: BlobPart, filename: string) {\n\tconst link = document.createElement('a')\n\tconst blob = new Blob([value], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })\n\tlink.style.display = 'none'\n\tlink.href = URL.createObjectURL(blob)\n\tlink.download = `${filename}.xlsx`\n\t// Fixed not being able to start downloads in Firefox\n\tdocument.body.appendChild(link)\n\tlink.click()\n\tdocument.body.removeChild(link)\n}\n"]}