@rogolev/value 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/.prettierignore +4 -0
  2. package/CHANGELOG.md +56 -0
  3. package/LICENSE +41 -0
  4. package/README.md +91 -0
  5. package/babel.config.json +20 -0
  6. package/docs/helpers/array.md +80 -0
  7. package/docs/helpers/empty.md +77 -0
  8. package/docs/helpers/gettype.md +69 -0
  9. package/docs/helpers/is_array.md +105 -0
  10. package/docs/helpers/is_assoc.md +59 -0
  11. package/docs/helpers/is_bigint.md +57 -0
  12. package/docs/helpers/is_bool.md +50 -0
  13. package/docs/helpers/is_boolean.md +50 -0
  14. package/docs/helpers/is_class.md +73 -0
  15. package/docs/helpers/is_float.md +71 -0
  16. package/docs/helpers/is_function.md +62 -0
  17. package/docs/helpers/is_infinity.md +61 -0
  18. package/docs/helpers/is_int.md +81 -0
  19. package/docs/helpers/is_integer.md +82 -0
  20. package/docs/helpers/is_list.md +51 -0
  21. package/docs/helpers/is_nan.md +59 -0
  22. package/docs/helpers/is_null.md +49 -0
  23. package/docs/helpers/is_number.md +67 -0
  24. package/docs/helpers/is_numeric.md +76 -0
  25. package/docs/helpers/is_object.md +69 -0
  26. package/docs/helpers/is_scalar.md +60 -0
  27. package/docs/helpers/is_string.md +58 -0
  28. package/docs/helpers/is_symbol.md +58 -0
  29. package/docs/helpers/is_undefined.md +56 -0
  30. package/docs/helpers/print.md +187 -0
  31. package/docs/helpers/print_type.md +225 -0
  32. package/docs/helpers/settype.md +78 -0
  33. package/docs/helpers/to_array.md +106 -0
  34. package/docs/helpers/to_assoc.md +91 -0
  35. package/docs/helpers/to_bool.md +76 -0
  36. package/docs/helpers/to_boolean.md +77 -0
  37. package/docs/helpers/to_float.md +70 -0
  38. package/docs/helpers/to_int.md +87 -0
  39. package/docs/helpers/to_integer.md +87 -0
  40. package/docs/helpers/to_list.md +47 -0
  41. package/docs/helpers/to_object.md +76 -0
  42. package/docs/helpers/to_string.md +134 -0
  43. package/docs/helpers.md +51 -0
  44. package/docs/types/NaN.md +30 -0
  45. package/docs/types/array.md +252 -0
  46. package/docs/types/bigint.md +34 -0
  47. package/docs/types/boolean.md +47 -0
  48. package/docs/types/class.md +36 -0
  49. package/docs/types/float.md +35 -0
  50. package/docs/types/function.md +121 -0
  51. package/docs/types/infinity.md +32 -0
  52. package/docs/types/integer.md +35 -0
  53. package/docs/types/null.md +23 -0
  54. package/docs/types/object.md +62 -0
  55. package/docs/types/string.md +33 -0
  56. package/docs/types/symbol.md +29 -0
  57. package/docs/types/undefined.md +25 -0
  58. package/docs/types.md +44 -0
  59. package/eslint.config.mjs +1664 -0
  60. package/index.mjs +37 -0
  61. package/jest.config.mjs +31 -0
  62. package/package.json +47 -0
  63. package/prettier.config.mjs +224 -0
  64. package/src/helpers/array.mjs +107 -0
  65. package/src/helpers/empty.mjs +70 -0
  66. package/src/helpers/gettype.mjs +133 -0
  67. package/src/helpers/is_array.mjs +128 -0
  68. package/src/helpers/is_assoc.mjs +51 -0
  69. package/src/helpers/is_bigint.mjs +47 -0
  70. package/src/helpers/is_bool.mjs +43 -0
  71. package/src/helpers/is_boolean.mjs +43 -0
  72. package/src/helpers/is_class.mjs +87 -0
  73. package/src/helpers/is_float.mjs +67 -0
  74. package/src/helpers/is_function.mjs +74 -0
  75. package/src/helpers/is_infinity.mjs +52 -0
  76. package/src/helpers/is_int.mjs +57 -0
  77. package/src/helpers/is_integer.mjs +74 -0
  78. package/src/helpers/is_list.mjs +43 -0
  79. package/src/helpers/is_nan.mjs +51 -0
  80. package/src/helpers/is_null.mjs +37 -0
  81. package/src/helpers/is_number.mjs +49 -0
  82. package/src/helpers/is_numeric.mjs +64 -0
  83. package/src/helpers/is_object.mjs +72 -0
  84. package/src/helpers/is_scalar.mjs +45 -0
  85. package/src/helpers/is_string.mjs +46 -0
  86. package/src/helpers/is_symbol.mjs +46 -0
  87. package/src/helpers/is_undefined.mjs +44 -0
  88. package/src/helpers/print.mjs +245 -0
  89. package/src/helpers/print_type.mjs +261 -0
  90. package/src/helpers/settype.mjs +101 -0
  91. package/src/helpers/to_array.mjs +118 -0
  92. package/src/helpers/to_assoc.mjs +98 -0
  93. package/src/helpers/to_bool.mjs +68 -0
  94. package/src/helpers/to_boolean.mjs +64 -0
  95. package/src/helpers/to_float.mjs +72 -0
  96. package/src/helpers/to_int.mjs +93 -0
  97. package/src/helpers/to_integer.mjs +81 -0
  98. package/src/helpers/to_list.mjs +56 -0
  99. package/src/helpers/to_object.mjs +94 -0
  100. package/src/helpers/to_string.mjs +157 -0
  101. package/tests/helpers/array.test.mjs +58 -0
  102. package/tests/helpers/empty.test.mjs +22 -0
  103. package/tests/helpers/gettype.test.mjs +74 -0
  104. package/tests/helpers/is_array.test.mjs +404 -0
  105. package/tests/helpers/is_assoc.test.mjs +42 -0
  106. package/tests/helpers/is_bigint.test.mjs +51 -0
  107. package/tests/helpers/is_bool.test.mjs +43 -0
  108. package/tests/helpers/is_boolean.test.mjs +43 -0
  109. package/tests/helpers/is_class.test.mjs +84 -0
  110. package/tests/helpers/is_float.test.mjs +87 -0
  111. package/tests/helpers/is_function.test.mjs +83 -0
  112. package/tests/helpers/is_infinity.test.mjs +46 -0
  113. package/tests/helpers/is_int.test.mjs +45 -0
  114. package/tests/helpers/is_integer.test.mjs +64 -0
  115. package/tests/helpers/is_list.test.mjs +42 -0
  116. package/tests/helpers/is_nan.test.mjs +43 -0
  117. package/tests/helpers/is_null.test.mjs +17 -0
  118. package/tests/helpers/is_number.test.mjs +25 -0
  119. package/tests/helpers/is_numeric.test.mjs +30 -0
  120. package/tests/helpers/is_object.test.mjs +52 -0
  121. package/tests/helpers/is_scalar.test.mjs +21 -0
  122. package/tests/helpers/is_string.test.mjs +20 -0
  123. package/tests/helpers/is_symbol.test.mjs +20 -0
  124. package/tests/helpers/is_undefined.test.mjs +18 -0
  125. package/tests/helpers/print.test.mjs +62 -0
  126. package/tests/helpers/print_type.test.mjs +62 -0
  127. package/tests/helpers/settype.test.mjs +34 -0
  128. package/tests/helpers/to_array.test.mjs +38 -0
  129. package/tests/helpers/to_assoc.test.mjs +33 -0
  130. package/tests/helpers/to_bool.test.mjs +51 -0
  131. package/tests/helpers/to_boolean.test.mjs +51 -0
  132. package/tests/helpers/to_float.test.mjs +26 -0
  133. package/tests/helpers/to_int.test.mjs +48 -0
  134. package/tests/helpers/to_integer.test.mjs +48 -0
  135. package/tests/helpers/to_list.test.mjs +32 -0
  136. package/tests/helpers/to_object.test.mjs +36 -0
  137. package/tests/helpers/to_string.test.mjs +71 -0
@@ -0,0 +1,4 @@
1
+ **/.git
2
+ **/.svn
3
+ **/.hg
4
+ **/node_modules
package/CHANGELOG.md ADDED
@@ -0,0 +1,56 @@
1
+ # v0.0.1
2
+
3
+ ## Добавлено
4
+
5
+ ### Помощники для работы с типами данных
6
+
7
+ - [array](./docs/helpers/array.md) — Создаёт массив из переданных значений, обрабатывая
8
+ ассоциативные массивы (объекты с ключами).
9
+ - [empty](./docs/helpers/empty.md) — Проверяет, является ли переменная пустой.
10
+ - [gettype](./docs/helpers/gettype.md) — Определяет тип переданного значения.
11
+ - [is_array](./docs/helpers/is_array.md) — Проверяет, является ли переданное значение массивом
12
+ или ассоциативным массивом (объектом с ключами и значениями).
13
+ - [is_assoc](./docs/helpers/is_assoc.md) — Проверяет, является ли значение ассоциативным
14
+ массивом.
15
+ - [is_bigint](./docs/helpers/is_bigint.md) — Проверяет, является ли значение типом `bigint`.
16
+ - [is_bool](./docs/helpers/is_bool.md) — Проверяет, является ли переданное значение логическим
17
+ типом (`boolean`).
18
+ - [is_boolean](./docs/helpers/is_boolean.md) — Проверяет, является ли переданное значение
19
+ логическим типом (`boolean`).
20
+ - [is_class](./docs/helpers/is_class.md) — Проверяет, является ли переданная переменная
21
+ классом.
22
+ - [is_float](./docs/helpers/is_float.md) — Проверяет, является ли значение числом с плавающей
23
+ точкой.
24
+ - [is_function](./docs/helpers/is_function.md) — Проверяет, что значение является функцией,
25
+ исключая классы.
26
+ - [is_infinity](./docs/helpers/is_infinity.md) — Проверяет, является ли значение
27
+ бесконечностью (Infinity или -Infinity).
28
+ - [is_int](./docs/helpers/is_int.md) — Проверяет, является ли значение целым числом.
29
+ - [is_integer](./docs/helpers/is_integer.md) — Проверяет, является ли значение целым числом.
30
+ - [is_list](./docs/helpers/is_list.md) — Проверяет, является ли значение списком.
31
+ - [is_nan](./docs/helpers/is_nan.md) — Проверяет, является ли значение NaN.
32
+ - [is_null](./docs/helpers/is_null.md) — Проверяет, является ли значение `null`.
33
+ - [is_number](./docs/helpers/is_number.md) — Проверяет, является ли значение числом.
34
+ - [is_numeric](./docs/helpers/is_numeric.md) — Проверяет, является ли значение числом или
35
+ числовой строкой.
36
+ - [is_object](./docs/helpers/is_object.md) — Проверяет, является ли переданная переменная
37
+ объектом, созданным с использованием класса.
38
+ - [is_scalar](./docs/helpers/is_scalar.md) — Проверяет, является ли значение скалярным.
39
+ - [is_string](./docs/helpers/is_string.md) — Проверяет, является ли значение строкой.
40
+ - [is_symbol](./docs/helpers/is_symbol.md) — Проверяет, является ли значение символом.
41
+ - [is_undefined](./docs/helpers/is_undefined.md) — Проверяет, является ли значение
42
+ `undefined`.
43
+ - [print](./docs/helpers/print.md) — Преобразует значение в строку и выводит его на консоль.
44
+ - [print_type](./docs/helpers/print_type.md) — Преобразует значение в строку с указанием типа
45
+ и выводит его на консоль.
46
+ - [settype](./docs/helpers/settype.md) — Преобразует значение в указанный тип.
47
+ - [to_array](./docs/helpers/to_array.md) — Преобразует значение в массив.
48
+ - [to_assoc](./docs/helpers/to_assoc.md) — Преобразует значение в ассоциативный массив.
49
+ - [to_bool](./docs/helpers/to_bool.md) — Преобразует значение в логическое значение.
50
+ - [to_boolean](./docs/helpers/to_bool.md) — Преобразует значение в логическое значение.
51
+ - [to_float](./docs/helpers/to_float.md) — Преобразует значение в число с плавающей точкой.
52
+ - [to_int](./docs/helpers/to_int.md) — Преобразует значение в целое число.
53
+ - [to_integer](./docs/helpers/to_integer.md) — Преобразует значение в целое число.
54
+ - [to_list](./docs/helpers/to_list.md) — Преобразует значение в список.
55
+ - [to_object](./docs/helpers/to_object.md) — Преобразует значение в объект.
56
+ - [to_string](./docs/helpers/to_string.md) — Преобразует значение в строку.
package/LICENSE ADDED
@@ -0,0 +1,41 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Роголев Дмитрий Александрович
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
6
+ associated documentation files (the "Software"), to deal in the Software without restriction,
7
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
8
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all copies or substantial
12
+ portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
15
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
17
+ OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
+
20
+ # Перевод
21
+
22
+ Лицензия MIT
23
+
24
+ Авторское право (c) 2025 Роголев Дмитрий Александрович
25
+
26
+ Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию данного программного
27
+ обеспечения и сопутствующей документации (в дальнейшем "Программное обеспечение"), использовать
28
+ Программное обеспечение без ограничений, включая неограниченное право на использование, копирование,
29
+ изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного
30
+ обеспечения, а также лицам, которым предоставляется данное Программное обеспечение, при соблюдении
31
+ следующих условий:
32
+
33
+ Вышеуказанное уведомление об авторских правах и данное разрешение должны быть включены во все копии
34
+ или значимые части данного Программного обеспечения.
35
+
36
+ ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ
37
+ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ
38
+ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ В КОЕМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ
39
+ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ИСКИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, НЕЗАВИСИМО ОТ ДЕЙСТВИЯ ДОГОВОРА,
40
+ ДЕЛИКТА ИЛИ ИНАЧЕ, ВОЗНИКШИЕ ИЗ, ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ
41
+ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
package/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # value.js
2
+
3
+ **value.js** — Библиотека для **JavaScript**, переосмысливающая типы данных и работу с ними.
4
+
5
+ ## Документация
6
+
7
+ [Типы данных в value.js](./docs/types.md).
8
+
9
+ [Помощники для работы с типами данных value.js](./docs/helpers.md)
10
+
11
+ ## Примеры использования
12
+
13
+ ```js
14
+ import {
15
+ array,
16
+ is_array,
17
+ is_object,
18
+ is_class,
19
+ is_function,
20
+ is_int,
21
+ is_float,
22
+ gettype,
23
+ } from '@rogolev/value.js';
24
+
25
+ // Создаем ассоциативный массив - контейнер пар ключ-значение
26
+ const assoc = array({ key1: 'value1', key2: 'value2', key3: 'value3' });
27
+
28
+ console.log(assoc); // {key1: 'value1', key2: 'value2', key3: 'value3'}
29
+
30
+ // Ассоциативные массивы создаются с помощью конструкции Object.create(null)
31
+ console.log(Object.getPrototypeOf(assoc)); // null
32
+
33
+ // Функция array добавляет итератор Symbol.iterator к ассоциативным массивам
34
+ for (const [key, value] of assoc) {
35
+ console.log(key, value);
36
+ }
37
+
38
+ // Ассоциативные массивы являются массивами
39
+ console.log(is_array(assoc)); // true
40
+
41
+ // Списки являются массивами
42
+ console.log(is_array([1, 2, 3])); // true
43
+
44
+ class stdClass {}
45
+ function MyFunction() {}
46
+
47
+ const object = new stdClass();
48
+ const objFunc = new MyFunction();
49
+
50
+ // Экземпляры классов не являются массивами
51
+ console.log(is_array(object)); // false
52
+
53
+ // Экземпляр класса является объектом
54
+ console.log(is_object(object)); // true
55
+
56
+ // Экземпляр функции не является объектом
57
+ console.log(is_object(objFunc)); // false
58
+
59
+ // Класс является классом
60
+ console.log(is_class(stdClass)); // true
61
+
62
+ // Функция не является классом
63
+ console.log(is_class(MyFunction)); // false
64
+
65
+ // Функция является функцией
66
+ console.log(is_function(MyFunction)); // true
67
+
68
+ // Класс не является функцией
69
+ console.log(is_function(stdClass)); // false
70
+
71
+ // Целое число
72
+ console.log(is_int(3)); // true
73
+
74
+ // Число с плавающей точкой
75
+ console.log(is_float(3.14)); // true
76
+
77
+ // Получение типа
78
+ console.log(gettype(stdClass)); // "class"
79
+ ```
80
+
81
+ ## Автор
82
+
83
+ Роголев Дмитрий Александрович
84
+
85
+ <drogolev@internet.ru>
86
+
87
+ <https://github.com/dmitry-rogolev>
88
+
89
+ ## Лицензия
90
+
91
+ Этот проект лицензируется на условиях лицензии MIT. Подробности см. в файле [LICENSE](./LICENSE).
@@ -0,0 +1,20 @@
1
+ {
2
+ "presets": [
3
+ [
4
+ "@babel/preset-env",
5
+ {
6
+ // Настройка целевых браузеров
7
+ "targets": "> 0.25%, not dead",
8
+
9
+ // Автоматически добавлять полифилы, где это необходимо
10
+ "useBuiltIns": "usage",
11
+
12
+ // Использование core-js версии 3 для полифилов
13
+ "corejs": 3,
14
+
15
+ // Преобразование модулей ES6 в CommonJS
16
+ "modules": "commonjs"
17
+ }
18
+ ]
19
+ ]
20
+ }
@@ -0,0 +1,80 @@
1
+ [Главная](../../README.md) / [Помощники](../helpers.md) / array
2
+
3
+ [Исходный код](../../src/helpers/array.mjs)
4
+
5
+ # array
6
+
7
+ `array` &mdash; Создаёт массив из переданных значений, обрабатывая ассоциативные массивы (объекты с
8
+ ключами).
9
+
10
+ ## Сигнатура функции
11
+
12
+ ```ts
13
+ function array(...values: any[]): Array<any> | Object;
14
+ ```
15
+
16
+ ## Описание
17
+
18
+ Функция принимает произвольное количество аргументов и возвращает массив, содержащий переданные
19
+ значения. Если среди переданных значений есть ассоциативные массивы (объекты, не являющиеся
20
+ массивами и с ненулевым прототипом), они преобразуются:
21
+
22
+ - Создаётся новый объект без прототипа.
23
+ - Добавляются все свойства исходного объекта.
24
+ - Добавляется итератор, позволяющий использовать объект в цикле `for-of` для получения пар
25
+ `[ключ, значение]`.
26
+
27
+ Если передано только одно значение, и это массив, функция возвращает его напрямую.
28
+
29
+ ## Параметры
30
+
31
+ - `values` (any[])
32
+
33
+ Один или несколько элементов, которые могут быть массивами, объектами или другими значениями.
34
+
35
+ ## Возвращаемое значение
36
+
37
+ Массив, содержащий переданные значения, с преобразованием ассоциативных массивов. Если передано одно
38
+ значение и это массив, возвращается он сам.
39
+
40
+ ## Примеры использования
41
+
42
+ 1. Простые массивы:
43
+
44
+ ```js
45
+ const result = array([1, 2, 3]);
46
+ console.log(result); // [1, 2, 3]
47
+ ```
48
+
49
+ 2. Ассоциативные массивы (объекты с ключами и значениями):
50
+
51
+ ```js
52
+ const result = array({ foo: 'bar', baz: 42 });
53
+ for (const [key, value] of result[0]) {
54
+ console.log(key, value);
55
+ }
56
+ // Вывод:
57
+ // foo bar
58
+ // baz 42
59
+ ```
60
+
61
+ 3. Смешанные значения:
62
+
63
+ ```js
64
+ const result = array([1, 2, 3], { foo: 'bar' }, 'hello');
65
+ console.log(result);
66
+ // Вывод: [[1, 2, 3], { foo: 'bar' }, 'hello']
67
+ ```
68
+
69
+ 4. Объекты, созданные без прототипа:
70
+
71
+ ```js
72
+ const noProtoObject = Object.create(null);
73
+ noProtoObject.foo = 'bar';
74
+ const result = array(noProtoObject);
75
+ for (const [key, value] of result[0]) {
76
+ console.log(key, value);
77
+ }
78
+ // Вывод:
79
+ // foo bar
80
+ ```
@@ -0,0 +1,77 @@
1
+ [Главная](../../README.md) / [Помощники](../helpers.md) / empty
2
+
3
+ [Исходный код](../../src/helpers/empty.mjs)
4
+
5
+ # `empty`
6
+
7
+ `empty` &mdash; Проверяет, является ли переменная пустой.
8
+
9
+ ## Сигнатура функции
10
+
11
+ ```ts
12
+ function empty(value: any): boolean;
13
+ ```
14
+
15
+ ## Описание
16
+
17
+ Функция `empty` используется для проверки, является ли переменная пустой. Пустыми считаются значения
18
+ `null`, `undefined`, пустая строка, `0`, `false`, пустой массив и пустой объект (ассоциативный
19
+ массив).
20
+
21
+ ## Параметры
22
+
23
+ - `value` (any)
24
+
25
+ Переменная, которую необходимо проверить на пустоту.
26
+
27
+ ## Возвращаемое значение
28
+
29
+ Функция возвращает:
30
+
31
+ - `true`, если переменная пустая, и `false` в противном случае.
32
+
33
+ ## Примеры использования
34
+
35
+ ### Пример 1: Проверка пустых значений
36
+
37
+ ```js
38
+ const result1 = empty(null);
39
+ // Результат: true
40
+
41
+ const result2 = empty(undefined);
42
+ // Результат: true
43
+
44
+ const result3 = empty('');
45
+ // Результат: true
46
+
47
+ const result4 = empty(0);
48
+ // Результат: true
49
+
50
+ const result5 = empty(false);
51
+ // Результат: true
52
+
53
+ const result6 = empty([]);
54
+ // Результат: true
55
+
56
+ const result7 = empty({});
57
+ // Результат: true
58
+ ```
59
+
60
+ ### Пример 2: Проверка непустых значений
61
+
62
+ ```js
63
+ const result1 = empty('example');
64
+ // Результат: false
65
+
66
+ const result2 = empty(123);
67
+ // Результат: false
68
+
69
+ const result3 = empty(true);
70
+ // Результат: false
71
+
72
+ const result4 = empty([1, 2, 3]);
73
+ // Результат: false
74
+
75
+ const result5 = empty({ key: 'value' });
76
+ // Результат: false
77
+ ```
@@ -0,0 +1,69 @@
1
+ [Главная](../../README.md) / [Помощники](../helpers.md) / gettype
2
+
3
+ [Исходный код](../../src/helpers/gettype.mjs)
4
+
5
+ # `gettype`
6
+
7
+ `gettype` &mdash; Определяет тип переданного значения.
8
+
9
+ ## Сигнатура функции
10
+
11
+ ```ts
12
+ function gettype(value: any): string;
13
+ ```
14
+
15
+ ## Параметры
16
+
17
+ - `value` (any)
18
+
19
+ Значение, тип которого необходимо определить.
20
+
21
+ ## Описание
22
+
23
+ Функция `gettype` определяет тип переданного значения, используя различные проверки.
24
+
25
+ Она выполняет следующие проверки:
26
+
27
+ 1. **Null**: Проверяет, является ли значение `null`.
28
+ 2. **NaN**: Проверяет, является ли значение `NaN`.
29
+ 3. **Undefined**: Проверяет, является ли значение `undefined`.
30
+ 4. **Infinity**: Проверяет, является ли значение бесконечностью.
31
+ 5. **Boolean**: Проверяет, является ли значение логическим.
32
+ 6. **Integer**: Проверяет, является ли значение целым числом.
33
+ 7. **BigInt**: Проверяет, является ли значение типом BigInt.
34
+ 8. **Float**: Проверяет, является ли значение числом с плавающей точкой.
35
+ 9. **String**: Проверяет, является ли значение строкой.
36
+ 10. **Symbol**: Проверяет, является ли значение символом.
37
+ 11. **Class**: Проверяет, является ли значение классом.
38
+ 12. **Function**: Проверяет, является ли значение функцией.
39
+ 13. **Array**: Проверяет, является ли значение массивом.
40
+ 14. **Object**: Проверяет, является ли значение объектом.
41
+
42
+ Если значение не соответствует ни одному из этих типов, функция возвращает результат `typeof value`.
43
+
44
+ ## Возвращаемое значение
45
+
46
+ Функция возвращает строку, представляющую тип значения.
47
+
48
+ ## Примеры использования
49
+
50
+ ### Пример 1: Проверка различных типов значений
51
+
52
+ ```js
53
+ class MyClass {}
54
+
55
+ gettype(null); // "null"
56
+ gettype(NaN); // "NaN"
57
+ gettype(undefined); // "undefined"
58
+ gettype(Infinity); // "infinity"
59
+ gettype(true); // "boolean"
60
+ gettype(42); // "integer"
61
+ gettype(BigInt(123456)); // "bigint"
62
+ gettype(3.14); // "float"
63
+ gettype('hello'); // "string"
64
+ gettype(Symbol('symbol')); // "symbol"
65
+ gettype(MyClass); // "class"
66
+ gettype(() => {}); // "function"
67
+ gettype([]); // "array"
68
+ gettype(new MyClass()); // "object"
69
+ ```
@@ -0,0 +1,105 @@
1
+ [Главная](../../README.md) / [Помощники](../helpers.md) / is_array
2
+
3
+ [Исходный код](../../src/helpers/is_array.mjs)
4
+
5
+ # is_array
6
+
7
+ `is_array` &mdash; Проверяет, является ли переданное значение массивом или ассоциативным массивом
8
+ (объектом с ключами и значениями).
9
+
10
+ ## Сигнатура функции
11
+
12
+ ```ts
13
+ function is_array(value: any): boolean;
14
+ ```
15
+
16
+ ## Описание
17
+
18
+ В JavaScript массивы и объекты имеют разные структуры и предназначения:
19
+
20
+ - Массивы (`Array`) являются упорядоченными коллекциями элементов, которые могут быть индексированы.
21
+ - Объекты (`Object`) содержат пары "ключ-значение", которые могут быть неупорядоченными.
22
+
23
+ Эта функция проверяет, является ли переданное значение обычным массивом (например, `[1, 2, 3]`),
24
+ либо ассоциативным массивом (объектом с парами "ключ-значение", например, `{foo: 'bar'}`).
25
+
26
+ ## Алгоритм работы функции
27
+
28
+ 1. Сначала проверяется, является ли переданное значение обычным массивом с помощью встроенного
29
+ метода `Array.isArray(value)`. Если это массив, функция сразу возвращает `true`.
30
+
31
+ 2. Если переменная не является массивом, то выполняются дополнительные проверки:
32
+
33
+ - Проверяется, что значение не равно `null` (так как `null` в JavaScript также является
34
+ объектом, но не является ни массивом, ни объектом с парами "ключ-значение").
35
+ - Проверяется, что значение является объектом JavaScript (с помощью
36
+ `typeof value === 'object'`).
37
+ - Проверяется, что прототип объекта совпадает с `Object.prototype` (это объект, от которого
38
+ наследуются все объекты в JavaScript) или является `null` (это означает, что объект был создан
39
+ с помощью `Object.create(null)` и не имеет прототипа).
40
+ - Исключаются массивоподобные объекты (например, `arguments`, `NodeList`), путем проверки, что
41
+ свойство `length` не является собственным свойством объекта.
42
+ - Дополнительно проверяется, что объект является простым (его конструктор равен `Object`), а
43
+ также исключаются встроенные объекты (`Math`, `JSON`, `Reflect`, `Intl`), для которых функция
44
+ возвращает `true`.
45
+
46
+ ## Параметры
47
+
48
+ - `value` (any)
49
+
50
+ Проверяемая переменная.
51
+
52
+ ## Возвращаемое значение
53
+
54
+ Возвращает `true`, если переменная является обычным массивом (`Array`), ассоциативным массивом
55
+ (объектом с парами "ключ-значение"), ассоциативным массивом, созданным с помощью
56
+ `Object.create(null)`. В остальных случаях функция возвращает `false`.
57
+
58
+ ## Примеры использования
59
+
60
+ 1. Простые массивы:
61
+
62
+ ```js
63
+ is_array([1, 2, 3]); // true
64
+ is_array([]); // true
65
+ ```
66
+
67
+ 2. Ассоциативные массивы (объекты с ключами и значениями):
68
+
69
+ ```js
70
+ is_array({ foo: 'bar', baz: 42 }); // true
71
+ is_array({ 0: 'a', 1: 'b' }); // true
72
+ ```
73
+
74
+ 3. Объекты, созданные без прототипа:
75
+
76
+ ```js
77
+ const noProtoObject = Object.create(null);
78
+ noProtoObject.foo = 'bar';
79
+ is_array(noProtoObject); // true
80
+ ```
81
+
82
+ 4. Примитивы и невалидные значения:
83
+
84
+ ```js
85
+ is_array(null); // false
86
+ is_array(undefined); // false
87
+ is_array(42); // false
88
+ is_array('hello'); // false
89
+ ```
90
+
91
+ 5. Специальные объекты:
92
+
93
+ ```js
94
+ is_array(new Map()); // false
95
+ is_array(new Set()); // false
96
+ is_array(() => {}); // false
97
+ ```
98
+
99
+ 6. Классы и их экземпляры:
100
+
101
+ ```js
102
+ class MyClass {}
103
+ const instance = new MyClass();
104
+ is_array(instance); // false
105
+ ```
@@ -0,0 +1,59 @@
1
+ [Главная](../../README.md) / [Помощники](../helpers.md) / is_assoc
2
+
3
+ [Исходный код](../../src/helpers/is_assoc.mjs)
4
+
5
+ # `is_assoc`
6
+
7
+ `is_assoc` &mdash; Проверяет, является ли значение ассоциативным массивом.
8
+
9
+ ## Сигнатура функции
10
+
11
+ ```ts
12
+ function is_assoc(value: any): boolean;
13
+ ```
14
+
15
+ ## Параметры
16
+
17
+ - `value` (any)
18
+
19
+ Значение, которое необходимо проверить на принадлежность к ассоциативному массиву.
20
+
21
+ ## Описание
22
+
23
+ Функция `is_assoc` предназначена для проверки, является ли переданное значение ассоциативным
24
+ массивом.
25
+
26
+ Она использует метод `is_array` для проверки значения и убеждается, что значение не является обычным
27
+ массивом.
28
+
29
+ ## Возвращаемое значение
30
+
31
+ Функция возвращает:
32
+
33
+ - `true`, если значение является ассоциативным массивом.
34
+ - `false` в противном случае.
35
+
36
+ ## Примеры использования
37
+
38
+ ### Пример 1: Проверка ассоциативных массивов
39
+
40
+ ```js
41
+ is_assoc({ foo: 'bar' }); // true
42
+ is_assoc({}); // true
43
+ ```
44
+
45
+ ### Пример 2: Проверка обычных массивов
46
+
47
+ ```js
48
+ is_assoc([]); // false
49
+ is_assoc([1, 2, 3]); // false
50
+ ```
51
+
52
+ ### Пример 3: Проверка значений других типов
53
+
54
+ ```js
55
+ is_assoc('string'); // false (строка)
56
+ is_assoc(42); // false (число)
57
+ is_assoc(null); // false
58
+ is_assoc(undefined); // false
59
+ ```
@@ -0,0 +1,57 @@
1
+ [Главная](../../README.md) / [Помощники](../helpers.md) / is_bigint
2
+
3
+ [Исходный код](../../src/helpers/is_bigint.mjs)
4
+
5
+ # `is_bigint`
6
+
7
+ `is_bigint` &mdash; Проверяет, является ли значение типом `bigint`.
8
+
9
+ ## Сигнатура функции
10
+
11
+ ```ts
12
+ function is_bigint(value: any): boolean;
13
+ ```
14
+
15
+ ## Параметры
16
+
17
+ - `value` (any)
18
+
19
+ Значение, которое необходимо проверить на принадлежность к типу `bigint`.
20
+
21
+ ## Описание
22
+
23
+ Функция `is_bigint` предназначена для проверки, является ли переданное значение типом `bigint`.
24
+
25
+ Она проверяет:
26
+
27
+ 1. Что значение имеет тип `bigint`.
28
+
29
+ Функция возвращает `false` для значений других типов, таких как числа, строки, объекты или массивы.
30
+
31
+ ## Возвращаемое значение
32
+
33
+ Функция возвращает:
34
+
35
+ - `true`, если значение является типом `bigint`.
36
+ - `false` в противном случае.
37
+
38
+ ## Примеры использования
39
+
40
+ ### Пример 1: Проверка значений типа bigint
41
+
42
+ ```js
43
+ is_bigint(BigInt(123456)); // true
44
+ is_bigint(BigInt(-123456)); // true
45
+ ```
46
+
47
+ ### Пример 2: Проверка значений других типов
48
+
49
+ ```js
50
+ is_bigint(42); // false (число)
51
+ is_bigint('42'); // false (строка)
52
+ is_bigint(true); // false (логическое значение)
53
+ is_bigint(null); // false
54
+ is_bigint(undefined); // false
55
+ is_bigint({}); // false (объект)
56
+ is_bigint([]); // false (массив)
57
+ ```