occam-nominal 1.0.347 → 1.0.348
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.
|
@@ -15,6 +15,9 @@ _export(exports, {
|
|
|
15
15
|
get backwardsEvery () {
|
|
16
16
|
return backwardsEvery;
|
|
17
17
|
},
|
|
18
|
+
get backwardsForEach () {
|
|
19
|
+
return backwardsForEach;
|
|
20
|
+
},
|
|
18
21
|
get each () {
|
|
19
22
|
return each;
|
|
20
23
|
},
|
|
@@ -36,6 +39,9 @@ _export(exports, {
|
|
|
36
39
|
get forwardsEvery () {
|
|
37
40
|
return forwardsEvery;
|
|
38
41
|
},
|
|
42
|
+
get forwardsForEach () {
|
|
43
|
+
return forwardsForEach;
|
|
44
|
+
},
|
|
39
45
|
get match () {
|
|
40
46
|
return match;
|
|
41
47
|
},
|
|
@@ -55,7 +61,7 @@ _export(exports, {
|
|
|
55
61
|
const _necessary = require("necessary");
|
|
56
62
|
const _occamlanguages = require("occam-languages");
|
|
57
63
|
const { forEach: asynchronousForEach, forwardsForEach: asynchronousForwardsForEach, backwardsForEach: asynchronousBackwardsForEach } = _necessary.asynchronousUtilities;
|
|
58
|
-
const {
|
|
64
|
+
const { reduce, forEach, resolve } = _occamlanguages.continuationUtilities;
|
|
59
65
|
function one(array, callback, ...callerArguments) {
|
|
60
66
|
let success = false;
|
|
61
67
|
const continuation = callerArguments.pop();
|
|
@@ -140,6 +146,50 @@ function every(array, callback, ...callerArguments) {
|
|
|
140
146
|
return continuation(success, context);
|
|
141
147
|
});
|
|
142
148
|
}
|
|
149
|
+
function match(arrayA, arrayB, callback, ...callerArguments) {
|
|
150
|
+
const continuation = callerArguments.pop(), context = callerArguments.pop();
|
|
151
|
+
const arrayALength = arrayA.length, arrayBLength = arrayB.length;
|
|
152
|
+
if (arrayALength !== arrayBLength) {
|
|
153
|
+
const matches = false;
|
|
154
|
+
return continuation(matches, context);
|
|
155
|
+
}
|
|
156
|
+
let index = -1;
|
|
157
|
+
return every(arrayA, (elementA, ...calleeArguments)=>{
|
|
158
|
+
index++;
|
|
159
|
+
const elementB = arrayB[index];
|
|
160
|
+
const continuation = calleeArguments.pop();
|
|
161
|
+
let context = calleeArguments.pop();
|
|
162
|
+
return callback(elementA, elementB, ...calleeArguments, context, (...callbackArguments)=>{
|
|
163
|
+
const success = callbackArguments.shift();
|
|
164
|
+
context = callbackArguments.shift();
|
|
165
|
+
return continuation(success, context);
|
|
166
|
+
});
|
|
167
|
+
}, ...callerArguments, context, (success, context)=>{
|
|
168
|
+
const matches = success; ///
|
|
169
|
+
return continuation(matches, context);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
function filter(array, callback, ...callerArguments) {
|
|
173
|
+
const deletedElements = [];
|
|
174
|
+
const continuation = callerArguments.pop(), context = callerArguments.pop();
|
|
175
|
+
let index = array.length;
|
|
176
|
+
return backwardsForEach(array, (element, ...calleeArguments)=>{
|
|
177
|
+
index--;
|
|
178
|
+
const continuation = calleeArguments.pop();
|
|
179
|
+
let context = calleeArguments.pop();
|
|
180
|
+
return callback(element, ...calleeArguments, context, (...callbackArguments)=>{
|
|
181
|
+
const success = callbackArguments.shift();
|
|
182
|
+
if (!success) {
|
|
183
|
+
const start = index, deleteCount = 1, deletedElement = array.splice(start, deleteCount).pop(); ///
|
|
184
|
+
deletedElements.unshift(deletedElement); ///
|
|
185
|
+
}
|
|
186
|
+
context = callbackArguments.shift();
|
|
187
|
+
return continuation(context);
|
|
188
|
+
});
|
|
189
|
+
}, ...callerArguments, context, (context)=>{
|
|
190
|
+
return continuation(deletedElements, context);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
143
193
|
function extract(array, callback, ...callerArguments) {
|
|
144
194
|
let deletedElement = undefined; ///
|
|
145
195
|
const continuation = callerArguments.pop(), context = callerArguments.pop();
|
|
@@ -201,6 +251,30 @@ function backwardsEvery(array, callback, ...callerArguments) {
|
|
|
201
251
|
return continuation(success, context);
|
|
202
252
|
});
|
|
203
253
|
}
|
|
254
|
+
function forwardsForEach(array, callback, ...callerArguments) {
|
|
255
|
+
const continuation = callerArguments.pop();
|
|
256
|
+
let context = callerArguments.pop();
|
|
257
|
+
asynchronousForwardsForEach(array, (element, next, done)=>{
|
|
258
|
+
return callback(element, ...callerArguments, context, (...callbackArguments)=>{
|
|
259
|
+
context = callbackArguments.shift();
|
|
260
|
+
next();
|
|
261
|
+
});
|
|
262
|
+
}, ()=>{
|
|
263
|
+
return continuation(context);
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function backwardsForEach(array, callback, ...callerArguments) {
|
|
267
|
+
const continuation = callerArguments.pop();
|
|
268
|
+
let context = callerArguments.pop();
|
|
269
|
+
asynchronousBackwardsForEach(array, (element, next, done)=>{
|
|
270
|
+
return callback(element, ...callerArguments, context, (...callbackArguments)=>{
|
|
271
|
+
context = callbackArguments.shift();
|
|
272
|
+
next();
|
|
273
|
+
});
|
|
274
|
+
}, ()=>{
|
|
275
|
+
return continuation(context);
|
|
276
|
+
});
|
|
277
|
+
}
|
|
204
278
|
function all(callbacks, ...callerArguemnts) {
|
|
205
279
|
return every(callbacks, (callback, ...callbackArguments)=>{
|
|
206
280
|
return callback(...callbackArguments);
|
|
@@ -212,4 +286,4 @@ function exists(callbacks, ...callerArguemnts) {
|
|
|
212
286
|
}, ...callerArguemnts);
|
|
213
287
|
}
|
|
214
288
|
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmNvbnN0IHsgZm9yRWFjaDogYXN5bmNocm9ub3VzRm9yRWFjaCxcbiAgICAgICAgZm9yd2FyZHNGb3JFYWNoOiBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2gsXG4gICAgICAgIGJhY2t3YXJkc0ZvckVhY2g6IGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2ggfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGNvbnN0IHsgbWF0Y2gsIGZpbHRlciwgcmVkdWNlLCBmb3JFYWNoLCByZXNvbHZlIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmUoYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGNvbnRleHQgPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgY29uc3QgY2FsbGVyQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNhbGxlckNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnRleHQgPSBjYWxsZXJDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb21lKGFycmF5LCBjYWxsYmFjaywgLi4uY2FsbGVyQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBjb250ZXh0ID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGNvbnN0IGNhbGxlckNvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGVyQXJndW1lbnRzLCBjYWxsZXJDb250ZXh0LCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICBjb250ZXh0ID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGNvbnRleHQgPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgY29uc3QgY2FsbGVyQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgc3VjY2VzcyA9IGNhbGxiYWNrQXJndW1lbnRzLnNoaWZ0KCk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBjb250ZXh0ID0gY2FsbGVyQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uY2FsbGVyQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGNvbnRleHQgPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgY29uc3QgY2FsbGVyQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgc3VjY2VzcyA9IGNhbGxiYWNrQXJndW1lbnRzLnNoaWZ0KCk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBjb250ZXh0ID0gY2FsbGVyQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QoYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZXJBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGNvbnRleHQgPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgcmV0dXJuIHNvbWUoYXJyYXksIChlbGVtZW50LCAuLi5jYWxsZWVBcmd1bWVudHMpID0+IHtcbiAgICBpbmRleCsrO1xuXG4gICAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVlQXJndW1lbnRzLnBvcCgpO1xuXG4gICAgbGV0IGNvbnRleHQgPSBjYWxsZWVBcmd1bWVudHMucG9wKCk7XG5cbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGVlQXJndW1lbnRzLCBjb250ZXh0LCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgICAgICBkZWxldGVkRWxlbWVudCA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLnBvcCgpIC8vL1xuXG4gICAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNvbnRleHQsIChzdWNjZXNzLCBjb250ZXh0KSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihkZWxldGVkRWxlbWVudCwgY29udGV4dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmNhbGxlckFyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBjb250ZXh0ID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGNvbnN0IGNhbGxlckNvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgYXN5bmNocm9ub3VzRm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgc3VjY2VzcyA9IGNhbGxiYWNrQXJndW1lbnRzLnNoaWZ0KCk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBjb250ZXh0ID0gY2FsbGVyQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uY2FsbGVyQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGNvbnRleHQgPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgY29uc3QgY2FsbGVyQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICBhc3luY2hyb25vdXNCYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgc3VjY2VzcyA9IGNhbGxiYWNrQXJndW1lbnRzLnNoaWZ0KCk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBjb250ZXh0ID0gY2FsbGVyQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbChjYWxsYmFja3MsIC4uLmNhbGxlckFyZ3VlbW50cykge1xuICByZXR1cm4gZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uY2FsbGVyQXJndWVtbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0cyhjYWxsYmFja3MsIC4uLmNhbGxlckFyZ3VlbW50cykge1xuICByZXR1cm4gc29tZShjYWxsYmFja3MsIChjYWxsYmFjaywgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICB9LCAuLi5jYWxsZXJBcmd1ZW1udHMpO1xufVxuIl0sIm5hbWVzIjpbImFsbCIsImJhY2t3YXJkc0V2ZXJ5IiwiZWFjaCIsImV2ZXJ5IiwiZXhpc3RzIiwiZXh0cmFjdCIsImZpbHRlciIsImZvckVhY2giLCJmb3J3YXJkc0V2ZXJ5IiwibWF0Y2giLCJvbmUiLCJyZWR1Y2UiLCJyZXNvbHZlIiwic29tZSIsImFzeW5jaHJvbm91c0ZvckVhY2giLCJmb3J3YXJkc0ZvckVhY2giLCJhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2giLCJiYWNrd2FyZHNGb3JFYWNoIiwiYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaCIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImFycmF5IiwiY2FsbGJhY2siLCJjYWxsZXJBcmd1bWVudHMiLCJzdWNjZXNzIiwiY29udGludWF0aW9uIiwicG9wIiwiY29udGV4dCIsImNhbGxlckNvbnRleHQiLCJlbGVtZW50IiwibmV4dCIsImRvbmUiLCJjYWxsYmFja0FyZ3VtZW50cyIsInBhc3NlZCIsInNoaWZ0IiwiZGVsZXRlZEVsZW1lbnQiLCJ1bmRlZmluZWQiLCJpbmRleCIsImNhbGxlZUFyZ3VtZW50cyIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJzcGxpY2UiLCJjYWxsYmFja3MiLCJjYWxsZXJBcmd1ZW1udHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXFPZ0JBO2VBQUFBOztRQTlCQUM7ZUFBQUE7O1FBNUhBQztlQUFBQTs7UUE4QkFDO2VBQUFBOztRQWtJQUM7ZUFBQUE7O1FBcEdBQztlQUFBQTs7UUE5SE1DO2VBQUFBOztRQUFnQkM7ZUFBQUE7O1FBZ0t0QkM7ZUFBQUE7O1FBaEtEQztlQUFBQTs7UUFFQ0M7ZUFBQUE7O1FBRmNDO2VBQUFBOztRQUFpQkM7ZUFBQUE7O1FBc0MvQkM7ZUFBQUE7OzsyQkE3Q3NCO2dDQUNBO0FBRXRDLE1BQU0sRUFBRU4sU0FBU08sbUJBQW1CLEVBQzVCQyxpQkFBaUJDLDJCQUEyQixFQUM1Q0Msa0JBQWtCQyw0QkFBNEIsRUFBRSxHQUFHQyxnQ0FBcUI7QUFFekUsTUFBTSxFQUFFVixLQUFLLEVBQUVILE1BQU0sRUFBRUssTUFBTSxFQUFFSixPQUFPLEVBQUVLLE9BQU8sRUFBRSxHQUFHUSxxQ0FBcUI7QUFFekUsU0FBU1YsSUFBSVcsS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0MsZUFBZTtJQUNyRCxJQUFJQyxVQUFVO0lBRWQsTUFBTUMsZUFBZUYsZ0JBQWdCRyxHQUFHO0lBRXhDLElBQUlDLFVBQVVKLGdCQUFnQkcsR0FBRztJQUVqQyxNQUFNRSxnQkFBZ0JELFNBQVUsR0FBRztJQUVuQ2Isb0JBQW9CTyxPQUFPLENBQUNRLFNBQVNDLE1BQU1DO1FBQ3pDLE9BQU9ULFNBQVNPLFlBQVlOLGlCQUFpQkssZUFBZSxDQUFDLEdBQUdJO1lBQzlELE1BQU1DLFNBQVNELGtCQUFrQkUsS0FBSztZQUV0QyxJQUFJRCxRQUFRO2dCQUNWLElBQUksQ0FBQ1QsU0FBUztvQkFDWkEs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
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmNvbnN0IHsgZm9yRWFjaDogYXN5bmNocm9ub3VzRm9yRWFjaCxcbiAgICAgICAgZm9yd2FyZHNGb3JFYWNoOiBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2gsXG4gICAgICAgIGJhY2t3YXJkc0ZvckVhY2g6IGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2ggfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGNvbnN0IHsgcmVkdWNlLCBmb3JFYWNoLCByZXNvbHZlIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmUoYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGNvbnRleHQgPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgY29uc3QgY2FsbGVyQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNhbGxlckNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnRleHQgPSBjYWxsZXJDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb21lKGFycmF5LCBjYWxsYmFjaywgLi4uY2FsbGVyQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBjb250ZXh0ID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGNvbnN0IGNhbGxlckNvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGVyQXJndW1lbnRzLCBjYWxsZXJDb250ZXh0LCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICBjb250ZXh0ID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGNvbnRleHQgPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgY29uc3QgY2FsbGVyQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgc3VjY2VzcyA9IGNhbGxiYWNrQXJndW1lbnRzLnNoaWZ0KCk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBjb250ZXh0ID0gY2FsbGVyQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uY2FsbGVyQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGNvbnRleHQgPSBjYWxsZXJBcmd1bWVudHMucG9wKCk7XG5cbiAgY29uc3QgY2FsbGVyQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZXJBcmd1bWVudHMsIGNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgc3VjY2VzcyA9IGNhbGxiYWNrQXJndW1lbnRzLnNoaWZ0KCk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBjb250ZXh0ID0gY2FsbGVyQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4uY2FsbGVyQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGNhbGxlckFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY29udGV4dCA9IGNhbGxlckFyZ3VtZW50cy5wb3AoKTtcblxuICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGlmIChhcnJheUFMZW5ndGggIT09IGFycmF5Qkxlbmd0aCkge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIHJldHVybiBjb250aW51YXRpb24obWF0Y2hlcywgY29udGV4dCk7XG4gIH1cblxuICBsZXQgaW5kZXggPSAtMTtcblxuICByZXR1cm4gZXZlcnkoYXJyYXlBLCAoZWxlbWVudEEsIC4uLmNhbGxlZUFyZ3VtZW50cykgPT4ge1xuICAgIGluZGV4Kys7XG5cbiAgICBjb25zdCBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZWVBcmd1bWVudHMucG9wKCk7XG5cbiAgICBsZXQgY29udGV4dCA9IGNhbGxlZUFyZ3VtZW50cy5wb3AoKTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIsIC4uLmNhbGxlZUFyZ3VtZW50cywgY29udGV4dCwgKC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgY29udGV4dCA9IGNhbGxiYWNrQXJndW1lbnRzLnNoaWZ0KCk7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgY29udGV4dCk7XG4gICAgfSk7XG4gIH0sIC4uLmNhbGxlckFyZ3VtZW50cywgY29udGV4dCwgKHN1Y2Nlc3MsIGNvbnRleHQpID0+IHtcbiAgICBjb25zdCBtYXRjaGVzID0gc3VjY2VzczsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihtYXRjaGVzLCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgY29uc3QgZGVsZXRlZEVsZW1lbnRzID0gW107XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBjb250ZXh0ID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBpbmRleCA9IGFycmF5Lmxlbmd0aDtcblxuICByZXR1cm4gYmFja3dhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIC4uLmNhbGxlZUFyZ3VtZW50cykgPT4ge1xuICAgIGluZGV4LS07XG5cbiAgICBjb25zdCBjb250aW51YXRpb24gPSBjYWxsZWVBcmd1bWVudHMucG9wKCk7XG5cbiAgICBsZXQgY29udGV4dCA9IGNhbGxlZUFyZ3VtZW50cy5wb3AoKTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsZWVBcmd1bWVudHMsIGNvbnRleHQsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IGNhbGxiYWNrQXJndW1lbnRzLnNoaWZ0KCk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KS5wb3AoKTsgIC8vL1xuXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50cy51bnNoaWZ0KGRlbGV0ZWRFbGVtZW50KTsgIC8vL1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0ID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9KTtcbiAgfSwgLi4uY2FsbGVyQXJndW1lbnRzLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnRzLCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0KGFycmF5LCBjYWxsYmFjaywgLi4uY2FsbGVyQXJndW1lbnRzKSB7XG4gIGxldCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDsgLy8vXG5cbiAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBjb250ZXh0ID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIHJldHVybiBzb21lKGFycmF5LCAoZWxlbWVudCwgLi4uY2FsbGVlQXJndW1lbnRzKSA9PiB7XG4gICAgaW5kZXgrKztcblxuICAgIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGNhbGxlZUFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGxldCBjb250ZXh0ID0gY2FsbGVlQXJndW1lbnRzLnBvcCgpO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxlZUFyZ3VtZW50cywgY29udGV4dCwgKC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KS5wb3AoKSAvLy9cblxuICAgICAgICBjb250ZXh0ID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfSwgLi4uY2FsbGVyQXJndW1lbnRzLCBjb250ZXh0LCAoc3VjY2VzcywgY29udGV4dCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGNhbGxlckFyZ3VtZW50cy5wb3AoKTtcblxuICBsZXQgY29udGV4dCA9IGNhbGxlckFyZ3VtZW50cy5wb3AoKTtcblxuICBjb25zdCBjYWxsZXJDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gIGFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGVyQXJndW1lbnRzLCBjb250ZXh0LCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgY29udGV4dCA9IGNhbGxlckNvbnRleHQ7ICAvLy9cblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0ID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmNhbGxlckFyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBjb250ZXh0ID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGNvbnN0IGNhbGxlckNvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGVyQXJndW1lbnRzLCBjb250ZXh0LCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgY29udGV4dCA9IGNhbGxlckNvbnRleHQ7ICAvLy9cblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0ID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBjb250ZXh0ID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGVyQXJndW1lbnRzLCBjb250ZXh0LCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgIGNvbnRleHQgPSBjYWxsYmFja0FyZ3VtZW50cy5zaGlmdCgpO1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5jYWxsZXJBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBjb250ZXh0ID0gY2FsbGVyQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxlckFyZ3VtZW50cywgY29udGV4dCwgKC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICBjb250ZXh0ID0gY2FsbGJhY2tBcmd1bWVudHMuc2hpZnQoKTtcblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGwoY2FsbGJhY2tzLCAuLi5jYWxsZXJBcmd1ZW1udHMpIHtcbiAgcmV0dXJuIGV2ZXJ5KGNhbGxiYWNrcywgKGNhbGxiYWNrLCAuLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gIH0sIC4uLmNhbGxlckFyZ3VlbW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHMoY2FsbGJhY2tzLCAuLi5jYWxsZXJBcmd1ZW1udHMpIHtcbiAgcmV0dXJuIHNvbWUoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uY2FsbGVyQXJndWVtbnRzKTtcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJiYWNrd2FyZHNFdmVyeSIsImJhY2t3YXJkc0ZvckVhY2giLCJlYWNoIiwiZXZlcnkiLCJleGlzdHMiLCJleHRyYWN0IiwiZmlsdGVyIiwiZm9yRWFjaCIsImZvcndhcmRzRXZlcnkiLCJmb3J3YXJkc0ZvckVhY2giLCJtYXRjaCIsIm9uZSIsInJlZHVjZSIsInJlc29sdmUiLCJzb21lIiwiYXN5bmNocm9ub3VzRm9yRWFjaCIsImFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaCIsImFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2giLCJhc3luY2hyb25vdXNVdGlsaXRpZXMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJhcnJheSIsImNhbGxiYWNrIiwiY2FsbGVyQXJndW1lbnRzIiwic3VjY2VzcyIsImNvbnRpbnVhdGlvbiIsInBvcCIsImNvbnRleHQiLCJjYWxsZXJDb250ZXh0IiwiZWxlbWVudCIsIm5leHQiLCJkb25lIiwiY2FsbGJhY2tBcmd1bWVudHMiLCJwYXNzZWQiLCJzaGlmdCIsImFycmF5QSIsImFycmF5QiIsImFycmF5QUxlbmd0aCIsImxlbmd0aCIsImFycmF5Qkxlbmd0aCIsIm1hdGNoZXMiLCJpbmRleCIsImVsZW1lbnRBIiwiY2FsbGVlQXJndW1lbnRzIiwiZWxlbWVudEIiLCJkZWxldGVkRWxlbWVudHMiLCJzdGFydCIsImRlbGV0ZUNvdW50IiwiZGVsZXRlZEVsZW1lbnQiLCJzcGxpY2UiLCJ1bnNoaWZ0IiwidW5kZWZpbmVkIiwiY2FsbGJhY2tzIiwiY2FsbGVyQXJndWVtbnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE4VWdCQTtlQUFBQTs7UUE5REFDO2VBQUFBOztRQThDQUM7ZUFBQUE7O1FBblBBQztlQUFBQTs7UUE4QkFDO2VBQUFBOztRQTJPQUM7ZUFBQUE7O1FBcElBQztlQUFBQTs7UUFuQ0FDO2VBQUFBOztRQXBLT0M7ZUFBQUE7O1FBeU9QQztlQUFBQTs7UUE0REFDO2VBQUFBOztRQXZLQUM7ZUFBQUE7O1FBNUhBQztlQUFBQTs7UUFGREM7ZUFBQUE7O1FBQWlCQztlQUFBQTs7UUFzQ2hCQztlQUFBQTs7OzJCQTdDc0I7Z0NBQ0E7QUFFdEMsTUFBTSxFQUFFUCxTQUFTUSxtQkFBbUIsRUFDNUJOLGlCQUFpQk8sMkJBQTJCLEVBQzVDZixrQkFBa0JnQiw0QkFBNEIsRUFBRSxHQUFHQyxnQ0FBcUI7QUFFekUsTUFBTSxFQUFFTixNQUFNLEVBQUVMLE9BQU8sRUFBRU0sT0FBTyxFQUFFLEdBQUdNLHFDQUFxQjtBQUUxRCxTQUFTUixJQUFJUyxLQUFLLEVBQUVDLFFBQVEsRUFBRSxHQUFH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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.348",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.5.5",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.414",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.19",
|
|
16
|
-
"occam-languages": "^2.2.
|
|
16
|
+
"occam-languages": "^2.2.16",
|
|
17
17
|
"occam-query": "^4.1.200"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
@@ -7,7 +7,7 @@ const { forEach: asynchronousForEach,
|
|
|
7
7
|
forwardsForEach: asynchronousForwardsForEach,
|
|
8
8
|
backwardsForEach: asynchronousBackwardsForEach } = asynchronousUtilities;
|
|
9
9
|
|
|
10
|
-
export const {
|
|
10
|
+
export const { reduce, forEach, resolve } = continuationUtilities;
|
|
11
11
|
|
|
12
12
|
export function one(array, callback, ...callerArguments) {
|
|
13
13
|
let success = false;
|
|
@@ -133,6 +133,79 @@ export function every(array, callback, ...callerArguments) {
|
|
|
133
133
|
});
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
+
export function match(arrayA, arrayB, callback, ...callerArguments) {
|
|
137
|
+
const continuation = callerArguments.pop(),
|
|
138
|
+
context = callerArguments.pop();
|
|
139
|
+
|
|
140
|
+
const arrayALength = arrayA.length,
|
|
141
|
+
arrayBLength = arrayB.length;
|
|
142
|
+
|
|
143
|
+
if (arrayALength !== arrayBLength) {
|
|
144
|
+
const matches = false;
|
|
145
|
+
|
|
146
|
+
return continuation(matches, context);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
let index = -1;
|
|
150
|
+
|
|
151
|
+
return every(arrayA, (elementA, ...calleeArguments) => {
|
|
152
|
+
index++;
|
|
153
|
+
|
|
154
|
+
const elementB = arrayB[index];
|
|
155
|
+
|
|
156
|
+
const continuation = calleeArguments.pop();
|
|
157
|
+
|
|
158
|
+
let context = calleeArguments.pop();
|
|
159
|
+
|
|
160
|
+
return callback(elementA, elementB, ...calleeArguments, context, (...callbackArguments) => {
|
|
161
|
+
const success = callbackArguments.shift();
|
|
162
|
+
|
|
163
|
+
context = callbackArguments.shift();
|
|
164
|
+
|
|
165
|
+
return continuation(success, context);
|
|
166
|
+
});
|
|
167
|
+
}, ...callerArguments, context, (success, context) => {
|
|
168
|
+
const matches = success; ///
|
|
169
|
+
|
|
170
|
+
return continuation(matches, context);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export function filter(array, callback, ...callerArguments) {
|
|
175
|
+
const deletedElements = [];
|
|
176
|
+
|
|
177
|
+
const continuation = callerArguments.pop(),
|
|
178
|
+
context = callerArguments.pop();
|
|
179
|
+
|
|
180
|
+
let index = array.length;
|
|
181
|
+
|
|
182
|
+
return backwardsForEach(array, (element, ...calleeArguments) => {
|
|
183
|
+
index--;
|
|
184
|
+
|
|
185
|
+
const continuation = calleeArguments.pop();
|
|
186
|
+
|
|
187
|
+
let context = calleeArguments.pop();
|
|
188
|
+
|
|
189
|
+
return callback(element, ...calleeArguments, context, (...callbackArguments) => {
|
|
190
|
+
const success = callbackArguments.shift();
|
|
191
|
+
|
|
192
|
+
if (!success) {
|
|
193
|
+
const start = index, ///
|
|
194
|
+
deleteCount = 1,
|
|
195
|
+
deletedElement = array.splice(start, deleteCount).pop(); ///
|
|
196
|
+
|
|
197
|
+
deletedElements.unshift(deletedElement); ///
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
context = callbackArguments.shift();
|
|
201
|
+
|
|
202
|
+
return continuation(context);
|
|
203
|
+
});
|
|
204
|
+
}, ...callerArguments, context, (context) => {
|
|
205
|
+
return continuation(deletedElements, context);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
136
209
|
export function extract(array, callback, ...callerArguments) {
|
|
137
210
|
let deletedElement = undefined; ///
|
|
138
211
|
|
|
@@ -227,6 +300,38 @@ export function backwardsEvery(array, callback, ...callerArguments) {
|
|
|
227
300
|
});
|
|
228
301
|
}
|
|
229
302
|
|
|
303
|
+
export function forwardsForEach(array, callback, ...callerArguments) {
|
|
304
|
+
const continuation = callerArguments.pop();
|
|
305
|
+
|
|
306
|
+
let context = callerArguments.pop();
|
|
307
|
+
|
|
308
|
+
asynchronousForwardsForEach(array, (element, next, done) => {
|
|
309
|
+
return callback(element, ...callerArguments, context, (...callbackArguments) => {
|
|
310
|
+
context = callbackArguments.shift();
|
|
311
|
+
|
|
312
|
+
next();
|
|
313
|
+
});
|
|
314
|
+
}, () => {
|
|
315
|
+
return continuation(context);
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export function backwardsForEach(array, callback, ...callerArguments) {
|
|
320
|
+
const continuation = callerArguments.pop();
|
|
321
|
+
|
|
322
|
+
let context = callerArguments.pop();
|
|
323
|
+
|
|
324
|
+
asynchronousBackwardsForEach(array, (element, next, done) => {
|
|
325
|
+
return callback(element, ...callerArguments, context, (...callbackArguments) => {
|
|
326
|
+
context = callbackArguments.shift();
|
|
327
|
+
|
|
328
|
+
next();
|
|
329
|
+
});
|
|
330
|
+
}, () => {
|
|
331
|
+
return continuation(context);
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
|
|
230
335
|
export function all(callbacks, ...callerArguemnts) {
|
|
231
336
|
return every(callbacks, (callback, ...callbackArguments) => {
|
|
232
337
|
return callback(...callbackArguments);
|