@pie-lib/controller-utils 1.1.0-next.0 → 1.1.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.1.0-next.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/controller-utils@1.1.0-next.1...@pie-lib/controller-utils@1.1.0-next.3) (2026-01-27)
7
+
8
+ **Note:** Version bump only for package @pie-lib/controller-utils
9
+
10
+
11
+
12
+
13
+
14
+ # [1.1.0-next.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/controller-utils@0.22.2...@pie-lib/controller-utils@1.1.0-next.1) (2026-01-26)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * remove exports and publish ([#2068](https://github.com/pie-framework/pie-lib/issues/2068)) ([60a96cd](https://github.com/pie-framework/pie-lib/commit/60a96cde0ec65f6b1cac0ae329aa33a0abc50d05))
20
+
21
+
22
+ ### Features
23
+
24
+ * sync latest changes from dev ([c936e9c](https://github.com/pie-framework/pie-lib/commit/c936e9c7f9e095e7d9b9805ac2bf72bd271e05f1))
25
+
26
+
27
+
28
+
29
+
6
30
  # [1.0.0-next.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/controller-utils@0.22.3-next.0...@pie-lib/controller-utils@1.0.0-next.0) (2026-01-19)
7
31
 
8
32
  **Note:** Version bump only for package @pie-lib/controller-utils
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/controller-utils",
3
- "version": "1.1.0-next.0",
3
+ "version": "1.1.0-next.3",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -14,5 +14,5 @@
14
14
  "scripts": {},
15
15
  "author": "",
16
16
  "license": "ISC",
17
- "gitHead": "ea48997dd3060761b741790f27d70f750ee0e2a8"
17
+ "gitHead": "8ea41592c5553487014f2694f91b657c4f62d131"
18
18
  }
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- var _partialScoring = require("../partial-scoring");
4
- describe('enabled', function () {
5
- var assertEnabled = function assertEnabled(config, env, expected) {
6
- it("returns ".concat(expected, " for: config: ").concat(config.partialScoring, ", env:").concat(env.partialScoring), function () {
7
- var result = (0, _partialScoring.enabled)(config, env);
8
- expect(result).toEqual(expected);
9
- });
10
- };
11
- var config = function config(v) {
12
- return {
13
- partialScoring: v
14
- };
15
- };
16
- var env = function env(v) {
17
- return {
18
- partialScoring: v
19
- };
20
- };
21
- assertEnabled(config(undefined), env(undefined), true);
22
- assertEnabled(config(undefined), env(true), true);
23
- assertEnabled(config(undefined), env(false), false);
24
- assertEnabled(config(false), env(undefined), false);
25
- assertEnabled(config(false), env(true), false);
26
- assertEnabled(config(false), env(false), false);
27
- assertEnabled(config(true), env(undefined), true);
28
- assertEnabled(config(true), env(true), true);
29
- assertEnabled(config(true), env(false), false);
30
- });
31
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGFydGlhbFNjb3JpbmciLCJyZXF1aXJlIiwiZGVzY3JpYmUiLCJhc3NlcnRFbmFibGVkIiwiY29uZmlnIiwiZW52IiwiZXhwZWN0ZWQiLCJpdCIsImNvbmNhdCIsInBhcnRpYWxTY29yaW5nIiwicmVzdWx0IiwiZW5hYmxlZCIsImV4cGVjdCIsInRvRXF1YWwiLCJ2IiwidW5kZWZpbmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9wYXJ0aWFsLXNjb3JpbmcudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbmFibGVkIH0gZnJvbSAnLi4vcGFydGlhbC1zY29yaW5nJztcblxuZGVzY3JpYmUoJ2VuYWJsZWQnLCAoKSA9PiB7XG4gIGNvbnN0IGFzc2VydEVuYWJsZWQgPSAoY29uZmlnLCBlbnYsIGV4cGVjdGVkKSA9PiB7XG4gICAgaXQoYHJldHVybnMgJHtleHBlY3RlZH0gZm9yOiBjb25maWc6ICR7Y29uZmlnLnBhcnRpYWxTY29yaW5nfSwgZW52OiR7ZW52LnBhcnRpYWxTY29yaW5nfWAsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGVuYWJsZWQoY29uZmlnLCBlbnYpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgY29uZmlnID0gKHYpID0+ICh7IHBhcnRpYWxTY29yaW5nOiB2IH0pO1xuICBjb25zdCBlbnYgPSAodikgPT4gKHsgcGFydGlhbFNjb3Jpbmc6IHYgfSk7XG5cbiAgYXNzZXJ0RW5hYmxlZChjb25maWcodW5kZWZpbmVkKSwgZW52KHVuZGVmaW5lZCksIHRydWUpO1xuICBhc3NlcnRFbmFibGVkKGNvbmZpZyh1bmRlZmluZWQpLCBlbnYodHJ1ZSksIHRydWUpO1xuICBhc3NlcnRFbmFibGVkKGNvbmZpZyh1bmRlZmluZWQpLCBlbnYoZmFsc2UpLCBmYWxzZSk7XG5cbiAgYXNzZXJ0RW5hYmxlZChjb25maWcoZmFsc2UpLCBlbnYodW5kZWZpbmVkKSwgZmFsc2UpO1xuICBhc3NlcnRFbmFibGVkKGNvbmZpZyhmYWxzZSksIGVudih0cnVlKSwgZmFsc2UpO1xuICBhc3NlcnRFbmFibGVkKGNvbmZpZyhmYWxzZSksIGVudihmYWxzZSksIGZhbHNlKTtcblxuICBhc3NlcnRFbmFibGVkKGNvbmZpZyh0cnVlKSwgZW52KHVuZGVmaW5lZCksIHRydWUpO1xuICBhc3NlcnRFbmFibGVkKGNvbmZpZyh0cnVlKSwgZW52KHRydWUpLCB0cnVlKTtcbiAgYXNzZXJ0RW5hYmxlZChjb25maWcodHJ1ZSksIGVudihmYWxzZSksIGZhbHNlKTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLGVBQUEsR0FBQUMsT0FBQTtBQUVBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFlBQU07RUFDeEIsSUFBTUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJQyxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsUUFBUSxFQUFLO0lBQy9DQyxFQUFFLFlBQUFDLE1BQUEsQ0FBWUYsUUFBUSxvQkFBQUUsTUFBQSxDQUFpQkosTUFBTSxDQUFDSyxjQUFjLFlBQUFELE1BQUEsQ0FBU0gsR0FBRyxDQUFDSSxjQUFjLEdBQUksWUFBTTtNQUMvRixJQUFNQyxNQUFNLEdBQUcsSUFBQUMsdUJBQU8sRUFBQ1AsTUFBTSxFQUFFQyxHQUFHLENBQUM7TUFDbkNPLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDLENBQUNHLE9BQU8sQ0FBQ1AsUUFBUSxDQUFDO0lBQ2xDLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxJQUFNRixNQUFNLEdBQUcsU0FBVEEsTUFBTUEsQ0FBSVUsQ0FBQztJQUFBLE9BQU07TUFBRUwsY0FBYyxFQUFFSztJQUFFLENBQUM7RUFBQSxDQUFDO0VBQzdDLElBQU1ULEdBQUcsR0FBRyxTQUFOQSxHQUFHQSxDQUFJUyxDQUFDO0lBQUEsT0FBTTtNQUFFTCxjQUFjLEVBQUVLO0lBQUUsQ0FBQztFQUFBLENBQUM7RUFFMUNYLGFBQWEsQ0FBQ0MsTUFBTSxDQUFDVyxTQUFTLENBQUMsRUFBRVYsR0FBRyxDQUFDVSxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUM7RUFDdERaLGFBQWEsQ0FBQ0MsTUFBTSxDQUFDVyxTQUFTLENBQUMsRUFBRVYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztFQUNqREYsYUFBYSxDQUFDQyxNQUFNLENBQUNXLFNBQVMsQ0FBQyxFQUFFVixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDO0VBRW5ERixhQUFhLENBQUNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRUMsR0FBRyxDQUFDVSxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUM7RUFDbkRaLGFBQWEsQ0FBQ0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDO0VBQzlDRixhQUFhLENBQUNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQztFQUUvQ0YsYUFBYSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUcsQ0FBQ1UsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDO0VBQ2pEWixhQUFhLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztFQUM1Q0YsYUFBYSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDaEQsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,256 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
5
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
- var _persistence = require("../persistence");
9
- var _templateObject, _templateObject2, _templateObject3;
10
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
- describe('getShuffledChoices', function () {
13
- var choices, session, updateSession, key;
14
- beforeEach(function () {
15
- updateSession = jest.fn().mockResolvedValue([]);
16
- session = {
17
- id: '1',
18
- element: 'element'
19
- };
20
- choices = [{
21
- value: 1
22
- }, {
23
- value: 2
24
- }];
25
- key = 'value';
26
- });
27
- describe('0 key', function () {
28
- it('calls update session w/ 0 as a key', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
29
- var result;
30
- return _regenerator["default"].wrap(function (_context) {
31
- while (1) switch (_context.prev = _context.next) {
32
- case 0:
33
- _context.next = 1;
34
- return (0, _persistence.getShuffledChoices)([{
35
- value: 0
36
- }, {
37
- value: 1
38
- }], session, updateSession, 'value');
39
- case 1:
40
- result = _context.sent;
41
- expect(updateSession).toHaveBeenCalledWith(session.id, session.element, {
42
- shuffledValues: expect.arrayContaining([0, 1])
43
- });
44
- case 2:
45
- case "end":
46
- return _context.stop();
47
- }
48
- }, _callee);
49
- })));
50
- });
51
- describe('handles null values in session', function () {
52
- beforeEach(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
53
- var result;
54
- return _regenerator["default"].wrap(function (_context2) {
55
- while (1) switch (_context2.prev = _context2.next) {
56
- case 0:
57
- _context2.next = 1;
58
- return (0, _persistence.getShuffledChoices)(choices, _objectSpread(_objectSpread({}, session), {}, {
59
- shuffledValues: [null]
60
- }), updateSession, 'value');
61
- case 1:
62
- result = _context2.sent;
63
- case 2:
64
- case "end":
65
- return _context2.stop();
66
- }
67
- }, _callee2);
68
- })));
69
- it('calls updateSession w/ new shuffle cos [null] is treated as empty', function () {
70
- expect(updateSession).toHaveBeenCalledWith(session.id, session.element, {
71
- shuffledValues: expect.arrayContaining([1, 2])
72
- });
73
- });
74
- });
75
- describe('bad shuffle generation does not call updateSession', function () {
76
- beforeEach(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
77
- var result;
78
- return _regenerator["default"].wrap(function (_context3) {
79
- while (1) switch (_context3.prev = _context3.next) {
80
- case 0:
81
- _context3.next = 1;
82
- return (0, _persistence.getShuffledChoices)(choices, {}, updateSession, 'foo');
83
- case 1:
84
- result = _context3.sent;
85
- case 2:
86
- case "end":
87
- return _context3.stop();
88
- }
89
- }, _callee3);
90
- })));
91
- it('does not call update session', function () {
92
- expect(updateSession).not.toHaveBeenCalled();
93
- });
94
- });
95
- describe('session does not exist', function () {
96
- it('returns undefined for empty session', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
97
- var result;
98
- return _regenerator["default"].wrap(function (_context4) {
99
- while (1) switch (_context4.prev = _context4.next) {
100
- case 0:
101
- _context4.next = 1;
102
- return (0, _persistence.getShuffledChoices)(choices, undefined, updateSession, key);
103
- case 1:
104
- result = _context4.sent;
105
- expect(result).toEqual(undefined);
106
- case 2:
107
- case "end":
108
- return _context4.stop();
109
- }
110
- }, _callee4);
111
- })));
112
- });
113
- describe('session exists', function () {
114
- it('returns compact choices if session has shuffledValues', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
115
- var result;
116
- return _regenerator["default"].wrap(function (_context5) {
117
- while (1) switch (_context5.prev = _context5.next) {
118
- case 0:
119
- session = {
120
- shuffledValues: [2, 1]
121
- };
122
- _context5.next = 1;
123
- return (0, _persistence.getShuffledChoices)(choices, session, updateSession, key);
124
- case 1:
125
- result = _context5.sent;
126
- expect(result).toEqual(expect.arrayContaining(choices));
127
- case 2:
128
- case "end":
129
- return _context5.stop();
130
- }
131
- }, _callee5);
132
- })));
133
- it('returns shuffled choices if updateSession is a function', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
134
- var result;
135
- return _regenerator["default"].wrap(function (_context6) {
136
- while (1) switch (_context6.prev = _context6.next) {
137
- case 0:
138
- session = {};
139
- updateSession = jest.fn().mockResolvedValue();
140
- _context6.next = 1;
141
- return (0, _persistence.getShuffledChoices)(choices, session, updateSession, key);
142
- case 1:
143
- result = _context6.sent;
144
- expect(result).toEqual(expect.arrayContaining(choices));
145
- case 2:
146
- case "end":
147
- return _context6.stop();
148
- }
149
- }, _callee6);
150
- })));
151
- it('calls updateSession as expected if updateSession is a function', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
152
- return _regenerator["default"].wrap(function (_context7) {
153
- while (1) switch (_context7.prev = _context7.next) {
154
- case 0:
155
- session = {
156
- id: '1',
157
- element: 'pie-element'
158
- };
159
- _context7.next = 1;
160
- return (0, _persistence.getShuffledChoices)(choices, session, updateSession, key);
161
- case 1:
162
- expect(updateSession).toHaveBeenCalledWith('1', 'pie-element', {
163
- shuffledValues: expect.arrayContaining([1, 2])
164
- });
165
- case 2:
166
- case "end":
167
- return _context7.stop();
168
- }
169
- }, _callee7);
170
- })));
171
- });
172
- });
173
- describe('lockChoices', function () {
174
- var env = function env(lockChoiceOrder) {
175
- var role = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'student';
176
- return {
177
- '@pie-element': {
178
- lockChoiceOrder: lockChoiceOrder
179
- },
180
- role: role
181
- };
182
- };
183
- var session = function session(shuffledValues) {
184
- return {
185
- shuffledValues: shuffledValues
186
- };
187
- };
188
- it.each(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n modelLock | session | env | expected\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n "])), true, session(), env(true), true, true, session(), env(false), true, false, session(), env(true), true, false, session(), env(false), false, false, session(), undefined, false, false, undefined, undefined, false, undefined, session(), env(false), false, undefined, session(), env(undefined), false, false, session(), env(false, 'instructor'), true, false, session([0, 1]), env(false, 'instructor'), true, false, undefined, env(false, 'instructor'), true)('1. model.lockChoiceOrder: $modelLock, $session, $env => $expected', function (_ref8) {
189
- var modelLock = _ref8.modelLock,
190
- session = _ref8.session,
191
- env = _ref8.env,
192
- expected = _ref8.expected;
193
- var model = {
194
- lockChoiceOrder: modelLock
195
- };
196
- var result = (0, _persistence.lockChoices)(model, session, env);
197
- expect(result).toEqual(expected);
198
- });
199
- });
200
- describe('lockChoices mod', function () {
201
- var env = function env(lockChoiceOrder) {
202
- var role = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'student';
203
- return {
204
- '@pie-element': {
205
- lockChoiceOrder: lockChoiceOrder
206
- },
207
- role: role
208
- };
209
- };
210
- var session = function session() {
211
- var answers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['foo', 'bar'];
212
- return {
213
- answers: answers
214
- };
215
- };
216
- it.each(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n modelLock | session | env | expected\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n "])), true, session(), env(true), true, true, session(), env(false), true, false, session(), env(true), true, false, session(), env(false), false, undefined, session(), env(true), true, undefined, session(), env(undefined), false, undefined, session(), env(undefined, 'instructor'), true)('2. model.lockChoiceOrder: $modelLock, $session, $env => $expected', function (_ref9) {
217
- var modelLock = _ref9.modelLock,
218
- session = _ref9.session,
219
- env = _ref9.env,
220
- expected = _ref9.expected;
221
- var model = {
222
- lockChoiceOrder: modelLock
223
- };
224
- var result = (0, _persistence.lockChoices)(model, session, env);
225
- expect(result).toEqual(expected);
226
- });
227
- });
228
- describe('lockChoices', function () {
229
- var env = function env(lockChoiceOrder) {
230
- var role = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'student';
231
- return {
232
- '@pie-element': {
233
- lockChoiceOrder: lockChoiceOrder
234
- },
235
- role: role
236
- };
237
- };
238
- var session = function session(shuffledValues) {
239
- return {
240
- shuffledValues: shuffledValues,
241
- answers: ['foo', 'bar']
242
- };
243
- };
244
- it.each(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n modelLock | session | env | expected\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n ", " | ", " | ", " | ", "\n "])), true, session(), env(true), true, true, session(), env(false), true, false, session(), env(true), true, false, session(), env(false), false, undefined, session(), env(true), true, undefined, session(), env(undefined), false, undefined, session(), env(undefined, 'instructor'), true)('3. model.lockChoiceOrder: $modelLock, $env => $expected', function (_ref0) {
245
- var modelLock = _ref0.modelLock,
246
- session = _ref0.session,
247
- env = _ref0.env,
248
- expected = _ref0.expected;
249
- var model = {
250
- lockChoiceOrder: modelLock
251
- };
252
- var result = (0, _persistence.lockChoices)(model, session, env);
253
- expect(result).toEqual(expected);
254
- });
255
- });
256
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGVyc2lzdGVuY2UiLCJyZXF1aXJlIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImRlc2NyaWJlIiwiY2hvaWNlcyIsInNlc3Npb24iLCJ1cGRhdGVTZXNzaW9uIiwia2V5IiwiYmVmb3JlRWFjaCIsImplc3QiLCJmbiIsIm1vY2tSZXNvbHZlZFZhbHVlIiwiaWQiLCJlbGVtZW50IiwidmFsdWUiLCJpdCIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwicmVzdWx0Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJnZXRTaHVmZmxlZENob2ljZXMiLCJzZW50IiwiZXhwZWN0IiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJzaHVmZmxlZFZhbHVlcyIsImFycmF5Q29udGFpbmluZyIsInN0b3AiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCIsIl9jYWxsZWU0IiwiX2NvbnRleHQ0IiwidW5kZWZpbmVkIiwidG9FcXVhbCIsIl9jYWxsZWU1IiwiX2NvbnRleHQ1IiwiX2NhbGxlZTYiLCJfY29udGV4dDYiLCJfY2FsbGVlNyIsIl9jb250ZXh0NyIsImVudiIsImxvY2tDaG9pY2VPcmRlciIsInJvbGUiLCJlYWNoIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJfcmVmOCIsIm1vZGVsTG9jayIsImV4cGVjdGVkIiwibW9kZWwiLCJsb2NrQ2hvaWNlcyIsImFuc3dlcnMiLCJfcmVmOSIsIl9yZWYwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9wZXJzaXN0ZW5jZS50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFNodWZmbGVkQ2hvaWNlcywgbG9ja0Nob2ljZXMgfSBmcm9tICcuLi9wZXJzaXN0ZW5jZSc7XG5cbmRlc2NyaWJlKCdnZXRTaHVmZmxlZENob2ljZXMnLCAoKSA9PiB7XG4gIGxldCBjaG9pY2VzLCBzZXNzaW9uLCB1cGRhdGVTZXNzaW9uLCBrZXk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdXBkYXRlU2Vzc2lvbiA9IGplc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZShbXSk7XG4gICAgc2Vzc2lvbiA9IHtcbiAgICAgIGlkOiAnMScsXG4gICAgICBlbGVtZW50OiAnZWxlbWVudCcsXG4gICAgfTtcbiAgICBjaG9pY2VzID0gW1xuICAgICAge1xuICAgICAgICB2YWx1ZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiAyLFxuICAgICAgfSxcbiAgICBdO1xuICAgIGtleSA9ICd2YWx1ZSc7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcwIGtleScsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgdXBkYXRlIHNlc3Npb24gdy8gMCBhcyBhIGtleScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldFNodWZmbGVkQ2hvaWNlcyhbeyB2YWx1ZTogMCB9LCB7IHZhbHVlOiAxIH1dLCBzZXNzaW9uLCB1cGRhdGVTZXNzaW9uLCAndmFsdWUnKTtcbiAgICAgIGV4cGVjdCh1cGRhdGVTZXNzaW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChzZXNzaW9uLmlkLCBzZXNzaW9uLmVsZW1lbnQsIHtcbiAgICAgICAgc2h1ZmZsZWRWYWx1ZXM6IGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoWzAsIDFdKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaGFuZGxlcyBudWxsIHZhbHVlcyBpbiBzZXNzaW9uJywgKCkgPT4ge1xuICAgIGJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0U2h1ZmZsZWRDaG9pY2VzKGNob2ljZXMsIHsgLi4uc2Vzc2lvbiwgc2h1ZmZsZWRWYWx1ZXM6IFtudWxsXSB9LCB1cGRhdGVTZXNzaW9uLCAndmFsdWUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyB1cGRhdGVTZXNzaW9uIHcvIG5ldyBzaHVmZmxlIGNvcyBbbnVsbF0gaXMgdHJlYXRlZCBhcyBlbXB0eScsICgpID0+IHtcbiAgICAgIGV4cGVjdCh1cGRhdGVTZXNzaW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChzZXNzaW9uLmlkLCBzZXNzaW9uLmVsZW1lbnQsIHtcbiAgICAgICAgc2h1ZmZsZWRWYWx1ZXM6IGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoWzEsIDJdKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2JhZCBzaHVmZmxlIGdlbmVyYXRpb24gZG9lcyBub3QgY2FsbCB1cGRhdGVTZXNzaW9uJywgKCkgPT4ge1xuICAgIGJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0U2h1ZmZsZWRDaG9pY2VzKGNob2ljZXMsIHt9LCB1cGRhdGVTZXNzaW9uLCAnZm9vJyk7XG4gICAgfSk7XG4gICAgaXQoJ2RvZXMgbm90IGNhbGwgdXBkYXRlIHNlc3Npb24nLCAoKSA9PiB7XG4gICAgICBleHBlY3QodXBkYXRlU2Vzc2lvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nlc3Npb24gZG9lcyBub3QgZXhpc3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JldHVybnMgdW5kZWZpbmVkIGZvciBlbXB0eSBzZXNzaW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0U2h1ZmZsZWRDaG9pY2VzKGNob2ljZXMsIHVuZGVmaW5lZCwgdXBkYXRlU2Vzc2lvbiwga2V5KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nlc3Npb24gZXhpc3RzJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIGNvbXBhY3QgY2hvaWNlcyBpZiBzZXNzaW9uIGhhcyBzaHVmZmxlZFZhbHVlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIHNlc3Npb24gPSB7IHNodWZmbGVkVmFsdWVzOiBbMiwgMV0gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldFNodWZmbGVkQ2hvaWNlcyhjaG9pY2VzLCBzZXNzaW9uLCB1cGRhdGVTZXNzaW9uLCBrZXkpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3QuYXJyYXlDb250YWluaW5nKGNob2ljZXMpKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIHNodWZmbGVkIGNob2ljZXMgaWYgdXBkYXRlU2Vzc2lvbiBpcyBhIGZ1bmN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgc2Vzc2lvbiA9IHt9O1xuICAgICAgdXBkYXRlU2Vzc2lvbiA9IGplc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0U2h1ZmZsZWRDaG9pY2VzKGNob2ljZXMsIHNlc3Npb24sIHVwZGF0ZVNlc3Npb24sIGtleSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoY2hvaWNlcykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIHVwZGF0ZVNlc3Npb24gYXMgZXhwZWN0ZWQgaWYgdXBkYXRlU2Vzc2lvbiBpcyBhIGZ1bmN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgc2Vzc2lvbiA9IHsgaWQ6ICcxJywgZWxlbWVudDogJ3BpZS1lbGVtZW50JyB9O1xuICAgICAgYXdhaXQgZ2V0U2h1ZmZsZWRDaG9pY2VzKGNob2ljZXMsIHNlc3Npb24sIHVwZGF0ZVNlc3Npb24sIGtleSk7XG4gICAgICBleHBlY3QodXBkYXRlU2Vzc2lvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJzEnLCAncGllLWVsZW1lbnQnLCB7XG4gICAgICAgIHNodWZmbGVkVmFsdWVzOiBleHBlY3QuYXJyYXlDb250YWluaW5nKFsxLCAyXSksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvY2tDaG9pY2VzJywgKCkgPT4ge1xuICBjb25zdCBlbnYgPSAobG9ja0Nob2ljZU9yZGVyLCByb2xlID0gJ3N0dWRlbnQnKSA9PiAoe1xuICAgICdAcGllLWVsZW1lbnQnOiB7IGxvY2tDaG9pY2VPcmRlciB9LFxuICAgIHJvbGUsXG4gIH0pO1xuICBjb25zdCBzZXNzaW9uID0gKHNodWZmbGVkVmFsdWVzKSA9PiAoeyBzaHVmZmxlZFZhbHVlcyB9KTtcbiAgaXQuZWFjaGBcbiAgICBtb2RlbExvY2sgICAgfCBzZXNzaW9uICAgICAgICAgICAgfCBlbnYgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHBlY3RlZFxuICAgICR7dHJ1ZX0gICAgICB8ICR7c2Vzc2lvbigpfSAgICAgICB8ICR7ZW52KHRydWUpfSAgICAgICAgICAgICAgICB8ICR7dHJ1ZX1cbiAgICAke3RydWV9ICAgICAgfCAke3Nlc3Npb24oKX0gICAgICAgfCAke2VudihmYWxzZSl9ICAgICAgICAgICAgICAgfCAke3RydWV9XG4gICAgJHtmYWxzZX0gICAgIHwgJHtzZXNzaW9uKCl9ICAgICAgIHwgJHtlbnYodHJ1ZSl9ICAgICAgICAgICAgICAgIHwgJHt0cnVlfVxuICAgICR7ZmFsc2V9ICAgICB8ICR7c2Vzc2lvbigpfSAgICAgICB8ICR7ZW52KGZhbHNlKX0gICAgICAgICAgICAgICB8ICR7ZmFsc2V9XG4gICAgJHtmYWxzZX0gICAgIHwgJHtzZXNzaW9uKCl9ICAgICAgIHwgJHt1bmRlZmluZWR9ICAgICAgICAgICAgICAgIHwgJHtmYWxzZX1cbiAgICAke2ZhbHNlfSAgICAgfCAke3VuZGVmaW5lZH0gICAgICAgfCAke3VuZGVmaW5lZH0gICAgICAgICAgICAgICAgfCAke2ZhbHNlfVxuICAgICR7dW5kZWZpbmVkfSB8ICR7c2Vzc2lvbigpfSAgICAgICB8ICR7ZW52KGZhbHNlKX0gICAgICAgICAgICAgICB8ICR7ZmFsc2V9XG4gICAgJHt1bmRlZmluZWR9IHwgJHtzZXNzaW9uKCl9ICAgICAgIHwgJHtlbnYodW5kZWZpbmVkKX0gICAgICAgICAgIHwgJHtmYWxzZX1cbiAgICAke2ZhbHNlfSAgICAgfCAke3Nlc3Npb24oKX0gICAgICAgfCAke2VudihmYWxzZSwgJ2luc3RydWN0b3InKX0gfCAke3RydWV9XG4gICAgJHtmYWxzZX0gICAgIHwgJHtzZXNzaW9uKFswLCAxXSl9IHwgJHtlbnYoZmFsc2UsICdpbnN0cnVjdG9yJyl9IHwgJHt0cnVlfVxuICAgICR7ZmFsc2V9ICAgICB8ICR7dW5kZWZpbmVkfSAgICAgICB8ICR7ZW52KGZhbHNlLCAnaW5zdHJ1Y3RvcicpfSB8ICR7dHJ1ZX1cbiAgYCgnMS4gbW9kZWwubG9ja0Nob2ljZU9yZGVyOiAkbW9kZWxMb2NrLCAkc2Vzc2lvbiwgJGVudiA9PiAkZXhwZWN0ZWQnLCAoeyBtb2RlbExvY2ssIHNlc3Npb24sIGVudiwgZXhwZWN0ZWQgfSkgPT4ge1xuICAgIGNvbnN0IG1vZGVsID0geyBsb2NrQ2hvaWNlT3JkZXI6IG1vZGVsTG9jayB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGxvY2tDaG9pY2VzKG1vZGVsLCBzZXNzaW9uLCBlbnYpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbG9ja0Nob2ljZXMgbW9kJywgKCkgPT4ge1xuICBjb25zdCBlbnYgPSAobG9ja0Nob2ljZU9yZGVyLCByb2xlID0gJ3N0dWRlbnQnKSA9PiAoe1xuICAgICdAcGllLWVsZW1lbnQnOiB7IGxvY2tDaG9pY2VPcmRlciB9LFxuICAgIHJvbGUsXG4gIH0pO1xuICBjb25zdCBzZXNzaW9uID0gKGFuc3dlcnMgPSBbJ2ZvbycsICdiYXInXSkgPT4gKHsgYW5zd2VycyB9KTtcbiAgaXQuZWFjaGBcbiAgICBtb2RlbExvY2sgICAgfCBzZXNzaW9uICAgICAgfCBlbnYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXhwZWN0ZWRcbiAgICAke3RydWV9ICAgICAgfCAke3Nlc3Npb24oKX0gfCAke2Vudih0cnVlKX0gICAgICAgICAgICAgICAgICAgIHwgJHt0cnVlfVxuICAgICR7dHJ1ZX0gICAgICB8ICR7c2Vzc2lvbigpfSB8ICR7ZW52KGZhbHNlKX0gICAgICAgICAgICAgICAgICAgfCAke3RydWV9XG4gICAgJHtmYWxzZX0gICAgIHwgJHtzZXNzaW9uKCl9IHwgJHtlbnYodHJ1ZSl9ICAgICAgICAgICAgICAgICAgICB8ICR7dHJ1ZX1cbiAgICAke2ZhbHNlfSAgICAgfCAke3Nlc3Npb24oKX0gfCAke2VudihmYWxzZSl9ICAgICAgICAgICAgICAgICAgIHwgJHtmYWxzZX1cbiAgICAke3VuZGVmaW5lZH0gfCAke3Nlc3Npb24oKX0gfCAke2Vudih0cnVlKX0gICAgICAgICAgICAgICAgICAgIHwgJHt0cnVlfVxuICAgICR7dW5kZWZpbmVkfSB8ICR7c2Vzc2lvbigpfSB8ICR7ZW52KHVuZGVmaW5lZCl9ICAgICAgICAgICAgICAgfCAke2ZhbHNlfVxuICAgICR7dW5kZWZpbmVkfSB8ICR7c2Vzc2lvbigpfSB8ICR7ZW52KHVuZGVmaW5lZCwgJ2luc3RydWN0b3InKX0gfCAke3RydWV9XG4gIGAoJzIuIG1vZGVsLmxvY2tDaG9pY2VPcmRlcjogJG1vZGVsTG9jaywgJHNlc3Npb24sICRlbnYgPT4gJGV4cGVjdGVkJywgKHsgbW9kZWxMb2NrLCBzZXNzaW9uLCBlbnYsIGV4cGVjdGVkIH0pID0+IHtcbiAgICBjb25zdCBtb2RlbCA9IHsgbG9ja0Nob2ljZU9yZGVyOiBtb2RlbExvY2sgfTtcbiAgICBjb25zdCByZXN1bHQgPSBsb2NrQ2hvaWNlcyhtb2RlbCwgc2Vzc2lvbiwgZW52KTtcbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvY2tDaG9pY2VzJywgKCkgPT4ge1xuICBjb25zdCBlbnYgPSAobG9ja0Nob2ljZU9yZGVyLCByb2xlID0gJ3N0dWRlbnQnKSA9PiAoe1xuICAgICdAcGllLWVsZW1lbnQnOiB7IGxvY2tDaG9pY2VPcmRlciB9LFxuICAgIHJvbGUsXG4gIH0pO1xuICBjb25zdCBzZXNzaW9uID0gKHNodWZmbGVkVmFsdWVzKSA9PiAoeyBzaHVmZmxlZFZhbHVlcywgYW5zd2VyczogWydmb28nLCAnYmFyJ10gfSk7XG4gIGl0LmVhY2hgXG4gICAgbW9kZWxMb2NrICAgIHwgc2Vzc2lvbiAgICAgIHwgZW52ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV4cGVjdGVkXG4gICAgJHt0cnVlfSAgICAgIHwgJHtzZXNzaW9uKCl9IHwgJHtlbnYodHJ1ZSl9ICAgICAgICAgICAgICAgICAgICB8ICR7dHJ1ZX1cbiAgICAke3RydWV9ICAgICAgfCAke3Nlc3Npb24oKX0gfCAke2VudihmYWxzZSl9ICAgICAgICAgICAgICAgICAgIHwgJHt0cnVlfVxuICAgICR7ZmFsc2V9ICAgICB8ICR7c2Vzc2lvbigpfSB8ICR7ZW52KHRydWUpfSAgICAgICAgICAgICAgICAgICAgfCAke3RydWV9XG4gICAgJHtmYWxzZX0gICAgIHwgJHtzZXNzaW9uKCl9IHwgJHtlbnYoZmFsc2UpfSAgICAgICAgICAgICAgICAgICB8ICR7ZmFsc2V9XG4gICAgJHt1bmRlZmluZWR9IHwgJHtzZXNzaW9uKCl9IHwgJHtlbnYodHJ1ZSl9ICAgICAgICAgICAgICAgICAgICB8ICR7dHJ1ZX1cbiAgICAke3VuZGVmaW5lZH0gfCAke3Nlc3Npb24oKX0gfCAke2Vudih1bmRlZmluZWQpfSAgICAgICAgICAgICAgIHwgJHtmYWxzZX1cbiAgICAke3VuZGVmaW5lZH0gfCAke3Nlc3Npb24oKX0gfCAke2Vudih1bmRlZmluZWQsICdpbnN0cnVjdG9yJyl9IHwgJHt0cnVlfVxuICBgKCczLiBtb2RlbC5sb2NrQ2hvaWNlT3JkZXI6ICRtb2RlbExvY2ssICRlbnYgPT4gJGV4cGVjdGVkJywgKHsgbW9kZWxMb2NrLCBzZXNzaW9uLCBlbnYsIGV4cGVjdGVkIH0pID0+IHtcbiAgICBjb25zdCBtb2RlbCA9IHsgbG9ja0Nob2ljZU9yZGVyOiBtb2RlbExvY2sgfTtcbiAgICBjb25zdCByZXN1bHQgPSBsb2NrQ2hvaWNlcyhtb2RlbCwgc2Vzc2lvbiwgZW52KTtcbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUFpRSxJQUFBQyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBO0FBQUEsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxD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
package/lib/index.js DELETED
@@ -1,24 +0,0 @@
1
- "use strict";
2
-
3
- var _typeof = require("@babel/runtime/helpers/typeof");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- Object.defineProperty(exports, "getShuffledChoices", {
8
- enumerable: true,
9
- get: function get() {
10
- return _persistence.getShuffledChoices;
11
- }
12
- });
13
- Object.defineProperty(exports, "lockChoices", {
14
- enumerable: true,
15
- get: function get() {
16
- return _persistence.lockChoices;
17
- }
18
- });
19
- exports.partialScoring = void 0;
20
- var partialScoring = _interopRequireWildcard(require("./partial-scoring"));
21
- exports.partialScoring = partialScoring;
22
- var _persistence = require("./persistence");
23
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJ0aWFsU2NvcmluZyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImV4cG9ydHMiLCJfcGVyc2lzdGVuY2UiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXJ0aWFsU2NvcmluZyBmcm9tICcuL3BhcnRpYWwtc2NvcmluZyc7XG5cbmV4cG9ydCB7IGxvY2tDaG9pY2VzLCBnZXRTaHVmZmxlZENob2ljZXMgfSBmcm9tICcuL3BlcnNpc3RlbmNlJztcbmV4cG9ydCB7IHBhcnRpYWxTY29yaW5nIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxjQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFBb0RDLE9BQUEsQ0FBQUgsY0FBQSxHQUFBQSxjQUFBO0FBRXBELElBQUFJLFlBQUEsR0FBQUYsT0FBQTtBQUFnRSxTQUFBRCx3QkFBQUksQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQU4sdUJBQUEsWUFBQUEsd0JBQUFJLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsT0FBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGNBQUFNLEVBQUEsSUFBQWQsQ0FBQSxnQkFBQWMsRUFBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLElBQUFELENBQUEsR0FBQVcsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBTSxFQUFBLEVBQUFQLENBQUEsSUFBQUMsQ0FBQSxDQUFBTSxFQUFBLElBQUFkLENBQUEsQ0FBQWMsRUFBQSxXQUFBTixDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["partialScoring","_interopRequireWildcard","require","exports","_persistence","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor"],"sources":["../src/index.js"],"sourcesContent":["import * as partialScoring from './partial-scoring';\n\nexport { lockChoices, getShuffledChoices } from './persistence';\nexport { partialScoring };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAoDC,OAAA,CAAAH,cAAA,GAAAA,cAAA;AAEpD,IAAAI,YAAA,GAAAF,OAAA;AAAgE,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,wBAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA","ignoreList":[]}
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.enabled = void 0;
7
- var enabled = exports.enabled = function enabled(config, env, defaultValue) {
8
- // if model.partialScoring = false
9
- // - if env.partialScoring = false || env.partialScoring = true => use dichotomous scoring
10
- // else if model.partialScoring = true || undefined
11
- // - if env.partialScoring = false, use dichotomous scoring
12
- // - else if env.partialScoring = true, use partial scoring
13
- config = config || {};
14
- env = env || {};
15
- if (config.partialScoring === false) {
16
- return false;
17
- }
18
- if (env.partialScoring === false) {
19
- return false;
20
- }
21
- return typeof defaultValue === 'boolean' ? defaultValue : true;
22
- };
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbmFibGVkIiwiZXhwb3J0cyIsImNvbmZpZyIsImVudiIsImRlZmF1bHRWYWx1ZSIsInBhcnRpYWxTY29yaW5nIl0sInNvdXJjZXMiOlsiLi4vc3JjL3BhcnRpYWwtc2NvcmluZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW5hYmxlZCA9IChjb25maWcsIGVudiwgZGVmYXVsdFZhbHVlKSA9PiB7XG4gIC8vIGlmIG1vZGVsLnBhcnRpYWxTY29yaW5nID0gZmFsc2VcbiAgLy8gIC0gaWYgZW52LnBhcnRpYWxTY29yaW5nID0gZmFsc2UgfHwgZW52LnBhcnRpYWxTY29yaW5nID0gdHJ1ZSA9PiB1c2UgZGljaG90b21vdXMgc2NvcmluZ1xuICAvLyBlbHNlIGlmIG1vZGVsLnBhcnRpYWxTY29yaW5nID0gdHJ1ZSB8fCB1bmRlZmluZWRcbiAgLy8gIC0gaWYgZW52LnBhcnRpYWxTY29yaW5nID0gZmFsc2UsIHVzZSBkaWNob3RvbW91cyBzY29yaW5nXG4gIC8vICAtIGVsc2UgaWYgZW52LnBhcnRpYWxTY29yaW5nID0gdHJ1ZSwgdXNlIHBhcnRpYWwgc2NvcmluZ1xuICBjb25maWcgPSBjb25maWcgfHwge307XG4gIGVudiA9IGVudiB8fCB7fTtcblxuICBpZiAoY29uZmlnLnBhcnRpYWxTY29yaW5nID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChlbnYucGFydGlhbFNjb3JpbmcgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdib29sZWFuJyA/IGRlZmF1bHRWYWx1ZSA6IHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxJQUFNQSxPQUFPLEdBQUFDLE9BQUEsQ0FBQUQsT0FBQSxHQUFHLFNBQVZBLE9BQU9BLENBQUlFLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxZQUFZLEVBQUs7RUFDcEQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBRixNQUFNLEdBQUdBLE1BQU0sSUFBSSxDQUFDLENBQUM7RUFDckJDLEdBQUcsR0FBR0EsR0FBRyxJQUFJLENBQUMsQ0FBQztFQUVmLElBQUlELE1BQU0sQ0FBQ0csY0FBYyxLQUFLLEtBQUssRUFBRTtJQUNuQyxPQUFPLEtBQUs7RUFDZDtFQUVBLElBQUlGLEdBQUcsQ0FBQ0UsY0FBYyxLQUFLLEtBQUssRUFBRTtJQUNoQyxPQUFPLEtBQUs7RUFDZDtFQUVBLE9BQU8sT0FBT0QsWUFBWSxLQUFLLFNBQVMsR0FBR0EsWUFBWSxHQUFHLElBQUk7QUFDaEUsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"partial-scoring.js","names":["enabled","exports","config","env","defaultValue","partialScoring"],"sources":["../src/partial-scoring.js"],"sourcesContent":["export const enabled = (config, env, defaultValue) => {\n // if model.partialScoring = false\n // - if env.partialScoring = false || env.partialScoring = true => use dichotomous scoring\n // else if model.partialScoring = true || undefined\n // - if env.partialScoring = false, use dichotomous scoring\n // - else if env.partialScoring = true, use partial scoring\n config = config || {};\n env = env || {};\n\n if (config.partialScoring === false) {\n return false;\n }\n\n if (env.partialScoring === false) {\n return false;\n }\n\n return typeof defaultValue === 'boolean' ? defaultValue : true;\n};\n"],"mappings":";;;;;;AAAO,IAAMA,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,SAAVA,OAAOA,CAAIE,MAAM,EAAEC,GAAG,EAAEC,YAAY,EAAK;EACpD;EACA;EACA;EACA;EACA;EACAF,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC;EACrBC,GAAG,GAAGA,GAAG,IAAI,CAAC,CAAC;EAEf,IAAID,MAAM,CAACG,cAAc,KAAK,KAAK,EAAE;IACnC,OAAO,KAAK;EACd;EAEA,IAAIF,GAAG,CAACE,cAAc,KAAK,KAAK,EAAE;IAChC,OAAO,KAAK;EACd;EAEA,OAAO,OAAOD,YAAY,KAAK,SAAS,GAAGA,YAAY,GAAG,IAAI;AAChE,CAAC","ignoreList":[]}
@@ -1,113 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.lockChoices = exports.getShuffledChoices = exports.compact = void 0;
8
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
- var _get = _interopRequireDefault(require("lodash/get"));
10
- var _shuffle = _interopRequireDefault(require("lodash/shuffle"));
11
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
12
- // eslint-disable-next-line no-console
13
- var lg = function lg(n) {
14
- return console[n].bind(console, 'controller-utils:');
15
- };
16
- var debug = lg('debug');
17
- var log = lg('log');
18
- var warn = lg('warn');
19
- var error = lg('error');
20
- var compact = exports.compact = function compact(arr) {
21
- if (Array.isArray(arr)) {
22
- return arr.filter(function (v) {
23
- return v !== null && v !== undefined;
24
- });
25
- }
26
- return arr;
27
- };
28
- var getShuffledChoices = exports.getShuffledChoices = function getShuffledChoices(choices, session, updateSession, choiceKey) {
29
- return new Promise(function (resolve) {
30
- var _session$data;
31
- log('updateSession type: ', (0, _typeof2["default"])(updateSession));
32
- log('session: ', session);
33
- var currentShuffled = compact((session === null || session === void 0 || (_session$data = session.data) === null || _session$data === void 0 ? void 0 : _session$data.shuffledValues) || (session === null || session === void 0 ? void 0 : session.shuffledValues) || []);
34
- if (!session) {
35
- // eslint-disable-next-line quotes
36
- warn("unable to save shuffled choices because there's no session.");
37
- resolve(undefined);
38
- } else if (!(0, _isEmpty["default"])(currentShuffled)) {
39
- debug('use shuffledValues to sort the choices...', currentShuffled);
40
- resolve(compact(currentShuffled.map(function (v) {
41
- return choices.find(function (c) {
42
- return c[choiceKey] === v;
43
- });
44
- })));
45
- } else {
46
- var shuffledChoices = (0, _shuffle["default"])(choices);
47
- if (updateSession && typeof updateSession === 'function') {
48
- try {
49
- //Note: session.id refers to the id of the element within a session
50
- var shuffledValues = compact(shuffledChoices.map(function (c) {
51
- return c[choiceKey];
52
- }));
53
- log('try to save shuffledValues to session...', shuffledValues);
54
- log('call updateSession... ', session.id, session.element);
55
- if ((0, _isEmpty["default"])(shuffledValues)) {
56
- error("shuffledValues is an empty array? - refusing to call updateSession: shuffledChoices: ".concat(JSON.stringify(shuffledChoices), ", key: ").concat(choiceKey));
57
- } else {
58
- updateSession(session.id, session.element, {
59
- shuffledValues: shuffledValues
60
- })["catch"](function (e) {
61
- return (
62
- // eslint-disable-next-line no-console
63
- console.error('update session failed for: ', session.id, e)
64
- );
65
- });
66
- }
67
- } catch (e) {
68
- warn('unable to save shuffled order for choices');
69
- error(e);
70
- }
71
- } else {
72
- warn('unable to save shuffled choices, shuffle will happen every time.');
73
- }
74
-
75
- //save this shuffle to the session for later retrieval
76
- resolve(shuffledChoices);
77
- }
78
- });
79
- };
80
-
81
- /**
82
- * If we return:
83
- * - true - that means that the order of the choices will be ordinal (as is created in the configure item)
84
- * - false - that means the getShuffledChoices above will be called and that in turn means that we either
85
- * return the shuffled values on the session (if any exists) or we shuffle the choices
86
- * @param model - model to check if we should lock order
87
- * @param session - session to check if we should lock order
88
- * @param env - env to check if we should lock order
89
- * @returns {boolean}
90
- */
91
- var lockChoices = exports.lockChoices = function lockChoices(model, session, env) {
92
- if (model.lockChoiceOrder) {
93
- return true;
94
- }
95
- log('lockChoiceOrder: ', (0, _get["default"])(env, ['@pie-element', 'lockChoiceOrder'], false));
96
- if ((0, _get["default"])(env, ['@pie-element', 'lockChoiceOrder'], false)) {
97
- return true;
98
- }
99
- var role = (0, _get["default"])(env, 'role', 'student');
100
- if (role === 'instructor') {
101
- // TODO: .. in the future the instructor can toggle between ordinal and shuffled here, so keeping this code until then
102
- /*const alreadyShuffled = hasShuffledValues(session);
103
- if (alreadyShuffled) {
104
- return false;
105
- }
106
- return true;*/
107
- return true;
108
- }
109
-
110
- // here it's a student, so don't lock and it will shuffle if needs be
111
- return false;
112
- };
113
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2V0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc2h1ZmZsZSIsIl9pc0VtcHR5IiwibGciLCJuIiwiY29uc29sZSIsImJpbmQiLCJkZWJ1ZyIsImxvZyIsIndhcm4iLCJlcnJvciIsImNvbXBhY3QiLCJleHBvcnRzIiwiYXJyIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwidiIsInVuZGVmaW5lZCIsImdldFNodWZmbGVkQ2hvaWNlcyIsImNob2ljZXMiLCJzZXNzaW9uIiwidXBkYXRlU2Vzc2lvbiIsImNob2ljZUtleSIsIlByb21pc2UiLCJyZXNvbHZlIiwiX3Nlc3Npb24kZGF0YSIsIl90eXBlb2YyIiwiY3VycmVudFNodWZmbGVkIiwiZGF0YSIsInNodWZmbGVkVmFsdWVzIiwiaXNFbXB0eSIsIm1hcCIsImZpbmQiLCJjIiwic2h1ZmZsZWRDaG9pY2VzIiwic2h1ZmZsZSIsImlkIiwiZWxlbWVudCIsImNvbmNhdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwibG9ja0Nob2ljZXMiLCJtb2RlbCIsImVudiIsImxvY2tDaG9pY2VPcmRlciIsImdldCIsInJvbGUiXSwic291cmNlcyI6WyIuLi9zcmMvcGVyc2lzdGVuY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBzaHVmZmxlIGZyb20gJ2xvZGFzaC9zaHVmZmxlJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbmNvbnN0IGxnID0gKG4pID0+IGNvbnNvbGVbbl0uYmluZChjb25zb2xlLCAnY29udHJvbGxlci11dGlsczonKTtcbmNvbnN0IGRlYnVnID0gbGcoJ2RlYnVnJyk7XG5jb25zdCBsb2cgPSBsZygnbG9nJyk7XG5jb25zdCB3YXJuID0gbGcoJ3dhcm4nKTtcbmNvbnN0IGVycm9yID0gbGcoJ2Vycm9yJyk7XG5cbmV4cG9ydCBjb25zdCBjb21wYWN0ID0gKGFycikgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgcmV0dXJuIGFyci5maWx0ZXIoKHYpID0+IHYgIT09IG51bGwgJiYgdiAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHJldHVybiBhcnI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2h1ZmZsZWRDaG9pY2VzID0gKGNob2ljZXMsIHNlc3Npb24sIHVwZGF0ZVNlc3Npb24sIGNob2ljZUtleSkgPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBsb2coJ3VwZGF0ZVNlc3Npb24gdHlwZTogJywgdHlwZW9mIHVwZGF0ZVNlc3Npb24pO1xuICAgIGxvZygnc2Vzc2lvbjogJywgc2Vzc2lvbik7XG5cbiAgICBjb25zdCBjdXJyZW50U2h1ZmZsZWQgPSBjb21wYWN0KHNlc3Npb24/LmRhdGE/LnNodWZmbGVkVmFsdWVzIHx8IHNlc3Npb24/LnNodWZmbGVkVmFsdWVzIHx8IFtdKTtcblxuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHF1b3Rlc1xuICAgICAgd2FybihcInVuYWJsZSB0byBzYXZlIHNodWZmbGVkIGNob2ljZXMgYmVjYXVzZSB0aGVyZSdzIG5vIHNlc3Npb24uXCIpO1xuICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH0gZWxzZSBpZiAoIWlzRW1wdHkoY3VycmVudFNodWZmbGVkKSkge1xuICAgICAgZGVidWcoJ3VzZSBzaHVmZmxlZFZhbHVlcyB0byBzb3J0IHRoZSBjaG9pY2VzLi4uJywgY3VycmVudFNodWZmbGVkKTtcbiAgICAgIHJlc29sdmUoY29tcGFjdChjdXJyZW50U2h1ZmZsZWQubWFwKCh2KSA9PiBjaG9pY2VzLmZpbmQoKGMpID0+IGNbY2hvaWNlS2V5XSA9PT0gdikpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNodWZmbGVkQ2hvaWNlcyA9IHNodWZmbGUoY2hvaWNlcyk7XG5cbiAgICAgIGlmICh1cGRhdGVTZXNzaW9uICYmIHR5cGVvZiB1cGRhdGVTZXNzaW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy9Ob3RlOiBzZXNzaW9uLmlkIHJlZmVycyB0byB0aGUgaWQgb2YgdGhlIGVsZW1lbnQgd2l0aGluIGEgc2Vzc2lvblxuICAgICAgICAgIGNvbnN0IHNodWZmbGVkVmFsdWVzID0gY29tcGFjdChzaHVmZmxlZENob2ljZXMubWFwKChjKSA9PiBjW2Nob2ljZUtleV0pKTtcbiAgICAgICAgICBsb2coJ3RyeSB0byBzYXZlIHNodWZmbGVkVmFsdWVzIHRvIHNlc3Npb24uLi4nLCBzaHVmZmxlZFZhbHVlcyk7XG4gICAgICAgICAgbG9nKCdjYWxsIHVwZGF0ZVNlc3Npb24uLi4gJywgc2Vzc2lvbi5pZCwgc2Vzc2lvbi5lbGVtZW50KTtcblxuICAgICAgICAgIGlmIChpc0VtcHR5KHNodWZmbGVkVmFsdWVzKSkge1xuICAgICAgICAgICAgZXJyb3IoXG4gICAgICAgICAgICAgIGBzaHVmZmxlZFZhbHVlcyBpcyBhbiBlbXB0eSBhcnJheT8gLSByZWZ1c2luZyB0byBjYWxsIHVwZGF0ZVNlc3Npb246IHNodWZmbGVkQ2hvaWNlczogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICBzaHVmZmxlZENob2ljZXMsXG4gICAgICAgICAgICAgICl9LCBrZXk6ICR7Y2hvaWNlS2V5fWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGRhdGVTZXNzaW9uKHNlc3Npb24uaWQsIHNlc3Npb24uZWxlbWVudCwgeyBzaHVmZmxlZFZhbHVlcyB9KS5jYXRjaCgoZSkgPT5cbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigndXBkYXRlIHNlc3Npb24gZmFpbGVkIGZvcjogJywgc2Vzc2lvbi5pZCwgZSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHdhcm4oJ3VuYWJsZSB0byBzYXZlIHNodWZmbGVkIG9yZGVyIGZvciBjaG9pY2VzJyk7XG4gICAgICAgICAgZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm4oJ3VuYWJsZSB0byBzYXZlIHNodWZmbGVkIGNob2ljZXMsIHNodWZmbGUgd2lsbCBoYXBwZW4gZXZlcnkgdGltZS4nKTtcbiAgICAgIH1cblxuICAgICAgLy9zYXZlIHRoaXMgc2h1ZmZsZSB0byB0aGUgc2Vzc2lvbiBmb3IgbGF0ZXIgcmV0cmlldmFsXG4gICAgICByZXNvbHZlKHNodWZmbGVkQ2hvaWNlcyk7XG4gICAgfVxuICB9KTtcblxuLyoqXG4gKiBJZiB3ZSByZXR1cm46XG4gKiAtIHRydWUgLSB0aGF0IG1lYW5zIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBjaG9pY2VzIHdpbGwgYmUgb3JkaW5hbCAoYXMgaXMgY3JlYXRlZCBpbiB0aGUgY29uZmlndXJlIGl0ZW0pXG4gKiAtIGZhbHNlIC0gdGhhdCBtZWFucyB0aGUgZ2V0U2h1ZmZsZWRDaG9pY2VzIGFib3ZlIHdpbGwgYmUgY2FsbGVkIGFuZCB0aGF0IGluIHR1cm4gbWVhbnMgdGhhdCB3ZSBlaXRoZXJcbiAqIHJldHVybiB0aGUgc2h1ZmZsZWQgdmFsdWVzIG9uIHRoZSBzZXNzaW9uIChpZiBhbnkgZXhpc3RzKSBvciB3ZSBzaHVmZmxlIHRoZSBjaG9pY2VzXG4gKiBAcGFyYW0gbW9kZWwgLSBtb2RlbCB0byBjaGVjayBpZiB3ZSBzaG91bGQgbG9jayBvcmRlclxuICogQHBhcmFtIHNlc3Npb24gLSBzZXNzaW9uIHRvIGNoZWNrIGlmIHdlIHNob3VsZCBsb2NrIG9yZGVyXG4gKiBAcGFyYW0gZW52IC0gZW52IHRvIGNoZWNrIGlmIHdlIHNob3VsZCBsb2NrIG9yZGVyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGxvY2tDaG9pY2VzID0gKG1vZGVsLCBzZXNzaW9uLCBlbnYpID0+IHtcbiAgaWYgKG1vZGVsLmxvY2tDaG9pY2VPcmRlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbG9nKCdsb2NrQ2hvaWNlT3JkZXI6ICcsIGdldChlbnYsIFsnQHBpZS1lbGVtZW50JywgJ2xvY2tDaG9pY2VPcmRlciddLCBmYWxzZSkpO1xuXG4gIGlmIChnZXQoZW52LCBbJ0BwaWUtZWxlbWVudCcsICdsb2NrQ2hvaWNlT3JkZXInXSwgZmFsc2UpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCByb2xlID0gZ2V0KGVudiwgJ3JvbGUnLCAnc3R1ZGVudCcpO1xuXG4gIGlmIChyb2xlID09PSAnaW5zdHJ1Y3RvcicpIHtcbiAgICAvLyBUT0RPOiAuLiBpbiB0aGUgZnV0dXJlIHRoZSBpbnN0cnVjdG9yIGNhbiB0b2dnbGUgYmV0d2VlbiBvcmRpbmFsIGFuZCBzaHVmZmxlZCBoZXJlLCBzbyBrZWVwaW5nIHRoaXMgY29kZSB1bnRpbCB0aGVuXG4gICAgLypjb25zdCBhbHJlYWR5U2h1ZmZsZWQgPSBoYXNTaHVmZmxlZFZhbHVlcyhzZXNzaW9uKTtcblxuICAgIGlmIChhbHJlYWR5U2h1ZmZsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTsqL1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gaGVyZSBpdCdzIGEgc3R1ZGVudCwgc28gZG9uJ3QgbG9jayBhbmQgaXQgd2lsbCBzaHVmZmxlIGlmIG5lZWRzIGJlXG4gIHJldHVybiBmYWxzZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxP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RkMsSUFBSSxDQUFDQyxTQUFTLENBQ3BHTixlQUNGLENBQUMsYUFBQUksTUFBQSxDQUFVaEIsU0FBUyxDQUN0QixDQUFDO1VBQ0gsQ0FBQyxNQUFNO1lBQ0xELGFBQWEsQ0FBQ0QsT0FBTyxDQUFDZ0IsRUFBRSxFQUFFaEIsT0FBTyxDQUFDaUIsT0FBTyxFQUFFO2NBQUVSLGNBQWMsRUFBZEE7WUFBZSxDQUFDLENBQUMsU0FBTSxDQUFDLFVBQUNZLENBQUM7Y0FBQTtnQkFDckU7Z0JBQ0FyQyxPQUFPLENBQUNLLEtBQUssQ0FBQyw2QkFBNkIsRUFBRVcsT0FBTyxDQUFDZ0IsRUFBRSxFQUFFSyxDQUFDO2NBQUM7WUFBQSxDQUM3RCxDQUFDO1VBQ0g7UUFDRixDQUFDLENBQUMsT0FBT0EsQ0FBQyxFQUFFO1VBQ1ZqQyxJQUFJLENBQUMsMkNBQTJDLENBQUM7VUFDakRDLEtBQUssQ0FBQ2dDLENBQUMsQ0FBQztRQUNWO01BQ0YsQ0FBQyxNQUFNO1FBQ0xqQyxJQUFJLENBQUMsa0VBQWtFLENBQUM7TUFDMUU7O01BRUE7TUFDQWdCLE9BQU8sQ0FBQ1UsZUFBZSxDQUFDO0lBQzFCO0VBQ0YsQ0FBQyxDQUFDO0FBQUE7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNUSxXQUFXLEdBQUEvQixPQUFBLENBQUErQixXQUFBLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsS0FBSyxFQUFFdkIsT0FBTyxFQUFFd0IsR0FBRyxFQUFLO0VBQ2xELElBQUlELEtBQUssQ0FBQ0UsZUFBZSxFQUFFO0lBQ3pCLE9BQU8sSUFBSTtFQUNiO0VBRUF0QyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBQXVDLGVBQUcsRUFBQ0YsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7RUFFOUUsSUFBSSxJQUFBRSxlQUFHLEVBQUNGLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO0lBQ3hELE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBTUcsSUFBSSxHQUFHLElBQUFELGVBQUcsRUFBQ0YsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUM7RUFFeEMsSUFBSUcsSUFBSSxLQUFLLFlBQVksRUFBRTtJQUN6QjtJQUNBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7SUFHSSxPQUFPLElBQUk7RUFDYjs7RUFFQTtFQUNBLE9BQU8sS0FBSztBQUNkLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence.js","names":["_get","_interopRequireDefault","require","_shuffle","_isEmpty","lg","n","console","bind","debug","log","warn","error","compact","exports","arr","Array","isArray","filter","v","undefined","getShuffledChoices","choices","session","updateSession","choiceKey","Promise","resolve","_session$data","_typeof2","currentShuffled","data","shuffledValues","isEmpty","map","find","c","shuffledChoices","shuffle","id","element","concat","JSON","stringify","e","lockChoices","model","env","lockChoiceOrder","get","role"],"sources":["../src/persistence.js"],"sourcesContent":["import get from 'lodash/get';\nimport shuffle from 'lodash/shuffle';\nimport isEmpty from 'lodash/isEmpty';\n\n// eslint-disable-next-line no-console\nconst lg = (n) => console[n].bind(console, 'controller-utils:');\nconst debug = lg('debug');\nconst log = lg('log');\nconst warn = lg('warn');\nconst error = lg('error');\n\nexport const compact = (arr) => {\n if (Array.isArray(arr)) {\n return arr.filter((v) => v !== null && v !== undefined);\n }\n\n return arr;\n};\n\nexport const getShuffledChoices = (choices, session, updateSession, choiceKey) =>\n new Promise((resolve) => {\n log('updateSession type: ', typeof updateSession);\n log('session: ', session);\n\n const currentShuffled = compact(session?.data?.shuffledValues || session?.shuffledValues || []);\n\n if (!session) {\n // eslint-disable-next-line quotes\n warn(\"unable to save shuffled choices because there's no session.\");\n resolve(undefined);\n } else if (!isEmpty(currentShuffled)) {\n debug('use shuffledValues to sort the choices...', currentShuffled);\n resolve(compact(currentShuffled.map((v) => choices.find((c) => c[choiceKey] === v))));\n } else {\n const shuffledChoices = shuffle(choices);\n\n if (updateSession && typeof updateSession === 'function') {\n try {\n //Note: session.id refers to the id of the element within a session\n const shuffledValues = compact(shuffledChoices.map((c) => c[choiceKey]));\n log('try to save shuffledValues to session...', shuffledValues);\n log('call updateSession... ', session.id, session.element);\n\n if (isEmpty(shuffledValues)) {\n error(\n `shuffledValues is an empty array? - refusing to call updateSession: shuffledChoices: ${JSON.stringify(\n shuffledChoices,\n )}, key: ${choiceKey}`,\n );\n } else {\n updateSession(session.id, session.element, { shuffledValues }).catch((e) =>\n // eslint-disable-next-line no-console\n console.error('update session failed for: ', session.id, e),\n );\n }\n } catch (e) {\n warn('unable to save shuffled order for choices');\n error(e);\n }\n } else {\n warn('unable to save shuffled choices, shuffle will happen every time.');\n }\n\n //save this shuffle to the session for later retrieval\n resolve(shuffledChoices);\n }\n });\n\n/**\n * If we return:\n * - true - that means that the order of the choices will be ordinal (as is created in the configure item)\n * - false - that means the getShuffledChoices above will be called and that in turn means that we either\n * return the shuffled values on the session (if any exists) or we shuffle the choices\n * @param model - model to check if we should lock order\n * @param session - session to check if we should lock order\n * @param env - env to check if we should lock order\n * @returns {boolean}\n */\nexport const lockChoices = (model, session, env) => {\n if (model.lockChoiceOrder) {\n return true;\n }\n\n log('lockChoiceOrder: ', get(env, ['@pie-element', 'lockChoiceOrder'], false));\n\n if (get(env, ['@pie-element', 'lockChoiceOrder'], false)) {\n return true;\n }\n\n const role = get(env, 'role', 'student');\n\n if (role === 'instructor') {\n // TODO: .. in the future the instructor can toggle between ordinal and shuffled here, so keeping this code until then\n /*const alreadyShuffled = hasShuffledValues(session);\n\n if (alreadyShuffled) {\n return false;\n }\n\n return true;*/\n return true;\n }\n\n // here it's a student, so don't lock and it will shuffle if needs be\n return false;\n};\n"],"mappings":"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","ignoreList":[]}