@pie-element/placement-ordering 14.1.7 → 14.1.9

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.
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ var _scoring = require("../scoring");
4
+ var _lodashEs = require("lodash-es");
5
+ describe('pairwiseCombinationScore', () => {
6
+ const assertScore = (correctResponse, opts) => (answer, expectedScore) => {
7
+ it(`${expectedScore} for ${typeof answer === 'string' ? answer : JSON.stringify(answer)}`, () => {
8
+ const c = correctResponse.split('');
9
+ const a = typeof answer === 'string' ? answer.split('') : answer;
10
+ const result = (0, _scoring.pairwiseCombinationScore)(c, a, opts);
11
+ expect(result).toEqual(expectedScore);
12
+ });
13
+ };
14
+ describe('correct response: A', () => {
15
+ const assertA = assertScore('A');
16
+ assertA('A', 1);
17
+ assertA('B', 0);
18
+ assertA('C', 0);
19
+ assertA({
20
+ foo: true
21
+ }, 0);
22
+ assertA([{
23
+ foo: true
24
+ }, {
25
+ bar: true
26
+ }], 0);
27
+ assertA('', 0);
28
+ });
29
+ describe('correct response: AB', () => {
30
+ const assertAB = assertScore('AB');
31
+ assertAB('A', 0);
32
+ assertAB('B', 0);
33
+ assertAB('C', 0);
34
+ assertAB('', 0);
35
+ assertAB('AB', 1);
36
+ assertAB('BA', 0);
37
+ assertAB('AC', 0);
38
+ });
39
+ describe('correct response: AAB', () => {
40
+ it('throws an error because of duplicate in answer', () => {
41
+ expect(() => (0, _scoring.pairwiseCombinationScore)(['A', 'A'], ['A', 'A'])).toThrow((0, _scoring.illegalArgumentError)(['A', 'A']));
42
+ });
43
+ });
44
+ describe('correct response: ABC', () => {
45
+ const assertABC = assertScore('ABC');
46
+ assertABC('', 0);
47
+ assertABC('A', 0);
48
+ assertABC('AA', 0);
49
+ assertABC('AB', 0.33);
50
+ assertABC('AC', 0.33);
51
+ assertABC('AAC', 0);
52
+ assertABC('AAB', 0);
53
+ assertABC('BAA', 0);
54
+ assertABC('ABA', 0);
55
+ assertABC('ABAB', 0);
56
+ assertABC('ABC', 1);
57
+ assertABC('ABC', 1);
58
+ assertABC('BCA', 0.33);
59
+ assertABC('CAB', 0.33);
60
+ assertABC('CBA', 0);
61
+ assertABC('ACB', 0.67);
62
+ assertABC('B', 0);
63
+ assertABC('C', 0);
64
+ assertABC('AB', 0.33);
65
+ assertABC('BC', 0.33);
66
+ assertABC('AC', 0.33);
67
+ assertABC('CA', 0);
68
+ assertABC('CB', 0);
69
+ assertABC('BA', 0);
70
+ assertABC('ABCD', 0);
71
+ });
72
+ describe('correct response: ABCD - order must be complete', () => {
73
+ const assertABCD = assertScore('ABCD', {
74
+ orderMustBeComplete: true
75
+ });
76
+ assertABCD('ABC', 0);
77
+ assertABCD('BCD', 0);
78
+ });
79
+ describe('correct response: ABCD', () => {
80
+ const assertABCD = assertScore('ABCD');
81
+ assertABCD('ABCD', 1);
82
+ assertABCD('ABDC', 0.83);
83
+ assertABCD('ABC', 0.5);
84
+ assertABCD('CDAB', 0.33);
85
+ assertABCD('CDBA', 0.17);
86
+ assertABCD('DCBA', 0);
87
+ assertABCD('DCAB', 0.17);
88
+ assertABCD('ABAB', 0);
89
+ assertABCD('AB', 0.17);
90
+ });
91
+ describe('custom override - allowDuplicates: true, orderMustBeComplete: false', () => {
92
+ describe('correct response: AAB - dups, order incomplete', () => {
93
+ const assertAAB = assertScore('AAB', {
94
+ allowDuplicates: true
95
+ });
96
+ assertAAB('', 0);
97
+ assertAAB('A', 0);
98
+ assertAAB('AA', 0.33);
99
+ assertAAB('AAC', 0.33);
100
+ assertAAB('AAB', 1);
101
+ assertAAB('BAA', 0.33);
102
+ assertAAB('ABA', 0.67);
103
+ assertAAB('ABAB', 0);
104
+ });
105
+ });
106
+ });
107
+ const correctResponse = ['c1', 'c2', 'c3', 'c4'];
108
+ const alternateResponses = [{
109
+ response: ['c4', 'c3', 'c2', 'c1']
110
+ }];
111
+ describe('score', () => {
112
+ let baseQuestion = {
113
+ correctResponse: correctResponse,
114
+ alternateResponses: alternateResponses
115
+ };
116
+ describe('partial scoring', () => {
117
+ let question = (0, _lodashEs.merge)((0, _lodashEs.cloneDeep)(baseQuestion), {
118
+ partialScoring: true
119
+ });
120
+ const assertScore = (value, expectedScore) => {
121
+ it(`${expectedScore} for: ${value}`, () => {
122
+ const result = (0, _scoring.score)(question, {
123
+ value
124
+ });
125
+ expect(result).toEqual(expectedScore);
126
+ });
127
+ };
128
+ const assertScoreSessionNotSet = session => {
129
+ it(`returns 0 if session is: ${JSON.stringify(session)}`, () => {
130
+ const result = (0, _scoring.score)(question, session);
131
+ expect(result).toEqual(0);
132
+ });
133
+ };
134
+ assertScoreSessionNotSet(undefined);
135
+ assertScoreSessionNotSet(null);
136
+ assertScoreSessionNotSet({});
137
+
138
+ // Main Correct Responses
139
+ assertScore([], 0);
140
+ assertScore(['c1'], 0);
141
+ assertScore(['c1', 'c2'], 0.17);
142
+ assertScore(['c1', 'c2', 'c3'], 0.5);
143
+ assertScore(['c1', 'c2', 'c3', 'c4'], 1);
144
+
145
+ // Alternate Correct Responses
146
+ assertScore([], 0);
147
+ assertScore(['c4'], 0);
148
+ assertScore(['c4', 'c3'], 0.17);
149
+ assertScore(['c4', 'c3', 'c2'], 0.5);
150
+ assertScore(['c4', 'c3', 'c2', 'c1'], 1);
151
+ });
152
+ });
153
+ describe('flattenCorrect', () => {
154
+ describe('correctResponse is an array of identifiers', () => {
155
+ let question = {
156
+ correctResponse: correctResponse.map(v => ({
157
+ id: v
158
+ }))
159
+ };
160
+ it('returns correctResponse field value', () => {
161
+ expect((0, _scoring.flattenCorrect)(question)).toEqual(correctResponse);
162
+ });
163
+ });
164
+ });
165
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2NvcmluZyIsInJlcXVpcmUiLCJfbG9kYXNoRXMiLCJkZXNjcmliZSIsImFzc2VydFNjb3JlIiwiY29ycmVjdFJlc3BvbnNlIiwib3B0cyIsImFuc3dlciIsImV4cGVjdGVkU2NvcmUiLCJpdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjIiwic3BsaXQiLCJhIiwicmVzdWx0IiwicGFpcndpc2VDb21iaW5hdGlvblNjb3JlIiwiZXhwZWN0IiwidG9FcXVhbCIsImFzc2VydEEiLCJmb28iLCJiYXIiLCJhc3NlcnRBQiIsInRvVGhyb3ciLCJpbGxlZ2FsQXJndW1lbnRFcnJvciIsImFzc2VydEFCQyIsImFzc2VydEFCQ0QiLCJvcmRlck11c3RCZUNvbXBsZXRlIiwiYXNzZXJ0QUFCIiwiYWxsb3dEdXBsaWNhdGVzIiwiYWx0ZXJuYXRlUmVzcG9uc2VzIiwicmVzcG9uc2UiLCJiYXNlUXVlc3Rpb24iLCJxdWVzdGlvbiIsIm1lcmdlIiwiY2xvbmVEZWVwIiwicGFydGlhbFNjb3JpbmciLCJ2YWx1ZSIsInNjb3JlIiwiYXNzZXJ0U2NvcmVTZXNzaW9uTm90U2V0Iiwic2Vzc2lvbiIsInVuZGVmaW5lZCIsIm1hcCIsInYiLCJpZCIsImZsYXR0ZW5Db3JyZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9zY29yaW5nLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmxhdHRlbkNvcnJlY3QsIHNjb3JlLCBwYWlyd2lzZUNvbWJpbmF0aW9uU2NvcmUsIGlsbGVnYWxBcmd1bWVudEVycm9yIH0gZnJvbSAnLi4vc2NvcmluZyc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIG1lcmdlIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZGVzY3JpYmUoJ3BhaXJ3aXNlQ29tYmluYXRpb25TY29yZScsICgpID0+IHtcbiAgY29uc3QgYXNzZXJ0U2NvcmUgPSAoY29ycmVjdFJlc3BvbnNlLCBvcHRzKSA9PiAoYW5zd2VyLCBleHBlY3RlZFNjb3JlKSA9PiB7XG4gICAgaXQoYCR7ZXhwZWN0ZWRTY29yZX0gZm9yICR7dHlwZW9mIGFuc3dlciA9PT0gJ3N0cmluZycgPyBhbnN3ZXIgOiBKU09OLnN0cmluZ2lmeShhbnN3ZXIpfWAsICgpID0+IHtcbiAgICAgIGNvbnN0IGMgPSBjb3JyZWN0UmVzcG9uc2Uuc3BsaXQoJycpO1xuICAgICAgY29uc3QgYSA9IHR5cGVvZiBhbnN3ZXIgPT09ICdzdHJpbmcnID8gYW5zd2VyLnNwbGl0KCcnKSA6IGFuc3dlcjtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhaXJ3aXNlQ29tYmluYXRpb25TY29yZShjLCBhLCBvcHRzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRTY29yZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ2NvcnJlY3QgcmVzcG9uc2U6IEEnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0QSA9IGFzc2VydFNjb3JlKCdBJyk7XG4gICAgYXNzZXJ0QSgnQScsIDEpO1xuICAgIGFzc2VydEEoJ0InLCAwKTtcbiAgICBhc3NlcnRBKCdDJywgMCk7XG4gICAgYXNzZXJ0QSh7IGZvbzogdHJ1ZSB9LCAwKTtcbiAgICBhc3NlcnRBKFt7IGZvbzogdHJ1ZSB9LCB7IGJhcjogdHJ1ZSB9XSwgMCk7XG4gICAgYXNzZXJ0QSgnJywgMCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb3JyZWN0IHJlc3BvbnNlOiBBQicsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnRBQiA9IGFzc2VydFNjb3JlKCdBQicpO1xuICAgIGFzc2VydEFCKCdBJywgMCk7XG4gICAgYXNzZXJ0QUIoJ0InLCAwKTtcbiAgICBhc3NlcnRBQignQycsIDApO1xuICAgIGFzc2VydEFCKCcnLCAwKTtcbiAgICBhc3NlcnRBQignQUInLCAxKTtcbiAgICBhc3NlcnRBQignQkEnLCAwKTtcbiAgICBhc3NlcnRBQignQUMnLCAwKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NvcnJlY3QgcmVzcG9uc2U6IEFBQicsICgpID0+IHtcbiAgICBpdCgndGhyb3dzIGFuIGVycm9yIGJlY2F1c2Ugb2YgZHVwbGljYXRlIGluIGFuc3dlcicsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiBwYWlyd2lzZUNvbWJpbmF0aW9uU2NvcmUoWydBJywgJ0EnXSwgWydBJywgJ0EnXSkpLnRvVGhyb3coaWxsZWdhbEFyZ3VtZW50RXJyb3IoWydBJywgJ0EnXSkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29ycmVjdCByZXNwb25zZTogQUJDJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydEFCQyA9IGFzc2VydFNjb3JlKCdBQkMnKTtcbiAgICBhc3NlcnRBQkMoJycsIDApO1xuICAgIGFzc2VydEFCQygnQScsIDApO1xuICAgIGFzc2VydEFCQygnQUEnLCAwKTtcbiAgICBhc3NlcnRBQkMoJ0FCJywgMC4zMyk7XG4gICAgYXNzZXJ0QUJDKCdBQycsIDAuMzMpO1xuICAgIGFzc2VydEFCQygnQUFDJywgMCk7XG4gICAgYXNzZXJ0QUJDKCdBQUInLCAwKTtcbiAgICBhc3NlcnRBQkMoJ0JBQScsIDApO1xuICAgIGFzc2VydEFCQygnQUJBJywgMCk7XG4gICAgYXNzZXJ0QUJDKCdBQkFCJywgMCk7XG4gICAgYXNzZXJ0QUJDKCdBQkMnLCAxKTtcbiAgICBhc3NlcnRBQkMoJ0FCQycsIDEpO1xuICAgIGFzc2VydEFCQygnQkNBJywgMC4zMyk7XG4gICAgYXNzZXJ0QUJDKCdDQUInLCAwLjMzKTtcbiAgICBhc3NlcnRBQkMoJ0NCQScsIDApO1xuICAgIGFzc2VydEFCQygnQUNCJywgMC42Nyk7XG4gICAgYXNzZXJ0QUJDKCdCJywgMCk7XG4gICAgYXNzZXJ0QUJDKCdDJywgMCk7XG4gICAgYXNzZXJ0QUJDKCdBQicsIDAuMzMpO1xuICAgIGFzc2VydEFCQygnQkMnLCAwLjMzKTtcbiAgICBhc3NlcnRBQkMoJ0FDJywgMC4zMyk7XG4gICAgYXNzZXJ0QUJDKCdDQScsIDApO1xuICAgIGFzc2VydEFCQygnQ0InLCAwKTtcbiAgICBhc3NlcnRBQkMoJ0JBJywgMCk7XG4gICAgYXNzZXJ0QUJDKCdBQkNEJywgMCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb3JyZWN0IHJlc3BvbnNlOiBBQkNEIC0gb3JkZXIgbXVzdCBiZSBjb21wbGV0ZScsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnRBQkNEID0gYXNzZXJ0U2NvcmUoJ0FCQ0QnLCB7IG9yZGVyTXVzdEJlQ29tcGxldGU6IHRydWUgfSk7XG4gICAgYXNzZXJ0QUJDRCgnQUJDJywgMCk7XG4gICAgYXNzZXJ0QUJDRCgnQkNEJywgMCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb3JyZWN0IHJlc3BvbnNlOiBBQkNEJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydEFCQ0QgPSBhc3NlcnRTY29yZSgnQUJDRCcpO1xuICAgIGFzc2VydEFCQ0QoJ0FCQ0QnLCAxKTtcbiAgICBhc3NlcnRBQkNEKCdBQkRDJywgMC44Myk7XG4gICAgYXNzZXJ0QUJDRCgnQUJDJywgMC41KTtcbiAgICBhc3NlcnRBQkNEKCdDREFCJywgMC4zMyk7XG4gICAgYXNzZXJ0QUJDRCgnQ0RCQScsIDAuMTcpO1xuICAgIGFzc2VydEFCQ0QoJ0RDQkEnLCAwKTtcbiAgICBhc3NlcnRBQkNEKCdEQ0FCJywgMC4xNyk7XG4gICAgYXNzZXJ0QUJDRCgnQUJBQicsIDApO1xuICAgIGFzc2VydEFCQ0QoJ0FCJywgMC4xNyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjdXN0b20gb3ZlcnJpZGUgLSBhbGxvd0R1cGxpY2F0ZXM6IHRydWUsIG9yZGVyTXVzdEJlQ29tcGxldGU6IGZhbHNlJywgKCkgPT4ge1xuICAgIGRlc2NyaWJlKCdjb3JyZWN0IHJlc3BvbnNlOiBBQUIgLSBkdXBzLCBvcmRlciBpbmNvbXBsZXRlJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzZXJ0QUFCID0gYXNzZXJ0U2NvcmUoJ0FBQicsIHtcbiAgICAgICAgYWxsb3dEdXBsaWNhdGVzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBhc3NlcnRBQUIoJycsIDApO1xuICAgICAgYXNzZXJ0QUFCKCdBJywgMCk7XG4gICAgICBhc3NlcnRBQUIoJ0FBJywgMC4zMyk7XG4gICAgICBhc3NlcnRBQUIoJ0FBQycsIDAuMzMpO1xuICAgICAgYXNzZXJ0QUFCKCdBQUInLCAxKTtcbiAgICAgIGFzc2VydEFBQignQkFBJywgMC4zMyk7XG4gICAgICBhc3NlcnRBQUIoJ0FCQScsIDAuNjcpO1xuICAgICAgYXNzZXJ0QUFCKCdBQkFCJywgMCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmNvbnN0IGNvcnJlY3RSZXNwb25zZSA9IFsnYzEnLCAnYzInLCAnYzMnLCAnYzQnXTtcbmNvbnN0IGFsdGVybmF0ZVJlc3BvbnNlcyA9IFt7IHJlc3BvbnNlOiBbJ2M0JywgJ2MzJywgJ2MyJywgJ2MxJ10gfV07XG5cbmRlc2NyaWJlKCdzY29yZScsICgpID0+IHtcbiAgbGV0IGJhc2VRdWVzdGlvbiA9IHtcbiAgICBjb3JyZWN0UmVzcG9uc2U6IGNvcnJlY3RSZXNwb25zZSxcbiAgICBhbHRlcm5hdGVSZXNwb25zZXM6IGFsdGVybmF0ZVJlc3BvbnNlcyxcbiAgfTtcblxuICBkZXNjcmliZSgncGFydGlhbCBzY29yaW5nJywgKCkgPT4ge1xuICAgIGxldCBxdWVzdGlvbiA9IG1lcmdlKGNsb25lRGVlcChiYXNlUXVlc3Rpb24pLCB7XG4gICAgICBwYXJ0aWFsU2NvcmluZzogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGFzc2VydFNjb3JlID0gKHZhbHVlLCBleHBlY3RlZFNjb3JlKSA9PiB7XG4gICAgICBpdChgJHtleHBlY3RlZFNjb3JlfSBmb3I6ICR7dmFsdWV9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBzY29yZShxdWVzdGlvbiwgeyB2YWx1ZSB9KTtcblxuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkU2NvcmUpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFzc2VydFNjb3JlU2Vzc2lvbk5vdFNldCA9IChzZXNzaW9uKSA9PiB7XG4gICAgICBpdChgcmV0dXJucyAwIGlmIHNlc3Npb24gaXM6ICR7SlNPTi5zdHJpbmdpZnkoc2Vzc2lvbil9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBzY29yZShxdWVzdGlvbiwgc2Vzc2lvbik7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCgwKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3NlcnRTY29yZVNlc3Npb25Ob3RTZXQodW5kZWZpbmVkKTtcbiAgICBhc3NlcnRTY29yZVNlc3Npb25Ob3RTZXQobnVsbCk7XG4gICAgYXNzZXJ0U2NvcmVTZXNzaW9uTm90U2V0KHt9KTtcblxuICAgIC8vIE1haW4gQ29ycmVjdCBSZXNwb25zZXNcbiAgICBhc3NlcnRTY29yZShbXSwgMCk7XG4gICAgYXNzZXJ0U2NvcmUoWydjMSddLCAwKTtcbiAgICBhc3NlcnRTY29yZShbJ2MxJywgJ2MyJ10sIDAuMTcpO1xuICAgIGFzc2VydFNjb3JlKFsnYzEnLCAnYzInLCAnYzMnXSwgMC41KTtcbiAgICBhc3NlcnRTY29yZShbJ2MxJywgJ2MyJywgJ2MzJywgJ2M0J10sIDEpO1xuXG4gICAgLy8gQWx0ZXJuYXRlIENvcnJlY3QgUmVzcG9uc2VzXG4gICAgYXNzZXJ0U2NvcmUoW10sIDApO1xuICAgIGFzc2VydFNjb3JlKFsnYzQnXSwgMCk7XG4gICAgYXNzZXJ0U2NvcmUoWydjNCcsICdjMyddLCAwLjE3KTtcbiAgICBhc3NlcnRTY29yZShbJ2M0JywgJ2MzJywgJ2MyJ10sIDAuNSk7XG4gICAgYXNzZXJ0U2NvcmUoWydjNCcsICdjMycsICdjMicsICdjMSddLCAxKTtcbiAgfSk7XG59KTtcbmRlc2NyaWJlKCdmbGF0dGVuQ29ycmVjdCcsICgpID0+IHtcbiAgZGVzY3JpYmUoJ2NvcnJlY3RSZXNwb25zZSBpcyBhbiBhcnJheSBvZiBpZGVudGlmaWVycycsICgpID0+IHtcbiAgICBsZXQgcXVlc3Rpb24gPSB7XG4gICAgICBjb3JyZWN0UmVzcG9uc2U6IGNvcnJlY3RSZXNwb25zZS5tYXAoKHYpID0+ICh7IGlkOiB2IH0pKSxcbiAgICB9O1xuXG4gICAgaXQoJ3JldHVybnMgY29ycmVjdFJlc3BvbnNlIGZpZWxkIHZhbHVlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGZsYXR0ZW5Db3JyZWN0KHF1ZXN0aW9uKSkudG9FcXVhbChjb3JyZWN0UmVzcG9uc2UpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUVBRSxRQUFRLENBQUMsMEJBQTBCLEVBQUUsTUFBTTtFQUN6QyxNQUFNQyxXQUFXLEdBQUdBLENBQUNDLGVBQWUsRUFBRUMsSUFBSSxLQUFLLENBQUNDLE1BQU0sRUFBRUMsYUFBYSxLQUFLO0lBQ3hFQyxFQUFFLENBQUMsR0FBR0QsYUFBYSxRQUFRLE9BQU9ELE1BQU0sS0FBSyxRQUFRLEdBQUdBLE1BQU0sR0FBR0csSUFBSSxDQUFDQyxTQUFTLENBQUNKLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTTtNQUMvRixNQUFNSyxDQUFDLEdBQUdQLGVBQWUsQ0FBQ1EsS0FBSyxDQUFDLEVBQUUsQ0FBQztNQUNuQyxNQUFNQyxDQUFDLEdBQUcsT0FBT1AsTUFBTSxLQUFLLFFBQVEsR0FBR0EsTUFBTSxDQUFDTSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUdOLE1BQU07TUFDaEUsTUFBTVEsTUFBTSxHQUFHLElBQUFDLGlDQUF3QixFQUFDSixDQUFDLEVBQUVFLENBQUMsRUFBRVIsSUFBSSxDQUFDO01BQ25EVyxNQUFNLENBQUNGLE1BQU0sQ0FBQyxDQUFDRyxPQUFPLENBQUNWLGFBQWEsQ0FBQztJQUN2QyxDQUFDLENBQUM7RUFDSixDQUFDO0VBRURMLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNO0lBQ3BDLE1BQU1nQixPQUFPLEdBQUdmLFdBQVcsQ0FBQyxHQUFHLENBQUM7SUFDaENlLE9BQU8sQ0FBQyxH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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/placement-ordering-controller",
3
- "version": "11.1.2",
3
+ "version": "11.1.3",
4
4
  "private": true,
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -0,0 +1,11 @@
1
+ {
2
+ "hash": "1095974880",
3
+ "info": [
4
+ {
5
+ "pie": "@pie-element/placement-ordering",
6
+ "version": {
7
+ "requested": "latest"
8
+ }
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var _index = require("../index");
4
+ describe('isValidSession', () => {
5
+ it('returns true if includeTargets is true and session is empty', () => {
6
+ expect((0, _index.isValidSession)({
7
+ model: {
8
+ config: {
9
+ includeTargets: true
10
+ }
11
+ },
12
+ session: {
13
+ value: []
14
+ }
15
+ })).toEqual(true);
16
+ });
17
+ it('returns true if includeTargets is true and session is not complete', () => {
18
+ expect((0, _index.isValidSession)({
19
+ model: {
20
+ config: {
21
+ includeTargets: true
22
+ }
23
+ },
24
+ session: {
25
+ value: ['c1', null, 'c3', null]
26
+ }
27
+ })).toEqual(true);
28
+ });
29
+ it('returns true if includeTargets is true and session is not complete', () => {
30
+ expect((0, _index.isValidSession)({
31
+ model: {
32
+ config: {
33
+ includeTargets: true
34
+ }
35
+ },
36
+ session: {
37
+ value: [null, 'c2']
38
+ }
39
+ })).toEqual(true);
40
+ });
41
+ it('returns true if includeTargets is false, but session is valid', () => {
42
+ expect((0, _index.isValidSession)({
43
+ model: {
44
+ config: {
45
+ includeTargets: false
46
+ }
47
+ },
48
+ session: {
49
+ value: ['c1', 'c3', 'c2', 'c4']
50
+ }
51
+ })).toEqual(true);
52
+ });
53
+ it('returns false if includeTargets is false and session is empty', () => {
54
+ expect((0, _index.isValidSession)({
55
+ model: {
56
+ config: {
57
+ includeTargets: false
58
+ }
59
+ },
60
+ session: {
61
+ value: []
62
+ }
63
+ })).toEqual(false);
64
+ });
65
+ it('returns false if includeTargets is false and session is not complete', () => {
66
+ expect((0, _index.isValidSession)({
67
+ model: {
68
+ config: {
69
+ includeTargets: false
70
+ }
71
+ },
72
+ session: {
73
+ value: ['c1', null, 'c3', null]
74
+ }
75
+ })).toEqual(false);
76
+ });
77
+ it('returns false if includeTargets is false and session is not complete', () => {
78
+ expect((0, _index.isValidSession)({
79
+ model: {
80
+ config: {
81
+ includeTargets: false
82
+ }
83
+ },
84
+ session: {
85
+ value: [null, 'c2']
86
+ }
87
+ })).toEqual(false);
88
+ });
89
+ });
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJyZXF1aXJlIiwiZGVzY3JpYmUiLCJpdCIsImV4cGVjdCIsImlzVmFsaWRTZXNzaW9uIiwibW9kZWwiLCJjb25maWciLCJpbmNsdWRlVGFyZ2V0cyIsInNlc3Npb24iLCJ2YWx1ZSIsInRvRXF1YWwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2luZGV4LXRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzVmFsaWRTZXNzaW9uIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5kZXNjcmliZSgnaXNWYWxpZFNlc3Npb24nLCAoKSA9PiB7XG4gIGl0KCdyZXR1cm5zIHRydWUgaWYgaW5jbHVkZVRhcmdldHMgaXMgdHJ1ZSBhbmQgc2Vzc2lvbiBpcyBlbXB0eScsICgpID0+IHtcbiAgICBleHBlY3QoaXNWYWxpZFNlc3Npb24oXG4gICAgICB7XG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBpbmNsdWRlVGFyZ2V0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2Vzc2lvbjogeyB2YWx1ZTogW10gfVxuICAgICAgfSkpLnRvRXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIHRydWUgaWYgaW5jbHVkZVRhcmdldHMgaXMgdHJ1ZSBhbmQgc2Vzc2lvbiBpcyBub3QgY29tcGxldGUnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGlzVmFsaWRTZXNzaW9uKFxuICAgICAge1xuICAgICAgICBtb2RlbDoge1xuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgaW5jbHVkZVRhcmdldHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlc3Npb246IHsgdmFsdWU6IFsnYzEnLCBudWxsLCAnYzMnLCBudWxsXSB9XG4gICAgICB9KSkudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgdHJ1ZSBpZiBpbmNsdWRlVGFyZ2V0cyBpcyB0cnVlIGFuZCBzZXNzaW9uIGlzIG5vdCBjb21wbGV0ZScsICgpID0+IHtcbiAgICBleHBlY3QoaXNWYWxpZFNlc3Npb24oXG4gICAgICB7XG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBpbmNsdWRlVGFyZ2V0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2Vzc2lvbjogeyB2YWx1ZTogW251bGwsICdjMiddIH1cbiAgICAgIH0pKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgncmV0dXJucyB0cnVlIGlmIGluY2x1ZGVUYXJnZXRzIGlzIGZhbHNlLCBidXQgc2Vzc2lvbiBpcyB2YWxpZCcsICgpID0+IHtcbiAgICBleHBlY3QoaXNWYWxpZFNlc3Npb24oXG4gICAgICB7XG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBpbmNsdWRlVGFyZ2V0czogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlc3Npb246IHsgdmFsdWU6IFsnYzEnLCAnYzMnLCAnYzInLCAnYzQnXSB9XG4gICAgICB9KSkudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgZmFsc2UgaWYgaW5jbHVkZVRhcmdldHMgaXMgZmFsc2UgYW5kIHNlc3Npb24gaXMgZW1wdHknLCAoKSA9PiB7XG4gICAgZXhwZWN0KGlzVmFsaWRTZXNzaW9uKFxuICAgICAge1xuICAgICAgICBtb2RlbDoge1xuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgaW5jbHVkZVRhcmdldHM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZXNzaW9uOiB7IHZhbHVlOiBbXSB9XG4gICAgICB9KSkudG9FcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIGZhbHNlIGlmIGluY2x1ZGVUYXJnZXRzIGlzIGZhbHNlIGFuZCBzZXNzaW9uIGlzIG5vdCBjb21wbGV0ZScsICgpID0+IHtcbiAgICBleHBlY3QoaXNWYWxpZFNlc3Npb24oXG4gICAgICB7XG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBpbmNsdWRlVGFyZ2V0czogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlc3Npb246IHsgdmFsdWU6IFsnYzEnLCBudWxsLCAnYzMnLCBudWxsXSB9XG4gICAgICB9KSkudG9FcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIGZhbHNlIGlmIGluY2x1ZGVUYXJnZXRzIGlzIGZhbHNlIGFuZCBzZXNzaW9uIGlzIG5vdCBjb21wbGV0ZScsICgpID0+IHtcbiAgICBleHBlY3QoaXNWYWxpZFNlc3Npb24oXG4gICAgICB7XG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBpbmNsdWRlVGFyZ2V0czogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNlc3Npb246IHsgdmFsdWU6IFtudWxsLCAnYzInXSB9XG4gICAgICB9KSkudG9FcXVhbChmYWxzZSk7XG4gIH0pO1xufSlcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLE1BQU07RUFDL0JDLEVBQUUsQ0FBQyw2REFBNkQsRUFBRSxNQUFNO0lBQ3RFQyxNQUFNLENBQUMsSUFBQUMscUJBQWMsRUFDbkI7TUFDRUMsS0FBSyxFQUFFO1FBQ0xDLE1BQU0sRUFBRTtVQUNOQyxjQUFjLEVBQUU7UUFDbEI7TUFDRixDQUFDO01BQ0RDLE9BQU8sRUFBRTtRQUFFQyxLQUFLLEVBQUU7TUFBRztJQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDO0VBQ3JCLENBQUMsQ0FBQztFQUVGUixFQUFFLENBQUMsb0VBQW9FLEVBQUUsTUFBTTtJQUM3RUMsTUFBTSxDQUFDLElBQUFDLHFCQUFjLEVBQ25CO01BQ0VDLEtBQUssRUFBRTtRQUNMQyxNQUFNLEVBQUU7VUFDTkMsY0FBYyxFQUFFO1FBQ2xCO01BQ0YsQ0FBQztNQUNEQyxPQUFPLEVBQUU7UUFBRUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtNQUFFO0lBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUM7RUFDckIsQ0FBQyxDQUFDO0VBRUZSLEVBQUUsQ0FBQyxvRUFBb0UsRUFBRSxNQUFNO0lBQzdFQyxNQUFNLENBQUMsSUFBQUMscUJBQWMsRUFDbkI7TUFDRUMsS0FBSyxFQUFFO1FBQ0xDLE1BQU0sRUFBRTtVQUNOQyxjQUFjLEVBQUU7UUFDbEI7TUFDRixDQUFDO01BQ0RDLE9BQU8sRUFBRTtRQUFFQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSTtNQUFFO0lBQ2pDLENBQUMsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUM7RUFDckIsQ0FBQyxDQUFDO0VBRUZSLEVBQUUsQ0FBQywrREFBK0QsRUFBRSxNQUFNO0lBQ3hFQyxNQUFNLENBQUMsSUFBQUMscUJBQWMsRUFDbkI7TUFDRUMsS0FBSyxFQUFFO1FBQ0xDLE1BQU0sRUFBRTtVQUNOQyxjQUFjLEVBQUU7UUFDbEI7TUFDRixDQUFDO01BQ0RDLE9BQU8sRUFBRTtRQUFFQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO01BQUU7SUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQztFQUNyQixDQUFDLENBQUM7RUFFRlIsRUFBRSxDQUFDLCtEQUErRCxFQUFFLE1BQU07SUFDeEVDLE1BQU0sQ0FBQyxJQUFBQyxxQkFBYyxFQUNuQjtNQUNFQyxLQUFLLEVBQUU7UUFDTEMsTUFBTSxFQUFFO1VBQ05DLGNBQWMsRUFBRTtRQUNsQjtNQUNGLENBQUM7TUFDREMsT0FBTyxFQUFFO1FBQUVDLEtBQUssRUFBRTtNQUFHO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxLQUFLLENBQUM7RUFDdEIsQ0FBQyxDQUFDO0VBRUZSLEVBQUUsQ0FBQyxzRUFBc0UsRUFBRSxNQUFNO0lBQy9FQyxNQUFNLENBQUMsSUFBQUMscUJBQWMsRUFDbkI7TUFDRUMsS0FBSyxFQUFFO1FBQ0xDLE1BQU0sRUFBRTtVQUNOQyxjQUFjLEVBQUU7UUFDbEI7TUFDRixDQUFDO01BQ0RDLE9BQU8sRUFBRTtRQUFFQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO01BQUU7SUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLEtBQUssQ0FBQztFQUN0QixDQUFDLENBQUM7RUFFRlIsRUFBRSxDQUFDLHNFQUFzRSxFQUFFLE1BQU07SUFDL0VDLE1BQU0sQ0FBQyxJQUFBQyxxQkFBYyxFQUNuQjtNQUNFQyxLQUFLLEVBQUU7UUFDTEMsTUFBTSxFQUFFO1VBQ05DLGNBQWMsRUFBRTtRQUNsQjtNQUNGLENBQUM7TUFDREMsT0FBTyxFQUFFO1FBQUVDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJO01BQUU7SUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLEtBQUssQ0FBQztFQUN0QixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ var _ordering = require("../ordering");
4
+ var _lodashEs = require("lodash-es");
5
+ describe('ordering', () => {
6
+ const toLabel = a => `${a[0]}->${a[1]}`;
7
+ const choice = id => ({
8
+ type: 'choice',
9
+ id,
10
+ draggable: true,
11
+ droppable: false
12
+ });
13
+ const target = (id, index) => ({
14
+ id,
15
+ index,
16
+ type: 'target',
17
+ draggable: id !== undefined,
18
+ empty: id === undefined
19
+ });
20
+ const buildArgs = choiceArg => {
21
+ if (Array.isArray(choiceArg)) {
22
+ return {
23
+ choices: choiceArg,
24
+ response: [],
25
+ outcome: []
26
+ };
27
+ }
28
+ return {
29
+ response: [],
30
+ outcome: [],
31
+ ...choiceArg
32
+ };
33
+ };
34
+ const buildEndState = (input, actions, action, opts) => {
35
+ const {
36
+ choices,
37
+ response,
38
+ outcome
39
+ } = buildArgs(input);
40
+ const choiceIds = choices.map(id => ({
41
+ id
42
+ }));
43
+ const initialState = (0, _ordering.buildState)(choiceIds, response, outcome, opts);
44
+ return (actions || []).reduce((state, [fromIndex, toIndex]) => {
45
+ let tiles;
46
+ if (!opts.includeTargets) {
47
+ tiles = state.tiles.filter(tile => tile.type === 'choice');
48
+ } else {
49
+ tiles = state.tiles;
50
+ }
51
+ const from = tiles[fromIndex];
52
+ const to = tiles[toIndex];
53
+ return (0, _ordering.reducer)({
54
+ ...action,
55
+ from,
56
+ to
57
+ }, state);
58
+ }, initialState);
59
+ };
60
+ describe('reducer', () => {
61
+ const assertPushLabel = (i, actions, e) => `${i.tiles.map(t => t.id)} + ${actions.map(toLabel).join(', ')} = ${e}`;
62
+ const assertMoveLabel = (i, actions, expected) => {
63
+ const tiles = (0, _lodashEs.take)(i.tiles, 4).map(t => t.id);
64
+ return `${tiles} + ${actions.map(toLabel)} = ${expected.choices.map(c => c || '_')}|${expected.targets.map(t => t || '_')}`;
65
+ };
66
+ const assertResponseLabel = (s, actions, expected) => `${actions.map(toLabel)} = response: ${expected.map(v => v || '_')}`;
67
+ const allProps = {
68
+ includeTargets: true,
69
+ allowSameChoiceInTargets: true
70
+ };
71
+ const withoutTargets = {
72
+ includeTargets: false
73
+ };
74
+ const uniqueChoiceInTargets = {
75
+ includeTargets: true,
76
+ allowSameChoiceInTargets: false
77
+ };
78
+ const moveAction = {
79
+ type: 'move'
80
+ };
81
+ const simpleInput = [1, 2, 3, 4];
82
+ const shortInput = [1, 2];
83
+ const responseInput = {
84
+ choices: [1, 2],
85
+ response: [undefined, 1]
86
+ };
87
+ describe.each([[simpleInput, [[0, 1]], moveAction, withoutTargets, [2, 1, 3, 4]], [simpleInput, [[0, 1], [2, 1]], moveAction, withoutTargets, [2, 3, 1, 4]], [simpleInput, [[0, 4]], moveAction, uniqueChoiceInTargets, {
88
+ choices: [undefined, 2, 3, 4],
89
+ targets: [1, undefined, undefined, undefined]
90
+ }], [simpleInput, [[0, 4]], moveAction, allProps, {
91
+ choices: [1, 2, 3, 4],
92
+ targets: [1, undefined, undefined, undefined]
93
+ }], [simpleInput, [[0, 4], [2, 7]], moveAction, uniqueChoiceInTargets, {
94
+ choices: [undefined, 2, undefined, 4],
95
+ targets: [1, undefined, undefined, 3]
96
+ }], [shortInput, [[0, 3]], moveAction, allProps, [choice(1), choice(2), target(undefined, 0), target(1, 1)]], [shortInput, [[0, 3]], moveAction, allProps, {
97
+ response: [undefined, 1]
98
+ }], [shortInput, [[0, 2]], moveAction, allProps, {
99
+ response: [1, undefined]
100
+ }], [responseInput, [[3, 0]], moveAction, allProps, {
101
+ response: [undefined, undefined]
102
+ }], [responseInput, [[3, 1]], moveAction, allProps, {
103
+ response: [undefined, undefined]
104
+ }], [responseInput, [[3, 2]], moveAction, allProps, {
105
+ response: [1, undefined]
106
+ }]])('$input => $expected', (input, actions, actionType, opts, expected) => {
107
+ const state = buildEndState(input, actions, actionType, opts);
108
+ if (!opts.includeTargets) {
109
+ const label = assertPushLabel(state, actions, expected);
110
+ it(label, () => {
111
+ expect(state.tiles.map(t => t.id).filter((item, index, array) => array.indexOf(item) === index)).toEqual(expected);
112
+ });
113
+ } else if (expected.choices) {
114
+ const label = assertMoveLabel(state, actions, expected);
115
+ it(label, () => {
116
+ let [choiceTiles, targetTiles] = (0, _lodashEs.chunk)(state.tiles, 4);
117
+ expect(choiceTiles.map(t => t.id)).toEqual(expected.choices);
118
+ expect(targetTiles.map(t => t.id)).toEqual(expected.targets);
119
+ });
120
+ } else if (expected.response) {
121
+ const label = assertResponseLabel(state, actions, expected.response);
122
+ it(label, () => {
123
+ expect(state.response).toEqual(expected.response);
124
+ });
125
+ } else {
126
+ it('works', () => {
127
+ expect(state.tiles).toEqual(expected);
128
+ });
129
+ }
130
+ });
131
+ });
132
+ });
133
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfb3JkZXJpbmciLCJyZXF1aXJlIiwiX2xvZGFzaEVzIiwiZGVzY3JpYmUiLCJ0b0xhYmVsIiwiYSIsImNob2ljZSIsImlkIiwidHlwZSIsImRyYWdnYWJsZSIsImRyb3BwYWJsZSIsInRhcmdldCIsImluZGV4IiwidW5kZWZpbmVkIiwiZW1wdHkiLCJidWlsZEFyZ3MiLCJjaG9pY2VBcmciLCJBcnJheSIsImlzQXJyYXkiLCJjaG9pY2VzIiwicmVzcG9uc2UiLCJvdXRjb21lIiwiYnVpbGRFbmRTdGF0ZSIsImlucHV0IiwiYWN0aW9ucyIsImFjdGlvbiIsIm9wdHMiLCJjaG9pY2VJZHMiLCJtYXAiLCJpbml0aWFsU3RhdGUiLCJidWlsZFN0YXRlIiwicmVkdWNlIiwic3RhdGUiLCJmcm9tSW5kZXgiLCJ0b0luZGV4IiwidGlsZXMiLCJpbmNsdWRlVGFyZ2V0cyIsImZpbHRlciIsInRpbGUiLCJmcm9tIiwidG8iLCJyZWR1Y2VyIiwiYXNzZXJ0UHVzaExhYmVsIiwiaSIsImUiLCJ0Iiwiam9pbiIsImFzc2VydE1vdmVMYWJlbCIsImV4cGVjdGVkIiwidGFrZSIsImMiLCJ0YXJnZXRzIiwiYXNzZXJ0UmVzcG9uc2VMYWJlbCIsInMiLCJ2IiwiYWxsUHJvcHMiLCJhbGxvd1NhbWVDaG9pY2VJblRhcmdldHMiLCJ3aXRob3V0VGFyZ2V0cyIsInVuaXF1ZUNob2ljZUluVGFyZ2V0cyIsIm1vdmVBY3Rpb24iLCJzaW1wbGVJbnB1dCIsInNob3J0SW5wdXQiLCJyZXNwb25zZUlucHV0IiwiZWFjaCIsImFjdGlvblR5cGUiLCJsYWJlbCIsIml0IiwiZXhwZWN0IiwiaXRlbSIsImFycmF5IiwiaW5kZXhPZiIsInRvRXF1YWwiLCJjaG9pY2VUaWxlcyIsInRhcmdldFRpbGVzIiwiY2h1bmsiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL29yZGVyaW5nLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnVpbGRTdGF0ZSwgcmVkdWNlciB9IGZyb20gJy4uL29yZGVyaW5nJztcbmltcG9ydCB7IGNodW5rLCB0YWtlIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZGVzY3JpYmUoJ29yZGVyaW5nJywgKCkgPT4ge1xuICBjb25zdCB0b0xhYmVsID0gKGEpID0+IGAke2FbMF19LT4ke2FbMV19YDtcblxuICBjb25zdCBjaG9pY2UgPSAoaWQpID0+ICh7XG4gICAgdHlwZTogJ2Nob2ljZScsXG4gICAgaWQsXG4gICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgIGRyb3BwYWJsZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHRhcmdldCA9IChpZCwgaW5kZXgpID0+ICh7XG4gICAgaWQsXG4gICAgaW5kZXgsXG4gICAgdHlwZTogJ3RhcmdldCcsXG4gICAgZHJhZ2dhYmxlOiBpZCAhPT0gdW5kZWZpbmVkLFxuICAgIGVtcHR5OiBpZCA9PT0gdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBidWlsZEFyZ3MgPSAoY2hvaWNlQXJnKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hvaWNlQXJnKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hvaWNlczogY2hvaWNlQXJnLFxuICAgICAgICByZXNwb25zZTogW10sXG4gICAgICAgIG91dGNvbWU6IFtdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyByZXNwb25zZTogW10sIG91dGNvbWU6IFtdLCAuLi5jaG9pY2VBcmcgfTtcbiAgfTtcblxuICBjb25zdCBidWlsZEVuZFN0YXRlID0gKGlucHV0LCBhY3Rpb25zLCBhY3Rpb24sIG9wdHMpID0+IHtcbiAgICBjb25zdCB7IGNob2ljZXMsIHJlc3BvbnNlLCBvdXRjb21lIH0gPSBidWlsZEFyZ3MoaW5wdXQpO1xuICAgIGNvbnN0IGNob2ljZUlkcyA9IGNob2ljZXMubWFwKChpZCkgPT4gKHsgaWQgfSkpO1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IGJ1aWxkU3RhdGUoY2hvaWNlSWRzLCByZXNwb25zZSwgb3V0Y29tZSwgb3B0cyk7XG5cbiAgICByZXR1cm4gKGFjdGlvbnMgfHwgW10pLnJlZHVjZSgoc3RhdGUsIFtmcm9tSW5kZXgsIHRvSW5kZXhdKSA9PiB7XG4gICAgICBsZXQgdGlsZXM7XG5cbiAgICAgIGlmICghb3B0cy5pbmNsdWRlVGFyZ2V0cykge1xuICAgICAgICB0aWxlcyA9IHN0YXRlLnRpbGVzLmZpbHRlcigodGlsZSkgPT4gdGlsZS50eXBlID09PSAnY2hvaWNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aWxlcyA9IHN0YXRlLnRpbGVzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmcm9tID0gdGlsZXNbZnJvbUluZGV4XTtcbiAgICAgIGNvbnN0IHRvID0gdGlsZXNbdG9JbmRleF07XG5cbiAgICAgIHJldHVybiByZWR1Y2VyKHsgLi4uYWN0aW9uLCBmcm9tLCB0byB9LCBzdGF0ZSk7XG4gICAgfSwgaW5pdGlhbFN0YXRlKTtcbiAgfTtcblxuICBkZXNjcmliZSgncmVkdWNlcicsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnRQdXNoTGFiZWwgPSAoaSwgYWN0aW9ucywgZSkgPT5cbiAgICAgIGAke2kudGlsZXMubWFwKCh0KSA9PiB0LmlkKX0gKyAke2FjdGlvbnMubWFwKHRvTGFiZWwpLmpvaW4oJywgJyl9ID0gJHtlfWA7XG5cbiAgICBjb25zdCBhc3NlcnRNb3ZlTGFiZWwgPSAoaSwgYWN0aW9ucywgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGNvbnN0IHRpbGVzID0gdGFrZShpLnRpbGVzLCA0KS5tYXAoKHQpID0+IHQuaWQpO1xuXG4gICAgICByZXR1cm4gYCR7dGlsZXN9ICsgJHthY3Rpb25zLm1hcCh0b0xhYmVsKX0gPSAke2V4cGVjdGVkLmNob2ljZXMubWFwKChjKSA9PiBjIHx8ICdfJyl9fCR7ZXhwZWN0ZWQudGFyZ2V0cy5tYXAoXG4gICAgICAgICh0KSA9PiB0IHx8ICdfJyxcbiAgICAgICl9YDtcbiAgICB9O1xuXG4gICAgY29uc3QgYXNzZXJ0UmVzcG9uc2VMYWJlbCA9IChzLCBhY3Rpb25zLCBleHBlY3RlZCkgPT5cbiAgICAgIGAke2FjdGlvbnMubWFwKHRvTGFiZWwpfSA9IHJlc3BvbnNlOiAke2V4cGVjdGVkLm1hcCgodikgPT4gdiB8fCAnXycpfWA7XG4gICAgY29uc3QgYWxsUHJvcHMgPSB7IGluY2x1ZGVUYXJnZXRzOiB0cnVlLCBhbGxvd1NhbWVDaG9pY2VJblRhcmdldHM6IHRydWUgfTtcbiAgICBjb25zdCB3aXRob3V0VGFyZ2V0cyA9IHsgaW5jbHVkZVRhcmdldHM6IGZhbHNlIH07XG4gICAgY29uc3QgdW5pcXVlQ2hvaWNlSW5UYXJnZXRzID0geyBpbmNsdWRlVGFyZ2V0czogdHJ1ZSwgYWxsb3dTYW1lQ2hvaWNlSW5UYXJnZXRzOiBmYWxzZSB9O1xuICAgIGNvbnN0IG1vdmVBY3Rpb24gPSB7IHR5cGU6ICdtb3ZlJyB9O1xuICAgIGNvbnN0IHNpbXBsZUlucHV0ID0gWzEsIDIsIDMsIDRdO1xuICAgIGNvbnN0IHNob3J0SW5wdXQgPSBbMSwgMl07XG4gICAgY29uc3QgcmVzcG9uc2VJbnB1dCA9IHsgY2hvaWNlczogWzEsIDJdLCByZXNwb25zZTogW3VuZGVmaW5lZCwgMV0gfTtcblxuICAgIGRlc2NyaWJlLmVhY2goW1xuICAgICAgW3NpbXBsZUlucHV0LCBbWzAsIDFdXSwgbW92ZUFjdGlvbiwgd2l0aG91dFRhcmdldHMsIFsyLCAxLCAzLCA0XV0sXG4gICAgICBbXG4gICAgICAgIHNpbXBsZUlucHV0LFxuICAgICAgICBbXG4gICAgICAgICAgWzAsIDFdLFxuICAgICAgICAgIFsyLCAxXSxcbiAgICAgICAgXSxcbiAgICAgICAgbW92ZUFjdGlvbixcbiAgICAgICAgd2l0aG91dFRhcmdldHMsXG4gICAgICAgIFsyLCAzLCAxLCA0XSxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHNpbXBsZUlucHV0LFxuICAgICAgICBbWzAsIDRdXSxcbiAgICAgICAgbW92ZUFjdGlvbixcbiAgICAgICAgdW5pcXVlQ2hvaWNlSW5UYXJnZXRzLFxuICAgICAgICB7XG4gICAgICAgICAgY2hvaWNlczogW3VuZGVmaW5lZCwgMiwgMywgNF0sXG4gICAgICAgICAgdGFyZ2V0czogWzEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgc2ltcGxlSW5wdXQsXG4gICAgICAgIFtbMCwgNF1dLFxuICAgICAgICBtb3ZlQWN0aW9uLFxuICAgICAgICBhbGxQcm9wcyxcbiAgICAgICAge1xuICAgICAgICAgIGNob2ljZXM6IFsxLCAyLCAzLCA0XSxcbiAgICAgICAgICB0YXJnZXRzOiBbMSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBzaW1wbGVJbnB1dCxcbiAgICAgICAgW1xuICAgICAgICAgIFswLCA0XSxcbiAgICAgICAgICBbMiwgN10sXG4gICAgICAgIF0sXG4gICAgICAgIG1vdmVBY3Rpb24sXG4gICAgICAgIHVuaXF1ZUNob2ljZUluVGFyZ2V0cyxcbiAgICAgICAge1xuICAgICAgICAgIGNob2ljZXM6IFt1bmRlZmluZWQsIDIsIHVuZGVmaW5lZCwgNF0sXG4gICAgICAgICAgdGFyZ2V0czogWzEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAzXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBbc2hvcnRJbnB1dCwgW1swLCAzXV0sIG1vdmVBY3Rpb24sIGFsbFByb3BzLCBbY2hvaWNlKDEpLCBjaG9pY2UoMiksIHRhcmdldCh1bmRlZmluZWQsIDApLCB0YXJnZXQoMSwgMSldXSxcbiAgICAgIFtzaG9ydElucHV0LCBbWzAsIDNdXSwgbW92ZUFjdGlvbiwgYWxsUHJvcHMsIHsgcmVzcG9uc2U6IFt1bmRlZmluZWQsIDFdIH1dLFxuICAgICAgW3Nob3J0SW5wdXQsIFtbMCwgMl1dLCBtb3ZlQWN0aW9uLCBhbGxQcm9wcywgeyByZXNwb25zZTogWzEsIHVuZGVmaW5lZF0gfV0sXG4gICAgICBbcmVzcG9uc2VJbnB1dCwgW1szLCAwXV0sIG1vdmVBY3Rpb24sIGFsbFByb3BzLCB7IHJlc3BvbnNlOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdIH1dLFxuICAgICAgW3Jlc3BvbnNlSW5wdXQsIFtbMywgMV1dLCBtb3ZlQWN0aW9uLCBhbGxQcm9wcywgeyByZXNwb25zZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSB9XSxcbiAgICAgIFtyZXNwb25zZUlucHV0LCBbWzMsIDJdXSwgbW92ZUFjdGlvbiwgYWxsUHJvcHMsIHsgcmVzcG9uc2U6IFsxLCB1bmRlZmluZWRdIH1dLFxuICAgIF0pKCckaW5wdXQgPT4gJGV4cGVjdGVkJywgKGlucHV0LCBhY3Rpb25zLCBhY3Rpb25UeXBlLCBvcHRzLCBleHBlY3RlZCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSBidWlsZEVuZFN0YXRlKGlucHV0LCBhY3Rpb25zLCBhY3Rpb25UeXBlLCBvcHRzKTtcblxuICAgICAgaWYgKCFvcHRzLmluY2x1ZGVUYXJnZXRzKSB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gYXNzZXJ0UHVzaExhYmVsKHN0YXRlLCBhY3Rpb25zLCBleHBlY3RlZCk7XG5cbiAgICAgICAgaXQobGFiZWwsICgpID0+IHtcbiAgICAgICAgICBleHBlY3Qoc3RhdGUudGlsZXMubWFwKCh0KSA9PiB0LmlkKS5maWx0ZXIoKGl0ZW0sIGluZGV4LCBhcnJheSkgPT4gYXJyYXkuaW5kZXhPZihpdGVtKSA9PT0gaW5kZXgpKS50b0VxdWFsKFxuICAgICAgICAgICAgZXhwZWN0ZWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV4cGVjdGVkLmNob2ljZXMpIHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBhc3NlcnRNb3ZlTGFiZWwoc3RhdGUsIGFjdGlvbnMsIGV4cGVjdGVkKTtcblxuICAgICAgICBpdChsYWJlbCwgKCkgPT4ge1xuICAgICAgICAgIGxldCBbY2hvaWNlVGlsZXMsIHRhcmdldFRpbGVzXSA9IGNodW5rKHN0YXRlLnRpbGVzLCA0KTtcblxuICAgICAgICAgIGV4cGVjdChjaG9pY2VUaWxlcy5tYXAoKHQpID0+IHQuaWQpKS50b0VxdWFsKGV4cGVjdGVkLmNob2ljZXMpO1xuICAgICAgICAgIGV4cGVjdCh0YXJnZXRUaWxlcy5tYXAoKHQpID0+IHQuaWQpKS50b0VxdWFsKGV4cGVjdGVkLnRhcmdldHMpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXhwZWN0ZWQucmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBhc3NlcnRSZXNwb25zZUxhYmVsKHN0YXRlLCBhY3Rpb25zLCBleHBlY3RlZC5yZXNwb25zZSk7XG5cbiAgICAgICAgaXQobGFiZWwsICgpID0+IHtcbiAgICAgICAgICBleHBlY3Qoc3RhdGUucmVzcG9uc2UpLnRvRXF1YWwoZXhwZWN0ZWQucmVzcG9uc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0KCd3b3JrcycsICgpID0+IHtcbiAgICAgICAgICBleHBlY3Qoc3RhdGUudGlsZXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxTQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFFQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNO0VBQ3pCLE1BQU1DLE9BQU8sR0FBSUMsQ0FBQyxJQUFLLEdBQUdBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBS0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBRXpDLE1BQU1DLE1BQU0sR0FBSUMsRUFBRSxLQUFNO0lBQ3RCQyxJQUFJLEVBQUUsUUFBUTtJQUNkRCxFQUFFO0lBQ0ZFLFNBQVMsRUFBRSxJQUFJO0lBQ2ZDLFNBQVMsRUFBRTtFQUNiLENBQUMsQ0FBQztFQUVGLE1BQU1DLE1BQU0sR0FBR0EsQ0FBQ0osRUFBRSxFQUFFSyxLQUFL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