occam-languages 2.2.8 → 2.2.10
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/lib/utilities/continuation.js +25 -19
- package/package.json +1 -1
- package/src/utilities/continuation.js +24 -18
|
@@ -77,7 +77,7 @@ function one(array, callback, ...remainingArguments) {
|
|
|
77
77
|
next();
|
|
78
78
|
});
|
|
79
79
|
}, ()=>{
|
|
80
|
-
return continuation(found);
|
|
80
|
+
return continuation(found, ...remainingArguments);
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
function some(array, callback, ...remainingArguments) {
|
|
@@ -93,7 +93,7 @@ function some(array, callback, ...remainingArguments) {
|
|
|
93
93
|
next();
|
|
94
94
|
});
|
|
95
95
|
}, ()=>{
|
|
96
|
-
return continuation(success);
|
|
96
|
+
return continuation(success, ...remainingArguments);
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
function each(array, callback, ...remainingArguments) {
|
|
@@ -111,7 +111,7 @@ function each(array, callback, ...remainingArguments) {
|
|
|
111
111
|
next();
|
|
112
112
|
});
|
|
113
113
|
}, ()=>{
|
|
114
|
-
return continuation(found);
|
|
114
|
+
return continuation(found, ...remainingArguments);
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
function every(array, callback, ...remainingArguments) {
|
|
@@ -127,14 +127,14 @@ function every(array, callback, ...remainingArguments) {
|
|
|
127
127
|
next();
|
|
128
128
|
});
|
|
129
129
|
}, ()=>{
|
|
130
|
-
return continuation(success);
|
|
130
|
+
return continuation(success, ...remainingArguments);
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
function match(arrayA, arrayB, callback, ...remainingArguments) {
|
|
134
134
|
const continuation = remainingArguments.pop(), arrayALength = arrayA.length, arrayBLength = arrayB.length;
|
|
135
135
|
if (arrayALength !== arrayBLength) {
|
|
136
136
|
const matches = false;
|
|
137
|
-
return continuation(matches);
|
|
137
|
+
return continuation(matches, ...remainingArguments);
|
|
138
138
|
}
|
|
139
139
|
let index = -1;
|
|
140
140
|
return every(arrayA, (elementA, continuation)=>{
|
|
@@ -143,7 +143,7 @@ function match(arrayA, arrayB, callback, ...remainingArguments) {
|
|
|
143
143
|
return callback(elementA, elementB, ...remainingArguments, continuation);
|
|
144
144
|
}, (success)=>{
|
|
145
145
|
const matches = success; ///
|
|
146
|
-
return continuation(matches);
|
|
146
|
+
return continuation(matches, ...remainingArguments);
|
|
147
147
|
});
|
|
148
148
|
}
|
|
149
149
|
function reduce(array, initialValue, callback, ...remainingArguments) {
|
|
@@ -155,7 +155,7 @@ function reduce(array, initialValue, callback, ...remainingArguments) {
|
|
|
155
155
|
next();
|
|
156
156
|
});
|
|
157
157
|
}, ()=>{
|
|
158
|
-
return continuation(value);
|
|
158
|
+
return continuation(value, ...remainingArguments);
|
|
159
159
|
});
|
|
160
160
|
}
|
|
161
161
|
function forEach(array, callback, ...remainingArguments) {
|
|
@@ -164,7 +164,9 @@ function forEach(array, callback, ...remainingArguments) {
|
|
|
164
164
|
callback(element, ...remainingArguments, ()=>{
|
|
165
165
|
next();
|
|
166
166
|
});
|
|
167
|
-
},
|
|
167
|
+
}, ()=>{
|
|
168
|
+
return continuation(...remainingArguments);
|
|
169
|
+
});
|
|
168
170
|
}
|
|
169
171
|
function forwardsEvery(array, callback, ...remainingArguments) {
|
|
170
172
|
let success = true;
|
|
@@ -179,7 +181,7 @@ function forwardsEvery(array, callback, ...remainingArguments) {
|
|
|
179
181
|
next();
|
|
180
182
|
});
|
|
181
183
|
}, ()=>{
|
|
182
|
-
return continuation(success);
|
|
184
|
+
return continuation(success, ...remainingArguments);
|
|
183
185
|
});
|
|
184
186
|
}
|
|
185
187
|
function backwardsEvery(array, callback, ...remainingArguments) {
|
|
@@ -195,7 +197,7 @@ function backwardsEvery(array, callback, ...remainingArguments) {
|
|
|
195
197
|
next();
|
|
196
198
|
});
|
|
197
199
|
}, ()=>{
|
|
198
|
-
return continuation(success);
|
|
200
|
+
return continuation(success, ...remainingArguments);
|
|
199
201
|
});
|
|
200
202
|
}
|
|
201
203
|
function forwardsForEach(array, callback, ...remainingArguments) {
|
|
@@ -204,7 +206,9 @@ function forwardsForEach(array, callback, ...remainingArguments) {
|
|
|
204
206
|
callback(element, ...remainingArguments, ()=>{
|
|
205
207
|
next();
|
|
206
208
|
});
|
|
207
|
-
},
|
|
209
|
+
}, ()=>{
|
|
210
|
+
return continuation(...remainingArguments);
|
|
211
|
+
});
|
|
208
212
|
}
|
|
209
213
|
function backwardsForEach(array, callback, ...remainingArguments) {
|
|
210
214
|
const continuation = remainingArguments.pop();
|
|
@@ -212,7 +216,9 @@ function backwardsForEach(array, callback, ...remainingArguments) {
|
|
|
212
216
|
callback(element, ...remainingArguments, ()=>{
|
|
213
217
|
next();
|
|
214
218
|
});
|
|
215
|
-
},
|
|
219
|
+
}, ()=>{
|
|
220
|
+
return continuation(...remainingArguments);
|
|
221
|
+
});
|
|
216
222
|
}
|
|
217
223
|
function filter(array, callback, ...remainingArguments) {
|
|
218
224
|
const deletedElements = [];
|
|
@@ -228,7 +234,7 @@ function filter(array, callback, ...remainingArguments) {
|
|
|
228
234
|
return continuation();
|
|
229
235
|
});
|
|
230
236
|
}, ()=>{
|
|
231
|
-
return continuation(deletedElements);
|
|
237
|
+
return continuation(deletedElements, ...remainingArguments);
|
|
232
238
|
});
|
|
233
239
|
}
|
|
234
240
|
function prune(array, callback, ...remainingArguments) {
|
|
@@ -242,10 +248,10 @@ function prune(array, callback, ...remainingArguments) {
|
|
|
242
248
|
const start = index, deleteCount = 1;
|
|
243
249
|
deletedElement = array.splice(start, deleteCount).pop(); ///
|
|
244
250
|
}
|
|
245
|
-
return continuation(
|
|
251
|
+
return continuation(passed);
|
|
246
252
|
});
|
|
247
253
|
}, ()=>{
|
|
248
|
-
return continuation(deletedElement);
|
|
254
|
+
return continuation(deletedElement, ...remainingArguments);
|
|
249
255
|
});
|
|
250
256
|
}
|
|
251
257
|
function extract(array, callback, ...remainingArguments) {
|
|
@@ -262,7 +268,7 @@ function extract(array, callback, ...remainingArguments) {
|
|
|
262
268
|
return continuation(passed);
|
|
263
269
|
});
|
|
264
270
|
}, ()=>{
|
|
265
|
-
return continuation(deletedElement);
|
|
271
|
+
return continuation(deletedElement, ...remainingArguments);
|
|
266
272
|
});
|
|
267
273
|
}
|
|
268
274
|
function resolve(arrayA, arrayB, callback, ...remainingArguments) {
|
|
@@ -274,7 +280,7 @@ function resolve(arrayA, arrayB, callback, ...remainingArguments) {
|
|
|
274
280
|
const arrayALength = arrayA.length;
|
|
275
281
|
if (arrayALength === 0) {
|
|
276
282
|
const success = true; ///
|
|
277
|
-
return continuation(success);
|
|
283
|
+
return continuation(success, ...remainingArguments);
|
|
278
284
|
}
|
|
279
285
|
let success = false;
|
|
280
286
|
let count = -1;
|
|
@@ -284,7 +290,7 @@ function resolve(arrayA, arrayB, callback, ...remainingArguments) {
|
|
|
284
290
|
if (terminate) {
|
|
285
291
|
if (!success) {
|
|
286
292
|
const success = false; ///
|
|
287
|
-
return continuation(success);
|
|
293
|
+
return continuation(success, ...remainingArguments);
|
|
288
294
|
}
|
|
289
295
|
arrayFilter(arrayA, (elementA)=>{
|
|
290
296
|
const arrayBIncludesElementA = arrayB.includes(elementA);
|
|
@@ -327,4 +333,4 @@ const _default = {
|
|
|
327
333
|
resolve
|
|
328
334
|
};
|
|
329
335
|
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpbHRlcjogYXJyYXlGaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBmb3JFYWNoOiBhc3luY2hyb25vdXNGb3JFYWNoLFxuICAgICAgICBmb3J3YXJkc0ZvckVhY2g6IGFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaCxcbiAgICAgICAgYmFja3dhcmRzRm9yRWFjaDogYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaCB9ID0gYXN5bmNocm9ub3VzVXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBmb3VuZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2U7XG5cbiAgICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihmb3VuZCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IGZvdW5kID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvdW5kID0gZmFsc2U7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihmb3VuZCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGlmIChhcnJheUFMZW5ndGggIT09IGFycmF5Qkxlbmd0aCkge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIHJldHVybiBjb250aW51YXRpb24obWF0Y2hlcyk7XG4gIH1cblxuICBsZXQgaW5kZXggPSAtMTtcblxuICByZXR1cm4gZXZlcnkoYXJyYXlBLCAoZWxlbWVudEEsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgIGluZGV4Kys7XG5cbiAgICBjb25zdCBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudEEsIGVsZW1lbnRCLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG4gIH0sIChzdWNjZXNzKSA9PiB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHN1Y2Nlc3M7ICAvLy9cblxuICAgIHJldHVybiBjb250aW51YXRpb24obWF0Y2hlcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlKGFycmF5LCBpbml0aWFsVmFsdWUsIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAoY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICB2YWx1ZSA9IGN1cnJlbnRWYWx1ZTsgIC8vL1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHZhbHVlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICByZXR1cm4gYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsICgpID0+IHtcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IHRydWU7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0JhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIHJldHVybiBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICByZXR1cm4gYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsICgpID0+IHtcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgY29udGludWF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBkZWxldGVkRWxlbWVudHMgPSBbXTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGluZGV4ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHJldHVybiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgaW5kZXgtLTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCkucG9wKCk7ICAvLy9cblxuICAgICAgICBkZWxldGVkRWxlbWVudHMudW5zaGlmdChkZWxldGVkRWxlbWVudCk7ICAvLy9cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbigpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihkZWxldGVkRWxlbWVudHMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBydW5lKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDsgLy8vXG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIHJldHVybiBzb21lKGFycmF5LCAoZWxlbWVudCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgaW5kZXgrKztcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KS5wb3AoKSAvLy9cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbighcGFzc2VkKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgcmV0dXJuIHNvbWUoYXJyYXksIChlbGVtZW50LCBjb250aW51YXRpb24pID0+IHtcbiAgICBpbmRleCsrO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCkucG9wKCkgLy8vXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24ocGFzc2VkKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgYXJyYXlBID0gWyAgLy8vXG4gICAgLi4uYXJyYXlBXG4gIF07XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGZ1bmN0aW9uIG5leHRQYXNzKCkge1xuICAgIGNvbnN0IGFycmF5QUxlbmd0aCA9IGFycmF5QS5sZW5ndGg7XG5cbiAgICBpZiAoYXJyYXlBTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gdHJ1ZTsgIC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgIH1cblxuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBsZXQgY291bnQgPSAtMTtcblxuICAgIGZ1bmN0aW9uIG5leHRFbGVtZW50KCkge1xuICAgICAgY291bnQrKztcblxuICAgICAgY29uc3QgdGVybWluYXRlID0gKGNvdW50ID09PSBhcnJheUFMZW5ndGgpO1xuXG4gICAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTsgLy8vXG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJyYXlGaWx0ZXIoYXJyYXlBLCAoZWxlbWVudEEpID0+IHtcbiAgICAgICAgICBjb25zdCBhcnJheUJJbmNsdWRlc0VsZW1lbnRBID0gYXJyYXlCLmluY2x1ZGVzKGVsZW1lbnRBKTtcblxuICAgICAgICAgIGlmICghYXJyYXlCSW5jbHVkZXNFbGVtZW50QSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBuZXh0UGFzcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjb3VudCwgIC8vL1xuICAgICAgICAgICAgICBlbGVtZW50QSA9IGFycmF5QVtpbmRleF07XG5cbiAgICAgICAgY2FsbGJhY2soZWxlbWVudEEsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRCID0gZWxlbWVudEE7ICAvLy9cblxuICAgICAgICAgICAgYXJyYXlCLnB1c2goZWxlbWVudEIpO1xuXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0RWxlbWVudCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0RWxlbWVudCgpO1xuICB9XG5cbiAgbmV4dFBhc3MoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBvbmUsXG4gIHNvbWUsXG4gIGVhY2gsXG4gIGV2ZXJ5LFxuICBtYXRjaCxcbiAgcmVkdWNlLFxuICBmb3JFYWNoLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoLFxuICBmaWx0ZXIsXG4gIHBydW5lLFxuICBleHRyYWN0LFxuICByZXNvbHZlXG59O1xuIl0sIm5hbWVzIjpbImJhY2t3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRm9yRWFjaCIsImVhY2giLCJldmVyeSIsImV4dHJhY3QiLCJmaWx0ZXIiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRm9yRWFjaCIsIm1hdGNoIiwib25lIiwicHJ1bmUiLCJyZWR1Y2UiLCJyZXNvbHZlIiwic29tZSIsImFycmF5RmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNGb3JFYWNoIiwiYXN5bmNocm9ub3VzRm9yd2FyZHNGb3JFYWNoIiwiYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaCIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImFycmF5IiwiY2FsbGJhY2siLCJyZW1haW5pbmdBcmd1bWVudHMiLCJmb3VuZCIsImNvbnRpbnVhdGlvbiIsInBvcCIsImVsZW1lbnQiLCJuZXh0IiwiZG9uZSIsInBhc3NlZCIsInN1Y2Nlc3MiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJsZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJtYXRjaGVzIiwiaW5kZXgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiLCJjdXJyZW50VmFsdWUiLCJkZWxldGVkRWxlbWVudHMiLCJzdGFydCIsImRlbGV0ZUNvdW50IiwiZGVsZXRlZEVsZW1lbnQiLCJzcGxpY2UiLCJ1bnNoaWZ0IiwidW5kZWZpbmVkIiwibmV4dFBhc3MiLCJjb3VudCIsIm5leHRFbGVtZW50IiwidGVybWluYXRlIiwiYXJyYXlCSW5jbHVkZXNFbGVtZW50QSIsImluY2x1ZGVzIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBaUxnQkE7ZUFBQUE7O1FBZ0NBQztlQUFBQTs7UUF1SmhCO2VBQUE7O1FBL1NnQkM7ZUFBQUE7O1FBd0JBQztlQUFBQTs7UUE2TEFDO2VBQUFBOztRQW5EQUM7ZUFBQUE7O1FBMUVBQztlQUFBQTs7UUFVQUM7ZUFBQUE7O1FBNENBQztlQUFBQTs7UUFoR0FDO2VBQUFBOztRQTlGQUM7ZUFBQUE7O1FBNE9BQztlQUFBQTs7UUFwSEFDO2VBQUFBOztRQXNLQUM7ZUFBQUE7O1FBcFFBQztlQUFBQTs7OzJCQWpDc0M7QUFFdEQsTUFBTSxFQUFFVCxRQUFRVSxXQUFXLEVBQUUsR0FBR0MseUJBQWMsRUFDeEMsRUFBRVYsU0FBU1csbUJBQW1CLEVBQzVCVCxpQkFBaUJVLDJCQUEyQixFQUM1Q2pCLGtCQUFrQmtCLDRCQUE0QixFQUFFLEdBQUdDLGdDQUFxQjtBQUV6RSxTQUFTVixJQUFJVyxLQUFLLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxrQkFBa0I7SUFDeEQsSUFBSUMsUUFBUTtJQUVaLE1BQU1DLGVBQWVGLG1CQUFtQkcsR0FBRztJQUUzQ1Qsb0JBQW9CSSxPQUFPLENBQUNNLFNBQVNDLE1BQU1DO1FBQ3pDUCxTQUFTSyxZQUFZSixvQkFBb0IsQ0FBQ087WUFDeEMsSUFBSUEsUUFBUTtnQkFDVixJQUFJLENBQUNOLE9BQU87b0JBQ1ZBLFFBQVE7Z0JBQ1YsT0FBTztvQkFDTEEsUUFBUTtvQkFFUks7b0JBRUE7Z0JBQ0Y7WUFDRjtZQUVBRDtRQUNGO0lBQ0YsR0FBRztR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
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpbHRlcjogYXJyYXlGaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBmb3JFYWNoOiBhc3luY2hyb25vdXNGb3JFYWNoLFxuICAgICAgICBmb3J3YXJkc0ZvckVhY2g6IGFzeW5jaHJvbm91c0ZvcndhcmRzRm9yRWFjaCxcbiAgICAgICAgYmFja3dhcmRzRm9yRWFjaDogYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaCB9ID0gYXN5bmNocm9ub3VzVXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBmb3VuZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2U7XG5cbiAgICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihmb3VuZCwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb21lKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIGFzeW5jaHJvbm91c0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBmb3VuZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3VuZCA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oZm91bmQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaChhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGFycmF5QUxlbmd0aCA9IGFycmF5QS5sZW5ndGgsXG4gICAgICAgIGFycmF5Qkxlbmd0aCA9IGFycmF5Qi5sZW5ndGg7XG5cbiAgaWYgKGFycmF5QUxlbmd0aCAhPT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihtYXRjaGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICB9XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgcmV0dXJuIGV2ZXJ5KGFycmF5QSwgKGVsZW1lbnRBLCBjb250aW51YXRpb24pID0+IHtcbiAgICBpbmRleCsrO1xuXG4gICAgY29uc3QgZWxlbWVudEIgPSBhcnJheUJbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnRBLCBlbGVtZW50QiwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICB9LCAoc3VjY2VzcykgPT4ge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKG1hdGNoZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlKGFycmF5LCBpbml0aWFsVmFsdWUsIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAoY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICB2YWx1ZSA9IGN1cnJlbnRWYWx1ZTsgIC8vL1xuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHZhbHVlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIHJldHVybiBhc3luY2hyb25vdXNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbiguLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICBhc3luY2hyb25vdXNGb3J3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICByZXR1cm4gYXN5bmNocm9ub3VzRm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbiguLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gIHJldHVybiBhc3luY2hyb25vdXNCYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbiguLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBjb25zdCBkZWxldGVkRWxlbWVudHMgPSBbXTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGluZGV4ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHJldHVybiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgaW5kZXgtLTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCkucG9wKCk7ICAvLy9cblxuICAgICAgICBkZWxldGVkRWxlbWVudHMudW5zaGlmdChkZWxldGVkRWxlbWVudCk7ICAvLy9cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbigpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihkZWxldGVkRWxlbWVudHMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmUoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgcmV0dXJuIHNvbWUoYXJyYXksIChlbGVtZW50LCBjb250aW51YXRpb24pID0+IHtcbiAgICBpbmRleCsrO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgICAgICBkZWxldGVkRWxlbWVudCA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLnBvcCgpIC8vL1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHBhc3NlZCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICByZXR1cm4gY29udGludWF0aW9uKGRlbGV0ZWRFbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgcmV0dXJuIHNvbWUoYXJyYXksIChlbGVtZW50LCBjb250aW51YXRpb24pID0+IHtcbiAgICBpbmRleCsrO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAocGFzc2VkKSA9PiB7XG4gICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCkucG9wKCkgLy8vXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24ocGFzc2VkKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZShhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBhcnJheUEgPSBbICAvLy9cbiAgICAuLi5hcnJheUFcbiAgXTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgZnVuY3Rpb24gbmV4dFBhc3MoKSB7XG4gICAgY29uc3QgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aDtcblxuICAgIGlmIChhcnJheUFMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlOyAgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgbGV0IGNvdW50ID0gLTE7XG5cbiAgICBmdW5jdGlvbiBuZXh0RWxlbWVudCgpIHtcbiAgICAgIGNvdW50Kys7XG5cbiAgICAgIGNvbnN0IHRlcm1pbmF0ZSA9IChjb3VudCA9PT0gYXJyYXlBTGVuZ3RoKTtcblxuICAgICAgaWYgKHRlcm1pbmF0ZSkge1xuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zdCBzdWNjZXNzID0gZmFsc2U7IC8vL1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJyYXlGaWx0ZXIoYXJyYXlBLCAoZWxlbWVudEEpID0+IHtcbiAgICAgICAgICBjb25zdCBhcnJheUJJbmNsdWRlc0VsZW1lbnRBID0gYXJyYXlCLmluY2x1ZGVzKGVsZW1lbnRBKTtcblxuICAgICAgICAgIGlmICghYXJyYXlCSW5jbHVkZXNFbGVtZW50QSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBuZXh0UGFzcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjb3VudCwgIC8vL1xuICAgICAgICAgICAgICBlbGVtZW50QSA9IGFycmF5QVtpbmRleF07XG5cbiAgICAgICAgY2FsbGJhY2soZWxlbWVudEEsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRCID0gZWxlbWVudEE7ICAvLy9cblxuICAgICAgICAgICAgYXJyYXlCLnB1c2goZWxlbWVudEIpO1xuXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0RWxlbWVudCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0RWxlbWVudCgpO1xuICB9XG5cbiAgbmV4dFBhc3MoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBvbmUsXG4gIHNvbWUsXG4gIGVhY2gsXG4gIGV2ZXJ5LFxuICBtYXRjaCxcbiAgcmVkdWNlLFxuICBmb3JFYWNoLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoLFxuICBmaWx0ZXIsXG4gIHBydW5lLFxuICBleHRyYWN0LFxuICByZXNvbHZlXG59O1xuIl0sIm5hbWVzIjpbImJhY2t3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRm9yRWFjaCIsImVhY2giLCJldmVyeSIsImV4dHJhY3QiLCJmaWx0ZXIiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRm9yRWFjaCIsIm1hdGNoIiwib25lIiwicHJ1bmUiLCJyZWR1Y2UiLCJyZXNvbHZlIiwic29tZSIsImFycmF5RmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNGb3JFYWNoIiwiYXN5bmNocm9ub3VzRm9yd2FyZHNGb3JFYWNoIiwiYXN5bmNocm9ub3VzQmFja3dhcmRzRm9yRWFjaCIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImFycmF5IiwiY2FsbGJhY2siLCJyZW1haW5pbmdBcmd1bWVudHMiLCJmb3VuZCIsImNvbnRpbnVhdGlvbiIsInBvcCIsImVsZW1lbnQiLCJuZXh0IiwiZG9uZSIsInBhc3NlZCIsInN1Y2Nlc3MiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJsZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJtYXRjaGVzIiwiaW5kZXgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiLCJjdXJyZW50VmFsdWUiLCJkZWxldGVkRWxlbWVudHMiLCJzdGFydCIsImRlbGV0ZUNvdW50IiwiZGVsZXRlZEVsZW1lbnQiLCJzcGxpY2UiLCJ1bnNoaWZ0IiwidW5kZWZpbmVkIiwibmV4dFBhc3MiLCJjb3VudCIsIm5leHRFbGVtZW50IiwidGVybWluYXRlIiwiYXJyYXlCSW5jbHVkZXNFbGVtZW50QSIsImluY2x1ZGVzIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBbUxnQkE7ZUFBQUE7O1FBa0NBQztlQUFBQTs7UUF5SmhCO2VBQUE7O1FBclRnQkM7ZUFBQUE7O1FBd0JBQztlQUFBQTs7UUFtTUFDO2VBQUFBOztRQW5EQUM7ZUFBQUE7O1FBaEZBQztlQUFBQTs7UUFZQUM7ZUFBQUE7O1FBNENBQztlQUFBQTs7UUFsR0FDO2VBQUFBOztRQTlGQUM7ZUFBQUE7O1FBa1BBQztlQUFBQTs7UUExSEFD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
|
package/package.json
CHANGED
|
@@ -29,7 +29,7 @@ export function one(array, callback, ...remainingArguments) {
|
|
|
29
29
|
next();
|
|
30
30
|
});
|
|
31
31
|
}, () => {
|
|
32
|
-
return continuation(found);
|
|
32
|
+
return continuation(found, ...remainingArguments);
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -51,7 +51,7 @@ export function some(array, callback, ...remainingArguments) {
|
|
|
51
51
|
next();
|
|
52
52
|
});
|
|
53
53
|
}, () => {
|
|
54
|
-
return continuation(success);
|
|
54
|
+
return continuation(success, ...remainingArguments);
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -75,7 +75,7 @@ export function each(array, callback, ...remainingArguments) {
|
|
|
75
75
|
next();
|
|
76
76
|
});
|
|
77
77
|
}, () => {
|
|
78
|
-
return continuation(found);
|
|
78
|
+
return continuation(found, ...remainingArguments);
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
|
|
@@ -97,7 +97,7 @@ export function every(array, callback, ...remainingArguments) {
|
|
|
97
97
|
next();
|
|
98
98
|
});
|
|
99
99
|
}, () => {
|
|
100
|
-
return continuation(success);
|
|
100
|
+
return continuation(success, ...remainingArguments);
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -109,7 +109,7 @@ export function match(arrayA, arrayB, callback, ...remainingArguments) {
|
|
|
109
109
|
if (arrayALength !== arrayBLength) {
|
|
110
110
|
const matches = false;
|
|
111
111
|
|
|
112
|
-
return continuation(matches);
|
|
112
|
+
return continuation(matches, ...remainingArguments);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
let index = -1;
|
|
@@ -123,7 +123,7 @@ export function match(arrayA, arrayB, callback, ...remainingArguments) {
|
|
|
123
123
|
}, (success) => {
|
|
124
124
|
const matches = success; ///
|
|
125
125
|
|
|
126
|
-
return continuation(matches);
|
|
126
|
+
return continuation(matches, ...remainingArguments);
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
129
|
|
|
@@ -139,7 +139,7 @@ export function reduce(array, initialValue, callback, ...remainingArguments) {
|
|
|
139
139
|
next();
|
|
140
140
|
});
|
|
141
141
|
}, () => {
|
|
142
|
-
return continuation(value);
|
|
142
|
+
return continuation(value, ...remainingArguments);
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
145
|
|
|
@@ -150,7 +150,9 @@ export function forEach(array, callback, ...remainingArguments) {
|
|
|
150
150
|
callback(element, ...remainingArguments, () => {
|
|
151
151
|
next();
|
|
152
152
|
});
|
|
153
|
-
},
|
|
153
|
+
}, () => {
|
|
154
|
+
return continuation(...remainingArguments);
|
|
155
|
+
});
|
|
154
156
|
}
|
|
155
157
|
|
|
156
158
|
export function forwardsEvery(array, callback, ...remainingArguments) {
|
|
@@ -171,7 +173,7 @@ export function forwardsEvery(array, callback, ...remainingArguments) {
|
|
|
171
173
|
next();
|
|
172
174
|
});
|
|
173
175
|
}, () => {
|
|
174
|
-
return continuation(success);
|
|
176
|
+
return continuation(success, ...remainingArguments);
|
|
175
177
|
});
|
|
176
178
|
}
|
|
177
179
|
|
|
@@ -193,7 +195,7 @@ export function backwardsEvery(array, callback, ...remainingArguments) {
|
|
|
193
195
|
next();
|
|
194
196
|
});
|
|
195
197
|
}, () => {
|
|
196
|
-
return continuation(success);
|
|
198
|
+
return continuation(success, ...remainingArguments);
|
|
197
199
|
});
|
|
198
200
|
}
|
|
199
201
|
|
|
@@ -204,7 +206,9 @@ export function forwardsForEach(array, callback, ...remainingArguments) {
|
|
|
204
206
|
callback(element, ...remainingArguments, () => {
|
|
205
207
|
next();
|
|
206
208
|
});
|
|
207
|
-
},
|
|
209
|
+
}, () => {
|
|
210
|
+
return continuation(...remainingArguments);
|
|
211
|
+
});
|
|
208
212
|
}
|
|
209
213
|
|
|
210
214
|
export function backwardsForEach(array, callback, ...remainingArguments) {
|
|
@@ -214,7 +218,9 @@ export function backwardsForEach(array, callback, ...remainingArguments) {
|
|
|
214
218
|
callback(element, ...remainingArguments, () => {
|
|
215
219
|
next();
|
|
216
220
|
});
|
|
217
|
-
},
|
|
221
|
+
}, () => {
|
|
222
|
+
return continuation(...remainingArguments);
|
|
223
|
+
});
|
|
218
224
|
}
|
|
219
225
|
|
|
220
226
|
export function filter(array, callback, ...remainingArguments) {
|
|
@@ -239,7 +245,7 @@ export function filter(array, callback, ...remainingArguments) {
|
|
|
239
245
|
return continuation();
|
|
240
246
|
});
|
|
241
247
|
}, () => {
|
|
242
|
-
return continuation(deletedElements);
|
|
248
|
+
return continuation(deletedElements, ...remainingArguments);
|
|
243
249
|
});
|
|
244
250
|
}
|
|
245
251
|
|
|
@@ -261,10 +267,10 @@ export function prune(array, callback, ...remainingArguments) {
|
|
|
261
267
|
deletedElement = array.splice(start, deleteCount).pop() ///
|
|
262
268
|
}
|
|
263
269
|
|
|
264
|
-
return continuation(
|
|
270
|
+
return continuation(passed);
|
|
265
271
|
});
|
|
266
272
|
}, () => {
|
|
267
|
-
return continuation(deletedElement);
|
|
273
|
+
return continuation(deletedElement, ...remainingArguments);
|
|
268
274
|
});
|
|
269
275
|
}
|
|
270
276
|
|
|
@@ -289,7 +295,7 @@ export function extract(array, callback, ...remainingArguments) {
|
|
|
289
295
|
return continuation(passed);
|
|
290
296
|
});
|
|
291
297
|
}, () => {
|
|
292
|
-
return continuation(deletedElement);
|
|
298
|
+
return continuation(deletedElement, ...remainingArguments);
|
|
293
299
|
});
|
|
294
300
|
}
|
|
295
301
|
|
|
@@ -306,7 +312,7 @@ export function resolve(arrayA, arrayB, callback, ...remainingArguments) {
|
|
|
306
312
|
if (arrayALength === 0) {
|
|
307
313
|
const success = true; ///
|
|
308
314
|
|
|
309
|
-
return continuation(success);
|
|
315
|
+
return continuation(success, ...remainingArguments);
|
|
310
316
|
}
|
|
311
317
|
|
|
312
318
|
let success = false;
|
|
@@ -322,7 +328,7 @@ export function resolve(arrayA, arrayB, callback, ...remainingArguments) {
|
|
|
322
328
|
if (!success) {
|
|
323
329
|
const success = false; ///
|
|
324
330
|
|
|
325
|
-
return continuation(success);
|
|
331
|
+
return continuation(success, ...remainingArguments);
|
|
326
332
|
}
|
|
327
333
|
|
|
328
334
|
arrayFilter(arrayA, (elementA) => {
|