intelicoreact 2.0.7 → 2.0.9
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/charts/package.json +5 -0
- package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.d.ts +1 -1
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.d.ts +7 -7
- package/dist/Atomic/FormElements/Input/Input.d.ts +1 -1
- package/dist/Atomic/FormElements/Input/types.d.ts +0 -5
- package/dist/Atomic/FormElements/InputMask3/InputMask3.interface.d.ts +0 -3
- package/dist/Atomic/FormElements/NumericInput/NumericInput.d.ts +15 -15
- package/dist/Atomic/FormElements/RangeSlider/RangeSlider.d.ts +11 -11
- package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.interface.d.ts +1 -1
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.interface.d.ts +4 -4
- package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.d.ts +2 -2
- package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.d.ts +4 -4
- package/dist/Atomic/UI/AccordionTable/AccordionTable.d.ts +1 -1
- package/dist/Atomic/UI/AccordionText/AccordionText.d.ts +4 -4
- package/dist/Atomic/UI/Alert/Alert.interface.d.ts +0 -2
- package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.d.ts +4 -4
- package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.d.ts +1 -1
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.d.ts +2 -2
- package/dist/Atomic/UI/PieChart/PieChart.d.ts +3 -3
- package/dist/Atomic/UI/Table/Partials/TdHeader.d.ts +1 -1
- package/dist/Atomic/UI/Table/Partials/TdRow.d.ts +1 -1
- package/dist/Atomic/UI/Table/Table.d.ts +1 -1
- package/dist/Classes/AbortableFetch.d.ts +17 -17
- package/dist/Classes/RESTAPI/index.d.ts +1 -1
- package/dist/Classes/RESTAPI/partials/AbortableFetch.d.ts +17 -17
- package/dist/Classes/RESTAPI/partials/CredentialsProcessing.d.ts +4 -4
- package/dist/Functions/hooks/useFormFieldsChangesManager.d.ts +2 -2
- package/dist/Functions/sdk/runtime-sdk/transport.d.ts +2 -2
- package/dist/Functions/useFieldFocus.d.ts +2 -2
- package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.d.ts +1 -1
- package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.d.ts +1 -1
- package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.d.ts +2 -2
- package/dist/Functions/useFormTools/functions/General.d.ts +3 -3
- package/dist/Functions/useFormTools/functions/RenderFields.d.ts +5 -5
- package/dist/Functions/useFormTools/index.d.ts +20 -20
- package/dist/Functions/useMetaInfo.d.ts +2 -2
- package/dist/Functions/usePasswordChecker.d.ts +1 -1
- package/dist/Functions/utils.d.ts +11 -11
- package/dist/charts.cjs +927 -0
- package/dist/charts.cjs.map +7 -0
- package/dist/charts.d.ts +7 -0
- package/dist/charts.js +911 -0
- package/dist/charts.js.map +7 -0
- package/dist/form.cjs +1498 -1933
- package/dist/form.cjs.map +4 -4
- package/dist/form.js +1114 -1549
- package/dist/form.js.map +4 -4
- package/dist/hooks.cjs +8 -324
- package/dist/hooks.cjs.map +4 -4
- package/dist/hooks.js +8 -324
- package/dist/hooks.js.map +4 -4
- package/dist/index.cjs +2507 -9293
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +2059 -8861
- package/dist/index.js.map +4 -4
- package/dist/layout.cjs +207 -6308
- package/dist/layout.cjs.map +4 -4
- package/dist/layout.js +202 -6303
- package/dist/layout.js.map +4 -4
- package/dist/presets.cjs +0 -643
- package/dist/presets.cjs.map +4 -4
- package/dist/presets.js +0 -633
- package/dist/presets.js.map +4 -4
- package/dist/ui.cjs +711 -7854
- package/dist/ui.cjs.map +4 -4
- package/dist/ui.d.ts +0 -5
- package/dist/ui.js +722 -7881
- package/dist/ui.js.map +4 -4
- package/dist/utils.cjs +4 -51
- package/dist/utils.cjs.map +3 -3
- package/dist/utils.js +4 -51
- package/dist/utils.js.map +3 -3
- package/package.json +19 -3
- package/styles.css +1 -0
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.d.ts +0 -4
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.d.ts +0 -6
- package/dist/Atomic/UI/DynamicIcon/index.d.ts +0 -3
package/dist/utils.js
CHANGED
|
@@ -209,50 +209,11 @@ var assertions = {
|
|
|
209
209
|
};
|
|
210
210
|
var assertions_default = assertions;
|
|
211
211
|
|
|
212
|
+
// src/Functions/utils.js
|
|
213
|
+
import { useEffect } from "react";
|
|
214
|
+
import moment from "moment-timezone";
|
|
215
|
+
|
|
212
216
|
// src/Constants/index.constants.js
|
|
213
|
-
var KEYBOARD_SERVICE_KEYS = [
|
|
214
|
-
"Escape",
|
|
215
|
-
"F1",
|
|
216
|
-
"F2",
|
|
217
|
-
"F3",
|
|
218
|
-
"F4",
|
|
219
|
-
"F5",
|
|
220
|
-
"F6",
|
|
221
|
-
"F7",
|
|
222
|
-
"F8",
|
|
223
|
-
"F9",
|
|
224
|
-
"F10",
|
|
225
|
-
"F11",
|
|
226
|
-
"F12",
|
|
227
|
-
"Tab",
|
|
228
|
-
"CapsLock",
|
|
229
|
-
"Shift",
|
|
230
|
-
"Control",
|
|
231
|
-
"Meta",
|
|
232
|
-
"Option",
|
|
233
|
-
"Alt",
|
|
234
|
-
"ContextMenu",
|
|
235
|
-
"ArrowLeft",
|
|
236
|
-
"ArrowRight",
|
|
237
|
-
"ArrowUp",
|
|
238
|
-
"ArrowDown",
|
|
239
|
-
"NumLock",
|
|
240
|
-
"Backspace",
|
|
241
|
-
"Delete",
|
|
242
|
-
"Enter",
|
|
243
|
-
"Return",
|
|
244
|
-
"Insert",
|
|
245
|
-
"Home",
|
|
246
|
-
"End",
|
|
247
|
-
"PageUp",
|
|
248
|
-
"PageDown",
|
|
249
|
-
"PrintScreen",
|
|
250
|
-
"ScrollLock",
|
|
251
|
-
"Pause"
|
|
252
|
-
];
|
|
253
|
-
var MAX_PHONE_LENGTH = 10;
|
|
254
|
-
var MAX_NAME_LENGTH = 128;
|
|
255
|
-
var DEFAULT_DATE_MASK_NO_VALUE_SYMBOL = "_";
|
|
256
217
|
var DEFAULT_COLORS = [
|
|
257
218
|
"#D9C1FF",
|
|
258
219
|
"#FFBAF0",
|
|
@@ -268,12 +229,6 @@ var DEFAULT_COLORS = [
|
|
|
268
229
|
"#76F7ED",
|
|
269
230
|
"#8AFEC8"
|
|
270
231
|
];
|
|
271
|
-
var KEYBOARD_KEY_CODES = {
|
|
272
|
-
Backspace: 8,
|
|
273
|
-
Delete: 46,
|
|
274
|
-
ARROW_LEFT: 37,
|
|
275
|
-
ARROW_RIGHT: 39
|
|
276
|
-
};
|
|
277
232
|
var OS = {
|
|
278
233
|
iOS: "iOS",
|
|
279
234
|
Android: "Android",
|
|
@@ -285,8 +240,6 @@ var OS = {
|
|
|
285
240
|
};
|
|
286
241
|
|
|
287
242
|
// src/Functions/utils.js
|
|
288
|
-
import { useEffect } from "react";
|
|
289
|
-
import moment from "moment-timezone";
|
|
290
243
|
var uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);
|
|
291
244
|
var getIsOnlyAnObject = (input) => {
|
|
292
245
|
return typeof input === "object" && // "отбивает" примитивы и функции
|
package/dist/utils.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/Functions/guards/typeGuards.ts", "../src/Functions/guards/assertions.ts", "../src/
|
|
4
|
-
"sourcesContent": ["/**\n * @name isArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C.\n * @example\n * const result = isArray([]);\n * console.log(result); // true\n * @example\n * const result = isArray({});\n * console.log(result); // false\n */\nconst isArray = (value: unknown): value is unknown[] => Array.isArray(value);\n\n/**\n * @name isObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isObject \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isObject({});\n * console.log(result); // true\n * @example\n * const result = isObject([]);\n * console.log(result); // false\n */\nfunction isObject(value: unknown): value is object {\n return typeof value === 'object' && value !== null && !isArray(value)\n}\n\n/**\n * @name isNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isNumber \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0447\u0438\u0441\u043B\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isNumber(1);\n * console.log(result); // true\n */\nconst isNumber = (value: unknown): value is number => typeof value === 'number';\n\n/**\n * @name isString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isString \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u043E\u0439.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isString('string');\n * console.log(result); // true\n */\nconst isString = (value: unknown): value is string => typeof value === 'string';\n\n/**\n * @name isBoolean\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isBoolean \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0431\u0443\u043B\u0435\u0432\u044B\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isBoolean(true);\n * console.log(result); // true\n */\nconst isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n\n/**\n * @name isFunction\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isFunction \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isFunction(() => {});\n * console.log(result); // true\n * @example\n * const result = isFunction('string');\n * console.log(result); // false\n * @example\n * const result = isFunction(1);\n * console.log(result); // false\n */\nconst isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n/**\n * @name isInstanceOf\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isInstanceOf \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param classType - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * class TestClass {}\n * const result = isInstanceOf(new TestClass(), TestClass);\n * console.log(result); // true\n */\nconst isInstanceOf = <T>(value: unknown, classType: new () => T): value is T => value instanceof classType;\n\n/**\n * @name isEnumValue\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEnumValue \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum.\n * @param enumObject - enum \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * enum Colors {\n * Red = 'red',\n * Green = 'green',\n * Blue = 'blue',\n * }\n * const result = isEnumValue(Colors, 'red');\n * console.log(result); // true\n * @returns true - \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum, false - \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum\n */\nfunction isEnumValue<T extends string | number>(enumObject: Record<string, T>, value: unknown): value is T {\n return Object.values(enumObject).includes(value as T)\n}\n\n/**\n * @name isNullOrUndefined\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isNullOrUndefined \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F null \u0438\u043B\u0438 undefined.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isNullOrUndefined(null) // true\n * isNullOrUndefined(undefined) // true\n * isNullOrUndefined(1) // false\n */\nfunction isNullOrUndefined(value: unknown): value is null | undefined {\n return value === null || value === undefined\n}\n\n/**\n * @name isTruthy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTruthy \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F true.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTruthy(true) // true\n * isTruthy(1) // true\n * isTruthy(Infinity) // true\n * isTruthy(-Infinity) // true\n * isTruthy(Symbol()) // true\n * isTruthy('some string') // true\n * isTruthy({}) // true\n * isTruthy([]) // true\n * isTruthy(Symbol('some description')) // true\n * isTruthy(() => {}) // true\n * isTruthy(function() {}) // true\n * isTruthy(class {}) // true\n * isTruthy(0) // false\n * isTruthy('') // false\n * isTruthy(null) // false\n * isTruthy(undefined) // false\n * isTruthy(NaN) // false\n * isTruthy(false) // false\n */\nconst isTruthy = (value: unknown): value is boolean | number | string | object => !!value;\n\n/**\n * @name isEmptyObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEmptyObject \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0443\u0441\u0442\u044B\u043C \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isEmptyObject({}) // true\n * isEmptyObject({ a: 1 }) // false\n */\nconst isEmptyObject = (value: unknown): value is object => isObject(value) && Object.keys(value).length === 0;\n\n/**\n * @name isTypedArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTypedArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u0442\u0438\u043F \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTypedArray([1, 2, 3], Number) // true\n * isTypedArray([1, 2, 3], String) // false\n */\nfunction isTypedArray<T>(value: unknown, type: new (...args: any[]) => T): value is T[] {\n return isArray(value) && value.every(item => item instanceof type)\n}\n\n/**\n * @name isArrayWithLength\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isArrayWithLength \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0439 \u0434\u043B\u0438\u043D\u044B.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param length - \u0434\u043B\u0438\u043D\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n * @example\n * isArrayWithLength([1, 2, 3], 3) // true\n * isArrayWithLength([1, 2, 3], 2) // false\n */\nfunction isArrayWithLength(value: unknown, length: number): value is unknown[] {\n return isArray(value) && value.length === length\n}\n\n/**\n * @name isEmptyArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEmptyArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0443\u0441\u0442\u044B\u043C \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isEmptyArray([]) // true\n * isEmptyArray([1]) // false\n */\nconst isEmptyArray = (value: unknown): value is [] => Array.isArray(value) && value.length === 0;\n\n/**\n * @name isTypeOrNull\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTypeOrNull \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430 \u0438\u043B\u0438 null.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTypeOrNull(null, SomeClass) // true\n * isTypeOrNull(new SomeClass(), SomeClass) // true\n */\nfunction isTypeOrNull<T>(value: unknown, type: new (...args: any[]) => T): value is T | null {\n return value === null || value instanceof type\n}\n\nconst nonNullable = <T>(value: T): value is NonNullable<T> => value !== null && value !== undefined;\n\n/**\n * @name isDate\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isDate \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Date.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isDate(new Date()) // true\n * isDate('2023-01-01') // false\n */\nconst isDate = (value: unknown): value is Date => value instanceof Date;\n\n/**\n * @name isPromise\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isPromise \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F Promise.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isPromise(Promise.resolve()) // true\n * isPromise({ then: () => {} }) // false\n */\nconst isPromise = (value: unknown): value is Promise<unknown> => value instanceof Promise;\n\n/**\n * @name isRegExp\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isRegExp \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u044B\u043C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isRegExp(/test/) // true\n * isRegExp('test') // false\n */\nconst isRegExp = (value: unknown): value is RegExp => value instanceof RegExp;\n\n/**\n * @name isPrimitive\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isPrimitive \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isPrimitive(42) // true\n * isPrimitive('test') // true\n * isPrimitive(true) // true\n * isPrimitive(null) // true\n * isPrimitive(undefined) // true\n * isPrimitive({}) // false\n */\nfunction isPrimitive(value: unknown): value is string | number | boolean | null | undefined {\n return value === null || value === undefined || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'\n}\n\n/**\n * @name isError\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isError \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C \u043E\u0448\u0438\u0431\u043A\u0438.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isError(new Error()) // true\n * isError({ message: 'error' }) // false\n */\nconst isError = (value: unknown): value is Error => value instanceof Error;\n\n/**\n * @name isSymbol\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isSymbol \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isSymbol(Symbol()) // true\n * isSymbol('symbol') // false\n */\nconst isSymbol = (value: unknown): value is symbol => typeof value === 'symbol';\n\n/**\n * @name isMap\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isMap \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Map.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isMap(new Map()) // true\n * isMap({}) // false\n */\nconst isMap = (value: unknown): value is Map<unknown, unknown> => value instanceof Map;\n\n/**\n * @name isSet\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isSet \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Set.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isSet(new Set()) // true\n * isSet([]) // false\n */\nconst isSet = (value: unknown): value is Set<unknown> => value instanceof Set;\n\n/**\n * @name isReactElement\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactElement \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isReactElement(<div>Test</div>) // true\n * isReactElement('div') // false\n */\nfunction isReactElement(value: unknown): value is React.ReactElement {\n return isObject(value) && 'type' in value && 'props' in value && '$$typeof' in value;\n}\n\n/**\n * @name isReactComponent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactComponent \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyComponent = () => <div>Test</div>;\n * isReactComponent(MyComponent) // true\n * isReactComponent('div') // false\n */\nfunction isReactComponent(value: unknown): value is React.ComponentType {\n return isFunction(value) || (isObject(value) && 'render' in value);\n}\n\n/**\n * @name isComponentType\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isComponentType \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0442\u0438\u043F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param componentType - \u0442\u0438\u043F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyComponent = () => <div>Test</div>;\n * isComponentType(<MyComponent />, MyComponent) // true\n */\nfunction isComponentType<T extends React.ComponentType>(value: unknown, componentType: T): value is React.ReactElement<React.ComponentProps<T>> {\n return isReactElement(value) && value.type === componentType;\n}\n\n/**\n * @name isReactEvent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactEvent \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u0441\u043E\u0431\u044B\u0442\u0438\u0435\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const handleClick = (e) => {\n * if (isReactEvent(e)) {\n * e.preventDefault();\n * }\n * };\n */\nfunction isReactEvent(value: unknown): value is React.SyntheticEvent {\n return isObject(value) && 'nativeEvent' in value && 'currentTarget' in value && 'target' in value;\n}\n\n/**\n * @name isRef\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isRef \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u0440\u0435\u0444\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const ref = useRef(null);\n * isRef(ref) // true\n */\nfunction isRef(value: unknown): value is React.RefObject<unknown> {\n return isObject(value) && 'current' in value;\n}\n\n/**\n * @name isContext\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isContext \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyContext = React.createContext(null);\n * isContext(MyContext) // true\n */\nfunction isContext(value: unknown): value is React.Context<unknown> {\n return isObject(value) && 'Provider' in value && 'Consumer' in value;\n}\n\n/**\n * @name isType\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isType \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0442\u0438\u043F, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u043C\u0443 \u0442\u0438\u043F\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u0442\u0438\u043F \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * interface User {\n * name: string;\n * age: number;\n * }\n *\n * const user = { name: \"John\", age: 30 };\n * const isUser = isType<User>(user,);\n * console.log(isUser); // true\n *\n * const notUser = \"John\";\n * console.log(isType<User>(notUser)); // false\n */\nfunction isType<T>(value: unknown): value is T {\n const type = typeof value;\n return (\n type === 'string'\n || type === 'number'\n || type === 'boolean'\n || type === 'object'\n || type === 'function'\n || type === 'undefined'\n || type === 'symbol'\n || type === 'bigint'\n );\n}\n\nconst typesGuards = {\n isArray,\n isObject,\n isNumber,\n isString,\n isBoolean,\n isFunction,\n isInstanceOf,\n isEnumValue,\n isNullOrUndefined,\n isTruthy,\n isEmptyObject,\n isEmptyArray,\n isTypedArray,\n isArrayWithLength,\n isTypeOrNull,\n nonNullable,\n isDate,\n isPromise,\n isRegExp,\n isPrimitive,\n isError,\n isSymbol,\n isMap,\n isSet,\n isReactElement,\n isReactComponent,\n isComponentType,\n isReactEvent,\n isRef,\n isContext,\n isType,\n};\n\nexport default typesGuards;\n", "import typesGuards from './typeGuards';\n\n/**\n * @name assertArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertArray \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C\n * @example\n * assertArray([]); // OK\n * assertArray({}); // TypeError: Expected value to be an array\n */\nfunction assertArray(value: unknown, message?: string): asserts value is unknown[] {\n if (!Array.isArray(value)) {\n throw new TypeError(message || 'Expected value to be an array');\n }\n}\n\n/**\n * @name assertObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertObject \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C\n * @example\n * assertObject({}); // OK\n * assertObject([]); // TypeError: Expected value to be an object\n */\nfunction assertObject(value: unknown, message?: string): asserts value is object {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TypeError(message || 'Expected value to be an object');\n }\n}\n\n/**\n * @name assertNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0447\u0438\u0441\u043B\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0447\u0438\u0441\u043B\u043E\u043C\n * @example\n * assertNumber(1); // OK\n * assertNumber('1'); // TypeError: Expected value to be a number\n */\nfunction assertNumber(value: unknown, message?: string): asserts value is number {\n if (typeof value !== 'number') {\n throw new TypeError(message || 'Expected value to be a number');\n }\n}\n\n/**\n * @name assertString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertString \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u043E\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u043E\u0439\n * @example\n * assertString('text'); // OK\n * assertString(1); // TypeError: Expected value to be a string\n */\nfunction assertString(value: unknown, message?: string): asserts value is string {\n if (typeof value !== 'string') {\n throw new TypeError(message || 'Expected value to be a string');\n }\n}\n\n/**\n * @name assertBoolean\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertBoolean \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0431\u0443\u043B\u0435\u0432\u044B\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0431\u0443\u043B\u0435\u0432\u044B\u043C\n * @example\n * assertBoolean(true); // OK\n * assertBoolean('true'); // TypeError: Expected value to be a boolean\n */\nfunction assertBoolean(value: unknown, message?: string): asserts value is boolean {\n if (typeof value !== 'boolean') {\n throw new TypeError(message || 'Expected value to be a boolean');\n }\n}\n\n/**\n * @name assertFunction\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertFunction \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439\n * @example\n * assertFunction(() => {}); // OK\n * assertFunction('function'); // TypeError: Expected value to be a function\n */\nfunction assertFunction(value: unknown, message?: string): asserts value is (...args: any[]) => any {\n if (typeof value !== 'function') {\n throw new TypeError(message || 'Expected value to be a function');\n }\n}\n\n/**\n * @name assertInstanceOf\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertInstanceOf \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param classType - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430\n * @example\n * class TestClass {}\n * assertInstanceOf(new TestClass(), TestClass); // OK\n * assertInstanceOf({}, TestClass); // TypeError: Expected value to be an instance of TestClass\n */\nfunction assertInstanceOf<T>(value: unknown, classType: new () => T, message?: string): asserts value is T {\n if (!(value instanceof classType)) {\n throw new TypeError(message || `Expected value to be an instance of ${classType.name}`);\n }\n}\n\n/**\n * @name assertEnumValue\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertEnumValue \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param enumObject - enum \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum\n * @example\n * enum Colors { Red = 'red', Green = 'green', Blue = 'blue' }\n * assertEnumValue(Colors, 'red'); // OK\n * assertEnumValue(Colors, 'yellow'); // TypeError: Expected value to be one of: red, green, blue\n */\nfunction assertEnumValue<T extends string | number>(\n enumObject: Record<string, T>,\n value: unknown,\n message?: string,\n): asserts value is T {\n if (!Object.values(enumObject).includes(value as T)) {\n throw new TypeError(\n message || `Expected value to be one of: ${Object.values(enumObject).join(', ')}`,\n );\n }\n}\n\n/**\n * @name assertReactElement\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertReactElement \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C\n * @example\n * assertReactElement(<div>Test</div>); // OK\n * assertReactElement('div'); // TypeError: Expected value to be a React element\n */\nfunction assertReactElement(value: unknown, message?: string): asserts value is React.ReactElement {\n if (!(typesGuards.isObject(value) && 'type' in value && 'props' in value && '$$typeof' in value)) {\n throw new TypeError(message || 'Expected value to be a React element');\n }\n}\n\n/**\n * @name assertReactComponent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertReactComponent \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C\n * @example\n * const MyComponent = () => <div>Test</div>;\n * assertReactComponent(MyComponent); // OK\n * assertReactComponent('div'); // TypeError: Expected value to be a React component\n */\nfunction assertReactComponent(value: unknown, message?: string): asserts value is React.ComponentType {\n if (!(typeof value === 'function' || (typesGuards.isObject(value) && 'render' in value))) {\n throw new TypeError(message || 'Expected value to be a React component');\n }\n}\n\n/**\n * @name assertNonNullable\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNonNullable \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 null \u0438 \u043D\u0435 undefined. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 null \u0438\u043B\u0438 undefined\n * @example\n * assertNonNullable('text'); // OK\n * assertNonNullable(null); // TypeError: Expected value to be non-nullable\n */\nfunction assertNonNullable<T>(value: T, message?: string): asserts value is NonNullable<T> {\n if (value === null || value === undefined) {\n throw new TypeError(message || 'Expected value to be non-nullable');\n }\n}\n\n/**\n * @name assertTruthy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertTruthy \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F truthy. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F truthy\n * @example\n * assertTruthy('text'); // OK\n * assertTruthy(''); // TypeError: Expected value to be truthy\n */\nfunction assertTruthy(value: unknown, message?: string): asserts value is boolean | number | string | object {\n if (!value) {\n throw new TypeError(message || 'Expected value to be truthy');\n }\n}\n\n/**\n * @name assertFalsy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertFalsy \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F falsy. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F falsy\n * @example\n * assertFalsy(''); // OK\n * assertFalsy('text'); // TypeError: Expected value to be falsy\n */\nfunction assertFalsy(value: unknown, message?: string): asserts value is false | 0 | '' | null | undefined {\n if (value) {\n throw new TypeError(message || 'Expected value to be falsy');\n }\n}\n\n/**\n * @name assertDefined\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertDefined \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 undefined. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 undefined\n * @example\n * assertDefined('text'); // OK\n * assertDefined(undefined); // TypeError: Expected value to be defined\n */\nfunction assertDefined<T>(value: T, message?: string): asserts value is Exclude<T, undefined> {\n if (value === undefined) {\n throw new TypeError(message || 'Expected value to be defined');\n }\n}\n\n/**\n * @name assertNotEmptyString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNotEmptyString \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u043D\u0435 \u043F\u0443\u0441\u0442\u0430\u044F. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u0430 \u043F\u0443\u0441\u0442\u0430\u044F\n * @example\n * assertNotEmptyString('text'); // OK\n * assertNotEmptyString(''); // TypeError: Expected string to be not empty\n */\nfunction assertNotEmptyString(value: string, message?: string): asserts value is string {\n if (value === '') {\n throw new TypeError(message || 'Expected string to be not empty');\n }\n}\n\n/**\n * @name assertPositiveNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertPositiveNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0447\u0438\u0441\u043B\u043E \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0447\u0438\u0441\u043B\u043E \u043D\u0435 \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435\n * @example\n * assertPositiveNumber(1); // OK\n * assertPositiveNumber(-1); // TypeError: Expected number to be positive\n */\nfunction assertPositiveNumber(value: number, message?: string): asserts value is number {\n if (value <= 0) {\n throw new TypeError(message || 'Expected number to be positive');\n }\n}\n\n/**\n * @name assertNegativeNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNegativeNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0447\u0438\u0441\u043B\u043E \u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0447\u0438\u0441\u043B\u043E \u043D\u0435 \u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435\n * @example\n * assertNegativeNumber(-1); // OK\n * assertNegativeNumber(1); // TypeError: Expected number to be negative\n */\nfunction assertNegativeNumber(value: number, message?: string): asserts value is number {\n if (value >= 0) {\n throw new TypeError(message || 'Expected number to be negative');\n }\n}\n\n/**\n * @name assertArrayNotEmpty\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertArrayNotEmpty \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u043D\u0435 \u043F\u0443\u0441\u0442\u043E\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043F\u0443\u0441\u0442\u043E\u0439\n * @example\n * assertArrayNotEmpty([1]); // OK\n * assertArrayNotEmpty([]); // TypeError: Expected array to be not empty\n */\nfunction assertArrayNotEmpty<T>(value: T[], message?: string): asserts value is [T, ...T[]] {\n if (value.length === 0) {\n throw new TypeError(message || 'Expected array to be not empty');\n }\n}\n\nconst assertions = {\n assertArray,\n assertObject,\n assertNumber,\n assertString,\n assertBoolean,\n assertFunction,\n assertInstanceOf,\n assertEnumValue,\n assertReactElement,\n assertReactComponent,\n assertNonNullable,\n assertTruthy,\n assertFalsy,\n assertDefined,\n assertNotEmptyString,\n assertPositiveNumber,\n assertNegativeNumber,\n assertArrayNotEmpty,\n};\n\nexport default assertions;\n", "export const KEYBOARD_SERVICE_KEYS = [\n \"Escape\",\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n \"Tab\",\n \"CapsLock\",\n \"Shift\",\n \"Control\",\n \"Meta\",\n \"Option\",\n \"Alt\",\n \"ContextMenu\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"NumLock\",\n \"Backspace\",\n \"Delete\",\n \"Enter\",\n \"Return\",\n \"Insert\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n \"PrintScreen\",\n \"ScrollLock\",\n \"Pause\",\n];\n\nexport const MAX_PHONE_LENGTH = 10;\nexport const MAX_NAME_LENGTH = 128;\n\nexport const DEFAULT_DATE_MASK_NO_VALUE_SYMBOL = \"_\";\n\nexport const DEFAULT_COLORS = [\n \"#D9C1FF\",\n \"#FFBAF0\",\n \"#FFB8CE\",\n \"#FFC3A2\",\n \"#FFDB7C\",\n \"#F9F871\",\n \"#C3FCF1\",\n \"#F6F2CB\",\n \"#E0F8D1\",\n \"#B1DFFB\",\n \"#8DECFE\",\n \"#76F7ED\",\n \"#8AFEC8\",\n];\n\nexport const KEYBOARD_KEY_CODES = {\n Backspace: 8,\n Delete: 46,\n ARROW_LEFT: 37,\n ARROW_RIGHT: 39,\n};\n\nexport const OS = {\n iOS: \"iOS\",\n Android: \"Android\",\n WP: \"Windows Phone\",\n Linux: \"Linux\",\n Windows: \"Windows\",\n MacOS: \"MacOS\",\n Unknown: \"unknown\",\n};\n", "import { useEffect } from \"react\";\n\nimport moment from \"moment-timezone\";\n\nimport { DEFAULT_COLORS, OS } from \"../Constants/index.constants\";\n\nexport const uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\nexport const getIsOnlyAnObject = (input) => {\n return (\n typeof input === \"object\" && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B \u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0438\n input instanceof Object && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" null\n !Array.isArray(input) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u0441\u0441\u0438\u0432\u044B\n !(input instanceof Set) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u0441\u0435\u0442\u044B\n !(input instanceof Map) // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u043F\u044B\n );\n};\n\n/* eslint-disable guard-for-in, no-unused-vars */\nexport const handleObjectChange =\n (updateObject, updateFunction) =>\n (data, prop = \"\", isNumber) => {\n let value;\n if (data?.target) {\n value =\n data.target.type === \"checkbox\"\n ? data.target.checked\n : data.target.value;\n } else value = data;\n\n value = isNumber ? Number(value) : value;\n\n const props = prop.split(\".\");\n const currentObject = props.reduce((res, chapter, index) => {\n if (props.length !== index + 1) res = res[chapter];\n return res;\n }, updateObject);\n\n currentObject[props.pop()] = value;\n updateFunction();\n };\n\nexport const useOutsideToggle = (ref, setOut, open) => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n useEffect(() => {\n document.addEventListener(\"mouseup\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mouseup\", handleClickOutside);\n };\n }, [ref]);\n};\n\n// export const clone = obj => {\n// const data = obj instanceof Array ? [] : {};\n// for (const i in obj) data[i] = typeof obj[i] === 'object' && obj[i] != null ? clone(obj[i]) : obj[i];\n// return data;\n// };\n// ! \u042D\u0442\u043E\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435\u0435\nexport const clone = (input) => {\n if (input === null || typeof input !== \"object\") return input;\n const data = input instanceof Array ? [] : {};\n for (const i in input) data[i] = clone(input[i]);\n return data;\n};\n\nexport const getResponseClone = async (res) =>\n await (typeof res?.clone === \"function\" ? res.clone() : clone(res));\n\n//TimeUtils\nexport function transformUTCTimeToLocal(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n const utcDate = moment.utc(date).toDate();\n return moment(utcDate, format).local().format(format);\n}\nexport function transformLocalTimeToUTC(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n return moment(date, format).utc().format(format);\n}\nexport function transformUTCHoursToLocal(time, format = \"HH:mm:ss\") {\n if (!time) return;\n const splitedTime = time.split(\":\");\n const offset = moment().utcOffset();\n let HH = Number(splitedTime[0]);\n let mm = Number(splitedTime[1]);\n const ss = splitedTime[2];\n mm = mm + offset;\n while (mm > 59) {\n mm -= 60;\n HH += 1;\n }\n if (HH > 23) HH -= 24;\n while (mm < 0) {\n mm += 60;\n HH -= 1;\n }\n if (HH < 0) HH += 24;\n return `${HH}:${mm}:${ss}`;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n const { parseFormat, isReturnAsMomentInstance } = getIsOnlyAnObject(\n additional,\n )\n ? additional\n : {};\n\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n return isReturnAsMomentInstance ? moment(\"error\") : ERROR_MESSGE;\n }\n\n //? \u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C parseFormat, \u0435\u0441\u043B\u0438 data \u043F\u0440\u0438\u0448\u043B\u0430 \u043A\u0430\u043A timestamp \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 parseFormat \u043D\u0435 \u0441\u0442\u0440\u043E\u043A\u0430\n const momentArgs = [\n data,\n ...(!Number.isNaN(Number(data)) || typeof parseFormat === \"string\"\n ? []\n : [parseFormat]),\n ];\n\n //? \u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440, \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 \u043B\u0438\u0431\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439\n const momentInstance = (() => {\n let instance = moment(...momentArgs);\n\n //? \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C \u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0441\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440-\u0430 \u043F\u0443\u0442\u0435\u043C \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043E \u043A \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u043C\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\n //? \u041F\u043E\u043F\u0430\u0434\u0435\u043C \u0432 \u044D\u0442\u043E\u0442 \u043A\u0435\u0439\u0441 \u0435\u0441\u043B\u0438\n //? - data \u044D\u0442\u043E timestamp\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date-time\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date (\u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0432\u0440\u0435\u043C\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F 00:00:00)\n if (instance.format(outputFormat) !== ERROR_VALUE) return instance;\n //? \u0415\u0441\u043B\u0438 \u0436\u0435 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u0442\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u043C, \u0447\u0442\u043E data \u043F\u0440\u0438\u0448\u043B\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 time\n //? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044B, \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u043C data \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u0440\u0435\u043C\u044F\n //? \u041A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u0430\u0442\u0442\u0435\u0440\u043D\u044B: 'HH*mm', 'HH*mm*ss', 'HH*mm*ss*\u043B\u044E\u0431\u043E\u0435_\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E_ms', \u0433\u0434\u0435 * - \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C\n else if (/^\\d\\d.\\d\\d/.test(data)) {\n instance = moment();\n const symbols = data.split(\"\");\n\n const timeArr = symbols\n .reduce(\n (acc, symbol, idx) => {\n if (Number.isNaN(Number(symbol))) {\n if (acc.group) acc.result.push(acc.group);\n acc.group = \"\";\n } else acc.group = `${acc.group}${symbol}`;\n if (idx === symbols.length - 1 && acc.group)\n acc.result.push(acc.group);\n return acc;\n },\n { result: [], group: \"\" },\n )\n //? reverse \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0435 \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 pop, \u0430 \u043D\u0435 shift,\n //? \u0442.\u043A. \u043C\u0435\u0442\u043E\u0434\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F/\u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u043D\u0446\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0431\u044B\u0441\u0442\u0440\u0435\u0435,\n //? \u0447\u0435\u043C \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u044B\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n .result.reverse();\n\n instance.hours(Number(timeArr.pop()));\n instance.minutes(Number(timeArr.pop()));\n instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);\n instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);\n } else instance = moment(\"error\"); //? \u0418\u043D\u0430\u0447\u0435 \u0441\u043E\u0437\u0434\u0430\u0435\u043C \u0437\u0430\u0432\u0435\u0434\u043E\u043C\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\n\n return instance;\n })();\n\n if (isReturnAsMomentInstance) return momentInstance;\n\n const output = momentInstance.format(outputFormat);\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormattedLocal(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n\n if (additional && !getIsOnlyAnObject(additional)) {\n throw new Error(\n \"Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]\",\n );\n }\n\n const compositeAdditional = {\n ...(additional || {}),\n isReturnAsMomentInstance: true,\n };\n const date = transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat,\n compositeAdditional,\n );\n\n const dateWithLocale = date.add(moment().utcOffset(), \"minutes\");\n const output = dateWithLocale.format(outputFormat);\n\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043A\u043B\u044E\u0447\u0435\u0439 \u043E\u0431\u044C\u0435\u043A\u0442\u0430\n//\u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0441 \u0442\u0435\u043C\u0438 \u043F\u043E\u043B\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u043A\u043B\u044E\u0447\u0435\u0439\nexport const omitKeys = (obj = {}, keys = []) =>\n keys.reduce((acc, key) => {\n const { [key]: omit, ...rest } = acc;\n return rest;\n }, obj);\n\nexport const logout = () => {\n window.localStorage.removeItem(\"accessToken\");\n window.localStorage.removeItem(\"tokenExpires\");\n window.location.reload();\n};\n\nexport const getStyles = (el, prop) => {\n if (!el) return null;\n if (!prop) return window.getComputedStyle(el);\n return window.getComputedStyle(el).getPropertyValue(prop);\n};\n\nexport const getColorById = (id, colors) => {\n if (!id) return \"#FF7D00\";\n\n const idToArr = Array.from(id);\n const colorsArr = colors && colors.length > 0 ? colors : DEFAULT_COLORS;\n\n let number = idToArr.reduce((acc, item) => {\n if (Number(item)) {\n return acc + Number(item);\n }\n return acc;\n }, 0);\n\n while (number >= colorsArr.length) {\n number -= colorsArr.length;\n }\n\n return colorsArr[number];\n};\n\nexport const debounce = (fn, ms) => {\n let id = null;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => {\n clearTimeout(id);\n fn(...args);\n }, ms);\n };\n};\n\nexport const throttle = (fn, ms) => {\n let id = null;\n return (...args) => {\n if (id) return;\n fn(...args);\n id = setTimeout(() => {\n clearTimeout(id);\n id = null;\n }, ms);\n };\n};\n\nexport const addBitDepthPoints = (value, step = 3) => {\n //\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043B\u0438 value \u0442\u043E\u0447\u043A\u0443\n const isFraction = value?.includes(\".\");\n\n //\u0432\u0437\u044F\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043E \u0442\u043E\u0447\u043A\u0438\n const valueBeforeDot = isFraction\n ? value?.slice(0, value?.indexOf(\".\"))\n : value;\n\n //\u0440\u0430\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u0445 \u043F\u043E\u0441\u043B\u0435 \u043A\u0430\u0436\u0434\u043E\u0439 3\u0439 \u0446\u0438\u0444\u0440\u044B \u0441 \u043A\u043E\u043D\u0446\u0430\n const intPart = valueBeforeDot\n .split(\"\")\n .reverse()\n .reduce(\n (acc, item, idx) =>\n idx % step === 0 && idx !== 0 ? [...acc, \",\", item] : [...acc, item],\n [],\n )\n .reverse()\n .join(\"\");\n\n return isFraction ? intPart + value?.slice(value?.indexOf(\".\")) : intPart;\n};\n\nexport const changeMeta = (key, items = []) => {\n const defaultMeta = items.find((i) => i.key === \"default\");\n\n if (key) {\n const item = items.find((i) => i.key === key);\n document.title = item?.title ?? defaultMeta?.title;\n document\n .querySelector('meta[name=\"description\"]')\n .setAttribute(\"content\", item?.description ?? defaultMeta?.description);\n }\n};\n\nexport const firstLetterCapital = (str) =>\n typeof str === \"string\"\n ? `${str.charAt(0).toUpperCase()}${str.slice(1)}`\n : str;\nexport const capitalized = firstLetterCapital;\n\nexport const checkedRef = (ref) =>\n ref ? (typeof ref === \"function\" ? (node) => ref(node) : ref) : null;\n\nexport function downloadEmulation(data, filename, type = \"image/*\") {\n const file = new Blob([data], { type });\n if (window.navigator.msSaveOrOpenBlob)\n // IE10+\n window.navigator.msSaveOrOpenBlob(file, filename);\n else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(() => {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nexport const downloadFile = async ({ url, name, type = null }) => {\n const response = await fetch(url).then(async (res) => ({\n data: await res.blob(),\n type: type ?? res.headers.get(\"content-type\"),\n }));\n downloadEmulation(response.data, name, response.type);\n};\n\nexport const compare = (first, second, keys = []) => {\n //? \u0415\u0441\u043B\u0438 \u0442\u0438\u043F\u044B \u041D\u0415 \u0440\u0430\u0432\u043D\u044B - \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (typeof first !== typeof second) return false;\n //? \u0415\u0441\u043B\u0438 \u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441 \"\u043C\u0430\u0441\u0441\u0438\u0432 \u043B\u0438?\" \u043D\u0435 \u0440\u0430\u0432\u043D\u044B, \u0442\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0438 \u0442\u0438\u043F\u044B, \u0437\u043D\u0430\u0447\u0438\u0442 \u0442\u043E\u0436\u0435 \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (Array.isArray(first) !== Array.isArray(second)) return false;\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u043E\u0448\u043B\u0438 if-\u043A\u0443 - \u0442\u0438\u043F\u044B \u0443\u0441\u043B\u043E\u0432\u043D\u043E \u0440\u0430\u0432\u043D\u044B, \u043C\u043E\u0436\u0435\u043C \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u0442\u0438\u043F \u043B\u0438\u0448\u044C \u043E\u0434\u043D\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0441\u043F\u0440\u0430\u0432\u0435\u0434\u043B\u0438\u0432\u043E \u0438 \u0434\u043B\u044F \u0432\u0442\u043E\u0440\u043E\u0433\u043E\n\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B - \u043F\u0440\u043E\u0441\u0442\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u043C. \u041A\u0435\u0439\u0441 \u0441 null \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D \u0442\u0443\u0442.\n if (!(first instanceof Object)) return first === second;\n\n //? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043F\u0440\u0438\u043C\u0435\u0442\u0438\u0432\u044B - \u043D\u0435 \u0432\u0430\u0436\u043D\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u0438\u043B\u0438 \u043D\u0435\u0442, \u043C\u0435\u0442\u043E\u0434\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0434\u043B\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043E\u0436\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\n\n const getComparationStructure = (data) => {\n if (typeof data === 'function') return data.toString();\n if (!(data instanceof Object)) return data;\n\n return Object.entries(data)\n .sort((a, b) => (a[0]).localeCompare(b[0]))\n .map(([key, value]) => ([key, getComparationStructure(data[key])]));\n };\n\n //? \u041F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F (\u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u0433\u043B\u0443\u0431\u0438\u043D\u044B) - \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u0432, \u0441\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u043F\u043E \u043A\u043B\u044E\u0447\u0430\u043C,\n const structureForComparingOfFirst = getComparationStructure(first);\n const structureForComparingOfSecond = getComparationStructure(second);\n\n return (JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond));\n};\n\n// Set Carret to the End of Input\nexport const setCarretToEnd = (input) => {\n setTimeout(() => {\n const tmp = input.value;\n input.value = \"\";\n input.value = tmp;\n }, 10);\n};\n\nexport const compareAlphabetical = (a, b, key = \"label\") => {\n let item1 = a?.[key];\n let item2 = b?.[key];\n\n if (typeof item1 !== \"string\" || typeof item2 !== \"string\") return 0;\n\n item1 = item1?.toLowerCase();\n item2 = item2?.toLowerCase();\n\n if (item1 < item2) {\n return -1;\n }\n if (item1 > item2) {\n return 1;\n }\n return 0;\n};\n\nexport const getBase64 = (file) => {\n if (file) {\n return new Promise(function (resolve, reject) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(\"Error: \", error);\n });\n }\n};\n\nexport const renderFileSize = (bytes, decimals = 2) => {\n if (!Number(bytes)) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n};\n\nexport const getUniqueFileExtensions = (extListString) => {\n // Split the extensions list into an array\n const extArray = extListString\n ?.split(\",\")\n .map((ext) => ext.trim().toUpperCase());\n\n // Remove duplicates using a Set\n const uniqueExts = [...new Set(extArray)];\n\n // Join the unique extensions into a string\n return uniqueExts.join(\", \");\n};\n\nexport const getOS = () => {\n let userAgent = window.navigator.userAgent,\n platform =\n window.navigator?.userAgentData?.platform || window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = OS.Unknown;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = OS.MacOS;\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = OS.iOS;\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = OS.Windows;\n } else if (/Android/.test(userAgent)) {\n os = OS.Android;\n } else if (/Linux/.test(platform)) {\n os = OS.Linux;\n }\n\n return os;\n};\n\n\nString.prototype.longerThan = function (compareWith) {\n return this?.length > compareWith?.length;\n};\nString.prototype.lastIndexEqualsTo = function (index) {\n return this?.length - 1 === index;\n};\n\nexport const getCorrectTestId = ({ testId = \"\", withTier = true }) =>\n testId && testId !== undefined ? `${withTier ? \"-\" : \"\"}${testId}` : \"\";\n\n\n", "import { clone } from '../utils';\nimport typesGuards from './typeGuards';\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043E\u043A\u0443, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u043F\u0443\u0441\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction stringValue(value: string): string {\n if (typeof value === 'string' && value !== '') return value;\n return '';\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044A\u0435\u043A\u0442, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u043F\u0443\u0441\u0442\u044B\u043C \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041A\u043E\u043F\u0438\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u043E\u0439 \u043E\u0431\u044A\u0435\u043A\u0442, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction objectValue<T extends object>(value: T): T {\n if (typeof value === 'object' && value !== null && Object.keys(value).length > 0) {\n return clone(value) as T;\n }\n return {} as T;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043B\u043E, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u043C \u0447\u0438\u0441\u043B\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E \u0438\u043B\u0438 0, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction numberValue(value: number): number {\n if (!Number.isNaN(value) && typeof value === 'number') return value;\n return 0;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041A\u043E\u043F\u0438\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u043E\u0439 \u043C\u0430\u0441\u0441\u0438\u0432, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nconst arrayValue = <T>(value: T[]): T[] => (Array.isArray(value) ? clone(value) : []);\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0443\u043B\u0435\u0432\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F boolean\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 false, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction booleanValue(value: boolean): boolean {\n if (typesGuards.isBoolean(value)) {\n return value;\n }\n return false;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, \u0435\u0441\u043B\u0438 \u043E\u043D\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u043E null \u0438\u043B\u0438 undefined\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @param defaultValue - \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n */\nfunction notNullValue<T>(value: T, defaultValue: T): T {\n return value !== null && value !== undefined ? value : defaultValue;\n}\n\nconst safeValue = {\n booleanValue,\n stringValue,\n objectValue,\n numberValue,\n arrayValue,\n notNullValue,\n};\n\nexport default safeValue;\n"],
|
|
5
|
-
"mappings": ";AAUA,IAAM,UAAU,CAAC,UAAuC,MAAM,QAAQ,KAAK;AAa3E,SAAS,SAAS,OAAiC;AACjD,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,QAAQ,KAAK;AACtE;AAUA,IAAM,WAAW,CAAC,UAAoC,OAAO,UAAU;AAUvE,IAAM,WAAW,CAAC,UAAoC,OAAO,UAAU;AAUvE,IAAM,YAAY,CAAC,UAAqC,OAAO,UAAU;AAgBzE,IAAM,aAAa,CAAC,UAAqD,OAAO,UAAU;AAY1F,IAAM,eAAe,CAAI,OAAgB,cAAuC,iBAAiB;AAiBjG,SAAS,YAAuC,YAA+B,OAA4B;AACzG,SAAO,OAAO,OAAO,UAAU,EAAE,SAAS,KAAU;AACtD;AAWA,SAAS,kBAAkB,OAA2C;AACpE,SAAO,UAAU,QAAQ,UAAU;AACrC;AA0BA,IAAM,WAAW,CAAC,UAAgE,CAAC,CAAC;AAUpF,IAAM,gBAAgB,CAAC,UAAoC,SAAS,KAAK,KAAK,OAAO,KAAK,KAAK,EAAE,WAAW;AAW5G,SAAS,aAAgB,OAAgB,MAA+C;AACtF,SAAO,QAAQ,KAAK,KAAK,MAAM,MAAM,UAAQ,gBAAgB,IAAI;AACnE;AAWA,SAAS,kBAAkB,OAAgB,QAAoC;AAC7E,SAAO,QAAQ,KAAK,KAAK,MAAM,WAAW;AAC5C;AAUA,IAAM,eAAe,CAAC,UAAgC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAW/F,SAAS,aAAgB,OAAgB,MAAoD;AAC3F,SAAO,UAAU,QAAQ,iBAAiB;AAC5C;AAEA,IAAM,cAAc,CAAI,UAAsC,UAAU,QAAQ,UAAU;AAU1F,IAAM,SAAS,CAAC,UAAkC,iBAAiB;AAUnE,IAAM,YAAY,CAAC,UAA8C,iBAAiB;AAUlF,IAAM,WAAW,CAAC,UAAoC,iBAAiB;AAcvE,SAAS,YAAY,OAAuE;AAC1F,SAAO,UAAU,QAAQ,UAAU,UAAa,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU;AAC7H;AAUA,IAAM,UAAU,CAAC,UAAmC,iBAAiB;AAUrE,IAAM,WAAW,CAAC,UAAoC,OAAO,UAAU;AAUvE,IAAM,QAAQ,CAAC,UAAmD,iBAAiB;AAUnF,IAAM,QAAQ,CAAC,UAA0C,iBAAiB;AAU1E,SAAS,eAAe,OAA6C;AACnE,SAAO,SAAS,KAAK,KAAK,UAAU,SAAS,WAAW,SAAS,cAAc;AACjF;AAWA,SAAS,iBAAiB,OAA8C;AACtE,SAAO,WAAW,KAAK,KAAM,SAAS,KAAK,KAAK,YAAY;AAC9D;AAWA,SAAS,gBAA+C,OAAgB,eAAwE;AAC9I,SAAO,eAAe,KAAK,KAAK,MAAM,SAAS;AACjD;AAaA,SAAS,aAAa,OAA+C;AACnE,SAAO,SAAS,KAAK,KAAK,iBAAiB,SAAS,mBAAmB,SAAS,YAAY;AAC9F;AAUA,SAAS,MAAM,OAAmD;AAChE,SAAO,SAAS,KAAK,KAAK,aAAa;AACzC;AAUA,SAAS,UAAU,OAAiD;AAClE,SAAO,SAAS,KAAK,KAAK,cAAc,SAAS,cAAc;AACjE;AAoBA,SAAS,OAAU,OAA4B;AAC7C,QAAM,OAAO,OAAO;AACpB,SACE,SAAS,YACN,SAAS,YACT,SAAS,aACT,SAAS,YACT,SAAS,cACT,SAAS,eACT,SAAS,YACT,SAAS;AAEhB;AAEA,IAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,qBAAQ;;;ACraf,SAAS,YAAY,OAAgB,SAA8C;AACjF,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,UAAM,IAAI,UAAU,WAAW,+BAA+B;AAAA,EAChE;AACF;AAYA,SAAS,aAAa,OAAgB,SAA2C;AAC/E,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACvE,UAAM,IAAI,UAAU,WAAW,gCAAgC;AAAA,EACjE;AACF;AAYA,SAAS,aAAa,OAAgB,SAA2C;AAC/E,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI,UAAU,WAAW,+BAA+B;AAAA,EAChE;AACF;AAYA,SAAS,aAAa,OAAgB,SAA2C;AAC/E,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI,UAAU,WAAW,+BAA+B;AAAA,EAChE;AACF;AAYA,SAAS,cAAc,OAAgB,SAA4C;AACjF,MAAI,OAAO,UAAU,WAAW;AAC9B,UAAM,IAAI,UAAU,WAAW,gCAAgC;AAAA,EACjE;AACF;AAYA,SAAS,eAAe,OAAgB,SAA4D;AAClG,MAAI,OAAO,UAAU,YAAY;AAC/B,UAAM,IAAI,UAAU,WAAW,iCAAiC;AAAA,EAClE;AACF;AAcA,SAAS,iBAAoB,OAAgB,WAAwB,SAAsC;AACzG,MAAI,EAAE,iBAAiB,YAAY;AACjC,UAAM,IAAI,UAAU,WAAW,uCAAuC,UAAU,IAAI,EAAE;AAAA,EACxF;AACF;AAcA,SAAS,gBACP,YACA,OACA,SACoB;AACpB,MAAI,CAAC,OAAO,OAAO,UAAU,EAAE,SAAS,KAAU,GAAG;AACnD,UAAM,IAAI;AAAA,MACR,WAAW,gCAAgC,OAAO,OAAO,UAAU,EAAE,KAAK,IAAI,CAAC;AAAA,IACjF;AAAA,EACF;AACF;AAYA,SAAS,mBAAmB,OAAgB,SAAuD;AACjG,MAAI,EAAE,mBAAY,SAAS,KAAK,KAAK,UAAU,SAAS,WAAW,SAAS,cAAc,QAAQ;AAChG,UAAM,IAAI,UAAU,WAAW,sCAAsC;AAAA,EACvE;AACF;AAaA,SAAS,qBAAqB,OAAgB,SAAwD;AACpG,MAAI,EAAE,OAAO,UAAU,cAAe,mBAAY,SAAS,KAAK,KAAK,YAAY,QAAS;AACxF,UAAM,IAAI,UAAU,WAAW,wCAAwC;AAAA,EACzE;AACF;AAYA,SAAS,kBAAqB,OAAU,SAAmD;AACzF,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,UAAM,IAAI,UAAU,WAAW,mCAAmC;AAAA,EACpE;AACF;AAYA,SAAS,aAAa,OAAgB,SAAuE;AAC3G,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,UAAU,WAAW,6BAA6B;AAAA,EAC9D;AACF;AAYA,SAAS,YAAY,OAAgB,SAAsE;AACzG,MAAI,OAAO;AACT,UAAM,IAAI,UAAU,WAAW,4BAA4B;AAAA,EAC7D;AACF;AAYA,SAAS,cAAiB,OAAU,SAA0D;AAC5F,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,UAAU,WAAW,8BAA8B;AAAA,EAC/D;AACF;AAYA,SAAS,qBAAqB,OAAe,SAA2C;AACtF,MAAI,UAAU,IAAI;AAChB,UAAM,IAAI,UAAU,WAAW,iCAAiC;AAAA,EAClE;AACF;AAYA,SAAS,qBAAqB,OAAe,SAA2C;AACtF,MAAI,SAAS,GAAG;AACd,UAAM,IAAI,UAAU,WAAW,gCAAgC;AAAA,EACjE;AACF;AAYA,SAAS,qBAAqB,OAAe,SAA2C;AACtF,MAAI,SAAS,GAAG;AACd,UAAM,IAAI,UAAU,WAAW,gCAAgC;AAAA,EACjE;AACF;AAYA,SAAS,oBAAuB,OAAY,SAAgD;AAC1F,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,IAAI,UAAU,WAAW,gCAAgC;AAAA,EACjE;AACF;AAEA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,qBAAQ;;;AClUR,IAAM,wBAAwB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,mBAAmB;AACzB,IAAM,kBAAkB;AAExB,IAAM,oCAAoC;AAE1C,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,qBAAqB;AAAA,EAChC,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,aAAa;AACf;AAEO,IAAM,KAAK;AAAA,EAChB,KAAK;AAAA,EACL,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AACX;;;AC7EA,SAAS,iBAAiB;AAE1B,OAAO,YAAY;AAIZ,IAAM,OAAO,MAAM,KAAK,IAAI,EAAE,SAAS,EAAE,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC;AAEnF,IAAM,oBAAoB,CAAC,UAAU;AAC1C,SACE,OAAO,UAAU;AAAA,EACjB,iBAAiB;AAAA,EACjB,CAAC,MAAM,QAAQ,KAAK;AAAA,EACpB,EAAE,iBAAiB;AAAA,EACnB,EAAE,iBAAiB;AAEvB;AAGO,IAAM,qBACX,CAAC,cAAc,mBACf,CAAC,MAAM,OAAO,IAAIA,cAAa;AAC7B,MAAI;AACJ,MAAI,MAAM,QAAQ;AAChB,YACE,KAAK,OAAO,SAAS,aACjB,KAAK,OAAO,UACZ,KAAK,OAAO;AAAA,EACpB,MAAO,SAAQ;AAEf,UAAQA,YAAW,OAAO,KAAK,IAAI;AAEnC,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,QAAM,gBAAgB,MAAM,OAAO,CAAC,KAAK,SAAS,UAAU;AAC1D,QAAI,MAAM,WAAW,QAAQ,EAAG,OAAM,IAAI,OAAO;AACjD,WAAO;AAAA,EACT,GAAG,YAAY;AAEf,gBAAc,MAAM,IAAI,CAAC,IAAI;AAC7B,iBAAe;AACjB;AAEK,IAAM,mBAAmB,CAAC,KAAK,QAAQ,SAAS;AACrD,WAAS,mBAAmB,OAAO;AACjC,QAAI,IAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,MAAM,MAAM,GAAG;AACtD,aAAO,IAAI;AAAA,IACb;AAAA,EACF;AACA,YAAU,MAAM;AACd,aAAS,iBAAiB,WAAW,kBAAkB;AACvD,WAAO,MAAM;AAEX,eAAS,oBAAoB,WAAW,kBAAkB;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AACV;AAQO,IAAM,QAAQ,CAAC,UAAU;AAC9B,MAAI,UAAU,QAAQ,OAAO,UAAU,SAAU,QAAO;AACxD,QAAM,OAAO,iBAAiB,QAAQ,CAAC,IAAI,CAAC;AAC5C,aAAW,KAAK,MAAO,MAAK,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC;AAC/C,SAAO;AACT;AAEO,IAAM,mBAAmB,OAAO,QACrC,OAAO,OAAO,KAAK,UAAU,aAAa,IAAI,MAAM,IAAI,MAAM,GAAG;AAG5D,SAAS,wBAAwB,MAAM,SAAS,uBAAuB;AAC5E,MAAI,CAAC,KAAM;AACX,QAAM,UAAU,OAAO,IAAI,IAAI,EAAE,OAAO;AACxC,SAAO,OAAO,SAAS,MAAM,EAAE,MAAM,EAAE,OAAO,MAAM;AACtD;AACO,SAAS,wBAAwB,MAAM,SAAS,uBAAuB;AAC5E,MAAI,CAAC,KAAM;AACX,SAAO,OAAO,MAAM,MAAM,EAAE,IAAI,EAAE,OAAO,MAAM;AACjD;AACO,SAAS,yBAAyB,MAAM,SAAS,YAAY;AAClE,MAAI,CAAC,KAAM;AACX,QAAM,cAAc,KAAK,MAAM,GAAG;AAClC,QAAM,SAAS,OAAO,EAAE,UAAU;AAClC,MAAI,KAAK,OAAO,YAAY,CAAC,CAAC;AAC9B,MAAI,KAAK,OAAO,YAAY,CAAC,CAAC;AAC9B,QAAM,KAAK,YAAY,CAAC;AACxB,OAAK,KAAK;AACV,SAAO,KAAK,IAAI;AACd,UAAM;AACN,UAAM;AAAA,EACR;AACA,MAAI,KAAK,GAAI,OAAM;AACnB,SAAO,KAAK,GAAG;AACb,UAAM;AACN,UAAM;AAAA,EACR;AACA,MAAI,KAAK,EAAG,OAAM;AAClB,SAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAC1B;AAGO,SAAS,sCACd,MACA,eAAe,SACf,YACA;AACA,QAAM,cAAc;AACpB,QAAM,eAAe,0BAA0B,YAAY;AAC3D,QAAM,EAAE,aAAa,yBAAyB,IAAI;AAAA,IAChD;AAAA,EACF,IACI,aACA,CAAC;AAEL,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;AACxD,WAAO,2BAA2B,OAAO,OAAO,IAAI;AAAA,EACtD;AAGA,QAAM,aAAa;AAAA,IACjB;AAAA,IACA,GAAI,CAAC,OAAO,MAAM,OAAO,IAAI,CAAC,KAAK,OAAO,gBAAgB,WACtD,CAAC,IACD,CAAC,WAAW;AAAA,EAClB;AAGA,QAAM,kBAAkB,MAAM;AAC5B,QAAI,WAAW,OAAO,GAAG,UAAU;AAOnC,QAAI,SAAS,OAAO,YAAY,MAAM,YAAa,QAAO;AAAA,aAIjD,aAAa,KAAK,IAAI,GAAG;AAChC,iBAAW,OAAO;AAClB,YAAM,UAAU,KAAK,MAAM,EAAE;AAE7B,YAAM,UAAU,QACb;AAAA,QACC,CAAC,KAAK,QAAQ,QAAQ;AACpB,cAAI,OAAO,MAAM,OAAO,MAAM,CAAC,GAAG;AAChC,gBAAI,IAAI,MAAO,KAAI,OAAO,KAAK,IAAI,KAAK;AACxC,gBAAI,QAAQ;AAAA,UACd,MAAO,KAAI,QAAQ,GAAG,IAAI,KAAK,GAAG,MAAM;AACxC,cAAI,QAAQ,QAAQ,SAAS,KAAK,IAAI;AACpC,gBAAI,OAAO,KAAK,IAAI,KAAK;AAC3B,iBAAO;AAAA,QACT;AAAA,QACA,EAAE,QAAQ,CAAC,GAAG,OAAO,GAAG;AAAA,MAC1B,EAIC,OAAO,QAAQ;AAElB,eAAS,MAAM,OAAO,QAAQ,IAAI,CAAC,CAAC;AACpC,eAAS,QAAQ,OAAO,QAAQ,IAAI,CAAC,CAAC;AACtC,eAAS,QAAQ,QAAQ,SAAS,OAAO,QAAQ,IAAI,CAAC,IAAI,CAAC;AAC3D,eAAS,aAAa,QAAQ,SAAS,OAAO,QAAQ,IAAI,CAAC,IAAI,CAAC;AAAA,IAClE,MAAO,YAAW,OAAO,OAAO;AAEhC,WAAO;AAAA,EACT,GAAG;AAEH,MAAI,yBAA0B,QAAO;AAErC,QAAM,SAAS,eAAe,OAAO,YAAY;AACjD,SAAO,WAAW,cAAc,eAAe;AACjD;AAGO,SAAS,8CACd,MACA,eAAe,SACf,YACA;AACA,QAAM,cAAc;AACpB,QAAM,eAAe,0BAA0B,YAAY;AAE3D,MAAI,cAAc,CAAC,kBAAkB,UAAU,GAAG;AAChD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,sBAAsB;AAAA,IAC1B,GAAI,cAAc,CAAC;AAAA,IACnB,0BAA0B;AAAA,EAC5B;AACA,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,iBAAiB,KAAK,IAAI,OAAO,EAAE,UAAU,GAAG,SAAS;AAC/D,QAAM,SAAS,eAAe,OAAO,YAAY;AAEjD,SAAO,WAAW,cAAc,eAAe;AACjD;AAIO,IAAM,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MACzC,KAAK,OAAO,CAAC,KAAK,QAAQ;AACxB,QAAM,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,KAAK,IAAI;AACjC,SAAO;AACT,GAAG,GAAG;AAED,IAAM,SAAS,MAAM;AAC1B,SAAO,aAAa,WAAW,aAAa;AAC5C,SAAO,aAAa,WAAW,cAAc;AAC7C,SAAO,SAAS,OAAO;AACzB;AAEO,IAAM,YAAY,CAAC,IAAI,SAAS;AACrC,MAAI,CAAC,GAAI,QAAO;AAChB,MAAI,CAAC,KAAM,QAAO,OAAO,iBAAiB,EAAE;AAC5C,SAAO,OAAO,iBAAiB,EAAE,EAAE,iBAAiB,IAAI;AAC1D;AAEO,IAAM,eAAe,CAAC,IAAI,WAAW;AAC1C,MAAI,CAAC,GAAI,QAAO;AAEhB,QAAM,UAAU,MAAM,KAAK,EAAE;AAC7B,QAAM,YAAY,UAAU,OAAO,SAAS,IAAI,SAAS;AAEzD,MAAI,SAAS,QAAQ,OAAO,CAAC,KAAK,SAAS;AACzC,QAAI,OAAO,IAAI,GAAG;AAChB,aAAO,MAAM,OAAO,IAAI;AAAA,IAC1B;AACA,WAAO;AAAA,EACT,GAAG,CAAC;AAEJ,SAAO,UAAU,UAAU,QAAQ;AACjC,cAAU,UAAU;AAAA,EACtB;AAEA,SAAO,UAAU,MAAM;AACzB;AAEO,IAAM,WAAW,CAAC,IAAI,OAAO;AAClC,MAAI,KAAK;AACT,SAAO,IAAI,SAAS;AAClB,iBAAa,EAAE;AACf,SAAK,WAAW,MAAM;AACpB,mBAAa,EAAE;AACf,SAAG,GAAG,IAAI;AAAA,IACZ,GAAG,EAAE;AAAA,EACP;AACF;AAEO,IAAM,WAAW,CAAC,IAAI,OAAO;AAClC,MAAI,KAAK;AACT,SAAO,IAAI,SAAS;AAClB,QAAI,GAAI;AACR,OAAG,GAAG,IAAI;AACV,SAAK,WAAW,MAAM;AACpB,mBAAa,EAAE;AACf,WAAK;AAAA,IACP,GAAG,EAAE;AAAA,EACP;AACF;AAEO,IAAM,oBAAoB,CAAC,OAAO,OAAO,MAAM;AAEpD,QAAM,aAAa,OAAO,SAAS,GAAG;AAGtC,QAAM,iBAAiB,aACnB,OAAO,MAAM,GAAG,OAAO,QAAQ,GAAG,CAAC,IACnC;AAGJ,QAAM,UAAU,eACb,MAAM,EAAE,EACR,QAAQ,EACR;AAAA,IACC,CAAC,KAAK,MAAM,QACV,MAAM,SAAS,KAAK,QAAQ,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;AAAA,IACrE,CAAC;AAAA,EACH,EACC,QAAQ,EACR,KAAK,EAAE;AAEV,SAAO,aAAa,UAAU,OAAO,MAAM,OAAO,QAAQ,GAAG,CAAC,IAAI;AACpE;AAEO,IAAM,aAAa,CAAC,KAAK,QAAQ,CAAC,MAAM;AAC7C,QAAM,cAAc,MAAM,KAAK,CAAC,MAAM,EAAE,QAAQ,SAAS;AAEzD,MAAI,KAAK;AACP,UAAM,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAC5C,aAAS,QAAQ,MAAM,SAAS,aAAa;AAC7C,aACG,cAAc,0BAA0B,EACxC,aAAa,WAAW,MAAM,eAAe,aAAa,WAAW;AAAA,EAC1E;AACF;AAEO,IAAM,qBAAqB,CAAC,QACjC,OAAO,QAAQ,WACX,GAAG,IAAI,OAAO,CAAC,EAAE,YAAY,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,KAC7C;AACC,IAAM,cAAc;AAEpB,IAAM,aAAa,CAAC,QACzB,MAAO,OAAO,QAAQ,aAAa,CAAC,SAAS,IAAI,IAAI,IAAI,MAAO;AAE3D,SAAS,kBAAkB,MAAM,UAAU,OAAO,WAAW;AAClE,QAAM,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC;AACtC,MAAI,OAAO,UAAU;AAEnB,WAAO,UAAU,iBAAiB,MAAM,QAAQ;AAAA,OAC7C;AAEH,UAAM,IAAI,SAAS,cAAc,GAAG,GAClC,MAAM,IAAI,gBAAgB,IAAI;AAChC,MAAE,OAAO;AACT,MAAE,WAAW;AACb,aAAS,KAAK,YAAY,CAAC;AAC3B,MAAE,MAAM;AACR,eAAW,MAAM;AACf,eAAS,KAAK,YAAY,CAAC;AAC3B,aAAO,IAAI,gBAAgB,GAAG;AAAA,IAChC,GAAG,CAAC;AAAA,EACN;AACF;AAEO,IAAM,eAAe,OAAO,EAAE,KAAK,MAAM,OAAO,KAAK,MAAM;AAChE,QAAM,WAAW,MAAM,MAAM,GAAG,EAAE,KAAK,OAAO,SAAS;AAAA,IACrD,MAAM,MAAM,IAAI,KAAK;AAAA,IACrB,MAAM,QAAQ,IAAI,QAAQ,IAAI,cAAc;AAAA,EAC9C,EAAE;AACF,oBAAkB,SAAS,MAAM,MAAM,SAAS,IAAI;AACtD;AAEO,IAAM,UAAU,CAAC,OAAO,QAAQ,OAAO,CAAC,MAAM;AAEnD,MAAI,OAAO,UAAU,OAAO,OAAQ,QAAO;AAE3C,MAAI,MAAM,QAAQ,KAAK,MAAM,MAAM,QAAQ,MAAM,EAAG,QAAO;AAI3D,MAAI,EAAE,iBAAiB,QAAS,QAAO,UAAU;AAIjD,QAAM,0BAA0B,CAAC,SAAS;AACxC,QAAI,OAAO,SAAS,WAAY,QAAO,KAAK,SAAS;AACrD,QAAI,EAAE,gBAAgB,QAAS,QAAO;AAEtC,WAAO,OAAO,QAAQ,IAAI,EACvB,KAAK,CAAC,GAAG,MAAO,EAAE,CAAC,EAAG,cAAc,EAAE,CAAC,CAAC,CAAC,EACzC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAO,CAAC,KAAK,wBAAwB,KAAK,GAAG,CAAC,CAAC,CAAE;AAAA,EACtE;AAGA,QAAM,+BAA+B,wBAAwB,KAAK;AAClE,QAAM,gCAAgC,wBAAwB,MAAM;AAEpE,SAAQ,KAAK,UAAU,4BAA4B,MAAM,KAAK,UAAU,6BAA6B;AACvG;AAGO,IAAM,iBAAiB,CAAC,UAAU;AACvC,aAAW,MAAM;AACf,UAAM,MAAM,MAAM;AAClB,UAAM,QAAQ;AACd,UAAM,QAAQ;AAAA,EAChB,GAAG,EAAE;AACP;AAEO,IAAM,sBAAsB,CAAC,GAAG,GAAG,MAAM,YAAY;AAC1D,MAAI,QAAQ,IAAI,GAAG;AACnB,MAAI,QAAQ,IAAI,GAAG;AAEnB,MAAI,OAAO,UAAU,YAAY,OAAO,UAAU,SAAU,QAAO;AAEnE,UAAQ,OAAO,YAAY;AAC3B,UAAQ,OAAO,YAAY;AAE3B,MAAI,QAAQ,OAAO;AACjB,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,OAAO;AACjB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,IAAM,YAAY,CAAC,SAAS;AACjC,MAAI,MAAM;AACR,WAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAC5C,YAAM,SAAS,IAAI,WAAW;AAC9B,aAAO,cAAc,IAAI;AACzB,aAAO,SAAS,MAAM,QAAQ,OAAO,MAAM;AAC3C,aAAO,UAAU,CAAC,UAAU,OAAO,WAAW,KAAK;AAAA,IACrD,CAAC;AAAA,EACH;AACF;AAEO,IAAM,iBAAiB,CAAC,OAAO,WAAW,MAAM;AACrD,MAAI,CAAC,OAAO,KAAK,EAAG,QAAO;AAE3B,QAAM,IAAI;AACV,QAAM,KAAK,WAAW,IAAI,IAAI;AAC9B,QAAM,QAAQ,CAAC,SAAS,MAAM,MAAM,IAAI;AAExC,QAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAElD,SAAO,GAAG,YAAY,QAAQ,KAAK,IAAI,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AACxE;AAEO,IAAM,0BAA0B,CAAC,kBAAkB;AAExD,QAAM,WAAW,eACb,MAAM,GAAG,EACV,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,YAAY,CAAC;AAGxC,QAAM,aAAa,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC;AAGxC,SAAO,WAAW,KAAK,IAAI;AAC7B;AAEO,IAAM,QAAQ,MAAM;AACzB,MAAI,YAAY,OAAO,UAAU,WAC/B,WACE,OAAO,WAAW,eAAe,YAAY,OAAO,UAAU,UAChE,iBAAiB,CAAC,aAAa,YAAY,UAAU,QAAQ,GAC7D,mBAAmB,CAAC,SAAS,SAAS,WAAW,OAAO,GACxD,eAAe,CAAC,UAAU,QAAQ,MAAM,GACxC,KAAK,GAAG;AAEV,MAAI,eAAe,QAAQ,QAAQ,MAAM,IAAI;AAC3C,SAAK,GAAG;AAAA,EACV,WAAW,aAAa,QAAQ,QAAQ,MAAM,IAAI;AAChD,SAAK,GAAG;AAAA,EACV,WAAW,iBAAiB,QAAQ,QAAQ,MAAM,IAAI;AACpD,SAAK,GAAG;AAAA,EACV,WAAW,UAAU,KAAK,SAAS,GAAG;AACpC,SAAK,GAAG;AAAA,EACV,WAAW,QAAQ,KAAK,QAAQ,GAAG;AACjC,SAAK,GAAG;AAAA,EACV;AAEA,SAAO;AACT;AAGA,OAAO,UAAU,aAAa,SAAU,aAAa;AACnD,SAAO,MAAM,SAAS,aAAa;AACrC;AACA,OAAO,UAAU,oBAAoB,SAAU,OAAO;AACpD,SAAO,MAAM,SAAS,MAAM;AAC9B;AAEO,IAAM,mBAAmB,CAAC,EAAE,SAAS,IAAI,WAAW,KAAK,MAC9D,UAAU,WAAW,SAAY,GAAG,WAAW,MAAM,EAAE,GAAG,MAAM,KAAK;;;AC/cvE,SAAS,YAAY,OAAuB;AAC1C,MAAI,OAAO,UAAU,YAAY,UAAU,GAAI,QAAO;AACtD,SAAO;AACT;AAOA,SAAS,YAA8B,OAAa;AAClD,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAChF,WAAO,MAAM,KAAK;AAAA,EACpB;AACA,SAAO,CAAC;AACV;AAOA,SAAS,YAAY,OAAuB;AAC1C,MAAI,CAAC,OAAO,MAAM,KAAK,KAAK,OAAO,UAAU,SAAU,QAAO;AAC9D,SAAO;AACT;AAOA,IAAM,aAAa,CAAI,UAAqB,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,IAAI,CAAC;AAOnF,SAAS,aAAa,OAAyB;AAC7C,MAAI,mBAAY,UAAU,KAAK,GAAG;AAChC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAQA,SAAS,aAAgB,OAAU,cAAoB;AACrD,SAAO,UAAU,QAAQ,UAAU,SAAY,QAAQ;AACzD;AAEA,IAAM,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,oBAAQ;",
|
|
3
|
+
"sources": ["../src/Functions/guards/typeGuards.ts", "../src/Functions/guards/assertions.ts", "../src/Functions/utils.js", "../src/Constants/index.constants.js", "../src/Functions/guards/safeValue.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * @name isArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C.\n * @example\n * const result = isArray([]);\n * console.log(result); // true\n * @example\n * const result = isArray({});\n * console.log(result); // false\n */\nconst isArray = (value: unknown): value is unknown[] => Array.isArray(value);\n\n/**\n * @name isObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isObject \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isObject({});\n * console.log(result); // true\n * @example\n * const result = isObject([]);\n * console.log(result); // false\n */\nfunction isObject(value: unknown): value is object {\n return typeof value === 'object' && value !== null && !isArray(value)\n}\n\n/**\n * @name isNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isNumber \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0447\u0438\u0441\u043B\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isNumber(1);\n * console.log(result); // true\n */\nconst isNumber = (value: unknown): value is number => typeof value === 'number';\n\n/**\n * @name isString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isString \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u043E\u0439.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isString('string');\n * console.log(result); // true\n */\nconst isString = (value: unknown): value is string => typeof value === 'string';\n\n/**\n * @name isBoolean\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isBoolean \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0431\u0443\u043B\u0435\u0432\u044B\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isBoolean(true);\n * console.log(result); // true\n */\nconst isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n\n/**\n * @name isFunction\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isFunction \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const result = isFunction(() => {});\n * console.log(result); // true\n * @example\n * const result = isFunction('string');\n * console.log(result); // false\n * @example\n * const result = isFunction(1);\n * console.log(result); // false\n */\nconst isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n/**\n * @name isInstanceOf\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isInstanceOf \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param classType - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * class TestClass {}\n * const result = isInstanceOf(new TestClass(), TestClass);\n * console.log(result); // true\n */\nconst isInstanceOf = <T>(value: unknown, classType: new () => T): value is T => value instanceof classType;\n\n/**\n * @name isEnumValue\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEnumValue \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum.\n * @param enumObject - enum \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * enum Colors {\n * Red = 'red',\n * Green = 'green',\n * Blue = 'blue',\n * }\n * const result = isEnumValue(Colors, 'red');\n * console.log(result); // true\n * @returns true - \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum, false - \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum\n */\nfunction isEnumValue<T extends string | number>(enumObject: Record<string, T>, value: unknown): value is T {\n return Object.values(enumObject).includes(value as T)\n}\n\n/**\n * @name isNullOrUndefined\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isNullOrUndefined \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F null \u0438\u043B\u0438 undefined.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isNullOrUndefined(null) // true\n * isNullOrUndefined(undefined) // true\n * isNullOrUndefined(1) // false\n */\nfunction isNullOrUndefined(value: unknown): value is null | undefined {\n return value === null || value === undefined\n}\n\n/**\n * @name isTruthy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTruthy \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F true.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTruthy(true) // true\n * isTruthy(1) // true\n * isTruthy(Infinity) // true\n * isTruthy(-Infinity) // true\n * isTruthy(Symbol()) // true\n * isTruthy('some string') // true\n * isTruthy({}) // true\n * isTruthy([]) // true\n * isTruthy(Symbol('some description')) // true\n * isTruthy(() => {}) // true\n * isTruthy(function() {}) // true\n * isTruthy(class {}) // true\n * isTruthy(0) // false\n * isTruthy('') // false\n * isTruthy(null) // false\n * isTruthy(undefined) // false\n * isTruthy(NaN) // false\n * isTruthy(false) // false\n */\nconst isTruthy = (value: unknown): value is boolean | number | string | object => !!value;\n\n/**\n * @name isEmptyObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEmptyObject \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0443\u0441\u0442\u044B\u043C \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isEmptyObject({}) // true\n * isEmptyObject({ a: 1 }) // false\n */\nconst isEmptyObject = (value: unknown): value is object => isObject(value) && Object.keys(value).length === 0;\n\n/**\n * @name isTypedArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTypedArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u0442\u0438\u043F \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTypedArray([1, 2, 3], Number) // true\n * isTypedArray([1, 2, 3], String) // false\n */\nfunction isTypedArray<T>(value: unknown, type: new (...args: any[]) => T): value is T[] {\n return isArray(value) && value.every(item => item instanceof type)\n}\n\n/**\n * @name isArrayWithLength\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isArrayWithLength \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0439 \u0434\u043B\u0438\u043D\u044B.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param length - \u0434\u043B\u0438\u043D\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n * @example\n * isArrayWithLength([1, 2, 3], 3) // true\n * isArrayWithLength([1, 2, 3], 2) // false\n */\nfunction isArrayWithLength(value: unknown, length: number): value is unknown[] {\n return isArray(value) && value.length === length\n}\n\n/**\n * @name isEmptyArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isEmptyArray \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0443\u0441\u0442\u044B\u043C \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isEmptyArray([]) // true\n * isEmptyArray([1]) // false\n */\nconst isEmptyArray = (value: unknown): value is [] => Array.isArray(value) && value.length === 0;\n\n/**\n * @name isTypeOrNull\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isTypeOrNull \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430 \u0438\u043B\u0438 null.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isTypeOrNull(null, SomeClass) // true\n * isTypeOrNull(new SomeClass(), SomeClass) // true\n */\nfunction isTypeOrNull<T>(value: unknown, type: new (...args: any[]) => T): value is T | null {\n return value === null || value instanceof type\n}\n\nconst nonNullable = <T>(value: T): value is NonNullable<T> => value !== null && value !== undefined;\n\n/**\n * @name isDate\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isDate \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Date.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isDate(new Date()) // true\n * isDate('2023-01-01') // false\n */\nconst isDate = (value: unknown): value is Date => value instanceof Date;\n\n/**\n * @name isPromise\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isPromise \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F Promise.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isPromise(Promise.resolve()) // true\n * isPromise({ then: () => {} }) // false\n */\nconst isPromise = (value: unknown): value is Promise<unknown> => value instanceof Promise;\n\n/**\n * @name isRegExp\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isRegExp \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u044B\u043C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isRegExp(/test/) // true\n * isRegExp('test') // false\n */\nconst isRegExp = (value: unknown): value is RegExp => value instanceof RegExp;\n\n/**\n * @name isPrimitive\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isPrimitive \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isPrimitive(42) // true\n * isPrimitive('test') // true\n * isPrimitive(true) // true\n * isPrimitive(null) // true\n * isPrimitive(undefined) // true\n * isPrimitive({}) // false\n */\nfunction isPrimitive(value: unknown): value is string | number | boolean | null | undefined {\n return value === null || value === undefined || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'\n}\n\n/**\n * @name isError\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isError \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C \u043E\u0448\u0438\u0431\u043A\u0438.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isError(new Error()) // true\n * isError({ message: 'error' }) // false\n */\nconst isError = (value: unknown): value is Error => value instanceof Error;\n\n/**\n * @name isSymbol\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isSymbol \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isSymbol(Symbol()) // true\n * isSymbol('symbol') // false\n */\nconst isSymbol = (value: unknown): value is symbol => typeof value === 'symbol';\n\n/**\n * @name isMap\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isMap \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Map.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isMap(new Map()) // true\n * isMap({}) // false\n */\nconst isMap = (value: unknown): value is Map<unknown, unknown> => value instanceof Map;\n\n/**\n * @name isSet\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isSet \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C Set.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isSet(new Set()) // true\n * isSet([]) // false\n */\nconst isSet = (value: unknown): value is Set<unknown> => value instanceof Set;\n\n/**\n * @name isReactElement\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactElement \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * isReactElement(<div>Test</div>) // true\n * isReactElement('div') // false\n */\nfunction isReactElement(value: unknown): value is React.ReactElement {\n return isObject(value) && 'type' in value && 'props' in value && '$$typeof' in value;\n}\n\n/**\n * @name isReactComponent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactComponent \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyComponent = () => <div>Test</div>;\n * isReactComponent(MyComponent) // true\n * isReactComponent('div') // false\n */\nfunction isReactComponent(value: unknown): value is React.ComponentType {\n return isFunction(value) || (isObject(value) && 'render' in value);\n}\n\n/**\n * @name isComponentType\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isComponentType \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0442\u0438\u043F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param componentType - \u0442\u0438\u043F \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyComponent = () => <div>Test</div>;\n * isComponentType(<MyComponent />, MyComponent) // true\n */\nfunction isComponentType<T extends React.ComponentType>(value: unknown, componentType: T): value is React.ReactElement<React.ComponentProps<T>> {\n return isReactElement(value) && value.type === componentType;\n}\n\n/**\n * @name isReactEvent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isReactEvent \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u0441\u043E\u0431\u044B\u0442\u0438\u0435\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const handleClick = (e) => {\n * if (isReactEvent(e)) {\n * e.preventDefault();\n * }\n * };\n */\nfunction isReactEvent(value: unknown): value is React.SyntheticEvent {\n return isObject(value) && 'nativeEvent' in value && 'currentTarget' in value && 'target' in value;\n}\n\n/**\n * @name isRef\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isRef \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u0440\u0435\u0444\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const ref = useRef(null);\n * isRef(ref) // true\n */\nfunction isRef(value: unknown): value is React.RefObject<unknown> {\n return isObject(value) && 'current' in value;\n}\n\n/**\n * @name isContext\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isContext \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043E\u043C.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * const MyContext = React.createContext(null);\n * isContext(MyContext) // true\n */\nfunction isContext(value: unknown): value is React.Context<unknown> {\n return isObject(value) && 'Provider' in value && 'Consumer' in value;\n}\n\n/**\n * @name isType\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F isType \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0442\u0438\u043F, \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u043C\u0443 \u0442\u0438\u043F\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param type - \u0442\u0438\u043F \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @example\n * interface User {\n * name: string;\n * age: number;\n * }\n *\n * const user = { name: \"John\", age: 30 };\n * const isUser = isType<User>(user,);\n * console.log(isUser); // true\n *\n * const notUser = \"John\";\n * console.log(isType<User>(notUser)); // false\n */\nfunction isType<T>(value: unknown): value is T {\n const type = typeof value;\n return (\n type === 'string'\n || type === 'number'\n || type === 'boolean'\n || type === 'object'\n || type === 'function'\n || type === 'undefined'\n || type === 'symbol'\n || type === 'bigint'\n );\n}\n\nconst typesGuards = {\n isArray,\n isObject,\n isNumber,\n isString,\n isBoolean,\n isFunction,\n isInstanceOf,\n isEnumValue,\n isNullOrUndefined,\n isTruthy,\n isEmptyObject,\n isEmptyArray,\n isTypedArray,\n isArrayWithLength,\n isTypeOrNull,\n nonNullable,\n isDate,\n isPromise,\n isRegExp,\n isPrimitive,\n isError,\n isSymbol,\n isMap,\n isSet,\n isReactElement,\n isReactComponent,\n isComponentType,\n isReactEvent,\n isRef,\n isContext,\n isType,\n};\n\nexport default typesGuards;\n", "import typesGuards from './typeGuards';\n\n/**\n * @name assertArray\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertArray \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C\n * @example\n * assertArray([]); // OK\n * assertArray({}); // TypeError: Expected value to be an array\n */\nfunction assertArray(value: unknown, message?: string): asserts value is unknown[] {\n if (!Array.isArray(value)) {\n throw new TypeError(message || 'Expected value to be an array');\n }\n}\n\n/**\n * @name assertObject\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertObject \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C\n * @example\n * assertObject({}); // OK\n * assertObject([]); // TypeError: Expected value to be an object\n */\nfunction assertObject(value: unknown, message?: string): asserts value is object {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TypeError(message || 'Expected value to be an object');\n }\n}\n\n/**\n * @name assertNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0447\u0438\u0441\u043B\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0447\u0438\u0441\u043B\u043E\u043C\n * @example\n * assertNumber(1); // OK\n * assertNumber('1'); // TypeError: Expected value to be a number\n */\nfunction assertNumber(value: unknown, message?: string): asserts value is number {\n if (typeof value !== 'number') {\n throw new TypeError(message || 'Expected value to be a number');\n }\n}\n\n/**\n * @name assertString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertString \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u0442\u0440\u043E\u043A\u043E\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0441\u0442\u0440\u043E\u043A\u043E\u0439\n * @example\n * assertString('text'); // OK\n * assertString(1); // TypeError: Expected value to be a string\n */\nfunction assertString(value: unknown, message?: string): asserts value is string {\n if (typeof value !== 'string') {\n throw new TypeError(message || 'Expected value to be a string');\n }\n}\n\n/**\n * @name assertBoolean\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertBoolean \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0431\u0443\u043B\u0435\u0432\u044B\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0431\u0443\u043B\u0435\u0432\u044B\u043C\n * @example\n * assertBoolean(true); // OK\n * assertBoolean('true'); // TypeError: Expected value to be a boolean\n */\nfunction assertBoolean(value: unknown, message?: string): asserts value is boolean {\n if (typeof value !== 'boolean') {\n throw new TypeError(message || 'Expected value to be a boolean');\n }\n}\n\n/**\n * @name assertFunction\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertFunction \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439\n * @example\n * assertFunction(() => {}); // OK\n * assertFunction('function'); // TypeError: Expected value to be a function\n */\nfunction assertFunction(value: unknown, message?: string): asserts value is (...args: any[]) => any {\n if (typeof value !== 'function') {\n throw new TypeError(message || 'Expected value to be a function');\n }\n}\n\n/**\n * @name assertInstanceOf\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertInstanceOf \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param classType - \u043A\u043B\u0430\u0441\u0441 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u043C \u043A\u043B\u0430\u0441\u0441\u0430\n * @example\n * class TestClass {}\n * assertInstanceOf(new TestClass(), TestClass); // OK\n * assertInstanceOf({}, TestClass); // TypeError: Expected value to be an instance of TestClass\n */\nfunction assertInstanceOf<T>(value: unknown, classType: new () => T, message?: string): asserts value is T {\n if (!(value instanceof classType)) {\n throw new TypeError(message || `Expected value to be an instance of ${classType.name}`);\n }\n}\n\n/**\n * @name assertEnumValue\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertEnumValue \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param enumObject - enum \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C enum\n * @example\n * enum Colors { Red = 'red', Green = 'green', Blue = 'blue' }\n * assertEnumValue(Colors, 'red'); // OK\n * assertEnumValue(Colors, 'yellow'); // TypeError: Expected value to be one of: red, green, blue\n */\nfunction assertEnumValue<T extends string | number>(\n enumObject: Record<string, T>,\n value: unknown,\n message?: string,\n): asserts value is T {\n if (!Object.values(enumObject).includes(value as T)) {\n throw new TypeError(\n message || `Expected value to be one of: ${Object.values(enumObject).join(', ')}`,\n );\n }\n}\n\n/**\n * @name assertReactElement\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertReactElement \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u043C\n * @example\n * assertReactElement(<div>Test</div>); // OK\n * assertReactElement('div'); // TypeError: Expected value to be a React element\n */\nfunction assertReactElement(value: unknown, message?: string): asserts value is React.ReactElement {\n if (!(typesGuards.isObject(value) && 'type' in value && 'props' in value && '$$typeof' in value)) {\n throw new TypeError(message || 'Expected value to be a React element');\n }\n}\n\n/**\n * @name assertReactComponent\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertReactComponent \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F React \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u043E\u043C\n * @example\n * const MyComponent = () => <div>Test</div>;\n * assertReactComponent(MyComponent); // OK\n * assertReactComponent('div'); // TypeError: Expected value to be a React component\n */\nfunction assertReactComponent(value: unknown, message?: string): asserts value is React.ComponentType {\n if (!(typeof value === 'function' || (typesGuards.isObject(value) && 'render' in value))) {\n throw new TypeError(message || 'Expected value to be a React component');\n }\n}\n\n/**\n * @name assertNonNullable\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNonNullable \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 null \u0438 \u043D\u0435 undefined. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 null \u0438\u043B\u0438 undefined\n * @example\n * assertNonNullable('text'); // OK\n * assertNonNullable(null); // TypeError: Expected value to be non-nullable\n */\nfunction assertNonNullable<T>(value: T, message?: string): asserts value is NonNullable<T> {\n if (value === null || value === undefined) {\n throw new TypeError(message || 'Expected value to be non-nullable');\n }\n}\n\n/**\n * @name assertTruthy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertTruthy \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F truthy. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F truthy\n * @example\n * assertTruthy('text'); // OK\n * assertTruthy(''); // TypeError: Expected value to be truthy\n */\nfunction assertTruthy(value: unknown, message?: string): asserts value is boolean | number | string | object {\n if (!value) {\n throw new TypeError(message || 'Expected value to be truthy');\n }\n}\n\n/**\n * @name assertFalsy\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertFalsy \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F falsy. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F falsy\n * @example\n * assertFalsy(''); // OK\n * assertFalsy('text'); // TypeError: Expected value to be falsy\n */\nfunction assertFalsy(value: unknown, message?: string): asserts value is false | 0 | '' | null | undefined {\n if (value) {\n throw new TypeError(message || 'Expected value to be falsy');\n }\n}\n\n/**\n * @name assertDefined\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertDefined \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435 undefined. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 undefined\n * @example\n * assertDefined('text'); // OK\n * assertDefined(undefined); // TypeError: Expected value to be defined\n */\nfunction assertDefined<T>(value: T, message?: string): asserts value is Exclude<T, undefined> {\n if (value === undefined) {\n throw new TypeError(message || 'Expected value to be defined');\n }\n}\n\n/**\n * @name assertNotEmptyString\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNotEmptyString \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u043D\u0435 \u043F\u0443\u0441\u0442\u0430\u044F. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0441\u0442\u0440\u043E\u043A\u0430 \u043F\u0443\u0441\u0442\u0430\u044F\n * @example\n * assertNotEmptyString('text'); // OK\n * assertNotEmptyString(''); // TypeError: Expected string to be not empty\n */\nfunction assertNotEmptyString(value: string, message?: string): asserts value is string {\n if (value === '') {\n throw new TypeError(message || 'Expected string to be not empty');\n }\n}\n\n/**\n * @name assertPositiveNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertPositiveNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0447\u0438\u0441\u043B\u043E \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0447\u0438\u0441\u043B\u043E \u043D\u0435 \u043F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435\n * @example\n * assertPositiveNumber(1); // OK\n * assertPositiveNumber(-1); // TypeError: Expected number to be positive\n */\nfunction assertPositiveNumber(value: number, message?: string): asserts value is number {\n if (value <= 0) {\n throw new TypeError(message || 'Expected number to be positive');\n }\n}\n\n/**\n * @name assertNegativeNumber\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertNegativeNumber \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u0447\u0438\u0441\u043B\u043E \u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u0447\u0438\u0441\u043B\u043E \u043D\u0435 \u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435\n * @example\n * assertNegativeNumber(-1); // OK\n * assertNegativeNumber(1); // TypeError: Expected number to be negative\n */\nfunction assertNegativeNumber(value: number, message?: string): asserts value is number {\n if (value >= 0) {\n throw new TypeError(message || 'Expected number to be negative');\n }\n}\n\n/**\n * @name assertArrayNotEmpty\n * @description \u0424\u0443\u043D\u043A\u0446\u0438\u044F assertArrayNotEmpty \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442, \u0447\u0442\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u043D\u0435 \u043F\u0443\u0441\u0442\u043E\u0439. \u0415\u0441\u043B\u0438 \u043D\u0435\u0442 - \u0432\u044B\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u0435\u0442 \u043E\u0448\u0438\u0431\u043A\u0443.\n * @param value - \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\n * @param message - \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 (\u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u043E)\n * @throws {TypeError} \u0415\u0441\u043B\u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043F\u0443\u0441\u0442\u043E\u0439\n * @example\n * assertArrayNotEmpty([1]); // OK\n * assertArrayNotEmpty([]); // TypeError: Expected array to be not empty\n */\nfunction assertArrayNotEmpty<T>(value: T[], message?: string): asserts value is [T, ...T[]] {\n if (value.length === 0) {\n throw new TypeError(message || 'Expected array to be not empty');\n }\n}\n\nconst assertions = {\n assertArray,\n assertObject,\n assertNumber,\n assertString,\n assertBoolean,\n assertFunction,\n assertInstanceOf,\n assertEnumValue,\n assertReactElement,\n assertReactComponent,\n assertNonNullable,\n assertTruthy,\n assertFalsy,\n assertDefined,\n assertNotEmptyString,\n assertPositiveNumber,\n assertNegativeNumber,\n assertArrayNotEmpty,\n};\n\nexport default assertions;\n", "import { useEffect } from \"react\";\n\nimport moment from \"moment-timezone\";\n\nimport { DEFAULT_COLORS, OS } from \"../Constants/index.constants\";\n\nexport const uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\nexport const getIsOnlyAnObject = (input) => {\n return (\n typeof input === \"object\" && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B \u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0438\n input instanceof Object && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" null\n !Array.isArray(input) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u0441\u0441\u0438\u0432\u044B\n !(input instanceof Set) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u0441\u0435\u0442\u044B\n !(input instanceof Map) // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u043F\u044B\n );\n};\n\n/* eslint-disable guard-for-in, no-unused-vars */\nexport const handleObjectChange =\n (updateObject, updateFunction) =>\n (data, prop = \"\", isNumber) => {\n let value;\n if (data?.target) {\n value =\n data.target.type === \"checkbox\"\n ? data.target.checked\n : data.target.value;\n } else value = data;\n\n value = isNumber ? Number(value) : value;\n\n const props = prop.split(\".\");\n const currentObject = props.reduce((res, chapter, index) => {\n if (props.length !== index + 1) res = res[chapter];\n return res;\n }, updateObject);\n\n currentObject[props.pop()] = value;\n updateFunction();\n };\n\nexport const useOutsideToggle = (ref, setOut, open) => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n useEffect(() => {\n document.addEventListener(\"mouseup\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mouseup\", handleClickOutside);\n };\n }, [ref]);\n};\n\n// export const clone = obj => {\n// const data = obj instanceof Array ? [] : {};\n// for (const i in obj) data[i] = typeof obj[i] === 'object' && obj[i] != null ? clone(obj[i]) : obj[i];\n// return data;\n// };\n// ! \u042D\u0442\u043E\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435\u0435\nexport const clone = (input) => {\n if (input === null || typeof input !== \"object\") return input;\n const data = input instanceof Array ? [] : {};\n for (const i in input) data[i] = clone(input[i]);\n return data;\n};\n\nexport const getResponseClone = async (res) =>\n await (typeof res?.clone === \"function\" ? res.clone() : clone(res));\n\n//TimeUtils\nexport function transformUTCTimeToLocal(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n const utcDate = moment.utc(date).toDate();\n return moment(utcDate, format).local().format(format);\n}\nexport function transformLocalTimeToUTC(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n return moment(date, format).utc().format(format);\n}\nexport function transformUTCHoursToLocal(time, format = \"HH:mm:ss\") {\n if (!time) return;\n const splitedTime = time.split(\":\");\n const offset = moment().utcOffset();\n let HH = Number(splitedTime[0]);\n let mm = Number(splitedTime[1]);\n const ss = splitedTime[2];\n mm = mm + offset;\n while (mm > 59) {\n mm -= 60;\n HH += 1;\n }\n if (HH > 23) HH -= 24;\n while (mm < 0) {\n mm += 60;\n HH -= 1;\n }\n if (HH < 0) HH += 24;\n return `${HH}:${mm}:${ss}`;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n const { parseFormat, isReturnAsMomentInstance } = getIsOnlyAnObject(\n additional,\n )\n ? additional\n : {};\n\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n return isReturnAsMomentInstance ? moment(\"error\") : ERROR_MESSGE;\n }\n\n //? \u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C parseFormat, \u0435\u0441\u043B\u0438 data \u043F\u0440\u0438\u0448\u043B\u0430 \u043A\u0430\u043A timestamp \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 parseFormat \u043D\u0435 \u0441\u0442\u0440\u043E\u043A\u0430\n const momentArgs = [\n data,\n ...(!Number.isNaN(Number(data)) || typeof parseFormat === \"string\"\n ? []\n : [parseFormat]),\n ];\n\n //? \u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440, \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 \u043B\u0438\u0431\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439\n const momentInstance = (() => {\n let instance = moment(...momentArgs);\n\n //? \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C \u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0441\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440-\u0430 \u043F\u0443\u0442\u0435\u043C \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043E \u043A \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u043C\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\n //? \u041F\u043E\u043F\u0430\u0434\u0435\u043C \u0432 \u044D\u0442\u043E\u0442 \u043A\u0435\u0439\u0441 \u0435\u0441\u043B\u0438\n //? - data \u044D\u0442\u043E timestamp\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date-time\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date (\u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0432\u0440\u0435\u043C\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F 00:00:00)\n if (instance.format(outputFormat) !== ERROR_VALUE) return instance;\n //? \u0415\u0441\u043B\u0438 \u0436\u0435 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u0442\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u043C, \u0447\u0442\u043E data \u043F\u0440\u0438\u0448\u043B\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 time\n //? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044B, \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u043C data \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u0440\u0435\u043C\u044F\n //? \u041A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u0430\u0442\u0442\u0435\u0440\u043D\u044B: 'HH*mm', 'HH*mm*ss', 'HH*mm*ss*\u043B\u044E\u0431\u043E\u0435_\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E_ms', \u0433\u0434\u0435 * - \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C\n else if (/^\\d\\d.\\d\\d/.test(data)) {\n instance = moment();\n const symbols = data.split(\"\");\n\n const timeArr = symbols\n .reduce(\n (acc, symbol, idx) => {\n if (Number.isNaN(Number(symbol))) {\n if (acc.group) acc.result.push(acc.group);\n acc.group = \"\";\n } else acc.group = `${acc.group}${symbol}`;\n if (idx === symbols.length - 1 && acc.group)\n acc.result.push(acc.group);\n return acc;\n },\n { result: [], group: \"\" },\n )\n //? reverse \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0435 \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 pop, \u0430 \u043D\u0435 shift,\n //? \u0442.\u043A. \u043C\u0435\u0442\u043E\u0434\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F/\u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u043D\u0446\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0431\u044B\u0441\u0442\u0440\u0435\u0435,\n //? \u0447\u0435\u043C \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u044B\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n .result.reverse();\n\n instance.hours(Number(timeArr.pop()));\n instance.minutes(Number(timeArr.pop()));\n instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);\n instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);\n } else instance = moment(\"error\"); //? \u0418\u043D\u0430\u0447\u0435 \u0441\u043E\u0437\u0434\u0430\u0435\u043C \u0437\u0430\u0432\u0435\u0434\u043E\u043C\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\n\n return instance;\n })();\n\n if (isReturnAsMomentInstance) return momentInstance;\n\n const output = momentInstance.format(outputFormat);\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormattedLocal(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n\n if (additional && !getIsOnlyAnObject(additional)) {\n throw new Error(\n \"Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]\",\n );\n }\n\n const compositeAdditional = {\n ...(additional || {}),\n isReturnAsMomentInstance: true,\n };\n const date = transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat,\n compositeAdditional,\n );\n\n const dateWithLocale = date.add(moment().utcOffset(), \"minutes\");\n const output = dateWithLocale.format(outputFormat);\n\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043A\u043B\u044E\u0447\u0435\u0439 \u043E\u0431\u044C\u0435\u043A\u0442\u0430\n//\u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0441 \u0442\u0435\u043C\u0438 \u043F\u043E\u043B\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u043A\u043B\u044E\u0447\u0435\u0439\nexport const omitKeys = (obj = {}, keys = []) =>\n keys.reduce((acc, key) => {\n const { [key]: omit, ...rest } = acc;\n return rest;\n }, obj);\n\nexport const logout = () => {\n window.localStorage.removeItem(\"accessToken\");\n window.localStorage.removeItem(\"tokenExpires\");\n window.location.reload();\n};\n\nexport const getStyles = (el, prop) => {\n if (!el) return null;\n if (!prop) return window.getComputedStyle(el);\n return window.getComputedStyle(el).getPropertyValue(prop);\n};\n\nexport const getColorById = (id, colors) => {\n if (!id) return \"#FF7D00\";\n\n const idToArr = Array.from(id);\n const colorsArr = colors && colors.length > 0 ? colors : DEFAULT_COLORS;\n\n let number = idToArr.reduce((acc, item) => {\n if (Number(item)) {\n return acc + Number(item);\n }\n return acc;\n }, 0);\n\n while (number >= colorsArr.length) {\n number -= colorsArr.length;\n }\n\n return colorsArr[number];\n};\n\nexport const debounce = (fn, ms) => {\n let id = null;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => {\n clearTimeout(id);\n fn(...args);\n }, ms);\n };\n};\n\nexport const throttle = (fn, ms) => {\n let id = null;\n return (...args) => {\n if (id) return;\n fn(...args);\n id = setTimeout(() => {\n clearTimeout(id);\n id = null;\n }, ms);\n };\n};\n\nexport const addBitDepthPoints = (value, step = 3) => {\n //\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043B\u0438 value \u0442\u043E\u0447\u043A\u0443\n const isFraction = value?.includes(\".\");\n\n //\u0432\u0437\u044F\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043E \u0442\u043E\u0447\u043A\u0438\n const valueBeforeDot = isFraction\n ? value?.slice(0, value?.indexOf(\".\"))\n : value;\n\n //\u0440\u0430\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u0445 \u043F\u043E\u0441\u043B\u0435 \u043A\u0430\u0436\u0434\u043E\u0439 3\u0439 \u0446\u0438\u0444\u0440\u044B \u0441 \u043A\u043E\u043D\u0446\u0430\n const intPart = valueBeforeDot\n .split(\"\")\n .reverse()\n .reduce(\n (acc, item, idx) =>\n idx % step === 0 && idx !== 0 ? [...acc, \",\", item] : [...acc, item],\n [],\n )\n .reverse()\n .join(\"\");\n\n return isFraction ? intPart + value?.slice(value?.indexOf(\".\")) : intPart;\n};\n\nexport const changeMeta = (key, items = []) => {\n const defaultMeta = items.find((i) => i.key === \"default\");\n\n if (key) {\n const item = items.find((i) => i.key === key);\n document.title = item?.title ?? defaultMeta?.title;\n document\n .querySelector('meta[name=\"description\"]')\n .setAttribute(\"content\", item?.description ?? defaultMeta?.description);\n }\n};\n\nexport const firstLetterCapital = (str) =>\n typeof str === \"string\"\n ? `${str.charAt(0).toUpperCase()}${str.slice(1)}`\n : str;\nexport const capitalized = firstLetterCapital;\n\nexport const checkedRef = (ref) =>\n ref ? (typeof ref === \"function\" ? (node) => ref(node) : ref) : null;\n\nexport function downloadEmulation(data, filename, type = \"image/*\") {\n const file = new Blob([data], { type });\n if (window.navigator.msSaveOrOpenBlob)\n // IE10+\n window.navigator.msSaveOrOpenBlob(file, filename);\n else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(() => {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nexport const downloadFile = async ({ url, name, type = null }) => {\n const response = await fetch(url).then(async (res) => ({\n data: await res.blob(),\n type: type ?? res.headers.get(\"content-type\"),\n }));\n downloadEmulation(response.data, name, response.type);\n};\n\nexport const compare = (first, second, keys = []) => {\n //? \u0415\u0441\u043B\u0438 \u0442\u0438\u043F\u044B \u041D\u0415 \u0440\u0430\u0432\u043D\u044B - \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (typeof first !== typeof second) return false;\n //? \u0415\u0441\u043B\u0438 \u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441 \"\u043C\u0430\u0441\u0441\u0438\u0432 \u043B\u0438?\" \u043D\u0435 \u0440\u0430\u0432\u043D\u044B, \u0442\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0438 \u0442\u0438\u043F\u044B, \u0437\u043D\u0430\u0447\u0438\u0442 \u0442\u043E\u0436\u0435 \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (Array.isArray(first) !== Array.isArray(second)) return false;\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u043E\u0448\u043B\u0438 if-\u043A\u0443 - \u0442\u0438\u043F\u044B \u0443\u0441\u043B\u043E\u0432\u043D\u043E \u0440\u0430\u0432\u043D\u044B, \u043C\u043E\u0436\u0435\u043C \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u0442\u0438\u043F \u043B\u0438\u0448\u044C \u043E\u0434\u043D\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0441\u043F\u0440\u0430\u0432\u0435\u0434\u043B\u0438\u0432\u043E \u0438 \u0434\u043B\u044F \u0432\u0442\u043E\u0440\u043E\u0433\u043E\n\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B - \u043F\u0440\u043E\u0441\u0442\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u043C. \u041A\u0435\u0439\u0441 \u0441 null \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D \u0442\u0443\u0442.\n if (!(first instanceof Object)) return first === second;\n\n //? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043F\u0440\u0438\u043C\u0435\u0442\u0438\u0432\u044B - \u043D\u0435 \u0432\u0430\u0436\u043D\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u0438\u043B\u0438 \u043D\u0435\u0442, \u043C\u0435\u0442\u043E\u0434\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0434\u043B\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043E\u0436\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\n\n const getComparationStructure = (data) => {\n if (typeof data === 'function') return data.toString();\n if (!(data instanceof Object)) return data;\n\n return Object.entries(data)\n .sort((a, b) => (a[0]).localeCompare(b[0]))\n .map(([key, value]) => ([key, getComparationStructure(data[key])]));\n };\n\n //? \u041F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F (\u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u0433\u043B\u0443\u0431\u0438\u043D\u044B) - \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u0432, \u0441\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u043F\u043E \u043A\u043B\u044E\u0447\u0430\u043C,\n const structureForComparingOfFirst = getComparationStructure(first);\n const structureForComparingOfSecond = getComparationStructure(second);\n\n return (JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond));\n};\n\n// Set Carret to the End of Input\nexport const setCarretToEnd = (input) => {\n setTimeout(() => {\n const tmp = input.value;\n input.value = \"\";\n input.value = tmp;\n }, 10);\n};\n\nexport const compareAlphabetical = (a, b, key = \"label\") => {\n let item1 = a?.[key];\n let item2 = b?.[key];\n\n if (typeof item1 !== \"string\" || typeof item2 !== \"string\") return 0;\n\n item1 = item1?.toLowerCase();\n item2 = item2?.toLowerCase();\n\n if (item1 < item2) {\n return -1;\n }\n if (item1 > item2) {\n return 1;\n }\n return 0;\n};\n\nexport const getBase64 = (file) => {\n if (file) {\n return new Promise(function (resolve, reject) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(\"Error: \", error);\n });\n }\n};\n\nexport const renderFileSize = (bytes, decimals = 2) => {\n if (!Number(bytes)) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n};\n\nexport const getUniqueFileExtensions = (extListString) => {\n // Split the extensions list into an array\n const extArray = extListString\n ?.split(\",\")\n .map((ext) => ext.trim().toUpperCase());\n\n // Remove duplicates using a Set\n const uniqueExts = [...new Set(extArray)];\n\n // Join the unique extensions into a string\n return uniqueExts.join(\", \");\n};\n\nexport const getOS = () => {\n let userAgent = window.navigator.userAgent,\n platform =\n window.navigator?.userAgentData?.platform || window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = OS.Unknown;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = OS.MacOS;\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = OS.iOS;\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = OS.Windows;\n } else if (/Android/.test(userAgent)) {\n os = OS.Android;\n } else if (/Linux/.test(platform)) {\n os = OS.Linux;\n }\n\n return os;\n};\n\n\nString.prototype.longerThan = function (compareWith) {\n return this?.length > compareWith?.length;\n};\nString.prototype.lastIndexEqualsTo = function (index) {\n return this?.length - 1 === index;\n};\n\nexport const getCorrectTestId = ({ testId = \"\", withTier = true }) =>\n testId && testId !== undefined ? `${withTier ? \"-\" : \"\"}${testId}` : \"\";\n\n\n", "export const KEYBOARD_SERVICE_KEYS = [\n \"Escape\",\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n \"Tab\",\n \"CapsLock\",\n \"Shift\",\n \"Control\",\n \"Meta\",\n \"Option\",\n \"Alt\",\n \"ContextMenu\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"NumLock\",\n \"Backspace\",\n \"Delete\",\n \"Enter\",\n \"Return\",\n \"Insert\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n \"PrintScreen\",\n \"ScrollLock\",\n \"Pause\",\n];\n\nexport const MAX_PHONE_LENGTH = 10;\nexport const MAX_NAME_LENGTH = 128;\n\nexport const DEFAULT_DATE_MASK_NO_VALUE_SYMBOL = \"_\";\n\nexport const DEFAULT_COLORS = [\n \"#D9C1FF\",\n \"#FFBAF0\",\n \"#FFB8CE\",\n \"#FFC3A2\",\n \"#FFDB7C\",\n \"#F9F871\",\n \"#C3FCF1\",\n \"#F6F2CB\",\n \"#E0F8D1\",\n \"#B1DFFB\",\n \"#8DECFE\",\n \"#76F7ED\",\n \"#8AFEC8\",\n];\n\nexport const KEYBOARD_KEY_CODES = {\n Backspace: 8,\n Delete: 46,\n ARROW_LEFT: 37,\n ARROW_RIGHT: 39,\n};\n\nexport const OS = {\n iOS: \"iOS\",\n Android: \"Android\",\n WP: \"Windows Phone\",\n Linux: \"Linux\",\n Windows: \"Windows\",\n MacOS: \"MacOS\",\n Unknown: \"unknown\",\n};\n", "import { clone } from '../utils';\nimport typesGuards from './typeGuards';\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043E\u043A\u0443, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u043F\u0443\u0441\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u043E\u0439\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction stringValue(value: string): string {\n if (typeof value === 'string' && value !== '') return value;\n return '';\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044A\u0435\u043A\u0442, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043D\u0435\u043F\u0443\u0441\u0442\u044B\u043C \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041A\u043E\u043F\u0438\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u043E\u0439 \u043E\u0431\u044A\u0435\u043A\u0442, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction objectValue<T extends object>(value: T): T {\n if (typeof value === 'object' && value !== null && Object.keys(value).length > 0) {\n return clone(value) as T;\n }\n return {} as T;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043B\u043E, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u043C \u0447\u0438\u0441\u043B\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E \u0438\u043B\u0438 0, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction numberValue(value: number): number {\n if (!Number.isNaN(value) && typeof value === 'number') return value;\n return 0;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043C\u0430\u0441\u0441\u0438\u0432, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u043C\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041A\u043E\u043F\u0438\u044E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0433\u043E \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043B\u0438 \u043F\u0443\u0441\u0442\u043E\u0439 \u043C\u0430\u0441\u0441\u0438\u0432, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nconst arrayValue = <T>(value: T[]): T[] => (Array.isArray(value) ? clone(value) : []);\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0443\u043B\u0435\u0432\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F boolean\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 false, \u0435\u0441\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\n */\nfunction booleanValue(value: boolean): boolean {\n if (typesGuards.isBoolean(value)) {\n return value;\n }\n return false;\n}\n\n/**\n * \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435, \u0435\u0441\u043B\u0438 \u043E\u043D\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u043E null \u0438\u043B\u0438 undefined\n * @param value - \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\n * @param defaultValue - \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n * @returns \u041F\u0435\u0440\u0435\u0434\u0430\u043D\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438\u043B\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\n */\nfunction notNullValue<T>(value: T, defaultValue: T): T {\n return value !== null && value !== undefined ? value : defaultValue;\n}\n\nconst safeValue = {\n booleanValue,\n stringValue,\n objectValue,\n numberValue,\n arrayValue,\n notNullValue,\n};\n\nexport default safeValue;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["isNumber"]
|
|
7
7
|
}
|