@titocandradev/neatcore 0.2.5 → 0.2.7

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.
package/README.md CHANGED
@@ -140,3 +140,9 @@ Because small utilities are often underestimated.
140
140
 
141
141
  NeatCore is designed as a strongly-typed engineering utility foundation
142
142
  --- not just another helper library.
143
+
144
+ ## Documentation
145
+
146
+ Read full API Design Guideline here:
147
+
148
+ 👉 https://github.com/tcandra24/neat-core/blob/main/docs/API_DESIGN_GUIDELINE.md
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';function u(e,t){if(t<=0)return [];let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function s(e){return [...new Set(e)]}function c(e,t){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{e(...n);},t);}}function l(e,t,r){let n=t.split("."),o=e;for(let i of n){if(o==null)return r;o=o[i];}return o===void 0?r:o}function m(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function x(e){return e?e.trim().split(/\s+/).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "):""}function y(e){return e?e.trim().replace(/[^a-zA-Z0-9]+(.)?/g,(t,r)=>r?r.toUpperCase():"").replace(/^(.)/,t=>t.toLowerCase()):""}function d(e){return e?e.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase():""}exports.capitalize=m;exports.capitalizeWords=x;exports.chunk=u;exports.debounce=c;exports.get=l;exports.toCamelCase=y;exports.toKebabCase=d;exports.unique=s;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';function u(e,r){if(r<=0)return [];let t=[];for(let n=0;n<e.length;n+=r)t.push(e.slice(n,n+r));return t}function c(e){return [...new Set(e)]}function p(e,r){let t=new Set;return e.filter(n=>{let o=n[r];return t.has(o)?false:(t.add(o),true)})}function T(e,r){return e.reduce((t,n)=>{let o=String(n[r]);return t[o]||(t[o]=[]),t[o].push(n),t},{})}function y(e,r){let t;return function(...n){clearTimeout(t),t=setTimeout(()=>{e(...n);},r);}}function g(e){return Object.keys(e).length===0}function m(e,r){let t={};for(let n of r)n in e&&(t[n]=e[n]);return t}function k(e,r){let t={...e};for(let n of r)delete t[n];return t}function C(e,r,t){let n=r.split("."),o=e;for(let i of n){if(o==null)return t;o=o[i];}return o===void 0?t:o}function w(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function P(e){return e?e.trim().split(/\s+/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" "):""}function j(e){return e?e.trim().replace(/[^a-zA-Z0-9]+(.)?/g,(r,t)=>t?t.toUpperCase():"").replace(/^(.)/,r=>r.toLowerCase()):""}function S(e){return e?e.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase():""}exports.capitalize=w;exports.capitalizeWords=P;exports.chunk=u;exports.debounce=y;exports.get=C;exports.groupBy=T;exports.isEmptyObject=g;exports.omit=k;exports.pick=m;exports.toCamelCase=j;exports.toKebabCase=S;exports.unique=c;exports.uniqueBy=p;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/array/chunk.ts","../src/array/unique.ts","../src/function/debounce.ts","../src/object/get.ts","../src/string/capitalize.ts","../src/string/capitalizeWords.ts","../src/string/toCamelCase.ts","../src/string/toKebabCase.ts"],"names":["chunk","arr","size","result","i","unique","array","debounce","fn","delay","timeout","args","get","obj","path","defaultValue","keys","key","capitalize","str","capitalizeWords","word","toCamelCase","_","char","match","toKebabCase"],"mappings":"aAAO,SAASA,CAAAA,CAASC,EAAUC,CAAAA,CAAqB,CACtD,GAAIA,CAAAA,EAAQ,CAAA,CAAG,OAAO,EAAC,CAEvB,IAAMC,EAAgB,EAAC,CAEvB,QAASC,CAAAA,CAAI,CAAA,CAAGA,EAAIH,CAAAA,CAAI,MAAA,CAAQG,CAAAA,EAAKF,CAAAA,CACnCC,CAAAA,CAAO,IAAA,CAAKF,EAAI,KAAA,CAAMG,CAAAA,CAAGA,EAAIF,CAAI,CAAC,EAGpC,OAAOC,CACT,CCVO,SAASE,CAAAA,CAAUC,CAAAA,CAAiB,CACzC,OAAO,CAAC,GAAG,IAAI,GAAA,CAAIA,CAAK,CAAC,CAC3B,CCFO,SAASC,CAAAA,CAA6CC,CAAAA,CAAOC,EAAe,CACjF,IAAIC,EAEJ,OAAO,SAAA,GAAaC,EAAqB,CACvC,YAAA,CAAaD,CAAO,CAAA,CAEpBA,CAAAA,CAAU,UAAA,CAAW,IAAM,CACzBF,CAAAA,CAAG,GAAGG,CAAI,EACZ,EAAGF,CAAK,EACV,CACF,CCVO,SAASG,CAAAA,CAAIC,EAAUC,CAAAA,CAAcC,CAAAA,CAAoB,CAC9D,IAAMC,CAAAA,CAAOF,EAAK,KAAA,CAAM,GAAG,CAAA,CACvBX,CAAAA,CAASU,CAAAA,CAEb,IAAA,IAAWI,KAAOD,CAAAA,CAAM,CACtB,GAAIb,CAAAA,EAAU,IAAA,CAAM,OAAOY,CAAAA,CAC3BZ,CAAAA,CAASA,CAAAA,CAAOc,CAAG,EACrB,CAEA,OAAOd,CAAAA,GAAW,MAAA,CAAYY,EAAeZ,CAC/C,CCVO,SAASe,CAAAA,CAAWC,CAAAA,CAAqB,CAC9C,OAAKA,CAAAA,CACEA,CAAAA,CAAI,OAAO,CAAC,CAAA,CAAE,aAAY,CAAIA,CAAAA,CAAI,MAAM,CAAC,CAAA,CAD/B,EAEnB,CCHO,SAASC,CAAAA,CAAgBD,EAAqB,CACnD,OAAKA,EACEA,CAAAA,CACJ,IAAA,GACA,KAAA,CAAM,KAAK,CAAA,CACX,GAAA,CAAKE,CAAAA,EAASA,CAAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,CAAIA,CAAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,GAAG,CAAA,CALM,EAMnB,CCPO,SAASC,EAAYH,CAAAA,CAAqB,CAC/C,OAAKA,CAAAA,CAEEA,CAAAA,CACJ,IAAA,EAAK,CACL,OAAA,CAAQ,oBAAA,CAAsB,CAACI,CAAAA,CAAGC,CAAAA,GAAkBA,EAAOA,CAAAA,CAAK,WAAA,GAAgB,EAAG,CAAA,CACnF,OAAA,CAAQ,MAAA,CAASC,CAAAA,EAAUA,CAAAA,CAAM,aAAa,CAAA,CALhC,EAMnB,CCPO,SAASC,EAAYP,CAAAA,CAAqB,CAC/C,OAAKA,CAAAA,CAEEA,CAAAA,CACJ,IAAA,GACA,OAAA,CAAQ,oBAAA,CAAsB,OAAO,CAAA,CACrC,OAAA,CAAQ,UAAW,GAAG,CAAA,CACtB,WAAA,EAAY,CANE,EAOnB","file":"index.cjs","sourcesContent":["export function chunk<T>(arr: T[], size: number): T[][] {\r\n if (size <= 0) return [];\r\n\r\n const result: T[][] = [];\r\n\r\n for (let i = 0; i < arr.length; i += size) {\r\n result.push(arr.slice(i, i + size));\r\n }\r\n\r\n return result;\r\n}\r\n","export function unique<T>(array: T[]): T[] {\r\n return [...new Set(array)];\r\n}\r\n","export function debounce<T extends (...args: any[]) => void>(fn: T, delay: number) {\r\n let timeout: ReturnType<typeof setTimeout>;\r\n\r\n return function (...args: Parameters<T>) {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n };\r\n}\r\n","export function get(obj: any, path: string, defaultValue?: any) {\r\n const keys = path.split(\".\");\r\n let result = obj;\r\n\r\n for (const key of keys) {\r\n if (result == null) return defaultValue;\r\n result = result[key];\r\n }\r\n\r\n return result === undefined ? defaultValue : result;\r\n}\r\n","export function capitalize(str: string): string {\r\n if (!str) return \"\";\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n","export function capitalizeWords(str: string): string {\r\n if (!str) return \"\";\r\n return str\r\n .trim()\r\n .split(/\\s+/)\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n}\r\n","export function toCamelCase(str: string): string {\r\n if (!str) return \"\";\r\n\r\n return str\r\n .trim()\r\n .replace(/[^a-zA-Z0-9]+(.)?/g, (_, char: string) => (char ? char.toUpperCase() : \"\"))\r\n .replace(/^(.)/, (match) => match.toLowerCase());\r\n}\r\n","export function toKebabCase(str: string): string {\r\n if (!str) return \"\";\r\n\r\n return str\r\n .trim()\r\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\r\n .replace(/[_\\s]+/g, \"-\")\r\n .toLowerCase();\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/array/chunk.ts","../src/array/unique.ts","../src/array/uniqueBy.ts","../src/array/groupBy.ts","../src/function/debounce.ts","../src/object/isEmptyObject.ts","../src/object/pick.ts","../src/object/omit.ts","../src/object/get.ts","../src/string/capitalize.ts","../src/string/capitalizeWords.ts","../src/string/toCamelCase.ts","../src/string/toKebabCase.ts"],"names":["chunk","arr","size","result","i","unique","array","uniqueBy","key","seen","item","value","groupBy","acc","groupKey","debounce","fn","delay","timeout","args","isEmptyObject","obj","pick","keys","omit","get","path","defaultValue","capitalize","str","capitalizeWords","word","toCamelCase","_","char","match","toKebabCase"],"mappings":"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","file":"index.cjs","sourcesContent":["export function chunk<T>(arr: T[], size: number): T[][] {\r\n if (size <= 0) return [];\r\n\r\n const result: T[][] = [];\r\n\r\n for (let i = 0; i < arr.length; i += size) {\r\n result.push(arr.slice(i, i + size));\r\n }\r\n\r\n return result;\r\n}\r\n","export function unique<T>(array: T[]): T[] {\r\n return [...new Set(array)];\r\n}\r\n","export function uniqueBy<T, K extends keyof T>(array: readonly T[], key: K): T[] {\r\n const seen = new Set<T[K]>();\r\n\r\n return array.filter((item) => {\r\n const value = item[key];\r\n if (seen.has(value)) return false;\r\n seen.add(value);\r\n return true;\r\n });\r\n}\r\n","export function groupBy<T, K extends keyof T>(array: readonly T[], key: K): Record<string, T[]> {\r\n return array.reduce(\r\n (acc, item) => {\r\n const groupKey = String(item[key]);\r\n\r\n if (!acc[groupKey]) {\r\n acc[groupKey] = [];\r\n }\r\n\r\n acc[groupKey].push(item);\r\n return acc;\r\n },\r\n {} as Record<string, T[]>,\r\n );\r\n}\r\n","export function debounce<T extends (...args: any[]) => void>(fn: T, delay: number) {\r\n let timeout: ReturnType<typeof setTimeout>;\r\n\r\n return function (...args: Parameters<T>) {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n };\r\n}\r\n","export function isEmptyObject(obj: Record<PropertyKey, unknown>): boolean {\r\n return Object.keys(obj).length === 0;\r\n}\r\n","export function pick<T extends object, K extends keyof T>(obj: T, keys: readonly K[]): Pick<T, K> {\r\n const result = {} as Pick<T, K>;\r\n\r\n for (const key of keys) {\r\n if (key in obj) {\r\n result[key] = obj[key];\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","export function omit<T, K extends keyof T>(obj: T, keys: readonly K[]): Omit<T, K> {\r\n const result = { ...obj };\r\n\r\n for (const key of keys) {\r\n delete result[key];\r\n }\r\n\r\n return result;\r\n}\r\n","export function get(obj: any, path: string, defaultValue?: any) {\r\n const keys = path.split(\".\");\r\n let result = obj;\r\n\r\n for (const key of keys) {\r\n if (result == null) return defaultValue;\r\n result = result[key];\r\n }\r\n\r\n return result === undefined ? defaultValue : result;\r\n}\r\n","export function capitalize(str: string): string {\r\n if (!str) return \"\";\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n","export function capitalizeWords(str: string): string {\r\n if (!str) return \"\";\r\n return str\r\n .trim()\r\n .split(/\\s+/)\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n}\r\n","export function toCamelCase(str: string): string {\r\n if (!str) return \"\";\r\n\r\n return str\r\n .trim()\r\n .replace(/[^a-zA-Z0-9]+(.)?/g, (_, char: string) => (char ? char.toUpperCase() : \"\"))\r\n .replace(/^(.)/, (match) => match.toLowerCase());\r\n}\r\n","export function toKebabCase(str: string): string {\r\n if (!str) return \"\";\r\n\r\n return str\r\n .trim()\r\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\r\n .replace(/[_\\s]+/g, \"-\")\r\n .toLowerCase();\r\n}\r\n"]}
package/dist/index.d.cts CHANGED
@@ -2,8 +2,18 @@ declare function chunk<T>(arr: T[], size: number): T[][];
2
2
 
3
3
  declare function unique<T>(array: T[]): T[];
4
4
 
5
+ declare function uniqueBy<T, K extends keyof T>(array: readonly T[], key: K): T[];
6
+
7
+ declare function groupBy<T, K extends keyof T>(array: readonly T[], key: K): Record<string, T[]>;
8
+
5
9
  declare function debounce<T extends (...args: any[]) => void>(fn: T, delay: number): (...args: Parameters<T>) => void;
6
10
 
11
+ declare function isEmptyObject(obj: Record<PropertyKey, unknown>): boolean;
12
+
13
+ declare function pick<T extends object, K extends keyof T>(obj: T, keys: readonly K[]): Pick<T, K>;
14
+
15
+ declare function omit<T, K extends keyof T>(obj: T, keys: readonly K[]): Omit<T, K>;
16
+
7
17
  declare function get(obj: any, path: string, defaultValue?: any): any;
8
18
 
9
19
  declare function capitalize(str: string): string;
@@ -14,4 +24,4 @@ declare function toCamelCase(str: string): string;
14
24
 
15
25
  declare function toKebabCase(str: string): string;
16
26
 
17
- export { capitalize, capitalizeWords, chunk, debounce, get, toCamelCase, toKebabCase, unique };
27
+ export { capitalize, capitalizeWords, chunk, debounce, get, groupBy, isEmptyObject, omit, pick, toCamelCase, toKebabCase, unique, uniqueBy };
package/dist/index.d.ts CHANGED
@@ -2,8 +2,18 @@ declare function chunk<T>(arr: T[], size: number): T[][];
2
2
 
3
3
  declare function unique<T>(array: T[]): T[];
4
4
 
5
+ declare function uniqueBy<T, K extends keyof T>(array: readonly T[], key: K): T[];
6
+
7
+ declare function groupBy<T, K extends keyof T>(array: readonly T[], key: K): Record<string, T[]>;
8
+
5
9
  declare function debounce<T extends (...args: any[]) => void>(fn: T, delay: number): (...args: Parameters<T>) => void;
6
10
 
11
+ declare function isEmptyObject(obj: Record<PropertyKey, unknown>): boolean;
12
+
13
+ declare function pick<T extends object, K extends keyof T>(obj: T, keys: readonly K[]): Pick<T, K>;
14
+
15
+ declare function omit<T, K extends keyof T>(obj: T, keys: readonly K[]): Omit<T, K>;
16
+
7
17
  declare function get(obj: any, path: string, defaultValue?: any): any;
8
18
 
9
19
  declare function capitalize(str: string): string;
@@ -14,4 +24,4 @@ declare function toCamelCase(str: string): string;
14
24
 
15
25
  declare function toKebabCase(str: string): string;
16
26
 
17
- export { capitalize, capitalizeWords, chunk, debounce, get, toCamelCase, toKebabCase, unique };
27
+ export { capitalize, capitalizeWords, chunk, debounce, get, groupBy, isEmptyObject, omit, pick, toCamelCase, toKebabCase, unique, uniqueBy };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- function u(e,t){if(t<=0)return [];let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function s(e){return [...new Set(e)]}function c(e,t){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{e(...n);},t);}}function l(e,t,r){let n=t.split("."),o=e;for(let i of n){if(o==null)return r;o=o[i];}return o===void 0?r:o}function m(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function x(e){return e?e.trim().split(/\s+/).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "):""}function y(e){return e?e.trim().replace(/[^a-zA-Z0-9]+(.)?/g,(t,r)=>r?r.toUpperCase():"").replace(/^(.)/,t=>t.toLowerCase()):""}function d(e){return e?e.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase():""}export{m as capitalize,x as capitalizeWords,u as chunk,c as debounce,l as get,y as toCamelCase,d as toKebabCase,s as unique};//# sourceMappingURL=index.js.map
1
+ function u(e,r){if(r<=0)return [];let t=[];for(let n=0;n<e.length;n+=r)t.push(e.slice(n,n+r));return t}function c(e){return [...new Set(e)]}function p(e,r){let t=new Set;return e.filter(n=>{let o=n[r];return t.has(o)?false:(t.add(o),true)})}function T(e,r){return e.reduce((t,n)=>{let o=String(n[r]);return t[o]||(t[o]=[]),t[o].push(n),t},{})}function y(e,r){let t;return function(...n){clearTimeout(t),t=setTimeout(()=>{e(...n);},r);}}function g(e){return Object.keys(e).length===0}function m(e,r){let t={};for(let n of r)n in e&&(t[n]=e[n]);return t}function k(e,r){let t={...e};for(let n of r)delete t[n];return t}function C(e,r,t){let n=r.split("."),o=e;for(let i of n){if(o==null)return t;o=o[i];}return o===void 0?t:o}function w(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function P(e){return e?e.trim().split(/\s+/).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(" "):""}function j(e){return e?e.trim().replace(/[^a-zA-Z0-9]+(.)?/g,(r,t)=>t?t.toUpperCase():"").replace(/^(.)/,r=>r.toLowerCase()):""}function S(e){return e?e.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase():""}export{w as capitalize,P as capitalizeWords,u as chunk,y as debounce,C as get,T as groupBy,g as isEmptyObject,k as omit,m as pick,j as toCamelCase,S as toKebabCase,c as unique,p as uniqueBy};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/array/chunk.ts","../src/array/unique.ts","../src/function/debounce.ts","../src/object/get.ts","../src/string/capitalize.ts","../src/string/capitalizeWords.ts","../src/string/toCamelCase.ts","../src/string/toKebabCase.ts"],"names":["chunk","arr","size","result","i","unique","array","debounce","fn","delay","timeout","args","get","obj","path","defaultValue","keys","key","capitalize","str","capitalizeWords","word","toCamelCase","_","char","match","toKebabCase"],"mappings":"AAAO,SAASA,CAAAA,CAASC,EAAUC,CAAAA,CAAqB,CACtD,GAAIA,CAAAA,EAAQ,CAAA,CAAG,OAAO,EAAC,CAEvB,IAAMC,EAAgB,EAAC,CAEvB,QAASC,CAAAA,CAAI,CAAA,CAAGA,EAAIH,CAAAA,CAAI,MAAA,CAAQG,CAAAA,EAAKF,CAAAA,CACnCC,CAAAA,CAAO,IAAA,CAAKF,EAAI,KAAA,CAAMG,CAAAA,CAAGA,EAAIF,CAAI,CAAC,EAGpC,OAAOC,CACT,CCVO,SAASE,CAAAA,CAAUC,CAAAA,CAAiB,CACzC,OAAO,CAAC,GAAG,IAAI,GAAA,CAAIA,CAAK,CAAC,CAC3B,CCFO,SAASC,CAAAA,CAA6CC,CAAAA,CAAOC,EAAe,CACjF,IAAIC,EAEJ,OAAO,SAAA,GAAaC,EAAqB,CACvC,YAAA,CAAaD,CAAO,CAAA,CAEpBA,CAAAA,CAAU,UAAA,CAAW,IAAM,CACzBF,CAAAA,CAAG,GAAGG,CAAI,EACZ,EAAGF,CAAK,EACV,CACF,CCVO,SAASG,CAAAA,CAAIC,EAAUC,CAAAA,CAAcC,CAAAA,CAAoB,CAC9D,IAAMC,CAAAA,CAAOF,EAAK,KAAA,CAAM,GAAG,CAAA,CACvBX,CAAAA,CAASU,CAAAA,CAEb,IAAA,IAAWI,KAAOD,CAAAA,CAAM,CACtB,GAAIb,CAAAA,EAAU,IAAA,CAAM,OAAOY,CAAAA,CAC3BZ,CAAAA,CAASA,CAAAA,CAAOc,CAAG,EACrB,CAEA,OAAOd,CAAAA,GAAW,MAAA,CAAYY,EAAeZ,CAC/C,CCVO,SAASe,CAAAA,CAAWC,CAAAA,CAAqB,CAC9C,OAAKA,CAAAA,CACEA,CAAAA,CAAI,OAAO,CAAC,CAAA,CAAE,aAAY,CAAIA,CAAAA,CAAI,MAAM,CAAC,CAAA,CAD/B,EAEnB,CCHO,SAASC,CAAAA,CAAgBD,EAAqB,CACnD,OAAKA,EACEA,CAAAA,CACJ,IAAA,GACA,KAAA,CAAM,KAAK,CAAA,CACX,GAAA,CAAKE,CAAAA,EAASA,CAAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,CAAIA,CAAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,GAAG,CAAA,CALM,EAMnB,CCPO,SAASC,EAAYH,CAAAA,CAAqB,CAC/C,OAAKA,CAAAA,CAEEA,CAAAA,CACJ,IAAA,EAAK,CACL,OAAA,CAAQ,oBAAA,CAAsB,CAACI,CAAAA,CAAGC,CAAAA,GAAkBA,EAAOA,CAAAA,CAAK,WAAA,GAAgB,EAAG,CAAA,CACnF,OAAA,CAAQ,MAAA,CAASC,CAAAA,EAAUA,CAAAA,CAAM,aAAa,CAAA,CALhC,EAMnB,CCPO,SAASC,EAAYP,CAAAA,CAAqB,CAC/C,OAAKA,CAAAA,CAEEA,CAAAA,CACJ,IAAA,GACA,OAAA,CAAQ,oBAAA,CAAsB,OAAO,CAAA,CACrC,OAAA,CAAQ,UAAW,GAAG,CAAA,CACtB,WAAA,EAAY,CANE,EAOnB","file":"index.js","sourcesContent":["export function chunk<T>(arr: T[], size: number): T[][] {\r\n if (size <= 0) return [];\r\n\r\n const result: T[][] = [];\r\n\r\n for (let i = 0; i < arr.length; i += size) {\r\n result.push(arr.slice(i, i + size));\r\n }\r\n\r\n return result;\r\n}\r\n","export function unique<T>(array: T[]): T[] {\r\n return [...new Set(array)];\r\n}\r\n","export function debounce<T extends (...args: any[]) => void>(fn: T, delay: number) {\r\n let timeout: ReturnType<typeof setTimeout>;\r\n\r\n return function (...args: Parameters<T>) {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n };\r\n}\r\n","export function get(obj: any, path: string, defaultValue?: any) {\r\n const keys = path.split(\".\");\r\n let result = obj;\r\n\r\n for (const key of keys) {\r\n if (result == null) return defaultValue;\r\n result = result[key];\r\n }\r\n\r\n return result === undefined ? defaultValue : result;\r\n}\r\n","export function capitalize(str: string): string {\r\n if (!str) return \"\";\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n","export function capitalizeWords(str: string): string {\r\n if (!str) return \"\";\r\n return str\r\n .trim()\r\n .split(/\\s+/)\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n}\r\n","export function toCamelCase(str: string): string {\r\n if (!str) return \"\";\r\n\r\n return str\r\n .trim()\r\n .replace(/[^a-zA-Z0-9]+(.)?/g, (_, char: string) => (char ? char.toUpperCase() : \"\"))\r\n .replace(/^(.)/, (match) => match.toLowerCase());\r\n}\r\n","export function toKebabCase(str: string): string {\r\n if (!str) return \"\";\r\n\r\n return str\r\n .trim()\r\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\r\n .replace(/[_\\s]+/g, \"-\")\r\n .toLowerCase();\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/array/chunk.ts","../src/array/unique.ts","../src/array/uniqueBy.ts","../src/array/groupBy.ts","../src/function/debounce.ts","../src/object/isEmptyObject.ts","../src/object/pick.ts","../src/object/omit.ts","../src/object/get.ts","../src/string/capitalize.ts","../src/string/capitalizeWords.ts","../src/string/toCamelCase.ts","../src/string/toKebabCase.ts"],"names":["chunk","arr","size","result","i","unique","array","uniqueBy","key","seen","item","value","groupBy","acc","groupKey","debounce","fn","delay","timeout","args","isEmptyObject","obj","pick","keys","omit","get","path","defaultValue","capitalize","str","capitalizeWords","word","toCamelCase","_","char","match","toKebabCase"],"mappings":"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","file":"index.js","sourcesContent":["export function chunk<T>(arr: T[], size: number): T[][] {\r\n if (size <= 0) return [];\r\n\r\n const result: T[][] = [];\r\n\r\n for (let i = 0; i < arr.length; i += size) {\r\n result.push(arr.slice(i, i + size));\r\n }\r\n\r\n return result;\r\n}\r\n","export function unique<T>(array: T[]): T[] {\r\n return [...new Set(array)];\r\n}\r\n","export function uniqueBy<T, K extends keyof T>(array: readonly T[], key: K): T[] {\r\n const seen = new Set<T[K]>();\r\n\r\n return array.filter((item) => {\r\n const value = item[key];\r\n if (seen.has(value)) return false;\r\n seen.add(value);\r\n return true;\r\n });\r\n}\r\n","export function groupBy<T, K extends keyof T>(array: readonly T[], key: K): Record<string, T[]> {\r\n return array.reduce(\r\n (acc, item) => {\r\n const groupKey = String(item[key]);\r\n\r\n if (!acc[groupKey]) {\r\n acc[groupKey] = [];\r\n }\r\n\r\n acc[groupKey].push(item);\r\n return acc;\r\n },\r\n {} as Record<string, T[]>,\r\n );\r\n}\r\n","export function debounce<T extends (...args: any[]) => void>(fn: T, delay: number) {\r\n let timeout: ReturnType<typeof setTimeout>;\r\n\r\n return function (...args: Parameters<T>) {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n };\r\n}\r\n","export function isEmptyObject(obj: Record<PropertyKey, unknown>): boolean {\r\n return Object.keys(obj).length === 0;\r\n}\r\n","export function pick<T extends object, K extends keyof T>(obj: T, keys: readonly K[]): Pick<T, K> {\r\n const result = {} as Pick<T, K>;\r\n\r\n for (const key of keys) {\r\n if (key in obj) {\r\n result[key] = obj[key];\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","export function omit<T, K extends keyof T>(obj: T, keys: readonly K[]): Omit<T, K> {\r\n const result = { ...obj };\r\n\r\n for (const key of keys) {\r\n delete result[key];\r\n }\r\n\r\n return result;\r\n}\r\n","export function get(obj: any, path: string, defaultValue?: any) {\r\n const keys = path.split(\".\");\r\n let result = obj;\r\n\r\n for (const key of keys) {\r\n if (result == null) return defaultValue;\r\n result = result[key];\r\n }\r\n\r\n return result === undefined ? defaultValue : result;\r\n}\r\n","export function capitalize(str: string): string {\r\n if (!str) return \"\";\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n","export function capitalizeWords(str: string): string {\r\n if (!str) return \"\";\r\n return str\r\n .trim()\r\n .split(/\\s+/)\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n}\r\n","export function toCamelCase(str: string): string {\r\n if (!str) return \"\";\r\n\r\n return str\r\n .trim()\r\n .replace(/[^a-zA-Z0-9]+(.)?/g, (_, char: string) => (char ? char.toUpperCase() : \"\"))\r\n .replace(/^(.)/, (match) => match.toLowerCase());\r\n}\r\n","export function toKebabCase(str: string): string {\r\n if (!str) return \"\";\r\n\r\n return str\r\n .trim()\r\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\r\n .replace(/[_\\s]+/g, \"-\")\r\n .toLowerCase();\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@titocandradev/neatcore",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "private": false,
5
5
  "description": "A clean, zero-dependency, TypeScript-first utility core.",
6
6
  "homepage": "https://github.com/tcandra24/neat-core#readme",