occam-languages 3.0.28 → 3.0.30

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