@mikitasazan/notify 1.4.3 → 1.4.4
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/dist/events.d.ts +9 -0
- package/dist/render.js +21 -1
- package/package.json +1 -1
package/dist/events.d.ts
CHANGED
|
@@ -45,10 +45,19 @@ type Keyed = {
|
|
|
45
45
|
* рендерится как обычная нумерованная/маркированная строка — так уже
|
|
46
46
|
* работают дайджест-задачи и список выключенных workflow.
|
|
47
47
|
*/
|
|
48
|
+
/**
|
|
49
|
+
* `group` — имя блока, под которым позиция встанет. Тот же закон, что у
|
|
50
|
+
* `lines` и `stats`: без имени позиция идёт в общий список, как раньше.
|
|
51
|
+
*
|
|
52
|
+
* Заведено потому, что список импорта смешивал три РАЗНЫЕ вещи в одном
|
|
53
|
+
* перечне и различал их значком в начале строки: 🆕 вышло сегодня,
|
|
54
|
+
* 🔁 вышло из очереди, ⚠ не вышло совсем. Значок делал работу заголовка.
|
|
55
|
+
*/
|
|
48
56
|
export type Item = {
|
|
49
57
|
text: string;
|
|
50
58
|
url?: string;
|
|
51
59
|
label?: string;
|
|
60
|
+
group?: string;
|
|
52
61
|
};
|
|
53
62
|
export type NotifyEvent = Keyed & (
|
|
54
63
|
/** Выкатка кода на сервер. */
|
package/dist/render.js
CHANGED
|
@@ -219,7 +219,27 @@ const join = (parts) => {
|
|
|
219
219
|
return out.join('\n');
|
|
220
220
|
};
|
|
221
221
|
/** Плоский список позиций (без ярлыков) — job/report без групп. */
|
|
222
|
-
|
|
222
|
+
/**
|
|
223
|
+
* Позиции списка. Именованная группа ВСЕГДА печатает свой заголовок — тот же
|
|
224
|
+
* закон, что у `labelled`: карточка одного типа не должна выглядеть по-разному
|
|
225
|
+
* в разные дни. Нумерация идёт внутри блока, а не сквозная: «1, 2» под своим
|
|
226
|
+
* заголовком читается, сквозная «3, 4» под вторым — нет.
|
|
227
|
+
*/
|
|
228
|
+
const bullets = (items, numbered) => {
|
|
229
|
+
const list = items ?? [];
|
|
230
|
+
const names = [...new Set(list.map((it) => it.group).filter((g) => !!g))];
|
|
231
|
+
if (names.length === 0) {
|
|
232
|
+
return list.map((it, i) => groupItem(it, i, numbered));
|
|
233
|
+
}
|
|
234
|
+
const out = [];
|
|
235
|
+
list.filter((it) => !it.group).forEach((it, i) => out.push(groupItem(it, i, numbered)));
|
|
236
|
+
for (const name of names) {
|
|
237
|
+
out.push('');
|
|
238
|
+
out.push(group(name));
|
|
239
|
+
list.filter((it) => it.group === name).forEach((it, i) => out.push(groupItem(it, i, numbered)));
|
|
240
|
+
}
|
|
241
|
+
return out;
|
|
242
|
+
};
|
|
223
243
|
/** Именованная группа целиком: заголовок + позиции, разделены строкой пустоты внутри вызова через join. */
|
|
224
244
|
const renderGroup = (g) => [
|
|
225
245
|
group(g.name),
|
package/package.json
CHANGED