semantic-typescript 0.6.0 → 0.7.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/asynchronous/collector.d.ts +62 -58
- package/dist/asynchronous/collector.js +16 -5
- package/dist/asynchronous/semantic.d.ts +2 -2
- package/dist/asynchronous/semantic.js +16 -6
- package/dist/factory.d.ts +8 -0
- package/dist/factory.js +112 -36
- package/dist/hook.d.ts +6 -1
- package/dist/hook.js +20 -3
- package/dist/main.d.ts +1 -0
- package/dist/main.js +6 -0
- package/dist/synchronous/collector.d.ts +8 -4
- package/dist/synchronous/collector.js +74 -59
- package/dist/synchronous/semantic.d.ts +27 -23
- package/dist/synchronous/semantic.js +215 -286
- package/package.json +3 -2
- package/readme.cn.md +213 -214
- package/readme.de.md +172 -173
- package/readme.es.md +177 -172
- package/readme.fr.md +181 -172
- package/readme.jp.md +187 -169
- package/readme.kr.md +182 -169
- package/readme.md +213 -214
- package/readme.ru.md +188 -169
- package/readme.tw.md +178 -169
package/dist/factory.js
CHANGED
|
@@ -29,7 +29,7 @@ export let useAnimationFrame = (period, delay = 0) => {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
catch (error) {
|
|
32
|
-
|
|
32
|
+
throw error;
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
35
|
};
|
|
@@ -53,7 +53,7 @@ export let useAttribute = (target) => {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
catch (error) {
|
|
56
|
-
|
|
56
|
+
throw error;
|
|
57
57
|
}
|
|
58
58
|
});
|
|
59
59
|
}
|
|
@@ -115,7 +115,7 @@ export let useBlob = (blob, chunk = 64n * 1024n) => {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
catch (error) {
|
|
118
|
-
|
|
118
|
+
throw error;
|
|
119
119
|
}
|
|
120
120
|
finally {
|
|
121
121
|
if (stoppable) {
|
|
@@ -126,7 +126,7 @@ export let useBlob = (blob, chunk = 64n * 1024n) => {
|
|
|
126
126
|
})();
|
|
127
127
|
}
|
|
128
128
|
catch (error) {
|
|
129
|
-
|
|
129
|
+
throw error;
|
|
130
130
|
}
|
|
131
131
|
});
|
|
132
132
|
};
|
|
@@ -195,6 +195,7 @@ export let useDocument = (argument1, argument2 = {}) => {
|
|
|
195
195
|
let timeOut = null;
|
|
196
196
|
let index = 0n;
|
|
197
197
|
let activeCount = keys.size;
|
|
198
|
+
let listeners = new Map();
|
|
198
199
|
let until = new Promise(resolve => {
|
|
199
200
|
for (let key of keys) {
|
|
200
201
|
if (!isString(key))
|
|
@@ -218,6 +219,10 @@ export let useDocument = (argument1, argument2 = {}) => {
|
|
|
218
219
|
let handleEvent = (event, currentKey) => {
|
|
219
220
|
if (interrupt(event, index)) {
|
|
220
221
|
window.document.removeEventListener(currentKey, listener);
|
|
222
|
+
for (let [k, l] of listeners) {
|
|
223
|
+
window.document.removeEventListener(k, l);
|
|
224
|
+
}
|
|
225
|
+
listeners.clear();
|
|
221
226
|
if (--activeCount === 0) {
|
|
222
227
|
resolve();
|
|
223
228
|
}
|
|
@@ -227,6 +232,7 @@ export let useDocument = (argument1, argument2 = {}) => {
|
|
|
227
232
|
index++;
|
|
228
233
|
};
|
|
229
234
|
window.document.addEventListener(key, listener);
|
|
235
|
+
listeners.set(key, listener);
|
|
230
236
|
}
|
|
231
237
|
});
|
|
232
238
|
await until;
|
|
@@ -255,8 +261,9 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
255
261
|
let until = new Promise((resolve) => {
|
|
256
262
|
let listener = (event) => {
|
|
257
263
|
if (debounce > 0) {
|
|
258
|
-
if (timeOut)
|
|
264
|
+
if (timeOut) {
|
|
259
265
|
clearTimeout(timeOut);
|
|
266
|
+
}
|
|
260
267
|
timeOut = setTimeout(() => handle(event), debounce);
|
|
261
268
|
return;
|
|
262
269
|
}
|
|
@@ -271,8 +278,9 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
271
278
|
let handle = (event) => {
|
|
272
279
|
if (interrupt(event, index)) {
|
|
273
280
|
element.removeEventListener(key, listener);
|
|
274
|
-
if (timeOut)
|
|
281
|
+
if (timeOut) {
|
|
275
282
|
clearTimeout(timeOut);
|
|
283
|
+
}
|
|
276
284
|
resolve();
|
|
277
285
|
return;
|
|
278
286
|
}
|
|
@@ -287,22 +295,25 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
287
295
|
if (isIterable(argument2)) {
|
|
288
296
|
let keys = [...new Set(argument2)];
|
|
289
297
|
return new AsynchronousSemantic(async (accept, interrupt) => {
|
|
290
|
-
let active = keys.length;
|
|
291
298
|
let index = 0n;
|
|
299
|
+
let listeners = new Map();
|
|
292
300
|
let until = new Promise((resolve) => {
|
|
293
301
|
for (let key of keys) {
|
|
294
302
|
let listener = (event) => {
|
|
295
303
|
if (interrupt(event, index)) {
|
|
296
304
|
element.removeEventListener(key, listener);
|
|
297
|
-
|
|
298
|
-
|
|
305
|
+
for (let [k, l] of listeners) {
|
|
306
|
+
element.removeEventListener(k, l);
|
|
299
307
|
}
|
|
308
|
+
listeners.clear();
|
|
309
|
+
resolve();
|
|
300
310
|
return;
|
|
301
311
|
}
|
|
302
312
|
accept(event, index);
|
|
303
313
|
index++;
|
|
304
314
|
};
|
|
305
315
|
element.addEventListener(key, listener);
|
|
316
|
+
listeners.set(key, listener);
|
|
306
317
|
}
|
|
307
318
|
});
|
|
308
319
|
await until;
|
|
@@ -315,23 +326,31 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
315
326
|
if (isString(argument2)) {
|
|
316
327
|
let key = argument2;
|
|
317
328
|
return new AsynchronousSemantic(async (accept, interrupt) => {
|
|
318
|
-
let active = elements.length;
|
|
319
329
|
let index = 0n;
|
|
330
|
+
let listeners = new WeakMap();
|
|
320
331
|
let until = new Promise((resolve) => {
|
|
321
332
|
for (let element of elements) {
|
|
322
333
|
if (validate(element)) {
|
|
323
334
|
let listener = (event) => {
|
|
324
335
|
if (interrupt(event, index)) {
|
|
325
336
|
element.removeEventListener(key, listener);
|
|
326
|
-
|
|
327
|
-
|
|
337
|
+
let map = listeners.get(element);
|
|
338
|
+
if (validate(map)) {
|
|
339
|
+
for (let [k, l] of map) {
|
|
340
|
+
element.removeEventListener(k, l);
|
|
341
|
+
}
|
|
342
|
+
map.clear();
|
|
328
343
|
}
|
|
344
|
+
resolve();
|
|
329
345
|
return;
|
|
330
346
|
}
|
|
331
347
|
accept(event, index);
|
|
332
348
|
index++;
|
|
333
349
|
};
|
|
334
350
|
element.addEventListener(key, listener);
|
|
351
|
+
let map = new Map() || new Map();
|
|
352
|
+
map.set(key, listener);
|
|
353
|
+
listeners.set(element, map);
|
|
335
354
|
}
|
|
336
355
|
}
|
|
337
356
|
});
|
|
@@ -341,8 +360,8 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
341
360
|
if (isIterable(argument2)) {
|
|
342
361
|
let keys = new Set(argument2);
|
|
343
362
|
return new AsynchronousSemantic(async (accept, interrupt) => {
|
|
344
|
-
let active = elements.length * keys.size;
|
|
345
363
|
let index = 0n;
|
|
364
|
+
let listeners = new Map();
|
|
346
365
|
let until = new Promise((resolve) => {
|
|
347
366
|
for (let element of elements) {
|
|
348
367
|
for (let key of keys) {
|
|
@@ -350,15 +369,18 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
350
369
|
let listener = (event) => {
|
|
351
370
|
if (interrupt(event, index)) {
|
|
352
371
|
element.removeEventListener(key, listener);
|
|
353
|
-
|
|
354
|
-
|
|
372
|
+
for (let [k, l] of listeners) {
|
|
373
|
+
element.removeEventListener(k, l);
|
|
355
374
|
}
|
|
375
|
+
listeners.clear();
|
|
376
|
+
resolve();
|
|
356
377
|
return;
|
|
357
378
|
}
|
|
358
379
|
accept(event, index);
|
|
359
380
|
index++;
|
|
360
381
|
};
|
|
361
382
|
element.addEventListener(key, listener);
|
|
383
|
+
listeners.set(key, listener);
|
|
362
384
|
}
|
|
363
385
|
}
|
|
364
386
|
}
|
|
@@ -372,7 +394,7 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
372
394
|
if (isString(argument2)) {
|
|
373
395
|
let key = argument2;
|
|
374
396
|
return new AsynchronousSemantic(async (accept, interrupt) => {
|
|
375
|
-
let
|
|
397
|
+
let listeners = new Map();
|
|
376
398
|
let until = new Promise((resolve) => {
|
|
377
399
|
for (let elementOrSelector of elementsOrSelectors) {
|
|
378
400
|
if (validate(elementOrSelector)) {
|
|
@@ -381,14 +403,17 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
381
403
|
let listener = (event) => {
|
|
382
404
|
if (interrupt(event, 0n)) {
|
|
383
405
|
element.removeEventListener(key, listener);
|
|
384
|
-
|
|
385
|
-
|
|
406
|
+
for (let [k, l] of listeners) {
|
|
407
|
+
element.removeEventListener(k, l);
|
|
386
408
|
}
|
|
409
|
+
listeners.clear();
|
|
410
|
+
resolve();
|
|
387
411
|
return;
|
|
388
412
|
}
|
|
389
413
|
accept(event, 0n);
|
|
390
414
|
};
|
|
391
415
|
element.addEventListener(key, listener);
|
|
416
|
+
listeners.set(key, listener);
|
|
392
417
|
}
|
|
393
418
|
else if (isString(elementOrSelector)) {
|
|
394
419
|
let selector = elementOrSelector;
|
|
@@ -398,14 +423,17 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
398
423
|
let listener = (event) => {
|
|
399
424
|
if (interrupt(event, 0n)) {
|
|
400
425
|
element.removeEventListener(key, listener);
|
|
401
|
-
|
|
402
|
-
|
|
426
|
+
for (let [k, l] of listeners) {
|
|
427
|
+
element.removeEventListener(k, l);
|
|
403
428
|
}
|
|
429
|
+
listeners.clear();
|
|
430
|
+
resolve();
|
|
404
431
|
return;
|
|
405
432
|
}
|
|
406
433
|
accept(event, 0n);
|
|
407
434
|
};
|
|
408
435
|
element.addEventListener(key, listener);
|
|
436
|
+
listeners.set(key, listener);
|
|
409
437
|
}
|
|
410
438
|
}
|
|
411
439
|
}
|
|
@@ -418,7 +446,7 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
418
446
|
if (isIterable(argument2)) {
|
|
419
447
|
let keys = new Set(argument2);
|
|
420
448
|
return new AsynchronousSemantic(async (accept, interrupt) => {
|
|
421
|
-
let
|
|
449
|
+
let listeners = new Map();
|
|
422
450
|
let until = new Promise((resolve) => {
|
|
423
451
|
for (let elementOrSelector of elementsOrSelectors) {
|
|
424
452
|
if (isHTMLElemet(elementOrSelector)) {
|
|
@@ -428,14 +456,17 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
428
456
|
let listener = (event) => {
|
|
429
457
|
if (interrupt(event, 0n)) {
|
|
430
458
|
element.removeEventListener(key, listener);
|
|
431
|
-
|
|
432
|
-
|
|
459
|
+
for (let [k, l] of listeners) {
|
|
460
|
+
element.removeEventListener(k, l);
|
|
433
461
|
}
|
|
462
|
+
listeners.clear();
|
|
463
|
+
resolve();
|
|
434
464
|
return;
|
|
435
465
|
}
|
|
436
466
|
accept(event, 0n);
|
|
437
467
|
};
|
|
438
468
|
element.addEventListener(key, listener);
|
|
469
|
+
listeners.set(key, listener);
|
|
439
470
|
}
|
|
440
471
|
}
|
|
441
472
|
}
|
|
@@ -447,14 +478,17 @@ export let useHTMLElement = (argument1, argument2, argument3 = {}) => {
|
|
|
447
478
|
let listener = (event) => {
|
|
448
479
|
if (interrupt(event, 0n)) {
|
|
449
480
|
element.removeEventListener(key, listener);
|
|
450
|
-
|
|
451
|
-
|
|
481
|
+
for (let [k, l] of listeners) {
|
|
482
|
+
element.removeEventListener(k, l);
|
|
452
483
|
}
|
|
484
|
+
listeners.clear();
|
|
485
|
+
resolve();
|
|
453
486
|
return;
|
|
454
487
|
}
|
|
455
488
|
accept(event, 0n);
|
|
456
489
|
};
|
|
457
490
|
element.addEventListener(key, listener);
|
|
491
|
+
listeners.set(key, listener);
|
|
458
492
|
}
|
|
459
493
|
}
|
|
460
494
|
}
|
|
@@ -483,7 +517,7 @@ export let useFill = (element, count) => {
|
|
|
483
517
|
}
|
|
484
518
|
}
|
|
485
519
|
catch (error) {
|
|
486
|
-
|
|
520
|
+
throw error;
|
|
487
521
|
}
|
|
488
522
|
});
|
|
489
523
|
}
|
|
@@ -504,7 +538,7 @@ export let useFrom = (iterable) => {
|
|
|
504
538
|
}
|
|
505
539
|
}
|
|
506
540
|
catch (error) {
|
|
507
|
-
|
|
541
|
+
throw error;
|
|
508
542
|
}
|
|
509
543
|
});
|
|
510
544
|
}
|
|
@@ -521,7 +555,7 @@ export let useFrom = (iterable) => {
|
|
|
521
555
|
}
|
|
522
556
|
}
|
|
523
557
|
catch (error) {
|
|
524
|
-
|
|
558
|
+
throw error;
|
|
525
559
|
}
|
|
526
560
|
});
|
|
527
561
|
}
|
|
@@ -543,7 +577,7 @@ export let useGenerate = (supplier, interrupt) => {
|
|
|
543
577
|
}
|
|
544
578
|
}
|
|
545
579
|
catch (error) {
|
|
546
|
-
|
|
580
|
+
throw error;
|
|
547
581
|
}
|
|
548
582
|
});
|
|
549
583
|
}
|
|
@@ -582,7 +616,7 @@ export let useInterval = (period, delay = 0) => {
|
|
|
582
616
|
}
|
|
583
617
|
}
|
|
584
618
|
catch (error) {
|
|
585
|
-
|
|
619
|
+
throw error;
|
|
586
620
|
}
|
|
587
621
|
});
|
|
588
622
|
}
|
|
@@ -594,7 +628,7 @@ export let useIterate = (generator) => {
|
|
|
594
628
|
return new SynchronousSemantic(generator);
|
|
595
629
|
}
|
|
596
630
|
catch (error) {
|
|
597
|
-
|
|
631
|
+
throw error;
|
|
598
632
|
}
|
|
599
633
|
}
|
|
600
634
|
throw new TypeError("Invalid arguments.");
|
|
@@ -609,11 +643,11 @@ export let usePromise = (promise) => {
|
|
|
609
643
|
}
|
|
610
644
|
accept(value, 0n);
|
|
611
645
|
}).catch((error) => {
|
|
612
|
-
|
|
646
|
+
throw error;
|
|
613
647
|
});
|
|
614
648
|
}
|
|
615
649
|
catch (error) {
|
|
616
|
-
|
|
650
|
+
throw error;
|
|
617
651
|
}
|
|
618
652
|
});
|
|
619
653
|
}
|
|
@@ -636,7 +670,7 @@ export let useOf = (...target) => {
|
|
|
636
670
|
}
|
|
637
671
|
}
|
|
638
672
|
catch (error) {
|
|
639
|
-
|
|
673
|
+
throw error;
|
|
640
674
|
}
|
|
641
675
|
});
|
|
642
676
|
}
|
|
@@ -661,7 +695,7 @@ export let useRange = (start, end, step = (isNumber(start) && isNumber(end) ? 1
|
|
|
661
695
|
}
|
|
662
696
|
}
|
|
663
697
|
catch (error) {
|
|
664
|
-
|
|
698
|
+
throw error;
|
|
665
699
|
}
|
|
666
700
|
});
|
|
667
701
|
}
|
|
@@ -679,13 +713,49 @@ export let useRange = (start, end, step = (isNumber(start) && isNumber(end) ? 1
|
|
|
679
713
|
}
|
|
680
714
|
}
|
|
681
715
|
catch (error) {
|
|
682
|
-
|
|
716
|
+
throw error;
|
|
683
717
|
}
|
|
684
718
|
});
|
|
685
719
|
}
|
|
686
720
|
throw new TypeError("Invalid arguments.");
|
|
687
721
|
};
|
|
688
722
|
;
|
|
723
|
+
export let useText = (argument1, argument2, argument3) => {
|
|
724
|
+
if (isString(argument1)) {
|
|
725
|
+
if (isNumber(argument2) || isBigInt(argument2)) {
|
|
726
|
+
let start = useToNumber(argument2);
|
|
727
|
+
if (isNumber(argument3) || isBigInt(argument3)) {
|
|
728
|
+
let end = useToNumber(argument3);
|
|
729
|
+
let characters = [...(argument1.substring(start, end))];
|
|
730
|
+
return new SynchronousSemantic((accept, interrupt) => {
|
|
731
|
+
let index = 0n;
|
|
732
|
+
for (let character of characters) {
|
|
733
|
+
if (interrupt(character, index)) {
|
|
734
|
+
break;
|
|
735
|
+
}
|
|
736
|
+
accept(character, index);
|
|
737
|
+
index++;
|
|
738
|
+
}
|
|
739
|
+
});
|
|
740
|
+
}
|
|
741
|
+
else {
|
|
742
|
+
let characters = [...(argument1.substring(start))];
|
|
743
|
+
return new SynchronousSemantic((accept, interrupt) => {
|
|
744
|
+
let index = 0n;
|
|
745
|
+
for (let character of characters) {
|
|
746
|
+
if (interrupt(character, index)) {
|
|
747
|
+
break;
|
|
748
|
+
}
|
|
749
|
+
accept(character, index);
|
|
750
|
+
index++;
|
|
751
|
+
}
|
|
752
|
+
});
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
throw new TypeError("Invalid arguments.");
|
|
757
|
+
};
|
|
758
|
+
;
|
|
689
759
|
;
|
|
690
760
|
export let useWebSocket = (argument1, argument2, argument3) => {
|
|
691
761
|
let debounce = 0;
|
|
@@ -862,6 +932,7 @@ export let useWindow = (argument1, argument2 = {}) => {
|
|
|
862
932
|
let timeOut = null;
|
|
863
933
|
let index = 0n;
|
|
864
934
|
let activeCount = keys.size;
|
|
935
|
+
let listeners = new Map();
|
|
865
936
|
let until = new Promise(resolve => {
|
|
866
937
|
for (let key of keys) {
|
|
867
938
|
if (!isString(key))
|
|
@@ -885,6 +956,10 @@ export let useWindow = (argument1, argument2 = {}) => {
|
|
|
885
956
|
let handleEvent = (event, currentKey) => {
|
|
886
957
|
if (interrupt(event, index)) {
|
|
887
958
|
window.removeEventListener(currentKey, listener);
|
|
959
|
+
for (let [k, l] of listeners) {
|
|
960
|
+
window.removeEventListener(k, l);
|
|
961
|
+
}
|
|
962
|
+
listeners.clear();
|
|
888
963
|
if (--activeCount === 0) {
|
|
889
964
|
resolve();
|
|
890
965
|
}
|
|
@@ -894,6 +969,7 @@ export let useWindow = (argument1, argument2 = {}) => {
|
|
|
894
969
|
index++;
|
|
895
970
|
};
|
|
896
971
|
window.addEventListener(key, listener);
|
|
972
|
+
listeners.set(key, listener);
|
|
897
973
|
}
|
|
898
974
|
});
|
|
899
975
|
await until;
|
package/dist/hook.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DeepPropertyKey, type DeepPropertyValue } from "./utility";
|
|
2
|
-
import type { Comparator, SynchronousGenerator } from "./utility";
|
|
2
|
+
import type { BiFunctional, Comparator, SynchronousGenerator } from "./utility";
|
|
3
3
|
export declare let useCompare: <T>(t1: T, t2: T) => number;
|
|
4
4
|
interface UseRandom {
|
|
5
5
|
<N extends number | bigint>(start: N): N extends number ? number : (N extends bigint ? bigint : never);
|
|
@@ -30,4 +30,9 @@ interface UseArrange {
|
|
|
30
30
|
export declare let useArrange: UseArrange;
|
|
31
31
|
export declare let useToNumber: <T = unknown>(target: T) => number;
|
|
32
32
|
export declare let useToBigInt: <T = unknown>(target: T) => bigint;
|
|
33
|
+
interface UseStringify {
|
|
34
|
+
<T extends object>(target: T): string;
|
|
35
|
+
<T extends object, K extends DeepPropertyKey<T>, V extends DeepPropertyValue<T>>(target: T, callback: BiFunctional<K, V, string>): string;
|
|
36
|
+
}
|
|
37
|
+
export declare let useStringify: UseStringify;
|
|
33
38
|
export {};
|
package/dist/hook.js
CHANGED
|
@@ -246,7 +246,7 @@ export let useToNumber = (target) => {
|
|
|
246
246
|
return 0;
|
|
247
247
|
}
|
|
248
248
|
if (Reflect.has(target, Symbol.toPrimitive)) {
|
|
249
|
-
let resolved = Reflect.apply(Reflect.get(target, Symbol.toPrimitive), target, ["
|
|
249
|
+
let resolved = Reflect.apply(Reflect.get(target, Symbol.toPrimitive), target, ["number"]);
|
|
250
250
|
return isNumber(resolved) ? resolved : 0;
|
|
251
251
|
}
|
|
252
252
|
return 0;
|
|
@@ -257,7 +257,7 @@ export let useToNumber = (target) => {
|
|
|
257
257
|
export let useToBigInt = (target) => {
|
|
258
258
|
switch (typeof target) {
|
|
259
259
|
case "number":
|
|
260
|
-
return isNumber(target) ? BigInt(target) : 0n;
|
|
260
|
+
return isNumber(target) ? BigInt(Math.floor(target)) : 0n;
|
|
261
261
|
case "boolean":
|
|
262
262
|
return target ? 1n : 0n;
|
|
263
263
|
case "string":
|
|
@@ -270,7 +270,7 @@ export let useToBigInt = (target) => {
|
|
|
270
270
|
return 0n;
|
|
271
271
|
}
|
|
272
272
|
if (Reflect.has(target, Symbol.toPrimitive)) {
|
|
273
|
-
let resolved = Reflect.apply(Reflect.get(target, Symbol.toPrimitive), target, ["
|
|
273
|
+
let resolved = Reflect.apply(Reflect.get(target, Symbol.toPrimitive), target, ["bigint"]);
|
|
274
274
|
return isBigInt(resolved) ? resolved : 0n;
|
|
275
275
|
}
|
|
276
276
|
return 0n;
|
|
@@ -278,3 +278,20 @@ export let useToBigInt = (target) => {
|
|
|
278
278
|
return 0n;
|
|
279
279
|
}
|
|
280
280
|
};
|
|
281
|
+
;
|
|
282
|
+
export let useStringify = (target, callback) => {
|
|
283
|
+
let seen = new WeakSet();
|
|
284
|
+
let resolve = isFunction(callback) ? callback : (_key, value) => {
|
|
285
|
+
return JSON.stringify(value);
|
|
286
|
+
};
|
|
287
|
+
return JSON.stringify(target, (key, value) => {
|
|
288
|
+
if (isObject(value)) {
|
|
289
|
+
if (seen.has(value)) {
|
|
290
|
+
return (void 0);
|
|
291
|
+
}
|
|
292
|
+
seen.add(value);
|
|
293
|
+
return resolve(key, value);
|
|
294
|
+
}
|
|
295
|
+
return resolve(key, value);
|
|
296
|
+
});
|
|
297
|
+
};
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { useHTMLElement } from "./factory";
|
|
2
|
+
let input = document.createElement("input");
|
|
3
|
+
input.type = "text";
|
|
4
|
+
input.placeholder = "Enter your name";
|
|
5
|
+
document.body.appendChild(input);
|
|
6
|
+
useHTMLElement(input, ["click", "change"]).peek(console.log).limit(5).toUnordered().log();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Optional } from "../optional";
|
|
2
|
-
import type {
|
|
2
|
+
import type { BiFunctional, BiPredicate, Functional, Predicate, Supplier, TriFunctional, TriPredicate, Consumer, BiConsumer, Comparator, SynchronousGenerator } from "../utility";
|
|
3
3
|
export declare class SynchronousCollector<E, A, R> {
|
|
4
4
|
protected identity: Supplier<A>;
|
|
5
5
|
protected interrupt: Predicate<E> | BiPredicate<E, bigint> | TriPredicate<E, bigint, A>;
|
|
@@ -14,6 +14,10 @@ export declare class SynchronousCollector<E, A, R> {
|
|
|
14
14
|
collect(iterable: Iterable<E>): R;
|
|
15
15
|
collect(start: number, end: number): R;
|
|
16
16
|
collect(start: bigint, end: bigint): R;
|
|
17
|
+
getIdentity(): Supplier<A>;
|
|
18
|
+
getInterrupt(): Predicate<E> | BiPredicate<E, bigint> | TriPredicate<E, bigint, A>;
|
|
19
|
+
getAccumulator(): BiFunctional<A, E, A> | TriFunctional<A, E, bigint, A>;
|
|
20
|
+
getFinisher(): Functional<A, R>;
|
|
17
21
|
static full<E, A, R>(identity: Supplier<A>, accumulator: BiFunctional<A, E, A>, finisher: Functional<A, R>): SynchronousCollector<E, A, R>;
|
|
18
22
|
static full<E, A, R>(identity: Supplier<A>, accumulator: TriFunctional<A, E, bigint, A>, finisher: Functional<A, R>): SynchronousCollector<E, A, R>;
|
|
19
23
|
static shortable<E, A, R>(identity: Supplier<A>, interrupt: Predicate<E>, accumulator: BiFunctional<A, E, A>, finisher: Functional<A, R>): SynchronousCollector<E, A, R>;
|
|
@@ -140,17 +144,17 @@ interface UseSynchronousWrite {
|
|
|
140
144
|
export declare let useSynchronousWrite: UseSynchronousWrite;
|
|
141
145
|
interface UseSynchronousNumericSummate {
|
|
142
146
|
<E>(): SynchronousCollector<E, number, number>;
|
|
143
|
-
<E>(mapper: Functional<E, number>): SynchronousCollector<
|
|
147
|
+
<E>(mapper: Functional<E, number>): SynchronousCollector<number, number, number>;
|
|
144
148
|
}
|
|
145
149
|
export declare let useSynchronousNumericSummate: UseSynchronousNumericSummate;
|
|
146
150
|
interface UseSynchronousBigIntSummate {
|
|
147
151
|
<E>(): SynchronousCollector<E, bigint, bigint>;
|
|
148
|
-
<E>(mapper: Functional<E, bigint>): SynchronousCollector<
|
|
152
|
+
<E>(mapper: Functional<E, bigint>): SynchronousCollector<bigint, bigint, bigint>;
|
|
149
153
|
}
|
|
150
154
|
export declare let useSynchronousBigIntSummate: UseSynchronousBigIntSummate;
|
|
151
155
|
interface UseSynchronousNumericAverage {
|
|
152
156
|
<E>(): SynchronousCollector<E, NumericAverageAccumulator, number>;
|
|
153
|
-
<E>(mapper: Functional<E, number>): SynchronousCollector<
|
|
157
|
+
<E>(mapper: Functional<E, number>): SynchronousCollector<number, NumericAverageAccumulator, number>;
|
|
154
158
|
}
|
|
155
159
|
interface NumericAverageAccumulator {
|
|
156
160
|
summate: number;
|