porffor 0.2.0-c1ed50d → 0.2.0-c56b8bf

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.
@@ -582,153 +582,789 @@ export const ___date_prototype_getDate = (_this: Date) => {
582
582
  };
583
583
 
584
584
  // 21.4.4.3 Date.prototype.getDay ()
585
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getday
586
+ export const ___date_prototype_getDay = (_this: Date) => {
587
+ // 1. Let dateObject be the this value.
588
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
589
+ // 3. Let t be dateObject.[[DateValue]].
590
+ const t: number = __Porffor_date_read(_this);
585
591
 
592
+ // 4. If t is NaN, return NaN.
593
+ if (Number.isNaN(t)) return NaN;
586
594
 
587
- // 1. Let dateObject be the this value.
588
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
589
- // 3. Let t be dateObject.[[DateValue]].
590
- // 4. If t is NaN, return NaN.
591
- // 5. Return WeekDay(LocalTime(t)).
595
+ // 5. Return WeekDay(LocalTime(t)).
596
+ return __ecma262_WeekDay(__ecma262_LocalTime(t));
597
+ };
592
598
 
593
599
  // 21.4.4.4 Date.prototype.getFullYear ()
600
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getfullyear
601
+ export const ___date_prototype_getFullYear = (_this: Date) => {
602
+ // 1. Let dateObject be the this value.
603
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
604
+ // 3. Let t be dateObject.[[DateValue]].
605
+ const t: number = __Porffor_date_read(_this);
594
606
 
607
+ // 4. If t is NaN, return NaN.
608
+ if (Number.isNaN(t)) return NaN;
595
609
 
596
- // 1. Let dateObject be the this value.
597
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
598
- // 3. Let t be dateObject.[[DateValue]].
599
- // 4. If t is NaN, return NaN.
600
- // 5. Return YearFromTime(LocalTime(t)).
610
+ // 5. Return YearFromTime(LocalTime(t)).
611
+ return __ecma262_YearFromTime(__ecma262_LocalTime(t));
612
+ };
601
613
 
602
614
  // 21.4.4.5 Date.prototype.getHours ()
615
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.gethours
616
+ export const ___date_prototype_getHours = (_this: Date) => {
617
+ // 1. Let dateObject be the this value.
618
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
619
+ // 3. Let t be dateObject.[[DateValue]].
620
+ const t: number = __Porffor_date_read(_this);
603
621
 
622
+ // 4. If t is NaN, return NaN.
623
+ if (Number.isNaN(t)) return NaN;
604
624
 
605
- // 1. Let dateObject be the this value.
606
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
607
- // 3. Let t be dateObject.[[DateValue]].
608
- // 4. If t is NaN, return NaN.
609
- // 5. Return HourFromTime(LocalTime(t)).
625
+ // 5. Return HourFromTime(LocalTime(t)).
626
+ return __ecma262_HourFromTime(__ecma262_LocalTime(t));
627
+ };
610
628
 
611
629
  // 21.4.4.6 Date.prototype.getMilliseconds ()
630
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getmilliseconds
631
+ export const ___date_prototype_getMilliseconds = (_this: Date) => {
632
+ // 1. Let dateObject be the this value.
633
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
634
+ // 3. Let t be dateObject.[[DateValue]].
635
+ const t: number = __Porffor_date_read(_this);
612
636
 
637
+ // 4. If t is NaN, return NaN.
638
+ if (Number.isNaN(t)) return NaN;
613
639
 
614
- // 1. Let dateObject be the this value.
615
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
616
- // 3. Let t be dateObject.[[DateValue]].
617
- // 4. If t is NaN, return NaN.
618
- // 5. Return msFromTime(LocalTime(t)).
640
+ // 5. Return msFromTime(LocalTime(t)).
641
+ return __ecma262_msFromTime(__ecma262_LocalTime(t));
642
+ };
619
643
 
620
644
  // 21.4.4.7 Date.prototype.getMinutes ()
645
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getminutes
646
+ export const ___date_prototype_getMinutes = (_this: Date) => {
647
+ // 1. Let dateObject be the this value.
648
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
649
+ // 3. Let t be dateObject.[[DateValue]].
650
+ const t: number = __Porffor_date_read(_this);
621
651
 
652
+ // 4. If t is NaN, return NaN.
653
+ if (Number.isNaN(t)) return NaN;
622
654
 
623
- // 1. Let dateObject be the this value.
624
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
625
- // 3. Let t be dateObject.[[DateValue]].
626
- // 4. If t is NaN, return NaN.
627
- // 5. Return MinFromTime(LocalTime(t)).
655
+ // 5. Return MinFromTime(LocalTime(t)).
656
+ return __ecma262_MinFromTime(__ecma262_LocalTime(t));
657
+ };
628
658
 
629
659
  // 21.4.4.8 Date.prototype.getMonth ()
660
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getmonth
661
+ export const ___date_prototype_getMonth = (_this: Date) => {
662
+ // 1. Let dateObject be the this value.
663
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
664
+ // 3. Let t be dateObject.[[DateValue]].
665
+ const t: number = __Porffor_date_read(_this);
630
666
 
667
+ // 4. If t is NaN, return NaN.
668
+ if (Number.isNaN(t)) return NaN;
631
669
 
632
- // 1. Let dateObject be the this value.
633
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
634
- // 3. Let t be dateObject.[[DateValue]].
635
- // 4. If t is NaN, return NaN.
636
- // 5. Return MonthFromTime(LocalTime(t)).
670
+ // 5. Return MonthFromTime(LocalTime(t)).
671
+ return __ecma262_MonthFromTime(__ecma262_LocalTime(t));
672
+ };
637
673
 
638
674
  // 21.4.4.9 Date.prototype.getSeconds ()
675
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getseconds
676
+ export const ___date_prototype_getSeconds = (_this: Date) => {
677
+ // 1. Let dateObject be the this value.
678
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
679
+ // 3. Let t be dateObject.[[DateValue]].
680
+ const t: number = __Porffor_date_read(_this);
639
681
 
682
+ // 4. If t is NaN, return NaN.
683
+ if (Number.isNaN(t)) return NaN;
640
684
 
641
- // 1. Let dateObject be the this value.
642
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
643
- // 3. Let t be dateObject.[[DateValue]].
644
- // 4. If t is NaN, return NaN.
645
- // 5. Return SecFromTime(LocalTime(t)).
685
+ // 5. Return SecFromTime(LocalTime(t)).
686
+ return __ecma262_SecFromTime(__ecma262_LocalTime(t));
687
+ };
646
688
 
647
689
  // 21.4.4.10 Date.prototype.getTime ()
648
-
649
-
650
- // 1. Let dateObject be the this value.
651
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
652
- // 3. Return dateObject.[[DateValue]].
690
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.gettime
691
+ export const ___date_prototype_getTime = (_this: Date) => {
692
+ // 1. Let dateObject be the this value.
693
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
694
+ // 3. Return dateObject.[[DateValue]].
695
+ return __Porffor_date_read(_this);
696
+ };
653
697
 
654
698
  // 21.4.4.11 Date.prototype.getTimezoneOffset ()
699
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.gettimezoneoffset
700
+ export const ___date_prototype_getTimezoneOffset = (_this: Date) => {
701
+ // 1. Let dateObject be the this value.
702
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
703
+ // 3. Let t be dateObject.[[DateValue]].
704
+ const t: number = __Porffor_date_read(_this);
655
705
 
706
+ // 4. If t is NaN, return NaN.
707
+ if (Number.isNaN(t)) return NaN;
656
708
 
657
- // 1. Let dateObject be the this value.
658
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
659
- // 3. Let t be dateObject.[[DateValue]].
660
- // 4. If t is NaN, return NaN.
661
- // 5. Return (t - LocalTime(t)) / msPerMinute.
709
+ // 5. Return (t - LocalTime(t)) / msPerMinute.
710
+ return (t - __ecma262_LocalTime(t)) / 60000;
711
+ };
662
712
 
663
713
  // 21.4.4.12 Date.prototype.getUTCDate ()
714
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcdate
715
+ export const ___date_prototype_getUTCDate = (_this: Date) => {
716
+ // 1. Let dateObject be the this value.
717
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
718
+ // 3. Let t be dateObject.[[DateValue]].
719
+ const t: number = __Porffor_date_read(_this);
664
720
 
721
+ // 4. If t is NaN, return NaN.
722
+ if (Number.isNaN(t)) return NaN;
665
723
 
666
- // 1. Let dateObject be the this value.
667
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
668
- // 3. Let t be dateObject.[[DateValue]].
669
- // 4. If t is NaN, return NaN.
670
- // 5. Return DateFromTime(t).
724
+ // 5. Return DateFromTime(t).
725
+ return __ecma262_DateFromTime(t);
726
+ };
671
727
 
672
728
  // 21.4.4.13 Date.prototype.getUTCDay ()
729
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcday
730
+ export const ___date_prototype_getUTCDay = (_this: Date) => {
731
+ // 1. Let dateObject be the this value.
732
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
733
+ // 3. Let t be dateObject.[[DateValue]].
734
+ const t: number = __Porffor_date_read(_this);
673
735
 
736
+ // 4. If t is NaN, return NaN.
737
+ if (Number.isNaN(t)) return NaN;
674
738
 
675
- // 1. Let dateObject be the this value.
676
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
677
- // 3. Let t be dateObject.[[DateValue]].
678
- // 4. If t is NaN, return NaN.
679
- // 5. Return WeekDay(t).
739
+ // 5. Return WeekDay(t).
740
+ return __ecma262_WeekDay(t);
741
+ };
680
742
 
681
743
  // 21.4.4.14 Date.prototype.getUTCFullYear ()
744
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcfullyear
745
+ export const ___date_prototype_getUTCFullYear = (_this: Date) => {
746
+ // 1. Let dateObject be the this value.
747
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
748
+ // 3. Let t be dateObject.[[DateValue]].
749
+ const t: number = __Porffor_date_read(_this);
682
750
 
751
+ // 4. If t is NaN, return NaN.
752
+ if (Number.isNaN(t)) return NaN;
683
753
 
684
- // 1. Let dateObject be the this value.
685
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
686
- // 3. Let t be dateObject.[[DateValue]].
687
- // 4. If t is NaN, return NaN.
688
- // 5. Return YearFromTime(t).
754
+ // 5. Return YearFromTime(t).
755
+ return __ecma262_YearFromTime(t);
756
+ };
689
757
 
690
758
  // 21.4.4.15 Date.prototype.getUTCHours ()
759
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutchours
760
+ export const ___date_prototype_getUTCHours = (_this: Date) => {
761
+ // 1. Let dateObject be the this value.
762
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
763
+ // 3. Let t be dateObject.[[DateValue]].
764
+ const t: number = __Porffor_date_read(_this);
691
765
 
766
+ // 4. If t is NaN, return NaN.
767
+ if (Number.isNaN(t)) return NaN;
692
768
 
693
- // 1. Let dateObject be the this value.
694
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
695
- // 3. Let t be dateObject.[[DateValue]].
696
- // 4. If t is NaN, return NaN.
697
- // 5. Return HourFromTime(t).
769
+ // 5. Return HourFromTime(t).
770
+ return __ecma262_HourFromTime(t);
771
+ };
698
772
 
699
773
  // 21.4.4.16 Date.prototype.getUTCMilliseconds ()
774
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcmilliseconds
775
+ export const ___date_prototype_getUTCMilliseconds = (_this: Date) => {
776
+ // 1. Let dateObject be the this value.
777
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
778
+ // 3. Let t be dateObject.[[DateValue]].
779
+ const t: number = __Porffor_date_read(_this);
700
780
 
781
+ // 4. If t is NaN, return NaN.
782
+ if (Number.isNaN(t)) return NaN;
701
783
 
702
- // 1. Let dateObject be the this value.
703
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
704
- // 3. Let t be dateObject.[[DateValue]].
705
- // 4. If t is NaN, return NaN.
706
- // 5. Return msFromTime(t).
784
+ // 5. Return msFromTime(t).
785
+ return __ecma262_msFromTime(t);
786
+ };
707
787
 
708
788
  // 21.4.4.17 Date.prototype.getUTCMinutes ()
789
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcminutes
790
+ export const ___date_prototype_getUTCMinutes = (_this: Date) => {
791
+ // 1. Let dateObject be the this value.
792
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
793
+ // 3. Let t be dateObject.[[DateValue]].
794
+ const t: number = __Porffor_date_read(_this);
709
795
 
796
+ // 4. If t is NaN, return NaN.
797
+ if (Number.isNaN(t)) return NaN;
710
798
 
711
- // 1. Let dateObject be the this value.
712
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
713
- // 3. Let t be dateObject.[[DateValue]].
714
- // 4. If t is NaN, return NaN.
715
- // 5. Return MinFromTime(t).
799
+ // 5. Return MinFromTime(t).
800
+ return __ecma262_MinFromTime(t);
801
+ };
716
802
 
717
803
  // 21.4.4.18 Date.prototype.getUTCMonth ()
804
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcmonth
805
+ export const ___date_prototype_getUTCMonth = (_this: Date) => {
806
+ // 1. Let dateObject be the this value.
807
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
808
+ // 3. Let t be dateObject.[[DateValue]].
809
+ const t: number = __Porffor_date_read(_this);
718
810
 
811
+ // 4. If t is NaN, return NaN.
812
+ if (Number.isNaN(t)) return NaN;
719
813
 
720
- // 1. Let dateObject be the this value.
721
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
722
- // 3. Let t be dateObject.[[DateValue]].
723
- // 4. If t is NaN, return NaN.
724
- // 5. Return MonthFromTime(t).
814
+ // 5. Return MonthFromTime(t).
815
+ return __ecma262_MonthFromTime(t);
816
+ };
725
817
 
726
818
  // 21.4.4.19 Date.prototype.getUTCSeconds ()
819
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcseconds
820
+ export const ___date_prototype_getUTCSeconds = (_this: Date) => {
821
+ // 1. Let dateObject be the this value.
822
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
823
+ // 3. Let t be dateObject.[[DateValue]].
824
+ const t: number = __Porffor_date_read(_this);
825
+
826
+ // 4. If t is NaN, return NaN.
827
+ if (Number.isNaN(t)) return NaN;
828
+
829
+ // 5. Return SecFromTime(t).
830
+ return __ecma262_SecFromTime(t);
831
+ };
832
+
833
+
834
+ // 21.4.4.20 Date.prototype.setDate (date)
835
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setdate
836
+ export const ___date_prototype_setDate = (_this: Date, date: any) => {
837
+ // 1. Let dateObject be the this value.
838
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
839
+ // 3. Let t be dateObject.[[DateValue]].
840
+ let t: number = __Porffor_date_read(_this);
841
+
842
+ // 4. Let dt be ? ToNumber(date).
843
+ const dt: number = Number(date);
844
+
845
+ // 5. If t is NaN, return NaN.
846
+ if (Number.isNaN(t)) return NaN;
847
+
848
+ // 6. Set t to LocalTime(t).
849
+ t = __ecma262_LocalTime(t);
850
+
851
+ // 7. Let newDate be MakeDate(MakeDay(YearFromTime(t), MonthFromTime(t), dt), TimeWithinDay(t)).
852
+ const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(__ecma262_YearFromTime(t), __ecma262_MonthFromTime(t), dt), __ecma262_TimeWithinDay(t));
853
+
854
+ // 8. Let u be TimeClip(UTC(newDate)).
855
+ const u: number = __ecma262_TimeClip(__ecma262_UTC(newDate));
856
+
857
+ // 9. Set dateObject.[[DateValue]] to u.
858
+ __Porffor_date_write(_this, u);
859
+
860
+ // 10. Return u.
861
+ return u;
862
+ };
863
+
864
+ // 21.4.4.21 Date.prototype.setFullYear (year [, month [, date ]])
865
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setfullyear
866
+ export const ___date_prototype_setFullYear = (_this: Date, year: any, month: any, date: any) => {
867
+ // 1. Let dateObject be the this value.
868
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
869
+ // 3. Let t be dateObject.[[DateValue]].
870
+ let t: number = __Porffor_date_read(_this);
871
+
872
+ // 4. Let y be ? ToNumber(year).
873
+ const y: number = Number(year);
874
+
875
+ // 5. If t is NaN, set t to +0𝔽; otherwise, set t to LocalTime(t).
876
+ if (Number.isNaN(t)) t = 0;
877
+ else t = __ecma262_LocalTime(t);
878
+
879
+ // 6. If month is not present, let m be MonthFromTime(t); otherwise, let m be ? ToNumber(month).
880
+ let m: number;
881
+ if (Porffor.rawType(month) == Porffor.TYPES.undefined) m = __ecma262_MonthFromTime(t);
882
+ else m = Number(month);
883
+
884
+ // 7. If date is not present, let dt be DateFromTime(t); otherwise, let dt be ? ToNumber(date).
885
+ let dt: number;
886
+ if (Porffor.rawType(date) == Porffor.TYPES.undefined) dt = __ecma262_DateFromTime(t);
887
+ else dt = Number(date);
888
+
889
+ // 8. Let newDate be MakeDate(MakeDay(y, m, dt), TimeWithinDay(t)).
890
+ const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(y, m, dt), __ecma262_TimeWithinDay(t));
891
+
892
+ // 9. Let u be TimeClip(UTC(newDate)).
893
+ const u: number = __ecma262_TimeClip(__ecma262_UTC(newDate));
894
+
895
+ // 10. Set dateObject.[[DateValue]] to u.
896
+ __Porffor_date_write(_this, u);
897
+
898
+ // 11. Return u.
899
+ return u;
900
+ };
901
+
902
+ // 21.4.4.22 Date.prototype.setHours (hour [, min [, sec [, ms ]]])
903
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.sethours
904
+ export const ___date_prototype_setHours = (_this: Date, hour: any, min: any, sec: any, ms: any) => {
905
+ // 1. Let dateObject be the this value.
906
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
907
+ // 3. Let t be dateObject.[[DateValue]].
908
+ let t: number = __Porffor_date_read(_this);
909
+
910
+ // 4. Let h be ? ToNumber(hour).
911
+ const h: number = Number(hour);
912
+
913
+ // we reorder the spec steps in this func for easier arg handling
914
+
915
+ // 8. If t is NaN, return NaN.
916
+ if (Number.isNaN(t)) return NaN;
917
+
918
+ // 9. Set t to LocalTime(t).
919
+ t = __ecma262_LocalTime(t);
920
+
921
+ // 5. If min is present, let m be ? ToNumber(min).
922
+ let m: number;
923
+ if (Porffor.rawType(min) != Porffor.TYPES.undefined) m = Number(min);
924
+ // 10. If min is not present, let m be MinFromTime(t).
925
+ else m = __ecma262_MinFromTime(t);
926
+
927
+ // 6. If sec is present, let s be ? ToNumber(sec).
928
+ let s: number;
929
+ if (Porffor.rawType(sec) != Porffor.TYPES.undefined) s = Number(sec);
930
+ // 11. If sec is not present, let s be SecFromTime(t).
931
+ else s = __ecma262_SecFromTime(t);
932
+
933
+ // 7. If ms is present, let milli be ? ToNumber(ms).
934
+ let milli: number;
935
+ if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
936
+ // 12. If ms is not present, let milli be msFromTime(t).
937
+ else milli = __ecma262_msFromTime(t);
938
+
939
+ // 13. Let date be MakeDate(Day(t), MakeTime(h, m, s, milli)).
940
+ const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(h, m, s, milli));
941
+
942
+ // 14. Let u be TimeClip(UTC(date)).
943
+ const u: number = __ecma262_TimeClip(__ecma262_UTC(date));
944
+
945
+ // 15. Set dateObject.[[DateValue]] to u.
946
+ __Porffor_date_write(_this, u);
947
+
948
+ // 16. Return u.
949
+ return u;
950
+ };
951
+
952
+ // 21.4.4.23 Date.prototype.setMilliseconds (ms)
953
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setmilliseconds
954
+ export const ___date_prototype_setMilliseconds = (_this: Date, ms: any) => {
955
+ // 1. Let dateObject be the this value.
956
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
957
+ // 3. Let t be dateObject.[[DateValue]].
958
+ let t: number = __Porffor_date_read(_this);
959
+
960
+ // ignore old-style spec setting arg instead of having let
961
+ // 4. Set ms to ? ToNumber(ms).
962
+ const milli: number = Number(ms);
963
+
964
+ // 5. If t is NaN, return NaN.
965
+ if (Number.isNaN(t)) return NaN;
966
+
967
+ // 6. Set t to LocalTime(t).
968
+ t = __ecma262_LocalTime(t);
969
+
970
+ // 7. Let time be MakeTime(HourFromTime(t), MinFromTime(t), SecFromTime(t), ms).
971
+ const time: number = __ecma262_MakeTime(__ecma262_HourFromTime(t), __ecma262_MinFromTime(t), __ecma262_SecFromTime(t), milli);
972
+
973
+ // 8. Let u be TimeClip(UTC(MakeDate(Day(t), time))).
974
+ const u: number = __ecma262_TimeClip(__ecma262_UTC(__ecma262_MakeDate(__ecma262_Day(t), time)));
975
+
976
+ // 9. Set dateObject.[[DateValue]] to u.
977
+ __Porffor_date_write(_this, u);
978
+
979
+ // 10. Return u.
980
+ return u;
981
+ };
982
+
983
+ // 21.4.4.24 Date.prototype.setMinutes (min [, sec [, ms ]])
984
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setminutes
985
+ export const ___date_prototype_setMinutes = (_this: Date, min: any, sec: any, ms: any) => {
986
+ // 1. Let dateObject be the this value.
987
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
988
+ // 3. Let t be dateObject.[[DateValue]].
989
+ let t: number = __Porffor_date_read(_this);
990
+
991
+ // 4. Let m be ? ToNumber(min).
992
+ const m: number = Number(min);
993
+
994
+ // we reorder the spec steps in this func for easier arg handling
995
+
996
+ // 7. If t is NaN, return NaN.
997
+ if (Number.isNaN(t)) return NaN;
998
+
999
+ // 8. Set t to LocalTime(t).
1000
+ t = __ecma262_LocalTime(t);
1001
+
1002
+ // 5. If sec is present, let s be ? ToNumber(sec).
1003
+ let s: number;
1004
+ if (Porffor.rawType(sec) != Porffor.TYPES.undefined) s = Number(sec);
1005
+ // 9. If sec is not present, let s be SecFromTime(t).
1006
+ else s = __ecma262_SecFromTime(t);
1007
+
1008
+ // 6. If ms is present, let milli be ? ToNumber(ms).
1009
+ let milli: number;
1010
+ if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
1011
+ // 10. If ms is not present, let milli be msFromTime(t).
1012
+ else milli = __ecma262_msFromTime(t);
1013
+
1014
+ // 11. Let date be MakeDate(Day(t), MakeTime(HourFromTime(t), m, s, milli)).
1015
+ const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(__ecma262_HourFromTime(t), m, s, milli));
1016
+
1017
+ // 12. Let u be TimeClip(UTC(date)).
1018
+ const u: number = __ecma262_TimeClip(__ecma262_UTC(date));
1019
+
1020
+ // 13. Set dateObject.[[DateValue]] to u.
1021
+ __Porffor_date_write(_this, u);
1022
+
1023
+ // 14. Return u.
1024
+ return u;
1025
+ };
1026
+
1027
+ // 21.4.4.25 Date.prototype.setMonth (month [, date ])
1028
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setmonth
1029
+ export const ___date_prototype_setMonth = (_this: Date, month: any, date: any) => {
1030
+ // 1. Let dateObject be the this value.
1031
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1032
+ // 3. Let t be dateObject.[[DateValue]].
1033
+ let t: number = __Porffor_date_read(_this);
1034
+
1035
+ // 4. Let m be ? ToNumber(month).
1036
+ const m: number = Number(month);
1037
+
1038
+ // we reorder the spec steps in this func for easier arg handling
1039
+
1040
+ // 6. If t is NaN, return NaN.
1041
+ if (Number.isNaN(t)) return NaN;
1042
+
1043
+ // 7. Set t to LocalTime(t).
1044
+ t = __ecma262_LocalTime(t);
1045
+
1046
+ // 5. If date is present, let dt be ? ToNumber(date).
1047
+ let dt: number;
1048
+ if (Porffor.rawType(date) != Porffor.TYPES.undefined) dt = Number(date);
1049
+ // 8. If date is not present, let dt be DateFromTime(t).
1050
+ else dt = __ecma262_DateFromTime(t);
1051
+
1052
+ // 9. Let newDate be MakeDate(MakeDay(YearFromTime(t), m, dt), TimeWithinDay(t)).
1053
+ const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(__ecma262_YearFromTime(t), m, dt), __ecma262_TimeWithinDay(t));
1054
+
1055
+ // 10. Let u be TimeClip(UTC(newDate)).
1056
+ const u: number = __ecma262_TimeClip(__ecma262_UTC(newDate));
1057
+
1058
+ // 11. Set dateObject.[[DateValue]] to u.
1059
+ __Porffor_date_write(_this, u);
1060
+
1061
+ // 12. Return u.
1062
+ return u;
1063
+ };
1064
+
1065
+ // 21.4.4.26 Date.prototype.setSeconds (sec [, ms ])
1066
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setseconds
1067
+ export const ___date_prototype_setSeconds = (_this: Date, sec: any, ms: any) => {
1068
+ // 1. Let dateObject be the this value.
1069
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1070
+ // 3. Let t be dateObject.[[DateValue]].
1071
+ let t: number = __Porffor_date_read(_this);
1072
+
1073
+ // 4. Let s be ? ToNumber(sec).
1074
+ const s: number = Number(sec);
1075
+
1076
+ // we reorder the spec steps in this func for easier arg handling
1077
+
1078
+ // 6. If t is NaN, return NaN.
1079
+ if (Number.isNaN(t)) return NaN;
1080
+
1081
+ // 7. Set t to LocalTime(t).
1082
+ t = __ecma262_LocalTime(t);
1083
+
1084
+ // 5. If ms is present, let milli be ? ToNumber(ms).
1085
+ let milli: number;
1086
+ if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
1087
+ // 8. If ms is not present, let milli be msFromTime(t).
1088
+ else milli = __ecma262_msFromTime(t);
1089
+
1090
+ // 9. Let date be MakeDate(Day(t), MakeTime(HourFromTime(t), MinFromTime(t), s, milli)).
1091
+ const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(__ecma262_HourFromTime(t), __ecma262_MinFromTime(t), s, milli));
1092
+
1093
+ // 10. Let u be TimeClip(UTC(date)).
1094
+ const u: number = __ecma262_TimeClip(__ecma262_UTC(date));
1095
+
1096
+ // 11. Set dateObject.[[DateValue]] to u.
1097
+ __Porffor_date_write(_this, u);
1098
+
1099
+ // 12. Return u.
1100
+ return u;
1101
+ };
1102
+
1103
+
1104
+ // 21.4.4.27 Date.prototype.setTime (time)
1105
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.settime
1106
+ export const ___date_prototype_setTime = (_this: Date, time: any) => {
1107
+ // 1. Let dateObject be the this value.
1108
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1109
+ // 3. Let t be ? ToNumber(time).
1110
+ const t: number = Number(time);
1111
+
1112
+ // 4. Let v be TimeClip(t).
1113
+ const v: number = __ecma262_TimeClip(t);
1114
+
1115
+ // 5. Set dateObject.[[DateValue]] to v
1116
+ __Porffor_date_write(_this, v);
1117
+
1118
+ // 6. Return v.
1119
+ return v;
1120
+ };
1121
+
1122
+ // 21.4.4.28 Date.prototype.setUTCDate (date)
1123
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcdate
1124
+ export const ___date_prototype_setUTCDate = (_this: Date, date: any) => {
1125
+ // 1. Let dateObject be the this value.
1126
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1127
+ // 3. Let t be dateObject.[[DateValue]].
1128
+ const t: number = __Porffor_date_read(_this);
1129
+
1130
+ // 4. Let dt be ? ToNumber(date).
1131
+ const dt: number = Number(date);
1132
+
1133
+ // 5. If t is NaN, return NaN.
1134
+ if (Number.isNaN(t)) return NaN;
1135
+
1136
+ // 6. Let newDate be MakeDate(MakeDay(YearFromTime(t), MonthFromTime(t), dt), TimeWithinDay(t)).
1137
+ const newDate = __ecma262_MakeDate(__ecma262_MakeDay(__ecma262_YearFromTime(t), __ecma262_MonthFromTime(t), dt), __ecma262_TimeWithinDay(t));
1138
+
1139
+ // 7. Let v be TimeClip(newDate).
1140
+ const v: number = __ecma262_TimeClip(newDate);
1141
+
1142
+ // 8. Set dateObject.[[DateValue]] to v.
1143
+ __Porffor_date_write(_this, v);
1144
+
1145
+ // 9. Return v.
1146
+ return v;
1147
+ };
1148
+
1149
+ // 21.4.4.29 Date.prototype.setUTCFullYear (year [, month [, date ]])
1150
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcfullyear
1151
+ export const ___date_prototype_setUTCFullYear = (_this: Date, year: any, month: any, date: any) => {
1152
+ // 1. Let dateObject be the this value.
1153
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1154
+ // 3. Let t be dateObject.[[DateValue]].
1155
+ let t: number = __Porffor_date_read(_this);
1156
+
1157
+ // 4. If t is NaN, set t to +0𝔽.
1158
+ if (Number.isNaN(t)) t = 0;
1159
+
1160
+ // 5. Let y be ? ToNumber(year).
1161
+ const y: number = Number(year);
1162
+
1163
+ // 6. If month is not present, let m be MonthFromTime(t); otherwise, let m be ? ToNumber(month).
1164
+ let m: number;
1165
+ if (Porffor.rawType(month) == Porffor.TYPES.undefined) m = __ecma262_MonthFromTime(t);
1166
+ else m = Number(month);
1167
+
1168
+ // 7. If date is not present, let dt be DateFromTime(t); otherwise, let dt be ? ToNumber(date).
1169
+ let dt: number;
1170
+ if (Porffor.rawType(date) == Porffor.TYPES.undefined) dt = __ecma262_DateFromTime(t);
1171
+ else dt = Number(date);
1172
+
1173
+ // 8. Let newDate be MakeDate(MakeDay(y, m, dt), TimeWithinDay(t)).
1174
+ const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(y, m, dt), __ecma262_TimeWithinDay(t));
1175
+
1176
+ // 9. Let v be TimeClip(newDate).
1177
+ const v: number = __ecma262_TimeClip(newDate);
1178
+
1179
+ // 10. Set dateObject.[[DateValue]] to v.
1180
+ __Porffor_date_write(_this, v);
1181
+
1182
+ // 11. Return v.
1183
+ return v;
1184
+ };
1185
+
1186
+ // 21.4.4.30 Date.prototype.setUTCHours (hour [, min [, sec [, ms ]]])
1187
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutchours
1188
+ export const ___date_prototype_setUTCHours = (_this: Date, hour: any, min: any, sec: any, ms: any) => {
1189
+ // 1. Let dateObject be the this value.
1190
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1191
+ // 3. Let t be dateObject.[[DateValue]].
1192
+ let t: number = __Porffor_date_read(_this);
1193
+
1194
+ // 4. Let h be ? ToNumber(hour).
1195
+ const h: number = Number(hour);
1196
+
1197
+ // we reorder the spec steps in this func for easier arg handling
1198
+
1199
+ // 8. If t is NaN, return NaN.
1200
+ if (Number.isNaN(t)) return NaN;
1201
+
1202
+ // 5. If min is present, let m be ? ToNumber(min).
1203
+ let m: number;
1204
+ if (Porffor.rawType(min) != Porffor.TYPES.undefined) m = Number(min);
1205
+ // 9. If min is not present, let m be MinFromTime(t).
1206
+ else m = __ecma262_MinFromTime(t);
1207
+
1208
+ // 6. If sec is present, let s be ? ToNumber(sec).
1209
+ let s: number;
1210
+ if (Porffor.rawType(sec) != Porffor.TYPES.undefined) s = Number(sec);
1211
+ // 10. If sec is not present, let s be SecFromTime(t).
1212
+ else s = __ecma262_SecFromTime(t);
1213
+
1214
+ // 7. If ms is present, let milli be ? ToNumber(ms).
1215
+ let milli: number;
1216
+ if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
1217
+ // 11. If ms is not present, let milli be msFromTime(t).
1218
+ else milli = __ecma262_msFromTime(t);
1219
+
1220
+ // 12. Let date be MakeDate(Day(t), MakeTime(h, m, s, milli)).
1221
+ const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(h, m, s, milli));
1222
+
1223
+ // 13. Let v be TimeClip(date).
1224
+ const v: number = __ecma262_TimeClip(date);
1225
+
1226
+ // 14. Set dateObject.[[DateValue]] to v.
1227
+ __Porffor_date_write(_this, v);
1228
+
1229
+ // 15. Return v.
1230
+ return v;
1231
+ };
1232
+
1233
+ // 21.4.4.31 Date.prototype.setUTCMilliseconds (ms)
1234
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcmilliseconds
1235
+ export const ___date_prototype_setUTCMilliseconds = (_this: Date, ms: any) => {
1236
+ // 1. Let dateObject be the this value.
1237
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1238
+ // 3. Let t be dateObject.[[DateValue]].
1239
+ let t: number = __Porffor_date_read(_this);
1240
+
1241
+ // ignore old-style spec setting arg instead of having let
1242
+ // 4. Set ms to ? ToNumber(ms).
1243
+ const milli: number = Number(ms);
1244
+
1245
+ // 5. If t is NaN, return NaN.
1246
+ if (Number.isNaN(t)) return NaN;
1247
+
1248
+ // 6. Let time be MakeTime(HourFromTime(t), MinFromTime(t), SecFromTime(t), ms).
1249
+ const time: number = __ecma262_MakeTime(__ecma262_HourFromTime(t), __ecma262_MinFromTime(t), __ecma262_SecFromTime(t), milli);
1250
+
1251
+ // 7. Let v be TimeClip(MakeDate(Day(t), time)).
1252
+ const v: number = __ecma262_TimeClip(__ecma262_MakeDate(__ecma262_Day(t), time));
1253
+
1254
+ // 8. Set dateObject.[[DateValue]] to v.
1255
+ __Porffor_date_write(_this, v);
1256
+
1257
+ // 10. Return v.
1258
+ return v;
1259
+ };
1260
+
1261
+ // 21.4.4.32 Date.prototype.setUTCMinutes (min [, sec [, ms ]])
1262
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcminutes
1263
+ export const ___date_prototype_setUTCMinutes = (_this: Date, min: any, sec: any, ms: any) => {
1264
+ // 1. Let dateObject be the this value.
1265
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1266
+ // 3. Let t be dateObject.[[DateValue]].
1267
+ let t: number = __Porffor_date_read(_this);
1268
+
1269
+ // 4. Let m be ? ToNumber(min).
1270
+ const m: number = Number(min);
1271
+
1272
+ // we reorder the spec steps in this func for easier arg handling
1273
+
1274
+ // 7. If t is NaN, return NaN.
1275
+ if (Number.isNaN(t)) return NaN;
1276
+
1277
+ // 5. If sec is present, let s be ? ToNumber(sec).
1278
+ let s: number;
1279
+ if (Porffor.rawType(sec) != Porffor.TYPES.undefined) s = Number(sec);
1280
+ // 8. If sec is not present, let s be SecFromTime(t).
1281
+ else s = __ecma262_SecFromTime(t);
1282
+
1283
+ // 6. If ms is present, let milli be ? ToNumber(ms).
1284
+ let milli: number;
1285
+ if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
1286
+ // 9. If ms is not present, let milli be msFromTime(t).
1287
+ else milli = __ecma262_msFromTime(t);
1288
+
1289
+ // 10. Let date be MakeDate(Day(t), MakeTime(HourFromTime(t), m, s, milli)).
1290
+ const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(__ecma262_HourFromTime(t), m, s, milli));
1291
+
1292
+ // 11. Let v be TimeClip(date).
1293
+ const v: number = __ecma262_TimeClip(date);
1294
+
1295
+ // 12. Set dateObject.[[DateValue]] to v.
1296
+ __Porffor_date_write(_this, v);
1297
+
1298
+ // 13. Return v.
1299
+ return v;
1300
+ };
1301
+
1302
+ // 21.4.4.33 Date.prototype.setUTCMonth (month [, date ])
1303
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcmonth
1304
+ export const ___date_prototype_setUTCMonth = (_this: Date, month: any, date: any) => {
1305
+ // 1. Let dateObject be the this value.
1306
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1307
+ // 3. Let t be dateObject.[[DateValue]].
1308
+ let t: number = __Porffor_date_read(_this);
1309
+
1310
+ // 4. Let m be ? ToNumber(month).
1311
+ const m: number = Number(month);
1312
+
1313
+ // we reorder the spec steps in this func for easier arg handling
1314
+
1315
+ // 6. If t is NaN, return NaN.
1316
+ if (Number.isNaN(t)) return NaN;
1317
+
1318
+ // 5. If date is present, let dt be ? ToNumber(date).
1319
+ let dt: number;
1320
+ if (Porffor.rawType(date) != Porffor.TYPES.undefined) dt = Number(date);
1321
+ // 7. If date is not present, let dt be DateFromTime(t).
1322
+ else dt = __ecma262_DateFromTime(t);
1323
+
1324
+ // 8. Let newDate be MakeDate(MakeDay(YearFromTime(t), m, dt), TimeWithinDay(t)).
1325
+ const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(__ecma262_YearFromTime(t), m, dt), __ecma262_TimeWithinDay(t));
1326
+
1327
+ // 9. Let v be TimeClip(newDate).
1328
+ const v: number = __ecma262_TimeClip(newDate);
1329
+
1330
+ // 10. Set dateObject.[[DateValue]] to v.
1331
+ __Porffor_date_write(_this, v);
1332
+
1333
+ // 11. Return v.
1334
+ return v;
1335
+ };
1336
+
1337
+ // 21.4.4.34 Date.prototype.setUTCSeconds (sec [, ms ])
1338
+ // https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcseconds
1339
+ export const ___date_prototype_setUTCSeconds = (_this: Date, sec: any, ms: any) => {
1340
+ // 1. Let dateObject be the this value.
1341
+ // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
1342
+ // 3. Let t be dateObject.[[DateValue]].
1343
+ let t: number = __Porffor_date_read(_this);
1344
+
1345
+ // 4. Let s be ? ToNumber(sec).
1346
+ const s: number = Number(sec);
1347
+
1348
+ // we reorder the spec steps in this func for easier arg handling
1349
+
1350
+ // 6. If t is NaN, return NaN.
1351
+ if (Number.isNaN(t)) return NaN;
1352
+
1353
+ // 5. If ms is present, let milli be ? ToNumber(ms).
1354
+ let milli: number;
1355
+ if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
1356
+ // 7. If ms is not present, let milli be msFromTime(t).
1357
+ else milli = __ecma262_msFromTime(t);
1358
+
1359
+ // 8. Let date be MakeDate(Day(t), MakeTime(HourFromTime(t), MinFromTime(t), s, milli)).
1360
+ const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(__ecma262_HourFromTime(t), __ecma262_MinFromTime(t), s, milli));
727
1361
 
1362
+ // 9. Let v be TimeClip(date).
1363
+ const v: number = __ecma262_TimeClip(date);
728
1364
 
729
- // 1. Let dateObject be the this value.
730
- // 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
731
- // 3. Let t be dateObject.[[DateValue]].
732
- // 4. If t is NaN, return NaN.
733
- // 5. Return SecFromTime(t).
1365
+ // 10. Set dateObject.[[DateValue]] to v.
1366
+ __Porffor_date_write(_this, v);
734
1367
 
1368
+ // 11. Return v.
1369
+ return v;
1370
+ };