@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 +6 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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,
|
|
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
|
package/dist/index.cjs.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","
|
|
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,
|
|
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","
|
|
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