@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.
- 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
|
+
}
|