@czlonkowski/n8n-nodes-librus 0.1.5 → 0.3.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0 — 2026-09-24
4
+
5
+ - Reuse one logged-in Librus session across polls, triggers and Get Content items on the same account instead of logging in from scratch on every operation, which made three triggers perform at least 72 logins a day. Sessions live in process memory only, keyed by a hash of login and password, and are never written to workflow static data, credentials or output.
6
+ - Run operations on one account one at a time, so triggers never log in concurrently or replace each other's cookies mid-request.
7
+ - Detect a stored session that Librus has ended on first use and log in again once; on a reused session a page instead of JSON or a bare 403 also counts as expired. Any failure drops the stored session, and sessions older than 6 hours are replaced.
8
+ - Log the session lifecycle (new login and its reason, reuse with the session's age, expiry after N minutes) to the n8n log at info level, without credentials, cookies or content, so the real session lifetime can be measured.
9
+ - Name the cause and host in TRANSPORT_ERROR, e.g. ETIMEDOUT on synergia.librus.pl, instead of discarding it; only system-style error codes are copied.
10
+ - Give the message operations a fresh request budget for their retry after a session expiry, as the calendar operation already had.
11
+
12
+ ## 0.2.0 — 2026-09-12
13
+
14
+ - Add two calendar events, Nowe wydarzenie w terminarzu and Zmiana wydarzenia w terminarzu, to the shared Librus Trigger node; removals and cancellations are reported on the change event, not a separate one.
15
+ - Scan the current month plus a configurable number of months ahead through a credential-free POST to the Librus terminarz month form, guarded by a day-grid completeness check so a malformed or mis-rendered grid fails the poll instead of silently mis-dating or dropping events.
16
+ - Fetch event detail pages only for new or changed entries, hydrating up to 50 per poll and deferring the remainder to later polls without failing or losing already-detected changes.
17
+ - Record calendar discovery history under its own librusCalendar state key, separate from the existing message history, with an independent silent baseline, window pruning and account-change reset.
18
+ - Add a free-text, case-insensitive event-kind filter that always passes an unknown kind, so an unrecognized or not-yet-hydrated event type is never silently dropped.
19
+ - Leave message behaviour, the newMessage event and its defaults unchanged for existing workflows.
20
+ - Bound each day block of the month grid to its own element, so a page legend or footer after the grid is no longer read as events dated to the last day of the month, and a footer that changes between polls no longer emits a phantom change every poll; an unbalanced grid fails the poll instead.
21
+ - Fix calendar polling aborting silently and permanently after a credential or username change: the concurrency guard now compares the stored owner against the owner seen when the poll was planned, so an account change commits its silent baseline and the next poll emits again.
22
+ - Give each calendar attempt its own request budget so a session expiry late in detail hydration can still complete its single retry, and report an exhausted calendar scan with its own message pointing at Liczba miesięcy do przodu instead of the inbox page limit.
23
+ - Silence only the months a larger window actually added, so months that the passage of time had already brought into range still emit instead of being baselined away.
24
+ - Skip entries with no detail link before applying the 50-page hydration budget, so a real backlog of linked events drains faster.
25
+ - Reject stored calendar records whose month is malformed, which would otherwise be neither prunable nor removable.
26
+ - Reject a calendar detail response whose final address is not the requested event page, so a redirect to another Synergia page can no longer be parsed as event details.
27
+ - Stop detail hydration on the remaining request budget instead of failing the whole poll, so redirected detail pages leave a partial, committed scan that the next poll finishes rather than a backlog retried forever.
28
+ - Report invalid calendar settings with their own message naming Liczba miesięcy do przodu instead of the message-fetching settings, which the calendar events do not have.
29
+ - Rename the parameter label to Liczba miesięcy do przodu, fall back to Nowa wiadomość in the node subtitle for an unexpected event value, and keep internal planning documents out of the published npm package.
30
+ - Describe both message and calendar automation in the package description.
31
+ - Fix calendar state pruning keeping records for months beyond a shrunk window indefinitely: prune against the exact set of scanned months instead of only the window's start.
32
+ - Decode named HTML entities for code points 160-255 and the twice-encoded month-grid tooltip, so Polish letters no longer reach the output as raw entity text; this affected above all the entries with no detail page to correct them, the free days and the parent-teacher meetings.
33
+ - Report as changed only the fields a poll can detect a change in, so the first edit of an entry no longer also reports the detail-page fields that the silent baseline had simply never fetched.
34
+
3
35
  ## 0.1.5 — 2026-09-08
4
36
 
5
37
  - Add the author’s standard AiAdvisors automation services CTA in Polish to the README.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Librus dla n8n
4
4
 
5
- Pobieraj wiadomości z Librus Synergia i uruchamiaj automatyzacje po otrzymaniu nowych wiadomości. Paczka zawiera dwa węzły, dostępne na wspólnej karcie **Librus**: akcje pobierania wiadomości oraz zdarzenie **Nowa wiadomość**, które uruchamia workflow.
5
+ Pobieraj wiadomości z Librus Synergia i uruchamiaj automatyzacje po otrzymaniu nowych wiadomości albo po zmianach w terminarzu. Paczka zawiera dwa węzły, dostępne na wspólnej karcie **Librus**: akcje pobierania wiadomości oraz zdarzenia wyzwalające workflow — **Nowa wiadomość**, **Nowe wydarzenie w terminarzu** i **Zmiana wydarzenia w terminarzu**.
6
6
 
7
7
  To nieoficjalna, eksperymentalna integracja do **samodzielnie hostowanego n8n**. Nie jest dostępna w n8n Cloud. Instancja n8n musi korzystać z Node.js 24 lub nowszego.
8
8
 
@@ -67,6 +67,24 @@ Trigger domyślnie zwraca metadane i skrócony podgląd. Aby dołączyć pełną
67
67
 
68
68
  Przykładowy workflow: **Librus — Nowa wiadomość → Librus (Pobierz treść wiadomości) → wybrany kanał powiadomień**. Jeśli wystarczy temat i podgląd, pomiń Pobierz treść wiadomości.
69
69
 
70
+ ## Automatyzacja po zmianach w terminarzu
71
+
72
+ 1. Wyszukaj **Librus Trigger** i wybierz zdarzenie **Nowe wydarzenie w terminarzu** albo **Zmiana wydarzenia w terminarzu** oraz zapisane dane logowania.
73
+ 2. Ustaw **Liczba miesięcy do przodu** — ile miesięcy po bieżącym miesiącu sprawdzać (0–6, domyślnie 1). Każdy dodatkowy miesiąc to jedno kolejne zapytanie do Librusa; wydarzeń spoza tego zakresu węzeł nie wykryje.
74
+ 3. Opcjonalnie wypełnij **Rodzaje wydarzeń** listą rodzajów po przecinku (np. `Sprawdzian, Kartkówka`), dopasowywaną bez rozróżniania wielkości liter. Puste pole przepuszcza wszystkie wydarzenia. **Wydarzenie o nieznanym rodzaju zawsze przechodzi przez filtr** — dotyczy to też usuniętych wydarzeń, których szczegółów węzeł nie zdążył jeszcze pobrać — żeby filtr nigdy nie zgubił odwołanego sprawdzianu.
75
+ 4. Ustaw **Poll Times** na co najmniej 15 minut.
76
+ 5. Ręcznie przetestuj węzeł. Zwróci do pięciu najbliższych wydarzeń z bieżącego miesiąca jako próbkę (`changeType: "sample"`) i nie zmieni historii. Próbka **celowo pomija filtr Rodzaje wydarzeń** — dzięki temu odczytasz z wyniku prawdziwe wartości pola `rodzaj` i wpiszesz je do filtra, a wąski filtr nie zwróci pustej próbki wyglądającej na zepsute połączenie.
77
+ 6. Dodaj dalsze kroki i opublikuj/aktywuj workflow.
78
+
79
+ **Pierwsze automatyczne sprawdzenie zapamiętuje obecny terminarz bez uruchamiania workflow dla już istniejących wydarzeń.** Kolejne sprawdzenia porównują terminarz z zapamiętanym stanem:
80
+
81
+ - **Nowe wydarzenie w terminarzu** uruchamia się, gdy w terminarzu pojawi się wydarzenie, którego wcześniej nie było.
82
+ - **Zmiana wydarzenia w terminarzu** uruchamia się dla edycji istniejącego wydarzenia (np. zmiana opisu albo przeniesienie na inny dzień) **oraz dla wydarzeń, które zniknęły z terminarza** — usunięcie lub odwołanie wydarzenia trafia na to samo zdarzenie co zmiana (`changeType: "removed"`), a nie na osobne zdarzenie.
83
+
84
+ Każdy element zawiera m.in. `changeType`, `eventKey`, `eventId`, `route`, `date`, `subject`, `teacher`, `description`, `rodzaj`, `room`, `addedAt`, `details`, `changedFields` oraz `previous`; dla nowych wydarzeń te dwa ostatnie pola są puste (`changedFields: []`, `previous: null`), a przy zmianach niosą listę zmienionych pól i poprzednią wersję, przy usunięciach zaś poprzednią wersję.
85
+
86
+ Wykrywanie zmian opiera się wyłącznie na tym, co pokazuje siatka terminarza — na dacie, tekście komórki, nauczycielu i opisie. Edycja widoczna tylko na stronie szczegółów wydarzenia (np. sama zmiana sali) nie wywoła zdarzenia zmiany, dopóki nie zajdzie razem z inną, widoczną w siatce edycją. Usunięcie wydarzenia nigdy nie niesie pola `details` (jest `null`) — to, co zniknęło, opisuje pole `previous`.
87
+
70
88
  ## Ograniczenia i rozwiązywanie problemów
71
89
 
72
90
  - **Oznaczanie jako nieprzeczytane lub przeczytane**, wysyłanie, usuwanie i pobieranie załączników nie są obsługiwane. Odczyt pełnej treści może sam zmienić status wiadomości w Librusie.
@@ -4,6 +4,7 @@ exports.Librus = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const LibrusClient_1 = require("./LibrusClient");
6
6
  const transport_1 = require("./transport");
7
+ const sessionCache_1 = require("./sessionCache");
7
8
  class Librus {
8
9
  constructor() {
9
10
  this.description = {
@@ -187,7 +188,7 @@ class Librus {
187
188
  const credentials = await this.getCredentials('librusSessionApi', itemIndex);
188
189
  if (typeof credentials.username !== 'string' || typeof credentials.password !== 'string')
189
190
  throw new LibrusClient_1.LibrusError('INVALID_OPTIONS');
190
- const client = new LibrusClient_1.LibrusClient((0, transport_1.createTransport)(this.helpers.httpRequest.bind(this.helpers)), { username: credentials.username, password: credentials.password });
191
+ const client = new LibrusClient_1.LibrusClient((0, transport_1.createTransport)(this.helpers.httpRequest.bind(this.helpers)), { username: credentials.username, password: credentials.password }, { sessions: sessionCache_1.sharedSessions, log: (message) => { var _a; return (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(message); } });
191
192
  if (this.getNodeParameter('operation', itemIndex) === 'getContent') {
192
193
  const result = await client.getMessageContent(this.getNodeParameter('messageId', itemIndex));
193
194
  output.push({ json: { ...result }, pairedItem: { item: itemIndex } });
@@ -1 +1 @@
1
- {"version":3,"file":"Librus.node.js","sourceRoot":"","sources":["../../../nodes/Librus/Librus.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Librus.node.js","sourceRoot":"","sources":["../../../nodes/Librus/Librus.node.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ import { LibrusError, safeError } from './errors';
2
+ import { type CalendarDetail, type CalendarEntry } from './terminarz';
3
+ import type { SessionCache } from './sessionCache';
4
+ export { LibrusError, safeError };
1
5
  export interface Request {
2
6
  url: string;
3
7
  method: 'GET' | 'POST';
@@ -15,6 +19,10 @@ export interface Login {
15
19
  username: string;
16
20
  password: string;
17
21
  }
22
+ export interface ClientOptions {
23
+ sessions?: SessionCache;
24
+ log?: (message: string) => void;
25
+ }
18
26
  export type ContentSource = 'preview' | 'full';
19
27
  export type ReadStatus = 'all' | 'unread' | 'read';
20
28
  export interface Scan {
@@ -25,6 +33,14 @@ export interface Scan {
25
33
  contentSource?: ContentSource;
26
34
  readStatus?: ReadStatus;
27
35
  }
36
+ export interface CalendarScan {
37
+ months: string[];
38
+ }
39
+ export type CalendarSelect = (entries: CalendarEntry[]) => string[];
40
+ export interface CalendarResult {
41
+ entries: CalendarEntry[];
42
+ details: Map<string, CalendarDetail | null>;
43
+ }
28
44
  export interface Message {
29
45
  messageId: string;
30
46
  senderFirstName: string;
@@ -39,20 +55,22 @@ export interface Message {
39
55
  content?: string;
40
56
  contentSource?: ContentSource;
41
57
  }
42
- type AuthStage = 'rozpoczęcie logowania' | 'przesłanie danych logowania' | 'kontynuacja autoryzacji' | 'otwarcie skrzynki';
43
- type AuthDestination = 'autoryzacja OAuth' | 'powrót OAuth do Synergii' | 'logowanie do Synergii' | 'strona Synergii' | 'serwis wiadomości' | 'inna dozwolona strona';
44
- export declare class LibrusError extends Error {
45
- readonly code: string;
46
- constructor(code: string, stage?: AuthStage, destination?: AuthDestination, rejection?: 'adres bez HTTPS' | 'dane logowania w adresie URL' | 'niestandardowy port' | 'nierozpoznana domena');
47
- }
48
- export declare function safeError(error: unknown): LibrusError;
49
58
  export declare class LibrusClient {
50
59
  private readonly transport;
51
60
  private readonly login;
61
+ private readonly options;
52
62
  private jar;
53
63
  private deadline;
54
64
  private requests;
55
- constructor(transport: Transport, login: Login);
65
+ private budgetCode;
66
+ private sessionStart;
67
+ private cacheKey?;
68
+ constructor(transport: Transport, login: Login, options?: ClientOptions);
69
+ private note;
70
+ private key;
71
+ private restoreSession;
72
+ private forgetSession;
73
+ private withSession;
56
74
  private request;
57
75
  private authenticate;
58
76
  getMessages(options: Scan): Promise<Message[]>;
@@ -63,5 +81,7 @@ export declare class LibrusClient {
63
81
  }>;
64
82
  private fullContent;
65
83
  private scan;
84
+ private monthPage;
85
+ private eventDetail;
86
+ getCalendar(options: CalendarScan, select: CalendarSelect): Promise<CalendarResult>;
66
87
  }
67
- export {};