@jdsalasc/solvejs-list 1.0.0 → 1.0.2
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 +19 -3
- package/dist/cjs/index.cjs +27 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.d.ts +27 -0
- package/dist/esm/index.js +27 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +51 -32
package/README.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
# @jdsalasc/solvejs-list
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# @jdsalasc/solvejs-list
|
|
2
|
+
|
|
3
|
+
Array and list utilities for JavaScript and TypeScript.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i @jdsalasc/solvejs-list
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { unique, chunk, groupBy } from "@jdsalasc/solvejs-list";
|
|
15
|
+
|
|
16
|
+
unique([1, 1, 2, 3]);
|
|
17
|
+
chunk([1, 2, 3, 4], 2);
|
|
18
|
+
groupBy(["one", "two", "three"], item => item.length);
|
|
19
|
+
```
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -4,12 +4,32 @@ exports.unique = unique;
|
|
|
4
4
|
exports.compact = compact;
|
|
5
5
|
exports.chunk = chunk;
|
|
6
6
|
exports.groupBy = groupBy;
|
|
7
|
+
/**
|
|
8
|
+
* Removes duplicate values preserving first-seen order.
|
|
9
|
+
*
|
|
10
|
+
* @param values - Input collection.
|
|
11
|
+
* @returns Deduplicated array.
|
|
12
|
+
*/
|
|
7
13
|
function unique(values) {
|
|
8
14
|
return [...new Set(values)];
|
|
9
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Removes falsy values from a list.
|
|
18
|
+
*
|
|
19
|
+
* @param values - Input collection possibly containing falsy values.
|
|
20
|
+
* @returns Collection without falsy entries.
|
|
21
|
+
*/
|
|
10
22
|
function compact(values) {
|
|
11
23
|
return values.filter(Boolean);
|
|
12
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Splits an array into smaller chunks of equal size.
|
|
27
|
+
*
|
|
28
|
+
* @param values - Input collection.
|
|
29
|
+
* @param size - Chunk size.
|
|
30
|
+
* @returns Array of chunks.
|
|
31
|
+
* @throws {TypeError} If `size` is not a positive integer.
|
|
32
|
+
*/
|
|
13
33
|
function chunk(values, size) {
|
|
14
34
|
if (!Number.isInteger(size) || size <= 0) {
|
|
15
35
|
throw new TypeError("Expected size to be a positive integer.");
|
|
@@ -20,6 +40,13 @@ function chunk(values, size) {
|
|
|
20
40
|
}
|
|
21
41
|
return output;
|
|
22
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Groups values by a selector key.
|
|
45
|
+
*
|
|
46
|
+
* @param values - Input collection.
|
|
47
|
+
* @param selector - Function used to extract grouping key.
|
|
48
|
+
* @returns Object whose keys map to grouped arrays.
|
|
49
|
+
*/
|
|
23
50
|
function groupBy(values, selector) {
|
|
24
51
|
return values.reduce((accumulator, value) => {
|
|
25
52
|
const key = selector(value);
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAMA,wBAEC;AAQD,0BAEC;AAUD,sBAUC;AASD,0BASC;AAxDD;;;;;GAKG;AACH,SAAgB,MAAM,CAAI,MAAoB;IAC5C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAI,MAA0D;IACnF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAQ,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,KAAK,CAAI,MAAoB,EAAE,IAAY;IACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,OAAO,CAA2B,MAAoB,EAAE,QAAyB;IAC/F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAAoB,CAAC,CAAC;AAC3B,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Removes duplicate values preserving first-seen order.
|
|
3
|
+
*
|
|
4
|
+
* @param values - Input collection.
|
|
5
|
+
* @returns Deduplicated array.
|
|
6
|
+
*/
|
|
1
7
|
export declare function unique<T>(values: readonly T[]): T[];
|
|
8
|
+
/**
|
|
9
|
+
* Removes falsy values from a list.
|
|
10
|
+
*
|
|
11
|
+
* @param values - Input collection possibly containing falsy values.
|
|
12
|
+
* @returns Collection without falsy entries.
|
|
13
|
+
*/
|
|
2
14
|
export declare function compact<T>(values: readonly (T | null | undefined | false | 0 | "")[]): T[];
|
|
15
|
+
/**
|
|
16
|
+
* Splits an array into smaller chunks of equal size.
|
|
17
|
+
*
|
|
18
|
+
* @param values - Input collection.
|
|
19
|
+
* @param size - Chunk size.
|
|
20
|
+
* @returns Array of chunks.
|
|
21
|
+
* @throws {TypeError} If `size` is not a positive integer.
|
|
22
|
+
*/
|
|
3
23
|
export declare function chunk<T>(values: readonly T[], size: number): T[][];
|
|
24
|
+
/**
|
|
25
|
+
* Groups values by a selector key.
|
|
26
|
+
*
|
|
27
|
+
* @param values - Input collection.
|
|
28
|
+
* @param selector - Function used to extract grouping key.
|
|
29
|
+
* @returns Object whose keys map to grouped arrays.
|
|
30
|
+
*/
|
|
4
31
|
export declare function groupBy<T, K extends PropertyKey>(values: readonly T[], selector: (value: T) => K): Record<K, T[]>;
|
package/dist/esm/index.js
CHANGED
|
@@ -1,9 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Removes duplicate values preserving first-seen order.
|
|
3
|
+
*
|
|
4
|
+
* @param values - Input collection.
|
|
5
|
+
* @returns Deduplicated array.
|
|
6
|
+
*/
|
|
1
7
|
export function unique(values) {
|
|
2
8
|
return [...new Set(values)];
|
|
3
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Removes falsy values from a list.
|
|
12
|
+
*
|
|
13
|
+
* @param values - Input collection possibly containing falsy values.
|
|
14
|
+
* @returns Collection without falsy entries.
|
|
15
|
+
*/
|
|
4
16
|
export function compact(values) {
|
|
5
17
|
return values.filter(Boolean);
|
|
6
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Splits an array into smaller chunks of equal size.
|
|
21
|
+
*
|
|
22
|
+
* @param values - Input collection.
|
|
23
|
+
* @param size - Chunk size.
|
|
24
|
+
* @returns Array of chunks.
|
|
25
|
+
* @throws {TypeError} If `size` is not a positive integer.
|
|
26
|
+
*/
|
|
7
27
|
export function chunk(values, size) {
|
|
8
28
|
if (!Number.isInteger(size) || size <= 0) {
|
|
9
29
|
throw new TypeError("Expected size to be a positive integer.");
|
|
@@ -14,6 +34,13 @@ export function chunk(values, size) {
|
|
|
14
34
|
}
|
|
15
35
|
return output;
|
|
16
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Groups values by a selector key.
|
|
39
|
+
*
|
|
40
|
+
* @param values - Input collection.
|
|
41
|
+
* @param selector - Function used to extract grouping key.
|
|
42
|
+
* @returns Object whose keys map to grouped arrays.
|
|
43
|
+
*/
|
|
17
44
|
export function groupBy(values, selector) {
|
|
18
45
|
return values.reduce((accumulator, value) => {
|
|
19
46
|
const key = selector(value);
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAI,MAAoB;IAC5C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,MAA0D;IACnF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAQ,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAI,MAAoB,EAAE,IAAY;IACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,OAAO,CAA2B,MAAoB,EAAE,QAAyB;IAC/F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAAoB,CAAC,CAAC;AAC3B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAI,MAAoB;IAC5C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAI,MAA0D;IACnF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAQ,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CAAI,MAAoB,EAAE,IAAY;IACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAA2B,MAAoB,EAAE,QAAyB;IAC/F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAAoB,CAAC,CAAC;AAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,33 +1,52 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@jdsalasc/solvejs-list",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "List and array utilities for
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"sideEffects": false,
|
|
8
|
-
"main": "./dist/cjs/index.cjs",
|
|
9
|
-
"module": "./dist/esm/index.js",
|
|
10
|
-
"types": "./dist/esm/index.d.ts",
|
|
11
|
-
"exports": {
|
|
12
|
-
".": {
|
|
13
|
-
"types": "./dist/esm/index.d.ts",
|
|
14
|
-
"import": "./dist/esm/index.js",
|
|
15
|
-
"require": "./dist/cjs/index.cjs"
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
"files": [
|
|
19
|
-
"dist",
|
|
20
|
-
"README.md"
|
|
21
|
-
],
|
|
22
|
-
"scripts": {
|
|
23
|
-
"build": "npm run clean && npm run build:esm && npm run build:cjs",
|
|
24
|
-
"build:esm": "tsc -p tsconfig.esm.json",
|
|
25
|
-
"build:cjs": "tsc -p tsconfig.cjs.json && node ./scripts/rename-cjs.mjs",
|
|
26
|
-
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
27
|
-
"test": "npm run build && node --test test/*.test.mjs",
|
|
28
|
-
"lint": "node -e \"console.log('No lint configured for @jdsalasc/solvejs-list')\""
|
|
29
|
-
},
|
|
30
|
-
"publishConfig": {
|
|
31
|
-
"access": "public"
|
|
32
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@jdsalasc/solvejs-list",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "List and array utilities for deduplication, grouping, chunking, and compacting values.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"main": "./dist/cjs/index.cjs",
|
|
9
|
+
"module": "./dist/esm/index.js",
|
|
10
|
+
"types": "./dist/esm/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/esm/index.d.ts",
|
|
14
|
+
"import": "./dist/esm/index.js",
|
|
15
|
+
"require": "./dist/cjs/index.cjs"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"README.md"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "npm run clean && npm run build:esm && npm run build:cjs",
|
|
24
|
+
"build:esm": "tsc -p tsconfig.esm.json",
|
|
25
|
+
"build:cjs": "tsc -p tsconfig.cjs.json && node ./scripts/rename-cjs.mjs",
|
|
26
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
27
|
+
"test": "npm run build && node --test test/*.test.mjs",
|
|
28
|
+
"lint": "node -e \"console.log('No lint configured for @jdsalasc/solvejs-list')\""
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"author": "jdsalasc",
|
|
34
|
+
"homepage": "https://github.com/jdsalasca/solvejs#readme",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "git+https://github.com/jdsalasca/solvejs.git"
|
|
38
|
+
},
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/jdsalasca/solvejs/issues"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=18"
|
|
44
|
+
},
|
|
45
|
+
"keywords": [
|
|
46
|
+
"array utilities",
|
|
47
|
+
"groupby",
|
|
48
|
+
"chunk array",
|
|
49
|
+
"deduplicate array",
|
|
50
|
+
"solvejs"
|
|
51
|
+
]
|
|
33
52
|
}
|