@omnisass/library 0.2.0 → 2026.1.0-alpha.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/.editorconfig +13 -0
- package/.omnisass/scripts/bump-version.sh +288 -0
- package/.sassdoc.yaml +21 -0
- package/.vscode/settings.json +17 -0
- package/_configs.scss +10 -45
- package/index.scss +5 -91
- package/modules/utilities/converters/_convert-em2px.scss +3 -49
- package/modules/utilities/converters/_convert-hex2rgb.scss +2 -44
- package/modules/utilities/converters/_convert-hex2rgba.scss +2 -57
- package/modules/utilities/converters/_convert-px2em.scss +3 -62
- package/modules/utilities/converters/_convert-px2rem.scss +3 -62
- package/modules/utilities/converters/_convert-rem2px.scss +3 -62
- package/modules/utilities/converters/_index.scss +10 -0
- package/modules/utilities/getters/_index.scss +23 -0
- package/modules/utilities/getters/color/_get-color-brightness.scss +2 -48
- package/modules/utilities/getters/color/_get-color-darkest.scss +13 -68
- package/modules/utilities/getters/list/_get-list-item-end.scss +2 -29
- package/modules/utilities/getters/list/_get-list-item-start.scss +2 -29
- package/modules/utilities/getters/list/_get-list-item.scss +6 -82
- package/modules/utilities/getters/number/_get-number-from-percent.scss +2 -40
- package/modules/utilities/getters/number/_get-number-height-by-ratio.scss +3 -35
- package/modules/utilities/getters/number/_get-number-max-safe.scss +112 -0
- package/modules/utilities/getters/number/_get-number-max.scss +10 -88
- package/modules/utilities/getters/number/_get-number-min-safe.scss +114 -0
- package/modules/utilities/getters/number/_get-number-min.scss +9 -84
- package/modules/utilities/getters/number/_get-number-percentage-of.scss +2 -58
- package/modules/utilities/getters/number/_get-number-unit.scss +5 -46
- package/modules/utilities/getters/number/_get-number-width-by-ratio.scss +3 -56
- package/modules/utilities/helpers/_index.scss +44 -0
- package/modules/utilities/helpers/color/_color-blend-steps.scss +5 -89
- package/modules/utilities/helpers/color/_color-blend.scss +11 -85
- package/modules/utilities/helpers/color/_color-hue-shift.scss +7 -61
- package/modules/utilities/helpers/color/_color-scale.scss +7 -74
- package/modules/utilities/helpers/color/_color-shade.scss +2 -60
- package/modules/utilities/helpers/color/_color-tint.scss +2 -60
- package/modules/utilities/helpers/color/_color-triad.scss +9 -53
- package/modules/utilities/helpers/list/_list-dedupe.scss +9 -50
- package/modules/utilities/helpers/list/_list-insert-at.scss +16 -86
- package/modules/utilities/helpers/list/_list-merge.scss +1 -1
- package/modules/utilities/helpers/list/_list-remove-at.scss +9 -71
- package/modules/utilities/helpers/list/_list-sum-numbers-safe.scss +17 -81
- package/modules/utilities/helpers/list/_list-sum-numbers.scss +9 -57
- package/modules/utilities/helpers/number/_number-ceil-to.scss +1 -1
- package/modules/utilities/helpers/number/_number-clamp-max.scss +1 -1
- package/modules/utilities/helpers/number/_number-clamp-min.scss +1 -1
- package/modules/utilities/helpers/number/_number-clamp.scss +1 -1
- package/modules/utilities/helpers/number/_number-denormalize.scss +1 -1
- package/modules/utilities/helpers/number/_number-fibonacci.scss +2 -2
- package/modules/utilities/helpers/number/_number-floor-to.scss +1 -1
- package/modules/utilities/helpers/number/_number-format-with-separator.scss +4 -4
- package/modules/utilities/helpers/number/_number-normalize.scss +1 -1
- package/modules/utilities/helpers/number/_number-random-between-int.scss +1 -1
- package/modules/utilities/helpers/number/_number-random-between.scss +1 -1
- package/modules/utilities/helpers/number/_number-range.scss +7 -7
- package/modules/utilities/helpers/number/_number-round-to-nearest.scss +1 -1
- package/modules/utilities/helpers/number/_number-round-to.scss +1 -1
- package/modules/utilities/helpers/number/_number-strip-unit.scss +2 -14
- package/modules/utilities/helpers/string/_string-capitalize.scss +1 -1
- package/modules/utilities/helpers/string/_string-replace.scss +1 -1
- package/modules/utilities/helpers/string/_string-trim-end.scss +2 -2
- package/modules/utilities/helpers/string/_string-trim-start.scss +2 -2
- package/modules/utilities/helpers/string/_string-trim.scss +1 -1
- package/modules/utilities/loggers/_index.scss +6 -0
- package/modules/utilities/validators/_index.scss +38 -0
- package/modules/utilities/validators/{misc/_is-time.scss → _is-time.scss} +2 -2
- package/modules/utilities/validators/color/_is-color-light.scss +1 -1
- package/modules/utilities/validators/color/_is-color-list.scss +1 -1
- package/modules/utilities/validators/list/_is-list-contained.scss +1 -1
- package/modules/utilities/validators/number/_is-int-even.scss +1 -1
- package/modules/utilities/validators/number/_is-int-odd.scss +1 -1
- package/modules/utilities/validators/number/_is-int.scss +1 -1
- package/modules/utilities/validators/number/_is-number-has-unit.scss +1 -1
- package/modules/utilities/validators/number/_is-number-negative.scss +1 -1
- package/modules/utilities/validators/number/_is-number-positive.scss +1 -1
- package/modules/utilities/validators/number/_is-number-unitless.scss +1 -1
- package/modules/utilities/validators/number/_is-number-zero.scss +1 -1
- package/modules/utilities/validators/string/_is-string-contained.scss +25 -25
- package/modules/utilities/validators/string/_is-string-empty.scss +1 -1
- package/modules/utilities/validators/string/_is-string-ending-with.scss +1 -1
- package/modules/utilities/validators/string/_is-string-starting-with.scss +1 -1
- package/modules/utilities/validators/type-of/_is-boolean.scss +1 -1
- package/modules/utilities/validators/type-of/_is-color.scss +1 -1
- package/modules/utilities/validators/type-of/_is-list.scss +1 -1
- package/modules/utilities/validators/type-of/_is-map.scss +1 -1
- package/modules/utilities/validators/type-of/_is-number.scss +1 -1
- package/modules/utilities/validators/type-of/_is-string.scss +1 -1
- package/modules/utilities/validators/type-of/_is-type.scss +1 -1
- package/package.json +5 -6
- package/package.scss +3 -3
- package/playground/index.scss +8 -0
- package/modules/utilities/converters/_convert-camel2kebab.scss +0 -186
- package/modules/utilities/converters/_convert-kebab2camel.scss +0 -232
- package/modules/utilities/converters/_convert-kebab2snake.scss +0 -118
- package/modules/utilities/converters/_convert-snake2kebab.scss +0 -173
- package/modules/utilities/helpers/misc/_url-encode.configs.scss +0 -64
- package/modules/utilities/helpers/misc/_url-encode.scss +0 -148
- package/modules/utilities/loggers/_log-invalid-type.scss +0 -151
- package/modules/utilities/loggers/_log-invalid-value.scss +0 -151
- package/test.md +0 -168
- package/test.scss +0 -405
- package/test.sh +0 -149
package/.editorconfig
ADDED
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Файлы для обновления
|
|
4
|
+
PACKAGE_JSON="package.json"
|
|
5
|
+
PACKAGE_SCSS="package.scss"
|
|
6
|
+
|
|
7
|
+
# Цвета для вывода
|
|
8
|
+
RED='\033[0;31m'
|
|
9
|
+
GREEN='\033[0;32m'
|
|
10
|
+
YELLOW='\033[1;33m'
|
|
11
|
+
BLUE='\033[0;34m'
|
|
12
|
+
PURPLE='\033[0;35m'
|
|
13
|
+
CYAN='\033[0;36m'
|
|
14
|
+
NC='\033[0m' # No Color
|
|
15
|
+
|
|
16
|
+
# Проверяем существование файлов
|
|
17
|
+
if [ ! -f "$PACKAGE_JSON" ]; then
|
|
18
|
+
echo -e "${RED}❌ Ошибка: Файл $PACKAGE_JSON не найден!${NC}"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
if [ ! -f "$PACKAGE_SCSS" ]; then
|
|
23
|
+
echo -e "${RED}❌ Ошибка: Файл $PACKAGE_SCSS не найден!${NC}"
|
|
24
|
+
exit 1
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Функции для получения версий из разных файлов
|
|
28
|
+
get_json_version() {
|
|
29
|
+
local file="$1"
|
|
30
|
+
if [ -f "$file" ]; then
|
|
31
|
+
# Ищем строку с version в package.json
|
|
32
|
+
local version=$(grep -o '"version": "[^"]*"' "$file" | head -1 | cut -d'"' -f4)
|
|
33
|
+
echo "$version"
|
|
34
|
+
else
|
|
35
|
+
echo ""
|
|
36
|
+
fi
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
get_scss_version() {
|
|
40
|
+
local file="$1"
|
|
41
|
+
if [ -f "$file" ]; then
|
|
42
|
+
# Ищем строку с $version в SCSS файле (поддерживает разные форматы)
|
|
43
|
+
local version=$(grep -o '\$version:\s*"[^"]*"' "$file" | head -1 | sed -E 's/\$version:\s*"([^"]*)"/\1/')
|
|
44
|
+
if [ -z "$version" ]; then
|
|
45
|
+
# Пробуем другой формат (с одинарными кавычками)
|
|
46
|
+
version=$(grep -o "\$version:\s*'[^']*'" "$file" | head -1 | sed -E "s/\$version:\s*'([^']*)'/\1/")
|
|
47
|
+
fi
|
|
48
|
+
echo "$version"
|
|
49
|
+
else
|
|
50
|
+
echo ""
|
|
51
|
+
fi
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Получаем текущие версии из файлов
|
|
55
|
+
JSON_VERSION=$(get_json_version "$PACKAGE_JSON")
|
|
56
|
+
SCSS_VERSION=$(get_scss_version "$PACKAGE_SCSS")
|
|
57
|
+
|
|
58
|
+
echo -e "${BLUE}🚀 Скрипт обновления версии проекта${NC}"
|
|
59
|
+
echo -e "${BLUE} ================================${NC}"
|
|
60
|
+
|
|
61
|
+
# Получаем текущую дату для автоматической части версии
|
|
62
|
+
CURRENT_YEAR=$(date +%Y)
|
|
63
|
+
CURRENT_MONTH=$(date +%m)
|
|
64
|
+
BASE_VERSION="$CURRENT_YEAR.$CURRENT_MONTH"
|
|
65
|
+
|
|
66
|
+
echo -e " Автоматическая часть версии: ${YELLOW}$BASE_VERSION${NC}"
|
|
67
|
+
echo ""
|
|
68
|
+
|
|
69
|
+
echo -e "${GREEN}📦 Текущие версии в файлах:${NC}"
|
|
70
|
+
echo -e "└─ ${CYAN}package.json${NC}: ${YELLOW}$JSON_VERSION${NC}"
|
|
71
|
+
echo -e "└─ ${CYAN}package.scss${NC}: ${YELLOW}$SCSS_VERSION${NC}"
|
|
72
|
+
echo ""
|
|
73
|
+
|
|
74
|
+
# Проверяем, совпадают ли версии в файлах
|
|
75
|
+
if [ "$JSON_VERSION" != "$SCSS_VERSION" ]; then
|
|
76
|
+
echo -e "${YELLOW}⚠️ Внимание: Версии в файлах не совпадают!${NC}"
|
|
77
|
+
echo -e "${PURPLE} Предлагаю использовать версию из package.json как основную${NC}"
|
|
78
|
+
echo ""
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# Используем версию из package.json как основную для анализа
|
|
82
|
+
CURRENT_VERSION="$JSON_VERSION"
|
|
83
|
+
if [ -z "$CURRENT_VERSION" ]; then
|
|
84
|
+
CURRENT_VERSION="$SCSS_VERSION"
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
if [ -z "$CURRENT_VERSION" ]; then
|
|
88
|
+
echo -e "${RED}❌ Ошибка: Не удалось определить текущую версию!${NC}"
|
|
89
|
+
exit 1
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
echo -e "${GREEN}🔍 Анализ текущей версии:${NC} ${YELLOW}$CURRENT_VERSION${NC}"
|
|
93
|
+
|
|
94
|
+
# Извлекаем компоненты текущей версии
|
|
95
|
+
if [[ $CURRENT_VERSION =~ ^([0-9]{4}\.[0-9]{2})\.([0-9]+)(-(alpha|beta|rc)\.([0-9]+))?$ ]]; then
|
|
96
|
+
OLD_BASE=${BASH_REMATCH[1]}
|
|
97
|
+
OLD_PATCH=${BASH_REMATCH[2]}
|
|
98
|
+
OLD_TYPE=${BASH_REMATCH[4]}
|
|
99
|
+
OLD_TYPE_NUM=${BASH_REMATCH[5]}
|
|
100
|
+
|
|
101
|
+
echo -e "${CYAN} Разбор версии:${NC}"
|
|
102
|
+
echo -e " ├─ Базовая часть: ${PURPLE}$OLD_BASE${NC} (автоназначение)"
|
|
103
|
+
echo -e " ├─ Патч: ${PURPLE}$OLD_PATCH${NC}"
|
|
104
|
+
|
|
105
|
+
if [ -n "$OLD_TYPE" ]; then
|
|
106
|
+
echo -e " ├─ Тип: ${PURPLE}$OLD_TYPE${NC}"
|
|
107
|
+
echo -e " └─ Номер типа: ${PURPLE}$OLD_TYPE_NUM${NC}"
|
|
108
|
+
else
|
|
109
|
+
echo -e " └─ Тип: ${PURPLE}release${NC}"
|
|
110
|
+
fi
|
|
111
|
+
|
|
112
|
+
echo -e ""
|
|
113
|
+
|
|
114
|
+
# Предлагаем следующий патч
|
|
115
|
+
if [ "$OLD_BASE" == "$BASE_VERSION" ]; then
|
|
116
|
+
SUGGESTED_PATCH=$((OLD_PATCH + 1))
|
|
117
|
+
echo -e "${GREEN}📅 Следующий патч в текущем месяце: $SUGGESTED_PATCH${NC}"
|
|
118
|
+
else
|
|
119
|
+
SUGGESTED_PATCH=1
|
|
120
|
+
echo -e "${GREEN}🗓️ Новый месяц, начинаем с патча: $SUGGESTED_PATCH${NC}"
|
|
121
|
+
fi
|
|
122
|
+
else
|
|
123
|
+
echo -e "${YELLOW}⚠️ Не удалось разобрать текущую версию${NC}"
|
|
124
|
+
SUGGESTED_PATCH=1
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
echo ""
|
|
128
|
+
|
|
129
|
+
# Запрашиваем номер патча
|
|
130
|
+
read -p "🩹 Введите номер патча [${SUGGESTED_PATCH}]: " PATCH_NUMBER
|
|
131
|
+
PATCH_NUMBER=${PATCH_NUMBER:-$SUGGESTED_PATCH}
|
|
132
|
+
|
|
133
|
+
# Проверяем корректность введенного патча
|
|
134
|
+
if ! [[ "$PATCH_NUMBER" =~ ^[0-9]+$ ]]; then
|
|
135
|
+
echo -e "${RED}❌ Ошибка: Номер патча должен быть числом!${NC}"
|
|
136
|
+
exit 1
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
# Запрашиваем тип версии
|
|
140
|
+
echo ""
|
|
141
|
+
echo -e "${CYAN}📋 Типы версий:${NC}"
|
|
142
|
+
echo -e "└─ ${GREEN}1) alpha${NC} - альфа-версия для внутреннего тестирования"
|
|
143
|
+
echo -e "└─ ${GREEN}2) beta${NC} - бета-версия для ограниченного круга тестировщиков"
|
|
144
|
+
echo -e "└─ ${GREEN}3) rc${NC} - release candidate (кандидат на релиз)"
|
|
145
|
+
echo -e "└─ ${GREEN}4) release${NC} - финальный релиз (без суффикса)"
|
|
146
|
+
echo ""
|
|
147
|
+
|
|
148
|
+
while true; do
|
|
149
|
+
read -p "🎯 Выберите тип версии (1-4) [4]: " VERSION_TYPE
|
|
150
|
+
VERSION_TYPE=${VERSION_TYPE:-4}
|
|
151
|
+
|
|
152
|
+
case $VERSION_TYPE in
|
|
153
|
+
1)
|
|
154
|
+
TYPE="alpha"
|
|
155
|
+
read -p "🔢 Введите номер $TYPE-версии [1]: " TYPE_NUMBER
|
|
156
|
+
TYPE_NUMBER=${TYPE_NUMBER:-1}
|
|
157
|
+
if ! [[ "$TYPE_NUMBER" =~ ^[0-9]+$ ]]; then
|
|
158
|
+
echo -e "${RED}❌ Ошибка: Номер $TYPE-версии должен быть числом!${NC}"
|
|
159
|
+
continue
|
|
160
|
+
fi
|
|
161
|
+
VERSION="$BASE_VERSION.$PATCH_NUMBER-$TYPE.$TYPE_NUMBER"
|
|
162
|
+
break
|
|
163
|
+
;;
|
|
164
|
+
2)
|
|
165
|
+
TYPE="beta"
|
|
166
|
+
read -p "🔢 Введите номер $TYPE-версии [1]: " TYPE_NUMBER
|
|
167
|
+
TYPE_NUMBER=${TYPE_NUMBER:-1}
|
|
168
|
+
if ! [[ "$TYPE_NUMBER" =~ ^[0-9]+$ ]]; then
|
|
169
|
+
echo -e "${RED}❌ Ошибка: Номер $TYPE-версии должен быть числом!${NC}"
|
|
170
|
+
continue
|
|
171
|
+
fi
|
|
172
|
+
VERSION="$BASE_VERSION.$PATCH_NUMBER-$TYPE.$TYPE_NUMBER"
|
|
173
|
+
break
|
|
174
|
+
;;
|
|
175
|
+
3)
|
|
176
|
+
TYPE="rc"
|
|
177
|
+
read -p "🔢 Введите номер $TYPE-версии [1]: " TYPE_NUMBER
|
|
178
|
+
TYPE_NUMBER=${TYPE_NUMBER:-1}
|
|
179
|
+
if ! [[ "$TYPE_NUMBER" =~ ^[0-9]+$ ]]; then
|
|
180
|
+
echo -e "${RED}❌ Ошибка: Номер $TYPE-версии должен быть числом!${NC}"
|
|
181
|
+
continue
|
|
182
|
+
fi
|
|
183
|
+
VERSION="$BASE_VERSION.$PATCH_NUMBER-$TYPE.$TYPE_NUMBER"
|
|
184
|
+
break
|
|
185
|
+
;;
|
|
186
|
+
4)
|
|
187
|
+
VERSION="$BASE_VERSION.$PATCH_NUMBER"
|
|
188
|
+
echo -e "${GREEN}ℹ️ Выбрана release версия${NC}"
|
|
189
|
+
break
|
|
190
|
+
;;
|
|
191
|
+
*)
|
|
192
|
+
echo -e "${RED}❌ Неверный выбор! Введите число от 1 до 4${NC}"
|
|
193
|
+
;;
|
|
194
|
+
esac
|
|
195
|
+
done
|
|
196
|
+
|
|
197
|
+
# Финальное подтверждение
|
|
198
|
+
echo ""
|
|
199
|
+
echo -e "${BLUE}📋 План обновления:${NC}"
|
|
200
|
+
echo -e "└─ ${CYAN}package.json:${NC} ${YELLOW}$JSON_VERSION${NC} → ${GREEN}$VERSION${NC}"
|
|
201
|
+
echo -e "└─ ${CYAN}package.scss:${NC} ${YELLOW}$SCSS_VERSION${NC} → ${GREEN}$VERSION${NC}"
|
|
202
|
+
echo ""
|
|
203
|
+
|
|
204
|
+
read -p "✅ Всё верно? Обновить версию? (y/N): " CONFIRM
|
|
205
|
+
|
|
206
|
+
if [[ $CONFIRM != "y" && $CONFIRM != "Y" ]]; then
|
|
207
|
+
echo -e "${RED}❌ Обновление отменено${NC}"
|
|
208
|
+
exit 0
|
|
209
|
+
fi
|
|
210
|
+
|
|
211
|
+
# Функция для обновления версии в файле
|
|
212
|
+
update_version_in_file() {
|
|
213
|
+
local file=$1
|
|
214
|
+
local pattern=$2
|
|
215
|
+
local new_version=$3
|
|
216
|
+
local file_type=$4
|
|
217
|
+
|
|
218
|
+
echo -e "${CYAN}♻️ Обновление $file_type...${NC}"
|
|
219
|
+
|
|
220
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
221
|
+
# macOS
|
|
222
|
+
if [ "$file_type" == "SCSS" ]; then
|
|
223
|
+
# Для SCSS файлов
|
|
224
|
+
sed -i '' "s/\$version:[[:space:]]*\"[^\"]*\"/\$version: \"$new_version\"/g" "$file"
|
|
225
|
+
# Проверяем одинарные кавычки
|
|
226
|
+
sed -i '' "s/\$version:[[:space:]]*'[^']*'/\$version: '$new_version'/g" "$file"
|
|
227
|
+
else
|
|
228
|
+
# Для JSON файлов
|
|
229
|
+
sed -i '' "s/\"version\":[[:space:]]*\"[^\"]*\"/\"version\": \"$new_version\"/g" "$file"
|
|
230
|
+
fi
|
|
231
|
+
else
|
|
232
|
+
# Linux
|
|
233
|
+
if [ "$file_type" == "SCSS" ]; then
|
|
234
|
+
# Для SCSS файлов
|
|
235
|
+
sed -i "s/\$version:[[:space:]]*\"[^\"]*\"/\$version: \"$new_version\"/g" "$file"
|
|
236
|
+
# Проверяем одинарные кавычки
|
|
237
|
+
sed -i "s/\$version:[[:space:]]*'[^']*'/\$version: '$new_version'/g" "$file"
|
|
238
|
+
else
|
|
239
|
+
# Для JSON файлов
|
|
240
|
+
sed -i "s/\"version\":[[:space:]]*\"[^\"]*\"/\"version\": \"$new_version\"/g" "$file"
|
|
241
|
+
fi
|
|
242
|
+
fi
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
# Обновление версий
|
|
246
|
+
echo ""
|
|
247
|
+
echo -e "${BLUE}🔄 Начинаю обновление...${NC}"
|
|
248
|
+
|
|
249
|
+
# Обновляем package.json
|
|
250
|
+
update_version_in_file "$PACKAGE_JSON" '"version"' "$VERSION" "JSON"
|
|
251
|
+
|
|
252
|
+
# Обновляем package.scss
|
|
253
|
+
update_version_in_file "$PACKAGE_SCSS" '\$version' "$VERSION" "SCSS"
|
|
254
|
+
|
|
255
|
+
# Получаем обновленные версии для проверки
|
|
256
|
+
NEW_JSON_VERSION=$(get_json_version "$PACKAGE_JSON")
|
|
257
|
+
NEW_SCSS_VERSION=$(get_scss_version "$PACKAGE_SCSS")
|
|
258
|
+
|
|
259
|
+
echo ""
|
|
260
|
+
echo -e "${GREEN}🎉 Версия успешно обновлена!${NC}"
|
|
261
|
+
echo -e "${BLUE}📊 Итоговые версии:${NC}"
|
|
262
|
+
echo -e "└─ package.json: ${YELLOW}$NEW_JSON_VERSION${NC}"
|
|
263
|
+
echo -e "└─ package.scss: ${YELLOW}$NEW_SCSS_VERSION${NC}"
|
|
264
|
+
|
|
265
|
+
# Проверяем, что версии совпадают
|
|
266
|
+
if [ "$NEW_JSON_VERSION" == "$NEW_SCSS_VERSION" ] && [ "$NEW_JSON_VERSION" == "$VERSION" ]; then
|
|
267
|
+
echo ""
|
|
268
|
+
echo -e "${GREEN}✅ Все версии успешно синхронизированы!${NC}"
|
|
269
|
+
echo -e " OmniSass $VERSION готова к публикации."
|
|
270
|
+
else
|
|
271
|
+
echo ""
|
|
272
|
+
echo -e "${YELLOW}⚠️ Внимание: Версии в файлах не совпадают после обновления!${NC}"
|
|
273
|
+
echo -e "${RED} Требуется ручная проверка файлов.${NC}"
|
|
274
|
+
fi
|
|
275
|
+
|
|
276
|
+
echo ""
|
|
277
|
+
|
|
278
|
+
read -p "📤 Зафиксировать коммит (y/N): " COMMIT_CONFIRM
|
|
279
|
+
|
|
280
|
+
if [[ $COMMIT_CONFIRM != "y" && $COMMIT_CONFIRM != "Y" ]]; then
|
|
281
|
+
echo -e "${RED}❌ Фиксация коммита отменена.${NC}"
|
|
282
|
+
exit 0
|
|
283
|
+
fi
|
|
284
|
+
|
|
285
|
+
git add .
|
|
286
|
+
git commit -m "feat: повысил версию пакета до $VERSION"
|
|
287
|
+
|
|
288
|
+
echo "✅ Коммит зафиксирован!"
|
package/.sassdoc.yaml
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
dest: ./sassdoc
|
|
2
|
+
theme: default
|
|
3
|
+
package: ./package.json
|
|
4
|
+
display:
|
|
5
|
+
access:
|
|
6
|
+
- public
|
|
7
|
+
- private
|
|
8
|
+
alias: false
|
|
9
|
+
exclude:
|
|
10
|
+
- ./package.scss
|
|
11
|
+
groups:
|
|
12
|
+
undefined: Базовые функции
|
|
13
|
+
package: OmniSass / Информация о библиотеке
|
|
14
|
+
libconf: OmniSass / Настройки библиотеки
|
|
15
|
+
utilities-aliases: Утилиты / Алиасы функций
|
|
16
|
+
utilities-helpers: Утилиты / Вспомогательные функции
|
|
17
|
+
utilities-validators: Утилиты / Функции для валидации значений
|
|
18
|
+
utilities-converters: Утилиты / Конверторы значений
|
|
19
|
+
utilities-getters: Утилиты / Функции для получения значений
|
|
20
|
+
utilities-setters: Утилиты / Функции для установки значений
|
|
21
|
+
utilities-loggers: Утилиты / Функции для логгирования
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files.exclude": {
|
|
3
|
+
".codeassistant": false,
|
|
4
|
+
".omnisass": false,
|
|
5
|
+
".vscode": false,
|
|
6
|
+
"package-lock.json": false,
|
|
7
|
+
"LICENSE": false,
|
|
8
|
+
".sassdoc.yaml": false,
|
|
9
|
+
".npmignore": false,
|
|
10
|
+
".gitignore": false,
|
|
11
|
+
".editorconfig": false,
|
|
12
|
+
"node_modules": false,
|
|
13
|
+
"README.md": false,
|
|
14
|
+
"sassdoc": false,
|
|
15
|
+
".sourcecraft": false
|
|
16
|
+
}
|
|
17
|
+
}
|
package/_configs.scss
CHANGED
|
@@ -9,60 +9,25 @@
|
|
|
9
9
|
/// осуществлять тонкую настройку отдельных модулей.
|
|
10
10
|
///
|
|
11
11
|
/// При использовании этого модуля пространство имён для этих
|
|
12
|
-
/// конфигов рекомендуется указывать как `
|
|
12
|
+
/// конфигов рекомендуется указывать как `libconf`.
|
|
13
13
|
/// ---
|
|
14
|
-
/// @group
|
|
14
|
+
/// @group libconf
|
|
15
15
|
////
|
|
16
16
|
|
|
17
|
-
///
|
|
18
|
-
///
|
|
19
|
-
/// Когда строгий режим включен (`true`), компилятор будет
|
|
20
|
-
/// выбрасывать ошибки при использовании устаревших функций,
|
|
21
|
-
/// нерекомендуемых практик или потенциально проблемных
|
|
22
|
-
/// конструкций. Это помогает писать более чистый и совместимый
|
|
23
|
-
/// код.
|
|
24
|
-
/// ---
|
|
17
|
+
/// @todo Дописать комментарий
|
|
25
18
|
/// @name set-strict-mode
|
|
26
19
|
/// @access public
|
|
27
|
-
/// @example scss Отключение режима
|
|
28
|
-
/// @use 'omnisass' as libomnisass with (
|
|
29
|
-
/// $set-strict-mode: false
|
|
30
|
-
/// );
|
|
31
20
|
/// @type Boolean
|
|
32
21
|
$set-strict-mode: true !default;
|
|
33
22
|
|
|
34
|
-
///
|
|
35
|
-
/// Устанавливает язык для системных сообщений и логов
|
|
36
|
-
/// компилятора.
|
|
37
|
-
///
|
|
38
|
-
/// Определяет язык, на котором будут выводиться предупреждения,
|
|
39
|
-
/// ошибки и другие системные сообщения во время компиляции
|
|
40
|
-
/// Sass-кода. Поддерживаемые значения: 'ru' (русский), 'en'
|
|
41
|
-
/// (английский).
|
|
42
|
-
///
|
|
43
|
-
/// > Наличие новых языков можно проверить в документации.
|
|
44
|
-
///
|
|
45
|
-
/// ENGLISH:
|
|
46
|
-
/// Sets the language for system messages and compiler logs.
|
|
47
|
-
///
|
|
48
|
-
/// Defines the language in which warnings, errors, and other
|
|
49
|
-
/// system messages will be displayed during compilation of
|
|
50
|
-
/// the Sass code. Supported values: 'ru' (Russian), 'en'
|
|
51
|
-
/// (English).
|
|
52
|
-
///
|
|
53
|
-
/// > The availability of new languages can be checked in the
|
|
54
|
-
/// > documentation.
|
|
55
|
-
/// ---
|
|
56
|
-
/// @name set-loglang
|
|
57
|
-
/// @access public
|
|
58
|
-
/// @example scss Отключение режима
|
|
59
|
-
/// @use 'omnisass' as libomnisass with (
|
|
60
|
-
/// $set-loglang: 'en'
|
|
61
|
-
/// );
|
|
62
|
-
/// @type String
|
|
63
|
-
$set-loglang: 'ru' !default;
|
|
64
|
-
|
|
23
|
+
/// @todo Дописать комментарий
|
|
65
24
|
/// @name set-fingerprint
|
|
66
25
|
/// @access public
|
|
67
26
|
/// @type Boolean
|
|
68
27
|
$set-fingerprint: true !default;
|
|
28
|
+
|
|
29
|
+
/// @todo Дописать комментарий
|
|
30
|
+
/// @name set-loglang
|
|
31
|
+
/// @access public
|
|
32
|
+
/// @type String
|
|
33
|
+
$set-loglang: 'ru' !default;
|
package/index.scss
CHANGED
|
@@ -1,95 +1,9 @@
|
|
|
1
1
|
@charset "UTF-8";
|
|
2
2
|
|
|
3
|
-
@forward 'configs';
|
|
4
3
|
@forward 'package';
|
|
4
|
+
@forward 'configs';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
@forward 'modules/utilities/
|
|
8
|
-
@forward 'modules/utilities/
|
|
9
|
-
@forward 'modules/utilities/
|
|
10
|
-
@forward 'modules/utilities/converters/convert-hex2rgba';
|
|
11
|
-
@forward 'modules/utilities/converters/convert-kebab2camel';
|
|
12
|
-
@forward 'modules/utilities/converters/convert-kebab2snake';
|
|
13
|
-
@forward 'modules/utilities/converters/convert-px2em';
|
|
14
|
-
@forward 'modules/utilities/converters/convert-px2rem';
|
|
15
|
-
@forward 'modules/utilities/converters/convert-rem2px';
|
|
16
|
-
@forward 'modules/utilities/converters/convert-snake2kebab';
|
|
17
|
-
|
|
18
|
-
// Getters
|
|
19
|
-
@forward 'modules/utilities/getters/color/get-color-brightness';
|
|
20
|
-
@forward 'modules/utilities/getters/color/get-color-darkest';
|
|
21
|
-
@forward 'modules/utilities/getters/list/get-list-item';
|
|
22
|
-
@forward 'modules/utilities/getters/list/get-list-item-end';
|
|
23
|
-
@forward 'modules/utilities/getters/list/get-list-item-start';
|
|
24
|
-
@forward 'modules/utilities/getters/number/get-number-from-percent';
|
|
25
|
-
@forward 'modules/utilities/getters/number/get-number-height-by-ratio';
|
|
26
|
-
@forward 'modules/utilities/getters/number/get-number-max';
|
|
27
|
-
@forward 'modules/utilities/getters/number/get-number-min';
|
|
28
|
-
@forward 'modules/utilities/getters/number/get-number-percentage-of';
|
|
29
|
-
@forward 'modules/utilities/getters/number/get-number-unit';
|
|
30
|
-
@forward 'modules/utilities/getters/number/get-number-width-by-ratio';
|
|
31
|
-
|
|
32
|
-
// Helpers
|
|
33
|
-
@forward 'modules/utilities/helpers/color/color-blend';
|
|
34
|
-
@forward 'modules/utilities/helpers/color/color-blend-steps';
|
|
35
|
-
@forward 'modules/utilities/helpers/color/color-hue-shift';
|
|
36
|
-
@forward 'modules/utilities/helpers/color/color-scale';
|
|
37
|
-
@forward 'modules/utilities/helpers/color/color-shade';
|
|
38
|
-
@forward 'modules/utilities/helpers/color/color-tint';
|
|
39
|
-
@forward 'modules/utilities/helpers/color/color-triad';
|
|
40
|
-
@forward 'modules/utilities/helpers/list/list-dedupe';
|
|
41
|
-
@forward 'modules/utilities/helpers/list/list-insert-at';
|
|
42
|
-
@forward 'modules/utilities/helpers/list/list-merge';
|
|
43
|
-
@forward 'modules/utilities/helpers/list/list-remove-at';
|
|
44
|
-
@forward 'modules/utilities/helpers/list/list-sum-numbers';
|
|
45
|
-
@forward 'modules/utilities/helpers/list/list-sum-numbers-safe';
|
|
46
|
-
@forward 'modules/utilities/helpers/misc/url-encode';
|
|
47
|
-
@forward 'modules/utilities/helpers/number/number-ceil-to';
|
|
48
|
-
@forward 'modules/utilities/helpers/number/number-clamp';
|
|
49
|
-
@forward 'modules/utilities/helpers/number/number-clamp-max';
|
|
50
|
-
@forward 'modules/utilities/helpers/number/number-clamp-min';
|
|
51
|
-
@forward 'modules/utilities/helpers/number/number-denormalize';
|
|
52
|
-
@forward 'modules/utilities/helpers/number/number-fibonacci';
|
|
53
|
-
@forward 'modules/utilities/helpers/number/number-floor-to';
|
|
54
|
-
@forward 'modules/utilities/helpers/number/number-format-with-separator';
|
|
55
|
-
@forward 'modules/utilities/helpers/number/number-normalize';
|
|
56
|
-
@forward 'modules/utilities/helpers/number/number-random-between';
|
|
57
|
-
@forward 'modules/utilities/helpers/number/number-random-between-int';
|
|
58
|
-
@forward 'modules/utilities/helpers/number/number-range';
|
|
59
|
-
@forward 'modules/utilities/helpers/number/number-round-to';
|
|
60
|
-
@forward 'modules/utilities/helpers/number/number-round-to-nearest';
|
|
61
|
-
@forward 'modules/utilities/helpers/number/number-strip-unit';
|
|
62
|
-
@forward 'modules/utilities/helpers/string/string-capitalize';
|
|
63
|
-
@forward 'modules/utilities/helpers/string/string-replace';
|
|
64
|
-
@forward 'modules/utilities/helpers/string/string-trim';
|
|
65
|
-
@forward 'modules/utilities/helpers/string/string-trim-end';
|
|
66
|
-
@forward 'modules/utilities/helpers/string/string-trim-start';
|
|
67
|
-
|
|
68
|
-
// Loggers
|
|
69
|
-
@forward 'modules/utilities/loggers/log-invalid-type';
|
|
70
|
-
@forward 'modules/utilities/loggers/log-invalid-value';
|
|
71
|
-
|
|
72
|
-
// Validators
|
|
73
|
-
@forward 'modules/utilities/validators/color/is-color-light';
|
|
74
|
-
@forward 'modules/utilities/validators/color/is-color-list';
|
|
75
|
-
@forward 'modules/utilities/validators/list/is-list-contained';
|
|
76
|
-
@forward 'modules/utilities/validators/misc/is-time';
|
|
77
|
-
@forward 'modules/utilities/validators/number/is-int';
|
|
78
|
-
@forward 'modules/utilities/validators/number/is-int-even';
|
|
79
|
-
@forward 'modules/utilities/validators/number/is-int-odd';
|
|
80
|
-
@forward 'modules/utilities/validators/number/is-number-has-unit';
|
|
81
|
-
@forward 'modules/utilities/validators/number/is-number-negative';
|
|
82
|
-
@forward 'modules/utilities/validators/number/is-number-positive';
|
|
83
|
-
@forward 'modules/utilities/validators/number/is-number-unitless';
|
|
84
|
-
@forward 'modules/utilities/validators/number/is-number-zero';
|
|
85
|
-
@forward 'modules/utilities/validators/string/is-string-contained';
|
|
86
|
-
@forward 'modules/utilities/validators/string/is-string-empty';
|
|
87
|
-
@forward 'modules/utilities/validators/string/is-string-ending-with';
|
|
88
|
-
@forward 'modules/utilities/validators/string/is-string-starting-with';
|
|
89
|
-
@forward 'modules/utilities/validators/type-of/is-boolean';
|
|
90
|
-
@forward 'modules/utilities/validators/type-of/is-color';
|
|
91
|
-
@forward 'modules/utilities/validators/type-of/is-list';
|
|
92
|
-
@forward 'modules/utilities/validators/type-of/is-map';
|
|
93
|
-
@forward 'modules/utilities/validators/type-of/is-number';
|
|
94
|
-
@forward 'modules/utilities/validators/type-of/is-string';
|
|
95
|
-
@forward 'modules/utilities/validators/type-of/is-type';
|
|
6
|
+
@forward 'modules/utilities/converters';
|
|
7
|
+
@forward 'modules/utilities/getters';
|
|
8
|
+
@forward 'modules/utilities/helpers';
|
|
9
|
+
@forward 'modules/utilities/validators';
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
@use '../helpers
|
|
2
|
-
@use '../loggers/log-invalid-type' as *;
|
|
3
|
-
@use '../validators/type-of/is-number' as *;
|
|
1
|
+
@use '../helpers' as helpers; // need number/number-strip-unit
|
|
4
2
|
|
|
5
3
|
/// Конвертирует значения из относительных единиц (`em`) в
|
|
6
4
|
/// пиксели (`px`).
|
|
@@ -26,7 +24,7 @@
|
|
|
26
24
|
/// ---
|
|
27
25
|
/// @name convert-em2px
|
|
28
26
|
/// @group utilities-converters
|
|
29
|
-
/// @since
|
|
27
|
+
/// @since 0.0.1
|
|
30
28
|
/// @access public
|
|
31
29
|
/// @author Murad Rustamov (therteenten)
|
|
32
30
|
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
@@ -191,49 +189,5 @@
|
|
|
191
189
|
/// нечисловых значений. Для корректной работы оба
|
|
192
190
|
/// аргумента должны быть числами.
|
|
193
191
|
@function convert-em2px($em, $base: 16px) {
|
|
194
|
-
|
|
195
|
-
// Проверка типа первого параметра: ожидается числовое
|
|
196
|
-
// значение в единицах em. Единица em является относительной
|
|
197
|
-
// и рассчитывается относительно размера шрифта родительского
|
|
198
|
-
// элемента.
|
|
199
|
-
@if not is-number($em) {
|
|
200
|
-
|
|
201
|
-
// Если $em не является числом, логируем ошибку через
|
|
202
|
-
// отладочное сообщение.
|
|
203
|
-
@return log-invalid-type(
|
|
204
|
-
'convert-em2px',
|
|
205
|
-
$em,
|
|
206
|
-
'$em',
|
|
207
|
-
'number'
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// Основная логика выполняется только если $value является
|
|
213
|
-
// корректной строкой.
|
|
214
|
-
@else {
|
|
215
|
-
|
|
216
|
-
// Формула конвертации: px = em × базовый_размер_шрифта.
|
|
217
|
-
//
|
|
218
|
-
// Алгоритм вычислений:
|
|
219
|
-
// 1. number-strip-unit($em) - удаляем единицу измерения
|
|
220
|
-
// 'em' из первого значения
|
|
221
|
-
// Пример: 1.5em → 1.5 (число без единиц)
|
|
222
|
-
// 2. number-strip-unit($base) - удаляем единицу измерения
|
|
223
|
-
// из базового размера
|
|
224
|
-
// Пример: 16px → 16 (число без единиц)
|
|
225
|
-
// 3. Умножаем безразмерные числа: (число em) × (базовый размер)
|
|
226
|
-
// Пример: 1.5 × 16 = 24
|
|
227
|
-
// 4. Умножаем результат на 1px для добавления единицы
|
|
228
|
-
// измерения пикселей
|
|
229
|
-
// Пример: 24 × 1px = 24px
|
|
230
|
-
//
|
|
231
|
-
// Ключевая особенность: результат в пикселях зависит от
|
|
232
|
-
// базового размера шрифта. В отличие от rem, который зависит
|
|
233
|
-
// от корневого элемента, em зависит от размера шрифта
|
|
234
|
-
// непосредственного родителя.
|
|
235
|
-
@return number-strip-unit($em) * number-strip-unit($base) * 1px;
|
|
236
|
-
|
|
237
|
-
}
|
|
238
|
-
|
|
192
|
+
@return helpers.number-strip-unit($em) * helpers.number-strip-unit($base) * 1px;
|
|
239
193
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
@use 'sass:color';
|
|
2
|
-
@use '../validators/type-of/is-color' as *;
|
|
3
|
-
@use '../loggers/log-invalid-type' as *;
|
|
4
2
|
|
|
5
3
|
/// Преобразует цвет из HEX формата в строку формата RGB.
|
|
6
4
|
///
|
|
@@ -12,7 +10,7 @@
|
|
|
12
10
|
/// ---
|
|
13
11
|
/// @name convert-hex2rgb
|
|
14
12
|
/// @group utilities-converters
|
|
15
|
-
/// @since
|
|
13
|
+
/// @since 0.0.1
|
|
16
14
|
/// @access public
|
|
17
15
|
/// @author Murad Rustamov (therteenten)
|
|
18
16
|
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
@@ -53,45 +51,5 @@
|
|
|
53
51
|
/// Если передан некорректный цвет, может вызвать ошибку
|
|
54
52
|
/// Sass.
|
|
55
53
|
@function convert-hex2rgb($color) {
|
|
56
|
-
|
|
57
|
-
// Проверка типа входного параметра: ожидается
|
|
58
|
-
// цветовое значение.
|
|
59
|
-
// Функция is-color() проверяет, является ли $color
|
|
60
|
-
// валидным цветом CSS.
|
|
61
|
-
@if not is-color($color) {
|
|
62
|
-
|
|
63
|
-
// Если $color не является цветом, возвращаем ошибку через
|
|
64
|
-
// стандартную функцию логирования. Это предотвращает
|
|
65
|
-
// выполнение операции конвертации с некорректными данными.
|
|
66
|
-
@return log-invalid-type(
|
|
67
|
-
'convert-hex2rgb',
|
|
68
|
-
$color,
|
|
69
|
-
'$color',
|
|
70
|
-
'color'
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Основная логика выполняется только если $value является
|
|
76
|
-
// корректной строкой.
|
|
77
|
-
@else {
|
|
78
|
-
|
|
79
|
-
// Формула преобразования: создаем строку формата rgb()
|
|
80
|
-
// из компонентов цвета.
|
|
81
|
-
//
|
|
82
|
-
// Алгоритм преобразования:
|
|
83
|
-
// 1. Извлекаем красный канал: color.channel($color, "red", $space: rgb)
|
|
84
|
-
// Возвращает числовое значение от 0 до 255
|
|
85
|
-
// 2. Извлекаем зеленый канал: color.channel($color, "green", $space: rgb)
|
|
86
|
-
// 3. Извлекаем синий канал: color.channel($color, "blue", $space: rgb)
|
|
87
|
-
// 4. Формируем строку: rgb(красный, зеленый, синий)
|
|
88
|
-
//
|
|
89
|
-
// Ключевая особенность: функция возвращает строку, а не цветовой тип,
|
|
90
|
-
// из-за интерполяции #{} внутри строки.
|
|
91
|
-
// Это может быть полезно для генерации CSS переменных или
|
|
92
|
-
// вставки значений в CSS-функции.
|
|
93
|
-
@return 'rgb(#{color.channel($color, "red", $space: rgb)}, #{color.channel($color, "green", $space: rgb)}, #{color.channel($color, "blue", $space: rgb)})';
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
54
|
+
@return "rgb(#{color.channel($color, "red", $space: rgb)}, #{color.channel($color, "green", $space: rgb)}, #{color.channel($color, "blue", $space: rgb)})";
|
|
97
55
|
}
|