@media-quest/engine 0.0.15 → 0.0.17
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/package.json +1 -1
- package/src/Delement/button-click-action.ts +24 -0
- package/src/engine/SchemaDto.ts +2 -2
- package/src/engine/SchemaEngine.ts +45 -26
- package/src/engine/dplayer.spec.ts +6 -27
- package/src/engine/dplayer.ts +41 -44
- package/src/engine/history-que.spec.ts +11 -3
- package/src/engine/history-que.ts +0 -17
- package/src/engine/next-que.spec.ts +1 -0
- package/src/engine/next-que.ts +8 -0
- package/src/engine/page-que-ruleengine-action.ts +6 -0
- package/src/events/mq-events.ts +63 -0
- package/src/page/Page.ts +27 -5
- package/src/page/page-result.ts +3 -3
- package/src/page/task-manager.ts +45 -8
- package/src/page/task.ts +3 -0
- package/src/public-api.ts +1 -1
- package/src/rules/__test__/rule-engine.spec.ts +5 -12
- package/tsconfig.json +2 -0
- package/src/engine/DCommand.ts +0 -21
- package/tsconfig.tsbuildinfo +0 -1
package/package.json
CHANGED
|
@@ -9,3 +9,27 @@ export type ButtonClickAction =
|
|
|
9
9
|
| { kind: "submit-fact"; fact: Fact }
|
|
10
10
|
| { kind: "next-page" }
|
|
11
11
|
| { kind: "submit-form" };
|
|
12
|
+
|
|
13
|
+
export const ButtonClickAction = {
|
|
14
|
+
describe: (a: ButtonClickAction): string => {
|
|
15
|
+
switch (a.kind) {
|
|
16
|
+
case "next-page":
|
|
17
|
+
return "go to next page";
|
|
18
|
+
case "play-video":
|
|
19
|
+
return "VideoId = " + a.task.videoId;
|
|
20
|
+
case "play-audio":
|
|
21
|
+
return "AudioId = " + a.task.audioId;
|
|
22
|
+
case "pause-video":
|
|
23
|
+
return "";
|
|
24
|
+
case "pause-audio":
|
|
25
|
+
return "";
|
|
26
|
+
case "submit-fact":
|
|
27
|
+
return a.fact.label + " = " + a.fact.value;
|
|
28
|
+
case "submit-form":
|
|
29
|
+
return "";
|
|
30
|
+
default:
|
|
31
|
+
const _exhaustiveCheck: never = a;
|
|
32
|
+
return "";
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
package/src/engine/SchemaDto.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Rule } from "../rules/rule";
|
|
2
2
|
import { Fact } from "../rules/fact";
|
|
3
|
-
import {
|
|
3
|
+
import { RuleActionPageQue } from "./page-que-ruleengine-action";
|
|
4
4
|
import { SchemaID } from "../utils/ID";
|
|
5
5
|
import { PageDto } from "../page/Page";
|
|
6
6
|
|
|
7
|
-
export type PageQueRules = Rule<
|
|
7
|
+
export type PageQueRules = Rule<RuleActionPageQue, never>;
|
|
8
8
|
|
|
9
9
|
export interface PageSequenceDto {
|
|
10
10
|
readonly id: string;
|
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
import { SchemaDto } from "./SchemaDto";
|
|
2
2
|
import { DPlayer } from "./dplayer";
|
|
3
3
|
import { ScaleService } from "./scale";
|
|
4
|
-
// import { DEvent } from "../events/DEvents";
|
|
5
4
|
import { Page } from "../page/Page";
|
|
6
5
|
import { TaskManager } from "../page/task-manager";
|
|
7
|
-
// import { AnsweredQuestion, PageHistory } from "./history-que";
|
|
8
6
|
import { PageResult } from "../page/page-result";
|
|
9
|
-
|
|
7
|
+
import { Fact } from "../rules/fact";
|
|
8
|
+
import { MqEvent } from "../events/mq-events";
|
|
10
9
|
export interface EngineLogger {
|
|
10
|
+
info(message: string): void;
|
|
11
11
|
error(message: string): void;
|
|
12
12
|
warn(message: string): void;
|
|
13
|
-
// appEvent(event: DEvent): void;
|
|
14
13
|
}
|
|
15
14
|
|
|
15
|
+
const voidLogger: EngineLogger = {
|
|
16
|
+
info: (message: string) => {},
|
|
17
|
+
error: (message: string) => {},
|
|
18
|
+
warn: (message: string) => {},
|
|
19
|
+
};
|
|
20
|
+
|
|
16
21
|
export interface SchemaResult {
|
|
17
|
-
readonly
|
|
18
|
-
readonly
|
|
22
|
+
readonly schemaId: string;
|
|
23
|
+
readonly pagesLeft: number;
|
|
24
|
+
readonly predefinedFacts: ReadonlyArray<Fact>;
|
|
25
|
+
readonly eventLog: ReadonlyArray<MqEvent>;
|
|
26
|
+
readonly answers: ReadonlyArray<Fact>;
|
|
19
27
|
}
|
|
28
|
+
|
|
20
29
|
export interface ISchemaEngine {
|
|
21
|
-
|
|
22
|
-
// onCommandOrEvent(item: DEvent | DCommand): void;
|
|
23
|
-
setSchema(schema: SchemaDto): void;
|
|
30
|
+
onProgress(handler: (result: SchemaResult) => void): void;
|
|
24
31
|
onFatalError(handler: (error: { message: string }) => void): void;
|
|
32
|
+
setLogger(logger: EngineLogger): void;
|
|
25
33
|
}
|
|
26
34
|
|
|
27
35
|
export class SchemaEngine implements ISchemaEngine {
|
|
@@ -29,12 +37,12 @@ export class SchemaEngine implements ISchemaEngine {
|
|
|
29
37
|
private readonly scale: ScaleService;
|
|
30
38
|
private readonly hostElement: HTMLDivElement;
|
|
31
39
|
private readonly taskManager: TaskManager;
|
|
40
|
+
private logger: EngineLogger = voidLogger;
|
|
32
41
|
private readonly uiLayer: HTMLDivElement = document.createElement("div");
|
|
33
42
|
private readonly mediaLayer: HTMLDivElement = document.createElement("div");
|
|
34
43
|
private player: DPlayer;
|
|
35
44
|
private currentPage: Page | false = false;
|
|
36
45
|
private readonly tickerRef: number | false = false;
|
|
37
|
-
|
|
38
46
|
constructor(
|
|
39
47
|
hostEl: HTMLDivElement,
|
|
40
48
|
private readonly height: number,
|
|
@@ -55,17 +63,35 @@ export class SchemaEngine implements ISchemaEngine {
|
|
|
55
63
|
containerWidth: width,
|
|
56
64
|
containerHeight: height,
|
|
57
65
|
});
|
|
66
|
+
this.logger.info(this.TAG + "Scale: " + JSON.stringify(this.scale));
|
|
58
67
|
this.player = new DPlayer(this.schema);
|
|
59
68
|
this.taskManager = new TaskManager(this.mediaLayer, this.scale, (error) => {
|
|
60
69
|
console.log(error);
|
|
61
70
|
});
|
|
71
|
+
|
|
62
72
|
this.styleSelf();
|
|
63
73
|
this.handlePageCompleted = this.handlePageCompleted.bind(this);
|
|
64
74
|
this.nextPage();
|
|
65
75
|
}
|
|
66
76
|
|
|
67
77
|
private handlePageCompleted(result: PageResult) {
|
|
78
|
+
// 1 Save data from last page
|
|
68
79
|
this.player.saveHistory(result);
|
|
80
|
+
|
|
81
|
+
// 2 Emit progress
|
|
82
|
+
const currentResults = this.player.getResults();
|
|
83
|
+
const a: SchemaResult = {
|
|
84
|
+
schemaId: this.schema.id,
|
|
85
|
+
pagesLeft: currentResults.pagesLeft,
|
|
86
|
+
predefinedFacts: currentResults.predefinedFacts,
|
|
87
|
+
eventLog: currentResults.eventLog,
|
|
88
|
+
answers: currentResults.answerFacts,
|
|
89
|
+
};
|
|
90
|
+
if (this._onProgress) {
|
|
91
|
+
this._onProgress(a);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// 3. Next page
|
|
69
95
|
this.nextPage();
|
|
70
96
|
}
|
|
71
97
|
|
|
@@ -91,15 +117,13 @@ export class SchemaEngine implements ISchemaEngine {
|
|
|
91
117
|
const nextPage = this.player.getNextPage();
|
|
92
118
|
if (this.currentPage) {
|
|
93
119
|
this.currentPage.destroy();
|
|
94
|
-
|
|
95
120
|
this.uiLayer.innerHTML = "";
|
|
96
121
|
}
|
|
97
122
|
|
|
98
123
|
if (!nextPage) {
|
|
99
|
-
// console.log("NO MORE PAGES");
|
|
100
124
|
// TODO FIGURE OUT WHAQT TO DO AT END OF TEST!! Start over??
|
|
101
125
|
this.player = new DPlayer(this.schema);
|
|
102
|
-
if (this.player.
|
|
126
|
+
if (this.player.pagesLeft > 0) {
|
|
103
127
|
this.nextPage();
|
|
104
128
|
}
|
|
105
129
|
return false;
|
|
@@ -108,12 +132,7 @@ export class SchemaEngine implements ISchemaEngine {
|
|
|
108
132
|
const newPage = new Page(nextPage, this.taskManager, this.scale, (result) => {
|
|
109
133
|
this.handlePageCompleted(result);
|
|
110
134
|
});
|
|
111
|
-
|
|
112
|
-
// console.log("APPENDING PAGE");
|
|
113
|
-
|
|
114
135
|
this.currentPage = newPage;
|
|
115
|
-
// this.uiContainer.innerHTML = "";
|
|
116
|
-
|
|
117
136
|
newPage.appendYourself(this.uiLayer);
|
|
118
137
|
return true;
|
|
119
138
|
}
|
|
@@ -124,17 +143,17 @@ export class SchemaEngine implements ISchemaEngine {
|
|
|
124
143
|
this.uiLayer.innerHTML = "";
|
|
125
144
|
}
|
|
126
145
|
}
|
|
127
|
-
|
|
128
|
-
|
|
146
|
+
|
|
147
|
+
private _onProgress: ((result: SchemaResult) => void) | false = false;
|
|
148
|
+
onProgress(handler: (result: SchemaResult) => void) {
|
|
149
|
+
this._onProgress = handler;
|
|
129
150
|
}
|
|
130
151
|
|
|
152
|
+
private _onFatalError: ((error: { message: string }) => void) | false = false;
|
|
131
153
|
onFatalError(handler: (error: { message: string }) => void): void {
|
|
132
|
-
|
|
154
|
+
this._onFatalError = handler;
|
|
133
155
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
setSchema(schema: SchemaDto): void {
|
|
138
|
-
console.log(schema);
|
|
156
|
+
setLogger(logger: EngineLogger) {
|
|
157
|
+
this.logger = logger;
|
|
139
158
|
}
|
|
140
159
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { DPlayer, DPlayerData } from "./dplayer";
|
|
2
2
|
import { PageSequenceDto } from "./SchemaDto";
|
|
3
3
|
import { Rule } from "../rules/rule";
|
|
4
|
-
// import { PageHistory } from "./history-que";
|
|
5
4
|
import { DTimestamp } from "../common/DTimestamp";
|
|
6
|
-
import {
|
|
5
|
+
import { RuleActionPageQue } from "./page-que-ruleengine-action";
|
|
7
6
|
import { PageDto } from "../page/Page";
|
|
8
7
|
import { PageResult } from "../page/page-result";
|
|
9
8
|
|
|
@@ -32,7 +31,7 @@ const seq1: PageSequenceDto = {
|
|
|
32
31
|
const data = (
|
|
33
32
|
pages: PageDto[],
|
|
34
33
|
pageSequences: PageSequenceDto[] = [],
|
|
35
|
-
rules: Rule<
|
|
34
|
+
rules: Rule<RuleActionPageQue, never>[] = [],
|
|
36
35
|
): DPlayerData => ({ pages: pages, pageSequences, rules });
|
|
37
36
|
// const seq = (pages: PageDto[], rules: Rule[]) => {};
|
|
38
37
|
beforeEach(() => {
|
|
@@ -58,33 +57,13 @@ describe("DPlayer", () => {
|
|
|
58
57
|
|
|
59
58
|
expect(player.getNextPage()).toBe(p1);
|
|
60
59
|
expect(player.getNextPage()).toBe(p2);
|
|
61
|
-
player.
|
|
62
|
-
kind: "PAGE_QUE_GO_TO_SEQUENCE_COMMAND",
|
|
63
|
-
target: "PAGE_QUE",
|
|
64
|
-
targetId: "PAGE_QUE",
|
|
65
|
-
payload: {
|
|
66
|
-
sequenceId: seq1.id,
|
|
67
|
-
},
|
|
68
|
-
});
|
|
60
|
+
player.insertSequence(seq1.id);
|
|
69
61
|
expect(player.getNextPage()).toBe(Seq1.p10);
|
|
70
62
|
expect(player.getNextPage()).toBe(Seq1.p11);
|
|
71
63
|
expect(player.getNextPage()).toBe(Seq1.p12);
|
|
72
64
|
expect(player.getNextPage()).toBe(p3);
|
|
73
65
|
});
|
|
74
66
|
|
|
75
|
-
it("Can jump forward to a pageId", () => {
|
|
76
|
-
const player = new DPlayer(data(all));
|
|
77
|
-
|
|
78
|
-
expect(player.getNextPage()).toBe(p1);
|
|
79
|
-
player.handleNavigationCommand({
|
|
80
|
-
kind: "PAGE_QUE_GO_TO_PAGE_COMMAND",
|
|
81
|
-
target: "PAGE_QUE",
|
|
82
|
-
targetId: "PAGE_QUE",
|
|
83
|
-
payload: { pageId: p4.id },
|
|
84
|
-
});
|
|
85
|
-
expect(player.getNextPage()).toBe(p4);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
67
|
it("Save history", () => {
|
|
89
68
|
const player = new DPlayer(data(all));
|
|
90
69
|
|
|
@@ -92,8 +71,8 @@ describe("DPlayer", () => {
|
|
|
92
71
|
|
|
93
72
|
const result: PageResult = {
|
|
94
73
|
pageId: curr.id,
|
|
95
|
-
|
|
96
|
-
|
|
74
|
+
pagePrefix: curr.id,
|
|
75
|
+
eventLog: [],
|
|
97
76
|
pageTime: DTimestamp.diff(DTimestamp.now(), DTimestamp.now()),
|
|
98
77
|
collectedFacts: [
|
|
99
78
|
{
|
|
@@ -107,6 +86,6 @@ describe("DPlayer", () => {
|
|
|
107
86
|
};
|
|
108
87
|
player.saveHistory(result);
|
|
109
88
|
expect(player.getNextPage()).toBe(p2);
|
|
110
|
-
expect(player.getResults().length).toBe(1);
|
|
89
|
+
expect(player.getResults().answerFacts.length).toBe(1);
|
|
111
90
|
});
|
|
112
91
|
});
|
package/src/engine/dplayer.ts
CHANGED
|
@@ -2,86 +2,76 @@ import { HistoryQue } from "./history-que";
|
|
|
2
2
|
import { RuleEngine } from "../rules/rule-engine";
|
|
3
3
|
import { NextQue } from "./next-que";
|
|
4
4
|
import { SchemaDto } from "./SchemaDto";
|
|
5
|
-
import {
|
|
6
|
-
import { DUtil } from "../utils/DUtil";
|
|
5
|
+
import { RuleActionPageQue } from "./page-que-ruleengine-action";
|
|
7
6
|
import { PageDto } from "../page/Page";
|
|
8
7
|
import { PageResult } from "../page/page-result";
|
|
9
8
|
import { Fact } from "../rules/fact";
|
|
9
|
+
import { MqEvent } from "../events/mq-events";
|
|
10
10
|
|
|
11
|
-
export type DPlayerData = Pick<SchemaDto, "pages" | "pageSequences" | "rules">;
|
|
11
|
+
export type DPlayerData = Pick<SchemaDto, "pages" | "pageSequences" | "rules" | "predefinedFacts">;
|
|
12
12
|
export class DPlayer {
|
|
13
|
+
private readonly eventLog: Array<MqEvent> = [];
|
|
13
14
|
private history = new HistoryQue();
|
|
14
|
-
private ruleEngine = new RuleEngine<
|
|
15
|
+
private ruleEngine = new RuleEngine<RuleActionPageQue, never>();
|
|
15
16
|
private nextQue = new NextQue();
|
|
16
17
|
private data: DPlayerData;
|
|
18
|
+
private readonly predefinedFacts: ReadonlyArray<Fact>;
|
|
17
19
|
|
|
18
20
|
constructor(data: DPlayerData) {
|
|
19
21
|
this.data = data;
|
|
20
22
|
const pages = data.pages ?? [];
|
|
23
|
+
this.predefinedFacts = data.predefinedFacts ? [...data.predefinedFacts] : [];
|
|
21
24
|
this.nextQue.resetQue(pages);
|
|
22
25
|
}
|
|
23
26
|
|
|
27
|
+
saveEvent(event: MqEvent) {
|
|
28
|
+
this.eventLog.push(event);
|
|
29
|
+
}
|
|
30
|
+
|
|
24
31
|
saveHistory(pageHistory: PageResult) {
|
|
25
32
|
// console.log("SAVE HISTORY", pageHistory);
|
|
26
33
|
this.history.addToHistory(pageHistory);
|
|
27
|
-
|
|
34
|
+
this.eventLog.push(...pageHistory.eventLog);
|
|
35
|
+
// Evaluate rules
|
|
36
|
+
const userGeneratedFact = this.history.getFacts();
|
|
37
|
+
const predefinedFacts = this.predefinedFacts;
|
|
38
|
+
const facts = [...userGeneratedFact, ...predefinedFacts];
|
|
28
39
|
const result = this.ruleEngine.solveAll(this.data.rules, facts);
|
|
40
|
+
|
|
29
41
|
const matchingRules = result.matching;
|
|
30
42
|
const actions = matchingRules.map((r) => r.actionList).flat(1);
|
|
43
|
+
// Execute actions
|
|
31
44
|
actions.forEach((a) => {
|
|
32
45
|
// console.log(a.payload);
|
|
33
46
|
switch (a.kind) {
|
|
34
|
-
case "
|
|
35
|
-
this.nextQue.jumpToPageById(a.
|
|
47
|
+
case "jumpToPage":
|
|
48
|
+
this.nextQue.jumpToPageById(a.pageId);
|
|
36
49
|
break;
|
|
37
|
-
case "
|
|
38
|
-
this.nextQue.removeByPageId(a.
|
|
50
|
+
case "excludeByPageId":
|
|
51
|
+
this.nextQue.removeByPageId(a.pageIds);
|
|
39
52
|
break;
|
|
40
|
-
case "
|
|
41
|
-
this.nextQue.removeByTag(a.
|
|
53
|
+
case "excludeByTag":
|
|
54
|
+
this.nextQue.removeByTag(a.tagIds);
|
|
42
55
|
break;
|
|
43
56
|
default:
|
|
44
57
|
console.log("UNKNOWN ACTION", a);
|
|
45
58
|
const check: never = a;
|
|
46
59
|
}
|
|
47
60
|
});
|
|
48
|
-
// console.log(actions);
|
|
49
61
|
}
|
|
50
62
|
|
|
51
|
-
getResults()
|
|
52
|
-
|
|
63
|
+
getResults() {
|
|
64
|
+
const pagesLeft = this.nextQue.size;
|
|
65
|
+
const answerFacts = this.history.getFacts();
|
|
66
|
+
const predefinedFacts = this.predefinedFacts;
|
|
67
|
+
const eventLog = [...this.eventLog];
|
|
68
|
+
return { answerFacts, predefinedFacts, eventLog, pagesLeft };
|
|
53
69
|
}
|
|
54
70
|
|
|
55
|
-
|
|
56
|
-
this.
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
handleNavigationCommand(command: NavigationCommand) {
|
|
60
|
-
switch (command.kind) {
|
|
61
|
-
case "PAGE_QUE_GO_TO_PAGE_COMMAND":
|
|
62
|
-
this.goToPageById(command.payload.pageId);
|
|
63
|
-
break;
|
|
64
|
-
case "PAGE_QUE_GO_TO_SEQUENCE_COMMAND":
|
|
65
|
-
this.insertSequenceById(command.payload.sequenceId);
|
|
66
|
-
break;
|
|
67
|
-
|
|
68
|
-
default:
|
|
69
|
-
DUtil.neverCheck(command);
|
|
70
|
-
}
|
|
71
|
+
insertSequence(sequenceId: string) {
|
|
72
|
+
this.insertSequenceById(sequenceId);
|
|
71
73
|
}
|
|
72
74
|
|
|
73
|
-
// getNextPage():
|
|
74
|
-
// | { kind: "first-page"; readonly page: PageDto }
|
|
75
|
-
// | { kind: "next-page"; readonly page: PageDto }
|
|
76
|
-
// | { kind: "no-more-pages" } {
|
|
77
|
-
// const next = this.nextQue.pop();
|
|
78
|
-
// const a = this.nextQue.
|
|
79
|
-
// if (next) {
|
|
80
|
-
// return { kind: "next-page", page: next };
|
|
81
|
-
// }
|
|
82
|
-
// return { kind: "no-more-pages" };
|
|
83
|
-
// }
|
|
84
|
-
|
|
85
75
|
getNextPage(): PageDto | false {
|
|
86
76
|
const next = this.nextQue.pop();
|
|
87
77
|
return next ?? false;
|
|
@@ -98,9 +88,16 @@ export class DPlayer {
|
|
|
98
88
|
}
|
|
99
89
|
|
|
100
90
|
/**
|
|
101
|
-
* Total number of pages
|
|
91
|
+
* Total number of pages left in que
|
|
102
92
|
*/
|
|
103
|
-
get
|
|
93
|
+
get pagesLeft(): number {
|
|
104
94
|
return this.nextQue.pageCount;
|
|
105
95
|
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Total number of pages in test
|
|
99
|
+
*/
|
|
100
|
+
get totalPageCount(): number {
|
|
101
|
+
return this.data.pages.length;
|
|
102
|
+
}
|
|
106
103
|
}
|
|
@@ -5,7 +5,15 @@ import { PageDto } from "../page/Page";
|
|
|
5
5
|
import { PageResult } from "../page/page-result";
|
|
6
6
|
|
|
7
7
|
const p = (id: number): PageDto => {
|
|
8
|
-
return {
|
|
8
|
+
return {
|
|
9
|
+
id: PageID.create(),
|
|
10
|
+
prefix: "prefix" + id,
|
|
11
|
+
components: [],
|
|
12
|
+
initialTasks: [],
|
|
13
|
+
staticElements: [],
|
|
14
|
+
background: "",
|
|
15
|
+
tags: [],
|
|
16
|
+
};
|
|
9
17
|
};
|
|
10
18
|
|
|
11
19
|
const pageResult = (id: number, value: number): PageResult => {
|
|
@@ -15,8 +23,8 @@ const pageResult = (id: number, value: number): PageResult => {
|
|
|
15
23
|
|
|
16
24
|
const result: PageResult = {
|
|
17
25
|
pageId: "_dummyId" + id,
|
|
18
|
-
|
|
19
|
-
|
|
26
|
+
pagePrefix: "prefix" + id,
|
|
27
|
+
eventLog: [],
|
|
20
28
|
pageTime,
|
|
21
29
|
collectedFacts: [
|
|
22
30
|
{
|
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
import { Fact } from "../rules/fact";
|
|
2
|
-
import { DTimestamp } from "../common/DTimestamp";
|
|
3
2
|
import { PageResult } from "../page/page-result";
|
|
4
3
|
|
|
5
|
-
// export interface AnsweredQuestion {
|
|
6
|
-
// readonly timestamp: DTimestamp;
|
|
7
|
-
// readonly fact: Fact;
|
|
8
|
-
// }
|
|
9
|
-
|
|
10
|
-
// export namespace AnsweredQuestion {
|
|
11
|
-
// export const eq = (a: AnsweredQuestion, b: AnsweredQuestion): boolean => {
|
|
12
|
-
// return a.fact === b.fact;
|
|
13
|
-
// };
|
|
14
|
-
// }
|
|
15
|
-
|
|
16
|
-
// export interface PageHistory {
|
|
17
|
-
// readonly pageId: string;
|
|
18
|
-
// readonly answeredQuestions: AnsweredQuestion[];
|
|
19
|
-
// }
|
|
20
|
-
|
|
21
4
|
export class HistoryQue {
|
|
22
5
|
private history: PageResult[] = [];
|
|
23
6
|
|
package/src/engine/next-que.ts
CHANGED
|
@@ -84,9 +84,17 @@ export class NextQue {
|
|
|
84
84
|
get isEmpty(): boolean {
|
|
85
85
|
return this.remaining.length === 0;
|
|
86
86
|
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Total number of pages left in que
|
|
90
|
+
*/
|
|
87
91
|
get size(): number {
|
|
88
92
|
return this.remaining.length;
|
|
89
93
|
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Total number of pages in test
|
|
97
|
+
*/
|
|
90
98
|
get pageCount(): number {
|
|
91
99
|
return this.originalOrder.length;
|
|
92
100
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { DTimestamp } from "../common/DTimestamp";
|
|
2
|
+
|
|
3
|
+
interface _MqEvent<K extends string, P extends object> {
|
|
4
|
+
readonly kind: K;
|
|
5
|
+
readonly timestamp: DTimestamp;
|
|
6
|
+
readonly payload: P;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type MqEventEngineStart = _MqEvent<
|
|
10
|
+
"engine-start",
|
|
11
|
+
{
|
|
12
|
+
readonly schemaId: string;
|
|
13
|
+
readonly schemaPrefix: string;
|
|
14
|
+
}
|
|
15
|
+
>;
|
|
16
|
+
export interface MqEventPageEnter
|
|
17
|
+
extends _MqEvent<"page-enter", { readonly pageId: string; readonly pagePrefix: string }> {}
|
|
18
|
+
export interface MqEventPageLeave
|
|
19
|
+
extends _MqEvent<"page-leave", { readonly pageId: string; readonly pagePrefix: string }> {}
|
|
20
|
+
|
|
21
|
+
export type MqEventUserClicked = _MqEvent<
|
|
22
|
+
"user-clicked",
|
|
23
|
+
{ readonly pageId: string; pagePrefix: string; action: string; descriptions: string }
|
|
24
|
+
>;
|
|
25
|
+
|
|
26
|
+
export type MqEvent = MqEventPageEnter | MqEventPageLeave | MqEventEngineStart | MqEventUserClicked;
|
|
27
|
+
|
|
28
|
+
export const MqEvent = {
|
|
29
|
+
engineStart(schemaId: string, schemaPrefix: string): MqEventEngineStart {
|
|
30
|
+
return {
|
|
31
|
+
kind: "engine-start",
|
|
32
|
+
timestamp: DTimestamp.now(),
|
|
33
|
+
payload: { schemaId, schemaPrefix },
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
pageEnter(pageId: string, pagePrefix: string): MqEventPageEnter {
|
|
37
|
+
return {
|
|
38
|
+
kind: "page-enter",
|
|
39
|
+
timestamp: DTimestamp.now(),
|
|
40
|
+
payload: { pageId, pagePrefix },
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
pageLeave(pageId: string, pagePrefix: string): MqEventPageLeave {
|
|
44
|
+
return {
|
|
45
|
+
kind: "page-leave",
|
|
46
|
+
timestamp: DTimestamp.now(),
|
|
47
|
+
payload: { pageId, pagePrefix },
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
userClicked(data: {
|
|
51
|
+
pageId: string;
|
|
52
|
+
pagePrefix: string;
|
|
53
|
+
action: string;
|
|
54
|
+
descriptions: string;
|
|
55
|
+
}): MqEventUserClicked {
|
|
56
|
+
const { pageId, pagePrefix, action, descriptions } = data;
|
|
57
|
+
return {
|
|
58
|
+
kind: "user-clicked",
|
|
59
|
+
timestamp: DTimestamp.now(),
|
|
60
|
+
payload: { pageId, pagePrefix, action, descriptions },
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
} as const;
|
package/src/page/Page.ts
CHANGED
|
@@ -11,6 +11,12 @@ import { Fact } from "../rules/fact";
|
|
|
11
11
|
import { DTimestamp } from "../common/DTimestamp";
|
|
12
12
|
import { PageResult } from "./page-result";
|
|
13
13
|
import { TaskState, TaskStateDiff } from "./task-state";
|
|
14
|
+
import {
|
|
15
|
+
MqEvent,
|
|
16
|
+
MqEventPageEnter,
|
|
17
|
+
MqEventPageLeave,
|
|
18
|
+
MqEventUserClicked,
|
|
19
|
+
} from "../events/mq-events";
|
|
14
20
|
|
|
15
21
|
export interface VideoPlayerDto {
|
|
16
22
|
playUrl: string;
|
|
@@ -19,6 +25,7 @@ export interface VideoPlayerDto {
|
|
|
19
25
|
|
|
20
26
|
export interface PageDto {
|
|
21
27
|
readonly id: string;
|
|
28
|
+
readonly prefix: string;
|
|
22
29
|
readonly tags: string[];
|
|
23
30
|
staticElements: Array<DElementDto>;
|
|
24
31
|
background: string;
|
|
@@ -31,6 +38,7 @@ export const PageDto = {
|
|
|
31
38
|
createDummy: (id: number): PageDto => {
|
|
32
39
|
return {
|
|
33
40
|
id: "id" + id,
|
|
41
|
+
prefix: "prefix" + id,
|
|
34
42
|
tags: [],
|
|
35
43
|
staticElements: [],
|
|
36
44
|
background: "white",
|
|
@@ -57,6 +65,7 @@ export class Page {
|
|
|
57
65
|
private components: PageComponent[] = [];
|
|
58
66
|
private pageEntered: DTimestamp = DTimestamp.now();
|
|
59
67
|
private previousState: TaskState | false = false;
|
|
68
|
+
private eventLog = new Array<MqEvent>();
|
|
60
69
|
|
|
61
70
|
constructor(
|
|
62
71
|
private readonly dto: PageDto,
|
|
@@ -66,8 +75,8 @@ export class Page {
|
|
|
66
75
|
) {
|
|
67
76
|
this.components = dto.components.map((el) => {
|
|
68
77
|
const component = new PageComponent(el, scaleService);
|
|
69
|
-
component.onClick = (
|
|
70
|
-
this.handleButtonAction(
|
|
78
|
+
component.onClick = (action) => {
|
|
79
|
+
this.handleButtonAction(action);
|
|
71
80
|
};
|
|
72
81
|
this.components.push(component);
|
|
73
82
|
|
|
@@ -93,15 +102,26 @@ export class Page {
|
|
|
93
102
|
private createPageResult(facts: Fact[]): PageResult {
|
|
94
103
|
const pageExited = DTimestamp.now();
|
|
95
104
|
const pageTime = DTimestamp.diff(this.pageEntered, pageExited);
|
|
105
|
+
const pageExit = MqEvent.pageLeave(this.dto.id, this.dto.prefix);
|
|
106
|
+
this.eventLog.push(pageExit);
|
|
107
|
+
const eventLog = [...this.eventLog];
|
|
96
108
|
return {
|
|
109
|
+
pagePrefix: this.dto.prefix,
|
|
97
110
|
pageId: this.dto.id,
|
|
98
|
-
|
|
99
|
-
pageExited,
|
|
111
|
+
eventLog,
|
|
100
112
|
pageTime,
|
|
101
113
|
collectedFacts: facts,
|
|
102
114
|
};
|
|
103
115
|
}
|
|
104
116
|
private handleButtonAction(a: ButtonClickAction) {
|
|
117
|
+
const event = MqEvent.userClicked({
|
|
118
|
+
pageId: this.dto.id,
|
|
119
|
+
pagePrefix: this.dto.prefix,
|
|
120
|
+
action: a.kind,
|
|
121
|
+
descriptions: ButtonClickAction.describe(a),
|
|
122
|
+
});
|
|
123
|
+
this.eventLog.push(event);
|
|
124
|
+
|
|
105
125
|
switch (a.kind) {
|
|
106
126
|
case "next-page":
|
|
107
127
|
const nextPageResult = this.createPageResult([]);
|
|
@@ -135,6 +155,9 @@ export class Page {
|
|
|
135
155
|
}
|
|
136
156
|
|
|
137
157
|
appendYourself(parent: HTMLElement) {
|
|
158
|
+
const pageEnterEvent = MqEvent.pageEnter(this.dto.id, this.dto.prefix);
|
|
159
|
+
this.pageEntered = DTimestamp.now();
|
|
160
|
+
this.eventLog.push(pageEnterEvent);
|
|
138
161
|
this.staticElements.forEach((el) => {
|
|
139
162
|
el.appendYourself(parent);
|
|
140
163
|
});
|
|
@@ -145,7 +168,6 @@ export class Page {
|
|
|
145
168
|
}
|
|
146
169
|
|
|
147
170
|
destroy() {
|
|
148
|
-
// console.log("DESTROY PAGE ");
|
|
149
171
|
this.taskManager.clear();
|
|
150
172
|
}
|
|
151
173
|
|
package/src/page/page-result.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DTimestamp } from "../common/DTimestamp";
|
|
2
2
|
import { Fact } from "../rules/fact";
|
|
3
|
+
import { MqEvent } from "../events/mq-events";
|
|
3
4
|
|
|
4
5
|
export interface PageResult {
|
|
5
6
|
readonly pageId: string;
|
|
6
|
-
readonly pagePrefix
|
|
7
|
-
readonly
|
|
8
|
-
readonly pageExited: DTimestamp;
|
|
7
|
+
readonly pagePrefix: string;
|
|
8
|
+
readonly eventLog: ReadonlyArray<MqEvent>;
|
|
9
9
|
readonly pageTime: DTimestamp.Diff;
|
|
10
10
|
readonly collectedFacts: Fact[];
|
|
11
11
|
}
|
package/src/page/task-manager.ts
CHANGED
|
@@ -27,8 +27,10 @@ export class TaskManager {
|
|
|
27
27
|
|
|
28
28
|
this.pauseVideo();
|
|
29
29
|
this.pauseAudio();
|
|
30
|
-
this.videoElement.src
|
|
31
|
-
this.
|
|
30
|
+
this.videoElement.removeAttribute("src");
|
|
31
|
+
this.videoElement.load();
|
|
32
|
+
this.audioElement.removeAttribute("src");
|
|
33
|
+
this.audioElement.load();
|
|
32
34
|
this.taskList = [];
|
|
33
35
|
this.runningTask = false;
|
|
34
36
|
this.hideVideo();
|
|
@@ -74,12 +76,9 @@ export class TaskManager {
|
|
|
74
76
|
}
|
|
75
77
|
};
|
|
76
78
|
this.videoElement.onerror = (e) => {
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
console.log("IS EVENT");
|
|
79
|
+
if (this.videoElement.src !== "") {
|
|
80
|
+
onError("Error playing video: " + this.videoElement.src);
|
|
80
81
|
}
|
|
81
|
-
console.log("VIDEO ERROR WHY ?? ");
|
|
82
|
-
onError("Error playing video." + this.videoElement.src);
|
|
83
82
|
};
|
|
84
83
|
this.audioElement.onended = () => {
|
|
85
84
|
const next = this.getNextTask();
|
|
@@ -94,6 +93,8 @@ export class TaskManager {
|
|
|
94
93
|
execute(task: Task): boolean {
|
|
95
94
|
// console.log("EXECUTE TASK" + task.kind);
|
|
96
95
|
const curr = this.runningTask;
|
|
96
|
+
// TODO Background-task should be handeled as its own kind or something.
|
|
97
|
+
let isBackgroundTask = false;
|
|
97
98
|
|
|
98
99
|
// Check if we should remove the current task.
|
|
99
100
|
if (curr && Task.shallRemoveCurrent(task) && Task.notEq(curr.task, task)) {
|
|
@@ -119,6 +120,7 @@ export class TaskManager {
|
|
|
119
120
|
this.loadVideo(task.url);
|
|
120
121
|
if (task.loop) {
|
|
121
122
|
this.videoElement.loop = true;
|
|
123
|
+
isBackgroundTask = true;
|
|
122
124
|
} else {
|
|
123
125
|
this.videoElement.loop = false;
|
|
124
126
|
}
|
|
@@ -140,6 +142,28 @@ export class TaskManager {
|
|
|
140
142
|
}
|
|
141
143
|
this.audioElement.play();
|
|
142
144
|
}
|
|
145
|
+
|
|
146
|
+
if (task.kind === "delay-task") {
|
|
147
|
+
if (typeof this.delayRef === "number") {
|
|
148
|
+
window.clearTimeout(this.delayRef);
|
|
149
|
+
}
|
|
150
|
+
this.delayRef = window.setTimeout(() => {
|
|
151
|
+
const next = this.getNextTask();
|
|
152
|
+
if (next) {
|
|
153
|
+
this.execute(next);
|
|
154
|
+
} else {
|
|
155
|
+
this.runningTask = false;
|
|
156
|
+
}
|
|
157
|
+
}, task.duration);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (isBackgroundTask) {
|
|
161
|
+
const startNextTask = this.getNextTask();
|
|
162
|
+
if (startNextTask) {
|
|
163
|
+
this.execute(startNextTask);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
143
167
|
return true;
|
|
144
168
|
}
|
|
145
169
|
|
|
@@ -153,6 +177,9 @@ export class TaskManager {
|
|
|
153
177
|
const next = this.getNextTask();
|
|
154
178
|
if (next) {
|
|
155
179
|
this.execute(next);
|
|
180
|
+
if (next.kind === "play-video-task" && next.loop) {
|
|
181
|
+
this.videoElement.loop = true;
|
|
182
|
+
}
|
|
156
183
|
}
|
|
157
184
|
}
|
|
158
185
|
|
|
@@ -164,6 +191,16 @@ export class TaskManager {
|
|
|
164
191
|
this.showVideo();
|
|
165
192
|
}
|
|
166
193
|
|
|
194
|
+
private playVideoElement() {
|
|
195
|
+
this.videoElement
|
|
196
|
+
.play()
|
|
197
|
+
.then(() => {})
|
|
198
|
+
.catch((e) => {
|
|
199
|
+
console.log(e);
|
|
200
|
+
this.onError("Error playing video.");
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
|
|
167
204
|
private showVideo() {
|
|
168
205
|
this.videoElement.style.display = "block";
|
|
169
206
|
}
|
|
@@ -195,7 +232,7 @@ export class TaskManager {
|
|
|
195
232
|
}
|
|
196
233
|
|
|
197
234
|
private getNextTask(): Task | false {
|
|
198
|
-
|
|
235
|
+
console.log("Getting next task.");
|
|
199
236
|
// console.log(this.taskList);
|
|
200
237
|
const first = this.taskList.shift();
|
|
201
238
|
return first ?? false;
|
package/src/page/task.ts
CHANGED
|
@@ -60,10 +60,13 @@ const eq = (a: Task, b: Task) => {
|
|
|
60
60
|
const deleteTaskList = (task: Task) => {
|
|
61
61
|
return task.priority === "replace-all" || task.priority === "replace-queue";
|
|
62
62
|
};
|
|
63
|
+
|
|
63
64
|
const shallRemoveCurrent = (task: Task) => {
|
|
64
65
|
return task.priority === "replace-current" || task.priority === "replace-all";
|
|
65
66
|
};
|
|
67
|
+
|
|
66
68
|
const notEq = (a: Task, b: Task) => !eq(a, b);
|
|
69
|
+
|
|
67
70
|
const is = (task: Task | undefined | false | null | {}): task is Task => {
|
|
68
71
|
if (!task) {
|
|
69
72
|
return false;
|
package/src/public-api.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from "./engine/SchemaEngine";
|
|
2
2
|
export * from "./engine/SchemaDto";
|
|
3
|
-
export * from "./engine/
|
|
3
|
+
export * from "./engine/page-que-ruleengine-action";
|
|
4
4
|
export * from "./rules/rule";
|
|
5
5
|
export * from "./rules/fact";
|
|
6
6
|
export * from "./rules/rule-engine";
|
|
@@ -2,24 +2,17 @@ import { RuleEngine } from "../rule-engine";
|
|
|
2
2
|
import { Rule } from "../rule";
|
|
3
3
|
import { Fact } from "../fact";
|
|
4
4
|
import { Condition } from "../condition";
|
|
5
|
-
import {
|
|
5
|
+
import { RuleActionPageQue } from "../../engine/page-que-ruleengine-action";
|
|
6
6
|
import { PageID } from "../../utils/ID";
|
|
7
7
|
|
|
8
|
-
const excludeById = (ids: PageID[]):
|
|
8
|
+
const excludeById = (ids: PageID[]): RuleActionPageQue => {
|
|
9
9
|
return {
|
|
10
|
-
kind: "
|
|
11
|
-
|
|
12
|
-
targetId: "PAGE_QUE",
|
|
13
|
-
payload: { pageIds: ids },
|
|
10
|
+
kind: "excludeByPageId",
|
|
11
|
+
pageIds: ids,
|
|
14
12
|
};
|
|
15
13
|
};
|
|
16
14
|
|
|
17
|
-
const excludeByTag = (id: string):
|
|
18
|
-
kind: "PAGE_QUE_EXCLUDE_BY_TAG_COMMAND",
|
|
19
|
-
target: "PAGE_QUE",
|
|
20
|
-
targetId: "PAGE_QUE",
|
|
21
|
-
payload: { tagIds: [id] },
|
|
22
|
-
});
|
|
15
|
+
const excludeByTag = (id: string): RuleActionPageQue => ({ kind: "excludeByTag", tagIds: [id] });
|
|
23
16
|
|
|
24
17
|
let engine = new RuleEngine();
|
|
25
18
|
// const x = 'x';
|
package/tsconfig.json
CHANGED
package/src/engine/DCommand.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { PageID } from "../utils/ID";
|
|
2
|
-
|
|
3
|
-
type CommandTarget = "PAGE_QUE";
|
|
4
|
-
type CommandKind = `${Uppercase<CommandTarget>}_${Uppercase<string>}_COMMAND`;
|
|
5
|
-
|
|
6
|
-
export type NavigationCommand =
|
|
7
|
-
// | CommandDto<"PAGE_QUE_NEXT_PAGE_COMMAND", "PAGE_QUE", {}>
|
|
8
|
-
| CommandDto<"PAGE_QUE_GO_TO_SEQUENCE_COMMAND", "PAGE_QUE", { sequenceId: string }>
|
|
9
|
-
| CommandDto<"PAGE_QUE_GO_TO_PAGE_COMMAND", "PAGE_QUE", { pageId: string }>;
|
|
10
|
-
|
|
11
|
-
interface CommandDto<K extends CommandKind, T extends CommandTarget, P> {
|
|
12
|
-
readonly kind: K;
|
|
13
|
-
readonly target: T;
|
|
14
|
-
readonly targetId: T | Omit<string, T>;
|
|
15
|
-
readonly payload: P;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export type PageQueCommand =
|
|
19
|
-
| CommandDto<"PAGE_QUE_EXCLUDE_BY_TAG_COMMAND", "PAGE_QUE", { tagIds: string[] }>
|
|
20
|
-
| CommandDto<"PAGE_QUE_EXCLUDE_BY_PAGE_ID_COMMAND", "PAGE_QUE", { pageIds: Array<PageID> }>
|
|
21
|
-
| CommandDto<"PAGE_QUE_JUMP_TO_PAGE_COMMAND", "PAGE_QUE", { readonly pageId: string }>;
|
package/tsconfig.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/typescript/lib/lib.es2022.full.d.ts","./src/rules/fact.ts","./src/utils/DUtil.ts","./src/rules/condition.ts","./src/rules/rule.ts","./src/utils/ID.ts","./src/engine/DCommand.ts","./src/Delement/css.ts","./src/Delement/DStyle.ts","./src/engine/scale.ts","./src/Delement/DElement.ts","./src/common/DTimestamp.ts","./src/page/task.ts","./src/page/task-state.ts","./src/page/task-manager.ts","./src/Delement/DText.ts","./src/Delement/DImg.ts","./src/Delement/Ddiv.ts","./src/Delement/DElement.dto.ts","./src/Delement/element-factory.ts","./src/Delement/button-click-action.ts","./src/page/page-component.ts","./src/page/page-result.ts","./src/page/Page.ts","./src/engine/SchemaDto.ts","./src/engine/history-que.ts","./src/rules/rule-engine.ts","./src/engine/next-que.ts","./src/engine/dplayer.ts","./src/engine/SchemaEngine.ts","./src/public-api.ts","./src/Delement/DStyle-utils.ts","./src/Delement/css.spec.ts","./src/common/DMaybe.ts","./src/common/DTmestamp.spec.ts","./src/common/result.ts","./src/engine/dplayer.spec.ts","./src/engine/history-que.spec.ts","./src/engine/next-que.spec.ts","./src/engine/scale.spec.ts","./src/page/media-player.ts","./src/rules/__test__/complex-condition.spec.ts","./src/rules/__test__/conditon.spec.ts","./src/rules/__test__/numeric-condition.spec.ts","./src/rules/__test__/rule-engine.spec.ts","./src/rules/__test__/rule-evaluation.spec.ts","./src/rules/__test__/string-condition.spec.ts","./src/utils/ID.spec.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/graceful-fs/index.d.ts","../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../node_modules/@types/istanbul-lib-report/index.d.ts","../../node_modules/@types/istanbul-reports/index.d.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/chalk/index.d.ts","../../node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/parse5/dist/common/html.d.ts","../../node_modules/parse5/dist/common/token.d.ts","../../node_modules/parse5/dist/common/error-codes.d.ts","../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../node_modules/parse5/dist/tokenizer/index.d.ts","../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../node_modules/parse5/dist/parser/index.d.ts","../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../node_modules/parse5/dist/serializer/index.d.ts","../../node_modules/parse5/dist/common/foreign-content.d.ts","../../node_modules/parse5/dist/index.d.ts","../../node_modules/@types/tough-cookie/index.d.ts","../../node_modules/@types/jsdom/base.d.ts","../../node_modules/@types/jsdom/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/yargs-parser/index.d.ts","../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"bc496ef4377553e461efcf7cc5a5a57cf59f9962aea06b5e722d54a36bf66ea1","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"1df2366de6650547b3dc1d7c4147355c0f6b4729c964e3839636fa418982d131",{"version":"36931507c8175a801c2ede547ba09510c86f19b263159131ef5d8579a2ef27bc","signature":"f876c605641f279abe4080b485c32780f9dad3cae6a44a5968aca0c903ff54ae"},{"version":"223bc57c00aea3ee5412e1067a510592f0dad8b19edf5d8c967e67b38c9e1d4f","signature":"1a1b9b86c1b356ab33614af6972359f5564aaa63c508c77ac0c51314fbe2b900"},{"version":"180e039c0a282c8c418ea87ef50d4363a8bb9bc410b08115e4fdde256f093ba6","signature":"e697691cf9f8db5d91d007963fdb653d47d45cfcdc1db3757c0fa5f36f6d473a"},{"version":"141d070af5f1017a0195dec9b14076ef93dab9aab3cc7e0eb7c284e309c24d65","signature":"77dd426bbf22942bd9ae591a5e3fc3f7dbe9e24e068a72bd596defc15ab77815"},{"version":"616b0aa62c4b91cb774487fd0ad853fde82ab8d364a2d45357084077c25d4e0c","signature":"7f67b7e5b2eae2aa7e33858919065293bab9056cce8288c7bc5f2d01c4c6b3b1"},{"version":"33f7f47be9214277835f710d04a17b66f17e8050a807e9acb575a0ba257e578c","signature":"404cbbf53fd903113da6853e7123d39a6f7ff7eda3045736fc8eb429c38c7ebc"},{"version":"e8251d706c8468fd3be461e3504cb7cafb24246ec2253ac232c3eedbd99a100f","signature":"63ab08f0d6202377173f6e6b25309955e2491d90b113c8a25d5f0c24e949df74"},{"version":"c94748016c23cad5f81b23a986d5f32dcb6883eb3c5c4a308bd0383944e72b7f","signature":"b78e9b884fd9baf806580f7bb9dabc2ce29b08532ecc388a33317cb090642875"},{"version":"86a216e2a6066fc0433c2d7715045029da934b633842107563a5c3da3bc313d7","signature":"e8553b2f5e1da3321482fd7da2242da3af6e2bbe910e8fff4be54de83e4b4e65"},{"version":"448068fb01dd1e87a659e3df829a5226f9a9e1a2f8ddac35d67fd75483576504","signature":"9697d4d277a5ff805c19ba8a81f7dbe442affcf4a202f3114b9f386c2229a5f4"},{"version":"7d7b546e891f966ddb80b5d083ab265d32c71055e706855ab8a01c9639c02ca5","signature":"6561daa96e7dd7d81b0599bff00725c7e9e8533d5ded9dfee47ae2978b3eb4c9"},{"version":"54620e5d8787a92d3d787a8cce08e466b076de0b1a331fc3404fe49d0f4cc1c8","signature":"05c9e5e74938ee67e53b0ff0a04957d843d5115a719bd8bcbf11c8b49139d47b"},{"version":"13b9ce5362f91e33eebc027cdc3b726a742cd2b3da9975c0efe9c1100e53cdd3","signature":"9494ff1536f8e3c60f1af038f505e526681ef7dbb49c1754ad8356cb3f30d397"},{"version":"d1882da550cfd4668752bbaa0e8777a711f8760dbf6b853526565990ac53dafa","signature":"54077ef09c24be7c9528bde2a65704ce3583b81bb3b8b5c19219b082d3e3574f"},{"version":"6a0512608b708cad50792da53754ed25ad48feb5721eeb298189eef7cf06aed6","signature":"7379941b98d8ed41947b86ace961babe57cbf5e8c873643fbb01500d566fbd11"},{"version":"309db3d321f53c014df75e6e9fba4cf27f3324c6fdac2ae7f339a0a53d908616","signature":"ce20e6b845c6623c81483476aa05dde24840bb1936f35ef68ae36875eb1b2053"},{"version":"95db28b0965c44096690635bf36bc775c5ec8c0187652d71320edb22661b57aa","signature":"b46d3a3ba8314e2c7a0757c78db2655c0d20f327762affbc7d0af18bd7a02d2f"},{"version":"20023f10a5407d3aba15164e18c0b370334cdb582171a140b914590e746eff0d","signature":"15b142546f53be86a8d8f9593590fe4d6835ba097aca49fe76d8854bc09155f8"},{"version":"47da2987c87da765bf1076e3a6901a3cc0b52ce0215d08ab13972eab125e7c0a","signature":"e3c8d9c3c006bfd0b0c5b98fde14e38d6c9494a1f0cb3b081e2248a1d82b6d75"},{"version":"23b0a7ba9bf7c1df09dc6a4799106237205431d04d962a6366d40d022c88d6d8","signature":"1462c244736f367461fcf107a00048bd493588990f016b0564b33cae1305de90"},{"version":"c3a43045f2627d593efec43c7e1bf4a96a651c859a4601d905dc61df78a842ac","signature":"60367de76c83af25d848112c6dee30e3de02934b35f0fad7f22eacf6d648ca6d"},{"version":"e3c4014ebb5c0c0b2e3a15f94ff709b56aa512be0ba08419510ceeddeab68a08","signature":"6652354f70c00b53e681d738685e6783e7eaee860e26f8ad09ab704c2a9eac1c"},{"version":"900963755852969bb8e940124a6cb95defa1b6bc3bfca91d395eaa4c6c883a33","signature":"8abcc5a1bc910af0396c75d4e657e92ad1e73b5b606e2538dcc148203dbc6a63"},{"version":"b0719a3402563b5c1e9954f1853a2f46c8a410cb9084df9cfde3216dedaa30f4","signature":"7f45afcf634e1a11ea8a59d31caf8f0c1dd7219b843fe12aca39ff9db77c08fa"},{"version":"39714dae0a9a0f96763c286e8da80a833372824210d3af19c6635497ed1ccb56","signature":"859baf2de60dc08965c7fb217162219714a4364229c26a5429a5fe9025f2e914"},{"version":"a525ac31c3f5589407c14cf3b06ee1ce082fb141fbe6e401edbe807f9ff4b711","signature":"d29a105df75e55d76d144a26f7971ff059b56492fb6fb411557d29a37eb23364"},{"version":"ea449944bae793040c8054c85f8d0a030ea1ef17d1dd3b8e5f8ac11d8d9342db","signature":"80f64be8838717790d2c11d28f2c9221c96f99e68b6226ed5c573d8f1c4753e2"},{"version":"52b64b31dcc8faa9fbb1f34ccb78c54ea5b59693cbb5451cb99118d8d5711177","signature":"773ed6ba189ba67d5151d5e2900c9b15db4afc60a432442e7303f5a9eedcc526"},"888eadad04f98b8dd4151eb69853818d5ace645cc3ea6d21caa210d8c591bdcb",{"version":"79132864a6fa41537003fdaa489ab9c94d3d2a1d8aa14f95a86c1c42aac84cd3","signature":"e5bee44181678c32f2d27a1d091ca4c1d9616ac26f66833d73b4a077ce9c1ae8"},{"version":"ebec14c3a0eb4d1ee5b93d3f3362c0814349e7dea48e6a1874712a12e35fed2e","signature":"6a1cba631b89835bf8f8362cb0e49e53922f739501d8740b82d9ab7a4115444d"},{"version":"d20ddc99a8d61430f208ecf1065ee42dd5e7da1428dc7a99d84380552a3c99ea","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"194abfa044a6ec690fd5ee04f7886538cb74581c3207db3aa88edb56906fd37c","signature":"b04d80601628d0ba08cce1e2a204953a87f8ec315b2a00b0615271bfed5c8a24"},{"version":"5763f83e354241493f89be6cc7fc38669dcd4f8cfb9b91972f2dfe55e3584712","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"25c25a229f7eac668a8d853cc6d662de21030058f49156eb9735edc7601f202b","signature":"d8f51a5218cce768dfc52206cf2e81b79538bfe8cbf5cf6728fadbc91e6f5b8e"},{"version":"ce2e476c9dc1b21cd55c480d89a722d1b890b509b6d30e26f83b82a7a2771f0a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c9ad1a3fe03df96a35213b0862c77965c71c24a3f5665bbb307fd60dee1dd18a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"b62e947ab54f7880bfbdf1ce2c4866d662d08c2a0108c5eb1d2a1b3f1ecc0874","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"0eae4e60b94e609ce9dac80d4cc29be4d6909a762337f18ed2c22180c77080ac","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"acb3319e98c76435495c52397d454e837ec374f1249216653c504460773998f6","signature":"cd8c81ef492bf04266c7543d94040326a548b24525822e1ee7dcb03367f4a8d6"},{"version":"80e72b94cff981708983c1fbbe5f8f09569006738b92380f3a34b9bee57fcbdd","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"9c01e8c4f7e02804ee6410f35292b369e18464539a72074a9ffa36087b617302","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fa82e158eaf54b572bf3a7efa9f5e6d73e50d9a60776bede510166aeb44539f7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c04cd79ab0bd3c0c0fb1775adcb029195a476b869f668530f0ef00b1b817ba85","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"e4e877ec9d648dd8900c33a8d390d2e2776a7dfd0cba25c2c025cab418939606","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"99cfa83e08b54f9613a8800b803b46e9ab6b5a591ade2009872a8ceab9ae3ff4","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"6f3eb33c7bc0eae890803ebeebabe6a8fad605a093cc639457fe476aea8b7adc","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"12afc6cfb246f7108c7a6b08b4cc3e5fb127d0205812069d5dce6203eee70dd8","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","a2e86df4db576d80704e25293cec6f20fc6101a11f4747440e2eef58fb3c860c","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","6704f0b54df85640baaeebd86c9d4a1dbb661d5a4d57a75bc84162f562f6531d","9d255af1b09c6697089d3c9bf438292a298d8b7a95c68793c9aae80afc9e5ca7","587f13f1e8157bd8cec0adda0de4ef558bb8573daa9d518d1e2af38e87ecc91f","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"d32f90e6cf32e99c86009b5f79fa50bc750fe54e17137d9bb029c377a2822ee2","affectsGlobalScope":true},"7a435e0c814f58f23e9a0979045ec0ef5909aac95a70986e8bcce30c27dff228",{"version":"c81c51f43e343b6d89114b17341fb9d381c4ccbb25e0ee77532376052c801ba7","affectsGlobalScope":true},"3dd49afd822c82b63b3905a13e22240f34cf367aea4f4dd0e6564f4bddcb8370","57135ce61976a8b1dadd01bb412406d1805b90db6e8ecb726d0d78e0b5f76050",{"version":"49479e21a040c0177d1b1bc05a124c0383df7a08a0726ad4d9457619642e875a","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","f302f3a47d7758f67f2afc753b9375d6504dde05d2e6ecdb1df50abbb131fc89","93db4c949a785a3dbef7f5e08523be538e468c580dd276178b818e761b3b68cd","5b1c0a23f464f894e7c2b2b6c56df7b9afa60ed48c5345f8618d389a636b2108","be2b092f2765222757c6441b86c53a5ea8dfed47bbc43eab4c5fe37942c866b3","8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","1ca735bb3d407b2af4fbee7665f3a0a83be52168c728cc209755060ba7ed67bd",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"6e335a70826a634c5a1a1fa36a2dacbf3712ef2be7a517540ae1de8a1e8ea4f6","affectsGlobalScope":true},"576115ea69691c96f8f2b9fcfde5d0fb9b5f047dfa7dec242ebc08694c3b3190","df8529626079d6f9d5d3cd7b6fb7db9cda5a3118d383d8cd46c52aadb59593e7","55709608060f77965c270ac10ac646286589f1bd1cb174fff1778a2dd9a7ef31","3122a3f1136508a27a229e0e4e2848299028300ffa11d0cdfe99df90c492fe20","42b40e40f2a358cda332456214fad311e1806a6abf3cebaaac72496e07556642","d0cc270398605df704892142947b7b90e7b0ae354523dd2e1ae9a185a06440e7",{"version":"0066ebbd0f4ef9656983a2017969afa6460879e894ebaf6f2969631ad9b5b430","affectsGlobalScope":true},"fe6dba0e8c69f2b244e3da38e53dd2cc9e51b2543e647e805396af73006613f7","5e2b91328a540a0933ab5c2203f4358918e6f0fe7505d22840a891a6117735f1","3abc3512fa04aa0230f59ea1019311fd8667bd935d28306311dccc8b17e79d5d",{"version":"5810080a0da989a944d3b691b7b479a4a13c75947fb538abb8070710baa5ccee","affectsGlobalScope":true},{"version":"19da7150ca062323b1db6311a6ef058c9b0a39cc64d836b5e9b75d301869653b","affectsGlobalScope":true},"1349077576abb41f0e9c78ec30762ff75b710208aff77f5fdcc6a8c8ce6289dd","e2ce82603102b5c0563f59fb40314cc1ff95a4d521a66ad14146e130ea80d89c","a3e0395220255a350aa9c6d56f882bfcb5b85c19fddf5419ec822cf22246a26d","c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","898840e876dfd21843db9f2aa6ae38ba2eab550eb780ff62b894b9fbfebfae6b","8904e5b670bbfc712dda607853de9227206e7dad93ac97109fe30875c5f12b78","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","164deb2409ac5f4da3cd139dbcee7f7d66753d90363a4d7e2db8d8874f272270",{"version":"99822adc2defda34dc1b28b727577ec7c098d878d713157dbe90d212c6bf5e58","affectsGlobalScope":true},{"version":"8a985c7d30aea82342d5017730b546bb2b734fe37a2684ca55d4734deb019d58","affectsGlobalScope":true},"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","5bc85813bfcb6907cc3a960fec8734a29d7884e0e372515147720c5991b8bc22","812b25f798033c202baedf386a1ccc41f9191b122f089bffd10fdccce99fba11","993325544790073f77e945bee046d53988c0bc3ac5695c9cf8098166feb82661",{"version":"4d06f3abc2a6aae86f1be39e397372f74fb6e7964f594d645926b4a3419cc15d","affectsGlobalScope":true},{"version":"0e08c360c9b5961ecb0537b703e253842b3ded53151ee07024148219b61a8baf","affectsGlobalScope":true},"2ce2210032ccaff7710e2abf6a722e62c54960458e73e356b6a365c93ab6ca66","5ba5b760345053acdf5beb1a9048ff43a51373f3d87849963779c1711ea7cbcc","16a3080e885ed52d4017c902227a8d0d8daf723d062bec9e45627c6fdcd6699b",{"version":"0bd9543cd8fc0959c76fb8f4f5a26626c2ed62ef4be98fd857bce268066db0a2","affectsGlobalScope":true},"1ca6858a0cbcd74d7db72d7b14c5360a928d1d16748a55ecfa6bfaff8b83071b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"4905d61a3e1e9b12e12dbf8660fc8d2f085734da6da8d725f395bf41a04853d6","bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec",{"version":"1fe4f59d471c69fd533049505081f7e5d6d56486416b12aafb22ba9616034ab7","affectsGlobalScope":true},"3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","cc256fd958b33576ed32c7338c64adb0d08fc0c2c6525010202fab83f32745da","fd0589ca571ad090b531d8c095e26caa53d4825c64d3ff2b2b1ab95d72294175",{"version":"669843ecafb89ae1e944df06360e8966219e4c1c34c0d28aa2503272cdd444a7","affectsGlobalScope":true},"b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"root":[[63,109]],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"module":1,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":9},"fileIdsList":[[110,162],[162],[162,176],[110,111,112,113,114,162],[110,112,162],[133,162,169],[162,171],[162,172],[162,178,181],[132,162,164,169,195,196,198],[162,197],[116,162],[119,162],[120,125,153,162],[121,132,133,140,150,161,162],[121,122,132,140,162],[123,162],[124,125,133,141,162],[125,150,158,162],[126,128,132,140,162],[127,162],[128,129,162],[132,162],[130,132,162],[132,133,134,150,161,162],[132,133,134,147,150,153,162],[162,166],[128,132,135,140,150,161,162],[132,133,135,136,140,150,158,161,162],[135,137,150,158,161,162],[116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168],[132,138,162],[139,161,162,166],[128,132,140,150,162],[141,162],[142,162],[119,143,162],[144,160,162,166],[145,162],[146,162],[132,147,148,162],[147,149,162,164],[120,132,150,151,152,153,162],[120,150,152,162],[150,151,162],[153,162],[154,162],[119,150,162],[132,156,157,162],[156,157,162],[125,140,150,158,162],[159,162],[140,160,162],[120,135,146,161,162],[125,162],[150,162,163],[139,162,164],[162,165],[120,125,132,134,143,150,161,162,164,166],[150,162,167],[162,200],[162,174,180],[162,178],[162,175,179],[162,184],[162,183,184],[162,183],[162,183,184,185,187,188,191,192,193,194],[162,184,188],[162,183,184,185,187,188,189,190],[162,183,188],[162,188,192],[162,184,185,186],[162,185],[162,183,184,188],[162,177],[77,78,79,162],[70,71,162],[71,72,73,162],[64,69,162],[71,72,162],[71,72,77,78,162],[63,74,162],[69,70,162],[64,162],[71,72,77,78,79,80,162],[73,162],[67,162],[63,66,67,68,85,162],[71,76,84,85,86,90,162],[66,68,73,84,85,86,90,162],[63,64,68,84,85,86,87,88,89,162],[67,73,84,85,87,162],[63,73,84,162],[67,85,89,162],[85,162],[71,162],[63,70,71,72,73,74,75,76,80,81,82,83,84,162],[70,162],[70,71,72,75,80,81,82,162],[63,73,162],[70,71,73,74,75,162],[63,64,65,66,67,68,69,70,72,74,77,78,79,80,82,83,85,86,88,91,162],[65,162],[63,65,162],[63,65,66,67,68,88,162],[63,65,66,162],[63,64,162],[63,66,162],[63,64,65,162],[77,78,79],[70,71],[71,72],[69],[71,72,77,78],[63,74],[71,72,80],[67],[63,66,67,68,85],[63,68,84,85,86],[63,84],[85],[70,71,74,76,80,83,84],[70,71,75,80,82],[63,73],[70,71,74,75],[63,64,65,66,67,68,69,70,72,74,77,78,79,80,82,83,85,86,88,91],[63],[63,66],[63,65]],"referencedMap":[[112,1],[110,2],[174,2],[177,3],[176,2],[115,4],[111,1],[113,5],[114,1],[170,6],[171,2],[172,7],[173,8],[182,9],[197,10],[198,11],[116,12],[117,12],[119,13],[120,14],[121,15],[122,16],[123,17],[124,18],[125,19],[126,20],[127,21],[128,22],[129,22],[131,23],[130,24],[132,23],[133,25],[134,26],[118,27],[168,2],[135,28],[136,29],[137,30],[169,31],[138,32],[139,33],[140,34],[141,35],[142,36],[143,37],[144,38],[145,39],[146,40],[147,41],[148,41],[149,42],[150,43],[152,44],[151,45],[153,46],[154,47],[155,48],[156,49],[157,50],[158,51],[159,52],[160,53],[161,54],[162,55],[163,56],[164,57],[165,58],[166,59],[167,60],[199,2],[196,2],[200,2],[201,61],[175,2],[181,62],[179,63],[180,64],[185,65],[194,66],[183,2],[184,67],[195,68],[190,69],[191,70],[189,71],[193,72],[187,73],[186,74],[192,75],[188,66],[178,76],[60,2],[61,2],[10,2],[11,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[4,2],[24,2],[28,2],[25,2],[26,2],[27,2],[29,2],[30,2],[31,2],[5,2],[32,2],[33,2],[34,2],[35,2],[6,2],[39,2],[36,2],[37,2],[38,2],[40,2],[7,2],[41,2],[46,2],[47,2],[42,2],[43,2],[44,2],[45,2],[8,2],[51,2],[48,2],[49,2],[50,2],[52,2],[9,2],[53,2],[62,2],[54,2],[55,2],[58,2],[56,2],[57,2],[1,2],[59,2],[13,2],[12,2],[80,77],[72,78],[78,79],[93,2],[70,80],[77,81],[79,82],[82,83],[94,84],[69,85],[81,86],[95,2],[73,2],[96,87],[97,2],[68,88],[86,89],[91,90],[98,91],[90,92],[99,93],[87,94],[100,95],[89,96],[101,97],[71,2],[85,98],[102,99],[83,100],[84,101],[76,102],[75,2],[74,2],[92,103],[103,104],[104,105],[105,105],[106,106],[107,107],[108,105],[65,108],[63,2],[88,109],[66,110],[64,2],[109,88],[67,2]],"exportedModulesMap":[[112,1],[110,2],[174,2],[177,3],[176,2],[115,4],[111,1],[113,5],[114,1],[170,6],[171,2],[172,7],[173,8],[182,9],[197,10],[198,11],[116,12],[117,12],[119,13],[120,14],[121,15],[122,16],[123,17],[124,18],[125,19],[126,20],[127,21],[128,22],[129,22],[131,23],[130,24],[132,23],[133,25],[134,26],[118,27],[168,2],[135,28],[136,29],[137,30],[169,31],[138,32],[139,33],[140,34],[141,35],[142,36],[143,37],[144,38],[145,39],[146,40],[147,41],[148,41],[149,42],[150,43],[152,44],[151,45],[153,46],[154,47],[155,48],[156,49],[157,50],[158,51],[159,52],[160,53],[161,54],[162,55],[163,56],[164,57],[165,58],[166,59],[167,60],[199,2],[196,2],[200,2],[201,61],[175,2],[181,62],[179,63],[180,64],[185,65],[194,66],[183,2],[184,67],[195,68],[190,69],[191,70],[189,71],[193,72],[187,73],[186,74],[192,75],[188,66],[178,76],[60,2],[61,2],[10,2],[11,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[4,2],[24,2],[28,2],[25,2],[26,2],[27,2],[29,2],[30,2],[31,2],[5,2],[32,2],[33,2],[34,2],[35,2],[6,2],[39,2],[36,2],[37,2],[38,2],[40,2],[7,2],[41,2],[46,2],[47,2],[42,2],[43,2],[44,2],[45,2],[8,2],[51,2],[48,2],[49,2],[50,2],[52,2],[9,2],[53,2],[62,2],[54,2],[55,2],[58,2],[56,2],[57,2],[1,2],[59,2],[13,2],[12,2],[80,111],[72,112],[78,113],[70,114],[77,113],[79,115],[82,116],[81,117],[68,118],[86,119],[91,90],[90,120],[87,121],[89,122],[85,123],[83,124],[84,125],[76,126],[92,127],[65,128],[88,129],[66,130]],"semanticDiagnosticsPerFile":[112,110,174,177,176,115,111,113,114,170,171,172,173,182,197,198,116,117,119,120,121,122,123,124,125,126,127,128,129,131,130,132,133,134,118,168,135,136,137,169,138,139,140,141,142,143,144,145,146,147,148,149,150,152,151,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,199,196,200,201,175,181,179,180,185,194,183,184,195,190,191,189,193,187,186,192,188,178,60,61,10,11,15,14,2,16,17,18,19,20,21,22,23,3,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,62,54,55,58,56,57,1,59,13,12,80,72,78,93,70,77,79,82,94,69,81,95,73,96,97,68,86,91,98,90,99,87,100,89,101,71,85,102,83,84,76,75,74,92,103,104,105,106,107,108,65,63,88,66,64,109,67],"affectedFilesPendingEmit":[80,72,78,93,70,77,79,82,94,69,81,95,73,96,97,68,86,91,98,90,99,87,100,89,101,71,85,102,83,84,76,75,74,92,103,104,105,106,107,108,65,63,88,66,64,109,67],"emitSignatures":[63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109]},"version":"5.2.2"}
|