@rogolev/value 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- package/.prettierignore +4 -0
- package/CHANGELOG.md +56 -0
- package/LICENSE +41 -0
- package/README.md +91 -0
- package/babel.config.json +20 -0
- package/docs/helpers/array.md +80 -0
- package/docs/helpers/empty.md +77 -0
- package/docs/helpers/gettype.md +69 -0
- package/docs/helpers/is_array.md +105 -0
- package/docs/helpers/is_assoc.md +59 -0
- package/docs/helpers/is_bigint.md +57 -0
- package/docs/helpers/is_bool.md +50 -0
- package/docs/helpers/is_boolean.md +50 -0
- package/docs/helpers/is_class.md +73 -0
- package/docs/helpers/is_float.md +71 -0
- package/docs/helpers/is_function.md +62 -0
- package/docs/helpers/is_infinity.md +61 -0
- package/docs/helpers/is_int.md +81 -0
- package/docs/helpers/is_integer.md +82 -0
- package/docs/helpers/is_list.md +51 -0
- package/docs/helpers/is_nan.md +59 -0
- package/docs/helpers/is_null.md +49 -0
- package/docs/helpers/is_number.md +67 -0
- package/docs/helpers/is_numeric.md +76 -0
- package/docs/helpers/is_object.md +69 -0
- package/docs/helpers/is_scalar.md +60 -0
- package/docs/helpers/is_string.md +58 -0
- package/docs/helpers/is_symbol.md +58 -0
- package/docs/helpers/is_undefined.md +56 -0
- package/docs/helpers/print.md +187 -0
- package/docs/helpers/print_type.md +225 -0
- package/docs/helpers/settype.md +78 -0
- package/docs/helpers/to_array.md +106 -0
- package/docs/helpers/to_assoc.md +91 -0
- package/docs/helpers/to_bool.md +76 -0
- package/docs/helpers/to_boolean.md +77 -0
- package/docs/helpers/to_float.md +70 -0
- package/docs/helpers/to_int.md +87 -0
- package/docs/helpers/to_integer.md +87 -0
- package/docs/helpers/to_list.md +47 -0
- package/docs/helpers/to_object.md +76 -0
- package/docs/helpers/to_string.md +134 -0
- package/docs/helpers.md +51 -0
- package/docs/types/NaN.md +30 -0
- package/docs/types/array.md +252 -0
- package/docs/types/bigint.md +34 -0
- package/docs/types/boolean.md +47 -0
- package/docs/types/class.md +36 -0
- package/docs/types/float.md +35 -0
- package/docs/types/function.md +121 -0
- package/docs/types/infinity.md +32 -0
- package/docs/types/integer.md +35 -0
- package/docs/types/null.md +23 -0
- package/docs/types/object.md +62 -0
- package/docs/types/string.md +33 -0
- package/docs/types/symbol.md +29 -0
- package/docs/types/undefined.md +25 -0
- package/docs/types.md +44 -0
- package/eslint.config.mjs +1664 -0
- package/index.mjs +37 -0
- package/jest.config.mjs +31 -0
- package/package.json +47 -0
- package/prettier.config.mjs +224 -0
- package/src/helpers/array.mjs +107 -0
- package/src/helpers/empty.mjs +70 -0
- package/src/helpers/gettype.mjs +133 -0
- package/src/helpers/is_array.mjs +128 -0
- package/src/helpers/is_assoc.mjs +51 -0
- package/src/helpers/is_bigint.mjs +47 -0
- package/src/helpers/is_bool.mjs +43 -0
- package/src/helpers/is_boolean.mjs +43 -0
- package/src/helpers/is_class.mjs +87 -0
- package/src/helpers/is_float.mjs +67 -0
- package/src/helpers/is_function.mjs +74 -0
- package/src/helpers/is_infinity.mjs +52 -0
- package/src/helpers/is_int.mjs +57 -0
- package/src/helpers/is_integer.mjs +74 -0
- package/src/helpers/is_list.mjs +43 -0
- package/src/helpers/is_nan.mjs +51 -0
- package/src/helpers/is_null.mjs +37 -0
- package/src/helpers/is_number.mjs +49 -0
- package/src/helpers/is_numeric.mjs +64 -0
- package/src/helpers/is_object.mjs +72 -0
- package/src/helpers/is_scalar.mjs +45 -0
- package/src/helpers/is_string.mjs +46 -0
- package/src/helpers/is_symbol.mjs +46 -0
- package/src/helpers/is_undefined.mjs +44 -0
- package/src/helpers/print.mjs +245 -0
- package/src/helpers/print_type.mjs +261 -0
- package/src/helpers/settype.mjs +101 -0
- package/src/helpers/to_array.mjs +118 -0
- package/src/helpers/to_assoc.mjs +98 -0
- package/src/helpers/to_bool.mjs +68 -0
- package/src/helpers/to_boolean.mjs +64 -0
- package/src/helpers/to_float.mjs +72 -0
- package/src/helpers/to_int.mjs +93 -0
- package/src/helpers/to_integer.mjs +81 -0
- package/src/helpers/to_list.mjs +56 -0
- package/src/helpers/to_object.mjs +94 -0
- package/src/helpers/to_string.mjs +157 -0
- package/tests/helpers/array.test.mjs +58 -0
- package/tests/helpers/empty.test.mjs +22 -0
- package/tests/helpers/gettype.test.mjs +74 -0
- package/tests/helpers/is_array.test.mjs +404 -0
- package/tests/helpers/is_assoc.test.mjs +42 -0
- package/tests/helpers/is_bigint.test.mjs +51 -0
- package/tests/helpers/is_bool.test.mjs +43 -0
- package/tests/helpers/is_boolean.test.mjs +43 -0
- package/tests/helpers/is_class.test.mjs +84 -0
- package/tests/helpers/is_float.test.mjs +87 -0
- package/tests/helpers/is_function.test.mjs +83 -0
- package/tests/helpers/is_infinity.test.mjs +46 -0
- package/tests/helpers/is_int.test.mjs +45 -0
- package/tests/helpers/is_integer.test.mjs +64 -0
- package/tests/helpers/is_list.test.mjs +42 -0
- package/tests/helpers/is_nan.test.mjs +43 -0
- package/tests/helpers/is_null.test.mjs +17 -0
- package/tests/helpers/is_number.test.mjs +25 -0
- package/tests/helpers/is_numeric.test.mjs +30 -0
- package/tests/helpers/is_object.test.mjs +52 -0
- package/tests/helpers/is_scalar.test.mjs +21 -0
- package/tests/helpers/is_string.test.mjs +20 -0
- package/tests/helpers/is_symbol.test.mjs +20 -0
- package/tests/helpers/is_undefined.test.mjs +18 -0
- package/tests/helpers/print.test.mjs +62 -0
- package/tests/helpers/print_type.test.mjs +62 -0
- package/tests/helpers/settype.test.mjs +34 -0
- package/tests/helpers/to_array.test.mjs +38 -0
- package/tests/helpers/to_assoc.test.mjs +33 -0
- package/tests/helpers/to_bool.test.mjs +51 -0
- package/tests/helpers/to_boolean.test.mjs +51 -0
- package/tests/helpers/to_float.test.mjs +26 -0
- package/tests/helpers/to_int.test.mjs +48 -0
- package/tests/helpers/to_integer.test.mjs +48 -0
- package/tests/helpers/to_list.test.mjs +32 -0
- package/tests/helpers/to_object.test.mjs +36 -0
- package/tests/helpers/to_string.test.mjs +71 -0
package/index.mjs
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
export { default as is_array } from './src/helpers/is_array.mjs';
|
2
|
+
export { default as is_bool } from './src/helpers/is_bool.mjs';
|
3
|
+
export { default as is_boolean } from './src/helpers/is_boolean.mjs';
|
4
|
+
export { default as is_function } from './src/helpers/is_function.mjs';
|
5
|
+
export { default as is_class } from './src/helpers/is_class.mjs';
|
6
|
+
export { default as is_float } from './src/helpers/is_float.mjs';
|
7
|
+
export { default as is_int } from './src/helpers/is_int.mjs';
|
8
|
+
export { default as is_integer } from './src/helpers/is_integer.mjs';
|
9
|
+
export { default as is_bigint } from './src/helpers/is_bigint.mjs';
|
10
|
+
export { default as is_null } from './src/helpers/is_null.mjs';
|
11
|
+
export { default as is_number } from './src/helpers/is_number.mjs';
|
12
|
+
export { default as is_numeric } from './src/helpers/is_numeric.mjs';
|
13
|
+
export { default as is_object } from './src/helpers/is_object.mjs';
|
14
|
+
export { default as is_string } from './src/helpers/is_string.mjs';
|
15
|
+
export { default as is_symbol } from './src/helpers/is_symbol.mjs';
|
16
|
+
export { default as is_undefined } from './src/helpers/is_undefined.mjs';
|
17
|
+
export { default as is_nan } from './src/helpers/is_nan.mjs';
|
18
|
+
export { default as is_infinity } from './src/helpers/is_infinity.mjs';
|
19
|
+
export { default as gettype } from './src/helpers/gettype.mjs';
|
20
|
+
export { default as is_scalar } from './src/helpers/is_scalar.mjs';
|
21
|
+
export { default as array } from './src/helpers/array.mjs';
|
22
|
+
export { default as is_list } from './src/helpers/is_list.mjs';
|
23
|
+
export { default as is_assoc } from './src/helpers/is_assoc.mjs';
|
24
|
+
export { default as to_array } from './src/helpers/to_array.mjs';
|
25
|
+
export { default as to_bool } from './src/helpers/to_bool.mjs';
|
26
|
+
export { default as to_boolean } from './src/helpers/to_boolean.mjs';
|
27
|
+
export { default as to_float } from './src/helpers/to_float.mjs';
|
28
|
+
export { default as to_int } from './src/helpers/to_int.mjs';
|
29
|
+
export { default as to_integer } from './src/helpers/to_integer.mjs';
|
30
|
+
export { default as to_string } from './src/helpers/to_string.mjs';
|
31
|
+
export { default as to_object } from './src/helpers/to_object.mjs';
|
32
|
+
export { default as to_list } from './src/helpers/to_list.mjs';
|
33
|
+
export { default as to_assoc } from './src/helpers/to_assoc.mjs';
|
34
|
+
export { default as empty } from './src/helpers/empty.mjs';
|
35
|
+
export { default as settype } from './src/helpers/settype.mjs';
|
36
|
+
export { default as print } from './src/helpers/print.mjs';
|
37
|
+
export { default as print_type } from './src/helpers/print_type.mjs';
|
package/jest.config.mjs
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
/**
|
2
|
+
* Для получения подробного объяснения каждого свойства конфигурации, посетите:
|
3
|
+
* https://jestjs.io/docs/configuration
|
4
|
+
*/
|
5
|
+
|
6
|
+
/** @type {import('jest').Config} */
|
7
|
+
export default {
|
8
|
+
// Автоматически очищать вызовы mock, экземпляры, контексты и результаты перед каждым тестом
|
9
|
+
clearMocks: true,
|
10
|
+
|
11
|
+
// Среда тестирования, которая будет использоваться для тестирования
|
12
|
+
testEnvironment: 'jsdom',
|
13
|
+
|
14
|
+
// Глобальные переменные, которые должны быть доступны во всех тестовых средах
|
15
|
+
globals: {
|
16
|
+
'ts-jest': {
|
17
|
+
tsconfig: 'tsconfig.json',
|
18
|
+
},
|
19
|
+
},
|
20
|
+
|
21
|
+
// Паттерны glob, которые Jest использует для обнаружения тестовых файлов
|
22
|
+
testMatch: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).?(m)[tj]s?(x)'],
|
23
|
+
|
24
|
+
// Карта от регулярных выражений до путей к трансформерам
|
25
|
+
transform: {
|
26
|
+
'\\.m?[jt]sx?$': 'babel-jest',
|
27
|
+
},
|
28
|
+
|
29
|
+
// Указывает, следует ли сообщать о каждом отдельном тесте во время выполнения.
|
30
|
+
verbose: true,
|
31
|
+
};
|
package/package.json
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
{
|
2
|
+
"name": "@rogolev/value",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "Библиотека, переосмысливающая типы данных и работу с ними.",
|
5
|
+
"type": "module",
|
6
|
+
"repository": {
|
7
|
+
"type": "git",
|
8
|
+
"url": "git+https://github.com/dmitry-rogolev/value.js.git"
|
9
|
+
},
|
10
|
+
"keywords": [
|
11
|
+
"rogolev",
|
12
|
+
"dmitry-rogolev",
|
13
|
+
"dmitryrogolev",
|
14
|
+
"dmitry",
|
15
|
+
"javascript",
|
16
|
+
"variables",
|
17
|
+
"data types",
|
18
|
+
"value",
|
19
|
+
"type"
|
20
|
+
],
|
21
|
+
"author": {
|
22
|
+
"name": "Дмитрий Роголев",
|
23
|
+
"email": "drogolev@internet.ru",
|
24
|
+
"url": "https://github.com/dmitry-rogolev"
|
25
|
+
},
|
26
|
+
"license": "MIT",
|
27
|
+
"homepage": "https://github.com/dmitry-rogolev/value.js#readme",
|
28
|
+
"main": "index.mjs",
|
29
|
+
"devDependencies": {
|
30
|
+
"@babel/cli": "^7.26.4",
|
31
|
+
"@babel/core": "^7.26.0",
|
32
|
+
"@babel/preset-env": "^7.26.0",
|
33
|
+
"@eslint/js": "^9.18.0",
|
34
|
+
"core-js": "^3.40.0",
|
35
|
+
"eslint": "^9.18.0",
|
36
|
+
"eslint-config-prettier": "^9.1.0",
|
37
|
+
"eslint-plugin-prettier": "^5.2.1",
|
38
|
+
"jest": "^29.7.0",
|
39
|
+
"jest-environment-jsdom": "^29.7.0",
|
40
|
+
"prettier": "3.4.2"
|
41
|
+
},
|
42
|
+
"scripts": {
|
43
|
+
"prettier": "prettier . --write",
|
44
|
+
"eslint": "eslint",
|
45
|
+
"test": "jest"
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,224 @@
|
|
1
|
+
/**
|
2
|
+
* @see https://prettier.io/docs/en/configuration.html
|
3
|
+
* @type {import("prettier").Config}
|
4
|
+
*/
|
5
|
+
export default {
|
6
|
+
/**
|
7
|
+
* Добавлять точку с запятой в конце операторов.
|
8
|
+
* @default true
|
9
|
+
*
|
10
|
+
* Допустимые варианты:
|
11
|
+
*
|
12
|
+
* - `true` - Добавлять точку с запятой в конце каждого оператора.
|
13
|
+
* - `false` - Добавлять точки с запятой только в начале строк,
|
14
|
+
* которые могут привести к сбоям ASI.
|
15
|
+
*/
|
16
|
+
semi: true,
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Использовать одинарные кавычки вместо двойных.
|
20
|
+
* @default false
|
21
|
+
*
|
22
|
+
* Допустимые варианты:
|
23
|
+
*
|
24
|
+
* - `true` - Использовать одинарные кавычки.
|
25
|
+
* - `false` - Использовать двойные кавычки.
|
26
|
+
*/
|
27
|
+
singleQuote: true,
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Использовать одинарные кавычки в JSX.
|
31
|
+
* @default false
|
32
|
+
*
|
33
|
+
* Допустимые варианты:
|
34
|
+
*
|
35
|
+
* - `true` - Использовать одинарные кавычки в JSX.
|
36
|
+
* - `false` - Использовать двойные кавычки в JSX.
|
37
|
+
*/
|
38
|
+
jsxSingleQuote: false,
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Добавлять запятые в конце везде, где это возможно.
|
42
|
+
* @default "all"
|
43
|
+
*
|
44
|
+
* Допустимые варианты:
|
45
|
+
*
|
46
|
+
* - `none` - Без запятых в конце.
|
47
|
+
* - `es5` - Запятые в конце там, где это допустимо в ES5.
|
48
|
+
* - `all` - Запятые в конце везде, где это возможно.
|
49
|
+
*/
|
50
|
+
trailingComma: 'all',
|
51
|
+
|
52
|
+
/**
|
53
|
+
* Печатать пробелы между скобками в литералах объектов.
|
54
|
+
* @default true
|
55
|
+
*
|
56
|
+
* Допустимые варианты:
|
57
|
+
*
|
58
|
+
* - `true` - Пример: { foo: bar }
|
59
|
+
* - `false` - Пример: {foo: bar}
|
60
|
+
*/
|
61
|
+
bracketSpacing: true,
|
62
|
+
|
63
|
+
/**
|
64
|
+
* Разместить `>` многострочного HTML (HTML, JSX, Vue, Angular) элемента в конце последней строки, а не на отдельной строке.
|
65
|
+
* @default false
|
66
|
+
*
|
67
|
+
* Допустимые варианты:
|
68
|
+
*
|
69
|
+
* - `true` - Пример:
|
70
|
+
* <div>
|
71
|
+
* <span>Text</span></div>
|
72
|
+
* - `false` - Пример:
|
73
|
+
* <div>
|
74
|
+
* <span>Text</span>
|
75
|
+
* </div>
|
76
|
+
*/
|
77
|
+
bracketSameLine: false,
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Форматировать только сегмент файла.
|
81
|
+
* @default 0
|
82
|
+
*/
|
83
|
+
rangeStart: 0,
|
84
|
+
|
85
|
+
/**
|
86
|
+
* Форматировать только сегмент файла.
|
87
|
+
* @default Number.POSITIVE_INFINITY
|
88
|
+
*/
|
89
|
+
rangeEnd: Number.POSITIVE_INFINITY,
|
90
|
+
|
91
|
+
/**
|
92
|
+
* Ограничить форматирование только файлами с прологом.
|
93
|
+
* @default false
|
94
|
+
*/
|
95
|
+
requirePragma: false,
|
96
|
+
|
97
|
+
/**
|
98
|
+
* Вставить пролог в отформатированные файлы.
|
99
|
+
* @default false
|
100
|
+
*/
|
101
|
+
insertPragma: false,
|
102
|
+
|
103
|
+
/**
|
104
|
+
* Заворачивать текст в Markdown файлах.
|
105
|
+
* @default "preserve"
|
106
|
+
*
|
107
|
+
* Допустимые варианты:
|
108
|
+
*
|
109
|
+
* - `always` - Оборачивать текст, если он превышает ширину печати.
|
110
|
+
* - `never` - Разворачивать каждый блок текста в одну строку.
|
111
|
+
* - `preserve` - Ничего не делать, оставлять текст как есть.
|
112
|
+
*/
|
113
|
+
proseWrap: 'always',
|
114
|
+
|
115
|
+
/**
|
116
|
+
* Включить скобки вокруг единственного параметра стрелочной функции.
|
117
|
+
* @default "always"
|
118
|
+
*
|
119
|
+
* Допустимые варианты:
|
120
|
+
*
|
121
|
+
* - `avoid` - Исключать скобки, когда это возможно.
|
122
|
+
* - `always` - Всегда включать скобки.
|
123
|
+
*/
|
124
|
+
arrowParens: 'always',
|
125
|
+
|
126
|
+
/**
|
127
|
+
* Чувствительность к пробелам в HTML.
|
128
|
+
* @default "css"
|
129
|
+
*
|
130
|
+
* Допустимые варианты:
|
131
|
+
*
|
132
|
+
* - `css` - Учитывать значение по умолчанию свойства CSS display.
|
133
|
+
* - `strict` - Пробелы (или их отсутствие) вокруг всех тегов считаются значимыми.
|
134
|
+
* - `ignore` - Пробелы (или их отсутствие) вокруг всех тегов считаются незначимыми.
|
135
|
+
*/
|
136
|
+
htmlWhitespaceSensitivity: 'strict',
|
137
|
+
|
138
|
+
/**
|
139
|
+
* Использовать символы конца строки.
|
140
|
+
* @default "lf"
|
141
|
+
*
|
142
|
+
* Допустимые варианты:
|
143
|
+
*
|
144
|
+
* - `auto` - Сохранять существующие окончания строк.
|
145
|
+
* - `lf` - Только Line Feed (\n).
|
146
|
+
* - `crlf` - Символы Carriage Return + Line Feed (\r\n).
|
147
|
+
* - `cr` - Только символ Carriage Return (\r).
|
148
|
+
*/
|
149
|
+
endOfLine: 'crlf',
|
150
|
+
|
151
|
+
/**
|
152
|
+
* Изменить, когда свойства в объектах заключаются в кавычки.
|
153
|
+
* @default "as-needed"
|
154
|
+
*
|
155
|
+
* Допустимые варианты:
|
156
|
+
*
|
157
|
+
* - `as-needed` - Добавлять кавычки вокруг свойств объектов только там, где это необходимо.
|
158
|
+
* - `consistent` - Если хотя бы одно свойство в объекте требует кавычек, заключать в кавычки все свойства.
|
159
|
+
* - `preserve` - Сохранять использование кавычек в свойствах объектов, как в исходном коде.
|
160
|
+
*/
|
161
|
+
quoteProps: 'as-needed',
|
162
|
+
|
163
|
+
/**
|
164
|
+
* Отступы для тегов script и style в файлах Vue.
|
165
|
+
* @default false
|
166
|
+
*
|
167
|
+
* Допустимые варианты:
|
168
|
+
*
|
169
|
+
* - `true` - Делать отступы для тегов script и style в файлах Vue.
|
170
|
+
* - `false` - Не делать отступы для тегов script и style в файлах Vue.
|
171
|
+
*/
|
172
|
+
vueIndentScriptAndStyle: true,
|
173
|
+
|
174
|
+
/**
|
175
|
+
* Форматирование встроенного языка.
|
176
|
+
* @default "auto"
|
177
|
+
*
|
178
|
+
* Допустимые варианты:
|
179
|
+
*
|
180
|
+
* - `auto` - Форматировать встроенный код, если Prettier может автоматически его определить.
|
181
|
+
* - `off` - Никогда не форматировать встроенный код автоматически.
|
182
|
+
*/
|
183
|
+
embeddedLanguageFormatting: 'auto',
|
184
|
+
|
185
|
+
/**
|
186
|
+
* Один атрибут на строку в HTML, Vue и JSX.
|
187
|
+
* @default false
|
188
|
+
*
|
189
|
+
* Допустимые варианты:
|
190
|
+
*
|
191
|
+
* - `true` - Принуждать использовать один атрибут на строку.
|
192
|
+
* - `false` - Не принуждать использовать один атрибут на строку.
|
193
|
+
*/
|
194
|
+
singleAttributePerLine: true,
|
195
|
+
|
196
|
+
/**
|
197
|
+
* Экспериментальные тернарные операторы.
|
198
|
+
* @default false
|
199
|
+
*
|
200
|
+
* Допустимые варианты:
|
201
|
+
*
|
202
|
+
* - `true` - Использовать любопытные тернарные операторы, с вопросительным знаком после условия.
|
203
|
+
* - `false` - Сохранить поведение тернарных операторов по умолчанию.
|
204
|
+
*/
|
205
|
+
experimentalTernaries: true,
|
206
|
+
|
207
|
+
/**
|
208
|
+
* Максимальная длина строки.
|
209
|
+
* @default 80
|
210
|
+
*/
|
211
|
+
printWidth: 100,
|
212
|
+
|
213
|
+
/**
|
214
|
+
* Ширина табуляции в пробелах.
|
215
|
+
* @default 2
|
216
|
+
*/
|
217
|
+
tabWidth: 4,
|
218
|
+
|
219
|
+
/**
|
220
|
+
* Использовать пробелы вместо табуляции.
|
221
|
+
* @default false
|
222
|
+
*/
|
223
|
+
useTabs: false,
|
224
|
+
};
|
@@ -0,0 +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
|
+
}
|
@@ -0,0 +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
|
+
}
|
@@ -0,0 +1,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
|
+
|
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
|
+
}
|