@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.
- package/CHANGELOG.md +27 -0
- package/README.md +21 -1
- package/dist/nodes/Librus/LibrusClient.d.ts +15 -8
- package/dist/nodes/Librus/LibrusClient.js +167 -71
- package/dist/nodes/Librus/LibrusClient.js.map +1 -1
- package/dist/nodes/Librus/LibrusTrigger.node.js +133 -15
- package/dist/nodes/Librus/LibrusTrigger.node.js.map +1 -1
- package/dist/nodes/Librus/calendarState.d.ts +57 -0
- package/dist/nodes/Librus/calendarState.js +289 -0
- package/dist/nodes/Librus/calendarState.js.map +1 -0
- package/dist/nodes/Librus/errors.d.ts +9 -0
- package/dist/nodes/Librus/errors.js +45 -0
- package/dist/nodes/Librus/errors.js.map +1 -0
- package/dist/nodes/Librus/terminarz.d.ts +26 -0
- package/dist/nodes/Librus/terminarz.js +151 -0
- package/dist/nodes/Librus/terminarz.js.map +1 -0
- package/docs/architecture.md +43 -1
- package/docs/live-verification.md +58 -0
- package/package.json +3 -3
|
@@ -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: '
|
|
19
|
-
defaults: { name: 'Librus —
|
|
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
|
-
|
|
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'),
|
|
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":";;;AAAA,+CAAuE;AAOvE,iDAAsE;AACtE,+CAAuC;AACvC,2CAA8C;AAC9C,2CAA4D;
|
|
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;
|