git.iko.soy/rowtype-yoga/purescript-yoga-json
on main help sign in
.gitignore+1
since splitsnapshots
unifiedsplit
@@ -10,3 +10,4 @@
10/coverage/
10/coverage/
11/.idea/
11/.idea/
12.spec-results
12.spec-results
13+.DS_Store
CHANGELOG.md+4
@@ -1,5 +1,9 @@
1# Changelog
1# Changelog
2
2
3+## v5.2.2
4+
5+- Fix variant decoding selecting absent branches whose payload decoders accept missing values, such as empty records and `Maybe`. Branches now require an own property matching their label.
6+
3## v4.0.1
7## v4.0.1
4
8
5- Allow the type of `read*` functions to be visibly applied (#24 by @postsolar)
9- Allow the type of `read*` functions to be visibly applied (#24 by @postsolar)
spago.lock+148−249
@@ -101,60 +101,6 @@
101 {
101 {
102 "yoga-tree": ">=1.0.0 <2.0.0"
102 "yoga-tree": ">=1.0.0 <2.0.0"
103 }
103 }
104− ],
105− "build_plan": [
106− "arrays",
107− "bifunctors",
108− "catenable-lists",
109− "const",
110− "contravariant",
111− "control",
112− "datetime",
113− "distributive",
114− "effect",
115− "either",
116− "enums",
117− "exceptions",
118− "exists",
119− "foldable-traversable",
120− "foreign",
121− "foreign-object",
122− "free",
123− "functions",
124− "functors",
125− "gen",
126− "identity",
127− "integers",
128− "invariant",
129− "js-bigints",
130− "js-date",
131− "lazy",
132− "lists",
133− "maybe",
134− "newtype",
135− "nonempty",
136− "now",
137− "nullable",
138− "numbers",
139− "ordered-collections",
140− "orders",
141− "partial",
142− "prelude",
143− "profunctor",
144− "record",
145− "refs",
146− "safe-coerce",
147− "st",
148− "strings",
149− "tailrec",
150− "transformers",
151− "tuples",
152− "type-equality",
153− "typelevel-prelude",
154− "unfoldable",
155− "unsafe-coerce",
156− "variant",
157− "yoga-tree"
158 ]
104 ]
159 },
105 },
160 "test": {
106 "test": {
@@ -163,83 +109,6 @@
163 "spec-discovery",
109 "spec-discovery",
164 "spec-node",
110 "spec-node",
165 "strings-extra"
111 "strings-extra"
166− ],
167− "build_plan": [
168− "aff",
169− "ansi",
170− "argonaut-codecs",
171− "argonaut-core",
172− "arraybuffer-types",
173− "arrays",
174− "avar",
175− "bifunctors",
176− "catenable-lists",
177− "console",
178− "const",
179− "contravariant",
180− "control",
181− "datetime",
182− "distributive",
183− "effect",
184− "either",
185− "enums",
186− "exceptions",
187− "exists",
188− "exitcodes",
189− "foldable-traversable",
190− "foreign",
191− "foreign-object",
192− "fork",
193− "free",
194− "functions",
195− "functors",
196− "gen",
197− "identity",
198− "integers",
199− "invariant",
200− "js-date",
201− "lazy",
202− "lists",
203− "maybe",
204− "mmorph",
205− "newtype",
206− "node-buffer",
207− "node-event-emitter",
208− "node-fs",
209− "node-path",
210− "node-process",
211− "node-streams",
212− "nonempty",
213− "now",
214− "nullable",
215− "numbers",
216− "open-memoize",
217− "optparse",
218− "ordered-collections",
219− "orders",
220− "parallel",
221− "partial",
222− "pipes",
223− "posix-types",
224− "prelude",
225− "profunctor",
226− "record",
227− "refs",
228− "safe-coerce",
229− "spec",
230− "spec-discovery",
231− "spec-node",
232− "st",
233− "strings",
234− "strings-extra",
235− "tailrec",
236− "transformers",
237− "tuples",
238− "type-equality",
239− "typelevel-prelude",
240− "unfoldable",
241− "unicode",
242− "unsafe-coerce"
243 ]
112 ]
244 }
113 }
245 }
114 }
@@ -777,21 +646,19 @@
777 "aff": {
646 "aff": {
778 "type": "registry",
647 "type": "registry",
779 "version": "8.0.0",
648 "version": "8.0.0",
780− "integrity": "sha256-5MmdI4+0RHBtSBy+YlU3/Cq4R5W2ih3OaRedJIrVHdk=",
649+ "integrity": "sha256-9BRIrSdRoYybfiUmBqgKJ66cPqxYHb277bVWQMn/9sg=",
781 "dependencies": [
650 "dependencies": [
782− "bifunctors",
783 "control",
651 "control",
784 "datetime",
652 "datetime",
785 "effect",
653 "effect",
786 "either",
654 "either",
787 "exceptions",
655 "exceptions",
788− "foldable-traversable",
789 "functions",
656 "functions",
790− "maybe",
791 "newtype",
657 "newtype",
792 "parallel",
658 "parallel",
659+ "partial",
793 "prelude",
660 "prelude",
794− "refs",
661+ "st",
795 "tailrec",
662 "tailrec",
796 "transformers",
663 "transformers",
797 "unsafe-coerce"
664 "unsafe-coerce"
@@ -800,35 +667,40 @@
800 "ansi": {
667 "ansi": {
801 "type": "registry",
668 "type": "registry",
802 "version": "7.0.0",
669 "version": "7.0.0",
803− "integrity": "sha256-ZMB6HD+q9CXvn9fRCmJ8dvuDrOVHcjombL3oNOerVnE=",
670+ "integrity": "sha256-tOUaXJFzPSfBVAqLI8hc+Tz2M1rg16cXqyHaK/3SmFg=",
804 "dependencies": [
671 "dependencies": [
805 "foldable-traversable",
672 "foldable-traversable",
806 "lists",
673 "lists",
807− "strings"
674+ "prelude"
808 ]
675 ]
809 },
676 },
810 "argonaut-codecs": {
677 "argonaut-codecs": {
811 "type": "registry",
678 "type": "registry",
812 "version": "9.1.0",
679 "version": "9.1.0",
813− "integrity": "sha256-N6efXByUeg848ompEqJfVvZuZPfdRYDGlTDFn0G0Oh8=",
680+ "integrity": "sha256-K910SBrmYallESsm8pxJYThs7lig6hxX3M4PW33Cgew=",
814 "dependencies": [
681 "dependencies": [
815 "argonaut-core",
682 "argonaut-core",
816 "arrays",
683 "arrays",
817− "effect",
684+ "bifunctors",
685+ "either",
686+ "foldable-traversable",
818 "foreign-object",
687 "foreign-object",
819 "identity",
688 "identity",
820 "integers",
689 "integers",
690+ "lists",
821 "maybe",
691 "maybe",
822 "nonempty",
692 "nonempty",
823 "ordered-collections",
693 "ordered-collections",
824 "prelude",
694 "prelude",
825− "record"
695+ "record",
696+ "strings",
697+ "tuples"
826 ]
698 ]
827 },
699 },
828 "argonaut-core": {
700 "argonaut-core": {
829 "type": "registry",
701 "type": "registry",
830 "version": "7.0.0",
702 "version": "7.0.0",
831− "integrity": "sha256-RC82GfAjItydxrO24cdX373KHVZiLqybu19b5X8u7B4=",
703+ "integrity": "sha256-gYZihtBIKthVuXXoiPphMookSf8M5aHyFYkcIWqlxTM=",
832 "dependencies": [
704 "dependencies": [
833 "arrays",
705 "arrays",
834 "control",
706 "control",
@@ -846,13 +718,13 @@
846 "arraybuffer-types": {
718 "arraybuffer-types": {
847 "type": "registry",
719 "type": "registry",
848 "version": "3.0.2",
720 "version": "3.0.2",
849− "integrity": "sha256-mQKokysYVkooS4uXbO+yovmV/s8b138Ws3zQvOwIHRA=",
721+ "integrity": "sha256-p05cJnSkyeoB7VHzMyc2Eb1RwUaB7Nl0sQSqEGNEUD8=",
850 "dependencies": []
722 "dependencies": []
851 },
723 },
852 "arrays": {
724 "arrays": {
853 "type": "registry",
725 "type": "registry",
854 "version": "7.3.0",
726 "version": "7.3.0",
855− "integrity": "sha256-tmcklBlc/muUtUfr9RapdCPwnlQeB3aSrC4dK85gQlc=",
727+ "integrity": "sha256-GD4z7LCi9wzi7FCQqbWhvs8paoUK9NO+HwgXZ+KP8Rk=",
856 "dependencies": [
728 "dependencies": [
857 "bifunctors",
729 "bifunctors",
858 "control",
730 "control",
@@ -873,20 +745,21 @@
873 "avar": {
745 "avar": {
874 "type": "registry",
746 "type": "registry",
875 "version": "5.0.1",
747 "version": "5.0.1",
876− "integrity": "sha256-f+bRR3qQPa/GVe4UbLQiJBy7+PzJkUCwT6qNn0UlkMY=",
748+ "integrity": "sha256-8V4SxF4TIWZ9Ik1P4lPzIRUAZeFBe8w5WA2VcCEKsIk=",
877 "dependencies": [
749 "dependencies": [
878 "aff",
750 "aff",
879 "effect",
751 "effect",
880 "either",
752 "either",
881 "exceptions",
753 "exceptions",
882 "functions",
754 "functions",
883− "maybe"
755+ "maybe",
756+ "prelude"
884 ]
757 ]
885 },
758 },
886 "bifunctors": {
759 "bifunctors": {
887 "type": "registry",
760 "type": "registry",
888 "version": "6.0.0",
761 "version": "6.0.0",
889− "integrity": "sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw=",
762+ "integrity": "sha256-tXhmlMiyVy6mbUreVZQt/2EGEsPr0T1PjJi+YCG5J7E=",
890 "dependencies": [
763 "dependencies": [
891 "const",
764 "const",
892 "either",
765 "either",
@@ -898,7 +771,7 @@
898 "catenable-lists": {
771 "catenable-lists": {
899 "type": "registry",
772 "type": "registry",
900 "version": "7.0.0",
773 "version": "7.0.0",
901− "integrity": "sha256-76vYENhwF4BWTBsjeLuErCH2jqVT4M3R1HX+4RwSftA=",
774+ "integrity": "sha256-7+i/MHBLIRh604iCNT4ENWRWE/wuHIotER4kpdX9Ve0=",
902 "dependencies": [
775 "dependencies": [
903 "control",
776 "control",
904 "foldable-traversable",
777 "foldable-traversable",
@@ -909,19 +782,10 @@
909 "unfoldable"
782 "unfoldable"
910 ]
783 ]
911 },
784 },
912− "console": {
913− "type": "registry",
914− "version": "6.1.0",
915− "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=",
916− "dependencies": [
917− "effect",
918− "prelude"
919− ]
920− },
921 "const": {
785 "const": {
922 "type": "registry",
786 "type": "registry",
923 "version": "6.0.0",
787 "version": "6.0.0",
924− "integrity": "sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc=",
788+ "integrity": "sha256-S+m0lQsxnji0z1XRUmkn+3RFuWJ5CXWuIr1u3i8Bfoc=",
925 "dependencies": [
789 "dependencies": [
926 "invariant",
790 "invariant",
927 "newtype",
791 "newtype",
@@ -931,7 +795,7 @@
931 "contravariant": {
795 "contravariant": {
932 "type": "registry",
796 "type": "registry",
933 "version": "6.0.0",
797 "version": "6.0.0",
934− "integrity": "sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c=",
798+ "integrity": "sha256-nuckEWqL80NaPmR/l9AUyrfycNh18XcvlZV9PAamwqc=",
935 "dependencies": [
799 "dependencies": [
936 "const",
800 "const",
937 "either",
801 "either",
@@ -943,7 +807,7 @@
943 "control": {
807 "control": {
944 "type": "registry",
808 "type": "registry",
945 "version": "6.0.0",
809 "version": "6.0.0",
946− "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=",
810+ "integrity": "sha256-0vxyYh5FL+ilxgLo954w1LqCUC0RSIivNNlb9CaNUQg=",
947 "dependencies": [
811 "dependencies": [
948 "newtype",
812 "newtype",
949 "prelude"
813 "prelude"
@@ -952,7 +816,7 @@
952 "datetime": {
816 "datetime": {
953 "type": "registry",
817 "type": "registry",
954 "version": "6.1.0",
818 "version": "6.1.0",
955− "integrity": "sha256-g/5X5BBegQWLpI9IWD+sY6mcaYpzzlW5lz5NBzaMtyI=",
819+ "integrity": "sha256-tbv6eDXy6QOD7YSknxYSbsDF32OC2JrNbSBpzMs7Doc=",
956 "dependencies": [
820 "dependencies": [
957 "bifunctors",
821 "bifunctors",
958 "control",
822 "control",
@@ -975,7 +839,7 @@
975 "distributive": {
839 "distributive": {
976 "type": "registry",
840 "type": "registry",
977 "version": "6.0.0",
841 "version": "6.0.0",
978− "integrity": "sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ=",
842+ "integrity": "sha256-netyJK4B32PDYHD0tF2AenKgo3urzbI770ycM0pArAo=",
979 "dependencies": [
843 "dependencies": [
980 "identity",
844 "identity",
981 "newtype",
845 "newtype",
@@ -987,7 +851,7 @@
987 "effect": {
851 "effect": {
988 "type": "registry",
852 "type": "registry",
989 "version": "4.0.0",
853 "version": "4.0.0",
990− "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=",
854+ "integrity": "sha256-DdqU3bncRTjgMVPPRlAuGHVeajSPEcRaRhNuio7if6s=",
991 "dependencies": [
855 "dependencies": [
992 "prelude"
856 "prelude"
993 ]
857 ]
@@ -995,7 +859,7 @@
995 "either": {
859 "either": {
996 "type": "registry",
860 "type": "registry",
997 "version": "6.1.0",
861 "version": "6.1.0",
998− "integrity": "sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY=",
862+ "integrity": "sha256-tBHx3PgtH4GZOApZCDkcM7szRTYJinrUrVGWazQCUUg=",
999 "dependencies": [
863 "dependencies": [
1000 "control",
864 "control",
1001 "invariant",
865 "invariant",
@@ -1006,7 +870,7 @@
1006 "enums": {
870 "enums": {
1007 "type": "registry",
871 "type": "registry",
1008 "version": "6.0.1",
872 "version": "6.0.1",
1009− "integrity": "sha256-HWaD73JFLorc4A6trKIRUeDMdzE+GpkJaEOM1nTNkC8=",
873+ "integrity": "sha256-sdZOmLX5+5pASGpvVyT0vSD5BBYQjZiayjV5XiPutso=",
1010 "dependencies": [
874 "dependencies": [
1011 "control",
875 "control",
1012 "either",
876 "either",
@@ -1023,7 +887,7 @@
1023 "exceptions": {
887 "exceptions": {
1024 "type": "registry",
888 "type": "registry",
1025 "version": "6.1.0",
889 "version": "6.1.0",
1026− "integrity": "sha256-K0T89IHtF3vBY7eSAO7eDOqSb2J9kZGAcDN5+IKsF8E=",
890+ "integrity": "sha256-nRrr+N0wk0TUFOWLR7e1n1oxcXo/X345bQUtoY9lW6A=",
1027 "dependencies": [
891 "dependencies": [
1028 "effect",
892 "effect",
1029 "either",
893 "either",
@@ -1034,7 +898,7 @@
1034 "exists": {
898 "exists": {
1035 "type": "registry",
899 "type": "registry",
1036 "version": "6.0.0",
900 "version": "6.0.0",
1037− "integrity": "sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8=",
901+ "integrity": "sha256-vtLbrWNaI+pzx/2fw2AQnCovoLtcosClIhjO26QKkh8=",
1038 "dependencies": [
902 "dependencies": [
1039 "unsafe-coerce"
903 "unsafe-coerce"
1040 ]
904 ]
@@ -1042,15 +906,17 @@
1042 "exitcodes": {
906 "exitcodes": {
1043 "type": "registry",
907 "type": "registry",
1044 "version": "4.0.0",
908 "version": "4.0.0",
1045− "integrity": "sha256-4wxViTbyOoyKJ/WaRGI6+hZmgMKI5Miv16lSwefiLSM=",
909+ "integrity": "sha256-xBl4aFSEQ05Owp1ZvO6OxxvLK3LVzU35RSbj79SsePQ=",
1046 "dependencies": [
910 "dependencies": [
1047− "enums"
911+ "enums",
912+ "maybe",
913+ "prelude"
1048 ]
914 ]
1049 },
915 },
1050 "foldable-traversable": {
916 "foldable-traversable": {
1051 "type": "registry",
917 "type": "registry",
1052 "version": "6.0.0",
918 "version": "6.0.0",
1053− "integrity": "sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM=",
919+ "integrity": "sha256-NGGWyCio/xjce6fPP7y3wwg7CheqllID6aJudDxbWhA=",
1054 "dependencies": [
920 "dependencies": [
1055 "bifunctors",
921 "bifunctors",
1056 "const",
922 "const",
@@ -1068,23 +934,23 @@
1068 "foreign": {
934 "foreign": {
1069 "type": "registry",
935 "type": "registry",
1070 "version": "7.0.0",
936 "version": "7.0.0",
1071− "integrity": "sha256-1ORiqoS3HW+qfwSZAppHPWy4/6AQysxZ2t29jcdUMNA=",
937+ "integrity": "sha256-jiDRMVQfovGsbbA/FzbzYf6iWk9i2b5gNrIjz+gFfsI=",
1072 "dependencies": [
938 "dependencies": [
1073 "either",
939 "either",
1074 "functions",
940 "functions",
1075− "identity",
1076 "integers",
941 "integers",
1077 "lists",
942 "lists",
1078 "maybe",
943 "maybe",
1079 "prelude",
944 "prelude",
1080 "strings",
945 "strings",
1081− "transformers"
946+ "transformers",
947+ "unsafe-coerce"
1082 ]
948 ]
1083 },
949 },
1084 "foreign-object": {
950 "foreign-object": {
1085 "type": "registry",
951 "type": "registry",
1086 "version": "4.1.0",
952 "version": "4.1.0",
1087− "integrity": "sha256-q24okj6mT+yGHYQ+ei/pYPj5ih6sTbu7eDv/WU56JVo=",
953+ "integrity": "sha256-x/Q7r80z/vmHRKvPwhYmHP/DnJciPtsyGfRTMzayKIU=",
1088 "dependencies": [
954 "dependencies": [
1089 "arrays",
955 "arrays",
1090 "foldable-traversable",
956 "foldable-traversable",
@@ -1097,21 +963,24 @@
1097 "tailrec",
963 "tailrec",
1098 "tuples",
964 "tuples",
1099 "typelevel-prelude",
965 "typelevel-prelude",
1100− "unfoldable"
966+ "unfoldable",
967+ "unsafe-coerce"
1101 ]
968 ]
1102 },
969 },
1103 "fork": {
970 "fork": {
1104 "type": "registry",
971 "type": "registry",
1105 "version": "6.0.0",
972 "version": "6.0.0",
1106− "integrity": "sha256-X7u0SuCvFbLbzuNEKLBNuWjmcroqMqit4xEzpQwAP7E=",
973+ "integrity": "sha256-0keBVeZZg1eCZEy/En1CohVW829gQUqKtqBNIRa93/A=",
1107 "dependencies": [
974 "dependencies": [
1108− "aff"
975+ "aff",
976+ "prelude",
977+ "transformers"
1109 ]
978 ]
1110 },
979 },
1111 "free": {
980 "free": {
1112 "type": "registry",
981 "type": "registry",
1113 "version": "7.1.0",
982 "version": "7.1.0",
1114− "integrity": "sha256-JAumgEsGSzJCNLD8AaFvuX7CpqS5yruCngi6yI7+V5k=",
983+ "integrity": "sha256-tUBInfUpRQEw4u94GWcYW7EYdmSdDHSRn88a+C0eltU=",
1115 "dependencies": [
984 "dependencies": [
1116 "catenable-lists",
985 "catenable-lists",
1117 "control",
986 "control",
@@ -1132,7 +1001,7 @@
1132 "functions": {
1001 "functions": {
1133 "type": "registry",
1002 "type": "registry",
1134 "version": "6.0.0",
1003 "version": "6.0.0",
1135− "integrity": "sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI=",
1004+ "integrity": "sha256-0jgtOr+SFO4UScKc40oA/9Vdcf2rLn3h3vZlY0KfqVo=",
1136 "dependencies": [
1005 "dependencies": [
1137 "prelude"
1006 "prelude"
1138 ]
1007 ]
@@ -1140,7 +1009,7 @@
1140 "functors": {
1009 "functors": {
1141 "type": "registry",
1010 "type": "registry",
1142 "version": "5.0.0",
1011 "version": "5.0.0",
1143− "integrity": "sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU=",
1012+ "integrity": "sha256-W1o/4wcp6S3chodYL8uixlXK2mfr1L+SzM1R+whqUco=",
1144 "dependencies": [
1013 "dependencies": [
1145 "bifunctors",
1014 "bifunctors",
1146 "const",
1015 "const",
@@ -1160,7 +1029,7 @@
1160 "gen": {
1029 "gen": {
1161 "type": "registry",
1030 "type": "registry",
1162 "version": "4.0.0",
1031 "version": "4.0.0",
1163− "integrity": "sha256-f7yzAXWwr+xnaqEOcvyO3ezKdoes8+WXWdXIHDBCAPI=",
1032+ "integrity": "sha256-kyOateeOtQa07vfTMYeSuCKdelgKE1R65fwKkZ10wsY=",
1164 "dependencies": [
1033 "dependencies": [
1165 "either",
1034 "either",
1166 "foldable-traversable",
1035 "foldable-traversable",
@@ -1177,7 +1046,7 @@
1177 "identity": {
1046 "identity": {
1178 "type": "registry",
1047 "type": "registry",
1179 "version": "6.0.0",
1048 "version": "6.0.0",
1180− "integrity": "sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY=",
1049+ "integrity": "sha256-RY/iXPpxpqvKHYfJeFVNI1J06kohB9rbtWYuha8t0LE=",
1181 "dependencies": [
1050 "dependencies": [
1182 "control",
1051 "control",
1183 "invariant",
1052 "invariant",
@@ -1188,7 +1057,7 @@
1188 "integers": {
1057 "integers": {
1189 "type": "registry",
1058 "type": "registry",
1190 "version": "6.0.0",
1059 "version": "6.0.0",
1191− "integrity": "sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158=",
1060+ "integrity": "sha256-Y8yozC1uHRLcruobEyv5/bMKzE1BoKJ/olHv6o+bgm8=",
1192 "dependencies": [
1061 "dependencies": [
1193 "maybe",
1062 "maybe",
1194 "numbers",
1063 "numbers",
@@ -1198,7 +1067,7 @@
1198 "invariant": {
1067 "invariant": {
1199 "type": "registry",
1068 "type": "registry",
1200 "version": "6.0.0",
1069 "version": "6.0.0",
1201− "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=",
1070+ "integrity": "sha256-HyoT1I5qIHRq8RSZji6zZDvqnpVjLw748utrKwZtqsw=",
1202 "dependencies": [
1071 "dependencies": [
1203 "control",
1072 "control",
1204 "prelude"
1073 "prelude"
@@ -1207,7 +1076,7 @@
1207 "js-bigints": {
1076 "js-bigints": {
1208 "type": "registry",
1077 "type": "registry",
1209 "version": "2.2.1",
1078 "version": "2.2.1",
1210− "integrity": "sha256-hKWZo9NxtsAaHmNXr6B8GY4c0olQbYLXPVGWm4TF2Ss=",
1079+ "integrity": "sha256-r1rE6Olv5b3JrP32lY2uKJ+eBRTsrVnC983K8VWwqe4=",
1211 "dependencies": [
1080 "dependencies": [
1212 "integers",
1081 "integers",
1213 "maybe",
1082 "maybe",
@@ -1217,20 +1086,22 @@
1217 "js-date": {
1086 "js-date": {
1218 "type": "registry",
1087 "type": "registry",
1219 "version": "8.0.0",
1088 "version": "8.0.0",
1220− "integrity": "sha256-6TVF4DWg5JL+jRAsoMssYw8rgOVALMUHT1CuNZt8NRo=",
1089+ "integrity": "sha256-DNQrp4xYc8o80jtxo0aOkUeXGi6h0Xidkk2ZQ8Y4l5Y=",
1221 "dependencies": [
1090 "dependencies": [
1222 "datetime",
1091 "datetime",
1223 "effect",
1092 "effect",
1224− "exceptions",
1093+ "enums",
1225 "foreign",
1094 "foreign",
1095+ "functions",
1226 "integers",
1096 "integers",
1227− "now"
1097+ "maybe",
1098+ "prelude"
1228 ]
1099 ]
1229 },
1100 },
1230 "lazy": {
1101 "lazy": {
1231 "type": "registry",
1102 "type": "registry",
1232 "version": "6.0.0",
1103 "version": "6.0.0",
1233− "integrity": "sha256-lMsfFOnlqfe4KzRRiW8ot5ge6HtcU3Eyh2XkXcP5IgU=",
1104+ "integrity": "sha256-MHRC+1Pc+AjortBp4b/e1e6KpEpsDwaJBNBB7TOL+1I=",
1234 "dependencies": [
1105 "dependencies": [
1235 "control",
1106 "control",
1236 "foldable-traversable",
1107 "foldable-traversable",
@@ -1241,7 +1112,7 @@
1241 "lists": {
1112 "lists": {
1242 "type": "registry",
1113 "type": "registry",
1243 "version": "7.0.0",
1114 "version": "7.0.0",
1244− "integrity": "sha256-EKF15qYqucuXP2lT/xPxhqy58f0FFT6KHdIB/yBOayI=",
1115+ "integrity": "sha256-/mGd7wLoU+wsTcqii7SSUByxsvwvjnu2PjwAD47yYb4=",
1245 "dependencies": [
1116 "dependencies": [
1246 "bifunctors",
1117 "bifunctors",
1247 "control",
1118 "control",
@@ -1260,7 +1131,7 @@
1260 "maybe": {
1131 "maybe": {
1261 "type": "registry",
1132 "type": "registry",
1262 "version": "6.0.0",
1133 "version": "6.0.0",
1263− "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=",
1134+ "integrity": "sha256-8X6XEgtZ5lqfkEuc1hWOofnL6mwhk8gSJTxwvbR/SbY=",
1264 "dependencies": [
1135 "dependencies": [
1265 "control",
1136 "control",
1266 "invariant",
1137 "invariant",
@@ -1271,17 +1142,24 @@
1271 "mmorph": {
1142 "mmorph": {
1272 "type": "registry",
1143 "type": "registry",
1273 "version": "7.0.0",
1144 "version": "7.0.0",
1274− "integrity": "sha256-urZlZNNqGeQFe5D/ClHlR8QgGBNHTMFPtJ5S5IpflTQ=",
1145+ "integrity": "sha256-Cfltaq+tfYjuSoSBN/b8cSQZbvZTqIRs6ebQewbIkGs=",
1275 "dependencies": [
1146 "dependencies": [
1147+ "bifunctors",
1148+ "either",
1276 "free",
1149 "free",
1277 "functors",
1150 "functors",
1151+ "identity",
1152+ "maybe",
1153+ "newtype",
1154+ "prelude",
1278− "transformers"
1155+ "transformers",
1156+ "tuples"
1279 ]
1157 ]
1280 },
1158 },
1281 "newtype": {
1159 "newtype": {
1282 "type": "registry",
1160 "type": "registry",
1283 "version": "5.0.0",
1161 "version": "5.0.0",
1284− "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=",
1162+ "integrity": "sha256-dt6w0cty4OS+Pjt9fsh3iU6ottqSU83mdAZkaEEvo6c=",
1285 "dependencies": [
1163 "dependencies": [
1286 "prelude",
1164 "prelude",
1287 "safe-coerce"
1165 "safe-coerce"
@@ -1290,12 +1168,15 @@
1290 "node-buffer": {
1168 "node-buffer": {
1291 "type": "registry",
1169 "type": "registry",
1292 "version": "9.0.0",
1170 "version": "9.0.0",
1293− "integrity": "sha256-PWE2DJ5ruBLCmeA/fUiuySEFmUJ/VuRfyrnCuVZBlu4=",
1171+ "integrity": "sha256-RdQjilmEHqsT4fwpCr8Mavw8KTafYrS3ZM6zeAAVAl8=",
1294 "dependencies": [
1172 "dependencies": [
1295 "arraybuffer-types",
1173 "arraybuffer-types",
1296 "effect",
1174 "effect",
1175+ "functions",
1297 "maybe",
1176 "maybe",
1298 "nullable",
1177 "nullable",
1178+ "partial",
1179+ "prelude",
1299 "st",
1180 "st",
1300 "unsafe-coerce"
1181 "unsafe-coerce"
1301 ]
1182 ]
@@ -1303,7 +1184,7 @@
1303 "node-event-emitter": {
1184 "node-event-emitter": {
1304 "type": "registry",
1185 "type": "registry",
1305 "version": "3.0.0",
1186 "version": "3.0.0",
1306− "integrity": "sha256-Qw0MjsT4xRH2j2i4K8JmRjcMKnH5z1Cw39t00q4LE4w=",
1187+ "integrity": "sha256-wodx71NxJBPXOaawFn01V1ByYB2vT+I3RuV2giOVKMg=",
1307 "dependencies": [
1188 "dependencies": [
1308 "effect",
1189 "effect",
1309 "either",
1190 "either",
@@ -1317,8 +1198,9 @@
1317 "node-fs": {
1198 "node-fs": {
1318 "type": "registry",
1199 "type": "registry",
1319 "version": "9.2.0",
1200 "version": "9.2.0",
1320− "integrity": "sha256-Sg0vkXycEzkEerX6hLccz21Ygd9w1+QSk1thotRZPGI=",
1201+ "integrity": "sha256-fxioTSm9y47WuYs9F/7nxCh/RVDCl3Kr3Hg779J4SJA=",
1321 "dependencies": [
1202 "dependencies": [
1203+ "aff",
1322 "datetime",
1204 "datetime",
1323 "effect",
1205 "effect",
1324 "either",
1206 "either",
@@ -1334,14 +1216,13 @@
1334 "nullable",
1216 "nullable",
1335 "partial",
1217 "partial",
1336 "prelude",
1218 "prelude",
1337− "strings",
1219+ "strings"
1338− "unsafe-coerce"
1339 ]
1220 ]
1340 },
1221 },
1341 "node-path": {
1222 "node-path": {
1342 "type": "registry",
1223 "type": "registry",
1343 "version": "5.0.1",
1224 "version": "5.0.1",
1344− "integrity": "sha256-ePOElFamHkffhwJcS0Ozq4A14rflnkasFU6X2B8/yXs=",
1225+ "integrity": "sha256-j7n/SmpVz0FOMJl4XZop3ofJ+MeIPkMNqUEUKHEL6Us=",
1345 "dependencies": [
1226 "dependencies": [
1346 "effect"
1227 "effect"
1347 ]
1228 ]
@@ -1349,23 +1230,25 @@
1349 "node-process": {
1230 "node-process": {
1350 "type": "registry",
1231 "type": "registry",
1351 "version": "11.2.0",
1232 "version": "11.2.0",
1352− "integrity": "sha256-+2MQDYChjGbVbapCyJtuWYwD41jk+BntF/kcOTKBMVs=",
1233+ "integrity": "sha256-onzKeNmaeYfN3HSDPqSFTrrP2Yl9tnVsfKKhnf2plxM=",
1353 "dependencies": [
1234 "dependencies": [
1354 "effect",
1235 "effect",
1236+ "exceptions",
1355 "foreign",
1237 "foreign",
1356 "foreign-object",
1238 "foreign-object",
1357 "maybe",
1239 "maybe",
1358 "node-event-emitter",
1240 "node-event-emitter",
1359 "node-streams",
1241 "node-streams",
1242+ "nullable",
1360 "posix-types",
1243 "posix-types",
1361 "prelude",
1244 "prelude",
1362− "unsafe-coerce"
1245+ "strings"
1363 ]
1246 ]
1364 },
1247 },
1365 "node-streams": {
1248 "node-streams": {
1366 "type": "registry",
1249 "type": "registry",
1367 "version": "9.0.1",
1250 "version": "9.0.1",
1368− "integrity": "sha256-7RJ6RqjOlhW+QlDFQNUHlkCG/CuYTTLT8yary5jhhsU=",
1251+ "integrity": "sha256-yuVGm/R/tBr4Nphi+a1a984Z0fkmN9Q5wWtSmbmJTpA=",
1369 "dependencies": [
1252 "dependencies": [
1370 "aff",
1253 "aff",
1371 "arrays",
1254 "arrays",
@@ -1386,7 +1269,7 @@
1386 "nonempty": {
1269 "nonempty": {
1387 "type": "registry",
1270 "type": "registry",
1388 "version": "7.0.0",
1271 "version": "7.0.0",
1389− "integrity": "sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs=",
1272+ "integrity": "sha256-Ctkq8/+KiGqCE53Y/LvibA/coy7ev9HtRZU+GYS7yfQ=",
1390 "dependencies": [
1273 "dependencies": [
1391 "control",
1274 "control",
1392 "foldable-traversable",
1275 "foldable-traversable",
@@ -1399,35 +1282,37 @@
1399 "now": {
1282 "now": {
1400 "type": "registry",
1283 "type": "registry",
1401 "version": "6.0.0",
1284 "version": "6.0.0",
1402− "integrity": "sha256-xZ7x37ZMREfs6GCDw/h+FaKHV/3sPWmtqBZRGTxybQY=",
1285+ "integrity": "sha256-mTyG4s8tps3XIf0jjV/lME2/QlwMzrQly2wqfSSUM3o=",
1403 "dependencies": [
1286 "dependencies": [
1404 "datetime",
1287 "datetime",
1405− "effect"
1288+ "effect",
1289+ "prelude"
1406 ]
1290 ]
1407 },
1291 },
1408 "nullable": {
1292 "nullable": {
1409 "type": "registry",
1293 "type": "registry",
1410 "version": "6.0.0",
1294 "version": "6.0.0",
1411− "integrity": "sha256-yiGBVl3AD+Guy4kNWWeN+zl1gCiJK+oeIFtZtPCw4+o=",
1295+ "integrity": "sha256-CDAZk+L9Sc0GCFTkE8n+qdp4Ys8avvnkU+m2hVALt7M=",
1412 "dependencies": [
1296 "dependencies": [
1413− "effect",
1414 "functions",
1297 "functions",
1415− "maybe"
1298+ "maybe",
1299+ "prelude"
1416 ]
1300 ]
1417 },
1301 },
1418 "numbers": {
1302 "numbers": {
1419 "type": "registry",
1303 "type": "registry",
1420 "version": "9.0.1",
1304 "version": "9.0.1",
1421− "integrity": "sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk=",
1305+ "integrity": "sha256-ZydYckgwRAnRaFC7pu6fADhzdwX+UqHZrfJyet64zls=",
1422 "dependencies": [
1306 "dependencies": [
1423 "functions",
1307 "functions",
1424− "maybe"
1308+ "maybe",
1309+ "prelude"
1425 ]
1310 ]
1426 },
1311 },
1427 "open-memoize": {
1312 "open-memoize": {
1428 "type": "registry",
1313 "type": "registry",
1429 "version": "6.2.0",
1314 "version": "6.2.0",
1430− "integrity": "sha256-p1m7wF3aHQ80yUvqMs20OTMl496WS6YpKlmI2Nkg9j0=",
1315+ "integrity": "sha256-yJLuVYX8FocHIJ+6q7efH/Pj4S+e1Y57DZ5Dn7qf4ww=",
1431 "dependencies": [
1316 "dependencies": [
1432 "either",
1317 "either",
1433 "integers",
1318 "integers",
@@ -1443,12 +1328,10 @@
1443 "optparse": {
1328 "optparse": {
1444 "type": "registry",
1329 "type": "registry",
1445 "version": "5.0.1",
1330 "version": "5.0.1",
1446− "integrity": "sha256-cEzEkNW4q0gZlXl4z0zn+H2vs6l2UAp7NPHCsois73k=",
1331+ "integrity": "sha256-2btDjHPRR0uujUQJuZAN9AzvVoXe7yG6IwnY5evERhQ=",
1447 "dependencies": [
1332 "dependencies": [
1448− "aff",
1449 "arrays",
1333 "arrays",
1450 "bifunctors",
1334 "bifunctors",
1451− "console",
1452 "control",
1335 "control",
1453 "effect",
1336 "effect",
1454 "either",
1337 "either",
@@ -1457,7 +1340,6 @@
1457 "exitcodes",
1340 "exitcodes",
1458 "foldable-traversable",
1341 "foldable-traversable",
1459 "free",
1342 "free",
1460− "gen",
1461 "integers",
1343 "integers",
1462 "lazy",
1344 "lazy",
1463 "lists",
1345 "lists",
@@ -1480,16 +1362,19 @@
1480 "ordered-collections": {
1362 "ordered-collections": {
1481 "type": "registry",
1363 "type": "registry",
1482 "version": "3.2.0",
1364 "version": "3.2.0",
1483− "integrity": "sha256-o9jqsj5rpJmMdoe/zyufWHFjYYFTTsJpgcuCnqCO6PM=",
1365+ "integrity": "sha256-NaEXc2cz/7lJfxPWEja4XlZbGxuRqJwFKQJjsJf51kQ=",
1484 "dependencies": [
1366 "dependencies": [
1485 "arrays",
1367 "arrays",
1368+ "control",
1486 "foldable-traversable",
1369 "foldable-traversable",
1370+ "functions",
1487 "gen",
1371 "gen",
1488 "lists",
1372 "lists",
1489 "maybe",
1373 "maybe",
1374+ "newtype",
1490 "partial",
1375 "partial",
1491 "prelude",
1376 "prelude",
1492− "st",
1377+ "safe-coerce",
1493 "tailrec",
1378 "tailrec",
1494 "tuples",
1379 "tuples",
1495 "unfoldable"
1380 "unfoldable"
@@ -1498,7 +1383,7 @@
1498 "orders": {
1383 "orders": {
1499 "type": "registry",
1384 "type": "registry",
1500 "version": "6.0.0",
1385 "version": "6.0.0",
1501− "integrity": "sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink=",
1386+ "integrity": "sha256-nSMxZK7wxyDULkjZqvMyB71mVo6b0AyLLHosDVbv1XM=",
1502 "dependencies": [
1387 "dependencies": [
1503 "newtype",
1388 "newtype",
1504 "prelude"
1389 "prelude"
@@ -1507,7 +1392,7 @@
1507 "parallel": {
1392 "parallel": {
1508 "type": "registry",
1393 "type": "registry",
1509 "version": "7.0.0",
1394 "version": "7.0.0",
1510− "integrity": "sha256-gUC9i4Txnx9K9RcMLsjujbwZz6BB1bnE2MLvw4GIw5o=",
1395+ "integrity": "sha256-bAGpVhrFz2IyHkA4MR7+tE/19FZ7dzYBdYPgK5svkqw=",
1511 "dependencies": [
1396 "dependencies": [
1512 "control",
1397 "control",
1513 "effect",
1398 "effect",
@@ -1525,17 +1410,24 @@
1525 "partial": {
1410 "partial": {
1526 "type": "registry",
1411 "type": "registry",
1527 "version": "4.0.0",
1412 "version": "4.0.0",
1528− "integrity": "sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4=",
1413+ "integrity": "sha256-mdrlJBAgFMh79hNRW39uv7c+BwnnaOrAMmdh7+VhEhs=",
1529 "dependencies": []
1414 "dependencies": []
1530 },
1415 },
1531 "pipes": {
1416 "pipes": {
1532 "type": "registry",
1417 "type": "registry",
1533 "version": "8.0.0",
1418 "version": "8.0.0",
1534− "integrity": "sha256-kvfqGM4cPA/wCcBHbp5psouFw5dZGvku2462x7ZBwSY=",
1419+ "integrity": "sha256-dtUNpG8BGVr7pu6mQZyAnUAftUHgNS7f0QH3Kw5UTpQ=",
1535 "dependencies": [
1420 "dependencies": [
1536 "aff",
1421 "aff",
1422+ "control",
1423+ "effect",
1424+ "either",
1425+ "foldable-traversable",
1426+ "identity",
1537 "lists",
1427 "lists",
1428+ "maybe",
1538 "mmorph",
1429 "mmorph",
1430+ "newtype",
1539 "prelude",
1431 "prelude",
1540 "tailrec",
1432 "tailrec",
1541 "transformers",
1433 "transformers",
@@ -1545,22 +1437,23 @@
1545 "posix-types": {
1437 "posix-types": {
1546 "type": "registry",
1438 "type": "registry",
1547 "version": "6.0.0",
1439 "version": "6.0.0",
1548− "integrity": "sha256-ZfFz8RR1lee/o/Prccyeut3Q+9tYd08mlR72sIh6GzA=",
1440+ "integrity": "sha256-Je5jG439F/SFO/IvVevZnWVxDIonrehlKuJkefP2lHE=",
1549 "dependencies": [
1441 "dependencies": [
1550 "maybe",
1442 "maybe",
1443+ "newtype",
1551 "prelude"
1444 "prelude"
1552 ]
1445 ]
1553 },
1446 },
1554 "prelude": {
1447 "prelude": {
1555 "type": "registry",
1448 "type": "registry",
1556 "version": "6.0.2",
1449 "version": "6.0.2",
1557− "integrity": "sha256-kiAPZxihtAel8uRiTNdccf4qylp/9J3jNkEHNAD0MsE=",
1450+ "integrity": "sha256-IqykrDRquGUD/LRSad7y75hZv3bUsGQ4knc8tdez8Qw=",
1558 "dependencies": []
1451 "dependencies": []
1559 },
1452 },
1560 "profunctor": {
1453 "profunctor": {
1561 "type": "registry",
1454 "type": "registry",
1562 "version": "6.0.1",
1455 "version": "6.0.1",
1563− "integrity": "sha256-E58hSYdJvF2Qjf9dnWLPlJKh2Z2fLfFLkQoYi16vsFk=",
1456+ "integrity": "sha256-Ow0mJC+PIIRq/a3mzCWY5vxuTgR/e+Ee68+mWeSRnWY=",
1564 "dependencies": [
1457 "dependencies": [
1565 "control",
1458 "control",
1566 "distributive",
1459 "distributive",
@@ -1575,7 +1468,7 @@
1575 "record": {
1468 "record": {
1576 "type": "registry",
1469 "type": "registry",
1577 "version": "4.0.0",
1470 "version": "4.0.0",
1578− "integrity": "sha256-Za5U85bTRJEfGK5Sk4hM41oXy84YQI0I8TL3WUn1Qzg=",
1471+ "integrity": "sha256-WQ8fqp4X1wTA70J4qUcPW4Z7DCwx6e5KJnT/EuTdWSc=",
1579 "dependencies": [
1472 "dependencies": [
1580 "functions",
1473 "functions",
1581 "prelude",
1474 "prelude",
@@ -1585,7 +1478,7 @@
1585 "refs": {
1478 "refs": {
1586 "type": "registry",
1479 "type": "registry",
1587 "version": "6.0.0",
1480 "version": "6.0.0",
1588− "integrity": "sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s=",
1481+ "integrity": "sha256-KKD5G9dR2SauuDGULUJsxjqDOEi1Jqm+2Sq5U2mY8YU=",
1589 "dependencies": [
1482 "dependencies": [
1590 "effect",
1483 "effect",
1591 "prelude"
1484 "prelude"
@@ -1594,7 +1487,7 @@
1594 "safe-coerce": {
1487 "safe-coerce": {
1595 "type": "registry",
1488 "type": "registry",
1596 "version": "2.0.0",
1489 "version": "2.0.0",
1597− "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=",
1490+ "integrity": "sha256-EJrxtKt5xC7TYjBZrSBO/J7Aw3DmtilYjt4olpAXWVc=",
1598 "dependencies": [
1491 "dependencies": [
1599 "unsafe-coerce"
1492 "unsafe-coerce"
1600 ]
1493 ]
@@ -1602,7 +1495,7 @@
1602 "spec": {
1495 "spec": {
1603 "type": "registry",
1496 "type": "registry",
1604 "version": "8.1.1",
1497 "version": "8.1.1",
1605− "integrity": "sha256-EM7UfQIaSgiw13LJ4ZASkfYmmRDKIlec3nYbGKFqGhk=",
1498+ "integrity": "sha256-b6qjDb7lUJGLV+WEoywLu6BCXC4zGpfbN43mTL+vBeI=",
1606 "dependencies": [
1499 "dependencies": [
1607 "aff",
1500 "aff",
1608 "ansi",
1501 "ansi",
@@ -1636,7 +1529,7 @@
1636 "spec-discovery": {
1529 "spec-discovery": {
1637 "type": "registry",
1530 "type": "registry",
1638 "version": "8.4.0",
1531 "version": "8.4.0",
1639− "integrity": "sha256-ajaGtBe+WBnURPPxIfqyiBbxI9DvbCGpxpYYYrvi5nk=",
1532+ "integrity": "sha256-aFp8bllT/wrxQu8hMlDchQQY08dQAz+Xdq2hZi5z3yY=",
1640 "dependencies": [
1533 "dependencies": [
1641 "aff",
1534 "aff",
1642 "effect",
1535 "effect",
@@ -1649,7 +1542,7 @@
1649 "spec-node": {
1542 "spec-node": {
1650 "type": "registry",
1543 "type": "registry",
1651 "version": "0.0.3",
1544 "version": "0.0.3",
1652− "integrity": "sha256-Bjzg6l4uOfMN/FV0SKuT1Mm8eMP9sloLGVcY/0MeMnI=",
1545+ "integrity": "sha256-8/9+g0obbamV0YtqzmttbWs8HaWF7CEeW+eDtqzuAAo=",
1653 "dependencies": [
1546 "dependencies": [
1654 "aff",
1547 "aff",
1655 "argonaut-codecs",
1548 "argonaut-codecs",
@@ -1681,8 +1574,9 @@
1681 "st": {
1574 "st": {
1682 "type": "registry",
1575 "type": "registry",
1683 "version": "6.2.0",
1576 "version": "6.2.0",
1684− "integrity": "sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY=",
1577+ "integrity": "sha256-WI4MEkkwUd4pnwZQ3G8VKWgX5t1RSNJludm5e9boaRo=",
1685 "dependencies": [
1578 "dependencies": [
1579+ "effect",
1686 "partial",
1580 "partial",
1687 "prelude",
1581 "prelude",
1688 "tailrec",
1582 "tailrec",
@@ -1692,7 +1586,7 @@
1692 "strings": {
1586 "strings": {
1693 "type": "registry",
1587 "type": "registry",
1694 "version": "6.0.1",
1588 "version": "6.0.1",
1695− "integrity": "sha256-WssD3DbX4OPzxSdjvRMX0yvc9+pS7n5gyPv5I2Trb7k=",
1589+ "integrity": "sha256-FNto2hoNW5Da6W6crIk77YXMagBvOGHZE1kO7eZ1vLM=",
1696 "dependencies": [
1590 "dependencies": [
1697 "arrays",
1591 "arrays",
1698 "control",
1592 "control",
@@ -1715,11 +1609,10 @@
1715 "strings-extra": {
1609 "strings-extra": {
1716 "type": "registry",
1610 "type": "registry",
1717 "version": "4.0.0",
1611 "version": "4.0.0",
1718− "integrity": "sha256-tah7VFvEvFF4tpWXgWwGFIynpWHkYe5tpy6bWi5tMpU=",
1612+ "integrity": "sha256-Wlsa9A4hg4PnZYa9WsE0e820xilquVwm33nn067qNIA=",
1719 "dependencies": [
1613 "dependencies": [
1720 "arrays",
1614 "arrays",
1721 "foldable-traversable",
1615 "foldable-traversable",
1722− "maybe",
1723 "prelude",
1616 "prelude",
1724 "strings",
1617 "strings",
1725 "unicode"
1618 "unicode"
@@ -1728,7 +1621,7 @@
1728 "tailrec": {
1621 "tailrec": {
1729 "type": "registry",
1622 "type": "registry",
1730 "version": "6.1.0",
1623 "version": "6.1.0",
1731− "integrity": "sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk=",
1624+ "integrity": "sha256-xrorCfP0xV1wubs27idQCHQqdvSUuqmmL/am7Ji1wVU=",
1732 "dependencies": [
1625 "dependencies": [
1733 "bifunctors",
1626 "bifunctors",
1734 "effect",
1627 "effect",
@@ -1743,7 +1636,7 @@
1743 "transformers": {
1636 "transformers": {
1744 "type": "registry",
1637 "type": "registry",
1745 "version": "6.1.0",
1638 "version": "6.1.0",
1746− "integrity": "sha256-3Bm+Z6tsC/paG888XkywDngJ2JMos+JfOhRlkVfb7gI=",
1639+ "integrity": "sha256-QJmgNT/y7ljPHSsXaW4zxF/982BFiQ90KNL1g/NtEOQ=",
1747 "dependencies": [
1640 "dependencies": [
1748 "control",
1641 "control",
1749 "distributive",
1642 "distributive",
@@ -1765,7 +1658,7 @@
1765 "tuples": {
1658 "tuples": {
1766 "type": "registry",
1659 "type": "registry",
1767 "version": "7.0.0",
1660 "version": "7.0.0",
1768− "integrity": "sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M=",
1661+ "integrity": "sha256-BKy7EfK8S1KeTCwyWqyW1wwcpSAQuh3IsczSVgS6fzY=",
1769 "dependencies": [
1662 "dependencies": [
1770 "control",
1663 "control",
1771 "invariant",
1664 "invariant",
@@ -1775,13 +1668,13 @@
1775 "type-equality": {
1668 "type-equality": {
1776 "type": "registry",
1669 "type": "registry",
1777 "version": "4.0.1",
1670 "version": "4.0.1",
1778− "integrity": "sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw=",
1671+ "integrity": "sha256-BBqYOSnAKmayRvR5mtZoCf4SlYs2ipatD/+5nQx73aw=",
1779 "dependencies": []
1672 "dependencies": []
1780 },
1673 },
1781 "typelevel-prelude": {
1674 "typelevel-prelude": {
1782 "type": "registry",
1675 "type": "registry",
1783 "version": "7.0.0",
1676 "version": "7.0.0",
1784− "integrity": "sha256-uFF2ph+vHcQpfPuPf2a3ukJDFmLhApmkpTMviHIWgJM=",
1677+ "integrity": "sha256-+pHi14/40mTj/+lmCWqL0T7iXIXD1+NSg/KItyyoB0A=",
1785 "dependencies": [
1678 "dependencies": [
1786 "prelude",
1679 "prelude",
1787 "type-equality"
1680 "type-equality"
@@ -1790,7 +1683,7 @@
1790 "unfoldable": {
1683 "unfoldable": {
1791 "type": "registry",
1684 "type": "registry",
1792 "version": "6.0.0",
1685 "version": "6.0.0",
1793− "integrity": "sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg=",
1686+ "integrity": "sha256-BK/6By1sKp/ztk+9CF3q43SV0QDTLVdsGqFerKHSmbg=",
1794 "dependencies": [
1687 "dependencies": [
1795 "foldable-traversable",
1688 "foldable-traversable",
1796 "maybe",
1689 "maybe",
@@ -1802,38 +1695,44 @@
1802 "unicode": {
1695 "unicode": {
1803 "type": "registry",
1696 "type": "registry",
1804 "version": "6.0.0",
1697 "version": "6.0.0",
1805− "integrity": "sha256-QJnTVZpmihEAUiMeYrfkusVoziJWp2hJsgi9bMQLue8=",
1698+ "integrity": "sha256-5KugCNyYxscmZpnMbssOQA96XimuBN/bjHpdrtd5qaY=",
1806 "dependencies": [
1699 "dependencies": [
1807− "foldable-traversable",
1700+ "arrays",
1701+ "enums",
1702+ "integers",
1808 "maybe",
1703 "maybe",
1704+ "partial",
1705+ "prelude",
1809− "strings"
1706+ "strings",
1707+ "unsafe-coerce"
1810 ]
1708 ]
1811 },
1709 },
1812 "unsafe-coerce": {
1710 "unsafe-coerce": {
1813 "type": "registry",
1711 "type": "registry",
1814 "version": "6.0.0",
1712 "version": "6.0.0",
1815− "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=",
1713+ "integrity": "sha256-0L1QsaY20OILjfU5TV72d3U/tSjhmL9hJ32WMp857Lk=",
1816 "dependencies": []
1714 "dependencies": []
1817 },
1715 },
1818 "variant": {
1716 "variant": {
1819 "type": "registry",
1717 "type": "registry",
1820 "version": "8.0.0",
1718 "version": "8.0.0",
1821− "integrity": "sha256-SR//zQDg2dnbB8ZHslcxieUkCeNlbMToapvmh9onTtw=",
1719+ "integrity": "sha256-Ydrgl8liWEwYQOWW76PdZtg3vxKpoKgsnmFyTLgZkoU=",
1822 "dependencies": [
1720 "dependencies": [
1721+ "control",
1823 "enums",
1722 "enums",
1723+ "foldable-traversable",
1824 "lists",
1724 "lists",
1825 "maybe",
1725 "maybe",
1826 "partial",
1726 "partial",
1827 "prelude",
1727 "prelude",
1828− "record",
1728+ "type-equality",
1829− "tuples",
1830 "unsafe-coerce"
1729 "unsafe-coerce"
1831 ]
1730 ]
1832 },
1731 },
1833 "yoga-tree": {
1732 "yoga-tree": {
1834 "type": "registry",
1733 "type": "registry",
1835 "version": "1.0.0",
1734 "version": "1.0.0",
1836− "integrity": "sha256-wBjfEYrX1ffTHa/mE9B26C6td0FFfjYNnysTJ9/N8Hc=",
1735+ "integrity": "sha256-s8rIVEQkRi1VrMc92T9ceXcY0X6r5A4QqT6f7GgmDQI=",
1837 "dependencies": [
1736 "dependencies": [
1838 "arrays",
1737 "arrays",
1839 "control",
1738 "control",
spago.yaml+1−1
@@ -42,7 +42,7 @@ package:
42 - strings-extra
42 - strings-extra
43
43
44 publish:
44 publish:
45− version: 5.2.1
45+ version: 5.2.2
46 license: MIT
46 license: MIT
47 location:
47 location:
48 githubOwner: rowtype-yoga
48 githubOwner: rowtype-yoga
src/Yoga/JSON.purs+7−4
@@ -68,7 +68,7 @@ import Effect.Exception (message, try)
68import Effect.Uncurried as EU
68import Effect.Uncurried as EU
69import Effect.Unsafe (unsafePerformEffect)
69import Effect.Unsafe (unsafePerformEffect)
70import Foreign (F, Foreign, ForeignError(..), MultipleErrors, fail, isNull, isUndefined, readArray, readBoolean, readChar, readInt, readNull, readNumber, readString, tagOf, unsafeFromForeign, unsafeReadTagged, unsafeToForeign)
70import Foreign (F, Foreign, ForeignError(..), MultipleErrors, fail, isNull, isUndefined, readArray, readBoolean, readChar, readInt, readNull, readNumber, readString, tagOf, unsafeFromForeign, unsafeReadTagged, unsafeToForeign)
71−import Foreign.Index (readProp)
71+import Foreign.Index (hasOwnProperty, readProp)
72import Foreign.Object (Object)
72import Foreign.Object (Object)
73import Foreign.Object as Object
73import Foreign.Object as Object
74import JS.BigInt (BigInt)
74import JS.BigInt (BigInt)
@@ -403,10 +403,13 @@ instance
403 , ReadForeignVariant tail row
403 , ReadForeignVariant tail row
404 ) ⇒
404 ) ⇒
405 ReadForeignVariant (Cons name ty tail) row where
405 ReadForeignVariant (Cons name ty tail) row where
406− readVariantImpl _ o = readVariantImpl (Proxy ∷ Proxy tail) o <|> ado
406+ readVariantImpl _ o =
407+ if hasOwnProperty @String @Identity name o then rest <|> ado
407− value ∷ ty ← readProp name o >>= readImpl
408+ value ∷ ty ← readProp name o >>= readImpl
408− in inj namep value
409+ in inj namep value
410+ else rest
409 where
411 where
412+ rest = readVariantImpl (Proxy ∷ Proxy tail) o
410 namep = Proxy ∷ Proxy name
413 namep = Proxy ∷ Proxy name
411 name = reflectSymbol namep
414 name = reflectSymbol namep
412
415
test/BasicsSpec.purs+23−2
@@ -3,7 +3,7 @@ module Test.BasicsSpec where
3import Prelude
3import Prelude
4
4
5import Data.Array.NonEmpty as NEA
5import Data.Array.NonEmpty as NEA
6−import Data.Either (Either(..))
6+import Data.Either (Either(..), isLeft)
7import Data.Foldable (traverse_)
7import Data.Foldable (traverse_)
8import Data.JSDate as JSDate
8import Data.JSDate as JSDate
9import Data.List as List
9import Data.List as List
@@ -144,9 +144,30 @@ spec = describe "En- and decoding" do
144
144
145 describe "works on variant types" do
145 describe "works on variant types" do
146 it "roundtrips" do
146 it "roundtrips" do
147+ let input = inj (Proxy ∷ _ "a") {} ∷ Variant (a ∷ {}, b ∷ {})
148+ let asJSON = writeJSON input
149+ readJSON asJSON `shouldEqual` Right input
150+
151+ let input2 = inj (Proxy ∷ _ "b") {} ∷ Variant (a ∷ {}, b ∷ {})
152+ let asJSON2 = writeJSON input2
153+ readJSON asJSON2 `shouldEqual` Right input2
154+
147− roundtrips (inj (Proxy ∷ _ "erwin") "e" ∷ Variant ("erwin" ∷ String))
155+ roundtrips (inj (Proxy ∷ _ "erwin") "e" ∷ Variant (erwin ∷ String))
148 roundtrips (inj (Proxy ∷ _ "jackie") 7 ∷ Variant ExampleVariant)
156 roundtrips (inj (Proxy ∷ _ "jackie") 7 ∷ Variant ExampleVariant)
149
157
158+ it "does not select an absent optional branch" do
159+ let expected = inj (Proxy ∷ _ "a") 42 ∷ Variant (a ∷ Int, b ∷ Maybe Int)
160+ readJSON """{"a":42}""" `shouldEqual` Right expected
161+
162+ it "accepts an explicitly null optional branch" do
163+ let expected = inj (Proxy ∷ _ "b") Nothing ∷ Variant (a ∷ Int, b ∷ Maybe Int)
164+ readJSON """{"b":null}""" `shouldEqual` Right expected
165+
166+ it "rejects objects without a matching variant key" do
167+ traverse_
168+ (\json → isLeft (readJSON json ∷ _ (Variant (a ∷ {}, b ∷ {}))) `shouldEqual` true)
169+ [ "{}", """{"unknown":{}}""" ]
170+
150 describe "works on tagged variant types" do
171 describe "works on tagged variant types" do
151 it "roundtrips" do
172 it "roundtrips" do
152 roundtrips (TaggedVariant (erwin "e") ∷ TaggedVariant "super" "hans" (Erwin ()))
173 roundtrips (TaggedVariant (erwin "e") ∷ TaggedVariant "super" "hans" (Erwin ()))