@develia/commons 0.1.0 → 0.2.0

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/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export * from '../src/functions';
2
+ export * from '../src/cache-dictionary'
3
+ export * from '../src/from'
4
+ export * from '../src/action'
5
+ export * from '../src/equality-comparer'
6
+ export * from '../src/mapper'
7
+ export * from '../src/predicate'
8
+ export * from '../src/provider'
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@develia/commons",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "author": {
5
5
  "name": "Antonio Gil Espinosa",
6
6
  "email": "antonio.gil.espinosa@gmail.com",
7
7
  "url": "https://antoniogilespinosa.com"
8
8
  },
9
+ "main": "dist/index.js",
9
10
  "license": "proprietary",
10
11
  "dependencies": {
11
12
  },
package/src/action.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["action.ts"],"names":[],"mappings":""}
package/src/action.ts ADDED
@@ -0,0 +1 @@
1
+ export type Action<T> = (arg: T) => void
@@ -61,4 +61,4 @@ export class CacheDictionary {
61
61
  return expiration;
62
62
  }
63
63
  }
64
- //# sourceMappingURL=develia-cache.js.map
64
+ //# sourceMappingURL=cache-dictionary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-dictionary.js","sourceRoot":"","sources":["cache-dictionary.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAe;IAMxB,YAAY,WAAwC,IAAI,EAAE,kBAAiC,IAAI;QAC3F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;IAEM,aAAa,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAEM,aAAa,CAAC,GAAW,EAAE,UAA4B;QAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IACtC,CAAC;IAEM,WAAW,CAAC,GAAW,EAAE,QAAuB;QACnD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QACtC,CAAC;IACL,CAAC;IAEM,GAAG,CAAC,GAAW;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,WAA0B,IAAI;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,SAAS,CAAC,GAAW;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,UAAU,YAAY,IAAI,EAAE,CAAC;YAC7B,OAAO,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,mBAAmB,CAAC,QAAuB;QAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC1D,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=equality-comparer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equality-comparer.js","sourceRoot":"","sources":["equality-comparer.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export type EqualityComparer<T> = (arg1: T, arg2: T) => boolean;
package/src/from.js ADDED
@@ -0,0 +1,427 @@
1
+ import Grouping from "./grouping";
2
+ export default function from(source) {
3
+ if (source == null)
4
+ throw "Source is null.";
5
+ if (typeof source === 'function')
6
+ return From.fn(source);
7
+ if (typeof source[Symbol.iterator] === 'function') {
8
+ return From.iterable(source);
9
+ }
10
+ throw "Invalid source.";
11
+ }
12
+ export class From {
13
+ static _shallowEqual(obj1, obj2) {
14
+ const keys1 = Object.keys(obj1);
15
+ const keys2 = Object.keys(obj2);
16
+ if (keys1.length !== keys2.length) {
17
+ return false;
18
+ }
19
+ for (let key of keys1) {
20
+ if (obj1[key] !== obj2[key]) {
21
+ return false;
22
+ }
23
+ }
24
+ return true;
25
+ }
26
+ constructor(fn) {
27
+ this._fn = fn;
28
+ }
29
+ static fn(callable) {
30
+ return new From(callable);
31
+ }
32
+ ;
33
+ collect() {
34
+ const cache = Array.from(this);
35
+ return From.iterable(cache);
36
+ }
37
+ static iterable(iterable) {
38
+ return From.fn(function* () {
39
+ for (const item of iterable) {
40
+ yield item;
41
+ }
42
+ });
43
+ }
44
+ ;
45
+ map(mapper) {
46
+ const self = this;
47
+ return From.fn(function* () {
48
+ for (let item of self) {
49
+ yield mapper(item);
50
+ }
51
+ });
52
+ }
53
+ *[Symbol.iterator]() {
54
+ yield* this._fn();
55
+ }
56
+ all(predicate) {
57
+ for (let item of this._fn()) {
58
+ if (!predicate(item)) {
59
+ return false;
60
+ }
61
+ }
62
+ return true;
63
+ }
64
+ any(predicate) {
65
+ for (let item of this) {
66
+ if (predicate(item)) {
67
+ return true;
68
+ }
69
+ }
70
+ return false;
71
+ }
72
+ filter(predicate) {
73
+ const self = this;
74
+ return From.fn(function* () {
75
+ for (let item of self) {
76
+ if (predicate(item)) {
77
+ yield item;
78
+ }
79
+ }
80
+ });
81
+ }
82
+ contains(value) {
83
+ for (let item of this) {
84
+ if (item === value) {
85
+ return true;
86
+ }
87
+ }
88
+ return false;
89
+ }
90
+ // noinspection LoopStatementThatDoesntLoopJS
91
+ first(predicate) {
92
+ if (predicate) {
93
+ for (let item of this) {
94
+ if (!predicate || predicate(item)) {
95
+ return item;
96
+ }
97
+ }
98
+ }
99
+ else {
100
+ // noinspection LoopStatementThatDoesntLoopJS
101
+ for (let item of this) {
102
+ return item;
103
+ }
104
+ }
105
+ return undefined;
106
+ }
107
+ append(item) {
108
+ const self = this;
109
+ return From.fn(function* () {
110
+ for (let element of self) {
111
+ yield element;
112
+ }
113
+ yield item;
114
+ });
115
+ }
116
+ prepend(item) {
117
+ const self = this;
118
+ return From.fn(function* () {
119
+ yield item;
120
+ for (let element of self) {
121
+ yield element;
122
+ }
123
+ });
124
+ }
125
+ at(index) {
126
+ let idx = 0;
127
+ for (let item of this) {
128
+ if (idx++ === index) {
129
+ return item;
130
+ }
131
+ }
132
+ return undefined;
133
+ }
134
+ last(predicate) {
135
+ let last = undefined;
136
+ if (predicate)
137
+ for (let item of this) {
138
+ if (!predicate || predicate(item)) {
139
+ last = item;
140
+ }
141
+ }
142
+ else {
143
+ for (let item of this) {
144
+ last = item;
145
+ }
146
+ }
147
+ return last;
148
+ }
149
+ mapMany(mapper) {
150
+ const self = this;
151
+ return From.fn(function* () {
152
+ for (const item of self) {
153
+ const subitems = mapper(item);
154
+ for (const subitem of subitems) {
155
+ yield subitem;
156
+ }
157
+ }
158
+ });
159
+ }
160
+ flatten() {
161
+ const self = this;
162
+ return From.fn(function* () {
163
+ for (let item of self) {
164
+ let temp = item;
165
+ for (let subitem of temp) {
166
+ yield subitem;
167
+ }
168
+ }
169
+ });
170
+ }
171
+ sum(mapper) {
172
+ let total = 0;
173
+ if (mapper)
174
+ for (let item of this) {
175
+ total += mapper(item);
176
+ }
177
+ else
178
+ for (let item of this) {
179
+ total += item;
180
+ }
181
+ return total;
182
+ }
183
+ avg(mapper) {
184
+ let total = 0;
185
+ let count = 0;
186
+ if (mapper)
187
+ for (let item of this) {
188
+ total += mapper(item);
189
+ count++;
190
+ }
191
+ else
192
+ for (let item of this) {
193
+ total += item;
194
+ count++;
195
+ }
196
+ return count > 0 ? total / count : 0;
197
+ }
198
+ max(mapper) {
199
+ let max = -Infinity;
200
+ for (let item of this) {
201
+ let value = mapper(item);
202
+ max = value > max ? value : max;
203
+ }
204
+ return max;
205
+ }
206
+ min(mapper) {
207
+ let min = Infinity;
208
+ for (let item of this) {
209
+ let value = mapper(item);
210
+ min = value < min ? value : min;
211
+ }
212
+ return min;
213
+ }
214
+ maxBy(mapper) {
215
+ let max = -Infinity;
216
+ let maxItem;
217
+ for (let item of this) {
218
+ let value = mapper(item);
219
+ if (value > max) {
220
+ max = value;
221
+ maxItem = item;
222
+ }
223
+ }
224
+ return maxItem;
225
+ }
226
+ minBy(mapper) {
227
+ let min = Infinity;
228
+ let minItem;
229
+ for (let item of this) {
230
+ let value = mapper(item);
231
+ if (value < min) {
232
+ min = value;
233
+ minItem = item;
234
+ }
235
+ }
236
+ return minItem;
237
+ }
238
+ orderBy(mapper) {
239
+ const array = Array.from(this._fn());
240
+ array.sort((a, b) => {
241
+ const aValue = mapper(a);
242
+ const bValue = mapper(b);
243
+ return aValue > bValue ? 1 : aValue < bValue ? -1 : 0;
244
+ });
245
+ return From.iterable(array);
246
+ }
247
+ groupBy(keySelector, equalityComparer) {
248
+ equalityComparer = (equalityComparer == null ? From._shallowEqual : equalityComparer);
249
+ const self = this;
250
+ return From.fn(function* () {
251
+ const groups = [];
252
+ for (let item of self) {
253
+ const key = keySelector(item);
254
+ let found = false;
255
+ for (let [entryKey, group] of groups) {
256
+ if (equalityComparer(key, entryKey)) {
257
+ group.push(item);
258
+ found = true;
259
+ break;
260
+ }
261
+ }
262
+ if (!found) {
263
+ groups.push([key, [item]]);
264
+ }
265
+ }
266
+ yield* groups.map(([key, values]) => new Grouping(key, values));
267
+ });
268
+ }
269
+ head(n) {
270
+ const self = this;
271
+ return From.fn(function* () {
272
+ let count = 0;
273
+ for (let item of self) {
274
+ if (count++ < n) {
275
+ yield item;
276
+ }
277
+ else {
278
+ return;
279
+ }
280
+ }
281
+ });
282
+ }
283
+ tail(n) {
284
+ const self = this;
285
+ return From.fn(function* () {
286
+ let buffer = [];
287
+ for (let item of self) {
288
+ buffer.push(item);
289
+ if (buffer.length > n) {
290
+ buffer.shift();
291
+ }
292
+ }
293
+ yield* buffer;
294
+ });
295
+ }
296
+ forEach(action) {
297
+ for (let item of this) {
298
+ action(item);
299
+ }
300
+ }
301
+ toArray() {
302
+ return Array.from(this);
303
+ }
304
+ instancesOf(type) {
305
+ return this.filter(item => typeof item === type);
306
+ }
307
+ allInstanceOf(type) {
308
+ for (let item of this) {
309
+ if (!(item instanceof type)) {
310
+ return false;
311
+ }
312
+ }
313
+ return true;
314
+ }
315
+ distinct(eq_comparer) {
316
+ if (eq_comparer == null)
317
+ eq_comparer = From._shallowEqual;
318
+ const self = this;
319
+ return From.fn(function* () {
320
+ const included = [];
321
+ for (let item of self) {
322
+ if (!From.iterable(included).any(x => eq_comparer(x, item))) {
323
+ included.push(item);
324
+ yield item;
325
+ }
326
+ }
327
+ });
328
+ }
329
+ insert(item, index) {
330
+ const self = this;
331
+ return From.fn(function* () {
332
+ let i = 0;
333
+ let inserted = false;
334
+ for (let existingItem of self) {
335
+ if (i === index) {
336
+ yield item;
337
+ inserted = true;
338
+ }
339
+ yield existingItem;
340
+ i++;
341
+ }
342
+ if (!inserted) {
343
+ yield item;
344
+ }
345
+ });
346
+ }
347
+ skip(n) {
348
+ const self = this;
349
+ return From.fn(function* () {
350
+ let i = 0;
351
+ for (let item of self) {
352
+ if (i >= n) {
353
+ yield item;
354
+ }
355
+ i++;
356
+ }
357
+ });
358
+ }
359
+ union(other) {
360
+ const self = this;
361
+ return From.fn(function* () {
362
+ yield* self;
363
+ yield* other;
364
+ });
365
+ }
366
+ innerJoin(other, thisKeySelector, otherKeySelector, resultSelector) {
367
+ const self = this;
368
+ return From.fn(() => {
369
+ const otherByKey = new Map();
370
+ for (let item of other) {
371
+ otherByKey.set(otherKeySelector(item), item);
372
+ }
373
+ return Array.from(self)
374
+ .filter(item => otherByKey.has(thisKeySelector(item)))
375
+ .map(item => resultSelector(item, otherByKey.get(thisKeySelector(item))));
376
+ });
377
+ }
378
+ leftJoin(other, thisKeySelector, otherKeySelector, resultSelector) {
379
+ const self = this;
380
+ return From.fn(() => {
381
+ const otherByKey = new Map();
382
+ for (let item of other) {
383
+ otherByKey.set(otherKeySelector(item), item);
384
+ }
385
+ return Array.from(self).map(item => resultSelector(item, otherByKey.get(thisKeySelector(item))));
386
+ });
387
+ }
388
+ leftGroupJoin(other, thisKeySelector, otherKeySelector, resultSelector) {
389
+ const self = this;
390
+ return From.fn(() => {
391
+ const otherByKeys = new Map();
392
+ for (let item of other) {
393
+ const key = otherKeySelector(item);
394
+ if (!otherByKeys.has(key)) {
395
+ otherByKeys.set(key, []);
396
+ }
397
+ otherByKeys.get(key).push(item);
398
+ }
399
+ return Array.from(self).map(item => resultSelector(item, otherByKeys.get(thisKeySelector(item)) || []));
400
+ });
401
+ }
402
+ rightGroupJoin(other, thisKeySelector, otherKeySelector, resultSelector) {
403
+ const self = this;
404
+ return From.fn(() => {
405
+ const thisByKeys = new Map();
406
+ for (let item of self) {
407
+ const key = thisKeySelector(item);
408
+ if (!thisByKeys.has(key)) {
409
+ thisByKeys.set(key, []);
410
+ }
411
+ thisByKeys.get(key).push(item);
412
+ }
413
+ return Array.from(other).map(item => resultSelector(thisByKeys.get(otherKeySelector(item)) || [], item));
414
+ });
415
+ }
416
+ rightJoin(other, thisKeySelector, otherKeySelector, resultSelector) {
417
+ const self = this;
418
+ return From.fn(() => {
419
+ const thisByKey = new Map();
420
+ for (let item of self) {
421
+ thisByKey.set(thisKeySelector(item), item);
422
+ }
423
+ return Array.from(other).map(item => resultSelector(thisByKey.get(otherKeySelector(item)), item));
424
+ });
425
+ }
426
+ }
427
+ //# sourceMappingURL=from.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from.js","sourceRoot":"","sources":["from.ts"],"names":[],"mappings":"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"}
package/src/from.ts ADDED
@@ -0,0 +1,504 @@
1
+ import {Provider} from "./provider";
2
+ import {Mapper} from "./mapper";
3
+ import {Predicate} from "./predicate";
4
+ import {EqualityComparer} from "./equality-comparer";
5
+ import {Action} from "./action";
6
+ import Grouping from "./grouping"
7
+
8
+ export default function from<T>(source: Iterable<T> | Provider<Iterable<T>>): From<T> {
9
+ if (source == null)
10
+ throw "Source is null.";
11
+ if (typeof source === 'function')
12
+ return From.fn<T>(source);
13
+ if (typeof source[Symbol.iterator] === 'function') {
14
+ return From.iterable<T>(source);
15
+ }
16
+
17
+ throw "Invalid source.";
18
+ }
19
+
20
+ export class From<T> implements Iterable<T> {
21
+
22
+ private static _shallowEqual(obj1: any, obj2: any): boolean {
23
+ const keys1 = Object.keys(obj1);
24
+ const keys2 = Object.keys(obj2);
25
+
26
+ if (keys1.length !== keys2.length) {
27
+ return false;
28
+ }
29
+
30
+ for (let key of keys1) {
31
+ if (obj1[key] !== obj2[key]) {
32
+ return false;
33
+ }
34
+ }
35
+
36
+ return true;
37
+ }
38
+
39
+ private readonly _fn: Provider<Iterable<T>>
40
+
41
+ protected constructor(fn: Provider<Iterable<T>>) {
42
+ this._fn = fn;
43
+ }
44
+
45
+ public static fn<T>(callable: Provider<Iterable<T>>): From<T> {
46
+ return new From<T>(callable);
47
+ };
48
+
49
+ public collect(): From<T> {
50
+ const cache = Array.from(this);
51
+ return From.iterable(cache);
52
+ }
53
+
54
+ public static iterable<T>(iterable: Iterable<T>): From<T> {
55
+ return From.fn<T>(function* () {
56
+ for (const item of iterable) {
57
+ yield item;
58
+ }
59
+ });
60
+ };
61
+
62
+ public map<R>(mapper: Mapper<T, R>): From<R> {
63
+ const self = this;
64
+ return From.fn<R>(function* () {
65
+ for (let item of self) {
66
+ yield mapper(item);
67
+ }
68
+ })
69
+ }
70
+
71
+ * [Symbol.iterator](): Iterator<T> {
72
+ yield* this._fn()
73
+ }
74
+
75
+
76
+ public all(predicate: Predicate<T>): boolean {
77
+ for (let item of this._fn()) {
78
+ if (!predicate(item)) {
79
+ return false;
80
+ }
81
+ }
82
+ return true;
83
+ }
84
+
85
+ public any(predicate: Predicate<T>): boolean {
86
+ for (let item of this) {
87
+ if (predicate(item)) {
88
+ return true;
89
+ }
90
+ }
91
+ return false;
92
+ }
93
+
94
+ public filter(predicate: Predicate<T>): From<T> {
95
+ const self = this;
96
+ return From.fn<T>(function* () {
97
+ for (let item of self) {
98
+ if (predicate(item)) {
99
+ yield item;
100
+ }
101
+ }
102
+ });
103
+ }
104
+
105
+ public contains(value: T): boolean {
106
+ for (let item of this) {
107
+ if (item === value) {
108
+ return true;
109
+ }
110
+ }
111
+ return false;
112
+ }
113
+
114
+
115
+ // noinspection LoopStatementThatDoesntLoopJS
116
+ public first(predicate?: Predicate<T>): T | undefined {
117
+
118
+ if (predicate) {
119
+ for (let item of this) {
120
+ if (!predicate || predicate(item)) {
121
+ return item;
122
+ }
123
+ }
124
+ } else {
125
+ // noinspection LoopStatementThatDoesntLoopJS
126
+ for (let item of this) {
127
+ return item;
128
+ }
129
+ }
130
+
131
+ return undefined;
132
+ }
133
+
134
+ public append(item: T): From<T> {
135
+ const self = this;
136
+ return From.fn<T>(function* () {
137
+ for (let element of self) {
138
+ yield element;
139
+ }
140
+ yield item;
141
+ });
142
+ }
143
+
144
+ public prepend(item: T): From<T> {
145
+ const self = this;
146
+ return From.fn<T>(function* () {
147
+ yield item;
148
+ for (let element of self) {
149
+ yield element;
150
+ }
151
+ });
152
+ }
153
+
154
+ public at(index: number): T | undefined {
155
+ let idx = 0;
156
+ for (let item of this) {
157
+ if (idx++ === index) {
158
+ return item;
159
+ }
160
+ }
161
+ return undefined;
162
+ }
163
+
164
+ public last(predicate?: Predicate<T>): T | undefined {
165
+
166
+
167
+ let last: T | undefined = undefined;
168
+
169
+ if (predicate)
170
+ for (let item of this) {
171
+ if (!predicate || predicate(item)) {
172
+ last = item;
173
+ }
174
+ }
175
+ else {
176
+ for (let item of this) {
177
+ last = item;
178
+ }
179
+ }
180
+ return last;
181
+ }
182
+
183
+ public mapMany<R>(mapper: Mapper<T, Iterable<R>>): From<R> {
184
+ const self = this;
185
+ return From.fn(function* () {
186
+ for (const item of self) {
187
+ const subitems = mapper(item)
188
+ for (const subitem of subitems) {
189
+ yield subitem;
190
+ }
191
+ }
192
+ })
193
+ }
194
+
195
+ public flatten(): From<any> {
196
+ const self = this;
197
+ return From.fn<T>(function* () {
198
+ for (let item of self) {
199
+ let temp = <Iterable<any>>item;
200
+ for (let subitem of temp) {
201
+ yield subitem
202
+ }
203
+ }
204
+ });
205
+ }
206
+
207
+ public sum(mapper?: Mapper<T, number>): number {
208
+ let total = 0;
209
+
210
+ if (mapper)
211
+ for (let item of this) {
212
+ total += mapper(item);
213
+ }
214
+ else
215
+ for (let item of this) {
216
+ total += item as number;
217
+ }
218
+ return total;
219
+ }
220
+
221
+ public avg(mapper?: Mapper<T, number>): number {
222
+ let total = 0;
223
+ let count = 0;
224
+
225
+ if (mapper)
226
+ for (let item of this) {
227
+ total += mapper(item);
228
+ count++;
229
+ }
230
+ else
231
+ for (let item of this) {
232
+ total += item as number;
233
+ count++;
234
+ }
235
+ return count > 0 ? total / count : 0;
236
+ }
237
+
238
+ public max(mapper: Mapper<T, number>): number {
239
+ let max = -Infinity;
240
+ for (let item of this) {
241
+ let value = mapper(item);
242
+ max = value > max ? value : max;
243
+ }
244
+ return max;
245
+ }
246
+
247
+ public min(mapper: Mapper<T, number>): number {
248
+ let min = Infinity;
249
+ for (let item of this) {
250
+ let value = mapper(item);
251
+ min = value < min ? value : min;
252
+ }
253
+ return min;
254
+ }
255
+
256
+ public maxBy(mapper: Mapper<T, number>): T | undefined {
257
+ let max = -Infinity;
258
+ let maxItem: T | undefined;
259
+ for (let item of this) {
260
+ let value = mapper(item);
261
+ if (value > max) {
262
+ max = value;
263
+ maxItem = item;
264
+ }
265
+ }
266
+ return maxItem;
267
+ }
268
+
269
+ public minBy(mapper: Mapper<T, number>): T | undefined {
270
+ let min = Infinity;
271
+ let minItem: T | undefined;
272
+ for (let item of this) {
273
+ let value = mapper(item);
274
+ if (value < min) {
275
+ min = value;
276
+ minItem = item;
277
+ }
278
+ }
279
+ return minItem;
280
+ }
281
+
282
+ public orderBy<R>(mapper: Mapper<T, R>): From<T> {
283
+ const array = Array.from(this._fn());
284
+ array.sort((a, b) => {
285
+ const aValue = mapper(a);
286
+ const bValue = mapper(b);
287
+ return aValue > bValue ? 1 : aValue < bValue ? -1 : 0;
288
+ });
289
+ return From.iterable(array);
290
+ }
291
+
292
+ public groupBy<TKey>(keySelector: Mapper<T, TKey>, equalityComparer?: EqualityComparer<TKey>): From<Grouping<TKey, T>> {
293
+
294
+ equalityComparer = (equalityComparer == null ? From._shallowEqual : equalityComparer);
295
+ const self = this;
296
+
297
+ return From.fn<Grouping<TKey, T>>(function* () {
298
+ const groups: Array<[TKey, T[]]> = [];
299
+ for (let item of self) {
300
+ const key = keySelector(item);
301
+ let found = false;
302
+ for (let [entryKey, group] of groups) {
303
+ if (equalityComparer(key, entryKey)) {
304
+ group.push(item);
305
+ found = true;
306
+ break;
307
+ }
308
+ }
309
+ if (!found) {
310
+ groups.push([key, [item]]);
311
+ }
312
+ }
313
+ yield* groups.map(([key, values]) => new Grouping<TKey, T>(key, values));
314
+ });
315
+ }
316
+
317
+ public head(n: number): From<T> {
318
+
319
+ const self = this;
320
+ return From.fn<T>(function* () {
321
+ let count = 0;
322
+ for (let item of self) {
323
+ if (count++ < n) {
324
+ yield item;
325
+ } else {
326
+ return;
327
+ }
328
+ }
329
+ });
330
+ }
331
+
332
+ public tail(n: number): From<T> {
333
+
334
+ const self = this;
335
+ return From.fn<T>(function* () {
336
+ let buffer = [];
337
+ for (let item of self) {
338
+ buffer.push(item);
339
+ if (buffer.length > n) {
340
+ buffer.shift();
341
+ }
342
+ }
343
+ yield* buffer;
344
+ });
345
+ }
346
+
347
+ public forEach(action: Action<T>): void {
348
+ for (let item of this) {
349
+ action(item);
350
+ }
351
+ }
352
+
353
+ public toArray(): T[] {
354
+ return Array.from(this);
355
+ }
356
+
357
+
358
+ public instancesOf(type: string): From<T> {
359
+ return this.filter(item => typeof item === type);
360
+ }
361
+
362
+ public allInstanceOf(type: new (...args: any[]) => any): boolean {
363
+ for (let item of this) {
364
+ if (!(item instanceof type)) {
365
+ return false;
366
+ }
367
+ }
368
+ return true;
369
+ }
370
+
371
+ public distinct(eq_comparer?: EqualityComparer<T>): From<T> {
372
+
373
+ if (eq_comparer == null)
374
+ eq_comparer = From._shallowEqual;
375
+
376
+ const self = this;
377
+ return From.fn<T>(function* () {
378
+
379
+ const included = [];
380
+
381
+ for (let item of self) {
382
+ if (!From.iterable(included).any(x => eq_comparer(x, item))) {
383
+ included.push(item);
384
+ yield item;
385
+ }
386
+ }
387
+ });
388
+ }
389
+
390
+ public insert(item: T, index: number): From<T> {
391
+
392
+ const self = this;
393
+ return From.fn<T>(function* () {
394
+ let i = 0;
395
+ let inserted = false;
396
+ for (let existingItem of self) {
397
+ if (i === index) {
398
+ yield item;
399
+ inserted = true;
400
+ }
401
+ yield existingItem;
402
+ i++;
403
+ }
404
+ if (!inserted) {
405
+ yield item;
406
+ }
407
+ });
408
+ }
409
+
410
+ public skip(n: number): From<T> {
411
+ const self = this;
412
+ return From.fn<T>(function* () {
413
+ let i = 0;
414
+ for (let item of self) {
415
+ if (i >= n) {
416
+ yield item;
417
+ }
418
+ i++;
419
+ }
420
+ });
421
+ }
422
+
423
+
424
+ public union(other: Iterable<T>): From<T> {
425
+ const self = this;
426
+ return From.fn<T>(function* () {
427
+ yield* self;
428
+ yield* other;
429
+ });
430
+ }
431
+
432
+ public innerJoin<T2, R, R2>(other: Iterable<T2>, thisKeySelector: Mapper<T, R>, otherKeySelector: Mapper<T2, R>, resultSelector: (thisItem: T, otherItem: T2) => R2): From<R2> {
433
+
434
+ const self = this;
435
+ return From.fn<R2>(() => {
436
+ const otherByKey = new Map<R, T2>();
437
+ for (let item of other) {
438
+ otherByKey.set(otherKeySelector(item), item);
439
+ }
440
+ return Array.from(self)
441
+ .filter(item => otherByKey.has(thisKeySelector(item)))
442
+ .map(item => resultSelector(item, otherByKey.get(thisKeySelector(item))!));
443
+ });
444
+ }
445
+
446
+ public leftJoin<U, K, R>(other: Iterable<U>, thisKeySelector: Mapper<T, K>, otherKeySelector: Mapper<U, K>, resultSelector: (thisItem: T, otherItem: U | undefined) => R): From<R> {
447
+
448
+ const self = this;
449
+ return From.fn<R>(() => {
450
+ const otherByKey = new Map<K, U>();
451
+ for (let item of other) {
452
+ otherByKey.set(otherKeySelector(item), item);
453
+ }
454
+ return Array.from(self).map(item => resultSelector(item, otherByKey.get(thisKeySelector(item))));
455
+ });
456
+ }
457
+
458
+
459
+ public leftGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: Mapper<T, K>, otherKeySelector: Mapper<U, K>, resultSelector: (thisItem: T, otherItems: Array<U>) => R): From<R> {
460
+
461
+ const self = this;
462
+ return From.fn<R>(() => {
463
+ const otherByKeys = new Map<K, Array<U>>();
464
+ for (let item of other) {
465
+ const key = otherKeySelector(item);
466
+ if (!otherByKeys.has(key)) {
467
+ otherByKeys.set(key, []);
468
+ }
469
+ otherByKeys.get(key)!.push(item);
470
+ }
471
+ return Array.from(self).map(item => resultSelector(item, otherByKeys.get(thisKeySelector(item)) || []));
472
+ });
473
+ }
474
+
475
+ public rightGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: Mapper<T, K>, otherKeySelector: Mapper<U, K>, resultSelector: (thisItems: Array<T>, otherItem: U) => R): From<R> {
476
+
477
+ const self = this;
478
+ return From.fn<R>(() => {
479
+ const thisByKeys = new Map<K, Array<T>>();
480
+ for (let item of self) {
481
+ const key = thisKeySelector(item);
482
+ if (!thisByKeys.has(key)) {
483
+ thisByKeys.set(key, []);
484
+ }
485
+ thisByKeys.get(key)!.push(item);
486
+ }
487
+ return Array.from(other).map(item => resultSelector(thisByKeys.get(otherKeySelector(item)) || [], item));
488
+ });
489
+ }
490
+
491
+
492
+ public rightJoin<U, K, R>(other: Iterable<U>, thisKeySelector: Mapper<T, K>, otherKeySelector: Mapper<U, K>, resultSelector: (thisItem: T | undefined, otherItem: U) => R): From<R> {
493
+
494
+ const self = this;
495
+ return From.fn<R>(() => {
496
+ const thisByKey = new Map<K, T>();
497
+ for (let item of self) {
498
+ thisByKey.set(thisKeySelector(item), item);
499
+ }
500
+ return Array.from(other).map(item => resultSelector(thisByKey.get(otherKeySelector(item)), item));
501
+ });
502
+ }
503
+
504
+ }
@@ -95,10 +95,7 @@ export function deepClone(obj) {
95
95
  }
96
96
  return copy;
97
97
  }
98
- function objectToFormData(data, formData = null, parentKey = '') {
99
- if (!formData) {
100
- formData = new FormData();
101
- }
98
+ function _objectToFormData(data, formData, parentKey = '') {
102
99
  for (const key in data) {
103
100
  if (data.hasOwnProperty(key)) {
104
101
  const value = data[key];
@@ -109,13 +106,13 @@ function objectToFormData(data, formData = null, parentKey = '') {
109
106
  formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
110
107
  }
111
108
  else if (typeof value === 'object' && !Array.isArray(value)) {
112
- objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
109
+ _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
113
110
  }
114
111
  else if (Array.isArray(value)) {
115
112
  value.forEach((item, index) => {
116
113
  const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
117
114
  if (typeof item === 'object' && !Array.isArray(item)) {
118
- objectToFormData(item, formData, arrayKey);
115
+ _objectToFormData(item, formData, arrayKey);
119
116
  }
120
117
  else {
121
118
  formData.append(arrayKey, item);
@@ -129,7 +126,8 @@ function objectToFormData(data, formData = null, parentKey = '') {
129
126
  }
130
127
  return formData;
131
128
  }
132
- export function toFormData(data) {
133
- return objectToFormData(data);
129
+ export function objectToFormData(data) {
130
+ let formData = new FormData();
131
+ return _objectToFormData(data, formData);
134
132
  }
135
- //# sourceMappingURL=develia-commons.js.map
133
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["functions.ts"],"names":[],"mappings":"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"}
@@ -112,10 +112,8 @@ export function deepClone<T>(obj: T): T {
112
112
  return copy as T;
113
113
  }
114
114
 
115
- function objectToFormData(data: Record<string, any>, formData: FormData | null = null, parentKey: string = ''): FormData {
116
- if (!formData) {
117
- formData = new FormData();
118
- }
115
+ function _objectToFormData(data: Record<string, any>, formData: FormData, parentKey: string = ''): FormData {
116
+
119
117
 
120
118
  for (const key in data) {
121
119
  if (data.hasOwnProperty(key)) {
@@ -126,12 +124,12 @@ function objectToFormData(data: Record<string, any>, formData: FormData | null =
126
124
  } else if (value instanceof File) {
127
125
  formData.append(parentKey ? `${parentKey}[${key}]` : key, value);
128
126
  } else if (typeof value === 'object' && !Array.isArray(value)) {
129
- objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
127
+ _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);
130
128
  } else if (Array.isArray(value)) {
131
129
  value.forEach((item, index) => {
132
130
  const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;
133
131
  if (typeof item === 'object' && !Array.isArray(item)) {
134
- objectToFormData(item, formData, arrayKey);
132
+ _objectToFormData(item, formData, arrayKey);
135
133
  } else {
136
134
  formData.append(arrayKey, item);
137
135
  }
@@ -145,6 +143,7 @@ function objectToFormData(data: Record<string, any>, formData: FormData | null =
145
143
  return formData;
146
144
  }
147
145
 
148
- export function toFormData(data: Record<string, any>): FormData {
149
- return objectToFormData(data);
146
+ export function objectToFormData(data: Record<string, any>): FormData {
147
+ let formData = new FormData();
148
+ return _objectToFormData(data, formData);
150
149
  }
@@ -0,0 +1,12 @@
1
+ // noinspection JSUnusedGlobalSymbols
2
+ import { From } from "./from";
3
+ export default class Grouping extends From {
4
+ get key() {
5
+ return this._key;
6
+ }
7
+ constructor(key, values) {
8
+ super(() => values);
9
+ this._key = key;
10
+ }
11
+ }
12
+ //# sourceMappingURL=grouping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouping.js","sourceRoot":"","sources":["grouping.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAG5B,MAAM,CAAC,OAAO,OAAO,QAAkB,SAAQ,IAAO;IAIlD,IAAW,GAAG;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,YAAmB,GAAS,EAAE,MAAgB;QAC1C,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;CAGJ"}
@@ -0,0 +1,24 @@
1
+ // noinspection JSUnusedGlobalSymbols
2
+
3
+ import {Provider} from "./provider";
4
+ import {From} from "./from";
5
+
6
+
7
+ export default class Grouping<TKey, T> extends From<T> {
8
+
9
+ private readonly _key: TKey;
10
+
11
+ public get key(): TKey {
12
+ return this._key;
13
+ }
14
+
15
+ public constructor(key: TKey, values: Array<T>) {
16
+ super(() => values);
17
+ this._key = key;
18
+ }
19
+
20
+
21
+ }
22
+
23
+
24
+
package/src/mapper.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["mapper.ts"],"names":[],"mappings":""}
package/src/mapper.ts ADDED
@@ -0,0 +1 @@
1
+ export type Mapper<T, R> = (arg: T) => R;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=predicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate.js","sourceRoot":"","sources":["predicate.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export type Predicate<T> = (arg: T) => boolean;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export type Provider<T> = () => T;
@@ -1 +0,0 @@
1
- {"version":3,"file":"develia-cache.js","sourceRoot":"","sources":["develia-cache.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAe;IAMxB,YAAY,WAAwC,IAAI,EAAE,kBAAiC,IAAI;QAC3F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;IAEM,aAAa,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAEM,aAAa,CAAC,GAAW,EAAE,UAA4B;QAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IACtC,CAAC;IAEM,WAAW,CAAC,GAAW,EAAE,QAAuB;QACnD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QACtC,CAAC;IACL,CAAC;IAEM,GAAG,CAAC,GAAW;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,WAA0B,IAAI;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,SAAS,CAAC,GAAW;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,UAAU,YAAY,IAAI,EAAE,CAAC;YAC7B,OAAO,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,mBAAmB,CAAC,QAAuB;QAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC1D,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"develia-commons.js","sourceRoot":"","sources":["develia-commons.ts"],"names":[],"mappings":"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"}
File without changes