@rogolev/value 0.0.2 → 0.0.3

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.
Files changed (133) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +19 -1
  3. package/docs/classes/Value/constructor.md +48 -0
  4. package/docs/classes/Value/get.md +51 -0
  5. package/docs/classes/Value/getType.md +71 -0
  6. package/docs/classes/Value/isArray.md +67 -0
  7. package/docs/classes/Value/isAssoc.md +68 -0
  8. package/docs/classes/Value/isBigInt.md +52 -0
  9. package/docs/classes/Value/isBool.md +60 -0
  10. package/docs/classes/Value/isBoolean.md +60 -0
  11. package/docs/classes/Value/isClass.md +55 -0
  12. package/docs/classes/Value/isEmpty.md +84 -0
  13. package/docs/classes/Value/isFloat.md +52 -0
  14. package/docs/classes/Value/isFunction.md +60 -0
  15. package/docs/classes/Value/isInfinity.md +60 -0
  16. package/docs/classes/Value/isInt.md +52 -0
  17. package/docs/classes/Value/isInteger.md +52 -0
  18. package/docs/classes/Value/isList.md +59 -0
  19. package/docs/classes/Value/isNaN.md +79 -0
  20. package/docs/classes/Value/isNull.md +59 -0
  21. package/docs/classes/Value/isNumber.md +80 -0
  22. package/docs/classes/Value/isNumeric.md +79 -0
  23. package/docs/classes/Value/isObject.md +68 -0
  24. package/docs/classes/Value/isScalar.md +72 -0
  25. package/docs/classes/Value/isString.md +67 -0
  26. package/docs/classes/Value/isSymbol.md +75 -0
  27. package/docs/classes/Value/isUndefined.md +67 -0
  28. package/docs/classes/Value/print.md +164 -0
  29. package/docs/classes/Value/printType.md +158 -0
  30. package/docs/classes/Value/setType.md +79 -0
  31. package/docs/classes/Value/toArray.md +85 -0
  32. package/docs/classes/Value/toAssoc.md +85 -0
  33. package/docs/classes/Value/toBool.md +71 -0
  34. package/docs/classes/Value/toBoolean.md +71 -0
  35. package/docs/classes/Value/toFloat.md +72 -0
  36. package/docs/classes/Value/toInt.md +72 -0
  37. package/docs/classes/Value/toInteger.md +72 -0
  38. package/docs/classes/Value/toList.md +77 -0
  39. package/docs/classes/Value/toObject.md +78 -0
  40. package/docs/classes/Value/toPrint.md +115 -0
  41. package/docs/classes/Value/toPrintType.md +110 -0
  42. package/docs/classes/Value/toString.md +134 -0
  43. package/docs/classes/Value.md +113 -0
  44. package/docs/classes.md +2 -0
  45. package/docs/constants.md +47 -0
  46. package/docs/helpers/value.md +95 -0
  47. package/docs/helpers.md +2 -0
  48. package/index.mjs +3 -0
  49. package/package.json +2 -2
  50. package/src/classes/Convert.mjs +818 -819
  51. package/src/classes/Type.mjs +1284 -1285
  52. package/src/classes/Value.mjs +2846 -0
  53. package/src/constants.mjs +14 -0
  54. package/src/helpers/array.mjs +107 -107
  55. package/src/helpers/empty.mjs +70 -70
  56. package/src/helpers/gettype.mjs +149 -133
  57. package/src/helpers/is_array.mjs +128 -128
  58. package/src/helpers/is_assoc.mjs +51 -51
  59. package/src/helpers/is_bigint.mjs +47 -47
  60. package/src/helpers/is_bool.mjs +43 -43
  61. package/src/helpers/is_boolean.mjs +43 -43
  62. package/src/helpers/is_class.mjs +87 -87
  63. package/src/helpers/is_float.mjs +67 -67
  64. package/src/helpers/is_function.mjs +74 -74
  65. package/src/helpers/is_infinity.mjs +52 -52
  66. package/src/helpers/is_int.mjs +57 -57
  67. package/src/helpers/is_integer.mjs +74 -74
  68. package/src/helpers/is_list.mjs +43 -43
  69. package/src/helpers/is_nan.mjs +51 -51
  70. package/src/helpers/is_null.mjs +37 -37
  71. package/src/helpers/is_number.mjs +49 -49
  72. package/src/helpers/is_numeric.mjs +64 -64
  73. package/src/helpers/is_object.mjs +72 -72
  74. package/src/helpers/is_scalar.mjs +45 -45
  75. package/src/helpers/is_string.mjs +46 -46
  76. package/src/helpers/is_symbol.mjs +46 -46
  77. package/src/helpers/is_undefined.mjs +44 -44
  78. package/src/helpers/print.mjs +245 -245
  79. package/src/helpers/print_type.mjs +261 -261
  80. package/src/helpers/settype.mjs +101 -101
  81. package/src/helpers/to_array.mjs +118 -118
  82. package/src/helpers/to_assoc.mjs +98 -98
  83. package/src/helpers/to_bool.mjs +68 -68
  84. package/src/helpers/to_boolean.mjs +64 -64
  85. package/src/helpers/to_float.mjs +72 -72
  86. package/src/helpers/to_int.mjs +93 -93
  87. package/src/helpers/to_integer.mjs +81 -81
  88. package/src/helpers/to_list.mjs +56 -56
  89. package/src/helpers/to_object.mjs +94 -94
  90. package/src/helpers/to_string.mjs +157 -157
  91. package/src/helpers/value.mjs +92 -0
  92. package/tests/classes/Convert.test.mjs +398 -399
  93. package/tests/classes/Type.test.mjs +1262 -1263
  94. package/tests/classes/Value.test.mjs +423 -0
  95. package/tests/constants.test.mjs +75 -0
  96. package/tests/helpers/array.test.mjs +58 -58
  97. package/tests/helpers/empty.test.mjs +22 -22
  98. package/tests/helpers/gettype.test.mjs +74 -74
  99. package/tests/helpers/is_array.test.mjs +404 -404
  100. package/tests/helpers/is_assoc.test.mjs +42 -42
  101. package/tests/helpers/is_bigint.test.mjs +51 -51
  102. package/tests/helpers/is_bool.test.mjs +43 -43
  103. package/tests/helpers/is_boolean.test.mjs +43 -43
  104. package/tests/helpers/is_class.test.mjs +84 -84
  105. package/tests/helpers/is_float.test.mjs +87 -87
  106. package/tests/helpers/is_function.test.mjs +83 -83
  107. package/tests/helpers/is_infinity.test.mjs +46 -46
  108. package/tests/helpers/is_int.test.mjs +45 -45
  109. package/tests/helpers/is_integer.test.mjs +64 -64
  110. package/tests/helpers/is_list.test.mjs +42 -42
  111. package/tests/helpers/is_nan.test.mjs +43 -43
  112. package/tests/helpers/is_null.test.mjs +17 -17
  113. package/tests/helpers/is_number.test.mjs +25 -25
  114. package/tests/helpers/is_numeric.test.mjs +30 -30
  115. package/tests/helpers/is_object.test.mjs +52 -52
  116. package/tests/helpers/is_scalar.test.mjs +21 -21
  117. package/tests/helpers/is_string.test.mjs +20 -20
  118. package/tests/helpers/is_symbol.test.mjs +20 -20
  119. package/tests/helpers/is_undefined.test.mjs +18 -18
  120. package/tests/helpers/print.test.mjs +62 -62
  121. package/tests/helpers/print_type.test.mjs +62 -62
  122. package/tests/helpers/settype.test.mjs +34 -34
  123. package/tests/helpers/to_array.test.mjs +38 -38
  124. package/tests/helpers/to_assoc.test.mjs +33 -33
  125. package/tests/helpers/to_bool.test.mjs +51 -51
  126. package/tests/helpers/to_boolean.test.mjs +51 -51
  127. package/tests/helpers/to_float.test.mjs +26 -26
  128. package/tests/helpers/to_int.test.mjs +48 -48
  129. package/tests/helpers/to_integer.test.mjs +48 -48
  130. package/tests/helpers/to_list.test.mjs +32 -32
  131. package/tests/helpers/to_object.test.mjs +36 -36
  132. package/tests/helpers/to_string.test.mjs +71 -71
  133. package/tests/helpers/value.test.mjs +68 -0
@@ -0,0 +1,14 @@
1
+ export const TYPE_NULL = 'null';
2
+ export const TYPE_NAN = 'NaN';
3
+ export const TYPE_UNDEFINED = 'undefined';
4
+ export const TYPE_INFINITY = 'infinity';
5
+ export const TYPE_BOOLEAN = 'boolean';
6
+ export const TYPE_INTEGER = 'integer';
7
+ export const TYPE_BIGINT = 'bigint';
8
+ export const TYPE_FLOAT = 'float';
9
+ export const TYPE_STRING = 'string';
10
+ export const TYPE_SYMBOL = 'symbol';
11
+ export const TYPE_CLASS = 'class';
12
+ export const TYPE_FUNCTION = 'function';
13
+ export const TYPE_ARRAY = 'array';
14
+ export const TYPE_OBJECT = 'object';
@@ -1,107 +1,107 @@
1
- import is_array from './is_array.mjs';
2
- import is_assoc from './is_assoc.mjs';
3
-
4
- /**
5
- * Создаёт массив из переданных значений, обрабатывая ассоциативные массивы (объекты с ключами).
6
- *
7
- * ### Параметры
8
- *
9
- * - `values` {...any}
10
- *
11
- * Один или несколько элементов, которые могут быть массивами, объектами или другими значениями.
12
- *
13
- * ### Описание
14
- *
15
- * Функция принимает произвольное количество аргументов и возвращает массив, содержащий переданные значения.
16
- * Если среди переданных значений есть ассоциативные массивы (объекты, не являющиеся массивами и с ненулевым прототипом),
17
- * они преобразуются:
18
- *
19
- * - Создаётся новый объект без прототипа.
20
- * - Добавляются все свойства исходного объекта.
21
- * - Добавляется итератор, позволяющий использовать объект в цикле `for-of` для получения пар `[ключ, значение]`.
22
- *
23
- * Если передано только одно значение, и это массив, функция возвращает его напрямую.
24
- *
25
- * ### Возвращаемое значение
26
- *
27
- * Массив, содержащий переданные значения, с преобразованием ассоциативных массивов.
28
- * Если передано одно значение и это массив, возвращается он сам.
29
- *
30
- * ### Примеры использования
31
- *
32
- * 1. Простые массивы:
33
- *
34
- * ```js
35
- * const result = array([1, 2, 3]);
36
- * console.log(result); // [1, 2, 3]
37
- * ```
38
- *
39
- * 2. Ассоциативные массивы (объекты с ключами и значениями):
40
- *
41
- * ```js
42
- * const result = array({ foo: 'bar', baz: 42 });
43
- * for (const [key, value] of result[0]) {
44
- * console.log(key, value);
45
- * }
46
- * // Вывод:
47
- * // foo bar
48
- * // baz 42
49
- * ```
50
- *
51
- * 3. Смешанные значения:
52
- *
53
- * ```js
54
- * const result = array([1, 2, 3], { foo: 'bar' }, 'hello');
55
- * console.log(result);
56
- * // Вывод: [[1, 2, 3], { foo: 'bar' }, 'hello']
57
- * ```
58
- *
59
- * 4. Объекты, созданные без прототипа:
60
- *
61
- * ```js
62
- * const noProtoObject = Object.create(null);
63
- * noProtoObject.foo = 'bar';
64
- * const result = array(noProtoObject);
65
- * for (const [key, value] of result[0]) {
66
- * console.log(key, value);
67
- * }
68
- * // Вывод:
69
- * // foo bar
70
- * ```
71
- *
72
- * @param {...any} values - Один или несколько элементов, которые могут быть массивами, объектами или другими значениями.
73
- * @returns {Array|Object} Массив, содержащий переданные значения, с преобразованием ассоциативных массивов.
74
- * Если передано одно значение и это массив, возвращается он сам.
75
- */
76
- export default function array(...values) {
77
- const result = [];
78
-
79
- for (const value of values) {
80
- if (is_assoc(value)) {
81
- const assoc = Object.create(null);
82
-
83
- Object.assign(assoc, value);
84
-
85
- Object.defineProperty(assoc, Symbol.iterator, {
86
- enumerable: false,
87
- writable: true,
88
- configurable: true,
89
- *value() {
90
- for (const key in this) {
91
- yield [key, this[key]];
92
- }
93
- },
94
- });
95
-
96
- result.push(assoc);
97
- } else {
98
- result.push(value);
99
- }
100
- }
101
-
102
- if (result.length === 1 && is_array(result[0])) {
103
- return result[0];
104
- }
105
-
106
- return result;
107
- }
1
+ import is_array from './is_array.mjs';
2
+ import is_assoc from './is_assoc.mjs';
3
+
4
+ /**
5
+ * Создаёт массив из переданных значений, обрабатывая ассоциативные массивы (объекты с ключами).
6
+ *
7
+ * ### Параметры
8
+ *
9
+ * - `values` {...any}
10
+ *
11
+ * Один или несколько элементов, которые могут быть массивами, объектами или другими значениями.
12
+ *
13
+ * ### Описание
14
+ *
15
+ * Функция принимает произвольное количество аргументов и возвращает массив, содержащий переданные значения.
16
+ * Если среди переданных значений есть ассоциативные массивы (объекты, не являющиеся массивами и с ненулевым прототипом),
17
+ * они преобразуются:
18
+ *
19
+ * - Создаётся новый объект без прототипа.
20
+ * - Добавляются все свойства исходного объекта.
21
+ * - Добавляется итератор, позволяющий использовать объект в цикле `for-of` для получения пар `[ключ, значение]`.
22
+ *
23
+ * Если передано только одно значение, и это массив, функция возвращает его напрямую.
24
+ *
25
+ * ### Возвращаемое значение
26
+ *
27
+ * Массив, содержащий переданные значения, с преобразованием ассоциативных массивов.
28
+ * Если передано одно значение и это массив, возвращается он сам.
29
+ *
30
+ * ### Примеры использования
31
+ *
32
+ * 1. Простые массивы:
33
+ *
34
+ * ```js
35
+ * const result = array([1, 2, 3]);
36
+ * console.log(result); // [1, 2, 3]
37
+ * ```
38
+ *
39
+ * 2. Ассоциативные массивы (объекты с ключами и значениями):
40
+ *
41
+ * ```js
42
+ * const result = array({ foo: 'bar', baz: 42 });
43
+ * for (const [key, value] of result[0]) {
44
+ * console.log(key, value);
45
+ * }
46
+ * // Вывод:
47
+ * // foo bar
48
+ * // baz 42
49
+ * ```
50
+ *
51
+ * 3. Смешанные значения:
52
+ *
53
+ * ```js
54
+ * const result = array([1, 2, 3], { foo: 'bar' }, 'hello');
55
+ * console.log(result);
56
+ * // Вывод: [[1, 2, 3], { foo: 'bar' }, 'hello']
57
+ * ```
58
+ *
59
+ * 4. Объекты, созданные без прототипа:
60
+ *
61
+ * ```js
62
+ * const noProtoObject = Object.create(null);
63
+ * noProtoObject.foo = 'bar';
64
+ * const result = array(noProtoObject);
65
+ * for (const [key, value] of result[0]) {
66
+ * console.log(key, value);
67
+ * }
68
+ * // Вывод:
69
+ * // foo bar
70
+ * ```
71
+ *
72
+ * @param {...any} values - Один или несколько элементов, которые могут быть массивами, объектами или другими значениями.
73
+ * @returns {Array|Object} Массив, содержащий переданные значения, с преобразованием ассоциативных массивов.
74
+ * Если передано одно значение и это массив, возвращается он сам.
75
+ */
76
+ export default function array(...values) {
77
+ const result = [];
78
+
79
+ for (const value of values) {
80
+ if (is_assoc(value)) {
81
+ const assoc = Object.create(null);
82
+
83
+ Object.assign(assoc, value);
84
+
85
+ Object.defineProperty(assoc, Symbol.iterator, {
86
+ enumerable: false,
87
+ writable: true,
88
+ configurable: true,
89
+ *value() {
90
+ for (const key in this) {
91
+ yield [key, this[key]];
92
+ }
93
+ },
94
+ });
95
+
96
+ result.push(assoc);
97
+ } else {
98
+ result.push(value);
99
+ }
100
+ }
101
+
102
+ if (result.length === 1 && is_array(result[0])) {
103
+ return result[0];
104
+ }
105
+
106
+ return result;
107
+ }
@@ -1,70 +1,70 @@
1
- import to_bool from './to_bool.mjs';
2
-
3
- /**
4
- * Проверяет, является ли переменная пустой.
5
- *
6
- * ### Описание
7
- *
8
- * Функция `empty` используется для проверки, является ли переменная пустой. Пустыми считаются значения `null`, `undefined`, пустая строка, `0`, `false`, пустой массив и пустой объект.
9
- *
10
- * ### Параметры
11
- *
12
- * - `value` (any)
13
- * Переменная, которую необходимо проверить на пустоту.
14
- *
15
- * ### Возвращаемое значение
16
- *
17
- * Возвращает `true`, если переменная пустая, и `false` в противном случае.
18
- *
19
- * ### Примеры использования
20
- *
21
- * 1. Проверка пустых значений:
22
- *
23
- * ```js
24
- * const result1 = empty(null);
25
- * // Результат: true
26
- *
27
- * const result2 = empty(undefined);
28
- * // Результат: true
29
- *
30
- * const result3 = empty('');
31
- * // Результат: true
32
- *
33
- * const result4 = empty(0);
34
- * // Результат: true
35
- *
36
- * const result5 = empty(false);
37
- * // Результат: true
38
- *
39
- * const result6 = empty([]);
40
- * // Результат: true
41
- *
42
- * const result7 = empty({});
43
- * // Результат: true
44
- * ```
45
- *
46
- * 2. Проверка непустых значений:
47
- *
48
- * ```js
49
- * const result1 = empty('example');
50
- * // Результат: false
51
- *
52
- * const result2 = empty(123);
53
- * // Результат: false
54
- *
55
- * const result3 = empty(true);
56
- * // Результат: false
57
- *
58
- * const result4 = empty([1, 2, 3]);
59
- * // Результат: false
60
- *
61
- * const result5 = empty({ key: 'value' });
62
- * // Результат: false
63
- * ```
64
- *
65
- * @param {any} value Переменная, которую необходимо проверить на пустоту.
66
- * @returns {boolean} Возвращает `true`, если переменная пустая, и `false` в противном случае.
67
- */
68
- export default function empty(value) {
69
- return !to_bool(value);
70
- }
1
+ import to_bool from './to_bool.mjs';
2
+
3
+ /**
4
+ * Проверяет, является ли переменная пустой.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `empty` используется для проверки, является ли переменная пустой. Пустыми считаются значения `null`, `undefined`, пустая строка, `0`, `false`, пустой массив и пустой объект.
9
+ *
10
+ * ### Параметры
11
+ *
12
+ * - `value` (any)
13
+ * Переменная, которую необходимо проверить на пустоту.
14
+ *
15
+ * ### Возвращаемое значение
16
+ *
17
+ * Возвращает `true`, если переменная пустая, и `false` в противном случае.
18
+ *
19
+ * ### Примеры использования
20
+ *
21
+ * 1. Проверка пустых значений:
22
+ *
23
+ * ```js
24
+ * const result1 = empty(null);
25
+ * // Результат: true
26
+ *
27
+ * const result2 = empty(undefined);
28
+ * // Результат: true
29
+ *
30
+ * const result3 = empty('');
31
+ * // Результат: true
32
+ *
33
+ * const result4 = empty(0);
34
+ * // Результат: true
35
+ *
36
+ * const result5 = empty(false);
37
+ * // Результат: true
38
+ *
39
+ * const result6 = empty([]);
40
+ * // Результат: true
41
+ *
42
+ * const result7 = empty({});
43
+ * // Результат: true
44
+ * ```
45
+ *
46
+ * 2. Проверка непустых значений:
47
+ *
48
+ * ```js
49
+ * const result1 = empty('example');
50
+ * // Результат: false
51
+ *
52
+ * const result2 = empty(123);
53
+ * // Результат: false
54
+ *
55
+ * const result3 = empty(true);
56
+ * // Результат: false
57
+ *
58
+ * const result4 = empty([1, 2, 3]);
59
+ * // Результат: false
60
+ *
61
+ * const result5 = empty({ key: 'value' });
62
+ * // Результат: false
63
+ * ```
64
+ *
65
+ * @param {any} value Переменная, которую необходимо проверить на пустоту.
66
+ * @returns {boolean} Возвращает `true`, если переменная пустая, и `false` в противном случае.
67
+ */
68
+ export default function empty(value) {
69
+ return !to_bool(value);
70
+ }
@@ -1,133 +1,149 @@
1
- import is_array from './is_array.mjs';
2
- import is_class from './is_class.mjs';
3
- import is_float from './is_float.mjs';
4
- import is_infinity from './is_infinity.mjs';
5
- import is_int from './is_int.mjs';
6
- import is_nan from './is_nan.mjs';
7
- import is_null from './is_null.mjs';
8
- import is_object from './is_object.mjs';
9
- import is_bigint from './is_bigint.mjs';
10
- import is_undefined from './is_undefined.mjs';
11
- import is_bool from './is_bool.mjs';
12
- import is_string from './is_string.mjs';
13
- import is_symbol from './is_symbol.mjs';
14
- import is_function from './is_function.mjs';
15
-
16
- /**
17
- * Определяет тип переданного значения.
18
- *
19
- * ### Параметры
20
- *
21
- * - `value` (any)
22
- * Значение, тип которого необходимо определить.
23
- *
24
- * ### Описание
25
- *
26
- * Функция `gettype` определяет тип переданного значения, используя различные проверки.
27
- *
28
- * Она выполняет следующие проверки:
29
- *
30
- * 1. **Null**: Проверяет, является ли значение `null`.
31
- * 2. **NaN**: Проверяет, является ли значение `NaN`.
32
- * 3. **Undefined**: Проверяет, является ли значение `undefined`.
33
- * 4. **Infinity**: Проверяет, является ли значение бесконечностью.
34
- * 5. **Boolean**: Проверяет, является ли значение логическим.
35
- * 6. **Integer**: Проверяет, является ли значение целым числом.
36
- * 7. **BigInt**: Проверяет, является ли значение типом BigInt.
37
- * 8. **Float**: Проверяет, является ли значение числом с плавающей точкой.
38
- * 9. **String**: Проверяет, является ли значение строкой.
39
- * 10. **Symbol**: Проверяет, является ли значение символом.
40
- * 11. **Class**: Проверяет, является ли значение классом.
41
- * 12. **Function**: Проверяет, является ли значение функцией.
42
- * 13. **Array**: Проверяет, является ли значение массивом.
43
- * 14. **Object**: Проверяет, является ли значение объектом.
44
- *
45
- * Если значение не соответствует ни одному из этих типов, функция возвращает результат `typeof value`.
46
- *
47
- * ### Возвращаемое значение
48
- *
49
- * Возвращает строку, представляющую тип значения.
50
- *
51
- * ### Примеры использования
52
- *
53
- * ```js
54
- * class MyClass {}
55
- *
56
- * gettype(null); // "null"
57
- * gettype(NaN); // "NaN"
58
- * gettype(undefined); // "undefined"
59
- * gettype(Infinity); // "infinity"
60
- * gettype(true); // "boolean"
61
- * gettype(42); // "integer"
62
- * gettype(BigInt(123456)); // "bigint"
63
- * gettype(3.14); // "float"
64
- * gettype('hello'); // "string"
65
- * gettype(Symbol('symbol')); // "symbol"
66
- * gettype(MyClass); // "class"
67
- * gettype(() => {}); // "function"
68
- * gettype([]); // "array"
69
- * gettype(new MyClass()); // "object"
70
- * ```
71
- *
72
- * @param {any} value Значение, тип которого необходимо определить.
73
- * @returns {string} Возвращает строку, представляющую тип значения.
74
- */
75
- export default function gettype(value) {
76
- if (is_null(value)) {
77
- return 'null';
78
- }
79
-
80
- if (is_nan(value)) {
81
- return 'NaN';
82
- }
83
-
84
- if (is_undefined(value)) {
85
- return 'undefined';
86
- }
87
-
88
- if (is_infinity(value)) {
89
- return 'infinity';
90
- }
91
-
92
- if (is_bool(value)) {
93
- return 'boolean';
94
- }
95
-
96
- if (is_int(value)) {
97
- return 'integer';
98
- }
99
-
100
- if (is_bigint(value)) {
101
- return 'bigint';
102
- }
103
-
104
- if (is_float(value)) {
105
- return 'float';
106
- }
107
-
108
- if (is_string(value)) {
109
- return 'string';
110
- }
111
-
112
- if (is_symbol(value)) {
113
- return 'symbol';
114
- }
115
-
116
- if (is_class(value)) {
117
- return 'class';
118
- }
119
-
120
- if (is_function(value)) {
121
- return 'function';
122
- }
123
-
124
- if (is_array(value)) {
125
- return 'array';
126
- }
127
-
128
- if (is_object(value)) {
129
- return 'object';
130
- }
131
-
132
- return typeof value;
133
- }
1
+ import is_array from './is_array.mjs';
2
+ import is_class from './is_class.mjs';
3
+ import is_float from './is_float.mjs';
4
+ import is_infinity from './is_infinity.mjs';
5
+ import is_int from './is_int.mjs';
6
+ import is_nan from './is_nan.mjs';
7
+ import is_null from './is_null.mjs';
8
+ import is_object from './is_object.mjs';
9
+ import is_bigint from './is_bigint.mjs';
10
+ import is_undefined from './is_undefined.mjs';
11
+ import is_bool from './is_bool.mjs';
12
+ import is_string from './is_string.mjs';
13
+ import is_symbol from './is_symbol.mjs';
14
+ import is_function from './is_function.mjs';
15
+ import {
16
+ TYPE_ARRAY,
17
+ TYPE_BIGINT,
18
+ TYPE_BOOLEAN,
19
+ TYPE_CLASS,
20
+ TYPE_FLOAT,
21
+ TYPE_FUNCTION,
22
+ TYPE_INFINITY,
23
+ TYPE_INTEGER,
24
+ TYPE_NAN,
25
+ TYPE_NULL,
26
+ TYPE_OBJECT,
27
+ TYPE_STRING,
28
+ TYPE_SYMBOL,
29
+ TYPE_UNDEFINED,
30
+ } from '../constants.mjs';
31
+
32
+ /**
33
+ * Определяет тип переданного значения.
34
+ *
35
+ * ### Параметры
36
+ *
37
+ * - `value` (any)
38
+ * Значение, тип которого необходимо определить.
39
+ *
40
+ * ### Описание
41
+ *
42
+ * Функция `gettype` определяет тип переданного значения, используя различные проверки.
43
+ *
44
+ * Она выполняет следующие проверки:
45
+ *
46
+ * 1. **Null**: Проверяет, является ли значение `null`.
47
+ * 2. **NaN**: Проверяет, является ли значение `NaN`.
48
+ * 3. **Undefined**: Проверяет, является ли значение `undefined`.
49
+ * 4. **Infinity**: Проверяет, является ли значение бесконечностью.
50
+ * 5. **Boolean**: Проверяет, является ли значение логическим.
51
+ * 6. **Integer**: Проверяет, является ли значение целым числом.
52
+ * 7. **BigInt**: Проверяет, является ли значение типом BigInt.
53
+ * 8. **Float**: Проверяет, является ли значение числом с плавающей точкой.
54
+ * 9. **String**: Проверяет, является ли значение строкой.
55
+ * 10. **Symbol**: Проверяет, является ли значение символом.
56
+ * 11. **Class**: Проверяет, является ли значение классом.
57
+ * 12. **Function**: Проверяет, является ли значение функцией.
58
+ * 13. **Array**: Проверяет, является ли значение массивом.
59
+ * 14. **Object**: Проверяет, является ли значение объектом.
60
+ *
61
+ * Если значение не соответствует ни одному из этих типов, функция возвращает результат `typeof value`.
62
+ *
63
+ * ### Возвращаемое значение
64
+ *
65
+ * Возвращает строку, представляющую тип значения.
66
+ *
67
+ * ### Примеры использования
68
+ *
69
+ * ```js
70
+ * class MyClass {}
71
+ *
72
+ * gettype(null); // "null"
73
+ * gettype(NaN); // "NaN"
74
+ * gettype(undefined); // "undefined"
75
+ * gettype(Infinity); // "infinity"
76
+ * gettype(true); // "boolean"
77
+ * gettype(42); // "integer"
78
+ * gettype(BigInt(123456)); // "bigint"
79
+ * gettype(3.14); // "float"
80
+ * gettype('hello'); // "string"
81
+ * gettype(Symbol('symbol')); // "symbol"
82
+ * gettype(MyClass); // "class"
83
+ * gettype(() => {}); // "function"
84
+ * gettype([]); // "array"
85
+ * gettype(new MyClass()); // "object"
86
+ * ```
87
+ *
88
+ * @param {any} value Значение, тип которого необходимо определить.
89
+ * @returns {string} Возвращает строку, представляющую тип значения.
90
+ */
91
+ export default function gettype(value) {
92
+ if (is_null(value)) {
93
+ return TYPE_NULL;
94
+ }
95
+
96
+ if (is_nan(value)) {
97
+ return TYPE_NAN;
98
+ }
99
+
100
+ if (is_undefined(value)) {
101
+ return TYPE_UNDEFINED;
102
+ }
103
+
104
+ if (is_infinity(value)) {
105
+ return TYPE_INFINITY;
106
+ }
107
+
108
+ if (is_bool(value)) {
109
+ return TYPE_BOOLEAN;
110
+ }
111
+
112
+ if (is_int(value)) {
113
+ return TYPE_INTEGER;
114
+ }
115
+
116
+ if (is_bigint(value)) {
117
+ return TYPE_BIGINT;
118
+ }
119
+
120
+ if (is_float(value)) {
121
+ return TYPE_FLOAT;
122
+ }
123
+
124
+ if (is_string(value)) {
125
+ return TYPE_STRING;
126
+ }
127
+
128
+ if (is_symbol(value)) {
129
+ return TYPE_SYMBOL;
130
+ }
131
+
132
+ if (is_class(value)) {
133
+ return TYPE_CLASS;
134
+ }
135
+
136
+ if (is_function(value)) {
137
+ return TYPE_FUNCTION;
138
+ }
139
+
140
+ if (is_array(value)) {
141
+ return TYPE_ARRAY;
142
+ }
143
+
144
+ if (is_object(value)) {
145
+ return TYPE_OBJECT;
146
+ }
147
+
148
+ return typeof value;
149
+ }