@magic/types 0.1.32 → 0.1.34

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/README.md CHANGED
@@ -380,6 +380,16 @@ update dependencies
380
380
 
381
381
  - add is.symbol, is.sym and isSymbol functions
382
382
 
383
- ##### 0.1.33 - unreleased
383
+ ##### 0.1.33
384
+
385
+ - is.instance now typeguards
386
+ - update dependencies
387
+
388
+ ##### 0.1.34
389
+
390
+ - add gt, gte, lt, lte and all other numerical value comparators into root, is.gt, is.lt etc.
391
+ - update dependencies
392
+
393
+ ##### 0.1.35 - unreleased
384
394
 
385
395
  ...
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magic/types",
3
- "version": "0.1.32",
3
+ "version": "0.1.34",
4
4
  "author": "Wizards & Witches",
5
5
  "homepage": "https://github.com/magic/types",
6
6
  "license": "AGPL-3.0",
@@ -45,9 +45,9 @@
45
45
  "@magic-modules/pre": "0.0.12",
46
46
  "@magic-themes/docs": "0.0.15",
47
47
  "@magic/core": "0.0.156",
48
- "@magic/format": "0.0.72",
49
- "@magic/test": "0.2.29",
50
- "typescript": "5.9.3"
48
+ "@magic/format": "0.0.73",
49
+ "@magic/test": "0.2.30",
50
+ "typescript": "6.0.3"
51
51
  },
52
52
  "keywords": [
53
53
  "magic",
@@ -61,6 +61,6 @@
61
61
  }
62
62
  ],
63
63
  "dependencies": {
64
- "@types/node": "25.5.0"
64
+ "@types/node": "25.6.0"
65
65
  }
66
66
  }
package/src/fns.js CHANGED
@@ -209,16 +209,16 @@ export const isFalsy = e => !e || isEmpty(e)
209
209
  * @returns {number} - length/size or -1 if unknown
210
210
  */
211
211
  export const getLength = arg => {
212
- if (Array.isArray(arg) || typeof arg === 'string' || isBuffer(arg)) {
212
+ if (isArray(arg) || isString(arg) || isBuffer(arg)) {
213
213
  return arg.length
214
214
  }
215
- if (isInteger(arg)) {
215
+ if (isNumber(arg)) {
216
216
  return arg
217
217
  }
218
- if (arg instanceof Map || arg instanceof Set) {
218
+ if (isInstanceOf(arg, Map) || isInstanceOf(arg, Set)) {
219
219
  return arg.size
220
220
  }
221
- if (arg instanceof RegExp) {
221
+ if (isInstanceOf(arg, RegExp)) {
222
222
  const str = arg.toString()
223
223
  return str === '/(?:)/' ? 0 : str.length - 2 // length of pattern without slashes
224
224
  }
@@ -520,9 +520,10 @@ export const isNone = (arr, t) => !isSome(arr, t)
520
520
 
521
521
  /**
522
522
  * Check if a value is an instance of a given constructor
523
+ * @template T
523
524
  * @param {unknown} e - value to check
524
- * @param {new (...args: any[]) => any} t - constructor function
525
- * @returns {boolean} - true if value is an instance of constructor
525
+ * @param {new (...args: any[]) => T} t - constructor function
526
+ * @returns {e is T} - true if value is an instance of constructor
526
527
  */
527
528
  export const isInstanceOf = (e, t) => (!t ? false : e instanceof t)
528
529
 
package/src/lib.js CHANGED
@@ -59,6 +59,8 @@ const len = ln
59
59
  const count = ln
60
60
 
61
61
  export const is = /** @type {const} */ {
62
+ ...lengthFunctions,
63
+
62
64
  count,
63
65
  length,
64
66
  len,
package/types/fns.d.ts CHANGED
@@ -140,7 +140,7 @@ export function isComparable(a: unknown): a is string | number | boolean
140
140
  export function isEvery<T>(arr: T | T[], t: ((v: T) => boolean) | string): boolean
141
141
  export function isSome<T>(arr: T | T[], t: ((v: T) => boolean) | string): boolean
142
142
  export function isNone<T>(arr: T | T[], t: ((v: T) => boolean) | string): boolean
143
- export function isInstanceOf(e: unknown, t: new (...args: any[]) => any): boolean
143
+ export function isInstanceOf<T>(e: unknown, t: new (...args: any[]) => T): e is T
144
144
  export function isError(e: unknown): e is Error
145
145
  export function isDate(e: unknown): e is Date
146
146
  export function isRegExp(e: unknown): e is RegExp
package/types/index.d.ts CHANGED
@@ -480,9 +480,9 @@ export const is: {
480
480
  all: <T>(arr: T | T[], t: ((v: T) => boolean) | string) => boolean
481
481
  some: <T>(arr: T | T[], t: ((v: T) => boolean) | string) => boolean
482
482
  none: <T>(arr: T | T[], t: ((v: T) => boolean) | string) => boolean
483
- instance: (e: unknown, t: new (...args: any[]) => any) => boolean
484
- instanceof: (e: unknown, t: new (...args: any[]) => any) => boolean
485
- instanceOf: (e: unknown, t: new (...args: any[]) => any) => boolean
483
+ instance: <T>(e: unknown, t: new (...args: any[]) => T) => e is T
484
+ instanceof: <T>(e: unknown, t: new (...args: any[]) => T) => e is T
485
+ instanceOf: <T>(e: unknown, t: new (...args: any[]) => T) => e is T
486
486
  isCase: ((s: unknown, c?: 'up' | 'down') => boolean) & {
487
487
  upper: (s: unknown) => boolean
488
488
  lower: (s: unknown) => boolean
@@ -510,5 +510,245 @@ export const is: {
510
510
  module: (s: unknown) => s is object & {
511
511
  [Symbol.toStringTag]: 'Module'
512
512
  }
513
+ eq: {
514
+ /**
515
+ * @overload
516
+ * @param {unknown} a
517
+ * @param {unknown} b
518
+ * @returns {boolean}
519
+ */
520
+ (a: unknown, b: unknown): boolean
521
+ /**
522
+ * @overload
523
+ * @param {unknown} a
524
+ * @returns {(c: unknown) => boolean}
525
+ */
526
+ (a: unknown): (c: unknown) => boolean
527
+ }
528
+ equal: {
529
+ /**
530
+ * @overload
531
+ * @param {unknown} a
532
+ * @param {unknown} b
533
+ * @returns {boolean}
534
+ */
535
+ (a: unknown, b: unknown): boolean
536
+ /**
537
+ * @overload
538
+ * @param {unknown} a
539
+ * @returns {(c: unknown) => boolean}
540
+ */
541
+ (a: unknown): (c: unknown) => boolean
542
+ }
543
+ gt: {
544
+ /**
545
+ * @overload
546
+ * @param {unknown} a
547
+ * @param {unknown} b
548
+ * @returns {boolean}
549
+ */
550
+ (a: unknown, b: unknown): boolean
551
+ /**
552
+ * @overload
553
+ * @param {unknown} a
554
+ * @returns {(c: unknown) => boolean}
555
+ */
556
+ (a: unknown): (c: unknown) => boolean
557
+ }
558
+ bigger: {
559
+ /**
560
+ * @overload
561
+ * @param {unknown} a
562
+ * @param {unknown} b
563
+ * @returns {boolean}
564
+ */
565
+ (a: unknown, b: unknown): boolean
566
+ /**
567
+ * @overload
568
+ * @param {unknown} a
569
+ * @returns {(c: unknown) => boolean}
570
+ */
571
+ (a: unknown): (c: unknown) => boolean
572
+ }
573
+ biggerequal: {
574
+ /**
575
+ * @overload
576
+ * @param {unknown} a
577
+ * @param {unknown} b
578
+ * @returns {boolean}
579
+ */
580
+ (a: unknown, b: unknown): boolean
581
+ /**
582
+ * @overload
583
+ * @param {unknown} a
584
+ * @returns {(c: unknown) => boolean}
585
+ */
586
+ (a: unknown): (c: unknown) => boolean
587
+ }
588
+ greater: {
589
+ /**
590
+ * @overload
591
+ * @param {unknown} a
592
+ * @param {unknown} b
593
+ * @returns {boolean}
594
+ */
595
+ (a: unknown, b: unknown): boolean
596
+ /**
597
+ * @overload
598
+ * @param {unknown} a
599
+ * @returns {(c: unknown) => boolean}
600
+ */
601
+ (a: unknown): (c: unknown) => boolean
602
+ }
603
+ greaterequal: {
604
+ /**
605
+ * @overload
606
+ * @param {unknown} a
607
+ * @param {unknown} b
608
+ * @returns {boolean}
609
+ */
610
+ (a: unknown, b: unknown): boolean
611
+ /**
612
+ * @overload
613
+ * @param {unknown} a
614
+ * @returns {(c: unknown) => boolean}
615
+ */
616
+ (a: unknown): (c: unknown) => boolean
617
+ }
618
+ gte: {
619
+ /**
620
+ * @overload
621
+ * @param {unknown} a
622
+ * @param {unknown} b
623
+ * @returns {boolean}
624
+ */
625
+ (a: unknown, b: unknown): boolean
626
+ /**
627
+ * @overload
628
+ * @param {unknown} a
629
+ * @returns {(c: unknown) => boolean}
630
+ */
631
+ (a: unknown): (c: unknown) => boolean
632
+ }
633
+ gteq: {
634
+ /**
635
+ * @overload
636
+ * @param {unknown} a
637
+ * @param {unknown} b
638
+ * @returns {boolean}
639
+ */
640
+ (a: unknown, b: unknown): boolean
641
+ /**
642
+ * @overload
643
+ * @param {unknown} a
644
+ * @returns {(c: unknown) => boolean}
645
+ */
646
+ (a: unknown): (c: unknown) => boolean
647
+ }
648
+ lower: {
649
+ /**
650
+ * @overload
651
+ * @param {unknown} a
652
+ * @param {unknown} b
653
+ * @returns {boolean}
654
+ */
655
+ (a: unknown, b: unknown): boolean
656
+ /**
657
+ * @overload
658
+ * @param {unknown} a
659
+ * @returns {(c: unknown) => boolean}
660
+ */
661
+ (a: unknown): (c: unknown) => boolean
662
+ }
663
+ smaller: {
664
+ /**
665
+ * @overload
666
+ * @param {unknown} a
667
+ * @param {unknown} b
668
+ * @returns {boolean}
669
+ */
670
+ (a: unknown, b: unknown): boolean
671
+ /**
672
+ * @overload
673
+ * @param {unknown} a
674
+ * @returns {(c: unknown) => boolean}
675
+ */
676
+ (a: unknown): (c: unknown) => boolean
677
+ }
678
+ lt: {
679
+ /**
680
+ * @overload
681
+ * @param {unknown} a
682
+ * @param {unknown} b
683
+ * @returns {boolean}
684
+ */
685
+ (a: unknown, b: unknown): boolean
686
+ /**
687
+ * @overload
688
+ * @param {unknown} a
689
+ * @returns {(c: unknown) => boolean}
690
+ */
691
+ (a: unknown): (c: unknown) => boolean
692
+ }
693
+ lowerequal: {
694
+ /**
695
+ * @overload
696
+ * @param {unknown} a
697
+ * @param {unknown} b
698
+ * @returns {boolean}
699
+ */
700
+ (a: unknown, b: unknown): boolean
701
+ /**
702
+ * @overload
703
+ * @param {unknown} a
704
+ * @returns {(c: unknown) => boolean}
705
+ */
706
+ (a: unknown): (c: unknown) => boolean
707
+ }
708
+ smallerequal: {
709
+ /**
710
+ * @overload
711
+ * @param {unknown} a
712
+ * @param {unknown} b
713
+ * @returns {boolean}
714
+ */
715
+ (a: unknown, b: unknown): boolean
716
+ /**
717
+ * @overload
718
+ * @param {unknown} a
719
+ * @returns {(c: unknown) => boolean}
720
+ */
721
+ (a: unknown): (c: unknown) => boolean
722
+ }
723
+ lte: {
724
+ /**
725
+ * @overload
726
+ * @param {unknown} a
727
+ * @param {unknown} b
728
+ * @returns {boolean}
729
+ */
730
+ (a: unknown, b: unknown): boolean
731
+ /**
732
+ * @overload
733
+ * @param {unknown} a
734
+ * @returns {(c: unknown) => boolean}
735
+ */
736
+ (a: unknown): (c: unknown) => boolean
737
+ }
738
+ lteq: {
739
+ /**
740
+ * @overload
741
+ * @param {unknown} a
742
+ * @param {unknown} b
743
+ * @returns {boolean}
744
+ */
745
+ (a: unknown, b: unknown): boolean
746
+ /**
747
+ * @overload
748
+ * @param {unknown} a
749
+ * @returns {(c: unknown) => boolean}
750
+ */
751
+ (a: unknown): (c: unknown) => boolean
752
+ }
513
753
  }
514
754
  export default is
package/types/lib.d.ts CHANGED
@@ -478,9 +478,9 @@ export const is: {
478
478
  all: <T>(arr: T | T[], t: ((v: T) => boolean) | string) => boolean
479
479
  some: <T>(arr: T | T[], t: ((v: T) => boolean) | string) => boolean
480
480
  none: <T>(arr: T | T[], t: ((v: T) => boolean) | string) => boolean
481
- instance: (e: unknown, t: new (...args: any[]) => any) => boolean
482
- instanceof: (e: unknown, t: new (...args: any[]) => any) => boolean
483
- instanceOf: (e: unknown, t: new (...args: any[]) => any) => boolean
481
+ instance: <T>(e: unknown, t: new (...args: any[]) => T) => e is T
482
+ instanceof: <T>(e: unknown, t: new (...args: any[]) => T) => e is T
483
+ instanceOf: <T>(e: unknown, t: new (...args: any[]) => T) => e is T
484
484
  isCase: ((s: unknown, c?: 'up' | 'down') => boolean) & {
485
485
  upper: (s: unknown) => boolean
486
486
  lower: (s: unknown) => boolean
@@ -508,6 +508,246 @@ export const is: {
508
508
  module: (s: unknown) => s is object & {
509
509
  [Symbol.toStringTag]: 'Module'
510
510
  }
511
+ eq: {
512
+ /**
513
+ * @overload
514
+ * @param {unknown} a
515
+ * @param {unknown} b
516
+ * @returns {boolean}
517
+ */
518
+ (a: unknown, b: unknown): boolean
519
+ /**
520
+ * @overload
521
+ * @param {unknown} a
522
+ * @returns {(c: unknown) => boolean}
523
+ */
524
+ (a: unknown): (c: unknown) => boolean
525
+ }
526
+ equal: {
527
+ /**
528
+ * @overload
529
+ * @param {unknown} a
530
+ * @param {unknown} b
531
+ * @returns {boolean}
532
+ */
533
+ (a: unknown, b: unknown): boolean
534
+ /**
535
+ * @overload
536
+ * @param {unknown} a
537
+ * @returns {(c: unknown) => boolean}
538
+ */
539
+ (a: unknown): (c: unknown) => boolean
540
+ }
541
+ gt: {
542
+ /**
543
+ * @overload
544
+ * @param {unknown} a
545
+ * @param {unknown} b
546
+ * @returns {boolean}
547
+ */
548
+ (a: unknown, b: unknown): boolean
549
+ /**
550
+ * @overload
551
+ * @param {unknown} a
552
+ * @returns {(c: unknown) => boolean}
553
+ */
554
+ (a: unknown): (c: unknown) => boolean
555
+ }
556
+ bigger: {
557
+ /**
558
+ * @overload
559
+ * @param {unknown} a
560
+ * @param {unknown} b
561
+ * @returns {boolean}
562
+ */
563
+ (a: unknown, b: unknown): boolean
564
+ /**
565
+ * @overload
566
+ * @param {unknown} a
567
+ * @returns {(c: unknown) => boolean}
568
+ */
569
+ (a: unknown): (c: unknown) => boolean
570
+ }
571
+ biggerequal: {
572
+ /**
573
+ * @overload
574
+ * @param {unknown} a
575
+ * @param {unknown} b
576
+ * @returns {boolean}
577
+ */
578
+ (a: unknown, b: unknown): boolean
579
+ /**
580
+ * @overload
581
+ * @param {unknown} a
582
+ * @returns {(c: unknown) => boolean}
583
+ */
584
+ (a: unknown): (c: unknown) => boolean
585
+ }
586
+ greater: {
587
+ /**
588
+ * @overload
589
+ * @param {unknown} a
590
+ * @param {unknown} b
591
+ * @returns {boolean}
592
+ */
593
+ (a: unknown, b: unknown): boolean
594
+ /**
595
+ * @overload
596
+ * @param {unknown} a
597
+ * @returns {(c: unknown) => boolean}
598
+ */
599
+ (a: unknown): (c: unknown) => boolean
600
+ }
601
+ greaterequal: {
602
+ /**
603
+ * @overload
604
+ * @param {unknown} a
605
+ * @param {unknown} b
606
+ * @returns {boolean}
607
+ */
608
+ (a: unknown, b: unknown): boolean
609
+ /**
610
+ * @overload
611
+ * @param {unknown} a
612
+ * @returns {(c: unknown) => boolean}
613
+ */
614
+ (a: unknown): (c: unknown) => boolean
615
+ }
616
+ gte: {
617
+ /**
618
+ * @overload
619
+ * @param {unknown} a
620
+ * @param {unknown} b
621
+ * @returns {boolean}
622
+ */
623
+ (a: unknown, b: unknown): boolean
624
+ /**
625
+ * @overload
626
+ * @param {unknown} a
627
+ * @returns {(c: unknown) => boolean}
628
+ */
629
+ (a: unknown): (c: unknown) => boolean
630
+ }
631
+ gteq: {
632
+ /**
633
+ * @overload
634
+ * @param {unknown} a
635
+ * @param {unknown} b
636
+ * @returns {boolean}
637
+ */
638
+ (a: unknown, b: unknown): boolean
639
+ /**
640
+ * @overload
641
+ * @param {unknown} a
642
+ * @returns {(c: unknown) => boolean}
643
+ */
644
+ (a: unknown): (c: unknown) => boolean
645
+ }
646
+ lower: {
647
+ /**
648
+ * @overload
649
+ * @param {unknown} a
650
+ * @param {unknown} b
651
+ * @returns {boolean}
652
+ */
653
+ (a: unknown, b: unknown): boolean
654
+ /**
655
+ * @overload
656
+ * @param {unknown} a
657
+ * @returns {(c: unknown) => boolean}
658
+ */
659
+ (a: unknown): (c: unknown) => boolean
660
+ }
661
+ smaller: {
662
+ /**
663
+ * @overload
664
+ * @param {unknown} a
665
+ * @param {unknown} b
666
+ * @returns {boolean}
667
+ */
668
+ (a: unknown, b: unknown): boolean
669
+ /**
670
+ * @overload
671
+ * @param {unknown} a
672
+ * @returns {(c: unknown) => boolean}
673
+ */
674
+ (a: unknown): (c: unknown) => boolean
675
+ }
676
+ lt: {
677
+ /**
678
+ * @overload
679
+ * @param {unknown} a
680
+ * @param {unknown} b
681
+ * @returns {boolean}
682
+ */
683
+ (a: unknown, b: unknown): boolean
684
+ /**
685
+ * @overload
686
+ * @param {unknown} a
687
+ * @returns {(c: unknown) => boolean}
688
+ */
689
+ (a: unknown): (c: unknown) => boolean
690
+ }
691
+ lowerequal: {
692
+ /**
693
+ * @overload
694
+ * @param {unknown} a
695
+ * @param {unknown} b
696
+ * @returns {boolean}
697
+ */
698
+ (a: unknown, b: unknown): boolean
699
+ /**
700
+ * @overload
701
+ * @param {unknown} a
702
+ * @returns {(c: unknown) => boolean}
703
+ */
704
+ (a: unknown): (c: unknown) => boolean
705
+ }
706
+ smallerequal: {
707
+ /**
708
+ * @overload
709
+ * @param {unknown} a
710
+ * @param {unknown} b
711
+ * @returns {boolean}
712
+ */
713
+ (a: unknown, b: unknown): boolean
714
+ /**
715
+ * @overload
716
+ * @param {unknown} a
717
+ * @returns {(c: unknown) => boolean}
718
+ */
719
+ (a: unknown): (c: unknown) => boolean
720
+ }
721
+ lte: {
722
+ /**
723
+ * @overload
724
+ * @param {unknown} a
725
+ * @param {unknown} b
726
+ * @returns {boolean}
727
+ */
728
+ (a: unknown, b: unknown): boolean
729
+ /**
730
+ * @overload
731
+ * @param {unknown} a
732
+ * @returns {(c: unknown) => boolean}
733
+ */
734
+ (a: unknown): (c: unknown) => boolean
735
+ }
736
+ lteq: {
737
+ /**
738
+ * @overload
739
+ * @param {unknown} a
740
+ * @param {unknown} b
741
+ * @returns {boolean}
742
+ */
743
+ (a: unknown, b: unknown): boolean
744
+ /**
745
+ * @overload
746
+ * @param {unknown} a
747
+ * @returns {(c: unknown) => boolean}
748
+ */
749
+ (a: unknown): (c: unknown) => boolean
750
+ }
511
751
  }
512
752
  export default is
513
753
  export type LengthComparison = typeof fns.isLengthEqual