occam-languages 3.0.31 → 3.0.32
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/context/release.js +2 -3
- package/lib/utilities/continuation.js +125 -131
- package/lib/utilities/verify.js +3 -3
- package/package.json +1 -1
- package/src/context/release.js +1 -3
- package/src/utilities/continuation.js +188 -203
- package/src/utilities/verify.js +2 -2
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { arrayUtilities } from "necessary";
|
|
4
|
-
|
|
5
|
-
const { filter: arrayFilter } = arrayUtilities;
|
|
6
|
-
|
|
7
3
|
export function one(array, callback, ...initialArguments) {
|
|
8
4
|
const back = initialArguments.pop(),
|
|
9
5
|
forward = initialArguments.pop(),
|
|
10
|
-
length = array.length
|
|
11
|
-
index = 0;
|
|
6
|
+
length = array.length;
|
|
12
7
|
|
|
13
|
-
function next(index, ...nextArguments) {
|
|
8
|
+
function next(index, count, ...nextArguments) {
|
|
14
9
|
if (index === length) {
|
|
15
|
-
if (count
|
|
10
|
+
if (count === 0) {
|
|
16
11
|
return back();
|
|
17
12
|
}
|
|
18
13
|
|
|
@@ -25,32 +20,29 @@ export function one(array, callback, ...initialArguments) {
|
|
|
25
20
|
element,
|
|
26
21
|
...initialArguments,
|
|
27
22
|
(...forwardArguments) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
count++;
|
|
31
|
-
|
|
32
|
-
if (count === 2) {
|
|
23
|
+
if (count === 1) {
|
|
33
24
|
return back();
|
|
34
25
|
}
|
|
35
26
|
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
(...backArguments) => {
|
|
39
|
-
const exception = backArguments.pop();
|
|
27
|
+
forwardArguments.pop(); ///
|
|
40
28
|
|
|
29
|
+
return next(index + 1, count + 1, ...forwardArguments);
|
|
30
|
+
},
|
|
31
|
+
(exception) => {
|
|
41
32
|
if (exception) {
|
|
42
33
|
return back(exception);
|
|
43
34
|
}
|
|
44
35
|
|
|
45
|
-
return next(index + 1, ...nextArguments);
|
|
36
|
+
return next(index + 1, count, ...nextArguments);
|
|
46
37
|
},
|
|
47
38
|
index
|
|
48
39
|
);
|
|
49
40
|
}
|
|
50
41
|
|
|
51
|
-
|
|
42
|
+
const index = 0,
|
|
43
|
+
count = 0;
|
|
52
44
|
|
|
53
|
-
return next(index,
|
|
45
|
+
return next(index, count);
|
|
54
46
|
}
|
|
55
47
|
|
|
56
48
|
export function some(array, callback, ...initialArguments) {
|
|
@@ -69,9 +61,7 @@ export function some(array, callback, ...initialArguments) {
|
|
|
69
61
|
element,
|
|
70
62
|
...initialArguments,
|
|
71
63
|
forward,
|
|
72
|
-
(
|
|
73
|
-
const exception = backArguments.pop();
|
|
74
|
-
|
|
64
|
+
(exception) => {
|
|
75
65
|
if (exception) {
|
|
76
66
|
return back(exception);
|
|
77
67
|
}
|
|
@@ -90,10 +80,11 @@ export function some(array, callback, ...initialArguments) {
|
|
|
90
80
|
export function each(array, callback, ...initialArguments) {
|
|
91
81
|
const back = initialArguments.pop(),
|
|
92
82
|
forward = initialArguments.pop(),
|
|
93
|
-
length = array.length
|
|
94
|
-
|
|
83
|
+
length = array.length;
|
|
84
|
+
|
|
85
|
+
function next(index, count, ...nextArguments) {
|
|
86
|
+
const back = nextArguments.pop();
|
|
95
87
|
|
|
96
|
-
function next(index, ...nextArguments) {
|
|
97
88
|
if (index === length) {
|
|
98
89
|
if (count === 0) {
|
|
99
90
|
return back();
|
|
@@ -108,29 +99,27 @@ export function each(array, callback, ...initialArguments) {
|
|
|
108
99
|
element,
|
|
109
100
|
...nextArguments,
|
|
110
101
|
(...forwardArguments) => {
|
|
111
|
-
forwardArguments
|
|
112
|
-
|
|
113
|
-
count++;
|
|
114
|
-
|
|
115
|
-
return next(index + 1, ...forwardArguments);
|
|
102
|
+
return next(index + 1, count + 1, ...forwardArguments);
|
|
116
103
|
},
|
|
117
104
|
back,
|
|
118
105
|
index
|
|
119
106
|
);
|
|
120
107
|
}
|
|
121
108
|
|
|
122
|
-
|
|
109
|
+
const index = 0,
|
|
110
|
+
count = 0;
|
|
123
111
|
|
|
124
|
-
return next(index, ...initialArguments);
|
|
112
|
+
return next(index, count, ...initialArguments, back);
|
|
125
113
|
}
|
|
126
114
|
|
|
127
115
|
export function every(array, callback, ...initialArguments) {
|
|
128
116
|
const back = initialArguments.pop(),
|
|
129
117
|
forward = initialArguments.pop(),
|
|
130
|
-
length = array.length
|
|
131
|
-
index = 0;
|
|
118
|
+
length = array.length;
|
|
132
119
|
|
|
133
120
|
function next(index, ...nextArguments) {
|
|
121
|
+
const back = nextArguments.pop();
|
|
122
|
+
|
|
134
123
|
if (index === length) {
|
|
135
124
|
return forward(...nextArguments, back);
|
|
136
125
|
}
|
|
@@ -141,8 +130,6 @@ export function every(array, callback, ...initialArguments) {
|
|
|
141
130
|
element,
|
|
142
131
|
...nextArguments,
|
|
143
132
|
(...forwardArguments) => {
|
|
144
|
-
forwardArguments.pop(); ///
|
|
145
|
-
|
|
146
133
|
return next(index + 1, ...forwardArguments);
|
|
147
134
|
},
|
|
148
135
|
back,
|
|
@@ -150,16 +137,21 @@ export function every(array, callback, ...initialArguments) {
|
|
|
150
137
|
);
|
|
151
138
|
}
|
|
152
139
|
|
|
153
|
-
|
|
140
|
+
const index = 0;
|
|
141
|
+
|
|
142
|
+
return next(index, ...initialArguments, back);
|
|
154
143
|
}
|
|
155
144
|
|
|
156
145
|
export function map(array, callback, ...initialArguments) {
|
|
157
146
|
const back = initialArguments.pop(),
|
|
158
147
|
forward = initialArguments.pop(),
|
|
159
|
-
|
|
160
|
-
|
|
148
|
+
arrayA = array, ///
|
|
149
|
+
arrayB = [],
|
|
150
|
+
length = array.length;
|
|
161
151
|
|
|
162
152
|
function next(index, arrayB, ...nextArguments) {
|
|
153
|
+
const back = nextArguments.pop();
|
|
154
|
+
|
|
163
155
|
if (index === length) {
|
|
164
156
|
return forward(arrayB, ...nextArguments, back);
|
|
165
157
|
}
|
|
@@ -170,70 +162,26 @@ export function map(array, callback, ...initialArguments) {
|
|
|
170
162
|
elementA,
|
|
171
163
|
...nextArguments,
|
|
172
164
|
(elementB, ...forwardArguments) => {
|
|
173
|
-
forwardArguments
|
|
174
|
-
|
|
175
|
-
arrayB = [ ///
|
|
176
|
-
...arrayB,
|
|
177
|
-
elementB
|
|
178
|
-
];
|
|
179
|
-
|
|
180
|
-
return next(index + 1, arrayB, ...forwardArguments);
|
|
165
|
+
return next(index + 1, [ ...arrayB, elementB ], ...forwardArguments);
|
|
181
166
|
},
|
|
182
167
|
back,
|
|
183
168
|
index
|
|
184
169
|
);
|
|
185
170
|
}
|
|
186
171
|
|
|
187
|
-
const
|
|
188
|
-
arrayB = [];
|
|
189
|
-
|
|
190
|
-
return next(index, arrayB, ...initialArguments);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export function find(array, callback, ...initialArguments) {
|
|
194
|
-
const back = initialArguments.pop(),
|
|
195
|
-
forward = initialArguments.pop(),
|
|
196
|
-
length = array.length,
|
|
197
|
-
index = 0;
|
|
198
|
-
|
|
199
|
-
function next(index, ...nextArguments) {
|
|
200
|
-
if (index === length) {
|
|
201
|
-
return back();
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
const element = array[index];
|
|
205
|
-
|
|
206
|
-
return callback(
|
|
207
|
-
element,
|
|
208
|
-
...nextArguments,
|
|
209
|
-
(...forwardArguments) => {
|
|
210
|
-
forwardArguments.pop(); ///
|
|
211
|
-
|
|
212
|
-
return forward(element, ...forwardArguments, back);
|
|
213
|
-
},
|
|
214
|
-
(...backArguments) => {
|
|
215
|
-
const exception = backArguments.pop();
|
|
216
|
-
|
|
217
|
-
if (exception) {
|
|
218
|
-
return back(exception);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
return next(index + 1, ...nextArguments);
|
|
222
|
-
},
|
|
223
|
-
index
|
|
224
|
-
);
|
|
225
|
-
}
|
|
172
|
+
const index = 0;
|
|
226
173
|
|
|
227
|
-
return next(index, ...initialArguments);
|
|
174
|
+
return next(index, arrayB, ...initialArguments, back);
|
|
228
175
|
}
|
|
229
176
|
|
|
230
177
|
export function reduce(array, initialValue, callback, ...initialArguments) {
|
|
231
178
|
const back = initialArguments.pop(),
|
|
232
179
|
forward = initialArguments.pop(),
|
|
233
|
-
length = array.length
|
|
234
|
-
index = 0;
|
|
180
|
+
length = array.length;
|
|
235
181
|
|
|
236
182
|
function next(index, value, ...nextArguments) {
|
|
183
|
+
const back = nextArguments.pop();
|
|
184
|
+
|
|
237
185
|
if (index === length) {
|
|
238
186
|
return forward(value, ...nextArguments, back);
|
|
239
187
|
}
|
|
@@ -245,8 +193,6 @@ export function reduce(array, initialValue, callback, ...initialArguments) {
|
|
|
245
193
|
value,
|
|
246
194
|
...nextArguments,
|
|
247
195
|
(value, ...forwardArguments) => {
|
|
248
|
-
forwardArguments.pop(); ///
|
|
249
|
-
|
|
250
196
|
return next(index + 1, value, ...forwardArguments);
|
|
251
197
|
},
|
|
252
198
|
back,
|
|
@@ -254,16 +200,19 @@ export function reduce(array, initialValue, callback, ...initialArguments) {
|
|
|
254
200
|
);
|
|
255
201
|
}
|
|
256
202
|
|
|
257
|
-
|
|
203
|
+
const index = 0;
|
|
204
|
+
|
|
205
|
+
return next(index, initialValue, ...initialArguments, back);
|
|
258
206
|
}
|
|
259
207
|
|
|
260
208
|
export function forEach(array, callback, ...initialArguments) {
|
|
261
209
|
const back = initialArguments.pop(),
|
|
262
210
|
forward = initialArguments.pop(),
|
|
263
|
-
length = array.length
|
|
264
|
-
index = 0;
|
|
211
|
+
length = array.length;
|
|
265
212
|
|
|
266
213
|
function next(index, ...nextArguments) {
|
|
214
|
+
const back = nextArguments.pop();
|
|
215
|
+
|
|
267
216
|
if (index === length) {
|
|
268
217
|
return forward(...nextArguments, back);
|
|
269
218
|
}
|
|
@@ -274,8 +223,6 @@ export function forEach(array, callback, ...initialArguments) {
|
|
|
274
223
|
element,
|
|
275
224
|
...nextArguments,
|
|
276
225
|
(...forwardArguments) => {
|
|
277
|
-
forwardArguments.pop(); ///
|
|
278
|
-
|
|
279
226
|
return next(index + 1, ...forwardArguments);
|
|
280
227
|
},
|
|
281
228
|
back,
|
|
@@ -283,17 +230,20 @@ export function forEach(array, callback, ...initialArguments) {
|
|
|
283
230
|
);
|
|
284
231
|
}
|
|
285
232
|
|
|
286
|
-
|
|
233
|
+
const index = 0;
|
|
234
|
+
|
|
235
|
+
return next(index, ...initialArguments, back);
|
|
287
236
|
}
|
|
288
237
|
|
|
289
238
|
export function filter(array, callback, ...initialArguments) {
|
|
290
239
|
const back = initialArguments.pop(),
|
|
291
240
|
forward = initialArguments.pop(),
|
|
292
|
-
length = array.length,
|
|
293
241
|
deletedElements = [],
|
|
294
|
-
|
|
242
|
+
length = array.length;
|
|
295
243
|
|
|
296
244
|
function next(index, ...nextArguments) {
|
|
245
|
+
const back = nextArguments.pop();
|
|
246
|
+
|
|
297
247
|
if (index === -1) {
|
|
298
248
|
return forward(deletedElements, ...nextArguments, back);
|
|
299
249
|
}
|
|
@@ -304,8 +254,6 @@ export function filter(array, callback, ...initialArguments) {
|
|
|
304
254
|
element,
|
|
305
255
|
...nextArguments,
|
|
306
256
|
(passed, ...forwardArguments) => {
|
|
307
|
-
forwardArguments.pop(); ///
|
|
308
|
-
|
|
309
257
|
if (!passed) {
|
|
310
258
|
const startIndex = index, ///
|
|
311
259
|
deleteCount = 1,
|
|
@@ -323,16 +271,19 @@ export function filter(array, callback, ...initialArguments) {
|
|
|
323
271
|
);
|
|
324
272
|
}
|
|
325
273
|
|
|
326
|
-
|
|
274
|
+
const index = length - 1;
|
|
275
|
+
|
|
276
|
+
return next(index, ...initialArguments, back);
|
|
327
277
|
}
|
|
328
278
|
|
|
329
279
|
export function prune(array, callback, ...initialArguments) {
|
|
330
280
|
const back = initialArguments.pop(),
|
|
331
281
|
forward = initialArguments.pop(),
|
|
332
|
-
length = array.length
|
|
333
|
-
index = 0;
|
|
282
|
+
length = array.length;
|
|
334
283
|
|
|
335
284
|
function next(index, ...nextArguments) {
|
|
285
|
+
const back = nextArguments.pop();
|
|
286
|
+
|
|
336
287
|
if (index === length) {
|
|
337
288
|
const deletedElement = undefined;
|
|
338
289
|
|
|
@@ -345,8 +296,6 @@ export function prune(array, callback, ...initialArguments) {
|
|
|
345
296
|
element,
|
|
346
297
|
...nextArguments,
|
|
347
298
|
(passed, ...forwardArguments) => {
|
|
348
|
-
forwardArguments.pop(); ///
|
|
349
|
-
|
|
350
299
|
if (!passed) {
|
|
351
300
|
const startIndex = index, ///
|
|
352
301
|
deleteCount = 1,
|
|
@@ -354,7 +303,7 @@ export function prune(array, callback, ...initialArguments) {
|
|
|
354
303
|
|
|
355
304
|
array.splice(startIndex, deleteCount);
|
|
356
305
|
|
|
357
|
-
return forward(deletedElement, ...forwardArguments
|
|
306
|
+
return forward(deletedElement, ...forwardArguments);
|
|
358
307
|
}
|
|
359
308
|
|
|
360
309
|
return next(index + 1, ...forwardArguments);
|
|
@@ -364,16 +313,19 @@ export function prune(array, callback, ...initialArguments) {
|
|
|
364
313
|
);
|
|
365
314
|
}
|
|
366
315
|
|
|
367
|
-
|
|
316
|
+
const index = 0;
|
|
317
|
+
|
|
318
|
+
return next(index, ...initialArguments, back);
|
|
368
319
|
}
|
|
369
320
|
|
|
370
321
|
export function extract(array, callback, ...initialArguments) {
|
|
371
322
|
const back = initialArguments.pop(),
|
|
372
323
|
forward = initialArguments.pop(),
|
|
373
|
-
length = array.length
|
|
374
|
-
index = 0;
|
|
324
|
+
length = array.length;
|
|
375
325
|
|
|
376
326
|
function next(index, ...nextArguments) {
|
|
327
|
+
const back = nextArguments.pop();
|
|
328
|
+
|
|
377
329
|
if (index === length) {
|
|
378
330
|
const deletedElement = undefined;
|
|
379
331
|
|
|
@@ -386,8 +338,6 @@ export function extract(array, callback, ...initialArguments) {
|
|
|
386
338
|
element,
|
|
387
339
|
...nextArguments,
|
|
388
340
|
(passed, ...forwardArguments) => {
|
|
389
|
-
forwardArguments.pop(); ///
|
|
390
|
-
|
|
391
341
|
if (passed) {
|
|
392
342
|
const startIndex = index, ///
|
|
393
343
|
deleteCount = 1,
|
|
@@ -395,7 +345,7 @@ export function extract(array, callback, ...initialArguments) {
|
|
|
395
345
|
|
|
396
346
|
array.splice(startIndex, deleteCount);
|
|
397
347
|
|
|
398
|
-
return forward(deletedElement, ...forwardArguments
|
|
348
|
+
return forward(deletedElement, ...forwardArguments);
|
|
399
349
|
}
|
|
400
350
|
|
|
401
351
|
return next(index + 1, ...forwardArguments);
|
|
@@ -405,122 +355,154 @@ export function extract(array, callback, ...initialArguments) {
|
|
|
405
355
|
);
|
|
406
356
|
}
|
|
407
357
|
|
|
408
|
-
|
|
358
|
+
const index = 0;
|
|
359
|
+
|
|
360
|
+
return next(index, ...initialArguments, back);
|
|
409
361
|
}
|
|
410
362
|
|
|
411
|
-
export function
|
|
363
|
+
export function find(array, callback, ...initialArguments) {
|
|
412
364
|
const back = initialArguments.pop(),
|
|
413
365
|
forward = initialArguments.pop(),
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
if (arrayALength !== arrayBLength) {
|
|
418
|
-
return back();
|
|
419
|
-
}
|
|
366
|
+
elements = [],
|
|
367
|
+
length = array.length;
|
|
420
368
|
|
|
421
|
-
|
|
422
|
-
|
|
369
|
+
function next(index, elements, ...nextArguments) {
|
|
370
|
+
const back = nextArguments.pop();
|
|
423
371
|
|
|
424
|
-
function next(index, ...nextArguments) {
|
|
425
372
|
if (index === length) {
|
|
426
|
-
return forward(...nextArguments, back);
|
|
373
|
+
return forward(elements, ...nextArguments, back);
|
|
427
374
|
}
|
|
428
375
|
|
|
429
|
-
const
|
|
430
|
-
elementB = arrayB[index];
|
|
376
|
+
const element = array[index];
|
|
431
377
|
|
|
432
378
|
return callback(
|
|
433
|
-
|
|
434
|
-
elementB,
|
|
379
|
+
element,
|
|
435
380
|
...nextArguments,
|
|
436
|
-
(...forwardArguments) => {
|
|
437
|
-
|
|
381
|
+
(passed, ...forwardArguments) => {
|
|
382
|
+
if (passed) {
|
|
383
|
+
return next(index + 1, [ ...elements, element ], ...forwardArguments);
|
|
384
|
+
}
|
|
438
385
|
|
|
439
|
-
return next(index + 1, ...forwardArguments);
|
|
386
|
+
return next(index + 1, elements, ...forwardArguments);
|
|
440
387
|
},
|
|
441
388
|
back,
|
|
442
389
|
index
|
|
443
390
|
);
|
|
444
391
|
}
|
|
445
392
|
|
|
446
|
-
|
|
447
|
-
}
|
|
393
|
+
const index = 0;
|
|
448
394
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
...arrayA
|
|
452
|
-
];
|
|
395
|
+
return next(index, elements, ...initialArguments, back);
|
|
396
|
+
}
|
|
453
397
|
|
|
398
|
+
export function resolve(array, callback, ...initialArguments) {
|
|
454
399
|
const back = initialArguments.pop(),
|
|
455
|
-
forward = initialArguments.pop()
|
|
400
|
+
forward = initialArguments.pop(),
|
|
401
|
+
arrayA = array, ///
|
|
402
|
+
arrayB = [];
|
|
456
403
|
|
|
457
|
-
function
|
|
458
|
-
const
|
|
404
|
+
function next(arrayA, arrayB, ...nextArguments) {
|
|
405
|
+
const back = nextArguments.pop(),
|
|
406
|
+
length = arrayA.length;
|
|
459
407
|
|
|
460
408
|
if (length === 0) {
|
|
461
|
-
return forward(...
|
|
409
|
+
return forward(arrayB, ...nextArguments, back);
|
|
462
410
|
}
|
|
463
411
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
412
|
+
return find(
|
|
413
|
+
arrayA,
|
|
414
|
+
(element, ...callbackArguments) => {
|
|
415
|
+
const index = callbackArguments.pop(),
|
|
416
|
+
back = callbackArguments.pop(),
|
|
417
|
+
forward = callbackArguments.pop();
|
|
418
|
+
|
|
419
|
+
return callback(
|
|
420
|
+
element,
|
|
421
|
+
...callbackArguments,
|
|
422
|
+
(...forwardArguments) => {
|
|
423
|
+
const success = true;
|
|
424
|
+
|
|
425
|
+
return forward(success, ...forwardArguments);
|
|
426
|
+
},
|
|
427
|
+
(exception) => {
|
|
428
|
+
if (exception) {
|
|
429
|
+
return back(exception);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
const success = false;
|
|
433
|
+
|
|
434
|
+
return forward(success, ...callbackArguments, back);
|
|
435
|
+
},
|
|
436
|
+
index
|
|
437
|
+
);
|
|
438
|
+
},
|
|
439
|
+
...nextArguments,
|
|
440
|
+
(elements, ...forwardArguments) => {
|
|
441
|
+
const elementsLength = elements.length;
|
|
442
|
+
|
|
443
|
+
if (elementsLength === 0) {
|
|
467
444
|
return back();
|
|
468
445
|
}
|
|
469
446
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
const elementA = arrayA[index];
|
|
482
|
-
|
|
483
|
-
return callback(
|
|
484
|
-
elementA,
|
|
485
|
-
...nextElementArguments,
|
|
486
|
-
(...forwardArguments) => {
|
|
487
|
-
forwardArguments.pop(); ///
|
|
447
|
+
return next(
|
|
448
|
+
arrayA.filter((element) => !elements.includes(element)),
|
|
449
|
+
[ ...arrayB, ...elements ],
|
|
450
|
+
...forwardArguments
|
|
451
|
+
);
|
|
452
|
+
},
|
|
453
|
+
back
|
|
454
|
+
);
|
|
455
|
+
}
|
|
488
456
|
|
|
489
|
-
|
|
457
|
+
return next(arrayA, arrayB, ...initialArguments, back);
|
|
458
|
+
}
|
|
490
459
|
|
|
491
|
-
|
|
460
|
+
export function match(arrayA, arrayB, callback, ...initialArguments) {
|
|
461
|
+
const back = initialArguments.pop(),
|
|
462
|
+
forward = initialArguments.pop(),
|
|
463
|
+
arrayALength = arrayA.length,
|
|
464
|
+
arrayBLength = arrayB.length,
|
|
465
|
+
length = arrayALength; ///
|
|
492
466
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
const exception = backArguments.pop();
|
|
467
|
+
if (arrayALength !== arrayBLength) {
|
|
468
|
+
return back();
|
|
469
|
+
}
|
|
497
470
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
}
|
|
471
|
+
function next(index, ...nextArguments) {
|
|
472
|
+
const back = nextArguments.pop();
|
|
501
473
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
index
|
|
505
|
-
);
|
|
474
|
+
if (index === length) {
|
|
475
|
+
return forward(...nextArguments, back);
|
|
506
476
|
}
|
|
507
477
|
|
|
508
|
-
const
|
|
509
|
-
|
|
478
|
+
const elementA = arrayA[index],
|
|
479
|
+
elementB = arrayB[index];
|
|
510
480
|
|
|
511
|
-
return
|
|
481
|
+
return callback(
|
|
482
|
+
elementA,
|
|
483
|
+
elementB,
|
|
484
|
+
...nextArguments,
|
|
485
|
+
(...forwardArguments) => {
|
|
486
|
+
return next(index + 1, ...forwardArguments);
|
|
487
|
+
},
|
|
488
|
+
back,
|
|
489
|
+
index
|
|
490
|
+
);
|
|
512
491
|
}
|
|
513
492
|
|
|
514
|
-
|
|
493
|
+
const index = 0;
|
|
494
|
+
|
|
495
|
+
return next(index, ...initialArguments, back);
|
|
515
496
|
}
|
|
516
497
|
|
|
517
498
|
export function forwardsEvery(array, callback, ...initialArguments) {
|
|
518
499
|
const back = initialArguments.pop(),
|
|
519
500
|
forward = initialArguments.pop(),
|
|
520
|
-
length = array.length
|
|
521
|
-
index = 0;
|
|
501
|
+
length = array.length;
|
|
522
502
|
|
|
523
503
|
function next(index, ...nextArguments) {
|
|
504
|
+
const back = nextArguments.pop();
|
|
505
|
+
|
|
524
506
|
if (index === length) {
|
|
525
507
|
return forward(...nextArguments, back);
|
|
526
508
|
}
|
|
@@ -531,8 +513,6 @@ export function forwardsEvery(array, callback, ...initialArguments) {
|
|
|
531
513
|
element,
|
|
532
514
|
...nextArguments,
|
|
533
515
|
(...forwardArguments) => {
|
|
534
|
-
forwardArguments.pop(); ///
|
|
535
|
-
|
|
536
516
|
return next(index + 1, ...forwardArguments);
|
|
537
517
|
},
|
|
538
518
|
back,
|
|
@@ -540,16 +520,19 @@ export function forwardsEvery(array, callback, ...initialArguments) {
|
|
|
540
520
|
);
|
|
541
521
|
}
|
|
542
522
|
|
|
543
|
-
|
|
523
|
+
const index = 0;
|
|
524
|
+
|
|
525
|
+
return next(index, ...initialArguments, back);
|
|
544
526
|
}
|
|
545
527
|
|
|
546
528
|
export function backwardsEvery(array, callback, ...initialArguments) {
|
|
547
529
|
const back = initialArguments.pop(),
|
|
548
530
|
forward = initialArguments.pop(),
|
|
549
|
-
length = array.length
|
|
550
|
-
index = length - 1;
|
|
531
|
+
length = array.length;
|
|
551
532
|
|
|
552
533
|
function next(index, ...nextArguments) {
|
|
534
|
+
const back = nextArguments.pop();
|
|
535
|
+
|
|
553
536
|
if (index === -1) {
|
|
554
537
|
return forward(...nextArguments, back);
|
|
555
538
|
}
|
|
@@ -560,8 +543,6 @@ export function backwardsEvery(array, callback, ...initialArguments) {
|
|
|
560
543
|
element,
|
|
561
544
|
...nextArguments,
|
|
562
545
|
(...forwardArguments) => {
|
|
563
|
-
forwardArguments.pop(); ///
|
|
564
|
-
|
|
565
546
|
return next(index - 1, ...forwardArguments);
|
|
566
547
|
},
|
|
567
548
|
back,
|
|
@@ -569,16 +550,19 @@ export function backwardsEvery(array, callback, ...initialArguments) {
|
|
|
569
550
|
);
|
|
570
551
|
}
|
|
571
552
|
|
|
572
|
-
|
|
553
|
+
const index = length - 1;
|
|
554
|
+
|
|
555
|
+
return next(index, ...initialArguments, back);
|
|
573
556
|
}
|
|
574
557
|
|
|
575
558
|
export function forwardsForEach(array, callback, ...initialArguments) {
|
|
576
559
|
const back = initialArguments.pop(),
|
|
577
560
|
forward = initialArguments.pop(),
|
|
578
|
-
length = array.length
|
|
579
|
-
index = 0;
|
|
561
|
+
length = array.length;
|
|
580
562
|
|
|
581
563
|
function next(index, ...nextArguments) {
|
|
564
|
+
const back = nextArguments.pop();
|
|
565
|
+
|
|
582
566
|
if (index === length) {
|
|
583
567
|
return forward(...nextArguments, back);
|
|
584
568
|
}
|
|
@@ -589,8 +573,6 @@ export function forwardsForEach(array, callback, ...initialArguments) {
|
|
|
589
573
|
element,
|
|
590
574
|
...nextArguments,
|
|
591
575
|
(...forwardArguments) => {
|
|
592
|
-
forwardArguments.pop(); ///
|
|
593
|
-
|
|
594
576
|
return next(index + 1, ...forwardArguments);
|
|
595
577
|
},
|
|
596
578
|
back,
|
|
@@ -598,16 +580,19 @@ export function forwardsForEach(array, callback, ...initialArguments) {
|
|
|
598
580
|
);
|
|
599
581
|
}
|
|
600
582
|
|
|
601
|
-
|
|
583
|
+
const index = 0;
|
|
584
|
+
|
|
585
|
+
return next(index, ...initialArguments, back);
|
|
602
586
|
}
|
|
603
587
|
|
|
604
588
|
export function backwardsForEach(array, callback, ...initialArguments) {
|
|
605
589
|
const back = initialArguments.pop(),
|
|
606
590
|
forward = initialArguments.pop(),
|
|
607
|
-
length = array.length
|
|
608
|
-
index = length - 1;
|
|
591
|
+
length = array.length;
|
|
609
592
|
|
|
610
593
|
function next(index, ...nextArguments) {
|
|
594
|
+
const back = nextArguments.pop();
|
|
595
|
+
|
|
611
596
|
if (index === -1) {
|
|
612
597
|
return forward(...nextArguments, back);
|
|
613
598
|
}
|
|
@@ -618,8 +603,6 @@ export function backwardsForEach(array, callback, ...initialArguments) {
|
|
|
618
603
|
element,
|
|
619
604
|
...nextArguments,
|
|
620
605
|
(...forwardArguments) => {
|
|
621
|
-
forwardArguments.pop(); ///
|
|
622
|
-
|
|
623
606
|
return next(index - 1, ...forwardArguments);
|
|
624
607
|
},
|
|
625
608
|
back,
|
|
@@ -627,7 +610,9 @@ export function backwardsForEach(array, callback, ...initialArguments) {
|
|
|
627
610
|
);
|
|
628
611
|
}
|
|
629
612
|
|
|
630
|
-
|
|
613
|
+
const index = length - 1;
|
|
614
|
+
|
|
615
|
+
return next(index, ...initialArguments, back);
|
|
631
616
|
}
|
|
632
617
|
|
|
633
618
|
export function all(callbacks, ...initialArguments) {
|
|
@@ -648,14 +633,14 @@ export default {
|
|
|
648
633
|
each,
|
|
649
634
|
every,
|
|
650
635
|
map,
|
|
651
|
-
find,
|
|
652
636
|
reduce,
|
|
653
637
|
forEach,
|
|
654
638
|
filter,
|
|
655
639
|
prune,
|
|
656
640
|
extract,
|
|
657
|
-
|
|
641
|
+
find,
|
|
658
642
|
resolve,
|
|
643
|
+
match,
|
|
659
644
|
forwardsEvery,
|
|
660
645
|
backwardsEvery,
|
|
661
646
|
forwardsForEach,
|