git.iko.soy/rowtype-yoga/purescript-yoga-json
on main help sign in
6 files changed+317−318
since splitsnapshots
unifiedsplit
.gitignore+1 CHANGELOG.md+4 spago.lock+244−280 spago.yaml+38−32 src/Yoga/JSON.purs+7−4 test/BasicsSpec.purs+23−2
.gitignore+1
@@ -10,3 +10,4 @@
1010/coverage/
1111/.idea/
1212.spec-results
13+.DS_Store
CHANGELOG.md+4
@@ -1,5 +1,9 @@
11# Changelog
22
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+
37## v4.0.1
48
59- Allow the type of `read*` functions to be visibly applied (#24 by @postsolar)
spago.lock+244−280
@@ -5,91 +5,102 @@
55 "path": "./",
66 "core": {
77 "dependencies": [
8− "arrays",
9− "bifunctors",
10− "control",
11− "datetime",
12− "effect",
13− "either",
14− "exceptions",
15− "foldable-traversable",
16− "foreign",
17− "foreign-object",
18− "free",
19− "identity",
20− "integers",
21− "js-bigints",
22− "js-date",
23− "lists",
24− "maybe",
25− "newtype",
26− "nullable",
27− "numbers",
28− "ordered-collections",
29− "partial",
30− "prelude",
31− "record",
32− "strings",
33− "transformers",
34− "tuples",
35− "typelevel-prelude",
36− "unsafe-coerce",
37− "variant",
38− "yoga-tree"
39− ],
40− "build_plan": [
41− "arrays",
42− "bifunctors",
43− "catenable-lists",
44− "const",
45− "contravariant",
46− "control",
47− "datetime",
48− "distributive",
49− "effect",
50− "either",
51− "enums",
52− "exceptions",
53− "exists",
54− "foldable-traversable",
55− "foreign",
56− "foreign-object",
57− "free",
58− "functions",
59− "functors",
60− "gen",
61− "identity",
62− "integers",
63− "invariant",
64− "js-bigints",
65− "js-date",
66− "lazy",
67− "lists",
68− "maybe",
69− "newtype",
70− "nonempty",
71− "now",
72− "nullable",
73− "numbers",
74− "ordered-collections",
75− "orders",
76− "partial",
77− "prelude",
78− "profunctor",
79− "record",
80− "refs",
81− "safe-coerce",
82− "st",
83− "strings",
84− "tailrec",
85− "transformers",
86− "tuples",
87− "type-equality",
88− "typelevel-prelude",
89− "unfoldable",
90− "unsafe-coerce",
91− "variant",
92− "yoga-tree"
8+ {
9+ "arrays": ">=7.3.0 <8.0.0"
10+ },
11+ {
12+ "bifunctors": ">=6.0.0 <7.0.0"
13+ },
14+ {
15+ "control": ">=6.0.0 <7.0.0"
16+ },
17+ {
18+ "datetime": ">=6.1.0 <7.0.0"
19+ },
20+ {
21+ "effect": ">=4.0.0 <5.0.0"
22+ },
23+ {
24+ "either": ">=6.1.0 <7.0.0"
25+ },
26+ {
27+ "exceptions": ">=6.1.0 <7.0.0"
28+ },
29+ {
30+ "foldable-traversable": ">=6.0.0 <7.0.0"
31+ },
32+ {
33+ "foreign": ">=7.0.0 <8.0.0"
34+ },
35+ {
36+ "foreign-object": ">=4.1.0 <5.0.0"
37+ },
38+ {
39+ "free": ">=7.1.0 <8.0.0"
40+ },
41+ {
42+ "identity": ">=6.0.0 <7.0.0"
43+ },
44+ {
45+ "integers": ">=6.0.0 <7.0.0"
46+ },
47+ {
48+ "js-bigints": ">=2.2.1 <3.0.0"
49+ },
50+ {
51+ "js-date": ">=8.0.0 <9.0.0"
52+ },
53+ {
54+ "lists": ">=7.0.0 <8.0.0"
55+ },
56+ {
57+ "maybe": ">=6.0.0 <7.0.0"
58+ },
59+ {
60+ "newtype": ">=5.0.0 <6.0.0"
61+ },
62+ {
63+ "nullable": ">=6.0.0 <7.0.0"
64+ },
65+ {
66+ "numbers": ">=9.0.1 <10.0.0"
67+ },
68+ {
69+ "ordered-collections": ">=3.2.0 <4.0.0"
70+ },
71+ {
72+ "partial": ">=4.0.0 <5.0.0"
73+ },
74+ {
75+ "prelude": ">=6.0.2 <7.0.0"
76+ },
77+ {
78+ "record": ">=4.0.0 <5.0.0"
79+ },
80+ {
81+ "safe-coerce": ">=2.0.0 <3.0.0"
82+ },
83+ {
84+ "strings": ">=6.0.1 <7.0.0"
85+ },
86+ {
87+ "transformers": ">=6.1.0 <7.0.0"
88+ },
89+ {
90+ "tuples": ">=7.0.0 <8.0.0"
91+ },
92+ {
93+ "typelevel-prelude": ">=7.0.0 <8.0.0"
94+ },
95+ {
96+ "unsafe-coerce": ">=6.0.0 <7.0.0"
97+ },
98+ {
99+ "variant": ">=8.0.0 <9.0.0"
100+ },
101+ {
102+ "yoga-tree": ">=1.0.0 <2.0.0"
103+ }
93104 ]
94105 },
95106 "test": {
@@ -98,83 +109,6 @@
98109 "spec-discovery",
99110 "spec-node",
100111 "strings-extra"
101− ],
102− "build_plan": [
103− "aff",
104− "ansi",
105− "argonaut-codecs",
106− "argonaut-core",
107− "arraybuffer-types",
108− "arrays",
109− "avar",
110− "bifunctors",
111− "catenable-lists",
112− "console",
113− "const",
114− "contravariant",
115− "control",
116− "datetime",
117− "distributive",
118− "effect",
119− "either",
120− "enums",
121− "exceptions",
122− "exists",
123− "exitcodes",
124− "foldable-traversable",
125− "foreign",
126− "foreign-object",
127− "fork",
128− "free",
129− "functions",
130− "functors",
131− "gen",
132− "identity",
133− "integers",
134− "invariant",
135− "js-date",
136− "lazy",
137− "lists",
138− "maybe",
139− "mmorph",
140− "newtype",
141− "node-buffer",
142− "node-event-emitter",
143− "node-fs",
144− "node-path",
145− "node-process",
146− "node-streams",
147− "nonempty",
148− "now",
149− "nullable",
150− "numbers",
151− "open-memoize",
152− "optparse",
153− "ordered-collections",
154− "orders",
155− "parallel",
156− "partial",
157− "pipes",
158− "posix-types",
159− "prelude",
160− "profunctor",
161− "record",
162− "refs",
163− "safe-coerce",
164− "spec",
165− "spec-discovery",
166− "spec-node",
167− "st",
168− "strings",
169− "strings-extra",
170− "tailrec",
171− "transformers",
172− "tuples",
173− "type-equality",
174− "typelevel-prelude",
175− "unfoldable",
176− "unicode",
177− "unsafe-coerce"
178112 ]
179113 }
180114 }
@@ -712,21 +646,19 @@
712646 "aff": {
713647 "type": "registry",
714648 "version": "8.0.0",
715− "integrity": "sha256-5MmdI4+0RHBtSBy+YlU3/Cq4R5W2ih3OaRedJIrVHdk=",
649+ "integrity": "sha256-9BRIrSdRoYybfiUmBqgKJ66cPqxYHb277bVWQMn/9sg=",
716650 "dependencies": [
717− "bifunctors",
718651 "control",
719652 "datetime",
720653 "effect",
721654 "either",
722655 "exceptions",
723− "foldable-traversable",
724656 "functions",
725− "maybe",
726657 "newtype",
727658 "parallel",
659+ "partial",
728660 "prelude",
729− "refs",
661+ "st",
730662 "tailrec",
731663 "transformers",
732664 "unsafe-coerce"
@@ -735,35 +667,40 @@
735667 "ansi": {
736668 "type": "registry",
737669 "version": "7.0.0",
738− "integrity": "sha256-ZMB6HD+q9CXvn9fRCmJ8dvuDrOVHcjombL3oNOerVnE=",
670+ "integrity": "sha256-tOUaXJFzPSfBVAqLI8hc+Tz2M1rg16cXqyHaK/3SmFg=",
739671 "dependencies": [
740672 "foldable-traversable",
741673 "lists",
742− "strings"
674+ "prelude"
743675 ]
744676 },
745677 "argonaut-codecs": {
746678 "type": "registry",
747679 "version": "9.1.0",
748− "integrity": "sha256-N6efXByUeg848ompEqJfVvZuZPfdRYDGlTDFn0G0Oh8=",
680+ "integrity": "sha256-K910SBrmYallESsm8pxJYThs7lig6hxX3M4PW33Cgew=",
749681 "dependencies": [
750682 "argonaut-core",
751683 "arrays",
752− "effect",
684+ "bifunctors",
685+ "either",
686+ "foldable-traversable",
753687 "foreign-object",
754688 "identity",
755689 "integers",
690+ "lists",
756691 "maybe",
757692 "nonempty",
758693 "ordered-collections",
759694 "prelude",
760− "record"
695+ "record",
696+ "strings",
697+ "tuples"
761698 ]
762699 },
763700 "argonaut-core": {
764701 "type": "registry",
765702 "version": "7.0.0",
766− "integrity": "sha256-RC82GfAjItydxrO24cdX373KHVZiLqybu19b5X8u7B4=",
703+ "integrity": "sha256-gYZihtBIKthVuXXoiPphMookSf8M5aHyFYkcIWqlxTM=",
767704 "dependencies": [
768705 "arrays",
769706 "control",
@@ -781,13 +718,13 @@
781718 "arraybuffer-types": {
782719 "type": "registry",
783720 "version": "3.0.2",
784− "integrity": "sha256-mQKokysYVkooS4uXbO+yovmV/s8b138Ws3zQvOwIHRA=",
721+ "integrity": "sha256-p05cJnSkyeoB7VHzMyc2Eb1RwUaB7Nl0sQSqEGNEUD8=",
785722 "dependencies": []
786723 },
787724 "arrays": {
788725 "type": "registry",
789726 "version": "7.3.0",
790− "integrity": "sha256-tmcklBlc/muUtUfr9RapdCPwnlQeB3aSrC4dK85gQlc=",
727+ "integrity": "sha256-GD4z7LCi9wzi7FCQqbWhvs8paoUK9NO+HwgXZ+KP8Rk=",
791728 "dependencies": [
792729 "bifunctors",
793730 "control",
@@ -808,20 +745,21 @@
808745 "avar": {
809746 "type": "registry",
810747 "version": "5.0.1",
811− "integrity": "sha256-f+bRR3qQPa/GVe4UbLQiJBy7+PzJkUCwT6qNn0UlkMY=",
748+ "integrity": "sha256-8V4SxF4TIWZ9Ik1P4lPzIRUAZeFBe8w5WA2VcCEKsIk=",
812749 "dependencies": [
813750 "aff",
814751 "effect",
815752 "either",
816753 "exceptions",
817754 "functions",
818− "maybe"
755+ "maybe",
756+ "prelude"
819757 ]
820758 },
821759 "bifunctors": {
822760 "type": "registry",
823761 "version": "6.0.0",
824− "integrity": "sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw=",
762+ "integrity": "sha256-tXhmlMiyVy6mbUreVZQt/2EGEsPr0T1PjJi+YCG5J7E=",
825763 "dependencies": [
826764 "const",
827765 "either",
@@ -833,7 +771,7 @@
833771 "catenable-lists": {
834772 "type": "registry",
835773 "version": "7.0.0",
836− "integrity": "sha256-76vYENhwF4BWTBsjeLuErCH2jqVT4M3R1HX+4RwSftA=",
774+ "integrity": "sha256-7+i/MHBLIRh604iCNT4ENWRWE/wuHIotER4kpdX9Ve0=",
837775 "dependencies": [
838776 "control",
839777 "foldable-traversable",
@@ -844,19 +782,10 @@
844782 "unfoldable"
845783 ]
846784 },
847− "console": {
848− "type": "registry",
849− "version": "6.1.0",
850− "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=",
851− "dependencies": [
852− "effect",
853− "prelude"
854− ]
855− },
856785 "const": {
857786 "type": "registry",
858787 "version": "6.0.0",
859− "integrity": "sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc=",
788+ "integrity": "sha256-S+m0lQsxnji0z1XRUmkn+3RFuWJ5CXWuIr1u3i8Bfoc=",
860789 "dependencies": [
861790 "invariant",
862791 "newtype",
@@ -866,7 +795,7 @@
866795 "contravariant": {
867796 "type": "registry",
868797 "version": "6.0.0",
869− "integrity": "sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c=",
798+ "integrity": "sha256-nuckEWqL80NaPmR/l9AUyrfycNh18XcvlZV9PAamwqc=",
870799 "dependencies": [
871800 "const",
872801 "either",
@@ -878,7 +807,7 @@
878807 "control": {
879808 "type": "registry",
880809 "version": "6.0.0",
881− "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=",
810+ "integrity": "sha256-0vxyYh5FL+ilxgLo954w1LqCUC0RSIivNNlb9CaNUQg=",
882811 "dependencies": [
883812 "newtype",
884813 "prelude"
@@ -887,7 +816,7 @@
887816 "datetime": {
888817 "type": "registry",
889818 "version": "6.1.0",
890− "integrity": "sha256-g/5X5BBegQWLpI9IWD+sY6mcaYpzzlW5lz5NBzaMtyI=",
819+ "integrity": "sha256-tbv6eDXy6QOD7YSknxYSbsDF32OC2JrNbSBpzMs7Doc=",
891820 "dependencies": [
892821 "bifunctors",
893822 "control",
@@ -910,7 +839,7 @@
910839 "distributive": {
911840 "type": "registry",
912841 "version": "6.0.0",
913− "integrity": "sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ=",
842+ "integrity": "sha256-netyJK4B32PDYHD0tF2AenKgo3urzbI770ycM0pArAo=",
914843 "dependencies": [
915844 "identity",
916845 "newtype",
@@ -922,7 +851,7 @@
922851 "effect": {
923852 "type": "registry",
924853 "version": "4.0.0",
925− "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=",
854+ "integrity": "sha256-DdqU3bncRTjgMVPPRlAuGHVeajSPEcRaRhNuio7if6s=",
926855 "dependencies": [
927856 "prelude"
928857 ]
@@ -930,7 +859,7 @@
930859 "either": {
931860 "type": "registry",
932861 "version": "6.1.0",
933− "integrity": "sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY=",
862+ "integrity": "sha256-tBHx3PgtH4GZOApZCDkcM7szRTYJinrUrVGWazQCUUg=",
934863 "dependencies": [
935864 "control",
936865 "invariant",
@@ -941,7 +870,7 @@
941870 "enums": {
942871 "type": "registry",
943872 "version": "6.0.1",
944− "integrity": "sha256-HWaD73JFLorc4A6trKIRUeDMdzE+GpkJaEOM1nTNkC8=",
873+ "integrity": "sha256-sdZOmLX5+5pASGpvVyT0vSD5BBYQjZiayjV5XiPutso=",
945874 "dependencies": [
946875 "control",
947876 "either",
@@ -958,7 +887,7 @@
958887 "exceptions": {
959888 "type": "registry",
960889 "version": "6.1.0",
961− "integrity": "sha256-K0T89IHtF3vBY7eSAO7eDOqSb2J9kZGAcDN5+IKsF8E=",
890+ "integrity": "sha256-nRrr+N0wk0TUFOWLR7e1n1oxcXo/X345bQUtoY9lW6A=",
962891 "dependencies": [
963892 "effect",
964893 "either",
@@ -969,7 +898,7 @@
969898 "exists": {
970899 "type": "registry",
971900 "version": "6.0.0",
972− "integrity": "sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8=",
901+ "integrity": "sha256-vtLbrWNaI+pzx/2fw2AQnCovoLtcosClIhjO26QKkh8=",
973902 "dependencies": [
974903 "unsafe-coerce"
975904 ]
@@ -977,15 +906,17 @@
977906 "exitcodes": {
978907 "type": "registry",
979908 "version": "4.0.0",
980− "integrity": "sha256-4wxViTbyOoyKJ/WaRGI6+hZmgMKI5Miv16lSwefiLSM=",
909+ "integrity": "sha256-xBl4aFSEQ05Owp1ZvO6OxxvLK3LVzU35RSbj79SsePQ=",
981910 "dependencies": [
982− "enums"
911+ "enums",
912+ "maybe",
913+ "prelude"
983914 ]
984915 },
985916 "foldable-traversable": {
986917 "type": "registry",
987918 "version": "6.0.0",
988− "integrity": "sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM=",
919+ "integrity": "sha256-NGGWyCio/xjce6fPP7y3wwg7CheqllID6aJudDxbWhA=",
989920 "dependencies": [
990921 "bifunctors",
991922 "const",
@@ -1003,23 +934,23 @@
1003934 "foreign": {
1004935 "type": "registry",
1005936 "version": "7.0.0",
1006− "integrity": "sha256-1ORiqoS3HW+qfwSZAppHPWy4/6AQysxZ2t29jcdUMNA=",
937+ "integrity": "sha256-jiDRMVQfovGsbbA/FzbzYf6iWk9i2b5gNrIjz+gFfsI=",
1007938 "dependencies": [
1008939 "either",
1009940 "functions",
1010− "identity",
1011941 "integers",
1012942 "lists",
1013943 "maybe",
1014944 "prelude",
1015945 "strings",
1016− "transformers"
946+ "transformers",
947+ "unsafe-coerce"
1017948 ]
1018949 },
1019950 "foreign-object": {
1020951 "type": "registry",
1021952 "version": "4.1.0",
1022− "integrity": "sha256-q24okj6mT+yGHYQ+ei/pYPj5ih6sTbu7eDv/WU56JVo=",
953+ "integrity": "sha256-x/Q7r80z/vmHRKvPwhYmHP/DnJciPtsyGfRTMzayKIU=",
1023954 "dependencies": [
1024955 "arrays",
1025956 "foldable-traversable",
@@ -1032,21 +963,24 @@
1032963 "tailrec",
1033964 "tuples",
1034965 "typelevel-prelude",
1035− "unfoldable"
966+ "unfoldable",
967+ "unsafe-coerce"
1036968 ]
1037969 },
1038970 "fork": {
1039971 "type": "registry",
1040972 "version": "6.0.0",
1041− "integrity": "sha256-X7u0SuCvFbLbzuNEKLBNuWjmcroqMqit4xEzpQwAP7E=",
973+ "integrity": "sha256-0keBVeZZg1eCZEy/En1CohVW829gQUqKtqBNIRa93/A=",
1042974 "dependencies": [
1043− "aff"
975+ "aff",
976+ "prelude",
977+ "transformers"
1044978 ]
1045979 },
1046980 "free": {
1047981 "type": "registry",
1048982 "version": "7.1.0",
1049− "integrity": "sha256-JAumgEsGSzJCNLD8AaFvuX7CpqS5yruCngi6yI7+V5k=",
983+ "integrity": "sha256-tUBInfUpRQEw4u94GWcYW7EYdmSdDHSRn88a+C0eltU=",
1050984 "dependencies": [
1051985 "catenable-lists",
1052986 "control",
@@ -1067,7 +1001,7 @@
10671001 "functions": {
10681002 "type": "registry",
10691003 "version": "6.0.0",
1070− "integrity": "sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI=",
1004+ "integrity": "sha256-0jgtOr+SFO4UScKc40oA/9Vdcf2rLn3h3vZlY0KfqVo=",
10711005 "dependencies": [
10721006 "prelude"
10731007 ]
@@ -1075,7 +1009,7 @@
10751009 "functors": {
10761010 "type": "registry",
10771011 "version": "5.0.0",
1078− "integrity": "sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU=",
1012+ "integrity": "sha256-W1o/4wcp6S3chodYL8uixlXK2mfr1L+SzM1R+whqUco=",
10791013 "dependencies": [
10801014 "bifunctors",
10811015 "const",
@@ -1095,7 +1029,7 @@
10951029 "gen": {
10961030 "type": "registry",
10971031 "version": "4.0.0",
1098− "integrity": "sha256-f7yzAXWwr+xnaqEOcvyO3ezKdoes8+WXWdXIHDBCAPI=",
1032+ "integrity": "sha256-kyOateeOtQa07vfTMYeSuCKdelgKE1R65fwKkZ10wsY=",
10991033 "dependencies": [
11001034 "either",
11011035 "foldable-traversable",
@@ -1112,7 +1046,7 @@
11121046 "identity": {
11131047 "type": "registry",
11141048 "version": "6.0.0",
1115− "integrity": "sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY=",
1049+ "integrity": "sha256-RY/iXPpxpqvKHYfJeFVNI1J06kohB9rbtWYuha8t0LE=",
11161050 "dependencies": [
11171051 "control",
11181052 "invariant",
@@ -1123,7 +1057,7 @@
11231057 "integers": {
11241058 "type": "registry",
11251059 "version": "6.0.0",
1126− "integrity": "sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158=",
1060+ "integrity": "sha256-Y8yozC1uHRLcruobEyv5/bMKzE1BoKJ/olHv6o+bgm8=",
11271061 "dependencies": [
11281062 "maybe",
11291063 "numbers",
@@ -1133,7 +1067,7 @@
11331067 "invariant": {
11341068 "type": "registry",
11351069 "version": "6.0.0",
1136− "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=",
1070+ "integrity": "sha256-HyoT1I5qIHRq8RSZji6zZDvqnpVjLw748utrKwZtqsw=",
11371071 "dependencies": [
11381072 "control",
11391073 "prelude"
@@ -1142,7 +1076,7 @@
11421076 "js-bigints": {
11431077 "type": "registry",
11441078 "version": "2.2.1",
1145− "integrity": "sha256-hKWZo9NxtsAaHmNXr6B8GY4c0olQbYLXPVGWm4TF2Ss=",
1079+ "integrity": "sha256-r1rE6Olv5b3JrP32lY2uKJ+eBRTsrVnC983K8VWwqe4=",
11461080 "dependencies": [
11471081 "integers",
11481082 "maybe",
@@ -1152,20 +1086,22 @@
11521086 "js-date": {
11531087 "type": "registry",
11541088 "version": "8.0.0",
1155− "integrity": "sha256-6TVF4DWg5JL+jRAsoMssYw8rgOVALMUHT1CuNZt8NRo=",
1089+ "integrity": "sha256-DNQrp4xYc8o80jtxo0aOkUeXGi6h0Xidkk2ZQ8Y4l5Y=",
11561090 "dependencies": [
11571091 "datetime",
11581092 "effect",
1159− "exceptions",
1093+ "enums",
11601094 "foreign",
1095+ "functions",
11611096 "integers",
1162− "now"
1097+ "maybe",
1098+ "prelude"
11631099 ]
11641100 },
11651101 "lazy": {
11661102 "type": "registry",
11671103 "version": "6.0.0",
1168− "integrity": "sha256-lMsfFOnlqfe4KzRRiW8ot5ge6HtcU3Eyh2XkXcP5IgU=",
1104+ "integrity": "sha256-MHRC+1Pc+AjortBp4b/e1e6KpEpsDwaJBNBB7TOL+1I=",
11691105 "dependencies": [
11701106 "control",
11711107 "foldable-traversable",
@@ -1176,7 +1112,7 @@
11761112 "lists": {
11771113 "type": "registry",
11781114 "version": "7.0.0",
1179− "integrity": "sha256-EKF15qYqucuXP2lT/xPxhqy58f0FFT6KHdIB/yBOayI=",
1115+ "integrity": "sha256-/mGd7wLoU+wsTcqii7SSUByxsvwvjnu2PjwAD47yYb4=",
11801116 "dependencies": [
11811117 "bifunctors",
11821118 "control",
@@ -1195,7 +1131,7 @@
11951131 "maybe": {
11961132 "type": "registry",
11971133 "version": "6.0.0",
1198− "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=",
1134+ "integrity": "sha256-8X6XEgtZ5lqfkEuc1hWOofnL6mwhk8gSJTxwvbR/SbY=",
11991135 "dependencies": [
12001136 "control",
12011137 "invariant",
@@ -1206,17 +1142,24 @@
12061142 "mmorph": {
12071143 "type": "registry",
12081144 "version": "7.0.0",
1209− "integrity": "sha256-urZlZNNqGeQFe5D/ClHlR8QgGBNHTMFPtJ5S5IpflTQ=",
1145+ "integrity": "sha256-Cfltaq+tfYjuSoSBN/b8cSQZbvZTqIRs6ebQewbIkGs=",
12101146 "dependencies": [
1147+ "bifunctors",
1148+ "either",
12111149 "free",
12121150 "functors",
1213− "transformers"
1151+ "identity",
1152+ "maybe",
1153+ "newtype",
1154+ "prelude",
1155+ "transformers",
1156+ "tuples"
12141157 ]
12151158 },
12161159 "newtype": {
12171160 "type": "registry",
12181161 "version": "5.0.0",
1219− "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=",
1162+ "integrity": "sha256-dt6w0cty4OS+Pjt9fsh3iU6ottqSU83mdAZkaEEvo6c=",
12201163 "dependencies": [
12211164 "prelude",
12221165 "safe-coerce"
@@ -1225,12 +1168,15 @@
12251168 "node-buffer": {
12261169 "type": "registry",
12271170 "version": "9.0.0",
1228− "integrity": "sha256-PWE2DJ5ruBLCmeA/fUiuySEFmUJ/VuRfyrnCuVZBlu4=",
1171+ "integrity": "sha256-RdQjilmEHqsT4fwpCr8Mavw8KTafYrS3ZM6zeAAVAl8=",
12291172 "dependencies": [
12301173 "arraybuffer-types",
12311174 "effect",
1175+ "functions",
12321176 "maybe",
12331177 "nullable",
1178+ "partial",
1179+ "prelude",
12341180 "st",
12351181 "unsafe-coerce"
12361182 ]
@@ -1238,7 +1184,7 @@
12381184 "node-event-emitter": {
12391185 "type": "registry",
12401186 "version": "3.0.0",
1241− "integrity": "sha256-Qw0MjsT4xRH2j2i4K8JmRjcMKnH5z1Cw39t00q4LE4w=",
1187+ "integrity": "sha256-wodx71NxJBPXOaawFn01V1ByYB2vT+I3RuV2giOVKMg=",
12421188 "dependencies": [
12431189 "effect",
12441190 "either",
@@ -1252,8 +1198,9 @@
12521198 "node-fs": {
12531199 "type": "registry",
12541200 "version": "9.2.0",
1255− "integrity": "sha256-Sg0vkXycEzkEerX6hLccz21Ygd9w1+QSk1thotRZPGI=",
1201+ "integrity": "sha256-fxioTSm9y47WuYs9F/7nxCh/RVDCl3Kr3Hg779J4SJA=",
12561202 "dependencies": [
1203+ "aff",
12571204 "datetime",
12581205 "effect",
12591206 "either",
@@ -1269,14 +1216,13 @@
12691216 "nullable",
12701217 "partial",
12711218 "prelude",
1272− "strings",
1273− "unsafe-coerce"
1219+ "strings"
12741220 ]
12751221 },
12761222 "node-path": {
12771223 "type": "registry",
12781224 "version": "5.0.1",
1279− "integrity": "sha256-ePOElFamHkffhwJcS0Ozq4A14rflnkasFU6X2B8/yXs=",
1225+ "integrity": "sha256-j7n/SmpVz0FOMJl4XZop3ofJ+MeIPkMNqUEUKHEL6Us=",
12801226 "dependencies": [
12811227 "effect"
12821228 ]
@@ -1284,23 +1230,25 @@
12841230 "node-process": {
12851231 "type": "registry",
12861232 "version": "11.2.0",
1287− "integrity": "sha256-+2MQDYChjGbVbapCyJtuWYwD41jk+BntF/kcOTKBMVs=",
1233+ "integrity": "sha256-onzKeNmaeYfN3HSDPqSFTrrP2Yl9tnVsfKKhnf2plxM=",
12881234 "dependencies": [
12891235 "effect",
1236+ "exceptions",
12901237 "foreign",
12911238 "foreign-object",
12921239 "maybe",
12931240 "node-event-emitter",
12941241 "node-streams",
1242+ "nullable",
12951243 "posix-types",
12961244 "prelude",
1297− "unsafe-coerce"
1245+ "strings"
12981246 ]
12991247 },
13001248 "node-streams": {
13011249 "type": "registry",
13021250 "version": "9.0.1",
1303− "integrity": "sha256-7RJ6RqjOlhW+QlDFQNUHlkCG/CuYTTLT8yary5jhhsU=",
1251+ "integrity": "sha256-yuVGm/R/tBr4Nphi+a1a984Z0fkmN9Q5wWtSmbmJTpA=",
13041252 "dependencies": [
13051253 "aff",
13061254 "arrays",
@@ -1321,7 +1269,7 @@
13211269 "nonempty": {
13221270 "type": "registry",
13231271 "version": "7.0.0",
1324− "integrity": "sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs=",
1272+ "integrity": "sha256-Ctkq8/+KiGqCE53Y/LvibA/coy7ev9HtRZU+GYS7yfQ=",
13251273 "dependencies": [
13261274 "control",
13271275 "foldable-traversable",
@@ -1334,35 +1282,37 @@
13341282 "now": {
13351283 "type": "registry",
13361284 "version": "6.0.0",
1337− "integrity": "sha256-xZ7x37ZMREfs6GCDw/h+FaKHV/3sPWmtqBZRGTxybQY=",
1285+ "integrity": "sha256-mTyG4s8tps3XIf0jjV/lME2/QlwMzrQly2wqfSSUM3o=",
13381286 "dependencies": [
13391287 "datetime",
1340− "effect"
1288+ "effect",
1289+ "prelude"
13411290 ]
13421291 },
13431292 "nullable": {
13441293 "type": "registry",
13451294 "version": "6.0.0",
1346− "integrity": "sha256-yiGBVl3AD+Guy4kNWWeN+zl1gCiJK+oeIFtZtPCw4+o=",
1295+ "integrity": "sha256-CDAZk+L9Sc0GCFTkE8n+qdp4Ys8avvnkU+m2hVALt7M=",
13471296 "dependencies": [
1348− "effect",
13491297 "functions",
1350− "maybe"
1298+ "maybe",
1299+ "prelude"
13511300 ]
13521301 },
13531302 "numbers": {
13541303 "type": "registry",
13551304 "version": "9.0.1",
1356− "integrity": "sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk=",
1305+ "integrity": "sha256-ZydYckgwRAnRaFC7pu6fADhzdwX+UqHZrfJyet64zls=",
13571306 "dependencies": [
13581307 "functions",
1359− "maybe"
1308+ "maybe",
1309+ "prelude"
13601310 ]
13611311 },
13621312 "open-memoize": {
13631313 "type": "registry",
13641314 "version": "6.2.0",
1365− "integrity": "sha256-p1m7wF3aHQ80yUvqMs20OTMl496WS6YpKlmI2Nkg9j0=",
1315+ "integrity": "sha256-yJLuVYX8FocHIJ+6q7efH/Pj4S+e1Y57DZ5Dn7qf4ww=",
13661316 "dependencies": [
13671317 "either",
13681318 "integers",
@@ -1378,12 +1328,10 @@
13781328 "optparse": {
13791329 "type": "registry",
13801330 "version": "5.0.1",
1381− "integrity": "sha256-cEzEkNW4q0gZlXl4z0zn+H2vs6l2UAp7NPHCsois73k=",
1331+ "integrity": "sha256-2btDjHPRR0uujUQJuZAN9AzvVoXe7yG6IwnY5evERhQ=",
13821332 "dependencies": [
1383− "aff",
13841333 "arrays",
13851334 "bifunctors",
1386− "console",
13871335 "control",
13881336 "effect",
13891337 "either",
@@ -1392,7 +1340,6 @@
13921340 "exitcodes",
13931341 "foldable-traversable",
13941342 "free",
1395− "gen",
13961343 "integers",
13971344 "lazy",
13981345 "lists",
@@ -1415,16 +1362,19 @@
14151362 "ordered-collections": {
14161363 "type": "registry",
14171364 "version": "3.2.0",
1418− "integrity": "sha256-o9jqsj5rpJmMdoe/zyufWHFjYYFTTsJpgcuCnqCO6PM=",
1365+ "integrity": "sha256-NaEXc2cz/7lJfxPWEja4XlZbGxuRqJwFKQJjsJf51kQ=",
14191366 "dependencies": [
14201367 "arrays",
1368+ "control",
14211369 "foldable-traversable",
1370+ "functions",
14221371 "gen",
14231372 "lists",
14241373 "maybe",
1374+ "newtype",
14251375 "partial",
14261376 "prelude",
1427− "st",
1377+ "safe-coerce",
14281378 "tailrec",
14291379 "tuples",
14301380 "unfoldable"
@@ -1433,7 +1383,7 @@
14331383 "orders": {
14341384 "type": "registry",
14351385 "version": "6.0.0",
1436− "integrity": "sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink=",
1386+ "integrity": "sha256-nSMxZK7wxyDULkjZqvMyB71mVo6b0AyLLHosDVbv1XM=",
14371387 "dependencies": [
14381388 "newtype",
14391389 "prelude"
@@ -1442,7 +1392,7 @@
14421392 "parallel": {
14431393 "type": "registry",
14441394 "version": "7.0.0",
1445− "integrity": "sha256-gUC9i4Txnx9K9RcMLsjujbwZz6BB1bnE2MLvw4GIw5o=",
1395+ "integrity": "sha256-bAGpVhrFz2IyHkA4MR7+tE/19FZ7dzYBdYPgK5svkqw=",
14461396 "dependencies": [
14471397 "control",
14481398 "effect",
@@ -1460,17 +1410,24 @@
14601410 "partial": {
14611411 "type": "registry",
14621412 "version": "4.0.0",
1463− "integrity": "sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4=",
1413+ "integrity": "sha256-mdrlJBAgFMh79hNRW39uv7c+BwnnaOrAMmdh7+VhEhs=",
14641414 "dependencies": []
14651415 },
14661416 "pipes": {
14671417 "type": "registry",
14681418 "version": "8.0.0",
1469− "integrity": "sha256-kvfqGM4cPA/wCcBHbp5psouFw5dZGvku2462x7ZBwSY=",
1419+ "integrity": "sha256-dtUNpG8BGVr7pu6mQZyAnUAftUHgNS7f0QH3Kw5UTpQ=",
14701420 "dependencies": [
14711421 "aff",
1422+ "control",
1423+ "effect",
1424+ "either",
1425+ "foldable-traversable",
1426+ "identity",
14721427 "lists",
1428+ "maybe",
14731429 "mmorph",
1430+ "newtype",
14741431 "prelude",
14751432 "tailrec",
14761433 "transformers",
@@ -1480,22 +1437,23 @@
14801437 "posix-types": {
14811438 "type": "registry",
14821439 "version": "6.0.0",
1483− "integrity": "sha256-ZfFz8RR1lee/o/Prccyeut3Q+9tYd08mlR72sIh6GzA=",
1440+ "integrity": "sha256-Je5jG439F/SFO/IvVevZnWVxDIonrehlKuJkefP2lHE=",
14841441 "dependencies": [
14851442 "maybe",
1443+ "newtype",
14861444 "prelude"
14871445 ]
14881446 },
14891447 "prelude": {
14901448 "type": "registry",
14911449 "version": "6.0.2",
1492− "integrity": "sha256-kiAPZxihtAel8uRiTNdccf4qylp/9J3jNkEHNAD0MsE=",
1450+ "integrity": "sha256-IqykrDRquGUD/LRSad7y75hZv3bUsGQ4knc8tdez8Qw=",
14931451 "dependencies": []
14941452 },
14951453 "profunctor": {
14961454 "type": "registry",
14971455 "version": "6.0.1",
1498− "integrity": "sha256-E58hSYdJvF2Qjf9dnWLPlJKh2Z2fLfFLkQoYi16vsFk=",
1456+ "integrity": "sha256-Ow0mJC+PIIRq/a3mzCWY5vxuTgR/e+Ee68+mWeSRnWY=",
14991457 "dependencies": [
15001458 "control",
15011459 "distributive",
@@ -1510,7 +1468,7 @@
15101468 "record": {
15111469 "type": "registry",
15121470 "version": "4.0.0",
1513− "integrity": "sha256-Za5U85bTRJEfGK5Sk4hM41oXy84YQI0I8TL3WUn1Qzg=",
1471+ "integrity": "sha256-WQ8fqp4X1wTA70J4qUcPW4Z7DCwx6e5KJnT/EuTdWSc=",
15141472 "dependencies": [
15151473 "functions",
15161474 "prelude",
@@ -1520,7 +1478,7 @@
15201478 "refs": {
15211479 "type": "registry",
15221480 "version": "6.0.0",
1523− "integrity": "sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s=",
1481+ "integrity": "sha256-KKD5G9dR2SauuDGULUJsxjqDOEi1Jqm+2Sq5U2mY8YU=",
15241482 "dependencies": [
15251483 "effect",
15261484 "prelude"
@@ -1529,7 +1487,7 @@
15291487 "safe-coerce": {
15301488 "type": "registry",
15311489 "version": "2.0.0",
1532− "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=",
1490+ "integrity": "sha256-EJrxtKt5xC7TYjBZrSBO/J7Aw3DmtilYjt4olpAXWVc=",
15331491 "dependencies": [
15341492 "unsafe-coerce"
15351493 ]
@@ -1537,7 +1495,7 @@
15371495 "spec": {
15381496 "type": "registry",
15391497 "version": "8.1.1",
1540− "integrity": "sha256-EM7UfQIaSgiw13LJ4ZASkfYmmRDKIlec3nYbGKFqGhk=",
1498+ "integrity": "sha256-b6qjDb7lUJGLV+WEoywLu6BCXC4zGpfbN43mTL+vBeI=",
15411499 "dependencies": [
15421500 "aff",
15431501 "ansi",
@@ -1571,7 +1529,7 @@
15711529 "spec-discovery": {
15721530 "type": "registry",
15731531 "version": "8.4.0",
1574− "integrity": "sha256-ajaGtBe+WBnURPPxIfqyiBbxI9DvbCGpxpYYYrvi5nk=",
1532+ "integrity": "sha256-aFp8bllT/wrxQu8hMlDchQQY08dQAz+Xdq2hZi5z3yY=",
15751533 "dependencies": [
15761534 "aff",
15771535 "effect",
@@ -1584,7 +1542,7 @@
15841542 "spec-node": {
15851543 "type": "registry",
15861544 "version": "0.0.3",
1587− "integrity": "sha256-Bjzg6l4uOfMN/FV0SKuT1Mm8eMP9sloLGVcY/0MeMnI=",
1545+ "integrity": "sha256-8/9+g0obbamV0YtqzmttbWs8HaWF7CEeW+eDtqzuAAo=",
15881546 "dependencies": [
15891547 "aff",
15901548 "argonaut-codecs",
@@ -1616,8 +1574,9 @@
16161574 "st": {
16171575 "type": "registry",
16181576 "version": "6.2.0",
1619− "integrity": "sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY=",
1577+ "integrity": "sha256-WI4MEkkwUd4pnwZQ3G8VKWgX5t1RSNJludm5e9boaRo=",
16201578 "dependencies": [
1579+ "effect",
16211580 "partial",
16221581 "prelude",
16231582 "tailrec",
@@ -1627,7 +1586,7 @@
16271586 "strings": {
16281587 "type": "registry",
16291588 "version": "6.0.1",
1630− "integrity": "sha256-WssD3DbX4OPzxSdjvRMX0yvc9+pS7n5gyPv5I2Trb7k=",
1589+ "integrity": "sha256-FNto2hoNW5Da6W6crIk77YXMagBvOGHZE1kO7eZ1vLM=",
16311590 "dependencies": [
16321591 "arrays",
16331592 "control",
@@ -1650,11 +1609,10 @@
16501609 "strings-extra": {
16511610 "type": "registry",
16521611 "version": "4.0.0",
1653− "integrity": "sha256-tah7VFvEvFF4tpWXgWwGFIynpWHkYe5tpy6bWi5tMpU=",
1612+ "integrity": "sha256-Wlsa9A4hg4PnZYa9WsE0e820xilquVwm33nn067qNIA=",
16541613 "dependencies": [
16551614 "arrays",
16561615 "foldable-traversable",
1657− "maybe",
16581616 "prelude",
16591617 "strings",
16601618 "unicode"
@@ -1663,7 +1621,7 @@
16631621 "tailrec": {
16641622 "type": "registry",
16651623 "version": "6.1.0",
1666− "integrity": "sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk=",
1624+ "integrity": "sha256-xrorCfP0xV1wubs27idQCHQqdvSUuqmmL/am7Ji1wVU=",
16671625 "dependencies": [
16681626 "bifunctors",
16691627 "effect",
@@ -1678,7 +1636,7 @@
16781636 "transformers": {
16791637 "type": "registry",
16801638 "version": "6.1.0",
1681− "integrity": "sha256-3Bm+Z6tsC/paG888XkywDngJ2JMos+JfOhRlkVfb7gI=",
1639+ "integrity": "sha256-QJmgNT/y7ljPHSsXaW4zxF/982BFiQ90KNL1g/NtEOQ=",
16821640 "dependencies": [
16831641 "control",
16841642 "distributive",
@@ -1700,7 +1658,7 @@
17001658 "tuples": {
17011659 "type": "registry",
17021660 "version": "7.0.0",
1703− "integrity": "sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M=",
1661+ "integrity": "sha256-BKy7EfK8S1KeTCwyWqyW1wwcpSAQuh3IsczSVgS6fzY=",
17041662 "dependencies": [
17051663 "control",
17061664 "invariant",
@@ -1710,13 +1668,13 @@
17101668 "type-equality": {
17111669 "type": "registry",
17121670 "version": "4.0.1",
1713− "integrity": "sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw=",
1671+ "integrity": "sha256-BBqYOSnAKmayRvR5mtZoCf4SlYs2ipatD/+5nQx73aw=",
17141672 "dependencies": []
17151673 },
17161674 "typelevel-prelude": {
17171675 "type": "registry",
17181676 "version": "7.0.0",
1719− "integrity": "sha256-uFF2ph+vHcQpfPuPf2a3ukJDFmLhApmkpTMviHIWgJM=",
1677+ "integrity": "sha256-+pHi14/40mTj/+lmCWqL0T7iXIXD1+NSg/KItyyoB0A=",
17201678 "dependencies": [
17211679 "prelude",
17221680 "type-equality"
@@ -1725,7 +1683,7 @@
17251683 "unfoldable": {
17261684 "type": "registry",
17271685 "version": "6.0.0",
1728− "integrity": "sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg=",
1686+ "integrity": "sha256-BK/6By1sKp/ztk+9CF3q43SV0QDTLVdsGqFerKHSmbg=",
17291687 "dependencies": [
17301688 "foldable-traversable",
17311689 "maybe",
@@ -1737,38 +1695,44 @@
17371695 "unicode": {
17381696 "type": "registry",
17391697 "version": "6.0.0",
1740− "integrity": "sha256-QJnTVZpmihEAUiMeYrfkusVoziJWp2hJsgi9bMQLue8=",
1698+ "integrity": "sha256-5KugCNyYxscmZpnMbssOQA96XimuBN/bjHpdrtd5qaY=",
17411699 "dependencies": [
1742− "foldable-traversable",
1700+ "arrays",
1701+ "enums",
1702+ "integers",
17431703 "maybe",
1744− "strings"
1704+ "partial",
1705+ "prelude",
1706+ "strings",
1707+ "unsafe-coerce"
17451708 ]
17461709 },
17471710 "unsafe-coerce": {
17481711 "type": "registry",
17491712 "version": "6.0.0",
1750− "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=",
1713+ "integrity": "sha256-0L1QsaY20OILjfU5TV72d3U/tSjhmL9hJ32WMp857Lk=",
17511714 "dependencies": []
17521715 },
17531716 "variant": {
17541717 "type": "registry",
17551718 "version": "8.0.0",
1756− "integrity": "sha256-SR//zQDg2dnbB8ZHslcxieUkCeNlbMToapvmh9onTtw=",
1719+ "integrity": "sha256-Ydrgl8liWEwYQOWW76PdZtg3vxKpoKgsnmFyTLgZkoU=",
17571720 "dependencies": [
1721+ "control",
17581722 "enums",
1723+ "foldable-traversable",
17591724 "lists",
17601725 "maybe",
17611726 "partial",
17621727 "prelude",
1763− "record",
1764− "tuples",
1728+ "type-equality",
17651729 "unsafe-coerce"
17661730 ]
17671731 },
17681732 "yoga-tree": {
17691733 "type": "registry",
17701734 "version": "1.0.0",
1771− "integrity": "sha256-wBjfEYrX1ffTHa/mE9B26C6td0FFfjYNnysTJ9/N8Hc=",
1735+ "integrity": "sha256-s8rIVEQkRi1VrMc92T9ceXcY0X6r5A4QqT6f7GgmDQI=",
17721736 "dependencies": [
17731737 "arrays",
17741738 "control",
spago.yaml+38−32
@@ -1,38 +1,38 @@
11package:
22 name: yoga-json
33 dependencies:
4− - arrays
5− - bifunctors
6− - control
7− - datetime
8− - effect
9− - either
10− - exceptions
11− - foldable-traversable
12− - foreign
13− - foreign-object
14− - free
15− - identity
16− - integers
17− - js-bigints
18− - js-date
19− - lists
20− - maybe
21− - newtype
22− - nullable
23− - numbers
24− - ordered-collections
25− - partial
26− - prelude
27− - record
28− - strings
29− - transformers
30− - tuples
31− - typelevel-prelude
32− - unsafe-coerce
33− - variant
34− - yoga-tree
35− - js-bigints
4+ - arrays: ">=7.3.0 <8.0.0"
5+ - bifunctors: ">=6.0.0 <7.0.0"
6+ - control: ">=6.0.0 <7.0.0"
7+ - datetime: ">=6.1.0 <7.0.0"
8+ - effect: ">=4.0.0 <5.0.0"
9+ - either: ">=6.1.0 <7.0.0"
10+ - exceptions: ">=6.1.0 <7.0.0"
11+ - foldable-traversable: ">=6.0.0 <7.0.0"
12+ - foreign: ">=7.0.0 <8.0.0"
13+ - foreign-object: ">=4.1.0 <5.0.0"
14+ - free: ">=7.1.0 <8.0.0"
15+ - identity: ">=6.0.0 <7.0.0"
16+ - integers: ">=6.0.0 <7.0.0"
17+ - js-bigints: ">=2.2.1 <3.0.0"
18+ - js-date: ">=8.0.0 <9.0.0"
19+ - lists: ">=7.0.0 <8.0.0"
20+ - maybe: ">=6.0.0 <7.0.0"
21+ - newtype: ">=5.0.0 <6.0.0"
22+ - nullable: ">=6.0.0 <7.0.0"
23+ - numbers: ">=9.0.1 <10.0.0"
24+ - ordered-collections: ">=3.2.0 <4.0.0"
25+ - partial: ">=4.0.0 <5.0.0"
26+ - prelude: ">=6.0.2 <7.0.0"
27+ - record: ">=4.0.0 <5.0.0"
28+ - safe-coerce: ">=2.0.0 <3.0.0"
29+ - strings: ">=6.0.1 <7.0.0"
30+ - transformers: ">=6.1.0 <7.0.0"
31+ - tuples: ">=7.0.0 <8.0.0"
32+ - typelevel-prelude: ">=7.0.0 <8.0.0"
33+ - unsafe-coerce: ">=6.0.0 <7.0.0"
34+ - variant: ">=8.0.0 <9.0.0"
35+ - yoga-tree: ">=1.0.0 <2.0.0"
3636 test:
3737 main: Test.Main
3838 dependencies:
@@ -41,6 +41,12 @@ package:
4141 - spec-discovery
4242 - strings-extra
4343
44+ publish:
45+ version: 5.2.2
46+ license: MIT
47+ location:
48+ githubOwner: rowtype-yoga
49+ githubRepo: purescript-yoga-json
4450workspace:
4551 packageSet:
4652 registry: 63.2.1
src/Yoga/JSON.purs+7−4
@@ -68,7 +68,7 @@ import Effect.Exception (message, try)
6868import Effect.Uncurried as EU
6969import Effect.Unsafe (unsafePerformEffect)
7070import 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)
7272import Foreign.Object (Object)
7373import Foreign.Object as Object
7474import JS.BigInt (BigInt)
@@ -403,10 +403,13 @@ instance
403403 , ReadForeignVariant tail row
404404 ) ⇒
405405 ReadForeignVariant (Cons name ty tail) row where
406− readVariantImpl _ o = readVariantImpl (Proxy ∷ Proxy tail) o <|> ado
407− value ∷ ty ← readProp name o >>= readImpl
408− in inj namep value
406+ readVariantImpl _ o =
407+ if hasOwnProperty @String @Identity name o then rest <|> ado
408+ value ∷ ty ← readProp name o >>= readImpl
409+ in inj namep value
410+ else rest
409411 where
412+ rest = readVariantImpl (Proxy ∷ Proxy tail) o
410413 namep = Proxy ∷ Proxy name
411414 name = reflectSymbol namep
412415
test/BasicsSpec.purs+23−2
@@ -3,7 +3,7 @@ module Test.BasicsSpec where
33import Prelude
44
55import Data.Array.NonEmpty as NEA
6−import Data.Either (Either(..))
6+import Data.Either (Either(..), isLeft)
77import Data.Foldable (traverse_)
88import Data.JSDate as JSDate
99import Data.List as List
@@ -144,9 +144,30 @@ spec = describe "En- and decoding" do
144144
145145 describe "works on variant types" do
146146 it "roundtrips" do
147− roundtrips (inj (Proxy ∷ _ "erwin") "e" ∷ Variant ("erwin" ∷ String))
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+
155+ roundtrips (inj (Proxy ∷ _ "erwin") "e" ∷ Variant (erwin ∷ String))
148156 roundtrips (inj (Proxy ∷ _ "jackie") 7 ∷ Variant ExampleVariant)
149157
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+
150171 describe "works on tagged variant types" do
151172 it "roundtrips" do
152173 roundtrips (TaggedVariant (erwin "e") ∷ TaggedVariant "super" "hans" (Erwin ()))