@czlonkowski/n8n-nodes-librus 0.1.4 → 0.2.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.
@@ -6,36 +6,123 @@ const LibrusClient_1 = require("./LibrusClient");
6
6
  const Librus_node_1 = require("./Librus.node");
7
7
  const transport_1 = require("./transport");
8
8
  const pollState_1 = require("./pollState");
9
+ const calendarState_1 = require("./calendarState");
10
+ function parseTypes(value) {
11
+ return (typeof value === 'string' ? value : '')
12
+ .split(',')
13
+ .map((type) => type.trim().toLocaleLowerCase('pl'))
14
+ .filter((type) => type);
15
+ }
16
+ function matchesType(types, rodzaj) {
17
+ if (!types.length || !rodzaj)
18
+ return true;
19
+ return types.includes(rodzaj.trim().toLocaleLowerCase('pl'));
20
+ }
21
+ async function pollCalendar(context, client, manual, account, event) {
22
+ const types = parseTypes(context.getNodeParameter('eventTypes'));
23
+ if (manual) {
24
+ const window = (0, calendarState_1.monthWindow)(new Date(), 0);
25
+ const scan = await client.getCalendar({ months: window.months }, (entries) => entries.slice(0, 5).map((entry) => entry.key));
26
+ const items = scan.entries.slice(0, 5).map((entry) => {
27
+ var _a, _b;
28
+ const detail = (_a = scan.details.get(entry.key)) !== null && _a !== void 0 ? _a : null;
29
+ return {
30
+ json: {
31
+ changeType: 'sample',
32
+ eventKey: entry.key,
33
+ eventId: entry.eventId,
34
+ route: entry.route,
35
+ ...(0, calendarState_1.entrySnapshot)(entry, detail),
36
+ changedFields: [],
37
+ previous: null,
38
+ details: (_b = detail === null || detail === void 0 ? void 0 : detail.fields) !== null && _b !== void 0 ? _b : null,
39
+ },
40
+ };
41
+ });
42
+ return items.length ? [items] : null;
43
+ }
44
+ const window = (0, calendarState_1.monthWindow)(new Date(), context.getNodeParameter('monthsAhead'));
45
+ const state = context.getWorkflowStaticData('node');
46
+ let plan;
47
+ const scan = await client.getCalendar({ months: window.months }, (entries) => {
48
+ plan = (0, calendarState_1.planCalendarPoll)(state, account, window, entries);
49
+ return plan.hydrate;
50
+ });
51
+ if (plan === undefined)
52
+ throw new LibrusClient_1.LibrusError('PROTOCOL_ERROR');
53
+ const { aborted, changes } = (0, calendarState_1.commitCalendarPoll)(state, account, plan, scan.details);
54
+ if (aborted)
55
+ return null;
56
+ const wanted = event === 'newCalendarEvent' ? ['new'] : ['changed', 'removed'];
57
+ const items = changes
58
+ .filter((change) => wanted.includes(change.changeType) && matchesType(types, change.event.rodzaj))
59
+ .map((change) => {
60
+ var _a, _b;
61
+ return ({
62
+ json: {
63
+ changeType: change.changeType,
64
+ eventKey: change.key,
65
+ eventId: change.eventId,
66
+ route: change.route,
67
+ ...change.event,
68
+ changedFields: change.changedFields,
69
+ previous: change.previous,
70
+ details: (_b = (_a = scan.details.get(change.key)) === null || _a === void 0 ? void 0 : _a.fields) !== null && _b !== void 0 ? _b : null,
71
+ },
72
+ });
73
+ });
74
+ return items.length ? [items] : null;
75
+ }
9
76
  class LibrusTrigger {
10
77
  constructor() {
11
78
  this.description = {
12
79
  displayName: 'Librus Trigger',
13
80
  name: 'librusTrigger',
14
- subtitle: 'Nowa wiadomość',
81
+ subtitle: '={{$parameter["event"] === "newCalendarEvent" ? "Nowe wydarzenie w terminarzu" : $parameter["event"] === "changedCalendarEvent" ? "Zmiana wydarzenia w terminarzu" : "Nowa wiadomość"}}',
15
82
  icon: 'file:librus.png',
16
83
  group: ['trigger'],
17
84
  version: 1,
18
- description: 'Pobieraj wiadomości i ich pełną treść z Librus Synergia oraz uruchamiaj workflow po otrzymaniu nowych wiadomości',
19
- defaults: { name: 'Librus — Nowa wiadomość' },
85
+ description: 'Uruchamiaj workflow po otrzymaniu nowej wiadomości albo po dodaniu lub zmianie wydarzenia w terminarzu Librus Synergia',
86
+ defaults: { name: 'Librus — wyzwalacz' },
20
87
  polling: true,
21
- eventTriggerDescription: 'Po wykryciu nowej wiadomości w Librus Synergia',
88
+ eventTriggerDescription: 'Po wykryciu nowej wiadomości lub zmiany w terminarzu Librus Synergia',
22
89
  inputs: [],
23
90
  outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
24
91
  credentials: [{ name: 'librusSessionApi', required: true, testedBy: 'librusConnectionTest' }],
25
92
  properties: [
93
+ {
94
+ displayName: 'Zdarzenie',
95
+ name: 'event',
96
+ type: 'options',
97
+ noDataExpression: true,
98
+ default: 'newMessage',
99
+ options: [
100
+ {
101
+ name: 'Nowa wiadomość',
102
+ value: 'newMessage',
103
+ action: 'Nowa wiadomość',
104
+ description: 'Uruchom po otrzymaniu nowej wiadomości w skrzynce',
105
+ },
106
+ {
107
+ name: 'Nowe wydarzenie w terminarzu',
108
+ value: 'newCalendarEvent',
109
+ action: 'Nowe wydarzenie w terminarzu',
110
+ description: 'Uruchom po dodaniu wydarzenia do terminarza',
111
+ },
112
+ {
113
+ name: 'Zmiana wydarzenia w terminarzu',
114
+ value: 'changedCalendarEvent',
115
+ action: 'Zmiana wydarzenia w terminarzu',
116
+ description: 'Uruchom po zmianie, przeniesieniu lub zniknięciu wydarzenia z terminarza',
117
+ },
118
+ ],
119
+ },
26
120
  {
27
121
  displayName: 'Pierwsze automatyczne sprawdzenie zapamiętuje obecną skrzynkę bez uruchamiania workflow dla starych wiadomości. Test ręczny zwraca jedną próbkę i nie zmienia historii. Ustaw harmonogram (Poll Times) na co najmniej 5 minut.',
28
122
  name: 'baselineNotice',
29
123
  type: 'notice',
30
124
  default: '',
31
- },
32
- {
33
- displayName: 'Event',
34
- name: 'event',
35
- type: 'hidden',
36
- noDataExpression: true,
37
- options: [{ name: 'Nowa wiadomość', value: 'newMessage', action: 'Nowa wiadomość' }],
38
- default: 'newMessage',
125
+ displayOptions: { show: { event: ['newMessage'] } },
39
126
  },
40
127
  {
41
128
  displayName: 'Maksymalna liczba stron',
@@ -43,6 +130,7 @@ class LibrusTrigger {
43
130
  type: 'number',
44
131
  default: 20,
45
132
  typeOptions: { minValue: 1, maxValue: 50 },
133
+ displayOptions: { show: { event: ['newMessage'] } },
46
134
  description: 'Limit stron podczas sprawdzania całej skrzynki. Niepełny skan kończy się błędem i nie zmienia historii wykrytych wiadomości.',
47
135
  },
48
136
  {
@@ -50,8 +138,34 @@ class LibrusTrigger {
50
138
  name: 'includePreview',
51
139
  type: 'boolean',
52
140
  default: true,
141
+ displayOptions: { show: { event: ['newMessage'] } },
53
142
  description: 'Dołącz skrócony podgląd wiadomości. Pełną treść pobierzesz przez Librus → Pobierz treść wiadomości, podając jej ID. Może to oznaczyć wiadomość jako przeczytaną.',
54
143
  },
144
+ {
145
+ displayName: 'Pierwsze automatyczne sprawdzenie zapamiętuje obecny terminarz bez uruchamiania workflow dla istniejących wydarzeń. Test ręczny zwraca do pięciu wydarzeń z bieżącego miesiąca i nie zmienia historii; celowo pomija filtr Rodzaje wydarzeń, żeby dało się odczytać z wyniku prawdziwe wartości pola rodzaj. Ustaw harmonogram (Poll Times) na co najmniej 15 minut.',
146
+ name: 'calendarBaselineNotice',
147
+ type: 'notice',
148
+ default: '',
149
+ displayOptions: { show: { event: ['newCalendarEvent', 'changedCalendarEvent'] } },
150
+ },
151
+ {
152
+ displayName: 'Liczba miesięcy do przodu',
153
+ name: 'monthsAhead',
154
+ type: 'number',
155
+ default: 1,
156
+ typeOptions: { minValue: 0, maxValue: 6 },
157
+ displayOptions: { show: { event: ['newCalendarEvent', 'changedCalendarEvent'] } },
158
+ description: 'Ile miesięcy po bieżącym sprawdzać. Każdy miesiąc to jedno dodatkowe zapytanie, a wydarzeń spoza tego zakresu nie wykryjemy.',
159
+ },
160
+ {
161
+ displayName: 'Rodzaje wydarzeń',
162
+ name: 'eventTypes',
163
+ type: 'string',
164
+ default: '',
165
+ placeholder: 'Sprawdzian, Kartkówka',
166
+ displayOptions: { show: { event: ['newCalendarEvent', 'changedCalendarEvent'] } },
167
+ description: 'Lista rodzajów po przecinku, dopasowywana bez rozróżniania wielkości liter. Puste pole przepuszcza wszystkie wydarzenia. Wydarzenia o nieznanym rodzaju są zawsze przepuszczane, żeby nie zgubić odwołanego wydarzenia.',
168
+ },
55
169
  ],
56
170
  };
57
171
  this.methods = new Librus_node_1.Librus().methods;
@@ -59,8 +173,7 @@ class LibrusTrigger {
59
173
  async poll() {
60
174
  var _a, _b, _c;
61
175
  try {
62
- if (this.getNodeParameter('event') !== 'newMessage')
63
- throw new LibrusClient_1.LibrusError('INVALID_OPTIONS');
176
+ const event = this.getNodeParameter('event');
64
177
  const credentials = await this.getCredentials('librusSessionApi');
65
178
  if (typeof credentials.username !== 'string' || typeof credentials.password !== 'string')
66
179
  throw new LibrusClient_1.LibrusError('INVALID_OPTIONS');
@@ -69,6 +182,11 @@ class LibrusTrigger {
69
182
  password: credentials.password,
70
183
  });
71
184
  const manual = this.getMode() === 'manual';
185
+ const account = (0, pollState_1.accountKey)(credentials.username, (_c = (_b = (_a = this.getNode().credentials) === null || _a === void 0 ? void 0 : _a.librusSessionApi) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : '');
186
+ if (event === 'newCalendarEvent' || event === 'changedCalendarEvent')
187
+ return await pollCalendar(this, client, manual, account, event);
188
+ if (event !== 'newMessage')
189
+ throw new LibrusClient_1.LibrusError('INVALID_OPTIONS');
72
190
  const messages = await client.getMessages({
73
191
  returnAll: !manual,
74
192
  limit: 1,
@@ -78,7 +196,7 @@ class LibrusTrigger {
78
196
  });
79
197
  const result = manual
80
198
  ? messages
81
- : (0, pollState_1.selectNewMessages)(this.getWorkflowStaticData('node'), (0, pollState_1.accountKey)(credentials.username, (_c = (_b = (_a = this.getNode().credentials) === null || _a === void 0 ? void 0 : _a.librusSessionApi) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : ''), messages);
199
+ : (0, pollState_1.selectNewMessages)(this.getWorkflowStaticData('node'), account, messages);
82
200
  return result.length ? [result.map((message) => ({ json: { ...message } }))] : null;
83
201
  }
84
202
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"LibrusTrigger.node.js","sourceRoot":"","sources":["../../../nodes/Librus/LibrusTrigger.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LibrusTrigger.node.js","sourceRoot":"","sources":["../../../nodes/Librus/LibrusTrigger.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ import type { CalendarDetail, CalendarEntry } from './terminarz';
3
+ export declare const MAX_EVENTS = 2000;
4
+ export declare const MAX_HYDRATION = 50;
5
+ export interface CalendarWindow {
6
+ from: string;
7
+ monthsAhead: number;
8
+ months: string[];
9
+ }
10
+ export interface CalendarSnapshot {
11
+ date: string;
12
+ text: string;
13
+ subject: string | null;
14
+ teacher: string | null;
15
+ description: string | null;
16
+ lessonNumber: number | null;
17
+ hour: string | null;
18
+ rodzaj: string | null;
19
+ room: string | null;
20
+ addedAt: string | null;
21
+ }
22
+ export interface StoredEvent {
23
+ m: string;
24
+ f: string;
25
+ s: CalendarSnapshot;
26
+ }
27
+ export interface CalendarPlan {
28
+ rev: number;
29
+ owner: string;
30
+ baseline: boolean;
31
+ window: CalendarWindow;
32
+ silent: Set<string>;
33
+ entries: Map<string, CalendarEntry>;
34
+ stored: Record<string, StoredEvent>;
35
+ added: string[];
36
+ changed: string[];
37
+ removed: string[];
38
+ hydrate: string[];
39
+ }
40
+ export declare function monthWindow(now: Date, monthsAhead: number): CalendarWindow;
41
+ export declare function monthOf(date: string): string;
42
+ export declare function fingerprint(entry: CalendarEntry): string;
43
+ export declare function planCalendarPoll(state: IDataObject, account: string, window: CalendarWindow, entries: CalendarEntry[]): CalendarPlan;
44
+ export interface CalendarChange {
45
+ changeType: 'new' | 'changed' | 'removed';
46
+ key: string;
47
+ route: string | null;
48
+ eventId: string | null;
49
+ event: CalendarSnapshot;
50
+ previous: CalendarSnapshot | null;
51
+ changedFields: string[];
52
+ }
53
+ export declare function entrySnapshot(entry: CalendarEntry, detail: CalendarDetail | null): CalendarSnapshot;
54
+ export declare function commitCalendarPoll(state: IDataObject, account: string, plan: CalendarPlan, details: Map<string, CalendarDetail | null>): {
55
+ aborted: boolean;
56
+ changes: CalendarChange[];
57
+ };
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_HYDRATION = exports.MAX_EVENTS = void 0;
4
+ exports.monthWindow = monthWindow;
5
+ exports.monthOf = monthOf;
6
+ exports.fingerprint = fingerprint;
7
+ exports.planCalendarPoll = planCalendarPoll;
8
+ exports.entrySnapshot = entrySnapshot;
9
+ exports.commitCalendarPoll = commitCalendarPoll;
10
+ const node_crypto_1 = require("node:crypto");
11
+ const errors_1 = require("./errors");
12
+ exports.MAX_EVENTS = 2000;
13
+ exports.MAX_HYDRATION = 50;
14
+ function monthWindow(now, monthsAhead) {
15
+ if (!Number.isInteger(monthsAhead) || monthsAhead < 0 || monthsAhead > 6)
16
+ throw new errors_1.LibrusError('CALENDAR_INVALID_OPTIONS');
17
+ const months = [];
18
+ for (let offset = 0; offset <= monthsAhead; offset++) {
19
+ const date = new Date(now.getFullYear(), now.getMonth() + offset, 1);
20
+ months.push(`${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}`);
21
+ }
22
+ return { from: months[0], monthsAhead, months };
23
+ }
24
+ function monthOf(date) {
25
+ return date.slice(0, 7);
26
+ }
27
+ function addMonths(from, count) {
28
+ const [year, month] = from.split('-').map(Number);
29
+ const date = new Date(year, month - 1 + count, 1);
30
+ return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}`;
31
+ }
32
+ const tracked = ['date', 'text', 'teacher', 'description'];
33
+ function fingerprint(entry) {
34
+ return (0, node_crypto_1.createHash)('sha256')
35
+ .update(JSON.stringify(tracked.map((field) => entry[field])))
36
+ .digest('hex')
37
+ .slice(0, 32);
38
+ }
39
+ const MONTH_PATTERN = /^\d{4}-(?:0[1-9]|1[0-2])$/;
40
+ function validWindow(value) {
41
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
42
+ return false;
43
+ const window = value;
44
+ return (typeof window.from === 'string' &&
45
+ MONTH_PATTERN.test(window.from) &&
46
+ Number.isInteger(window.monthsAhead) &&
47
+ window.monthsAhead >= 0 &&
48
+ window.monthsAhead <= 6);
49
+ }
50
+ const DATE_PATTERN = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/;
51
+ const NULLABLE_STRINGS = [
52
+ 'subject',
53
+ 'teacher',
54
+ 'description',
55
+ 'hour',
56
+ 'rodzaj',
57
+ 'room',
58
+ 'addedAt',
59
+ ];
60
+ function validSnapshot(value) {
61
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
62
+ return false;
63
+ const snapshot = value;
64
+ if (typeof snapshot.date !== 'string' || !DATE_PATTERN.test(snapshot.date))
65
+ return false;
66
+ if (typeof snapshot.text !== 'string')
67
+ return false;
68
+ for (const field of NULLABLE_STRINGS)
69
+ if (snapshot[field] !== null && typeof snapshot[field] !== 'string')
70
+ return false;
71
+ return (snapshot.lessonNumber === null ||
72
+ (Number.isSafeInteger(snapshot.lessonNumber) && snapshot.lessonNumber >= 0));
73
+ }
74
+ function validEvents(value) {
75
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
76
+ return false;
77
+ const events = value;
78
+ if (Object.keys(events).length > exports.MAX_EVENTS)
79
+ return false;
80
+ return Object.values(events).every((record) => {
81
+ if (typeof record !== 'object' || record === null || Array.isArray(record))
82
+ return false;
83
+ const stored = record;
84
+ if (typeof stored.m !== 'string' ||
85
+ !MONTH_PATTERN.test(stored.m) ||
86
+ typeof stored.f !== 'string' ||
87
+ !stored.f)
88
+ return false;
89
+ return validSnapshot(stored.s);
90
+ });
91
+ }
92
+ function planCalendarPoll(state, account, window, entries) {
93
+ const raw = state.librusCalendar;
94
+ if (raw !== undefined && (!raw || typeof raw !== 'object' || Array.isArray(raw)))
95
+ throw new errors_1.LibrusError('CALENDAR_STATE_INVALID');
96
+ const previous = raw;
97
+ let stored = {};
98
+ let rev = 0;
99
+ let owner = account;
100
+ let baseline = true;
101
+ let storedAhead = -1;
102
+ if (previous !== undefined) {
103
+ if (previous.version !== 1 ||
104
+ typeof previous.account !== 'string' ||
105
+ !Number.isInteger(previous.rev) ||
106
+ previous.rev < 0 ||
107
+ !validWindow(previous.window) ||
108
+ !validEvents(previous.events))
109
+ throw new errors_1.LibrusError('CALENDAR_STATE_INVALID');
110
+ rev = previous.rev;
111
+ owner = previous.account;
112
+ if (previous.account === account) {
113
+ stored = { ...previous.events };
114
+ baseline = false;
115
+ storedAhead = previous.window.monthsAhead;
116
+ }
117
+ }
118
+ const silent = new Set();
119
+ if (!baseline && storedAhead >= 0 && window.monthsAhead > storedAhead) {
120
+ const grown = addMonths(window.from, storedAhead);
121
+ for (const month of window.months)
122
+ if (month > grown)
123
+ silent.add(month);
124
+ }
125
+ const map = new Map(entries.map((entry) => [entry.key, entry]));
126
+ const added = [];
127
+ const changed = [];
128
+ if (!baseline)
129
+ for (const [key, entry] of map) {
130
+ if (silent.has(monthOf(entry.date)))
131
+ continue;
132
+ const record = stored[key];
133
+ if (!record)
134
+ added.push(key);
135
+ else if (record.f !== fingerprint(entry))
136
+ changed.push(key);
137
+ }
138
+ const scanned = new Set(window.months);
139
+ const removed = baseline
140
+ ? []
141
+ : Object.keys(stored).filter((key) => scanned.has(stored[key].m) && !silent.has(stored[key].m) && !map.has(key));
142
+ const hydrate = [...added, ...changed].sort().slice(0, exports.MAX_HYDRATION);
143
+ return {
144
+ rev,
145
+ owner,
146
+ baseline,
147
+ window,
148
+ silent,
149
+ entries: map,
150
+ stored,
151
+ added,
152
+ changed,
153
+ removed,
154
+ hydrate,
155
+ };
156
+ }
157
+ function entrySnapshot(entry, detail) {
158
+ var _a, _b, _c, _d, _e, _f, _g;
159
+ return {
160
+ date: entry.date,
161
+ text: entry.text,
162
+ subject: (_a = detail === null || detail === void 0 ? void 0 : detail.subject) !== null && _a !== void 0 ? _a : entry.subject,
163
+ teacher: (_b = detail === null || detail === void 0 ? void 0 : detail.teacher) !== null && _b !== void 0 ? _b : entry.teacher,
164
+ description: (_c = detail === null || detail === void 0 ? void 0 : detail.description) !== null && _c !== void 0 ? _c : entry.description,
165
+ lessonNumber: (_d = detail === null || detail === void 0 ? void 0 : detail.lessonNumber) !== null && _d !== void 0 ? _d : entry.lessonNumber,
166
+ hour: entry.hour,
167
+ rodzaj: (_e = detail === null || detail === void 0 ? void 0 : detail.rodzaj) !== null && _e !== void 0 ? _e : null,
168
+ room: (_f = detail === null || detail === void 0 ? void 0 : detail.room) !== null && _f !== void 0 ? _f : null,
169
+ addedAt: (_g = detail === null || detail === void 0 ? void 0 : detail.addedAt) !== null && _g !== void 0 ? _g : null,
170
+ };
171
+ }
172
+ function diffFields(before, after) {
173
+ return tracked.filter((field) => before[field] !== after[field]);
174
+ }
175
+ function routeOf(key) {
176
+ const route = key.slice(0, key.indexOf('/'));
177
+ return route === 'szczegoly' || route === 'szczegoly_wolne' ? route : null;
178
+ }
179
+ function pairSynthetic(changes) {
180
+ var _a;
181
+ const byDate = new Map();
182
+ for (const change of changes) {
183
+ if (!change.key.startsWith('hash/'))
184
+ continue;
185
+ if (change.changeType !== 'new' && change.changeType !== 'removed')
186
+ continue;
187
+ const bucket = (_a = byDate.get(change.event.date)) !== null && _a !== void 0 ? _a : { added: [], removed: [] };
188
+ if (change.changeType === 'new')
189
+ bucket.added.push(change);
190
+ else
191
+ bucket.removed.push(change);
192
+ byDate.set(change.event.date, bucket);
193
+ }
194
+ const dropped = new Set();
195
+ for (const bucket of byDate.values()) {
196
+ if (bucket.added.length !== 1 || bucket.removed.length !== 1)
197
+ continue;
198
+ const [added] = bucket.added;
199
+ const [removed] = bucket.removed;
200
+ added.changeType = 'changed';
201
+ added.previous = removed.event;
202
+ added.changedFields = diffFields(removed.event, added.event);
203
+ dropped.add(removed);
204
+ }
205
+ return changes.filter((change) => !dropped.has(change));
206
+ }
207
+ function commitCalendarPoll(state, account, plan, details) {
208
+ var _a;
209
+ const current = state.librusCalendar;
210
+ const rev = current === undefined ? 0 : current.rev;
211
+ const owner = current === undefined ? plan.owner : current.account;
212
+ if (rev !== plan.rev || owner !== plan.owner)
213
+ return { aborted: true, changes: [] };
214
+ const candidates = new Set([...plan.added, ...plan.changed]);
215
+ const removedKeys = new Set(plan.removed);
216
+ const scannedMonths = new Set(plan.window.months);
217
+ const events = {};
218
+ for (const [key, record] of Object.entries(plan.stored)) {
219
+ if (!scannedMonths.has(record.m))
220
+ continue;
221
+ if (removedKeys.has(key))
222
+ continue;
223
+ events[key] = record;
224
+ }
225
+ const changes = [];
226
+ for (const [key, entry] of plan.entries) {
227
+ const month = monthOf(entry.date);
228
+ const isSilent = plan.silent.has(month);
229
+ if (!plan.baseline && !isSilent) {
230
+ if (!candidates.has(key))
231
+ continue;
232
+ if (!details.has(key))
233
+ continue;
234
+ }
235
+ const detail = (_a = details.get(key)) !== null && _a !== void 0 ? _a : null;
236
+ const before = plan.stored[key];
237
+ const record = {
238
+ m: month,
239
+ f: fingerprint(entry),
240
+ s: entrySnapshot(entry, detail),
241
+ };
242
+ events[key] = record;
243
+ if (plan.baseline || isSilent)
244
+ continue;
245
+ if (!before)
246
+ changes.push({
247
+ changeType: 'new',
248
+ key,
249
+ route: entry.route,
250
+ eventId: entry.eventId,
251
+ event: record.s,
252
+ previous: null,
253
+ changedFields: [],
254
+ });
255
+ else if (before.f !== record.f)
256
+ changes.push({
257
+ changeType: 'changed',
258
+ key,
259
+ route: entry.route,
260
+ eventId: entry.eventId,
261
+ event: record.s,
262
+ previous: before.s,
263
+ changedFields: diffFields(before.s, record.s),
264
+ });
265
+ }
266
+ for (const key of plan.removed) {
267
+ const before = plan.stored[key];
268
+ changes.push({
269
+ changeType: 'removed',
270
+ key,
271
+ route: routeOf(key),
272
+ eventId: routeOf(key) ? key.slice(key.indexOf('/') + 1) : null,
273
+ event: before.s,
274
+ previous: before.s,
275
+ changedFields: [],
276
+ });
277
+ }
278
+ if (Object.keys(events).length > exports.MAX_EVENTS)
279
+ throw new errors_1.LibrusError('CALENDAR_STATE_LIMIT');
280
+ state.librusCalendar = {
281
+ version: 1,
282
+ rev: plan.rev + 1,
283
+ account,
284
+ window: { from: plan.window.from, monthsAhead: plan.window.monthsAhead },
285
+ events,
286
+ };
287
+ return { aborted: false, changes: pairSynthetic(changes) };
288
+ }
289
+ //# sourceMappingURL=calendarState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendarState.js","sourceRoot":"","sources":["../../../nodes/Librus/calendarState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type AuthStage = 'rozpoczęcie logowania' | 'przesłanie danych logowania' | 'kontynuacja autoryzacji' | 'otwarcie skrzynki';
2
+ export type AuthDestination = 'autoryzacja OAuth' | 'powrót OAuth do Synergii' | 'logowanie do Synergii' | 'strona Synergii' | 'serwis wiadomości' | 'inna dozwolona strona';
3
+ export declare class LibrusError extends Error {
4
+ readonly code: string;
5
+ status?: number;
6
+ constructor(code: string, stage?: AuthStage, destination?: AuthDestination, rejection?: 'adres bez HTTPS' | 'dane logowania w adresie URL' | 'niestandardowy port' | 'nierozpoznana domena');
7
+ }
8
+ export declare function safeError(error: unknown): LibrusError;
9
+ export declare function protocolError(check: string, value?: unknown): LibrusError;