kr-corekit
Advanced tools
| /** | ||
| * μ«μλ λ¬Έμμ΄μ 3μ리λ§λ€ μ½€λ§(,)κ° ν¬ν¨λ λ¬Έμμ΄λ‘ λ³νν©λλ€. | ||
| * null, undefined, λλ μ ν¨νμ§ μμ κ°μ΄ λ€μ΄μ€λ©΄ λΉ λ¬Έμμ΄μ λ°νν©λλ€. | ||
| * | ||
| * @param value - μ½€λ§λ₯Ό μΆκ°ν μ«μ λλ λ¬Έμμ΄ | ||
| * @returns μ½€λ§κ° μΆκ°λ λ¬Έμμ΄ | ||
| * | ||
| * @example | ||
| * formatNumberWithCommas(1234567); // "1,234,567" | ||
| * formatNumberWithCommas(-12345.67); // "-12,345.67" | ||
| * formatNumberWithCommas("12345"); // "12,345" | ||
| */ | ||
| export default function formatNumberWithCommas(value: number | string | null | undefined): string; |
| /** | ||
| * μ«μλ λ¬Έμμ΄μ 3μ리λ§λ€ μ½€λ§(,)κ° ν¬ν¨λ λ¬Έμμ΄λ‘ λ³νν©λλ€. | ||
| * null, undefined, λλ μ ν¨νμ§ μμ κ°μ΄ λ€μ΄μ€λ©΄ λΉ λ¬Έμμ΄μ λ°νν©λλ€. | ||
| * | ||
| * @param value - μ½€λ§λ₯Ό μΆκ°ν μ«μ λλ λ¬Έμμ΄ | ||
| * @returns μ½€λ§κ° μΆκ°λ λ¬Έμμ΄ | ||
| * | ||
| * @example | ||
| * formatNumberWithCommas(1234567); // "1,234,567" | ||
| * formatNumberWithCommas(-12345.67); // "-12,345.67" | ||
| * formatNumberWithCommas("12345"); // "12,345" | ||
| */ | ||
| export default function formatNumberWithCommas(value) { | ||
| if (value === null || value === undefined || value === "") { | ||
| return ""; | ||
| } | ||
| const num = Number(value); | ||
| if (isNaN(num)) { | ||
| return String(value); | ||
| } | ||
| return num.toLocaleString("en-US"); | ||
| } |
| /** | ||
| * λ¬Έμμ΄μ URL μΉνμ μΈ slug ννλ‘ λ³νν©λλ€. | ||
| * 곡백μ λμ(-)λ‘ λ³ννκ³ , νΉμλ¬Έμλ₯Ό μ κ±°νλ©°, μλ¬Έμλ‘ λ³νν©λλ€. | ||
| * νκΈλ μ§μν©λλ€. | ||
| * | ||
| * @param text - slugλ‘ λ³νν λ¬Έμμ΄ | ||
| * @returns URL μΉνμ μΈ slug λ¬Έμμ΄ | ||
| */ | ||
| export default function slugify(text: string): string; |
| /** | ||
| * λ¬Έμμ΄μ URL μΉνμ μΈ slug ννλ‘ λ³νν©λλ€. | ||
| * 곡백μ λμ(-)λ‘ λ³ννκ³ , νΉμλ¬Έμλ₯Ό μ κ±°νλ©°, μλ¬Έμλ‘ λ³νν©λλ€. | ||
| * νκΈλ μ§μν©λλ€. | ||
| * | ||
| * @param text - slugλ‘ λ³νν λ¬Έμμ΄ | ||
| * @returns URL μΉνμ μΈ slug λ¬Έμμ΄ | ||
| */ | ||
| export default function slugify(text) { | ||
| return text | ||
| .toString() | ||
| .trim() | ||
| .toLowerCase() | ||
| .replace(/\s+/g, "-") | ||
| .replace(/[^a-zA-Z0-9κ°-ν£\-]+/g, "") | ||
| .replace(/\-\-+/g, "-") | ||
| .replace(/^-+/, "") | ||
| .replace(/-+$/, ""); | ||
| } |
+103
-90
@@ -7,5 +7,9 @@ function g(e) { | ||
| } | ||
| const B = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| function b(e) { | ||
| return e.toString().trim().toLowerCase().replace(/\s+/g, "-").replace(/[^a-zA-Z0-9κ°-ν£\-]+/g, "").replace(/\-\-+/g, "-").replace(/^-+/, "").replace(/-+$/, ""); | ||
| } | ||
| const H = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| escapeHtml: g, | ||
| slugify: b, | ||
| unescapeHtml: y | ||
@@ -16,6 +20,6 @@ }, Symbol.toStringTag, { value: "Module" })); | ||
| } | ||
| function p(e) { | ||
| function m(e) { | ||
| const t = { ...e }; | ||
| return Object.keys(t).forEach((r) => { | ||
| t[r] === null || t[r] === void 0 ? delete t[r] : d(t[r]) && (t[r] = p( | ||
| t[r] === null || t[r] === void 0 ? delete t[r] : d(t[r]) && (t[r] = m( | ||
| t[r] | ||
@@ -25,25 +29,25 @@ )); | ||
| } | ||
| function m(e) { | ||
| function p(e) { | ||
| const t = Object.getOwnPropertyNames(e); | ||
| for (const r of t) { | ||
| const n = e[r]; | ||
| typeof n == "object" && n !== null && m(n); | ||
| typeof n == "object" && n !== null && p(n); | ||
| } | ||
| return Object.freeze(e); | ||
| } | ||
| function b(e, t) { | ||
| function h(e, t) { | ||
| const { [e]: r, ...n } = t; | ||
| return n; | ||
| } | ||
| const Z = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| const F = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| clearNullProperties: p, | ||
| deepFreeze: m, | ||
| removeKey: b | ||
| clearNullProperties: m, | ||
| deepFreeze: p, | ||
| removeKey: h | ||
| }, Symbol.toStringTag, { value: "Module" })); | ||
| function h(e) { | ||
| function S(e) { | ||
| const t = document.cookie.match(new RegExp("(^| )" + encodeURIComponent(e) + "=([^;]+)")); | ||
| return t ? decodeURIComponent(t[2]) : ""; | ||
| } | ||
| function S(e, t, r = {}) { | ||
| function _(e, t, r = {}) { | ||
| const { | ||
@@ -65,26 +69,26 @@ path: n = "/", | ||
| } | ||
| const H = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| const J = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| getCookie: h, | ||
| setCookie: S | ||
| getCookie: S, | ||
| setCookie: _ | ||
| }, Symbol.toStringTag, { value: "Module" })); | ||
| function _(...e) { | ||
| function $(...e) { | ||
| return e.reduce((t, r) => t + r, 0); | ||
| } | ||
| function $(...e) { | ||
| function x(...e) { | ||
| return e.length === 0 ? 0 : e.reduce((t, r) => t - r); | ||
| } | ||
| function x(...e) { | ||
| function w(...e) { | ||
| return e.reduce((t, r) => t * r, 1); | ||
| } | ||
| const F = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| const Q = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| multiply: x, | ||
| subtract: $, | ||
| sum: _ | ||
| multiply: w, | ||
| subtract: x, | ||
| sum: $ | ||
| }, Symbol.toStringTag, { value: "Module" })); | ||
| function w(e) { | ||
| function O(e) { | ||
| return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e); | ||
| } | ||
| function O(e) { | ||
| function j(e) { | ||
| try { | ||
@@ -97,3 +101,3 @@ const t = new URL(e); | ||
| } | ||
| function j(e) { | ||
| function U(e) { | ||
| return /^(?!:\/\/)([a-z0-9-]+\.)+[a-z]{2,}$/.test(e); | ||
@@ -104,3 +108,3 @@ } | ||
| } | ||
| function U(e, t) { | ||
| function R(e, t) { | ||
| const { | ||
@@ -118,14 +122,14 @@ minLength: r, | ||
| } | ||
| const J = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| const V = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| checkBase64: P, | ||
| checkDomain: j, | ||
| checkEmail: w, | ||
| checkHttpUrl: O, | ||
| checkPassword: U | ||
| checkDomain: U, | ||
| checkEmail: O, | ||
| checkHttpUrl: j, | ||
| checkPassword: R | ||
| }, Symbol.toStringTag, { value: "Module" })); | ||
| function R(e) { | ||
| function T(e) { | ||
| return e == null || typeof e == "number" && isNaN(e) ? !0 : typeof e == "string" || Array.isArray(e) ? e.length === 0 : e instanceof Date ? isNaN(e.getTime()) : typeof e == "symbol" ? e.description === void 0 : e instanceof Set || e instanceof Map ? e.size === 0 : typeof e == "object" && e.constructor === Object ? Object.keys(e).length === 0 : !1; | ||
| } | ||
| function T(e) { | ||
| function C(e) { | ||
| return e === null; | ||
@@ -153,9 +157,9 @@ } | ||
| } | ||
| function C(e, { convertSpecialChars: t = !0 } = {}) { | ||
| function A(e, { convertSpecialChars: t = !0 } = {}) { | ||
| return e == null ? e : btoa(t ? encodeURIComponent(e) : encodeURI(e)); | ||
| } | ||
| function A(e, { convertSpecialChars: t = !0 } = {}) { | ||
| function M(e, { convertSpecialChars: t = !0 } = {}) { | ||
| return e == null ? e : t ? decodeURIComponent(atob(e)) : decodeURI(atob(e)); | ||
| } | ||
| function M(e, t = 300) { | ||
| function N(e, t = 300) { | ||
| let r; | ||
@@ -166,3 +170,3 @@ return (...n) => { | ||
| } | ||
| function v(e, t = 300) { | ||
| function k(e, t = 300) { | ||
| let r = !1; | ||
@@ -173,3 +177,3 @@ return (...n) => { | ||
| } | ||
| async function k(e, t = 3) { | ||
| async function v(e, t = 3) { | ||
| let r = 0; | ||
@@ -239,16 +243,16 @@ const n = async () => { | ||
| } | ||
| }, Q = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| }, W = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| copyToClipboard: z, | ||
| debounce: M, | ||
| decodeBase64: A, | ||
| encodeBase64: C, | ||
| isEmpty: R, | ||
| isNull: T, | ||
| retry: k, | ||
| debounce: N, | ||
| decodeBase64: M, | ||
| encodeBase64: A, | ||
| isEmpty: T, | ||
| isNull: C, | ||
| retry: v, | ||
| sleep: I, | ||
| storage: E, | ||
| throttle: v | ||
| throttle: k | ||
| }, Symbol.toStringTag, { value: "Module" })); | ||
| function N() { | ||
| function L() { | ||
| if (window && typeof window.URLSearchParams > "u") | ||
@@ -261,9 +265,9 @@ throw new Error("URLSearchParams is not supported in this environment."); | ||
| } | ||
| const V = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| const K = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| getAllQuery: N | ||
| }, Symbol.toStringTag, { value: "Module" })), K = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| getAllQuery: L | ||
| }, Symbol.toStringTag, { value: "Module" })), G = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| isPlainObject: d | ||
| }, Symbol.toStringTag, { value: "Module" })), L = [ | ||
| }, Symbol.toStringTag, { value: "Module" })), q = [ | ||
| // μμΈ μ§μλ²νΈ (02) - 9μ리 | ||
@@ -302,5 +306,5 @@ { | ||
| ]; | ||
| function q(e) { | ||
| function D(e) { | ||
| if (!e) return ""; | ||
| const t = e.replace(/\D/g, ""), r = L.find( | ||
| const t = e.replace(/\D/g, ""), r = q.find( | ||
| (n) => (!n.prefix || t.startsWith(n.prefix)) && t.length === n.length | ||
@@ -310,54 +314,63 @@ ); | ||
| } | ||
| const W = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| function B(e) { | ||
| if (e == null || e === "") | ||
| return ""; | ||
| const t = Number(e); | ||
| return isNaN(t) ? String(e) : t.toLocaleString("en-US"); | ||
| } | ||
| const X = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| formatPhoneNumber: q | ||
| formatNumberWithCommas: B, | ||
| formatPhoneNumber: D | ||
| }, Symbol.toStringTag, { value: "Module" })); | ||
| function D() { | ||
| function Z() { | ||
| const e = window.navigator.userAgent, t = /iPhone|iPad|iPod/i.test(e), r = /Android/i.test(e), n = /(iPad)|(tablet)|(android(?!.*mobi))/i.test(e), i = !n && /Mobi|iP(hone|od)|Android|BlackBerry|IEMobile|Opera Mini/i.test(e); | ||
| return { isMobile: i, isTablet: n, isDesktop: !i && !n, isIOS: t, isAndroid: r }; | ||
| } | ||
| const G = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| const Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ | ||
| __proto__: null, | ||
| getDevice: D | ||
| getDevice: Z | ||
| }, Symbol.toStringTag, { value: "Module" })); | ||
| export { | ||
| P as checkBase64, | ||
| j as checkDomain, | ||
| w as checkEmail, | ||
| O as checkHttpUrl, | ||
| U as checkPassword, | ||
| p as clearNullProperties, | ||
| Q as commonUtil, | ||
| H as cookieUtil, | ||
| U as checkDomain, | ||
| O as checkEmail, | ||
| j as checkHttpUrl, | ||
| R as checkPassword, | ||
| m as clearNullProperties, | ||
| W as commonUtil, | ||
| J as cookieUtil, | ||
| z as copyToClipboard, | ||
| M as debounce, | ||
| A as decodeBase64, | ||
| m as deepFreeze, | ||
| G as deviceUtil, | ||
| C as encodeBase64, | ||
| N as debounce, | ||
| M as decodeBase64, | ||
| p as deepFreeze, | ||
| Y as deviceUtil, | ||
| A as encodeBase64, | ||
| g as escapeHtml, | ||
| q as formatPhoneNumber, | ||
| W as formatUtil, | ||
| N as getAllQuery, | ||
| h as getCookie, | ||
| D as getDevice, | ||
| R as isEmpty, | ||
| T as isNull, | ||
| B as formatNumberWithCommas, | ||
| D as formatPhoneNumber, | ||
| X as formatUtil, | ||
| L as getAllQuery, | ||
| S as getCookie, | ||
| Z as getDevice, | ||
| T as isEmpty, | ||
| C as isNull, | ||
| d as isPlainObject, | ||
| x as multiply, | ||
| F as numberUtil, | ||
| Z as objectUtil, | ||
| b as removeKey, | ||
| k as retry, | ||
| V as searchQueryUtil, | ||
| S as setCookie, | ||
| w as multiply, | ||
| Q as numberUtil, | ||
| F as objectUtil, | ||
| h as removeKey, | ||
| v as retry, | ||
| K as searchQueryUtil, | ||
| _ as setCookie, | ||
| I as sleep, | ||
| b as slugify, | ||
| E as storage, | ||
| B as stringUtil, | ||
| $ as subtract, | ||
| _ as sum, | ||
| v as throttle, | ||
| K as typeUtil, | ||
| H as stringUtil, | ||
| x as subtract, | ||
| $ as sum, | ||
| k as throttle, | ||
| G as typeUtil, | ||
| y as unescapeHtml, | ||
| J as validationUtil | ||
| V as validationUtil | ||
| }; |
@@ -1,1 +0,1 @@ | ||
| (function(r,u){typeof exports=="object"&&typeof module<"u"?u(exports):typeof define=="function"&&define.amd?define(["exports"],u):(r=typeof globalThis<"u"?globalThis:r||self,u(r["kr-corekit"]={}))})(this,(function(r){"use strict";function u(e){return e==null?e:e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function b(e){return e==null?e:e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(///g,"/")}const H=Object.freeze(Object.defineProperty({__proto__:null,escapeHtml:u,unescapeHtml:b},Symbol.toStringTag,{value:"Module"}));function m(e){return typeof e!="object"||e===null?!1:Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null}function g(e){const t={...e};return Object.keys(t).forEach(n=>{t[n]===null||t[n]===void 0?delete t[n]:m(t[n])&&(t[n]=g(t[n]))}),t}function p(e){const t=Object.getOwnPropertyNames(e);for(const n of t){const o=e[n];typeof o=="object"&&o!==null&&p(o)}return Object.freeze(e)}function h(e,t){const{[e]:n,...o}=t;return o}const Z=Object.freeze(Object.defineProperty({__proto__:null,clearNullProperties:g,deepFreeze:p,removeKey:h},Symbol.toStringTag,{value:"Module"}));function S(e){const t=document.cookie.match(new RegExp("(^| )"+encodeURIComponent(e)+"=([^;]+)"));return t?decodeURIComponent(t[2]):""}function _(e,t,n={}){const{path:o="/",expires:c,maxAge:f,afterExpires:i,domain:s,secure:y,sameSite:d}=n;let l=`${encodeURIComponent(e)}=${encodeURIComponent(t)}; path=${o};`;if(c&&(l+=` expires=${c.toUTCString()};`),f&&(l+=` max-age=${f};`),i){let a=0;i.year?a+=parseInt(i.year,10)*365*24*60*60:i.month?a+=parseInt(i.month,10)*30*24*60*60:i.day?a+=parseInt(i.day,10)*24*60*60:i.hour?a+=parseInt(i.hour,10)*60*60:i.minute?a+=parseInt(i.minute,10)*60:i.second&&(a+=parseInt(i.second,10)),l+=` max-age=${a};`}s&&(l+=` domain=${s};`),y&&(l+=" secure;"),d&&(l+=` samesite=${d};`),document.cookie=l}const F=Object.freeze(Object.defineProperty({__proto__:null,getCookie:S,setCookie:_},Symbol.toStringTag,{value:"Module"}));function $(...e){return e.reduce((t,n)=>t+n,0)}function O(...e){return e.length===0?0:e.reduce((t,n)=>t-n)}function w(...e){return e.reduce((t,n)=>t*n,1)}const Q=Object.freeze(Object.defineProperty({__proto__:null,multiply:w,subtract:O,sum:$},Symbol.toStringTag,{value:"Module"}));function j(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function P(e){try{const t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}function U(e){return/^(?!:\/\/)([a-z0-9-]+\.)+[a-z]{2,}$/.test(e)}function T(e){return e.trim()===""?!1:/^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=)?$/i.test(e)}function R(e,t){const{minLength:n,maxLength:o,requireUppercase:c=!1,requireLowercase:f=!1,requireNumber:i=!1,requireSpecialChar:s=!1}=t||{};if(n!==void 0&&e.length<n||o!==void 0&&e.length>o)return!1;const y=c?/[A-Z]/.test(e):!0,d=f?/[a-z]/.test(e):!0,l=i?/\d/.test(e):!0,a=s?/[!@#$%^&*(),.?":{}|<>]/.test(e):!0;return y&&d&&l&&a}const x=Object.freeze(Object.defineProperty({__proto__:null,checkBase64:T,checkDomain:U,checkEmail:j,checkHttpUrl:P,checkPassword:R},Symbol.toStringTag,{value:"Module"}));function k(e){return e==null||typeof e=="number"&&isNaN(e)?!0:typeof e=="string"||Array.isArray(e)?e.length===0:e instanceof Date?isNaN(e.getTime()):typeof e=="symbol"?e.description===void 0:e instanceof Set||e instanceof Map?e.size===0:typeof e=="object"&&e.constructor===Object?Object.keys(e).length===0:!1}function C(e){return e===null}function I(e){const t=Math.max(0,e|0);return new Promise(n=>setTimeout(n,t))}async function v(e){try{if(e.length>1e6)throw new Error("Text too large to copy");return await navigator.clipboard.writeText(e),!0}catch{const n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.top="-9999px",n.style.left="-9999px",document.body.appendChild(n),n.focus(),n.select();try{const o=document.execCommand("copy");return document.body.removeChild(n),o}catch{return document.body.removeChild(n),!1}}}function z(e,{convertSpecialChars:t=!0}={}){return e==null?e:btoa(t?encodeURIComponent(e):encodeURI(e))}function A(e,{convertSpecialChars:t=!0}={}){return e==null?e:t?decodeURIComponent(atob(e)):decodeURI(atob(e))}function M(e,t=300){let n;return(...o)=>{clearTimeout(n),n=setTimeout(()=>e(...o),t)}}function E(e,t=300){let n=!1;return(...o)=>{n||(e(...o),n=!0,setTimeout(()=>n=!1,t))}}async function N(e,t=3){let n=0;const o=async()=>{try{return await e()}catch(c){if(n++,n>=t)throw c;return o()}};return o()}const B={set(e,t){if(typeof window>"u"){console.warn(`localStorage is not available in SSR environment. Set operation for key "${e}" was ignored.`);return}try{const n=JSON.stringify(t);window.localStorage.setItem(e,n)}catch(n){console.error(`Error setting item "${e}" to localStorage`,n)}},get(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(e);return t===null?null:JSON.parse(t)}catch(t){return console.error(`Error getting item "${e}" from localStorage`,t),window.localStorage.removeItem(e),null}},remove(e){if(typeof window>"u"){console.warn(`localStorage is not available in SSR environment. Remove operation for key "${e}" was ignored.`);return}try{window.localStorage.removeItem(e)}catch(t){console.error(`Error removing item "${e}" from localStorage`,t)}}},J=Object.freeze(Object.defineProperty({__proto__:null,copyToClipboard:v,debounce:M,decodeBase64:A,encodeBase64:z,isEmpty:k,isNull:C,retry:N,sleep:I,storage:B,throttle:E},Symbol.toStringTag,{value:"Module"}));function D(){if(window&&typeof window.URLSearchParams>"u")throw new Error("URLSearchParams is not supported in this environment.");const e=new URLSearchParams(window.location.search),t={};for(const[n,o]of e.entries())t[n]?Array.isArray(t[n])?t[n].push(o):t[n]=[t[n],o]:t[n]=o;return t}const K=Object.freeze(Object.defineProperty({__proto__:null,getAllQuery:D},Symbol.toStringTag,{value:"Module"})),V=Object.freeze(Object.defineProperty({__proto__:null,isPlainObject:m},Symbol.toStringTag,{value:"Module"})),W=[{prefix:"02",length:9,format:/(\d{2})(\d{3})(\d{4})/,replacement:"$1-$2-$3"},{prefix:"02",length:10,format:/(\d{2})(\d{4})(\d{4})/,replacement:"$1-$2-$3"},{length:8,format:/(\d{4})(\d{4})/,replacement:"$1-$2"},{length:10,format:/(\d{3})(\d{3})(\d{4})/,replacement:"$1-$2-$3"},{length:11,format:/(\d{3})(\d{4})(\d{4})/,replacement:"$1-$2-$3"}];function L(e){if(!e)return"";const t=e.replace(/\D/g,""),n=W.find(o=>(!o.prefix||t.startsWith(o.prefix))&&t.length===o.length);return n?t.replace(n.format,n.replacement):t}const G=Object.freeze(Object.defineProperty({__proto__:null,formatPhoneNumber:L},Symbol.toStringTag,{value:"Module"}));function q(){const e=window.navigator.userAgent,t=/iPhone|iPad|iPod/i.test(e),n=/Android/i.test(e),o=/(iPad)|(tablet)|(android(?!.*mobi))/i.test(e),c=!o&&/Mobi|iP(hone|od)|Android|BlackBerry|IEMobile|Opera Mini/i.test(e);return{isMobile:c,isTablet:o,isDesktop:!c&&!o,isIOS:t,isAndroid:n}}const X=Object.freeze(Object.defineProperty({__proto__:null,getDevice:q},Symbol.toStringTag,{value:"Module"}));r.checkBase64=T,r.checkDomain=U,r.checkEmail=j,r.checkHttpUrl=P,r.checkPassword=R,r.clearNullProperties=g,r.commonUtil=J,r.cookieUtil=F,r.copyToClipboard=v,r.debounce=M,r.decodeBase64=A,r.deepFreeze=p,r.deviceUtil=X,r.encodeBase64=z,r.escapeHtml=u,r.formatPhoneNumber=L,r.formatUtil=G,r.getAllQuery=D,r.getCookie=S,r.getDevice=q,r.isEmpty=k,r.isNull=C,r.isPlainObject=m,r.multiply=w,r.numberUtil=Q,r.objectUtil=Z,r.removeKey=h,r.retry=N,r.searchQueryUtil=K,r.setCookie=_,r.sleep=I,r.storage=B,r.stringUtil=H,r.subtract=O,r.sum=$,r.throttle=E,r.typeUtil=V,r.unescapeHtml=b,r.validationUtil=x,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})})); | ||
| (function(r,u){typeof exports=="object"&&typeof module<"u"?u(exports):typeof define=="function"&&define.amd?define(["exports"],u):(r=typeof globalThis<"u"?globalThis:r||self,u(r["kr-corekit"]={}))})(this,(function(r){"use strict";function u(e){return e==null?e:e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function b(e){return e==null?e:e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(///g,"/")}function h(e){return e.toString().trim().toLowerCase().replace(/\s+/g,"-").replace(/[^a-zA-Z0-9κ°-ν£\-]+/g,"").replace(/\-\-+/g,"-").replace(/^-+/,"").replace(/-+$/,"")}const F=Object.freeze(Object.defineProperty({__proto__:null,escapeHtml:u,slugify:h,unescapeHtml:b},Symbol.toStringTag,{value:"Module"}));function m(e){return typeof e!="object"||e===null?!1:Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null}function g(e){const t={...e};return Object.keys(t).forEach(n=>{t[n]===null||t[n]===void 0?delete t[n]:m(t[n])&&(t[n]=g(t[n]))}),t}function p(e){const t=Object.getOwnPropertyNames(e);for(const n of t){const o=e[n];typeof o=="object"&&o!==null&&p(o)}return Object.freeze(e)}function S(e,t){const{[e]:n,...o}=t;return o}const Q=Object.freeze(Object.defineProperty({__proto__:null,clearNullProperties:g,deepFreeze:p,removeKey:S},Symbol.toStringTag,{value:"Module"}));function _(e){const t=document.cookie.match(new RegExp("(^| )"+encodeURIComponent(e)+"=([^;]+)"));return t?decodeURIComponent(t[2]):""}function $(e,t,n={}){const{path:o="/",expires:c,maxAge:f,afterExpires:i,domain:s,secure:y,sameSite:d}=n;let l=`${encodeURIComponent(e)}=${encodeURIComponent(t)}; path=${o};`;if(c&&(l+=` expires=${c.toUTCString()};`),f&&(l+=` max-age=${f};`),i){let a=0;i.year?a+=parseInt(i.year,10)*365*24*60*60:i.month?a+=parseInt(i.month,10)*30*24*60*60:i.day?a+=parseInt(i.day,10)*24*60*60:i.hour?a+=parseInt(i.hour,10)*60*60:i.minute?a+=parseInt(i.minute,10)*60:i.second&&(a+=parseInt(i.second,10)),l+=` max-age=${a};`}s&&(l+=` domain=${s};`),y&&(l+=" secure;"),d&&(l+=` samesite=${d};`),document.cookie=l}const W=Object.freeze(Object.defineProperty({__proto__:null,getCookie:_,setCookie:$},Symbol.toStringTag,{value:"Module"}));function w(...e){return e.reduce((t,n)=>t+n,0)}function O(...e){return e.length===0?0:e.reduce((t,n)=>t-n)}function j(...e){return e.reduce((t,n)=>t*n,1)}const J=Object.freeze(Object.defineProperty({__proto__:null,multiply:j,subtract:O,sum:w},Symbol.toStringTag,{value:"Module"}));function P(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function U(e){try{const t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}function T(e){return/^(?!:\/\/)([a-z0-9-]+\.)+[a-z]{2,}$/.test(e)}function C(e){return e.trim()===""?!1:/^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=)?$/i.test(e)}function R(e,t){const{minLength:n,maxLength:o,requireUppercase:c=!1,requireLowercase:f=!1,requireNumber:i=!1,requireSpecialChar:s=!1}=t||{};if(n!==void 0&&e.length<n||o!==void 0&&e.length>o)return!1;const y=c?/[A-Z]/.test(e):!0,d=f?/[a-z]/.test(e):!0,l=i?/\d/.test(e):!0,a=s?/[!@#$%^&*(),.?":{}|<>]/.test(e):!0;return y&&d&&l&&a}const K=Object.freeze(Object.defineProperty({__proto__:null,checkBase64:C,checkDomain:T,checkEmail:P,checkHttpUrl:U,checkPassword:R},Symbol.toStringTag,{value:"Module"}));function k(e){return e==null||typeof e=="number"&&isNaN(e)?!0:typeof e=="string"||Array.isArray(e)?e.length===0:e instanceof Date?isNaN(e.getTime()):typeof e=="symbol"?e.description===void 0:e instanceof Set||e instanceof Map?e.size===0:typeof e=="object"&&e.constructor===Object?Object.keys(e).length===0:!1}function z(e){return e===null}function I(e){const t=Math.max(0,e|0);return new Promise(n=>setTimeout(n,t))}async function N(e){try{if(e.length>1e6)throw new Error("Text too large to copy");return await navigator.clipboard.writeText(e),!0}catch{const n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.top="-9999px",n.style.left="-9999px",document.body.appendChild(n),n.focus(),n.select();try{const o=document.execCommand("copy");return document.body.removeChild(n),o}catch{return document.body.removeChild(n),!1}}}function A(e,{convertSpecialChars:t=!0}={}){return e==null?e:btoa(t?encodeURIComponent(e):encodeURI(e))}function M(e,{convertSpecialChars:t=!0}={}){return e==null?e:t?decodeURIComponent(atob(e)):decodeURI(atob(e))}function v(e,t=300){let n;return(...o)=>{clearTimeout(n),n=setTimeout(()=>e(...o),t)}}function E(e,t=300){let n=!1;return(...o)=>{n||(e(...o),n=!0,setTimeout(()=>n=!1,t))}}async function L(e,t=3){let n=0;const o=async()=>{try{return await e()}catch(c){if(n++,n>=t)throw c;return o()}};return o()}const B={set(e,t){if(typeof window>"u"){console.warn(`localStorage is not available in SSR environment. Set operation for key "${e}" was ignored.`);return}try{const n=JSON.stringify(t);window.localStorage.setItem(e,n)}catch(n){console.error(`Error setting item "${e}" to localStorage`,n)}},get(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(e);return t===null?null:JSON.parse(t)}catch(t){return console.error(`Error getting item "${e}" from localStorage`,t),window.localStorage.removeItem(e),null}},remove(e){if(typeof window>"u"){console.warn(`localStorage is not available in SSR environment. Remove operation for key "${e}" was ignored.`);return}try{window.localStorage.removeItem(e)}catch(t){console.error(`Error removing item "${e}" from localStorage`,t)}}},V=Object.freeze(Object.defineProperty({__proto__:null,copyToClipboard:N,debounce:v,decodeBase64:M,encodeBase64:A,isEmpty:k,isNull:z,retry:L,sleep:I,storage:B,throttle:E},Symbol.toStringTag,{value:"Module"}));function D(){if(window&&typeof window.URLSearchParams>"u")throw new Error("URLSearchParams is not supported in this environment.");const e=new URLSearchParams(window.location.search),t={};for(const[n,o]of e.entries())t[n]?Array.isArray(t[n])?t[n].push(o):t[n]=[t[n],o]:t[n]=o;return t}const x=Object.freeze(Object.defineProperty({__proto__:null,getAllQuery:D},Symbol.toStringTag,{value:"Module"})),G=Object.freeze(Object.defineProperty({__proto__:null,isPlainObject:m},Symbol.toStringTag,{value:"Module"})),X=[{prefix:"02",length:9,format:/(\d{2})(\d{3})(\d{4})/,replacement:"$1-$2-$3"},{prefix:"02",length:10,format:/(\d{2})(\d{4})(\d{4})/,replacement:"$1-$2-$3"},{length:8,format:/(\d{4})(\d{4})/,replacement:"$1-$2"},{length:10,format:/(\d{3})(\d{3})(\d{4})/,replacement:"$1-$2-$3"},{length:11,format:/(\d{3})(\d{4})(\d{4})/,replacement:"$1-$2-$3"}];function q(e){if(!e)return"";const t=e.replace(/\D/g,""),n=X.find(o=>(!o.prefix||t.startsWith(o.prefix))&&t.length===o.length);return n?t.replace(n.format,n.replacement):t}function H(e){if(e==null||e==="")return"";const t=Number(e);return isNaN(t)?String(e):t.toLocaleString("en-US")}const Y=Object.freeze(Object.defineProperty({__proto__:null,formatNumberWithCommas:H,formatPhoneNumber:q},Symbol.toStringTag,{value:"Module"}));function Z(){const e=window.navigator.userAgent,t=/iPhone|iPad|iPod/i.test(e),n=/Android/i.test(e),o=/(iPad)|(tablet)|(android(?!.*mobi))/i.test(e),c=!o&&/Mobi|iP(hone|od)|Android|BlackBerry|IEMobile|Opera Mini/i.test(e);return{isMobile:c,isTablet:o,isDesktop:!c&&!o,isIOS:t,isAndroid:n}}const ee=Object.freeze(Object.defineProperty({__proto__:null,getDevice:Z},Symbol.toStringTag,{value:"Module"}));r.checkBase64=C,r.checkDomain=T,r.checkEmail=P,r.checkHttpUrl=U,r.checkPassword=R,r.clearNullProperties=g,r.commonUtil=V,r.cookieUtil=W,r.copyToClipboard=N,r.debounce=v,r.decodeBase64=M,r.deepFreeze=p,r.deviceUtil=ee,r.encodeBase64=A,r.escapeHtml=u,r.formatNumberWithCommas=H,r.formatPhoneNumber=q,r.formatUtil=Y,r.getAllQuery=D,r.getCookie=_,r.getDevice=Z,r.isEmpty=k,r.isNull=z,r.isPlainObject=m,r.multiply=j,r.numberUtil=J,r.objectUtil=Q,r.removeKey=S,r.retry=L,r.searchQueryUtil=x,r.setCookie=$,r.sleep=I,r.slugify=h,r.storage=B,r.stringUtil=F,r.subtract=O,r.sum=w,r.throttle=E,r.typeUtil=G,r.unescapeHtml=b,r.validationUtil=K,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})})); |
| export { default as formatPhoneNumber } from "./formatPhoneNumber"; | ||
| export { default as formatNumberWithCommas } from "./formatNumberWithCommas"; |
| export { default as formatPhoneNumber } from "./formatPhoneNumber"; | ||
| export { default as formatNumberWithCommas } from "./formatNumberWithCommas"; |
@@ -1,2 +0,3 @@ | ||
| export { default as escapeHtml } from './escapeHtml'; | ||
| export { default as unescapeHtml } from './unescapeHtml'; | ||
| export { default as escapeHtml } from "./escapeHtml"; | ||
| export { default as unescapeHtml } from "./unescapeHtml"; | ||
| export { default as slugify } from "./slugify"; |
@@ -1,2 +0,3 @@ | ||
| export { default as escapeHtml } from './escapeHtml'; | ||
| export { default as unescapeHtml } from './unescapeHtml'; | ||
| export { default as escapeHtml } from "./escapeHtml"; | ||
| export { default as unescapeHtml } from "./unescapeHtml"; | ||
| export { default as slugify } from "./slugify"; |
+1
-1
| { | ||
| "name": "kr-corekit", | ||
| "version": "0.0.11", | ||
| "version": "0.1.0", | ||
| "description": "A lightweight and modern utility toolkit for JavaScript and TypeScript. kr-corekit provides essential functions for strings, arrays, objects, and more, designed for simplicity and productivity.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
+4
-0
@@ -44,2 +44,3 @@ # kr-corekit | ||
| const unescaped = stringUtil.unescapeHtml("<div>Hello</div>"); | ||
| const slug = stringUtil.slugify("Hello World! μλ νμΈμ"); // "hello-world-μλ νμΈμ" | ||
@@ -154,2 +155,3 @@ // Object utilities | ||
| - `unescapeHtml(str: string): string` - Unescapes HTML entities | ||
| - `slugify(text: string): string` - Converts a string to URL-friendly slug format. Replaces spaces with hyphens, removes special characters, converts to lowercase, and supports Korean characters (e.g., "Hello World! μλ " β "hello-world-μλ ") | ||
@@ -171,2 +173,3 @@ ### ObjectUtil | ||
| - `formatPhoneNumber(phone: string): string` - Formats a phone number string to a standard format (e.g., "010-1234-5678") | ||
| - `formatNumberWithCommas(value: number | string | null | undefined): string` - Converts numbers or strings to comma-separated format (e.g., "1,234,567"). Returns empty string for null/undefined values. | ||
@@ -218,2 +221,3 @@ ### ValidationUtil | ||
| - `retry<T>(fn: () => Promise<T>, loop?: number): Promise<T>` - Retries an asynchronous function up to the specified number of times (default 3) if it fails. Automatically re-attempts on error and returns the result of the first successful execution, or throws the last error if all retries fail. | ||
| ### SearchQueryUtil | ||
@@ -220,0 +224,0 @@ |
62741
6.52%89
4.71%1119
7.91%243
1.67%