@ekim088/toolkit 0.3.0 → 0.4.0
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 +25 -0
- package/lib/@types/chunk.d.ts +8 -0
- package/lib/@types/clone.d.ts +1 -1
- package/lib/@types/createObjectFactory.d.ts +17 -0
- package/lib/@types/index.d.ts +17 -9
- package/lib/@types/isBoolean.d.ts +1 -1
- package/lib/@types/isDeepEqual.d.ts +1 -1
- package/lib/@types/isNullish.d.ts +6 -0
- package/lib/@types/isNumber.d.ts +1 -1
- package/lib/@types/isObject.d.ts +1 -1
- package/lib/@types/isString.d.ts +1 -1
- package/lib/@types/isUndefined.d.ts +6 -0
- package/lib/@types/memoizeOne.d.ts +1 -1
- package/lib/@types/merge.d.ts +1 -1
- package/lib/@types/pick.d.ts +10 -0
- package/lib/@types/shuffle.d.ts +7 -0
- package/lib/@types/truthy.d.ts +12 -0
- package/lib/@types/typeUtils.d.ts +4 -4
- package/lib/@types/uuid.d.ts +5 -0
- package/lib/chunk.js +17 -0
- package/lib/clone.js +2 -2
- package/lib/createObjectFactory.js +22 -0
- package/lib/index.js +17 -9
- package/lib/isBoolean.js +1 -1
- package/lib/isDeepEqual.js +2 -2
- package/lib/isNullish.js +8 -0
- package/lib/isNumber.js +1 -1
- package/lib/isObject.js +1 -1
- package/lib/isString.js +1 -1
- package/lib/isUndefined.js +8 -0
- package/lib/memoizeOne.js +2 -2
- package/lib/merge.js +2 -2
- package/lib/pick.js +13 -0
- package/lib/shuffle.js +15 -0
- package/lib/truthy.js +14 -0
- package/lib/uuid.js +7 -0
- package/package.json +81 -54
package/README.md
CHANGED
|
@@ -4,12 +4,37 @@ A simple JavaScript utility library. See [documentation](docs).
|
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
+
Install via npm or yarn:
|
|
8
|
+
|
|
7
9
|
```
|
|
8
10
|
yarn add @ekim088/toolkit
|
|
9
11
|
```
|
|
10
12
|
|
|
11
13
|
## Usage
|
|
12
14
|
|
|
15
|
+
This package supports for barrel and subpath imports:
|
|
16
|
+
|
|
13
17
|
```
|
|
14
18
|
import { clone } from '@ekim088/toolkit';
|
|
15
19
|
```
|
|
20
|
+
|
|
21
|
+
or
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
import { clone } from '@ekim088/toolkit/clone';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Releasing
|
|
28
|
+
|
|
29
|
+
Releases are automated using [changesets](https://github.com/changesets/changesets):
|
|
30
|
+
|
|
31
|
+
1. In your feature PR, run `yarn changeset` to pick the bump type
|
|
32
|
+
(major/minor/patch) and add a description of your changes. Commit the
|
|
33
|
+
generated markdown file in `.changeset/` with your changes. **Only changes
|
|
34
|
+
that impact the published package require a changeset.**
|
|
35
|
+
2. When the PR merges to `main`, the Release workflow opens (or updates) a
|
|
36
|
+
"Version Packages" PR that aggregates all pending changesets: it bumps the
|
|
37
|
+
version, updates `CHANGELOG.md`, and regenerates the typedoc output in
|
|
38
|
+
`docs/`.
|
|
39
|
+
3. Merge the "Version Packages" PR to publish to npm. A Discord notification
|
|
40
|
+
confirms the publish.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chunks an array into sub-arrays of at most `chunkSize` items.
|
|
3
|
+
* @template T
|
|
4
|
+
* @param {T[]} array The array to chunk.
|
|
5
|
+
* @param {number} chunkSize The max number of items per chunk.
|
|
6
|
+
* @returns {T[][]} The chunked array.
|
|
7
|
+
*/
|
|
8
|
+
export declare function chunk<T>(array: readonly T[], chunkSize: number): T[][];
|
package/lib/@types/clone.d.ts
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type RecursivePartial } from './typeUtils.js';
|
|
2
|
+
export type ObjectFactoryConfig = {
|
|
3
|
+
/**
|
|
4
|
+
* If `true`, deeply merges overrides into the default object.
|
|
5
|
+
*/
|
|
6
|
+
mergeDeep?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type ObjectFactoryFn<T extends object> = (overrides?: RecursivePartial<T>, config?: ObjectFactoryConfig) => T;
|
|
9
|
+
/**
|
|
10
|
+
* Creates a factory function that returns an object of a given type.
|
|
11
|
+
* @param {object} defaultObj The default object to return when calling the
|
|
12
|
+
* factory function.
|
|
13
|
+
* @returns {Function} A factory function that returns a new object of a given
|
|
14
|
+
* type. Accepts an object argument that shallowly overrides properties on the
|
|
15
|
+
* default object.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createObjectFactory<T extends object>(defaultObj: T): ObjectFactoryFn<T>;
|
package/lib/@types/index.d.ts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export * from './
|
|
1
|
+
export * from './chunk.js';
|
|
2
|
+
export * from './clone.js';
|
|
3
|
+
export * from './createObjectFactory.js';
|
|
4
|
+
export * from './isBoolean.js';
|
|
5
|
+
export * from './isDeepEqual.js';
|
|
6
|
+
export * from './isNullish.js';
|
|
7
|
+
export * from './isNumber.js';
|
|
8
|
+
export * from './isObject.js';
|
|
9
|
+
export * from './isString.js';
|
|
10
|
+
export * from './isUndefined.js';
|
|
11
|
+
export * from './memoizeOne.js';
|
|
12
|
+
export * from './merge.js';
|
|
13
|
+
export * from './pick.js';
|
|
14
|
+
export * from './shuffle.js';
|
|
15
|
+
export * from './truthy.js';
|
|
16
|
+
export * from './typeUtils.js';
|
|
17
|
+
export * from './uuid.js';
|
package/lib/@types/isNumber.d.ts
CHANGED
package/lib/@types/isObject.d.ts
CHANGED
package/lib/@types/isString.d.ts
CHANGED
|
@@ -15,4 +15,4 @@ export type EqualityFn<T extends (...args: any) => unknown> = (newArgs: Paramete
|
|
|
15
15
|
* if the equality function returns `true`.
|
|
16
16
|
* @returns {Function} The memoized function.
|
|
17
17
|
*/
|
|
18
|
-
export
|
|
18
|
+
export declare function memoizeOne<T extends (...args: any) => unknown>(fn: T, equalityFn?: EqualityFn<T>): MemoizedFn<T>;
|
package/lib/@types/merge.d.ts
CHANGED
|
@@ -8,4 +8,4 @@ export type Merged<T extends object[]> = T extends [
|
|
|
8
8
|
* @param {object[]} objects Any number of object literals to merge.
|
|
9
9
|
* @returns {object} A new object with the properties of its source objects.
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export declare function merge<T extends object[]>(...objects: T): Merged<T>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ValueOf } from './typeUtils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns an object with only the properties that pass a given test.
|
|
4
|
+
* @param {object} obj The object to parse.
|
|
5
|
+
* @param {Function} predicate A test function called against each object
|
|
6
|
+
* property. Properties that return a falsy result will not be included.
|
|
7
|
+
* @returns {object} A new object containing only the properties that passed the
|
|
8
|
+
* test.
|
|
9
|
+
*/
|
|
10
|
+
export declare function pick<T extends object>(obj: T, predicate: (val: ValueOf<T>, key: keyof T) => boolean): Partial<T>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests if a value is truthy. Can be passed as the callback to an Array
|
|
3
|
+
* `filter()` method to correctly infer the type of the resulting array items.
|
|
4
|
+
* ```
|
|
5
|
+
* const arr: (string | undefined)[] = [];
|
|
6
|
+
* const truthyArr1: string[] = arr.filter(Boolean); // TS error
|
|
7
|
+
* const truthyArr2: string[] = arr.filter(truthy); // no TS error
|
|
8
|
+
* ```
|
|
9
|
+
* @param {*} value The value to test.
|
|
10
|
+
* @returns {boolean} `true` if the value is truthy.
|
|
11
|
+
*/
|
|
12
|
+
export declare function truthy<TruthyValue>(value: TruthyValue | null | undefined | '' | 0 | false): value is TruthyValue;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Derives the item type from an array.
|
|
3
|
-
*/
|
|
4
|
-
export type ItemType<T> = T extends (infer U)[] ? U : never;
|
|
5
1
|
/**
|
|
6
2
|
* Declares an object and its nested objects as partials.
|
|
7
3
|
*/
|
|
8
4
|
export type RecursivePartial<T> = {
|
|
9
5
|
[P in keyof T]?: T[P] extends Record<keyof any, unknown> ? RecursivePartial<T[P]> : T[P];
|
|
10
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* Derives the item type from an array or object.
|
|
9
|
+
*/
|
|
10
|
+
export type ValueOf<T> = T extends (infer U)[] ? U : T extends object ? T[keyof T] : never;
|
|
11
11
|
/**
|
|
12
12
|
* Makes a readonly object mutable.
|
|
13
13
|
*/
|
package/lib/chunk.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chunks an array into sub-arrays of at most `chunkSize` items.
|
|
3
|
+
* @template T
|
|
4
|
+
* @param {T[]} array The array to chunk.
|
|
5
|
+
* @param {number} chunkSize The max number of items per chunk.
|
|
6
|
+
* @returns {T[][]} The chunked array.
|
|
7
|
+
*/
|
|
8
|
+
export function chunk(array, chunkSize) {
|
|
9
|
+
const result = [];
|
|
10
|
+
if (chunkSize < 1) {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
for (let i = 0; i < array.length; i += chunkSize) {
|
|
14
|
+
result.push([...array.slice(i, i + chunkSize)]);
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
}
|
package/lib/clone.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from './isObject';
|
|
1
|
+
import { isObject } from './isObject.js';
|
|
2
2
|
function cloneObject(obj) {
|
|
3
3
|
const clonedObj = {};
|
|
4
4
|
for (const key in obj) {
|
|
@@ -13,7 +13,7 @@ function cloneObject(obj) {
|
|
|
13
13
|
* @param {*} value The value to clone.
|
|
14
14
|
* @returns {*} A copy of the value.
|
|
15
15
|
*/
|
|
16
|
-
export
|
|
16
|
+
export function clone(value) {
|
|
17
17
|
if (Array.isArray(value)) {
|
|
18
18
|
return value.map(item => clone(item));
|
|
19
19
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { clone } from './clone.js';
|
|
2
|
+
import { merge } from './merge.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a factory function that returns an object of a given type.
|
|
5
|
+
* @param {object} defaultObj The default object to return when calling the
|
|
6
|
+
* factory function.
|
|
7
|
+
* @returns {Function} A factory function that returns a new object of a given
|
|
8
|
+
* type. Accepts an object argument that shallowly overrides properties on the
|
|
9
|
+
* default object.
|
|
10
|
+
*/
|
|
11
|
+
export function createObjectFactory(defaultObj) {
|
|
12
|
+
const defaultCopy = clone(defaultObj);
|
|
13
|
+
return (overrides, { mergeDeep } = {}) => {
|
|
14
|
+
const newObject = clone(defaultCopy);
|
|
15
|
+
if (overrides) {
|
|
16
|
+
return mergeDeep
|
|
17
|
+
? merge(newObject, overrides)
|
|
18
|
+
: { ...newObject, ...overrides };
|
|
19
|
+
}
|
|
20
|
+
return newObject;
|
|
21
|
+
};
|
|
22
|
+
}
|
package/lib/index.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export * from './
|
|
1
|
+
export * from './chunk.js';
|
|
2
|
+
export * from './clone.js';
|
|
3
|
+
export * from './createObjectFactory.js';
|
|
4
|
+
export * from './isBoolean.js';
|
|
5
|
+
export * from './isDeepEqual.js';
|
|
6
|
+
export * from './isNullish.js';
|
|
7
|
+
export * from './isNumber.js';
|
|
8
|
+
export * from './isObject.js';
|
|
9
|
+
export * from './isString.js';
|
|
10
|
+
export * from './isUndefined.js';
|
|
11
|
+
export * from './memoizeOne.js';
|
|
12
|
+
export * from './merge.js';
|
|
13
|
+
export * from './pick.js';
|
|
14
|
+
export * from './shuffle.js';
|
|
15
|
+
export * from './truthy.js';
|
|
16
|
+
export * from './typeUtils.js';
|
|
17
|
+
export * from './uuid.js';
|
package/lib/isBoolean.js
CHANGED
package/lib/isDeepEqual.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isObject from './isObject';
|
|
1
|
+
import { isObject } from './isObject.js';
|
|
2
2
|
/**
|
|
3
3
|
* Tests if two arguments are equal. Object literals and arrays are tested for
|
|
4
4
|
* deep equality while other objects are tested for strict equality.
|
|
@@ -6,7 +6,7 @@ import isObject from './isObject';
|
|
|
6
6
|
* @param {*} b An argument to test.
|
|
7
7
|
* @returns {boolean} `true` if `a` and `b` are deeply equal.
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export function isDeepEqual(a, b) {
|
|
10
10
|
if (typeof a !== typeof b) {
|
|
11
11
|
return false;
|
|
12
12
|
}
|
package/lib/isNullish.js
ADDED
package/lib/isNumber.js
CHANGED
package/lib/isObject.js
CHANGED
package/lib/isString.js
CHANGED
package/lib/memoizeOne.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import isDeepEqual from './isDeepEqual';
|
|
1
|
+
import { isDeepEqual } from './isDeepEqual.js';
|
|
2
2
|
/**
|
|
3
3
|
* Returns a memoized function that caches the last result of a function call.
|
|
4
4
|
* The cached result is returned if the function arguments remain the same. Only
|
|
@@ -9,7 +9,7 @@ import isDeepEqual from './isDeepEqual';
|
|
|
9
9
|
* if the equality function returns `true`.
|
|
10
10
|
* @returns {Function} The memoized function.
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
12
|
+
export function memoizeOne(fn, equalityFn) {
|
|
13
13
|
let cache = null;
|
|
14
14
|
function memoizedFn(...args) {
|
|
15
15
|
if (cache &&
|
package/lib/merge.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import isObject from './isObject';
|
|
1
|
+
import { isObject } from './isObject.js';
|
|
2
2
|
/**
|
|
3
3
|
* Deeply merges a list of objects into a single object. For duplicate
|
|
4
4
|
* properties, subsequent occurrences overwrite the previous.
|
|
5
5
|
* @param {object[]} objects Any number of object literals to merge.
|
|
6
6
|
* @returns {object} A new object with the properties of its source objects.
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
8
|
+
export function merge(...objects) {
|
|
9
9
|
const mergedObj = {};
|
|
10
10
|
objects.forEach(obj => {
|
|
11
11
|
Object.keys(obj).forEach(key => {
|
package/lib/pick.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns an object with only the properties that pass a given test.
|
|
3
|
+
* @param {object} obj The object to parse.
|
|
4
|
+
* @param {Function} predicate A test function called against each object
|
|
5
|
+
* property. Properties that return a falsy result will not be included.
|
|
6
|
+
* @returns {object} A new object containing only the properties that passed the
|
|
7
|
+
* test.
|
|
8
|
+
*/
|
|
9
|
+
export function pick(obj, predicate) {
|
|
10
|
+
return Object.entries(obj).reduce((picked, [key, value]) => predicate(value, key)
|
|
11
|
+
? { ...picked, [key]: value }
|
|
12
|
+
: picked, {});
|
|
13
|
+
}
|
package/lib/shuffle.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shuffles the items in an array.
|
|
3
|
+
* @template T
|
|
4
|
+
* @param {T[]} array The array to shuffle.
|
|
5
|
+
* @returns {T[]} The chunked array.
|
|
6
|
+
*/
|
|
7
|
+
export function shuffle(array) {
|
|
8
|
+
const shuffled = array.slice();
|
|
9
|
+
for (let i = shuffled.length - 1; i > 0; i--) {
|
|
10
|
+
// pick a random number from 0 to i and swap the elements at the two indices
|
|
11
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
12
|
+
[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
|
|
13
|
+
}
|
|
14
|
+
return shuffled;
|
|
15
|
+
}
|
package/lib/truthy.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests if a value is truthy. Can be passed as the callback to an Array
|
|
3
|
+
* `filter()` method to correctly infer the type of the resulting array items.
|
|
4
|
+
* ```
|
|
5
|
+
* const arr: (string | undefined)[] = [];
|
|
6
|
+
* const truthyArr1: string[] = arr.filter(Boolean); // TS error
|
|
7
|
+
* const truthyArr2: string[] = arr.filter(truthy); // no TS error
|
|
8
|
+
* ```
|
|
9
|
+
* @param {*} value The value to test.
|
|
10
|
+
* @returns {boolean} `true` if the value is truthy.
|
|
11
|
+
*/
|
|
12
|
+
export function truthy(value) {
|
|
13
|
+
return !!value;
|
|
14
|
+
}
|
package/lib/uuid.js
ADDED
package/package.json
CHANGED
|
@@ -1,55 +1,82 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
2
|
+
"name": "@ekim088/toolkit",
|
|
3
|
+
"description": "A simple JavaScript utility library.",
|
|
4
|
+
"version": "0.4.0",
|
|
5
|
+
"author": "ekim088 <edward@cyberbird.co>",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"main": "./lib/index.js",
|
|
9
|
+
"types": "./lib/@types/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./lib/@types/index.d.ts",
|
|
13
|
+
"import": "./lib/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./*": {
|
|
16
|
+
"types": "./lib/@types/*.d.ts",
|
|
17
|
+
"import": "./lib/*.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"lib"
|
|
22
|
+
],
|
|
23
|
+
"sideEffects": false,
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=22"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "rm -rf ./lib && tsc",
|
|
32
|
+
"docs": "typedoc",
|
|
33
|
+
"format": "yarn exec prettier . --write",
|
|
34
|
+
"lint": "yarn lint:js && yarn lint:types",
|
|
35
|
+
"lint:js": "eslint . --fix",
|
|
36
|
+
"lint:package": "yarn build && yarn pack --out package.tgz && publint run package.tgz --strict && attw package.tgz --profile esm-only",
|
|
37
|
+
"lint:types": "tsc --noEmit",
|
|
38
|
+
"test": "vitest",
|
|
39
|
+
"test:ci": "vitest run",
|
|
40
|
+
"test:coverage": "vitest run --coverage",
|
|
41
|
+
"test:pre-commit": "vitest related --run",
|
|
42
|
+
"_postinstall": "husky",
|
|
43
|
+
"prepack": "yarn pinst --disable",
|
|
44
|
+
"postpack": "yarn pinst --enable",
|
|
45
|
+
"release": "yarn build && yarn changeset publish",
|
|
46
|
+
"changeset:version": "yarn changeset version && yarn docs"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@arethetypeswrong/cli": "^0.18.3",
|
|
50
|
+
"@changesets/cli": "^2.31.0",
|
|
51
|
+
"@commitlint/cli": "^19.8.1",
|
|
52
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
53
|
+
"@eslint/js": "^9.27.0",
|
|
54
|
+
"@types/node": "^24.0.0",
|
|
55
|
+
"@vitest/coverage-v8": "3.1.4",
|
|
56
|
+
"@vitest/eslint-plugin": "^1.2.1",
|
|
57
|
+
"eslint": "^9.27.0",
|
|
58
|
+
"eslint-plugin-jsdoc": "^50.6.17",
|
|
59
|
+
"global-jsdom": "^26.0.0",
|
|
60
|
+
"globals": "^16.2.0",
|
|
61
|
+
"husky": "^9.1.7",
|
|
62
|
+
"jsdom": "^26.1.0",
|
|
63
|
+
"lint-staged": "^16.0.0",
|
|
64
|
+
"pinst": "^3.0.0",
|
|
65
|
+
"prettier": "3.5.3",
|
|
66
|
+
"publint": "^0.3.21",
|
|
67
|
+
"typedoc": "^0.28.5",
|
|
68
|
+
"typedoc-plugin-markdown": "^4.6.3",
|
|
69
|
+
"typescript": "^5.8.3",
|
|
70
|
+
"typescript-eslint": "^8.32.1",
|
|
71
|
+
"vitest": "^3.1.4"
|
|
72
|
+
},
|
|
73
|
+
"repository": {
|
|
74
|
+
"type": "git",
|
|
75
|
+
"url": "git+https://github.com/ekim088/toolkit.git"
|
|
76
|
+
},
|
|
77
|
+
"packageManager": "yarn@4.9.1",
|
|
78
|
+
"volta": {
|
|
79
|
+
"node": "24.16.0",
|
|
80
|
+
"yarn": "4.9.1"
|
|
81
|
+
}
|
|
82
|
+
}
|