@openbrf/display 0.0.0-stage → 0.1.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/LICENSE +661 -0
- package/LICENSE-EXCEPTION.md +28 -0
- package/README.md +109 -2
- package/dist/contract.d.ts +244 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +54 -0
- package/dist/contract.js.map +1 -0
- package/dist/fetch-loop.d.ts +87 -0
- package/dist/fetch-loop.d.ts.map +1 -0
- package/dist/fetch-loop.js +351 -0
- package/dist/fetch-loop.js.map +1 -0
- package/dist/fit.d.ts +44 -0
- package/dist/fit.d.ts.map +1 -0
- package/dist/fit.js +257 -0
- package/dist/fit.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/parse.d.ts +39 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +494 -0
- package/dist/parse.js.map +1 -0
- package/dist/renderer.d.ts +74 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +473 -0
- package/dist/renderer.js.map +1 -0
- package/dist/rotation.d.ts +129 -0
- package/dist/rotation.d.ts.map +1 -0
- package/dist/rotation.js +330 -0
- package/dist/rotation.js.map +1 -0
- package/dist/slides.d.ts +36 -0
- package/dist/slides.d.ts.map +1 -0
- package/dist/slides.js +333 -0
- package/dist/slides.js.map +1 -0
- package/dist/styles.d.ts +7 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +104 -0
- package/dist/styles.js.map +1 -0
- package/dist/text.d.ts +16 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +62 -0
- package/dist/text.js.map +1 -0
- package/dist/time.d.ts +39 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +94 -0
- package/dist/time.js.map +1 -0
- package/dist/translate.d.ts +18 -0
- package/dist/translate.d.ts.map +1 -0
- package/dist/translate.js +35 -0
- package/dist/translate.js.map +1 -0
- package/dist/words.d.ts +41 -0
- package/dist/words.d.ts.map +1 -0
- package/dist/words.js +73 -0
- package/dist/words.js.map +1 -0
- package/package.json +49 -3
- package/src/contract.ts +279 -0
- package/src/fetch-loop.ts +472 -0
- package/src/fit.ts +348 -0
- package/src/index.ts +77 -0
- package/src/parse.ts +605 -0
- package/src/renderer.ts +688 -0
- package/src/rotation.ts +508 -0
- package/src/slides.ts +583 -0
- package/src/styles.ts +110 -0
- package/src/text.ts +65 -0
- package/src/time.ts +147 -0
- package/src/translate.ts +56 -0
- package/src/words.ts +91 -0
package/dist/fit.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit.js","sourceRoot":"","sources":["../src/fit.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @openbrf/display: what every screen showing an association's content is
|
|
3
|
+
* built from (ADR 0050). The core's display mode and the signage module's
|
|
4
|
+
* player both use all four parts:
|
|
5
|
+
*
|
|
6
|
+
* 1. the screen content contract and its parser,
|
|
7
|
+
* 2. the rotation builder,
|
|
8
|
+
* 3. the renderer,
|
|
9
|
+
* 4. the fetch loop.
|
|
10
|
+
*/
|
|
11
|
+
export { SCREEN_CONTENT_LIMITS, SCREEN_CONTENT_VERSION, SLIDE_ID_PATTERN, } from "./contract.ts";
|
|
12
|
+
export type { AddonBody, AddonDoor, AddonDoorsBody, AddonTableBody, AddonTextBody, AgendaItem, AvailabilityBody, AvailabilityResource, BusyInterval, EventsBody, EventsOccurrence, Instant, IsoWeekday, LocalTime, MeetingBody, NewsBody, PictureBody, PictureRef, ScreenContent, ScreenLayout, ScreenLocale, ScreenSchedule, ScreenScheduleWindow, Slide, SlideBody, SlideSource, } from "./contract.ts";
|
|
13
|
+
export { parseScreenContent, ScreenContentError } from "./parse.ts";
|
|
14
|
+
export type { ScreenContentErrorReason } from "./parse.ts";
|
|
15
|
+
export { shortenText, shortenTexts } from "./text.ts";
|
|
16
|
+
export { availabilityWindow, buildRotation, EVENTS_DAYS, NEWS_SLIDES, } from "./rotation.ts";
|
|
17
|
+
export type { BookableResourceInput, BusyIntervalInput, MeetingNoticeInput, NewsItemInput, OccurrenceInput, PictureFileInput, RotationInput, } from "./rotation.ts";
|
|
18
|
+
export { mountRenderer } from "./renderer.ts";
|
|
19
|
+
export type { DisplayMessage, DisplayRenderer, DisplayStatus, RendererOptions, } from "./renderer.ts";
|
|
20
|
+
export { DISPLAY_STYLESHEET } from "./styles.ts";
|
|
21
|
+
export { startFetchLoop, STALE_CONTENT_LIMIT_MS } from "./fetch-loop.ts";
|
|
22
|
+
export type { CachedScreenContent, FetchedStatus, FetchLoop, FetchLoopOptions, ScreenContentCache, } from "./fetch-loop.ts";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @openbrf/display: what every screen showing an association's content is
|
|
3
|
+
* built from (ADR 0050). The core's display mode and the signage module's
|
|
4
|
+
* player both use all four parts:
|
|
5
|
+
*
|
|
6
|
+
* 1. the screen content contract and its parser,
|
|
7
|
+
* 2. the rotation builder,
|
|
8
|
+
* 3. the renderer,
|
|
9
|
+
* 4. the fetch loop.
|
|
10
|
+
*/
|
|
11
|
+
export { SCREEN_CONTENT_LIMITS, SCREEN_CONTENT_VERSION, SLIDE_ID_PATTERN, } from "./contract.js";
|
|
12
|
+
export { parseScreenContent, ScreenContentError } from "./parse.js";
|
|
13
|
+
export { shortenText, shortenTexts } from "./text.js";
|
|
14
|
+
export { availabilityWindow, buildRotation, EVENTS_DAYS, NEWS_SLIDES, } from "./rotation.js";
|
|
15
|
+
export { mountRenderer } from "./renderer.js";
|
|
16
|
+
export { DISPLAY_STYLESHEET } from "./styles.js";
|
|
17
|
+
export { startFetchLoop, STALE_CONTENT_LIMIT_MS } from "./fetch-loop.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AA6BvB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,eAAe,CAAC;AAUvB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAO9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/parse.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ScreenContent } from "./contract.ts";
|
|
2
|
+
/** Why a document was refused. */
|
|
3
|
+
export type ScreenContentErrorReason = "version-unknown" | "document-invalid";
|
|
4
|
+
/**
|
|
5
|
+
* A document the player cannot show at all.
|
|
6
|
+
*
|
|
7
|
+
* To the fetch loop it is a failed fetch, as the contract says of a document
|
|
8
|
+
* with a version the player does not know.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ScreenContentError extends Error {
|
|
11
|
+
readonly reason: ScreenContentErrorReason;
|
|
12
|
+
readonly name = "ScreenContentError";
|
|
13
|
+
constructor(reason: ScreenContentErrorReason, message: string);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Reads a screen content document by the player's rules, and hands back only
|
|
17
|
+
* what the contract names.
|
|
18
|
+
*
|
|
19
|
+
* - **Objects are open.** A field the contract does not name is ignored, and is
|
|
20
|
+
* absent from the result.
|
|
21
|
+
* - **A slide whose `body.kind` is unknown is skipped**, so that a kind added
|
|
22
|
+
* later in version 1 does not stop an older player.
|
|
23
|
+
* - **A malformed slide is skipped too**: a slide of a known kind with a field
|
|
24
|
+
* of the wrong type, a text over its limit, a count out of bounds, a `source`
|
|
25
|
+
* that does not match its body, or an `id` an earlier slide already has. The
|
|
26
|
+
* rest of the rotation is shown without it.
|
|
27
|
+
* - **A `version` other than 1, or none, is refused** with the reason
|
|
28
|
+
* `version-unknown`.
|
|
29
|
+
* - **A document whose own fields are malformed is refused** with the reason
|
|
30
|
+
* `document-invalid`: the screen id, the instants, the locale, the time zone,
|
|
31
|
+
* the release channel, the layout, the schedule, or a rotation that is not a
|
|
32
|
+
* list of at most 100.
|
|
33
|
+
*
|
|
34
|
+
* `refreshSeconds` is held to 30 to 60 rather than refused, because the
|
|
35
|
+
* contract says the player fetches again within a minute whatever the document
|
|
36
|
+
* says.
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseScreenContent(value: unknown): ScreenContent;
|
|
39
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,aAAa,EAOnB,MAAM,eAAe,CAAC;AAGvB,kCAAkC;AAClC,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAE9E;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAIzC,QAAQ,CAAC,MAAM,EAAE,wBAAwB;IAH3C,SAAkB,IAAI,wBAAwB;IAE9C,YACW,MAAM,EAAE,wBAAwB,EACzC,OAAO,EAAE,MAAM,EAGhB;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAoEhE"}
|
package/dist/parse.js
ADDED
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
import { SCREEN_CONTENT_LIMITS as LIMITS, SCREEN_CONTENT_VERSION, SLIDE_ID_PATTERN, } from "./contract.js";
|
|
2
|
+
import { isTimeZone } from "./time.js";
|
|
3
|
+
/**
|
|
4
|
+
* A document the player cannot show at all.
|
|
5
|
+
*
|
|
6
|
+
* To the fetch loop it is a failed fetch, as the contract says of a document
|
|
7
|
+
* with a version the player does not know.
|
|
8
|
+
*/
|
|
9
|
+
export class ScreenContentError extends Error {
|
|
10
|
+
reason;
|
|
11
|
+
name = "ScreenContentError";
|
|
12
|
+
constructor(reason, message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.reason = reason;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Reads a screen content document by the player's rules, and hands back only
|
|
19
|
+
* what the contract names.
|
|
20
|
+
*
|
|
21
|
+
* - **Objects are open.** A field the contract does not name is ignored, and is
|
|
22
|
+
* absent from the result.
|
|
23
|
+
* - **A slide whose `body.kind` is unknown is skipped**, so that a kind added
|
|
24
|
+
* later in version 1 does not stop an older player.
|
|
25
|
+
* - **A malformed slide is skipped too**: a slide of a known kind with a field
|
|
26
|
+
* of the wrong type, a text over its limit, a count out of bounds, a `source`
|
|
27
|
+
* that does not match its body, or an `id` an earlier slide already has. The
|
|
28
|
+
* rest of the rotation is shown without it.
|
|
29
|
+
* - **A `version` other than 1, or none, is refused** with the reason
|
|
30
|
+
* `version-unknown`.
|
|
31
|
+
* - **A document whose own fields are malformed is refused** with the reason
|
|
32
|
+
* `document-invalid`: the screen id, the instants, the locale, the time zone,
|
|
33
|
+
* the release channel, the layout, the schedule, or a rotation that is not a
|
|
34
|
+
* list of at most 100.
|
|
35
|
+
*
|
|
36
|
+
* `refreshSeconds` is held to 30 to 60 rather than refused, because the
|
|
37
|
+
* contract says the player fetches again within a minute whatever the document
|
|
38
|
+
* says.
|
|
39
|
+
*/
|
|
40
|
+
export function parseScreenContent(value) {
|
|
41
|
+
if (!isRecord(value)) {
|
|
42
|
+
throw invalid("The document is not a JSON object.");
|
|
43
|
+
}
|
|
44
|
+
if (value["version"] !== SCREEN_CONTENT_VERSION) {
|
|
45
|
+
throw new ScreenContentError("version-unknown", `The document's version is not ${SCREEN_CONTENT_VERSION}.`);
|
|
46
|
+
}
|
|
47
|
+
const screenId = value["screenId"];
|
|
48
|
+
if (typeof screenId !== "string" || screenId.length === 0) {
|
|
49
|
+
throw invalid("screenId is not a string.");
|
|
50
|
+
}
|
|
51
|
+
const generatedAt = value["generatedAt"];
|
|
52
|
+
if (!isInstant(generatedAt)) {
|
|
53
|
+
throw invalid("generatedAt is not an instant.");
|
|
54
|
+
}
|
|
55
|
+
const refreshSeconds = value["refreshSeconds"];
|
|
56
|
+
if (typeof refreshSeconds !== "number" ||
|
|
57
|
+
!Number.isFinite(refreshSeconds) ||
|
|
58
|
+
refreshSeconds <= 0) {
|
|
59
|
+
throw invalid("refreshSeconds is not a number of seconds.");
|
|
60
|
+
}
|
|
61
|
+
const locale = value["locale"];
|
|
62
|
+
if (locale !== "sv" && locale !== "en") {
|
|
63
|
+
throw invalid("locale is not sv or en.");
|
|
64
|
+
}
|
|
65
|
+
const timeZone = value["timeZone"];
|
|
66
|
+
if (typeof timeZone !== "string" || !isTimeZone(timeZone)) {
|
|
67
|
+
throw invalid("timeZone is not a time zone.");
|
|
68
|
+
}
|
|
69
|
+
const releaseChannel = value["releaseChannel"];
|
|
70
|
+
if (releaseChannel !== "stable" && releaseChannel !== "beta") {
|
|
71
|
+
throw invalid("releaseChannel is not stable or beta.");
|
|
72
|
+
}
|
|
73
|
+
const layout = parseLayout(value["layout"]);
|
|
74
|
+
const schedule = parseSchedule(value["schedule"]);
|
|
75
|
+
const rotation = value["rotation"];
|
|
76
|
+
if (!Array.isArray(rotation) || rotation.length > LIMITS.rotation) {
|
|
77
|
+
throw invalid(`rotation is not a list of at most ${LIMITS.rotation}.`);
|
|
78
|
+
}
|
|
79
|
+
const slides = [];
|
|
80
|
+
const ids = new Set();
|
|
81
|
+
for (const candidate of rotation) {
|
|
82
|
+
const slide = parseSlide(candidate);
|
|
83
|
+
if (slide !== null && !ids.has(slide.id)) {
|
|
84
|
+
ids.add(slide.id);
|
|
85
|
+
slides.push(slide);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
version: SCREEN_CONTENT_VERSION,
|
|
90
|
+
screenId,
|
|
91
|
+
generatedAt,
|
|
92
|
+
refreshSeconds: Math.min(LIMITS.refreshSecondsMax, Math.max(LIMITS.refreshSecondsMin, Math.round(refreshSeconds))),
|
|
93
|
+
locale,
|
|
94
|
+
timeZone,
|
|
95
|
+
releaseChannel,
|
|
96
|
+
layout,
|
|
97
|
+
schedule,
|
|
98
|
+
rotation: slides,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function invalid(message) {
|
|
102
|
+
return new ScreenContentError("document-invalid", message);
|
|
103
|
+
}
|
|
104
|
+
function parseLayout(value) {
|
|
105
|
+
if (!isRecord(value)) {
|
|
106
|
+
throw invalid("layout is not an object.");
|
|
107
|
+
}
|
|
108
|
+
const { orientation, header, theme } = value;
|
|
109
|
+
if (orientation !== 0 &&
|
|
110
|
+
orientation !== 90 &&
|
|
111
|
+
orientation !== 180 &&
|
|
112
|
+
orientation !== 270) {
|
|
113
|
+
throw invalid("layout.orientation is not 0, 90, 180 or 270.");
|
|
114
|
+
}
|
|
115
|
+
if (header !== "none" && header !== "clock") {
|
|
116
|
+
throw invalid("layout.header is not none or clock.");
|
|
117
|
+
}
|
|
118
|
+
if (theme !== "light" && theme !== "dark") {
|
|
119
|
+
throw invalid("layout.theme is not light or dark.");
|
|
120
|
+
}
|
|
121
|
+
return { orientation, header, theme };
|
|
122
|
+
}
|
|
123
|
+
const LOCAL_TIME = /^(?:(?:[01]\d|2[0-3]):[0-5]\d|24:00)$/;
|
|
124
|
+
function parseSchedule(value) {
|
|
125
|
+
if (!isRecord(value)) {
|
|
126
|
+
throw invalid("schedule is not an object.");
|
|
127
|
+
}
|
|
128
|
+
const on = value["on"];
|
|
129
|
+
if (!Array.isArray(on) || on.length > LIMITS.scheduleWindows) {
|
|
130
|
+
throw invalid(`schedule.on is not a list of at most ${LIMITS.scheduleWindows}.`);
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
on: on.map((window) => {
|
|
134
|
+
if (!isRecord(window)) {
|
|
135
|
+
throw invalid("A schedule window is not an object.");
|
|
136
|
+
}
|
|
137
|
+
const { days, from, to } = window;
|
|
138
|
+
if (!Array.isArray(days) ||
|
|
139
|
+
!days.every((day) => typeof day === "number" &&
|
|
140
|
+
Number.isInteger(day) &&
|
|
141
|
+
day >= 1 &&
|
|
142
|
+
day <= 7)) {
|
|
143
|
+
throw invalid("A schedule window's days are not ISO weekdays.");
|
|
144
|
+
}
|
|
145
|
+
if (typeof from !== "string" ||
|
|
146
|
+
typeof to !== "string" ||
|
|
147
|
+
!LOCAL_TIME.test(from) ||
|
|
148
|
+
!LOCAL_TIME.test(to) ||
|
|
149
|
+
from >= to) {
|
|
150
|
+
throw invalid("A schedule window's from and to are not times in order.");
|
|
151
|
+
}
|
|
152
|
+
return { days: [...days], from, to };
|
|
153
|
+
}),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
const SOURCE_OF_KIND = {
|
|
157
|
+
news: "news",
|
|
158
|
+
events: "events",
|
|
159
|
+
meeting: "meeting",
|
|
160
|
+
availability: "availability",
|
|
161
|
+
picture: "picture",
|
|
162
|
+
text: "addon",
|
|
163
|
+
table: "addon",
|
|
164
|
+
doors: "addon",
|
|
165
|
+
};
|
|
166
|
+
function parseSlide(value) {
|
|
167
|
+
if (!isRecord(value)) {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
const { id, seconds, until, source, addon, body } = value;
|
|
171
|
+
if (typeof id !== "string" || !SLIDE_ID_PATTERN.test(id)) {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
if (typeof seconds !== "number" ||
|
|
175
|
+
!Number.isInteger(seconds) ||
|
|
176
|
+
seconds < LIMITS.slideSecondsMin ||
|
|
177
|
+
seconds > LIMITS.slideSecondsMax) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
if (until !== null && !isInstant(until)) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
const parsed = parseBody(body);
|
|
184
|
+
if (parsed === null) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
const sourceOfBody = SOURCE_OF_KIND[parsed.kind];
|
|
188
|
+
if (source !== sourceOfBody) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
let addonId = null;
|
|
192
|
+
if (sourceOfBody === "addon") {
|
|
193
|
+
if (typeof addon !== "string" || addon.length === 0) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
addonId = addon;
|
|
197
|
+
}
|
|
198
|
+
else if (addon !== null) {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
id,
|
|
203
|
+
seconds,
|
|
204
|
+
until,
|
|
205
|
+
source: sourceOfBody,
|
|
206
|
+
addon: addonId,
|
|
207
|
+
body: parsed,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function parseBody(value) {
|
|
211
|
+
if (!isRecord(value)) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
switch (value["kind"]) {
|
|
215
|
+
case "news":
|
|
216
|
+
return parseNews(value);
|
|
217
|
+
case "events":
|
|
218
|
+
return parseEvents(value);
|
|
219
|
+
case "meeting":
|
|
220
|
+
return parseMeeting(value);
|
|
221
|
+
case "availability":
|
|
222
|
+
return parseAvailability(value);
|
|
223
|
+
case "picture":
|
|
224
|
+
return parsePictureBody(value);
|
|
225
|
+
case "text":
|
|
226
|
+
return parseText(value);
|
|
227
|
+
case "table":
|
|
228
|
+
return parseTable(value);
|
|
229
|
+
case "doors":
|
|
230
|
+
return parseDoors(value);
|
|
231
|
+
default:
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function parseNews(value) {
|
|
236
|
+
const { title, paragraphs, picture, publishedAt } = value;
|
|
237
|
+
if (!isText(title, LIMITS.title) || !isInstant(publishedAt)) {
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
if (!isTextList(paragraphs, LIMITS.paragraphs)) {
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
const ref = picture === null ? null : parsePictureRef(picture);
|
|
244
|
+
if (ref === undefined) {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
kind: "news",
|
|
249
|
+
title,
|
|
250
|
+
paragraphs: [...paragraphs],
|
|
251
|
+
picture: ref,
|
|
252
|
+
publishedAt,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
function parseEvents(value) {
|
|
256
|
+
const list = value["occurrences"];
|
|
257
|
+
if (!Array.isArray(list) ||
|
|
258
|
+
list.length < LIMITS.occurrencesMin ||
|
|
259
|
+
list.length > LIMITS.occurrencesMax) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
const occurrences = [];
|
|
263
|
+
for (const item of list) {
|
|
264
|
+
if (!isRecord(item)) {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
const { title, description, location, startsAt, endsAt, calledOff, placesLeft, } = item;
|
|
268
|
+
if (!isText(title, LIMITS.title) ||
|
|
269
|
+
!isTextOrNull(description, LIMITS.description) ||
|
|
270
|
+
!isTextOrNull(location, LIMITS.location) ||
|
|
271
|
+
!isInstant(startsAt) ||
|
|
272
|
+
!isInstant(endsAt) ||
|
|
273
|
+
typeof calledOff !== "boolean" ||
|
|
274
|
+
!(placesLeft === null || isCount(placesLeft))) {
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
occurrences.push({
|
|
278
|
+
title,
|
|
279
|
+
description,
|
|
280
|
+
location,
|
|
281
|
+
startsAt,
|
|
282
|
+
endsAt,
|
|
283
|
+
calledOff,
|
|
284
|
+
placesLeft,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
return { kind: "events", occurrences };
|
|
288
|
+
}
|
|
289
|
+
function parseMeeting(value) {
|
|
290
|
+
const { meetingKind, startsAt, place, digitalParticipation, agenda } = value;
|
|
291
|
+
if ((meetingKind !== "ordinary" && meetingKind !== "extraordinary") ||
|
|
292
|
+
!isInstant(startsAt) ||
|
|
293
|
+
!isText(place, LIMITS.place) ||
|
|
294
|
+
!isTextOrNull(digitalParticipation, LIMITS.digitalParticipation) ||
|
|
295
|
+
!Array.isArray(agenda) ||
|
|
296
|
+
agenda.length > LIMITS.agendaItems) {
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
const items = [];
|
|
300
|
+
for (const item of agenda) {
|
|
301
|
+
if (!isRecord(item)) {
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
const { position, title } = item;
|
|
305
|
+
if (typeof position !== "number" ||
|
|
306
|
+
!Number.isInteger(position) ||
|
|
307
|
+
!isText(title, LIMITS.agendaTitle)) {
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
items.push({ position, title });
|
|
311
|
+
}
|
|
312
|
+
return {
|
|
313
|
+
kind: "meeting",
|
|
314
|
+
meetingKind,
|
|
315
|
+
startsAt,
|
|
316
|
+
place,
|
|
317
|
+
digitalParticipation,
|
|
318
|
+
agenda: items,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
const MINUTES_IN_A_DAY = 24 * 60;
|
|
322
|
+
function parseAvailability(value) {
|
|
323
|
+
const { from, to, resources } = value;
|
|
324
|
+
if (!isInstant(from) || !isInstant(to)) {
|
|
325
|
+
return null;
|
|
326
|
+
}
|
|
327
|
+
const span = Date.parse(to) - Date.parse(from);
|
|
328
|
+
if (span <= 0 || span > LIMITS.availabilityDays * 24 * 60 * 60 * 1000) {
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
if (!Array.isArray(resources) ||
|
|
332
|
+
resources.length < LIMITS.resourcesMin ||
|
|
333
|
+
resources.length > LIMITS.resourcesMax) {
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
const parsed = [];
|
|
337
|
+
for (const resource of resources) {
|
|
338
|
+
if (!isRecord(resource)) {
|
|
339
|
+
return null;
|
|
340
|
+
}
|
|
341
|
+
const { name, mode, slotMinutes, opensAtMinute, closesAtMinute, busy } = resource;
|
|
342
|
+
if (!isText(name, LIMITS.resourceName) ||
|
|
343
|
+
(mode !== "timeSlots" && mode !== "wholeDay" && mode !== "dateRange") ||
|
|
344
|
+
!isMinutesOrNull(slotMinutes) ||
|
|
345
|
+
!isMinutesOrNull(opensAtMinute) ||
|
|
346
|
+
!isMinutesOrNull(closesAtMinute) ||
|
|
347
|
+
!Array.isArray(busy)) {
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
const intervals = [];
|
|
351
|
+
for (const interval of busy) {
|
|
352
|
+
if (!isRecord(interval)) {
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
const { start, end } = interval;
|
|
356
|
+
if (!isInstant(start) ||
|
|
357
|
+
!isInstant(end) ||
|
|
358
|
+
Date.parse(start) >= Date.parse(end)) {
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
361
|
+
intervals.push({ start, end });
|
|
362
|
+
}
|
|
363
|
+
parsed.push({
|
|
364
|
+
name,
|
|
365
|
+
mode,
|
|
366
|
+
slotMinutes,
|
|
367
|
+
opensAtMinute,
|
|
368
|
+
closesAtMinute,
|
|
369
|
+
busy: intervals,
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
return { kind: "availability", from, to, resources: parsed };
|
|
373
|
+
}
|
|
374
|
+
function parsePictureBody(value) {
|
|
375
|
+
const picture = parsePictureRef(value["picture"]);
|
|
376
|
+
const caption = value["caption"];
|
|
377
|
+
if (picture === undefined || !isTextOrNull(caption, LIMITS.caption)) {
|
|
378
|
+
return null;
|
|
379
|
+
}
|
|
380
|
+
return { kind: "picture", picture, caption };
|
|
381
|
+
}
|
|
382
|
+
function parseText(value) {
|
|
383
|
+
const { heading, body } = value;
|
|
384
|
+
if (typeof heading !== "string" || !isTextList(body, LIMITS.addonTextBody)) {
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
return { kind: "text", heading, body: [...body] };
|
|
388
|
+
}
|
|
389
|
+
function parseTable(value) {
|
|
390
|
+
const { heading, columns, rows } = value;
|
|
391
|
+
if (typeof heading !== "string" ||
|
|
392
|
+
!isStringList(columns) ||
|
|
393
|
+
columns.length === 0 ||
|
|
394
|
+
columns.length > LIMITS.tableColumns ||
|
|
395
|
+
!Array.isArray(rows) ||
|
|
396
|
+
rows.length > LIMITS.tableRows ||
|
|
397
|
+
!rows.every((row) => isStringList(row) && row.length === columns.length)) {
|
|
398
|
+
return null;
|
|
399
|
+
}
|
|
400
|
+
return {
|
|
401
|
+
kind: "table",
|
|
402
|
+
heading,
|
|
403
|
+
columns: [...columns],
|
|
404
|
+
rows: rows.map((row) => [...row]),
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
function parseDoors(value) {
|
|
408
|
+
const { heading, doors } = value;
|
|
409
|
+
if (typeof heading !== "string" ||
|
|
410
|
+
!Array.isArray(doors) ||
|
|
411
|
+
doors.length > LIMITS.doors) {
|
|
412
|
+
return null;
|
|
413
|
+
}
|
|
414
|
+
const parsed = [];
|
|
415
|
+
for (const door of doors) {
|
|
416
|
+
if (!isRecord(door)) {
|
|
417
|
+
return null;
|
|
418
|
+
}
|
|
419
|
+
const { floor, apartment, names } = door;
|
|
420
|
+
if (!(floor === null ||
|
|
421
|
+
(typeof floor === "number" && Number.isInteger(floor)))) {
|
|
422
|
+
return null;
|
|
423
|
+
}
|
|
424
|
+
if (typeof apartment !== "string" || !isStringList(names)) {
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
parsed.push({ floor, apartment, names: [...names] });
|
|
428
|
+
}
|
|
429
|
+
return { kind: "doors", heading, doors: parsed };
|
|
430
|
+
}
|
|
431
|
+
/** The picture, or undefined when it is not one. */
|
|
432
|
+
function parsePictureRef(value) {
|
|
433
|
+
if (!isRecord(value)) {
|
|
434
|
+
return undefined;
|
|
435
|
+
}
|
|
436
|
+
const { mediaFileId, contentType, byteSize, version, alt } = value;
|
|
437
|
+
if (typeof mediaFileId !== "string" ||
|
|
438
|
+
mediaFileId.length === 0 ||
|
|
439
|
+
typeof contentType !== "string" ||
|
|
440
|
+
!isCount(byteSize) ||
|
|
441
|
+
typeof version !== "string" ||
|
|
442
|
+
!isText(alt, LIMITS.alt)) {
|
|
443
|
+
return undefined;
|
|
444
|
+
}
|
|
445
|
+
return { mediaFileId, contentType, byteSize, version, alt };
|
|
446
|
+
}
|
|
447
|
+
function isRecord(value) {
|
|
448
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
449
|
+
}
|
|
450
|
+
const INSTANT = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/;
|
|
451
|
+
/** Whether a value is an instant as the contract writes one, and a real one. */
|
|
452
|
+
function isInstant(value) {
|
|
453
|
+
if (typeof value !== "string" || !INSTANT.test(value)) {
|
|
454
|
+
return false;
|
|
455
|
+
}
|
|
456
|
+
const time = Date.parse(value);
|
|
457
|
+
return (Number.isFinite(time) &&
|
|
458
|
+
new Date(time).toISOString() === `${value.slice(0, -1)}.000Z`);
|
|
459
|
+
}
|
|
460
|
+
/** The number of characters (code points) in a text. */
|
|
461
|
+
function characters(text) {
|
|
462
|
+
let count = 0;
|
|
463
|
+
for (const _ of text) {
|
|
464
|
+
count += 1;
|
|
465
|
+
}
|
|
466
|
+
return count;
|
|
467
|
+
}
|
|
468
|
+
function isText(value, max) {
|
|
469
|
+
return typeof value === "string" && characters(value) <= max;
|
|
470
|
+
}
|
|
471
|
+
function isTextOrNull(value, max) {
|
|
472
|
+
return value === null || isText(value, max);
|
|
473
|
+
}
|
|
474
|
+
function isStringList(value) {
|
|
475
|
+
return (Array.isArray(value) && value.every((item) => typeof item === "string"));
|
|
476
|
+
}
|
|
477
|
+
/** A list of texts at most `max` characters together. */
|
|
478
|
+
function isTextList(value, max) {
|
|
479
|
+
if (!isStringList(value)) {
|
|
480
|
+
return false;
|
|
481
|
+
}
|
|
482
|
+
let total = 0;
|
|
483
|
+
for (const item of value) {
|
|
484
|
+
total += characters(item);
|
|
485
|
+
}
|
|
486
|
+
return total <= max;
|
|
487
|
+
}
|
|
488
|
+
function isCount(value) {
|
|
489
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
490
|
+
}
|
|
491
|
+
function isMinutesOrNull(value) {
|
|
492
|
+
return value === null || (isCount(value) && value <= MINUTES_IN_A_DAY);
|
|
493
|
+
}
|
|
494
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|