@mediacubeco/base 0.0.1
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/dist/helpers/index.cjs +1 -0
- package/dist/helpers/index.d.ts +513 -0
- package/dist/helpers/index.mjs +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +1243 -0
- package/dist/index.mjs +1 -0
- package/dist/services/index.cjs +1 -0
- package/dist/services/index.d.ts +174 -0
- package/dist/services/index.mjs +1 -0
- package/dist/types/index.cjs +1 -0
- package/dist/types/index.d.ts +195 -0
- package/dist/types/index.mjs +1 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.d.ts +587 -0
- package/dist/utils/index.mjs +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,587 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* @description
|
|
4
|
+
* Общие утилитарные типы для проектов на TypeScript.
|
|
5
|
+
* Содержит типы для примитивов (Nullable, NotNullable), структур данных
|
|
6
|
+
* (BaseRecord, Entry, List), функций (Callback, AsyncCallback) и вспомогательные
|
|
7
|
+
* утилиты (KeyOf, ValueOf, Decrement, Increment и др.).
|
|
8
|
+
* Модуль не содержит рантайм-кода — только типы.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* type User = { id: number; name?: string | null }
|
|
13
|
+
*
|
|
14
|
+
* type UserId = ValueOf<Pick<User, 'id'>>
|
|
15
|
+
* type SafeName = NotNullable<User['name']>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
type NullablePrimitive = undefined | null;
|
|
19
|
+
/**
|
|
20
|
+
* Ключи объекта `Data`. Удобный псевдоним для `keyof`.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* type UserKeys = KeyOf<{ id: number; name: string }> // 'id' | 'name'
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
type KeyOf<Data> = keyof Data;
|
|
28
|
+
/**
|
|
29
|
+
* Объединение всех возможных значений объекта `Data`.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* type UserValue = ValueOf<{ id: number; name: string }> // number | string
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
type ValueOf<Data> = Data[KeyOf<Data>];
|
|
37
|
+
/**
|
|
38
|
+
* Тип, допускающий null или undefined (например для опциональных полей).
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* type MaybeName = Nullable<string> // string | null | undefined
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
type Nullable<Data = undefined> = Data | NullablePrimitive;
|
|
46
|
+
/**
|
|
47
|
+
* Тип, исключающий null и undefined (гарантированно заданное значение).
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* type Name = NotNullable<string | null | undefined> // string
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
type NotNullable<Data = undefined> = Exclude<Data, NullablePrimitive>;
|
|
55
|
+
/**
|
|
56
|
+
* Допустимые ключи объекта (как в Record).
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* type Key = BaseKey // string | number | symbol
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
type BaseKey = string | number | symbol;
|
|
64
|
+
/**
|
|
65
|
+
* Массив элементов (базовый тип для списков).
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* type IdList = BaseList<number> // number[]
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
type BaseList<Item = unknown> = Item[];
|
|
73
|
+
/**
|
|
74
|
+
* Объект с ключами Key и значениями Value (обобщение Record).
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* type UserMap = BaseRecord<string, 'name' | 'role'>
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
type BaseRecord<Value = unknown, Key extends BaseKey = BaseKey> = Record<Key, Value>;
|
|
82
|
+
/**
|
|
83
|
+
* Синхронная функция с заданным списком параметров и результатом.
|
|
84
|
+
* @template ParamList - кортеж типов аргументов
|
|
85
|
+
* @template Result - тип возвращаемого значения
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* type Sum = Callback<[number, number], number>
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
type Callback<ParamList extends BaseList = BaseList, Result = void> = (...paramList: ParamList) => Result;
|
|
93
|
+
/** Любая синхронная функция без ограничений на аргументы и результат. */
|
|
94
|
+
type AnyCallback = Callback<any[], any>;
|
|
95
|
+
/** Извлекает кортеж аргументов из типа функции. */
|
|
96
|
+
type CallbackParamList<Callback> = Callback extends (...args: infer ParamList) => any ? ParamList : never;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Асинхронная задержка на указанное количество миллисекунд.
|
|
100
|
+
* Удобна для пауз между ретраями, анимациями или батч-обработкой.
|
|
101
|
+
*
|
|
102
|
+
* @param delay - Длительность ожидания в миллисекундах
|
|
103
|
+
* @returns Promise, который выполнится через указанное время
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* await wait(300)
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
declare const wait: (delay: number) => Promise<unknown>;
|
|
111
|
+
/**
|
|
112
|
+
* Собирает объект из переданного значения и опционального исходного объекта.
|
|
113
|
+
* Поддерживает три сценария: вернуть объект как есть, слить два объекта или записать примитив по ключу.
|
|
114
|
+
*
|
|
115
|
+
* @param value - Объект целиком или значение для поля
|
|
116
|
+
* @param data - Исходный объект для объединения
|
|
117
|
+
* @param key - Ключ, в который нужно записать примитивное значение
|
|
118
|
+
* @returns Новый объект с объединёнными данными
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* compose({ name: 'John' }) // { name: 'John' }
|
|
123
|
+
* compose({ age: 18 }, { name: 'John' }) // { name: 'John', age: 18 }
|
|
124
|
+
* compose('John', { age: 18 }, 'name') // { age: 18, name: 'John' }
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
declare function compose<Data extends object, Value extends Data>(value: Value): Value;
|
|
128
|
+
declare function compose<Data extends object, Value extends Data>(value: Value, data: Data): Data & Value;
|
|
129
|
+
declare function compose<Data extends object, Key extends KeyOf<Data>, Value extends Data[Key] | Data>(value: Value, data: Nullable<Partial<Data>>, key: Nullable<Key>): Data;
|
|
130
|
+
/**
|
|
131
|
+
* Возвращает значение объекта по ключу.
|
|
132
|
+
* Если ключ отсутствует или равен null/undefined, может вернуть значение по умолчанию.
|
|
133
|
+
*
|
|
134
|
+
* @param key - Ключ поля
|
|
135
|
+
* @param data - Объект-источник
|
|
136
|
+
* @param defaultValue - Резервное значение, если ключ не задан или значение отсутствует
|
|
137
|
+
* @returns Значение по ключу или defaultValue
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* getValueByKey('name', { name: 'John' }) // 'John'
|
|
142
|
+
* getValueByKey('age', { name: 'John' }, 18) // 18
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
declare function getValueByKey<Value, Key extends BaseKey>(key: Key, data: BaseRecord<Value, Key>): Value;
|
|
146
|
+
declare function getValueByKey<Value, Key extends BaseKey, DefaultValue>(key: Nullable<Key>, data: Partial<BaseRecord<Value, Key>>, defaultValue: DefaultValue): Value | DefaultValue;
|
|
147
|
+
/**
|
|
148
|
+
* Преобразует значения объекта, сохраняя его исходные ключи.
|
|
149
|
+
*
|
|
150
|
+
* @param data - Объект, который нужно обойти
|
|
151
|
+
* @param callback - Функция преобразования значения
|
|
152
|
+
* @returns Новый объект с теми же ключами и результатами callback
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* mapRecord({ a: 1, b: 2 }, (_, value) => value * 2) // { a: 2, b: 4 }
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
declare const mapRecord: <ResultValue, Data extends object, Key extends KeyOf<Data>, Value extends ValueOf<Data>, Result = BaseRecord<ResultValue, Key>>(data: Data, callback: (key: Key, value: Value, index: number, list: [Key, Value][]) => ResultValue) => Result;
|
|
160
|
+
/**
|
|
161
|
+
* Безопасно вызывает callback, если передано действительно вызываемое значение.
|
|
162
|
+
*
|
|
163
|
+
* @param callback - Функция для вызова
|
|
164
|
+
* @param paramList - Аргументы, которые будут переданы в callback
|
|
165
|
+
* @returns Результат callback или undefined, если callback не является функцией
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* runCallback((name: string) => `Hello, ${name}`, 'John') // 'Hello, John'
|
|
170
|
+
* runCallback(undefined, 'John') // undefined
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
declare const runCallback: <Callback, Result = Callback extends AnyCallback ? ReturnType<Callback> : void>(callback: Callback, ...paramList: CallbackParamList<Callback>) => Result;
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Создаёт функцию с отложенным вызовом callback.
|
|
177
|
+
* Повторный вызов до истечения delay сбрасывает предыдущий таймер.
|
|
178
|
+
*
|
|
179
|
+
* @param callback - Функция, которую нужно вызывать с задержкой
|
|
180
|
+
* @param delay - Задержка в миллисекундах
|
|
181
|
+
* @returns Обёртка с debounce-поведением
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* const save = debounce(() => api.save(), 300)
|
|
186
|
+
* input.addEventListener('input', save)
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
declare const debounce: <Callback>(callback: Callback, delay: number) => (...params: CallbackParamList<Callback>) => void;
|
|
190
|
+
/**
|
|
191
|
+
* Создаёт функцию, которая допускает не более одного вызова за период delay.
|
|
192
|
+
*
|
|
193
|
+
* @param callback - Функция, которую нужно ограничить по частоте вызовов
|
|
194
|
+
* @param delay - Интервал блокировки в миллисекундах
|
|
195
|
+
* @returns Обёртка с throttle-поведением
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```typescript
|
|
199
|
+
* const onScroll = throttle(() => console.log('scroll'), 100)
|
|
200
|
+
* window.addEventListener('scroll', onScroll)
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
declare const throttle: <Callback>(callback: Callback, delay: number) => (...params: CallbackParamList<Callback>) => void;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Фильтрует список объектов по булевому полю.
|
|
207
|
+
* Если у элемента нет указанного ключа, такой элемент сохраняется.
|
|
208
|
+
*
|
|
209
|
+
* @param list - Исходный список объектов
|
|
210
|
+
* @param key - Булево поле для фильтрации, по умолчанию `isVisible`
|
|
211
|
+
* @returns Новый список, содержащий только подходящие элементы
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```typescript
|
|
215
|
+
* filterByKey([{ isVisible: true }, { isVisible: false }]) // [{ isVisible: true }]
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
declare function filterByKey<Key extends KeyOf<Item>, Item extends object & BaseRecord<boolean, Key>>(list: Item[], key?: Key): Item[];
|
|
219
|
+
/**
|
|
220
|
+
* Удаляет дубликаты из списка объектов по значению указанного ключа.
|
|
221
|
+
*
|
|
222
|
+
* @param data - Список объектов
|
|
223
|
+
* @param key - Ключ, по которому определяется уникальность
|
|
224
|
+
* @returns Новый список без повторяющихся значений key
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```typescript
|
|
228
|
+
* filterDuplicateByKey([{ id: 1 }, { id: 1 }, { id: 2 }], 'id') // [{ id: 1 }, { id: 2 }]
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
declare function filterDuplicateByKey<Key extends BaseKey, Item extends object & BaseRecord<any, Key>>(data: Item[], key: Key): Item[];
|
|
232
|
+
/**
|
|
233
|
+
* Возвращает элементы первого списка, которые присутствуют во втором.
|
|
234
|
+
*
|
|
235
|
+
* @param inputList - Список для проверки
|
|
236
|
+
* @param list - Список значений, с которыми нужно сравнить
|
|
237
|
+
* @returns Пересечение двух списков
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```typescript
|
|
241
|
+
* filterEqualValues([1, 2, 3], [2, 4]) // [2]
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
declare function filterEqualValues<Item>(inputList: Item[], list: Item[]): Item[];
|
|
245
|
+
/**
|
|
246
|
+
* Удаляет из списка `null` и `undefined`, одновременно сужая тип результата.
|
|
247
|
+
*
|
|
248
|
+
* @param list - Исходный список
|
|
249
|
+
* @returns Список только с непустыми значениями
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```typescript
|
|
253
|
+
* filterNullableValues([1, null, 2, undefined]) // [1, 2]
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
declare function filterNullableValues<Item>(list: Item[]): NotNullable<Item>[];
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Проверяет, что объект не содержит перечисляемых свойств.
|
|
260
|
+
*
|
|
261
|
+
* @param object - Объект для проверки
|
|
262
|
+
* @returns `true`, если объект пустой
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* isObjectEmpty({}) // true
|
|
267
|
+
* isObjectEmpty({ id: 1 }) // false
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
declare function isObjectEmpty<Param extends object>(object: Param): boolean;
|
|
271
|
+
/**
|
|
272
|
+
* Проверяет, что массив не содержит элементов.
|
|
273
|
+
*
|
|
274
|
+
* @param array - Массив для проверки
|
|
275
|
+
* @returns `true`, если массив пустой
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* ```typescript
|
|
279
|
+
* isArrayEmpty([]) // true
|
|
280
|
+
* isArrayEmpty([1]) // false
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
declare function isArrayEmpty<Param extends BaseList>(array: Param): boolean;
|
|
284
|
+
/**
|
|
285
|
+
* Проверяет наличие ключа в объекте и сужает тип data при успешной проверке.
|
|
286
|
+
*
|
|
287
|
+
* @param key - Ключ, наличие которого нужно проверить
|
|
288
|
+
* @param data - Значение, которое предполагается объектом
|
|
289
|
+
* @returns `true`, если ключ существует в объекте
|
|
290
|
+
*
|
|
291
|
+
* @example
|
|
292
|
+
* ```typescript
|
|
293
|
+
* if (hasKey('name', payload)) {
|
|
294
|
+
* console.log(payload.name)
|
|
295
|
+
* }
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
298
|
+
declare function hasKey<Key extends BaseKey, Data, Value>(key: Key, data: Data): data is Data & BaseRecord<Value, Key>;
|
|
299
|
+
/**
|
|
300
|
+
* Проверяет, есть ли у двух списков хотя бы одно общее значение.
|
|
301
|
+
*
|
|
302
|
+
* @param inputList - Первый список
|
|
303
|
+
* @param list - Второй список
|
|
304
|
+
* @returns `true`, если найдено хотя бы одно совпадение
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* ```typescript
|
|
308
|
+
* hasEqualValues(['a', 'b'], ['c', 'b']) // true
|
|
309
|
+
* hasEqualValues(['a'], ['c']) // false
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
312
|
+
declare function hasEqualValues<Item>(inputList: Item[], list: Item[]): boolean;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Приводит значение к массиву: если передано одно значение — возвращает массив из одного элемента,
|
|
316
|
+
* если передан массив — возвращает его без изменений.
|
|
317
|
+
* Удобно для API, которые могут принимать как один элемент, так и массив.
|
|
318
|
+
*
|
|
319
|
+
* @param param - Один элемент или массив элементов
|
|
320
|
+
* @returns Массив элементов (всегда массив)
|
|
321
|
+
*
|
|
322
|
+
* @example
|
|
323
|
+
* ```typescript
|
|
324
|
+
* forceList(1) // [1]
|
|
325
|
+
* forceList([1, 2]) // [1, 2]
|
|
326
|
+
* ```
|
|
327
|
+
*
|
|
328
|
+
* @example
|
|
329
|
+
* ```typescript
|
|
330
|
+
* const ids = forceList(query.id) // query.id: string | string[]
|
|
331
|
+
* ids.forEach(processId)
|
|
332
|
+
* ```
|
|
333
|
+
*/
|
|
334
|
+
declare function forceList<Item>(param: Item | Item[]): Item[];
|
|
335
|
+
/**
|
|
336
|
+
* Разбивает массив на подмассивы заданного размера (чанки).
|
|
337
|
+
* Последний чанк может быть меньше size, если длина массива не кратна size.
|
|
338
|
+
*
|
|
339
|
+
* @param list - Исходный массив
|
|
340
|
+
* @param size - Размер одного чанка (целое положительное число)
|
|
341
|
+
* @returns Массив чанков (массив массивов)
|
|
342
|
+
*
|
|
343
|
+
* @example
|
|
344
|
+
* ```typescript
|
|
345
|
+
* chunkList([1, 2, 3, 4, 5], 2) // [[1, 2], [3, 4], [5]]
|
|
346
|
+
* chunkList([], 3) // []
|
|
347
|
+
* ```
|
|
348
|
+
*
|
|
349
|
+
* @example
|
|
350
|
+
* ```typescript
|
|
351
|
+
* const pages = chunkList(items, PAGE_SIZE)
|
|
352
|
+
* for (const page of pages) {
|
|
353
|
+
* await saveBatch(page)
|
|
354
|
+
* }
|
|
355
|
+
* ```
|
|
356
|
+
*/
|
|
357
|
+
declare function chunkList<Item>(list: Item[], size: number): Item[][];
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Проверяет, что значение равно `undefined`.
|
|
361
|
+
*
|
|
362
|
+
* @example
|
|
363
|
+
* ```typescript
|
|
364
|
+
* isUndefined(undefined) // true
|
|
365
|
+
* isUndefined(null) // false
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
368
|
+
declare const isUndefined: (param: unknown) => param is undefined;
|
|
369
|
+
/**
|
|
370
|
+
* Проверяет, что значение равно `null`.
|
|
371
|
+
*
|
|
372
|
+
* @example
|
|
373
|
+
* ```typescript
|
|
374
|
+
* isNull(null) // true
|
|
375
|
+
* isNull(undefined) // false
|
|
376
|
+
* ```
|
|
377
|
+
*/
|
|
378
|
+
declare const isNull: (param: unknown) => param is null;
|
|
379
|
+
/**
|
|
380
|
+
* Проверяет, что значение равно `null` или `undefined`.
|
|
381
|
+
*
|
|
382
|
+
* @example
|
|
383
|
+
* ```typescript
|
|
384
|
+
* isNullable(undefined) // true
|
|
385
|
+
* isNullable('value') // false
|
|
386
|
+
* ```
|
|
387
|
+
*/
|
|
388
|
+
declare const isNullable: (param: unknown) => param is Nullable;
|
|
389
|
+
/**
|
|
390
|
+
* Проверяет, что значение имеет тип `string`.
|
|
391
|
+
*
|
|
392
|
+
* @example
|
|
393
|
+
* ```typescript
|
|
394
|
+
* isString('hello') // true
|
|
395
|
+
* isString(42) // false
|
|
396
|
+
* ```
|
|
397
|
+
*/
|
|
398
|
+
declare const isString: (param: unknown) => param is string;
|
|
399
|
+
/**
|
|
400
|
+
* Проверяет, что значение имеет тип `number`.
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```typescript
|
|
404
|
+
* isNumber(42) // true
|
|
405
|
+
* isNumber('42') // false
|
|
406
|
+
* ```
|
|
407
|
+
*/
|
|
408
|
+
declare const isNumber: (param: unknown) => param is number;
|
|
409
|
+
/**
|
|
410
|
+
* Проверяет, что значение имеет тип `bigint`.
|
|
411
|
+
*
|
|
412
|
+
* @example
|
|
413
|
+
* ```typescript
|
|
414
|
+
* isBigint(10n) // true
|
|
415
|
+
* isBigint(10) // false
|
|
416
|
+
* ```
|
|
417
|
+
*/
|
|
418
|
+
declare const isBigint: (param: unknown) => param is bigint;
|
|
419
|
+
/**
|
|
420
|
+
* Проверяет, что значение является `NaN`.
|
|
421
|
+
*
|
|
422
|
+
* @example
|
|
423
|
+
* ```typescript
|
|
424
|
+
* isNaN(Number('foo')) // true
|
|
425
|
+
* isNaN(10) // false
|
|
426
|
+
* ```
|
|
427
|
+
*/
|
|
428
|
+
declare const isNaN: (param: unknown) => param is number;
|
|
429
|
+
/**
|
|
430
|
+
* Проверяет, что значение имеет тип `boolean`.
|
|
431
|
+
*
|
|
432
|
+
* @example
|
|
433
|
+
* ```typescript
|
|
434
|
+
* isBoolean(true) // true
|
|
435
|
+
* isBoolean(0) // false
|
|
436
|
+
* ```
|
|
437
|
+
*/
|
|
438
|
+
declare const isBoolean: (param: unknown) => param is boolean;
|
|
439
|
+
/**
|
|
440
|
+
* Проверяет, что значение имеет тип `symbol`.
|
|
441
|
+
*
|
|
442
|
+
* @example
|
|
443
|
+
* ```typescript
|
|
444
|
+
* isSymbol(Symbol('id')) // true
|
|
445
|
+
* isSymbol('id') // false
|
|
446
|
+
* ```
|
|
447
|
+
*/
|
|
448
|
+
declare const isSymbol: (param: unknown) => param is symbol;
|
|
449
|
+
/**
|
|
450
|
+
* Проверяет, что значение относится к объектным типам JavaScript.
|
|
451
|
+
*
|
|
452
|
+
* @example
|
|
453
|
+
* ```typescript
|
|
454
|
+
* isAnyObject({}) // true
|
|
455
|
+
* isAnyObject(null) // true
|
|
456
|
+
* ```
|
|
457
|
+
*/
|
|
458
|
+
declare const isAnyObject: (param: unknown) => param is object;
|
|
459
|
+
/**
|
|
460
|
+
* Проверяет, что значение является "простым" объектом, а не массивом, датой, ошибкой или другой специальной структурой.
|
|
461
|
+
*
|
|
462
|
+
* @param param - Значение для проверки
|
|
463
|
+
* @returns `true`, если значение можно трактовать как обычный объект
|
|
464
|
+
*
|
|
465
|
+
* @example
|
|
466
|
+
* ```typescript
|
|
467
|
+
* isObject({ id: 1 }) // true
|
|
468
|
+
* isObject([1, 2, 3]) // false
|
|
469
|
+
* ```
|
|
470
|
+
*/
|
|
471
|
+
declare const isObject: <Param = object>(param: unknown) => param is Param;
|
|
472
|
+
/**
|
|
473
|
+
* Проверяет, что значение является массивом.
|
|
474
|
+
*
|
|
475
|
+
* @example
|
|
476
|
+
* ```typescript
|
|
477
|
+
* isArray([1, 2]) // true
|
|
478
|
+
* isArray({ length: 2 }) // false
|
|
479
|
+
* ```
|
|
480
|
+
*/
|
|
481
|
+
declare const isArray: <Param = unknown>(param: unknown) => param is Param[];
|
|
482
|
+
/**
|
|
483
|
+
* Проверяет, что значение является `ArrayBuffer`.
|
|
484
|
+
*
|
|
485
|
+
* @example
|
|
486
|
+
* ```typescript
|
|
487
|
+
* isArrayBuffer(new ArrayBuffer(8)) // true
|
|
488
|
+
* ```
|
|
489
|
+
*/
|
|
490
|
+
declare const isArrayBuffer: (param: unknown) => param is ArrayBuffer;
|
|
491
|
+
/**
|
|
492
|
+
* Проверяет, что значение является `Map`.
|
|
493
|
+
*
|
|
494
|
+
* @example
|
|
495
|
+
* ```typescript
|
|
496
|
+
* isMap(new Map()) // true
|
|
497
|
+
* ```
|
|
498
|
+
*/
|
|
499
|
+
declare const isMap: (param: unknown) => param is Map<unknown, unknown>;
|
|
500
|
+
/**
|
|
501
|
+
* Проверяет, что значение является `Set`.
|
|
502
|
+
*
|
|
503
|
+
* @example
|
|
504
|
+
* ```typescript
|
|
505
|
+
* isSet(new Set()) // true
|
|
506
|
+
* ```
|
|
507
|
+
*/
|
|
508
|
+
declare const isSet: (param: unknown) => param is Set<unknown>;
|
|
509
|
+
/**
|
|
510
|
+
* Проверяет, что значение является `WeakMap`.
|
|
511
|
+
*
|
|
512
|
+
* @example
|
|
513
|
+
* ```typescript
|
|
514
|
+
* isWeakMap(new WeakMap()) // true
|
|
515
|
+
* ```
|
|
516
|
+
*/
|
|
517
|
+
declare const isWeakMap: (param: unknown) => param is WeakMap<object, unknown>;
|
|
518
|
+
/**
|
|
519
|
+
* Проверяет, что значение является `WeakSet`.
|
|
520
|
+
*
|
|
521
|
+
* @example
|
|
522
|
+
* ```typescript
|
|
523
|
+
* isWeakSet(new WeakSet()) // true
|
|
524
|
+
* ```
|
|
525
|
+
*/
|
|
526
|
+
declare const isWeakSet: (param: unknown) => param is WeakSet<object>;
|
|
527
|
+
/**
|
|
528
|
+
* Проверяет, что значение является объектом `Date`.
|
|
529
|
+
*
|
|
530
|
+
* @example
|
|
531
|
+
* ```typescript
|
|
532
|
+
* isDate(new Date()) // true
|
|
533
|
+
* ```
|
|
534
|
+
*/
|
|
535
|
+
declare const isDate: (param: unknown) => param is Error;
|
|
536
|
+
/**
|
|
537
|
+
* Проверяет, что значение является экземпляром `Error`.
|
|
538
|
+
*
|
|
539
|
+
* @example
|
|
540
|
+
* ```typescript
|
|
541
|
+
* isError(new Error('boom')) // true
|
|
542
|
+
* ```
|
|
543
|
+
*/
|
|
544
|
+
declare const isError: (param: unknown) => param is Error;
|
|
545
|
+
/**
|
|
546
|
+
* Проверяет, что значение является `Proxy`.
|
|
547
|
+
*
|
|
548
|
+
* @example
|
|
549
|
+
* ```typescript
|
|
550
|
+
* const value = new Proxy({}, {})
|
|
551
|
+
* isProxy(value) // true
|
|
552
|
+
* ```
|
|
553
|
+
*/
|
|
554
|
+
declare const isProxy: (param: unknown) => param is ProxyConstructor;
|
|
555
|
+
/**
|
|
556
|
+
* Проверяет, что значение является `RegExp`.
|
|
557
|
+
*
|
|
558
|
+
* @example
|
|
559
|
+
* ```typescript
|
|
560
|
+
* isRegExp(/test/) // true
|
|
561
|
+
* ```
|
|
562
|
+
*/
|
|
563
|
+
declare const isRegExp: (param: unknown) => param is RegExp;
|
|
564
|
+
/**
|
|
565
|
+
* Проверяет, что значение является `Promise`.
|
|
566
|
+
*
|
|
567
|
+
* @example
|
|
568
|
+
* ```typescript
|
|
569
|
+
* isPromise(Promise.resolve()) // true
|
|
570
|
+
* ```
|
|
571
|
+
*/
|
|
572
|
+
declare const isPromise: (param: unknown) => param is Promise<typeof param>;
|
|
573
|
+
/**
|
|
574
|
+
* Проверяет, что значение является функцией.
|
|
575
|
+
*
|
|
576
|
+
* @param param - Значение для проверки
|
|
577
|
+
* @returns `true`, если значение можно вызвать как функцию
|
|
578
|
+
*
|
|
579
|
+
* @example
|
|
580
|
+
* ```typescript
|
|
581
|
+
* isFunction(() => true) // true
|
|
582
|
+
* isFunction('callback') // false
|
|
583
|
+
* ```
|
|
584
|
+
*/
|
|
585
|
+
declare const isFunction: <Callback = <ParamList extends BaseList, Result>(...paramList: ParamList) => Result>(param: unknown) => param is Callback;
|
|
586
|
+
|
|
587
|
+
export { chunkList, compose, debounce, filterByKey, filterDuplicateByKey, filterEqualValues, filterNullableValues, forceList, getValueByKey, hasEqualValues, hasKey, isAnyObject, isArray, isArrayBuffer, isArrayEmpty, isBigint, isBoolean, isDate, isError, isFunction, isMap, isNaN, isNull, isNullable, isNumber, isObject, isObjectEmpty, isPromise, isProxy, isRegExp, isSet, isString, isSymbol, isUndefined, isWeakMap, isWeakSet, mapRecord, runCallback, throttle, wait };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const n=n=>void 0===n,t=n=>null===n,e=e=>n(e)||t(e),r=n=>"string"==typeof n,o=n=>"number"==typeof n,i=n=>"bigint"==typeof n,u=n=>Number.isNaN(n),c=n=>"boolean"==typeof n,f=n=>"symbol"==typeof n,s=n=>"object"==typeof n,a=n=>{const t=[l,m,p,y,b,g,h,j,d,x,A].some(t=>t(n));return!!n&&"object"==typeof n&&!t},l=n=>Array.isArray(n),m=n=>n instanceof ArrayBuffer,p=n=>n instanceof Map,y=n=>n instanceof Set,b=n=>n instanceof Map,g=n=>n instanceof Set,h=n=>n instanceof Date,j=n=>n instanceof Error,T=n=>n instanceof Proxy,d=n=>n instanceof RegExp,x=n=>n instanceof Promise,A=n=>n instanceof Function,E=n=>new Promise(t=>setTimeout(t,n));function N(n,t,r){const o=!a(n);return!e(r)&&{...t,...o?{[r]:n}:n}||!e(t)&&{...t,...n}||{...n}}function P(n,t,r){return e(n)?r:2===arguments.length?t[n]:t[n]??r}const M=(n,t)=>{const e=Object.entries(n);return Object.fromEntries(e.map(([n,e],r,o)=>[n,t(n,e,r,o)]))},O=(n,...t)=>{if(A(n))return n(...t)},S=(n,t)=>{let e;return(...r)=>{e&&clearTimeout(e),e=setTimeout(()=>O(n,...r),t)}},v=(n,t)=>{let e=!0;return(...r)=>{e&&(O(n,...r),e=!1),setTimeout(()=>e=!0,t)}};function w(n){for(const t in n)return!1;return!0}function B(n){return 0===n.length}function D(n,t){return!(!s(t)||!(n in t))}function F(n,t){return!!k(n,t).length}function R(n,t="isVisible"){return n.filter(n=>!D(t,n)||n[t])}function V(n,t){return n.reduce((n,e)=>n.some(n=>n[t]===e[t])?n:[...n,e],[])}function k(n,t){return n.filter(n=>t.includes(n))}function q(n){return n.filter(n=>!e(n))}function z(n){return l(n)?n:[n]}function C(n,t){const e=[];for(let r=0;r<n.length;r+=t)e.push(n.slice(r,r+t));return e}export{C as chunkList,N as compose,S as debounce,R as filterByKey,V as filterDuplicateByKey,k as filterEqualValues,q as filterNullableValues,z as forceList,P as getValueByKey,F as hasEqualValues,D as hasKey,s as isAnyObject,l as isArray,m as isArrayBuffer,B as isArrayEmpty,i as isBigint,c as isBoolean,h as isDate,j as isError,A as isFunction,p as isMap,u as isNaN,t as isNull,e as isNullable,o as isNumber,a as isObject,w as isObjectEmpty,x as isPromise,T as isProxy,d as isRegExp,y as isSet,r as isString,f as isSymbol,n as isUndefined,b as isWeakMap,g as isWeakSet,M as mapRecord,O as runCallback,v as throttle,E as wait};
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"private": false,
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"name": "@mediacubeco/base",
|
|
5
|
+
"description": "Base by Mediacube developers",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"keywords": [
|
|
12
|
+
"mediacube",
|
|
13
|
+
"mediacubeco",
|
|
14
|
+
"base"
|
|
15
|
+
],
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"eslint": "^9.39.1",
|
|
18
|
+
"prettier": "^3.8.1",
|
|
19
|
+
"typescript": "^5.9.3",
|
|
20
|
+
"@mediacubeco/prettier-config": "0.0.1",
|
|
21
|
+
"@mediacubeco/eslint-config": "0.0.1",
|
|
22
|
+
"@mediacubeco/typescript-config": "0.0.1"
|
|
23
|
+
},
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"import": "./dist/index.mjs",
|
|
27
|
+
"require": "./dist/index.cjs",
|
|
28
|
+
"types": "./dist/index.d.ts"
|
|
29
|
+
},
|
|
30
|
+
"./helpers": {
|
|
31
|
+
"require": "./dist/helpers/index.cjs",
|
|
32
|
+
"import": "./dist/helpers/index.mjs",
|
|
33
|
+
"types": "./dist/helpers/index.d.ts"
|
|
34
|
+
},
|
|
35
|
+
"./services": {
|
|
36
|
+
"import": "./dist/services/index.mjs",
|
|
37
|
+
"require": "./dist/services/index.cjs",
|
|
38
|
+
"types": "./dist/services/index.d.ts"
|
|
39
|
+
},
|
|
40
|
+
"./types": {
|
|
41
|
+
"import": "./dist/types/index.mjs",
|
|
42
|
+
"require": "./dist/types/index.cjs",
|
|
43
|
+
"types": "./dist/types/index.d.ts"
|
|
44
|
+
},
|
|
45
|
+
"./utils": {
|
|
46
|
+
"import": "./dist/utils/index.mjs",
|
|
47
|
+
"require": "./dist/utils/index.cjs",
|
|
48
|
+
"types": "./dist/utils/index.d.ts"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|