@sebbo2002/vestaboard2mqtt 3.0.0-develop.2 → 4.0.0-develop.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.
@@ -1,252 +0,0 @@
1
- import { characterCode, emptyBoard, LINE_LENGTH } from 'vestaboard-api/lib/cjs/values.js';
2
- export var MessageWriteOptionsLine;
3
- (function (MessageWriteOptionsLine) {
4
- MessageWriteOptionsLine["CURRENT"] = "CURRENT";
5
- MessageWriteOptionsLine["NEXT"] = "NEXT";
6
- })(MessageWriteOptionsLine || (MessageWriteOptionsLine = {}));
7
- const SPECIAL_CHAR_MAP = [
8
- ['ä', [1, 5]],
9
- ['Ä', [1, 5]],
10
- ['ö', [15, 5]],
11
- ['Ö', [15, 5]],
12
- ['ü', [21, 5]],
13
- ['Ü', [21, 5]],
14
- ['ß', [19, 19]],
15
- ['🟥', [63]],
16
- ['🟧', [64]],
17
- ['🟨', [65]],
18
- ['🟩', [66]],
19
- ['🟦', [67]],
20
- ['🟪', [68]],
21
- ['⬜️', [69]],
22
- ['⬜', [69]],
23
- ['⬛️', [0]],
24
- ['⬛', [0]],
25
- ['﹫', [38]],
26
- ['@', [38]],
27
- ['0️⃣', [36]],
28
- ['1️⃣', [27]],
29
- ['2️⃣', [28]],
30
- ['3️⃣', [29]],
31
- ['4️⃣', [30]],
32
- ['5️⃣', [31]],
33
- ['6️⃣', [32]],
34
- ['7️⃣', [33]],
35
- ['8️⃣', [34]],
36
- ['9️⃣', [35]],
37
- ['❕', [37]],
38
- ['‼️', [37, 37]],
39
- ['❗️', [37]],
40
- ['⁉️', [37, 60]],
41
- ['⚠️', [65]],
42
- ['#️⃣', [39]],
43
- ['💸', [40]],
44
- ['💲', [40]],
45
- ['💵', [40]],
46
- ['💰', [40]],
47
- ['$', [40]],
48
- ['﹩', [40]],
49
- ['$', [40]],
50
- ['←', [44]],
51
- ['→', [44]],
52
- ['➡', [44]],
53
- ['⬅', [44]],
54
- ['➔', [44]],
55
- ['↔', [44]],
56
- ['–', [44]],
57
- ['➕', [46]],
58
- ['+', [46]],
59
- ['﹪', [54]],
60
- ['%', [54]],
61
- ['❓', [60]],
62
- ['❔', [60]],
63
- ['℃', [62, 3]],
64
- ['℉', [62, 6]]
65
- ];
66
- export default class Message {
67
- constructor(board = Message.newBoardCharArray()) {
68
- this.currentLine = null;
69
- this.isFilled = false;
70
- this.board = board;
71
- }
72
- static newBoardCharArray() {
73
- return JSON.parse(JSON.stringify(emptyBoard));
74
- }
75
- write(text, options = {}) {
76
- let firstLine = 0;
77
- if (this.isFilled) {
78
- return;
79
- }
80
- if (options.line === MessageWriteOptionsLine.CURRENT) {
81
- firstLine = this.currentLine || 0;
82
- }
83
- else if (options.line === MessageWriteOptionsLine.NEXT && this.currentLine === null) {
84
- this.currentLine = 0;
85
- firstLine = this.currentLine;
86
- }
87
- else if (options.line === MessageWriteOptionsLine.NEXT &&
88
- typeof this.currentLine === 'number' &&
89
- this.currentLine < this.board.length - 1) {
90
- // console.log('write() → current line + 1');
91
- this.currentLine++;
92
- firstLine = this.currentLine;
93
- }
94
- else if (options.line === MessageWriteOptionsLine.NEXT) {
95
- this.isFilled = true;
96
- return;
97
- }
98
- else if (options.line !== undefined) {
99
- firstLine = options.line;
100
- }
101
- const status = {
102
- firstLine,
103
- lastLine: this.board.length - 1,
104
- firstRow: options.row || 0,
105
- lastRow: LINE_LENGTH - 1
106
- };
107
- const pointer = [status.firstRow, status.firstLine];
108
- const words = text.split(/\s+/);
109
- words.forEach((word, i) => {
110
- // Space
111
- if (i !== 0 && pointer[0] !== status.firstRow) {
112
- this.board[pointer[1]][pointer[0]] = 0;
113
- pointer[0]++;
114
- }
115
- let charsLeftInLine = status.lastRow - pointer[0] + 1;
116
- const chars = Message.word2chars(word);
117
- // console.log(
118
- // 'write()',
119
- // 'chars =', chars,
120
- // 'left =', charsLeftInLine,
121
- // `(${status.lastRow} - ${pointer[0]})`,
122
- // 'pointer =', pointer,
123
- // 'charsLeftInLine =', charsLeftInLine
124
- // );
125
- // Unsupported Word / emoji?
126
- if (chars.filter(c => c === 60).length === chars.length && chars.length > 0) {
127
- return;
128
- }
129
- // New Line?
130
- if (chars.length > charsLeftInLine &&
131
- chars.length <= status.lastRow - status.firstRow + 1 &&
132
- pointer[1] < status.lastLine) {
133
- pointer[0] = status.firstRow;
134
- pointer[1]++;
135
- charsLeftInLine = status.lastRow - pointer[0];
136
- // console.log('write() → new line', 'chars =', chars, 'left =', charsLeftInLine, `(${status.lastRow} - ${pointer[0]})`, 'pointer =', pointer);
137
- }
138
- // Add Word
139
- if (chars.length <= charsLeftInLine) {
140
- this.board[pointer[1]].splice(pointer[0], chars.length, ...chars);
141
- pointer[0] += chars.length;
142
- }
143
- else if (chars.length > charsLeftInLine && charsLeftInLine > 5) {
144
- this.board[pointer[1]].splice(pointer[0], charsLeftInLine, ...chars.slice(0, charsLeftInLine));
145
- pointer[0] += charsLeftInLine;
146
- }
147
- });
148
- this.currentLine = pointer[1];
149
- }
150
- static word2chars(word) {
151
- const result = [];
152
- for (const char of word) {
153
- result.push(...this.char2char(char));
154
- }
155
- return result;
156
- }
157
- static char2char(char) {
158
- const fromVestaMap = Object.entries(characterCode)
159
- .find(([key]) => char === key);
160
- if (fromVestaMap) {
161
- return [fromVestaMap[1]];
162
- }
163
- const fromMyMap = SPECIAL_CHAR_MAP
164
- .find(([mapChar]) => char === mapChar);
165
- if (fromMyMap && Array.isArray(fromMyMap[1])) {
166
- return fromMyMap[1];
167
- }
168
- return [60];
169
- }
170
- repeat(char, options = {}) {
171
- const line = this.board[options.line || 0];
172
- line.fill(Message.char2char(char)[0]);
173
- }
174
- centerLines() {
175
- this.board.forEach(line => {
176
- const space = [line.findIndex(c => c !== 0), line.slice().reverse().findIndex(c => c !== 0)];
177
- // Line is completely full, continue…
178
- if (space[0] === -1 || space[1] === -1) {
179
- return;
180
- }
181
- const content = line.slice(space[0], line.length - space[1]);
182
- const padding = Math.floor((space[0] + space[1]) / 2);
183
- line.fill(0, 0, padding);
184
- line.splice(padding, content.length, ...content);
185
- line.fill(0, padding + content.length);
186
- });
187
- }
188
- center() {
189
- const space = [
190
- this.board.findIndex(l => l.find(c => c !== 0)),
191
- Math.min(...this.board.map(l => l.find(c => c !== 0) ? l.slice().reverse().findIndex(c => c !== 0) : l.length)),
192
- this.board.slice().reverse().findIndex(l => l.find(c => c !== 0)),
193
- Math.min(...this.board.map(l => l.find(c => c !== 0) ? l.findIndex(c => c !== 0) : l.length)),
194
- ];
195
- const padding = [
196
- Math.floor((space[0] + space[2]) / 2),
197
- Math.floor((space[1] + space[3]) / 2)
198
- ];
199
- // Move up/down
200
- if (space[0] !== padding[0]) {
201
- const add = padding[0] - space[0];
202
- this.board.splice(space[0] < padding[0] ? 0 : this.board.length - add, 0, ...this.board.splice(this.board.length - add, add));
203
- }
204
- // Move left/right
205
- if (space[3] !== padding[1]) {
206
- const add = padding[1] - space[3];
207
- this.board.forEach(line => {
208
- line.splice(space[3] < padding[1] ? 0 : line.length - add, 0, ...line.splice(line.length - add, add));
209
- });
210
- }
211
- }
212
- isEmpty() {
213
- return !this.board.find(line => line.find(char => char !== 0));
214
- }
215
- toString() {
216
- return '#=' + '='.repeat(LINE_LENGTH * 2) + '=#\n' +
217
- this.board
218
- .map(line => '# ' + line.map(char => Message.charToString(char)).join('') + ' #\n')
219
- .join('') +
220
- '#=' + '='.repeat(LINE_LENGTH * 2) + '=#\n';
221
- }
222
- static charToString(char) {
223
- const entry = Object.entries(characterCode)
224
- .filter(([name]) => name.length <= 2)
225
- .find(([, code]) => code === char);
226
- if (entry) {
227
- return entry[0].toUpperCase() + ' ';
228
- }
229
- switch (char) {
230
- case 63:
231
- return '🟥';
232
- case 64:
233
- return '🟧';
234
- case 65:
235
- return '🟨';
236
- case 66:
237
- return '🟩';
238
- case 67:
239
- return '🟦';
240
- case 68:
241
- return '🟪';
242
- case 69:
243
- return '⬜️';
244
- default:
245
- return ' ';
246
- }
247
- }
248
- export() {
249
- return this.board;
250
- }
251
- }
252
- //# sourceMappingURL=message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/lib/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,kCAAkC,CAAC;AAExG,MAAM,CAAN,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IAC/B,8CAAmB,CAAA;IACnB,wCAAa,CAAA;AACjB,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,QAGlC;AAYD,MAAM,gBAAgB,GAAG;IACrB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACb,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACb,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACd,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACd,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACd,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACd,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACf,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACV,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACX,CAAC,GAAG,EAAE,C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"}
@@ -1,10 +0,0 @@
1
- import Message from './message.js';
2
- export interface PageRenderResponse {
3
- message: Message | null;
4
- validTill?: Date;
5
- }
6
- export default abstract class Page<PayloadType, ConfigType = Record<string, never>> {
7
- abstract parsePayload(payload: string | null): PayloadType;
8
- abstract parseConfig(key: string, value: string | null, config: Partial<ConfigType>): Partial<ConfigType>;
9
- abstract render(payload: PayloadType, config: ConfigType): Promise<PageRenderResponse>;
10
- }
package/dist/lib/page.js DELETED
@@ -1,3 +0,0 @@
1
- export default class Page {
2
- }
3
- //# sourceMappingURL=page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/lib/page.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,OAAgB,IAAI;CAMjC"}
@@ -1,21 +0,0 @@
1
- import Cache from '../cache.js';
2
- import Page, { PageRenderResponse } from '../page.js';
3
- export interface CalendarPagePayload {
4
- calendars: string[];
5
- }
6
- export type CalendarPageItem = {
7
- start: Date;
8
- end: Date;
9
- summary: string;
10
- };
11
- export default class CalendarPage implements Page<CalendarPagePayload> {
12
- static readonly cache: Cache;
13
- parsePayload(payload: string | null): CalendarPagePayload;
14
- parseConfig(): Partial<Record<string, never>>;
15
- fetchURL(url: string): Promise<CalendarPageItem[]>;
16
- static isSameDay(a: Date, b: Date): boolean;
17
- static isMidnight(date: Date): boolean;
18
- fetchURLs(urls: string[]): Promise<CalendarPageItem[]>;
19
- static getTimeStr(event: CalendarPageItem, oneLine?: boolean): string;
20
- render(payload: CalendarPagePayload): Promise<PageRenderResponse>;
21
- }
@@ -1,130 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import Cache from '../cache.js';
11
- import Message, { MessageWriteOptionsLine } from '../message.js';
12
- import ical from 'node-ical';
13
- import Config from '../config.js';
14
- import TodayPage from './today.js';
15
- export default class CalendarPage {
16
- parsePayload(payload) {
17
- return {
18
- calendars: (payload || '').split(',')
19
- };
20
- }
21
- parseConfig() {
22
- return {};
23
- }
24
- fetchURL(url) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- let preCached = yield CalendarPage.cache.get(url, 1000 * 60 * 10);
27
- if (!preCached) {
28
- const calendar = yield ical.async.fromURL(url);
29
- const events = Object.values(calendar)
30
- .filter(entry => entry.type === 'VEVENT' &&
31
- entry.start &&
32
- entry.end &&
33
- entry.summary);
34
- preCached = events
35
- .map(entry => ({
36
- start: new Date(String(entry.start)),
37
- end: new Date(String(entry.end)),
38
- summary: String(entry.summary).trim()
39
- }))
40
- .filter(entry => entry.end > new Date())
41
- .sort((a, b) => a.end.getTime() - b.end.getTime())
42
- .slice(0, 6);
43
- yield CalendarPage.cache.set(url, preCached);
44
- }
45
- return preCached
46
- .map(entry => ({
47
- start: new Date(String(entry.start)),
48
- end: new Date(String(entry.end)),
49
- summary: String(entry.summary)
50
- }))
51
- .filter(entry => entry.end > new Date());
52
- });
53
- }
54
- static isSameDay(a, b) {
55
- const result = Boolean(a.getFullYear() === b.getFullYear() &&
56
- a.getMonth() === b.getMonth() &&
57
- a.getDate() === b.getDate());
58
- return result;
59
- }
60
- static isMidnight(date) {
61
- const result = Boolean(!date.getHours() &&
62
- !date.getMinutes() &&
63
- !date.getSeconds() &&
64
- !date.getMilliseconds());
65
- return result;
66
- }
67
- fetchURLs(urls) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- const rawResult = yield Promise.all(urls.map(url => this.fetchURL(url)));
70
- return []
71
- .concat(...rawResult)
72
- .filter(entry => entry.end > new Date())
73
- .sort((a, b) => a.end.getTime() - b.end.getTime());
74
- });
75
- }
76
- static getTimeStr(event, oneLine = false) {
77
- if (this.isMidnight(event.start) &&
78
- this.isMidnight(event.end) &&
79
- this.isSameDay(new Date(), event.start)) {
80
- return 'Heute';
81
- }
82
- if (this.isMidnight(event.start) &&
83
- this.isMidnight(event.end) &&
84
- this.isSameDay(new Date(new Date().getTime() + 1000 * 60 * 60 * 24), event.start)) {
85
- return oneLine ? 'Morgen' : 'Morgn';
86
- }
87
- return event.start.getHours().toString().padStart(2, '⬛️') + ':' +
88
- event.start.getMinutes().toString().padStart(2, '0');
89
- }
90
- render(payload) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- const message = new Message();
93
- const urls = payload.calendars
94
- .map(id => Config.calendar.urls[id])
95
- .filter(Boolean);
96
- const calendar = yield this.fetchURLs(urls)
97
- .then(calendar => calendar.filter(entry => {
98
- if (CalendarPage.isMidnight(entry.start) && CalendarPage.isMidnight(entry.end)) {
99
- return CalendarPage.isSameDay(new Date(), entry.start) || (new Date().getHours() >= 20 &&
100
- CalendarPage.isSameDay(new Date(new Date().getTime() + 1000 * 60 * 60 * 24), entry.start));
101
- }
102
- else {
103
- return entry.start < new Date(new Date().getTime() + (1000 * 60 * 60 * 12));
104
- }
105
- }));
106
- if (!calendar.length) {
107
- const today = new TodayPage();
108
- const pageConfigCache = new Cache('page-config');
109
- const config = yield pageConfigCache.get('today');
110
- return today.render({}, config || {});
111
- }
112
- let validTill = new Date(new Date().getTime() + 1000 * 60 * 10);
113
- calendar.forEach(event => {
114
- message.write(CalendarPage.getTimeStr(event, calendar.length === 1), { line: MessageWriteOptionsLine.NEXT });
115
- message.write(event.summary, { line: MessageWriteOptionsLine.CURRENT, row: 6 });
116
- message.write('', { line: MessageWriteOptionsLine.NEXT });
117
- if (event.end < validTill) {
118
- validTill = event.end;
119
- }
120
- });
121
- message.center();
122
- return {
123
- message,
124
- validTill
125
- };
126
- });
127
- }
128
- }
129
- CalendarPage.cache = new Cache('calendar');
130
- //# sourceMappingURL=calendar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/lib/pages/calendar.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import Page from '../page.js';
2
- declare const pages: Record<string, Page<unknown, unknown>>;
3
- export default pages;
@@ -1,10 +0,0 @@
1
- import MessagePage from './message.js';
2
- import CalendarPage from './calendar.js';
3
- import TodayPage from './today.js';
4
- const pages = {
5
- message: new MessagePage(),
6
- calendar: new CalendarPage(),
7
- today: new TodayPage()
8
- };
9
- export default pages;
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pages/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,MAAM,KAAK,GAA2C;IAClD,OAAO,EAAE,IAAI,WAAW,EAAE;IAC1B,QAAQ,EAAE,IAAI,YAAY,EAAE;IAC5B,KAAK,EAAE,IAAI,SAAS,EAAE;CACzB,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -1,8 +0,0 @@
1
- import Cache from '../cache.js';
2
- import Page, { PageRenderResponse } from '../page.js';
3
- export default class MessagePage implements Page<string> {
4
- static readonly cache: Cache;
5
- parsePayload(payload: string | null): string;
6
- parseConfig(): Partial<Record<string, never>>;
7
- render(content: string): Promise<PageRenderResponse>;
8
- }
@@ -1,32 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import Cache from '../cache.js';
11
- import Message, { MessageWriteOptionsLine } from '../message.js';
12
- export default class MessagePage {
13
- parsePayload(payload) {
14
- return payload || '';
15
- }
16
- parseConfig() {
17
- return {};
18
- }
19
- render(content) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- const message = new Message();
22
- content.split('\n').forEach(line => {
23
- message.write(line, { line: MessageWriteOptionsLine.NEXT });
24
- });
25
- message.centerLines();
26
- message.center();
27
- return { message };
28
- });
29
- }
30
- }
31
- MessagePage.cache = new Cache('calendar');
32
- //# sourceMappingURL=message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/lib/pages/message.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,OAAO,EAAE,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAG/D,MAAM,CAAC,OAAO,OAAO,WAAW;IAG5B,YAAY,CAAC,OAAsB;QAC/B,OAAO,OAAO,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,WAAW;QACP,OAAO,EAAE,CAAC;IACd,CAAC;IAEY,MAAM,CAAE,OAAe;;YAChC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAE9B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAC,OAAO,EAAC,CAAC;QACrB,CAAC;KAAA;;AApBe,iBAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- import Cache from '../cache.js';
2
- import Page, { PageRenderResponse } from '../page.js';
3
- export interface TodayPagePayload {
4
- temp?: [number, number];
5
- precip?: number;
6
- locale: string;
7
- }
8
- export default class TodayPage implements Page<Partial<TodayPagePayload>, TodayPagePayload> {
9
- static readonly cache: Cache;
10
- parsePayload(payload: string | null): Partial<TodayPagePayload>;
11
- parseConfig(key: string, value: string | null, config: Partial<TodayPagePayload>): Partial<TodayPagePayload>;
12
- render(payload: Partial<TodayPagePayload>, config: Partial<TodayPagePayload>): Promise<PageRenderResponse>;
13
- }
@@ -1,86 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import Cache from '../cache.js';
11
- import Message, { MessageWriteOptionsLine } from '../message.js';
12
- export default class TodayPage {
13
- parsePayload(payload) {
14
- try {
15
- return JSON.parse(payload || '');
16
- }
17
- catch (error) {
18
- return {};
19
- }
20
- }
21
- parseConfig(key, value, config) {
22
- const result = {};
23
- console.log('parseConfig', config);
24
- if (key === 'min-temp' && Array.isArray(config.temp)) {
25
- result.temp = [
26
- parseInt(value || ''),
27
- Math.max(...config.temp)
28
- ];
29
- }
30
- else if (key === 'min-temp') {
31
- result.temp = [
32
- parseInt(value || ''),
33
- parseInt(value || '')
34
- ];
35
- }
36
- else if (key === 'max-temp' && Array.isArray(config.temp)) {
37
- result.temp = [
38
- Math.min(...config.temp),
39
- parseInt(value || '')
40
- ];
41
- }
42
- else if (key === 'max-temp') {
43
- result.temp = [
44
- parseInt(value || ''),
45
- parseInt(value || '')
46
- ];
47
- }
48
- else if (key === 'precip') {
49
- result.precip = parseInt(value || '', 10);
50
- }
51
- else if (key === 'locale') {
52
- result.locale = String(value);
53
- }
54
- return result;
55
- }
56
- render(payload, config) {
57
- return __awaiter(this, void 0, void 0, function* () {
58
- const message = new Message();
59
- const today = new Date();
60
- const mergedPayload = Object.assign({
61
- temp: undefined,
62
- precip: undefined,
63
- locale: 'en'
64
- }, config, payload);
65
- message.write(today.toLocaleString(mergedPayload.locale, { weekday: 'long' }));
66
- message.write(today.toLocaleString(mergedPayload.locale, { day: 'numeric', month: 'long' }), { line: MessageWriteOptionsLine.NEXT });
67
- message.write('', { line: MessageWriteOptionsLine.NEXT });
68
- const varContent = [];
69
- if (Array.isArray(mergedPayload.temp)) {
70
- varContent.push(`${Math.min(...mergedPayload.temp)}-${Math.max(...mergedPayload.temp)}°C`);
71
- }
72
- if (typeof mergedPayload.precip === 'number' && mergedPayload.precip > 0) {
73
- varContent.push(`${mergedPayload.precip}%`);
74
- }
75
- if (varContent.length) {
76
- message.write(varContent.join(', '), { line: MessageWriteOptionsLine.NEXT });
77
- }
78
- message.center();
79
- const validTill = new Date();
80
- validTill.setHours(24, 0, 0, 0);
81
- return { message, validTill };
82
- });
83
- }
84
- }
85
- TodayPage.cache = new Cache('calendar');
86
- //# sourceMappingURL=today.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"today.js","sourceRoot":"","sources":["../../../src/lib/pages/today.ts"],"names":[],"mappings":"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"}