compostjs 0.0.8 → 0.0.12

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.
Files changed (141) hide show
  1. package/README.md +4 -4
  2. package/dist/fable_modules/fable-library-js.4.28.0/Array.d.ts +123 -0
  3. package/dist/fable_modules/fable-library-js.4.28.0/Array.js +1242 -0
  4. package/dist/fable_modules/fable-library-js.4.28.0/Async.d.ts +26 -0
  5. package/dist/fable_modules/fable-library-js.4.28.0/Async.js +145 -0
  6. package/dist/fable_modules/fable-library-js.4.28.0/AsyncBuilder.d.ts +59 -0
  7. package/dist/fable_modules/fable-library-js.4.28.0/AsyncBuilder.js +183 -0
  8. package/dist/fable_modules/fable-library-js.4.28.0/BigInt.d.ts +115 -0
  9. package/dist/fable_modules/fable-library-js.4.28.0/BigInt.js +283 -0
  10. package/dist/fable_modules/fable-library-js.4.28.0/BitConverter.d.ts +27 -0
  11. package/dist/fable_modules/fable-library-js.4.28.0/BitConverter.js +138 -0
  12. package/dist/fable_modules/fable-library-js.4.28.0/Boolean.d.ts +3 -0
  13. package/dist/fable_modules/fable-library-js.4.28.0/Boolean.js +21 -0
  14. package/dist/fable_modules/fable-library-js.4.28.0/CHANGELOG.md +100 -0
  15. package/dist/fable_modules/fable-library-js.4.28.0/Char.d.ts +65 -0
  16. package/dist/fable_modules/fable-library-js.4.28.0/Char.js +169 -0
  17. package/dist/fable_modules/fable-library-js.4.28.0/Choice.d.ts +121 -0
  18. package/dist/fable_modules/fable-library-js.4.28.0/Choice.js +184 -0
  19. package/dist/fable_modules/fable-library-js.4.28.0/CollectionUtil.d.ts +7 -0
  20. package/dist/fable_modules/fable-library-js.4.28.0/CollectionUtil.js +182 -0
  21. package/dist/fable_modules/fable-library-js.4.28.0/ConditionalWeakTable.d.ts +9 -0
  22. package/dist/fable_modules/fable-library-js.4.28.0/ConditionalWeakTable.js +21 -0
  23. package/dist/fable_modules/fable-library-js.4.28.0/Date.d.ts +70 -0
  24. package/dist/fable_modules/fable-library-js.4.28.0/Date.js +748 -0
  25. package/dist/fable_modules/fable-library-js.4.28.0/DateOffset.d.ts +63 -0
  26. package/dist/fable_modules/fable-library-js.4.28.0/DateOffset.js +268 -0
  27. package/dist/fable_modules/fable-library-js.4.28.0/DateOnly.d.ts +18 -0
  28. package/dist/fable_modules/fable-library-js.4.28.0/DateOnly.js +124 -0
  29. package/dist/fable_modules/fable-library-js.4.28.0/Decimal.d.ts +45 -0
  30. package/dist/fable_modules/fable-library-js.4.28.0/Decimal.js +212 -0
  31. package/dist/fable_modules/fable-library-js.4.28.0/Double.d.ts +11 -0
  32. package/dist/fable_modules/fable-library-js.4.28.0/Double.js +46 -0
  33. package/dist/fable_modules/fable-library-js.4.28.0/Encoding.d.ts +12 -0
  34. package/dist/fable_modules/fable-library-js.4.28.0/Encoding.js +173 -0
  35. package/dist/fable_modules/fable-library-js.4.28.0/Event.d.ts +31 -0
  36. package/dist/fable_modules/fable-library-js.4.28.0/Event.js +93 -0
  37. package/dist/fable_modules/fable-library-js.4.28.0/FSharp.Collections.d.ts +7 -0
  38. package/dist/fable_modules/fable-library-js.4.28.0/FSharp.Collections.js +27 -0
  39. package/dist/fable_modules/fable-library-js.4.28.0/FSharp.Core.CompilerServices.d.ts +12 -0
  40. package/dist/fable_modules/fable-library-js.4.28.0/FSharp.Core.CompilerServices.js +27 -0
  41. package/dist/fable_modules/fable-library-js.4.28.0/FSharp.Core.d.ts +17 -0
  42. package/dist/fable_modules/fable-library-js.4.28.0/FSharp.Core.js +69 -0
  43. package/dist/fable_modules/fable-library-js.4.28.0/Global.d.ts +24 -0
  44. package/dist/fable_modules/fable-library-js.4.28.0/Global.js +8 -0
  45. package/dist/fable_modules/fable-library-js.4.28.0/Guid.d.ts +10 -0
  46. package/dist/fable_modules/fable-library-js.4.28.0/Guid.js +142 -0
  47. package/dist/fable_modules/fable-library-js.4.28.0/Int32.d.ts +28 -0
  48. package/dist/fable_modules/fable-library-js.4.28.0/Int32.js +135 -0
  49. package/dist/fable_modules/fable-library-js.4.28.0/List.d.ts +143 -0
  50. package/dist/fable_modules/fable-library-js.4.28.0/List.js +1273 -0
  51. package/dist/fable_modules/fable-library-js.4.28.0/Long.d.ts +3 -0
  52. package/dist/fable_modules/fable-library-js.4.28.0/Long.js +46 -0
  53. package/dist/fable_modules/fable-library-js.4.28.0/MailboxProcessor.d.ts +25 -0
  54. package/dist/fable_modules/fable-library-js.4.28.0/MailboxProcessor.js +93 -0
  55. package/dist/fable_modules/fable-library-js.4.28.0/Map.d.ts +178 -0
  56. package/dist/fable_modules/fable-library-js.4.28.0/Map.js +1396 -0
  57. package/dist/fable_modules/fable-library-js.4.28.0/MapUtil.d.ts +12 -0
  58. package/dist/fable_modules/fable-library-js.4.28.0/MapUtil.js +127 -0
  59. package/dist/fable_modules/fable-library-js.4.28.0/MutableMap.d.ts +52 -0
  60. package/dist/fable_modules/fable-library-js.4.28.0/MutableMap.js +327 -0
  61. package/dist/fable_modules/fable-library-js.4.28.0/MutableSet.d.ts +39 -0
  62. package/dist/fable_modules/fable-library-js.4.28.0/MutableSet.js +233 -0
  63. package/dist/fable_modules/fable-library-js.4.28.0/Native.d.ts +2 -0
  64. package/dist/fable_modules/fable-library-js.4.28.0/Native.js +8 -0
  65. package/dist/fable_modules/fable-library-js.4.28.0/Numeric.d.ts +19 -0
  66. package/dist/fable_modules/fable-library-js.4.28.0/Numeric.js +71 -0
  67. package/dist/fable_modules/fable-library-js.4.28.0/Observable.d.ts +32 -0
  68. package/dist/fable_modules/fable-library-js.4.28.0/Observable.js +113 -0
  69. package/dist/fable_modules/fable-library-js.4.28.0/Option.d.ts +28 -0
  70. package/dist/fable_modules/fable-library-js.4.28.0/Option.js +96 -0
  71. package/dist/fable_modules/fable-library-js.4.28.0/README.md +3 -0
  72. package/dist/fable_modules/fable-library-js.4.28.0/Random.d.ts +37 -0
  73. package/dist/fable_modules/fable-library-js.4.28.0/Random.js +170 -0
  74. package/dist/fable_modules/fable-library-js.4.28.0/Range.d.ts +12 -0
  75. package/dist/fable_modules/fable-library-js.4.28.0/Range.js +45 -0
  76. package/dist/fable_modules/fable-library-js.4.28.0/Reflection.d.ts +119 -0
  77. package/dist/fable_modules/fable-library-js.4.28.0/Reflection.js +461 -0
  78. package/dist/fable_modules/fable-library-js.4.28.0/RegExp.d.ts +10 -0
  79. package/dist/fable_modules/fable-library-js.4.28.0/RegExp.js +131 -0
  80. package/dist/fable_modules/fable-library-js.4.28.0/Result.d.ts +37 -0
  81. package/dist/fable_modules/fable-library-js.4.28.0/Result.js +165 -0
  82. package/dist/fable_modules/fable-library-js.4.28.0/Seq.d.ts +165 -0
  83. package/dist/fable_modules/fable-library-js.4.28.0/Seq.js +1378 -0
  84. package/dist/fable_modules/fable-library-js.4.28.0/Seq2.d.ts +18 -0
  85. package/dist/fable_modules/fable-library-js.4.28.0/Seq2.js +111 -0
  86. package/dist/fable_modules/fable-library-js.4.28.0/Set.d.ts +190 -0
  87. package/dist/fable_modules/fable-library-js.4.28.0/Set.js +1789 -0
  88. package/dist/fable_modules/fable-library-js.4.28.0/String.d.ts +58 -0
  89. package/dist/fable_modules/fable-library-js.4.28.0/String.js +554 -0
  90. package/dist/fable_modules/fable-library-js.4.28.0/System.Collections.Generic.d.ts +79 -0
  91. package/dist/fable_modules/fable-library-js.4.28.0/System.Collections.Generic.js +317 -0
  92. package/dist/fable_modules/fable-library-js.4.28.0/System.Text.d.ts +38 -0
  93. package/dist/fable_modules/fable-library-js.4.28.0/System.Text.js +162 -0
  94. package/dist/fable_modules/fable-library-js.4.28.0/SystemException.d.ts +5 -0
  95. package/dist/fable_modules/fable-library-js.4.28.0/SystemException.js +5 -0
  96. package/dist/fable_modules/fable-library-js.4.28.0/TimeOnly.d.ts +15 -0
  97. package/dist/fable_modules/fable-library-js.4.28.0/TimeOnly.js +122 -0
  98. package/dist/fable_modules/fable-library-js.4.28.0/TimeSpan.d.ts +34 -0
  99. package/dist/fable_modules/fable-library-js.4.28.0/TimeSpan.js +177 -0
  100. package/dist/fable_modules/fable-library-js.4.28.0/Timer.d.ts +19 -0
  101. package/dist/fable_modules/fable-library-js.4.28.0/Timer.js +67 -0
  102. package/dist/fable_modules/fable-library-js.4.28.0/Types.d.ts +58 -0
  103. package/dist/fable_modules/fable-library-js.4.28.0/Types.js +208 -0
  104. package/dist/fable_modules/fable-library-js.4.28.0/Unicode.13.0.0.d.ts +2 -0
  105. package/dist/fable_modules/fable-library-js.4.28.0/Unicode.13.0.0.js +4 -0
  106. package/dist/fable_modules/fable-library-js.4.28.0/Uri.d.ts +31 -0
  107. package/dist/fable_modules/fable-library-js.4.28.0/Uri.js +159 -0
  108. package/dist/fable_modules/fable-library-js.4.28.0/Util.d.ts +210 -0
  109. package/dist/fable_modules/fable-library-js.4.28.0/Util.js +769 -0
  110. package/dist/fable_modules/fable-library-js.4.28.0/big.d.ts +338 -0
  111. package/dist/fable_modules/fable-library-js.4.28.0/lib/big.d.ts +5 -0
  112. package/dist/fable_modules/fable-library-js.4.28.0/lib/big.js +825 -0
  113. package/dist/fable_modules/fable-library-js.4.28.0/package.json +24 -0
  114. package/dist/fable_modules/project_cracked.json +1 -0
  115. package/package.json +6 -5
  116. package/.claude/settings.local.json +0 -11
  117. package/dist/fable-library.2.10.1/Array.js +0 -1336
  118. package/dist/fable-library.2.10.1/Async.js +0 -121
  119. package/dist/fable-library.2.10.1/AsyncBuilder.js +0 -200
  120. package/dist/fable-library.2.10.1/Date.js +0 -501
  121. package/dist/fable-library.2.10.1/Decimal.js +0 -208
  122. package/dist/fable-library.2.10.1/Event.js +0 -193
  123. package/dist/fable-library.2.10.1/Int32.js +0 -157
  124. package/dist/fable-library.2.10.1/List.js +0 -1234
  125. package/dist/fable-library.2.10.1/Long.js +0 -155
  126. package/dist/fable-library.2.10.1/Map.js +0 -1292
  127. package/dist/fable-library.2.10.1/MutableMap.js +0 -360
  128. package/dist/fable-library.2.10.1/MutableSet.js +0 -279
  129. package/dist/fable-library.2.10.1/Observable.js +0 -131
  130. package/dist/fable-library.2.10.1/Option.js +0 -118
  131. package/dist/fable-library.2.10.1/Reflection.js +0 -345
  132. package/dist/fable-library.2.10.1/RegExp.js +0 -118
  133. package/dist/fable-library.2.10.1/Seq.js +0 -917
  134. package/dist/fable-library.2.10.1/Set.js +0 -1692
  135. package/dist/fable-library.2.10.1/String.js +0 -679
  136. package/dist/fable-library.2.10.1/Types.js +0 -308
  137. package/dist/fable-library.2.10.1/Util.js +0 -761
  138. package/dist/helpers.js +0 -31
  139. package/dist/lib/big.js +0 -905
  140. package/dist/lib/long.js +0 -1375
  141. package/index.html +0 -49
@@ -1,917 +0,0 @@
1
- import { makeRangeStepFunction as makeDecimalRangeStepFunction } from "./Decimal";
2
- import { makeRangeStepFunction as makeLongRangeStepFunction } from "./Long";
3
- import { some, value } from "./Option";
4
- import { compare, equals } from "./Util";
5
- export class Enumerator {
6
- constructor(iter) {
7
- this.iter = iter;
8
- }
9
-
10
- MoveNext() {
11
- const cur = this.iter.next();
12
- this.current = cur.value;
13
- return !cur.done;
14
- }
15
-
16
- get Current() {
17
- return this.current;
18
- }
19
-
20
- Reset() {
21
- throw new Error("JS iterators cannot be reset");
22
- }
23
-
24
- Dispose() {
25
- return;
26
- }
27
-
28
- }
29
- export function getEnumerator(o) {
30
- return new Enumerator(o[Symbol.iterator]());
31
- }
32
- export function toIterator(en) {
33
- return {
34
- next() {
35
- return en.MoveNext() ? {
36
- done: false,
37
- value: en.Current
38
- } : {
39
- done: true,
40
- value: undefined
41
- };
42
- }
43
-
44
- };
45
- } // export function toIterable<T>(en: IEnumerable<T>): Iterable<T> {
46
- // return {
47
- // [Symbol.iterator]() {
48
- // return toIterator(en.GetEnumerator());
49
- // },
50
- // };
51
- // }
52
-
53
- function __failIfNone(res) {
54
- if (res == null) {
55
- throw new Error("Seq did not contain any matching element");
56
- }
57
-
58
- return value(res);
59
- }
60
-
61
- function makeSeq(f) {
62
- const seq = {
63
- [Symbol.iterator]: f,
64
- toString: () => "seq [" + Array.from(seq).join("; ") + "]"
65
- };
66
- return seq;
67
- }
68
-
69
- export function ofArray(xs) {
70
- return delay(() => unfold(i => i != null && i < xs.length ? [xs[i], i + 1] : undefined, 0));
71
- }
72
- export function allPairs(xs, ys) {
73
- let firstEl = true;
74
- const ysCache = [];
75
- return collect(x => {
76
- if (firstEl) {
77
- firstEl = false;
78
- return map(y => {
79
- ysCache.push(y);
80
- return [x, y];
81
- }, ys);
82
- } else {
83
- return ysCache.map(y => [x, y]); // return map(function (i) {
84
- // return [x, ysCache[i]];
85
- // }, rangeNumber(0, 1, ysCache.length - 1));
86
- }
87
- }, xs);
88
- }
89
- export function append(xs, ys) {
90
- return delay(() => {
91
- let firstDone = false;
92
- const i = xs[Symbol.iterator]();
93
- let iters = [i, undefined];
94
- return unfold(() => {
95
- var _a, _b;
96
-
97
- let cur;
98
-
99
- if (!firstDone) {
100
- cur = (_a = iters[0]) === null || _a === void 0 ? void 0 : _a.next();
101
-
102
- if (cur != null && !cur.done) {
103
- return [cur.value, iters];
104
- } else {
105
- firstDone = true;
106
- iters = [undefined, ys[Symbol.iterator]()];
107
- }
108
- }
109
-
110
- cur = (_b = iters[1]) === null || _b === void 0 ? void 0 : _b.next();
111
- return cur != null && !cur.done ? [cur.value, iters] : undefined;
112
- }, iters);
113
- });
114
- }
115
- export function average(xs, averager) {
116
- let count = 0;
117
- const total = fold((acc, x) => {
118
- count++;
119
- return averager.Add(acc, x);
120
- }, averager.GetZero(), xs);
121
- return averager.DivideByInt(total, count);
122
- }
123
- export function averageBy(f, xs, averager) {
124
- let count = 0;
125
- const total = fold((acc, x) => {
126
- count++;
127
- return averager.Add(acc, f(x));
128
- }, averager.GetZero(), xs);
129
- return averager.DivideByInt(total, count);
130
- }
131
- export function concat(xs) {
132
- return delay(() => {
133
- const iter = xs[Symbol.iterator]();
134
- let output;
135
- return unfold(innerIter => {
136
- let hasFinished = false;
137
-
138
- while (!hasFinished) {
139
- if (innerIter == null) {
140
- const cur = iter.next();
141
-
142
- if (!cur.done) {
143
- innerIter = cur.value[Symbol.iterator]();
144
- } else {
145
- hasFinished = true;
146
- }
147
- } else {
148
- const cur = innerIter.next();
149
-
150
- if (!cur.done) {
151
- output = cur.value;
152
- hasFinished = true;
153
- } else {
154
- innerIter = undefined;
155
- }
156
- }
157
- }
158
-
159
- return innerIter != null ? [output, innerIter] : undefined;
160
- }, undefined);
161
- });
162
- }
163
- export function collect(f, xs) {
164
- return concat(map(f, xs));
165
- }
166
- export function choose(f, xs) {
167
- return delay(() => unfold(iter => {
168
- let cur = iter.next();
169
-
170
- while (!cur.done) {
171
- const y = f(cur.value);
172
-
173
- if (y != null) {
174
- return [value(y), iter];
175
- }
176
-
177
- cur = iter.next();
178
- }
179
-
180
- return undefined;
181
- }, xs[Symbol.iterator]()));
182
- }
183
- export function compareWith(f, xs, ys) {
184
- const nonZero = tryFind(i => i !== 0, map2(f, xs, ys));
185
- return nonZero != null ? value(nonZero) : length(xs) - length(ys);
186
- }
187
- export function delay(f) {
188
- return makeSeq(() => f()[Symbol.iterator]());
189
- }
190
- export function empty() {
191
- return [];
192
- }
193
- export function singleton(y) {
194
- return [y];
195
- }
196
- export function enumerateFromFunctions(factory, moveNext, current) {
197
- return delay(() => unfold(e => moveNext(e) ? [current(e), e] : undefined, factory()));
198
- }
199
- export function enumerateWhile(cond, xs) {
200
- return concat(unfold(() => cond() ? [xs, true] : undefined, undefined));
201
- }
202
- export function enumerateThenFinally(xs, finalFn) {
203
- return delay(() => {
204
- let iter;
205
-
206
- try {
207
- iter = xs[Symbol.iterator]();
208
- } catch (err) {
209
- try {
210
- return empty();
211
- } finally {
212
- finalFn();
213
- }
214
- }
215
-
216
- return unfold(it => {
217
- try {
218
- const cur = it.next();
219
- return !cur.done ? [cur.value, it] : undefined;
220
- } catch (err) {
221
- return undefined;
222
- } finally {
223
- finalFn();
224
- }
225
- }, iter);
226
- });
227
- }
228
- export function enumerateUsing(disp, work) {
229
- let isDisposed = false;
230
-
231
- const disposeOnce = () => {
232
- if (!isDisposed) {
233
- isDisposed = true;
234
- disp.Dispose();
235
- }
236
- };
237
-
238
- try {
239
- return enumerateThenFinally(work(disp), disposeOnce);
240
- } catch (err) {
241
- return void 0;
242
- } finally {
243
- disposeOnce();
244
- }
245
- }
246
- export function exactlyOne(xs) {
247
- const iter = xs[Symbol.iterator]();
248
- const fst = iter.next();
249
-
250
- if (fst.done) {
251
- throw new Error("Seq was empty");
252
- }
253
-
254
- const snd = iter.next();
255
-
256
- if (!snd.done) {
257
- throw new Error("Seq had multiple items");
258
- }
259
-
260
- return fst.value;
261
- }
262
- export function except(itemsToExclude, source) {
263
- const exclusionItems = Array.from(itemsToExclude);
264
-
265
- const testIsNotInExclusionItems = element => !exclusionItems.some(excludedItem => equals(excludedItem, element));
266
-
267
- return filter(testIsNotInExclusionItems, source);
268
- }
269
- export function exists(f, xs) {
270
- let cur;
271
-
272
- for (const iter = xs[Symbol.iterator]();;) {
273
- cur = iter.next();
274
-
275
- if (cur.done) {
276
- break;
277
- }
278
-
279
- if (f(cur.value)) {
280
- return true;
281
- }
282
- }
283
-
284
- return false;
285
- }
286
- export function exists2(f, xs, ys) {
287
- let cur1;
288
- let cur2;
289
-
290
- for (const iter1 = xs[Symbol.iterator](), iter2 = ys[Symbol.iterator]();;) {
291
- cur1 = iter1.next();
292
- cur2 = iter2.next();
293
-
294
- if (cur1.done || cur2.done) {
295
- break;
296
- }
297
-
298
- if (f(cur1.value, cur2.value)) {
299
- return true;
300
- }
301
- }
302
-
303
- return false;
304
- }
305
- export function forAll(f, xs) {
306
- return !exists(x => !f(x), xs);
307
- }
308
- export function forAll2(f, xs, ys) {
309
- return !exists2((x, y) => !f(x, y), xs, ys);
310
- }
311
- export function contains(i, xs) {
312
- return exists(x => equals(x, i), xs);
313
- }
314
- export function filter(f, xs) {
315
- return delay(() => unfold(iter => {
316
- let cur = iter.next();
317
-
318
- while (!cur.done) {
319
- if (f(cur.value)) {
320
- return [cur.value, iter];
321
- }
322
-
323
- cur = iter.next();
324
- }
325
-
326
- return undefined;
327
- }, xs[Symbol.iterator]()));
328
- }
329
- export function where(f, xs) {
330
- return filter(f, xs);
331
- }
332
- export function fold(f, acc, xs) {
333
- if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {
334
- return xs.reduce(f, acc);
335
- } else {
336
- let cur;
337
-
338
- for (let i = 0, iter = xs[Symbol.iterator]();; i++) {
339
- cur = iter.next();
340
-
341
- if (cur.done) {
342
- break;
343
- }
344
-
345
- acc = f(acc, cur.value, i);
346
- }
347
-
348
- return acc;
349
- }
350
- }
351
- export function foldBack(f, xs, acc) {
352
- const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);
353
-
354
- for (let i = arr.length - 1; i >= 0; i--) {
355
- acc = f(arr[i], acc, i);
356
- }
357
-
358
- return acc;
359
- }
360
- export function fold2(f, acc, xs, ys) {
361
- const iter1 = xs[Symbol.iterator]();
362
- const iter2 = ys[Symbol.iterator]();
363
- let cur1;
364
- let cur2;
365
-
366
- for (let i = 0;; i++) {
367
- cur1 = iter1.next();
368
- cur2 = iter2.next();
369
-
370
- if (cur1.done || cur2.done) {
371
- break;
372
- }
373
-
374
- acc = f(acc, cur1.value, cur2.value, i);
375
- }
376
-
377
- return acc;
378
- }
379
- export function foldBack2(f, xs, ys, acc) {
380
- const ar1 = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);
381
- const ar2 = Array.isArray(ys) || ArrayBuffer.isView(ys) ? ys : Array.from(ys);
382
-
383
- for (let i = ar1.length - 1; i >= 0; i--) {
384
- acc = f(ar1[i], ar2[i], acc, i);
385
- }
386
-
387
- return acc;
388
- }
389
- export function tryHead(xs) {
390
- const iter = xs[Symbol.iterator]();
391
- const cur = iter.next();
392
- return cur.done ? undefined : some(cur.value);
393
- }
394
- export function head(xs) {
395
- return __failIfNone(tryHead(xs));
396
- }
397
- export function initialize(n, f) {
398
- return delay(() => unfold(i => i < n ? [f(i), i + 1] : undefined, 0));
399
- }
400
- export function initializeInfinite(f) {
401
- return delay(() => unfold(i => [f(i), i + 1], 0));
402
- }
403
- export function tryItem(i, xs) {
404
- if (i < 0) {
405
- return undefined;
406
- }
407
-
408
- if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {
409
- return i < xs.length ? some(xs[i]) : undefined;
410
- }
411
-
412
- for (let j = 0, iter = xs[Symbol.iterator]();; j++) {
413
- const cur = iter.next();
414
-
415
- if (cur.done) {
416
- break;
417
- }
418
-
419
- if (j === i) {
420
- return some(cur.value);
421
- }
422
- }
423
-
424
- return undefined;
425
- }
426
- export function item(i, xs) {
427
- return __failIfNone(tryItem(i, xs));
428
- }
429
- export function iterate(f, xs) {
430
- fold((_, x) => (f(x), undefined), undefined, xs);
431
- }
432
- export function iterate2(f, xs, ys) {
433
- fold2((_, x, y) => (f(x, y), undefined), undefined, xs, ys);
434
- }
435
- export function iterateIndexed(f, xs) {
436
- fold((_, x, i) => (f(i !== null && i !== void 0 ? i : 0, x), undefined), undefined, xs);
437
- }
438
- export function iterateIndexed2(f, xs, ys) {
439
- fold2((_, x, y, i) => (f(i !== null && i !== void 0 ? i : 0, x, y), undefined), undefined, xs, ys);
440
- }
441
- export function isEmpty(xs) {
442
- const i = xs[Symbol.iterator]();
443
- return i.next().done;
444
- }
445
- export function tryLast(xs) {
446
- return isEmpty(xs) ? undefined : some(reduce((_, x) => x, xs));
447
- }
448
- export function last(xs) {
449
- return __failIfNone(tryLast(xs));
450
- }
451
- export function length(xs) {
452
- return Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.length : fold((acc, _x) => acc + 1, 0, xs);
453
- }
454
- export function map(f, xs) {
455
- return delay(() => unfold(iter => {
456
- const cur = iter.next();
457
- return !cur.done ? [f(cur.value), iter] : undefined;
458
- }, xs[Symbol.iterator]()));
459
- }
460
- export function mapIndexed(f, xs) {
461
- return delay(() => {
462
- let i = 0;
463
- return unfold(iter => {
464
- const cur = iter.next();
465
- return !cur.done ? [f(i++, cur.value), iter] : undefined;
466
- }, xs[Symbol.iterator]());
467
- });
468
- }
469
- export function indexed(xs) {
470
- return mapIndexed((i, x) => [i, x], xs);
471
- }
472
- export function map2(f, xs, ys) {
473
- return delay(() => {
474
- const iter1 = xs[Symbol.iterator]();
475
- const iter2 = ys[Symbol.iterator]();
476
- return unfold(() => {
477
- const cur1 = iter1.next();
478
- const cur2 = iter2.next();
479
- return !cur1.done && !cur2.done ? [f(cur1.value, cur2.value), undefined] : undefined;
480
- }, undefined);
481
- });
482
- }
483
- export function mapIndexed2(f, xs, ys) {
484
- return delay(() => {
485
- let i = 0;
486
- const iter1 = xs[Symbol.iterator]();
487
- const iter2 = ys[Symbol.iterator]();
488
- return unfold(() => {
489
- const cur1 = iter1.next();
490
- const cur2 = iter2.next();
491
- return !cur1.done && !cur2.done ? [f(i++, cur1.value, cur2.value), undefined] : undefined;
492
- }, undefined);
493
- });
494
- }
495
- export function map3(f, xs, ys, zs) {
496
- return delay(() => {
497
- const iter1 = xs[Symbol.iterator]();
498
- const iter2 = ys[Symbol.iterator]();
499
- const iter3 = zs[Symbol.iterator]();
500
- return unfold(() => {
501
- const cur1 = iter1.next();
502
- const cur2 = iter2.next();
503
- const cur3 = iter3.next();
504
- return !cur1.done && !cur2.done && !cur3.done ? [f(cur1.value, cur2.value, cur3.value), undefined] : undefined;
505
- }, undefined);
506
- });
507
- }
508
- export function mapFold(f, acc, xs, transform) {
509
- const result = [];
510
- let r;
511
- let cur;
512
-
513
- for (let i = 0, iter = xs[Symbol.iterator]();; i++) {
514
- cur = iter.next();
515
-
516
- if (cur.done) {
517
- break;
518
- }
519
-
520
- [r, acc] = f(acc, cur.value);
521
- result.push(r);
522
- }
523
-
524
- return transform !== void 0 ? [transform(result), acc] : [result, acc];
525
- }
526
- export function mapFoldBack(f, xs, acc, transform) {
527
- const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);
528
- const result = [];
529
- let r;
530
-
531
- for (let i = arr.length - 1; i >= 0; i--) {
532
- [r, acc] = f(arr[i], acc);
533
- result.push(r);
534
- }
535
-
536
- return transform !== void 0 ? [transform(result), acc] : [result, acc];
537
- }
538
- export function max(xs, comparer) {
539
- const compareFn = comparer != null ? comparer.Compare : compare;
540
- return reduce((acc, x) => compareFn(acc, x) === 1 ? acc : x, xs);
541
- }
542
- export function maxBy(f, xs, comparer) {
543
- const compareFn = comparer != null ? comparer.Compare : compare;
544
- return reduce((acc, x) => compareFn(f(acc), f(x)) === 1 ? acc : x, xs);
545
- }
546
- export function min(xs, comparer) {
547
- const compareFn = comparer != null ? comparer.Compare : compare;
548
- return reduce((acc, x) => compareFn(acc, x) === -1 ? acc : x, xs);
549
- }
550
- export function minBy(f, xs, comparer) {
551
- const compareFn = comparer != null ? comparer.Compare : compare;
552
- return reduce((acc, x) => compareFn(f(acc), f(x)) === -1 ? acc : x, xs);
553
- }
554
- export function pairwise(xs) {
555
- return delay(() => {
556
- const iter = xs[Symbol.iterator]();
557
- const cur = iter.next();
558
-
559
- if (cur.done) {
560
- return empty();
561
- }
562
-
563
- const hd = cur.value;
564
- const tl = tail(xs);
565
- const ys = scan(([_, last], next) => [last, next], [hd, hd], tl);
566
- return skip(1, ys);
567
- });
568
- }
569
- export function rangeChar(first, last) {
570
- return delay(() => unfold(x => x <= last ? [x, String.fromCharCode(x.charCodeAt(0) + 1)] : undefined, first));
571
- }
572
- export function rangeLong(first, step, last, unsigned) {
573
- const stepFn = makeLongRangeStepFunction(step, last, unsigned);
574
- return delay(() => unfold(stepFn, first));
575
- }
576
- export function rangeDecimal(first, step, last) {
577
- const stepFn = makeDecimalRangeStepFunction(step, last);
578
- return delay(() => unfold(stepFn, first));
579
- }
580
- export function rangeNumber(first, step, last) {
581
- if (step === 0) {
582
- throw new Error("Step cannot be 0");
583
- }
584
-
585
- return delay(() => unfold(x => step > 0 && x <= last || step < 0 && x >= last ? [x, x + step] : undefined, first));
586
- }
587
- export function readOnly(xs) {
588
- return map(x => x, xs);
589
- }
590
- export function reduce(f, xs) {
591
- if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {
592
- return xs.reduce(f);
593
- }
594
-
595
- const iter = xs[Symbol.iterator]();
596
- let cur = iter.next();
597
-
598
- if (cur.done) {
599
- throw new Error("Seq was empty");
600
- }
601
-
602
- let acc = cur.value;
603
-
604
- while (true) {
605
- cur = iter.next();
606
-
607
- if (cur.done) {
608
- break;
609
- }
610
-
611
- acc = f(acc, cur.value);
612
- }
613
-
614
- return acc;
615
- }
616
- export function reduceBack(f, xs) {
617
- const ar = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);
618
-
619
- if (ar.length === 0) {
620
- throw new Error("Seq was empty");
621
- }
622
-
623
- let acc = ar[ar.length - 1];
624
-
625
- for (let i = ar.length - 2; i >= 0; i--) {
626
- acc = f(ar[i], acc, i);
627
- }
628
-
629
- return acc;
630
- }
631
- export function replicate(n, x) {
632
- return initialize(n, () => x);
633
- }
634
- export function reverse(xs) {
635
- const ar = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);
636
- return ofArray(ar.reverse());
637
- }
638
- export function scan(f, seed, xs) {
639
- return delay(() => {
640
- const iter = xs[Symbol.iterator]();
641
- return unfold(acc => {
642
- if (acc == null) {
643
- return [seed, seed];
644
- }
645
-
646
- const cur = iter.next();
647
-
648
- if (!cur.done) {
649
- acc = f(acc, cur.value);
650
- return [acc, acc];
651
- }
652
-
653
- return undefined;
654
- }, undefined);
655
- });
656
- }
657
- export function scanBack(f, xs, seed) {
658
- return reverse(scan((acc, x) => f(x, acc), seed, reverse(xs)));
659
- }
660
- export function skip(n, xs) {
661
- return makeSeq(() => {
662
- const iter = xs[Symbol.iterator]();
663
-
664
- for (let i = 1; i <= n; i++) {
665
- if (iter.next().done) {
666
- throw new Error("Seq has not enough elements");
667
- }
668
- }
669
-
670
- return iter;
671
- });
672
- }
673
- export function skipWhile(f, xs) {
674
- return delay(() => {
675
- let hasPassed = false;
676
- return filter(x => hasPassed || (hasPassed = !f(x)), xs);
677
- });
678
- }
679
- export function sortWith(f, xs) {
680
- const ys = Array.from(xs);
681
- return ofArray(ys.sort(f));
682
- }
683
- export function sum(xs, adder) {
684
- return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);
685
- }
686
- export function sumBy(f, xs, adder) {
687
- return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);
688
- }
689
- export function tail(xs) {
690
- return skip(1, xs);
691
- }
692
- export function take(n, xs, truncate = false) {
693
- return delay(() => {
694
- const iter = xs[Symbol.iterator]();
695
- return unfold(i => {
696
- if (i < n) {
697
- const cur = iter.next();
698
-
699
- if (!cur.done) {
700
- return [cur.value, i + 1];
701
- }
702
-
703
- if (!truncate) {
704
- throw new Error("Seq has not enough elements");
705
- }
706
- }
707
-
708
- return undefined;
709
- }, 0);
710
- });
711
- }
712
- export function truncate(n, xs) {
713
- return take(n, xs, true);
714
- }
715
- export function takeWhile(f, xs) {
716
- return delay(() => {
717
- const iter = xs[Symbol.iterator]();
718
- return unfold(() => {
719
- const cur = iter.next();
720
-
721
- if (!cur.done && f(cur.value)) {
722
- return [cur.value, undefined];
723
- }
724
-
725
- return undefined;
726
- }, 0);
727
- });
728
- }
729
- export function tryFind(f, xs, defaultValue) {
730
- for (let i = 0, iter = xs[Symbol.iterator]();; i++) {
731
- const cur = iter.next();
732
-
733
- if (cur.done) {
734
- break;
735
- }
736
-
737
- if (f(cur.value, i)) {
738
- return some(cur.value);
739
- }
740
- }
741
-
742
- return defaultValue === void 0 ? undefined : some(defaultValue);
743
- }
744
- export function find(f, xs) {
745
- return __failIfNone(tryFind(f, xs));
746
- }
747
- export function tryFindBack(f, xs, defaultValue) {
748
- const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);
749
- return tryFind(f, arr.reverse(), defaultValue);
750
- }
751
- export function findBack(f, xs) {
752
- return __failIfNone(tryFindBack(f, xs));
753
- }
754
- export function tryFindIndex(f, xs) {
755
- for (let i = 0, iter = xs[Symbol.iterator]();; i++) {
756
- const cur = iter.next();
757
-
758
- if (cur.done) {
759
- break;
760
- }
761
-
762
- if (f(cur.value, i)) {
763
- return i;
764
- }
765
- }
766
-
767
- return undefined;
768
- }
769
- export function findIndex(f, xs) {
770
- return __failIfNone(tryFindIndex(f, xs));
771
- }
772
- export function tryFindIndexBack(f, xs) {
773
- const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);
774
-
775
- for (let i = arr.length - 1; i >= 0; i--) {
776
- if (f(arr[i], i)) {
777
- return i;
778
- }
779
- }
780
-
781
- return undefined;
782
- }
783
- export function findIndexBack(f, xs) {
784
- return __failIfNone(tryFindIndexBack(f, xs));
785
- }
786
- export function tryPick(f, xs) {
787
- for (let i = 0, iter = xs[Symbol.iterator]();; i++) {
788
- const cur = iter.next();
789
-
790
- if (cur.done) {
791
- break;
792
- }
793
-
794
- const y = f(cur.value, i);
795
-
796
- if (y != null) {
797
- return y;
798
- }
799
- }
800
-
801
- return undefined;
802
- }
803
- export function pick(f, xs) {
804
- return __failIfNone(tryPick(f, xs));
805
- }
806
- export function unfold(f, fst) {
807
- return makeSeq(() => {
808
- // Capture a copy of the first value in the closure
809
- // so the sequence is restarted every time, see #1230
810
- let acc = fst;
811
- const iter = {
812
- next() {
813
- const res = f(acc);
814
-
815
- if (res != null) {
816
- const v = value(res);
817
-
818
- if (v != null) {
819
- acc = v[1];
820
- return {
821
- done: false,
822
- value: v[0]
823
- };
824
- }
825
- }
826
-
827
- return {
828
- done: true,
829
- value: undefined
830
- };
831
- }
832
-
833
- };
834
- return iter;
835
- });
836
- }
837
- export function zip(xs, ys) {
838
- return map2((x, y) => [x, y], xs, ys);
839
- }
840
- export function zip3(xs, ys, zs) {
841
- return map3((x, y, z) => [x, y, z], xs, ys, zs);
842
- }
843
- export function windowed(windowSize, source) {
844
- if (windowSize <= 0) {
845
- throw new Error("windowSize must be positive");
846
- }
847
-
848
- return makeSeq(() => {
849
- let window = [];
850
- const iter = source[Symbol.iterator]();
851
- const iter2 = {
852
- next() {
853
- let cur;
854
-
855
- while (window.length < windowSize) {
856
- if ((cur = iter.next()).done) {
857
- return {
858
- done: true,
859
- value: undefined
860
- };
861
- }
862
-
863
- window.push(cur.value);
864
- }
865
-
866
- const value = window;
867
- window = window.slice(1);
868
- return {
869
- done: false,
870
- value
871
- };
872
- }
873
-
874
- };
875
- return iter2;
876
- });
877
- }
878
- export function transpose(source) {
879
- return makeSeq(() => {
880
- const iters = Array.from(source, x => x[Symbol.iterator]());
881
- const iter = {
882
- next() {
883
- if (iters.length === 0) {
884
- return {
885
- done: true,
886
- value: undefined
887
- }; // empty sequence
888
- }
889
-
890
- const results = Array.from(iters, iter => iter.next());
891
-
892
- if (results[0].done) {
893
- if (!results.every(x => x.done)) {
894
- throw new Error("Sequences have different lengths");
895
- }
896
-
897
- return {
898
- done: true,
899
- value: undefined
900
- };
901
- } else {
902
- if (!results.every(x => !x.done)) {
903
- throw new Error("Sequences have different lengths");
904
- }
905
-
906
- const values = results.map(x => x.value);
907
- return {
908
- done: false,
909
- value: values
910
- };
911
- }
912
- }
913
-
914
- };
915
- return iter;
916
- });
917
- }