@revilise/web-utils 1.0.51
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.en.md +112 -0
- package/README.md +117 -0
- package/dist/hooks.cjs.js +1 -0
- package/dist/hooks.d.ts +11 -0
- package/dist/hooks.es.js +29 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.es.js +7 -0
- package/dist/libs.cjs.js +1 -0
- package/dist/libs.d.ts +51 -0
- package/dist/libs.es.js +33 -0
- package/package.json +57 -0
package/README.en.md
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
[Русская версия](README.md)
|
|
2
|
+
|
|
3
|
+
# @revilise/web-utils
|
|
4
|
+
|
|
5
|
+
A collection of utilities for web development, including React hooks and performance optimization functions.
|
|
6
|
+
|
|
7
|
+
## 📦 Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @revilise/web-utils
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 🚀 Available Functions
|
|
14
|
+
|
|
15
|
+
### React Hooks
|
|
16
|
+
|
|
17
|
+
#### `useBEM`
|
|
18
|
+
A hook for working with BEM methodology in React components. Allows easy creation of CSS classes following BEM methodology.
|
|
19
|
+
|
|
20
|
+
**Parameters:**
|
|
21
|
+
- `baseClass` - base block class
|
|
22
|
+
|
|
23
|
+
**Returns:**
|
|
24
|
+
- Object with `bem` method for class generation
|
|
25
|
+
|
|
26
|
+
**Usage example:**
|
|
27
|
+
```tsx
|
|
28
|
+
import { useBEM } from '@revilise/web-utils/hooks';
|
|
29
|
+
|
|
30
|
+
const MyComponent = () => {
|
|
31
|
+
const { bem } = useBEM('button');
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<button
|
|
35
|
+
className={bem("button", {
|
|
36
|
+
extraCN: { isRed: true },
|
|
37
|
+
utilCN: ['active']
|
|
38
|
+
})}
|
|
39
|
+
>
|
|
40
|
+
Button
|
|
41
|
+
</button>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Utilities
|
|
47
|
+
|
|
48
|
+
#### `debounce`
|
|
49
|
+
Creates a wrapper for a function that delays its execution until a specified time has passed since the last call.
|
|
50
|
+
|
|
51
|
+
**Parameters:**
|
|
52
|
+
- `callback` - function to execute
|
|
53
|
+
- `delay` - delay in milliseconds
|
|
54
|
+
|
|
55
|
+
**Usage example:**
|
|
56
|
+
```tsx
|
|
57
|
+
import { debounce } from '@revilise/web-utils/libs';
|
|
58
|
+
|
|
59
|
+
const debouncedSearch = debounce((query: string) => {
|
|
60
|
+
console.log('Searching:', query);
|
|
61
|
+
}, 300);
|
|
62
|
+
|
|
63
|
+
// Usage in event handler
|
|
64
|
+
input.addEventListener('input', (e) => {
|
|
65
|
+
debouncedSearch(e.target.value);
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### `throttle`
|
|
70
|
+
Limits the frequency of function calls. Calls the original function no more than once per specified interval.
|
|
71
|
+
|
|
72
|
+
**Parameters:**
|
|
73
|
+
- `callback` - function to execute
|
|
74
|
+
- `delay` - interval in milliseconds
|
|
75
|
+
|
|
76
|
+
**Usage example:**
|
|
77
|
+
```tsx
|
|
78
|
+
import { throttle } from '@revilise/web-utils/libs';
|
|
79
|
+
|
|
80
|
+
const throttledScroll = throttle(() => {
|
|
81
|
+
console.log('Scroll event');
|
|
82
|
+
}, 100);
|
|
83
|
+
|
|
84
|
+
window.addEventListener('scroll', throttledScroll);
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 📁 Export Structure
|
|
88
|
+
|
|
89
|
+
The package exports functions in two formats:
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
// React hooks
|
|
93
|
+
import { useBEM } from '@revilise/web-utils/hooks';
|
|
94
|
+
|
|
95
|
+
// Utilities
|
|
96
|
+
import { debounce, throttle } from '@revilise/web-utils/libs';
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 🛠 Technical Details
|
|
100
|
+
|
|
101
|
+
- **TypeScript**: Full type support
|
|
102
|
+
- **Tree-shaking**: Optimized for tree-shaking
|
|
103
|
+
- **ESM/CJS**: Support for ES and CommonJS module systems
|
|
104
|
+
- **Size**: Minimal bundle size
|
|
105
|
+
|
|
106
|
+
## 📄 License
|
|
107
|
+
|
|
108
|
+
MIT
|
|
109
|
+
|
|
110
|
+
## 👥 Author
|
|
111
|
+
|
|
112
|
+
Anastasia Mutnykh (mutnyh.ao@mail.ru)
|
package/README.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
[English version](README.en.md)
|
|
2
|
+
|
|
3
|
+
# @revilise/web-utils
|
|
4
|
+
|
|
5
|
+
Набор утилит для веб-разработки, включающий React хуки и полезные функции для оптимизации производительности.
|
|
6
|
+
|
|
7
|
+
## 📦 Установка
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @revilise/web-utils
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 🚀 Доступные функции
|
|
14
|
+
|
|
15
|
+
### React Hooks
|
|
16
|
+
|
|
17
|
+
#### `useBEM`
|
|
18
|
+
Хук для работы с BEM методологией в React компонентах. Позволяет легко создавать CSS классы по методологии БЭМ.
|
|
19
|
+
|
|
20
|
+
**Параметры:**
|
|
21
|
+
- `baseClass` - базовый класс блока
|
|
22
|
+
|
|
23
|
+
**Возвращает:**
|
|
24
|
+
- Объект с методом `bem` для генерации классов
|
|
25
|
+
|
|
26
|
+
**Пример использования:**
|
|
27
|
+
```tsx
|
|
28
|
+
import { useBEM } from '@revilise/web-utils/hooks';
|
|
29
|
+
|
|
30
|
+
const MyComponent = () => {
|
|
31
|
+
const { bem } = useBEM('button');
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<button
|
|
35
|
+
className={bem("button", {
|
|
36
|
+
extraCN: { isRed: true },
|
|
37
|
+
utilCN: ['active']
|
|
38
|
+
})}
|
|
39
|
+
>
|
|
40
|
+
Нажми на меня
|
|
41
|
+
</button>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
```
|
|
45
|
+
Результат
|
|
46
|
+
|
|
47
|
+
```html
|
|
48
|
+
<button class="button button--isRed active">Нажми на меня</button>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Утилиты
|
|
52
|
+
|
|
53
|
+
#### `debounce`
|
|
54
|
+
Создает обёртку для функции, которая откладывает её выполнение до тех пор, пока не пройдет заданное время после последнего вызова.
|
|
55
|
+
|
|
56
|
+
**Параметры:**
|
|
57
|
+
- `callback` - функция для выполнения
|
|
58
|
+
- `delay` - задержка в миллисекундах
|
|
59
|
+
|
|
60
|
+
**Пример использования:**
|
|
61
|
+
```tsx
|
|
62
|
+
import { debounce } from '@revilise/web-utils/libs';
|
|
63
|
+
|
|
64
|
+
const debouncedSearch = debounce((query: string) => {
|
|
65
|
+
console.log('Поиск:', query);
|
|
66
|
+
}, 300);
|
|
67
|
+
|
|
68
|
+
// Использование в обработчике событий
|
|
69
|
+
input.addEventListener('input', (e) => {
|
|
70
|
+
debouncedSearch(e.target.value);
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### `throttle`
|
|
75
|
+
Ограничивает частоту вызовов функции. Вызывает исходную функцию не чаще одного раза в указанный интервал.
|
|
76
|
+
|
|
77
|
+
**Параметры:**
|
|
78
|
+
- `callback` - функция для выполнения
|
|
79
|
+
- `delay` - интервал в миллисекундах
|
|
80
|
+
|
|
81
|
+
**Пример использования:**
|
|
82
|
+
```tsx
|
|
83
|
+
import { throttle } from '@revilise/web-utils/libs';
|
|
84
|
+
|
|
85
|
+
const throttledScroll = throttle(() => {
|
|
86
|
+
console.log('Событие прокрутки');
|
|
87
|
+
}, 100);
|
|
88
|
+
|
|
89
|
+
window.addEventListener('scroll', throttledScroll);
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 📁 Структура экспорта
|
|
93
|
+
|
|
94
|
+
Пакет экспортирует функции в двух форматах:
|
|
95
|
+
|
|
96
|
+
```tsx
|
|
97
|
+
// React хуки
|
|
98
|
+
import { useBEM } from '@revilise/web-utils/hooks';
|
|
99
|
+
|
|
100
|
+
// Утилиты
|
|
101
|
+
import { debounce, throttle } from '@revilise/web-utils/libs';
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 🛠 Технические детали
|
|
105
|
+
|
|
106
|
+
- **TypeScript**: Полная поддержка типов
|
|
107
|
+
- **Tree-shaking**: Оптимизирован для tree-shaking
|
|
108
|
+
- **ESM/CJS**: Поддержка модульных систем ES и CommonJS
|
|
109
|
+
- **Размер**: Только самое важное
|
|
110
|
+
|
|
111
|
+
## 📄 Лицензия
|
|
112
|
+
|
|
113
|
+
MIT
|
|
114
|
+
|
|
115
|
+
## 👥 Автор
|
|
116
|
+
|
|
117
|
+
Anastasia Mutnykh (mutnyh.ao@mail.ru)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports.useBEM=function(t){return{bem(e,r={}){const s=[],n=e?`${t}__${e}`:t;s.push(n);const{extraCN:o={},utilCN:i}=r;if(Object.keys(o).length>0)for(const t in o)o[t]&&s.push(`${n}--${t}`);if("string"==typeof i&&i)s.push(i);else if(Array.isArray(i))for(const t in i){const e=i[t];e&&s.push(e)}return s.join(" ")}}};
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare type bemOptions = {
|
|
2
|
+
baseCN: string;
|
|
3
|
+
extraCN?: Record<string, boolean>;
|
|
4
|
+
utilCN?: string | Array<string | boolean>;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export declare function useBEM(baseClass: string): {
|
|
8
|
+
bem(blockCN: string, options?: Omit<bemOptions, "baseCN">): string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { }
|
package/dist/hooks.es.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function useBEM(baseClass) {
|
|
2
|
+
return {
|
|
3
|
+
bem(blockCN, options = {}) {
|
|
4
|
+
const className = [];
|
|
5
|
+
const base = !blockCN ? baseClass : `${baseClass}__${blockCN}`;
|
|
6
|
+
className.push(base);
|
|
7
|
+
const { extraCN = {}, utilCN } = options;
|
|
8
|
+
if (Object.keys(extraCN).length > 0) {
|
|
9
|
+
for (const key in extraCN) {
|
|
10
|
+
if (extraCN[key]) {
|
|
11
|
+
className.push(`${base}--${key}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (typeof utilCN === "string" && utilCN) {
|
|
16
|
+
className.push(utilCN);
|
|
17
|
+
} else if (Array.isArray(utilCN)) {
|
|
18
|
+
for (const i in utilCN) {
|
|
19
|
+
const cn = utilCN[i];
|
|
20
|
+
cn && className.push(cn);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return className.join(" ");
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
useBEM
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./hooks.cjs.js"),t=require("./libs.cjs.js");exports.useBEM=e.useBEM,exports.debounce=t.debounce,exports.throttle=t.throttle;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
declare type bemOptions = {
|
|
2
|
+
baseCN: string;
|
|
3
|
+
extraCN?: Record<string, boolean>;
|
|
4
|
+
utilCN?: string | Array<string | boolean>;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Создает обёртку для функции, которая откладывает её выполнение
|
|
9
|
+
* до тех пор, пока не пройдет заданное время `delay` после последнего вызова.
|
|
10
|
+
*
|
|
11
|
+
* Это полезно для оптимизации частых событий, например:
|
|
12
|
+
* ввод текста, изменение размера окна, прокрутка или ресайз изображений.
|
|
13
|
+
*
|
|
14
|
+
* Например, если пользователь непрерывно вводит текст, обработчик срабатывает
|
|
15
|
+
* только один раз — спустя `delay` миллисекунд после последнего нажатия клавиши.
|
|
16
|
+
*
|
|
17
|
+
* @template T
|
|
18
|
+
* @param {T} callback - Функция, которую нужно выполнить после периода "тишины".
|
|
19
|
+
* @param {number} delay - Время задержки (в миллисекундах) перед вызовом `callback`.
|
|
20
|
+
*
|
|
21
|
+
* @returns Возвращает новую функцию, которая реализует поведение debounce.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Пример: выполнение запроса только после паузы в наборе текста
|
|
25
|
+
* const debouncedSearch = debounce((query: string) => {
|
|
26
|
+
* console.log('Ищем:', query);
|
|
27
|
+
* }, 300);
|
|
28
|
+
*
|
|
29
|
+
* document.querySelector('input')?.addEventListener('input', (e) => {
|
|
30
|
+
* debouncedSearch((e.target as HTMLInputElement).value);
|
|
31
|
+
* });
|
|
32
|
+
*/
|
|
33
|
+
export declare function debounce<T extends (...args: any[]) => void>(callback: T, delay: number): (this: ThisParameterType<T>, ...args: Parameters<T>) => void;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Ограничивает частоту вызовов функции.
|
|
37
|
+
*
|
|
38
|
+
* Возвращает новую обёртку, которая вызывает исходный `callback` не чаще,
|
|
39
|
+
* чем один раз в указанный интервал `delay`. Если во время ожидания поступают
|
|
40
|
+
* новые вызовы, они откладываются и выполняются после следующего разрешённого интервала.
|
|
41
|
+
*
|
|
42
|
+
* @template T
|
|
43
|
+
* @param {T} callback - Исходная функция, которую нужно ограничить по частоте вызова.
|
|
44
|
+
* @param {number} delay - Интервал в миллисекундах, определяющий, как часто можно вызывать `callback`.
|
|
45
|
+
*
|
|
46
|
+
* @returns {(...args: Parameters<T>) => void} Обёртка, выполняющая throttle‑логику.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* const throttledScroll = throttle(() => {
|
|
50
|
+
* console.log('scroll event');
|
|
51
|
+
* }, 1000);
|
|
52
|
+
*
|
|
53
|
+
* window.addEventListener('scroll', throttledScroll);
|
|
54
|
+
*/
|
|
55
|
+
export declare function throttle<T extends (...args: any[]) => void>(callback: T, delay: number): (this: ThisParameterType<T>, ...args: Parameters<T>) => void;
|
|
56
|
+
|
|
57
|
+
export declare function useBEM(baseClass: string): {
|
|
58
|
+
bem(blockCN: string, options?: Omit<bemOptions, "baseCN">): string;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export { }
|
package/dist/index.es.js
ADDED
package/dist/libs.cjs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports.debounce=function(t,e){let o;return function(...n){clearTimeout(o),o=setTimeout(()=>t.apply(this,n),e)}},exports.throttle=function(t,e){let o=!1,n=null;const u=()=>{null===n?o=!1:(t(...n),n=null,setTimeout(u,e))};return function(...l){o?n=l:(t.apply(this,l),o=!0,setTimeout(u,e))}};
|
package/dist/libs.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Создает обёртку для функции, которая откладывает её выполнение
|
|
3
|
+
* до тех пор, пока не пройдет заданное время `delay` после последнего вызова.
|
|
4
|
+
*
|
|
5
|
+
* Это полезно для оптимизации частых событий, например:
|
|
6
|
+
* ввод текста, изменение размера окна, прокрутка или ресайз изображений.
|
|
7
|
+
*
|
|
8
|
+
* Например, если пользователь непрерывно вводит текст, обработчик срабатывает
|
|
9
|
+
* только один раз — спустя `delay` миллисекунд после последнего нажатия клавиши.
|
|
10
|
+
*
|
|
11
|
+
* @template T
|
|
12
|
+
* @param {T} callback - Функция, которую нужно выполнить после периода "тишины".
|
|
13
|
+
* @param {number} delay - Время задержки (в миллисекундах) перед вызовом `callback`.
|
|
14
|
+
*
|
|
15
|
+
* @returns Возвращает новую функцию, которая реализует поведение debounce.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Пример: выполнение запроса только после паузы в наборе текста
|
|
19
|
+
* const debouncedSearch = debounce((query: string) => {
|
|
20
|
+
* console.log('Ищем:', query);
|
|
21
|
+
* }, 300);
|
|
22
|
+
*
|
|
23
|
+
* document.querySelector('input')?.addEventListener('input', (e) => {
|
|
24
|
+
* debouncedSearch((e.target as HTMLInputElement).value);
|
|
25
|
+
* });
|
|
26
|
+
*/
|
|
27
|
+
export declare function debounce<T extends (...args: any[]) => void>(callback: T, delay: number): (this: ThisParameterType<T>, ...args: Parameters<T>) => void;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Ограничивает частоту вызовов функции.
|
|
31
|
+
*
|
|
32
|
+
* Возвращает новую обёртку, которая вызывает исходный `callback` не чаще,
|
|
33
|
+
* чем один раз в указанный интервал `delay`. Если во время ожидания поступают
|
|
34
|
+
* новые вызовы, они откладываются и выполняются после следующего разрешённого интервала.
|
|
35
|
+
*
|
|
36
|
+
* @template T
|
|
37
|
+
* @param {T} callback - Исходная функция, которую нужно ограничить по частоте вызова.
|
|
38
|
+
* @param {number} delay - Интервал в миллисекундах, определяющий, как часто можно вызывать `callback`.
|
|
39
|
+
*
|
|
40
|
+
* @returns {(...args: Parameters<T>) => void} Обёртка, выполняющая throttle‑логику.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* const throttledScroll = throttle(() => {
|
|
44
|
+
* console.log('scroll event');
|
|
45
|
+
* }, 1000);
|
|
46
|
+
*
|
|
47
|
+
* window.addEventListener('scroll', throttledScroll);
|
|
48
|
+
*/
|
|
49
|
+
export declare function throttle<T extends (...args: any[]) => void>(callback: T, delay: number): (this: ThisParameterType<T>, ...args: Parameters<T>) => void;
|
|
50
|
+
|
|
51
|
+
export { }
|
package/dist/libs.es.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
function debounce(callback, delay) {
|
|
2
|
+
let timeoutId;
|
|
3
|
+
return function(...args) {
|
|
4
|
+
clearTimeout(timeoutId);
|
|
5
|
+
timeoutId = setTimeout(() => callback.apply(this, args), delay);
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
function throttle(callback, delay) {
|
|
9
|
+
let shouldWait = false;
|
|
10
|
+
let pendingArgs = null;
|
|
11
|
+
const timeoutFunc = () => {
|
|
12
|
+
if (pendingArgs === null) {
|
|
13
|
+
shouldWait = false;
|
|
14
|
+
} else {
|
|
15
|
+
callback(...pendingArgs);
|
|
16
|
+
pendingArgs = null;
|
|
17
|
+
setTimeout(timeoutFunc, delay);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
return function(...args) {
|
|
21
|
+
if (shouldWait) {
|
|
22
|
+
pendingArgs = args;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
callback.apply(this, args);
|
|
26
|
+
shouldWait = true;
|
|
27
|
+
setTimeout(timeoutFunc, delay);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
debounce,
|
|
32
|
+
throttle
|
|
33
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@revilise/web-utils",
|
|
3
|
+
"version": "1.0.51",
|
|
4
|
+
"description": "Utility functions",
|
|
5
|
+
"homepage": "https://github.com/revilise/web-utils#readme",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/revilise/web-utils/issues"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/revilise/web-utils.git"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "Anastasia Mutnykh <mutnyh.ao@mail.ru>",
|
|
15
|
+
"sideEffects": false,
|
|
16
|
+
"main": "./dist/index.cjs.js",
|
|
17
|
+
"module": "./dist/index.es.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "vite build",
|
|
21
|
+
"test": "vitest run",
|
|
22
|
+
"prepublishOnly": "npm run build"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"import": "./dist/index.es.js",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"require": "./dist/index.cjs.js"
|
|
32
|
+
},
|
|
33
|
+
"./libs": {
|
|
34
|
+
"import": "./dist/libs.es.js",
|
|
35
|
+
"types": "./dist/libs.d.ts",
|
|
36
|
+
"require": "./dist/libs.cjs.js"
|
|
37
|
+
},
|
|
38
|
+
"./hooks": {
|
|
39
|
+
"import": "./dist/hooks.es.js",
|
|
40
|
+
"types": "./dist/hooks.d.ts",
|
|
41
|
+
"require": "./dist/hooks.cjs.js"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist"
|
|
46
|
+
],
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/node": "^24.9.1",
|
|
49
|
+
"@vitest/coverage-v8": "^4.0.4",
|
|
50
|
+
"jsdom": "^27.0.1",
|
|
51
|
+
"terser": "^5.44.0",
|
|
52
|
+
"typescript": "^5.9.3",
|
|
53
|
+
"vite": "^7.1.12",
|
|
54
|
+
"vite-plugin-dts": "^4.5.4",
|
|
55
|
+
"vitest": "^4.0.4"
|
|
56
|
+
}
|
|
57
|
+
}
|