@monorepolint/rules 0.6.0-alpha.2 → 0.6.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-clean.log +1 -1
- package/.turbo/turbo-compile-typescript.log +1 -1
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +160 -100
- package/.turbo/turbo-transpile-typescript.log +4 -4
- package/CHANGELOG.md +9 -0
- package/build/js/index.js +399 -246
- package/build/js/index.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/__tests__/utils.d.ts +0 -1
- package/build/types/__tests__/utils.d.ts.map +1 -1
- package/build/types/bannedDependencies.d.ts.map +1 -1
- package/build/types/fileContents.d.ts.map +1 -1
- package/build/types/index.d.ts +3 -3
- package/build/types/index.d.ts.map +1 -1
- package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -1
- package/build/types/nestedWorkspaces.d.ts.map +1 -1
- package/build/types/packageEntry.d.ts.map +1 -1
- package/build/types/packageOrder.d.ts.map +1 -1
- package/build/types/packageScript.d.ts.map +1 -1
- package/build/types/requireDependency.d.ts +12 -12
- package/build/types/requireDependency.d.ts.map +1 -1
- package/build/types/util/checkAlpha.d.ts.map +1 -1
- package/build/types/util/createRuleFactory.d.ts.map +1 -1
- package/build/types/util/packageDependencyGraphService.d.ts.map +1 -1
- package/coverage/clover.xml +1159 -818
- package/coverage/coverage-final.json +18 -18
- package/coverage/index.html +20 -20
- package/coverage/src/alphabeticalDependencies.ts.html +8 -8
- package/coverage/src/alphabeticalScripts.ts.html +5 -5
- package/coverage/src/bannedDependencies.ts.html +77 -26
- package/coverage/src/consistentDependencies.ts.html +58 -19
- package/coverage/src/consistentVersions.ts.html +169 -58
- package/coverage/src/fileContents.ts.html +47 -23
- package/coverage/src/index.html +67 -67
- package/coverage/src/index.ts.html +32 -32
- package/coverage/src/mustSatisfyPeerDependencies.ts.html +373 -85
- package/coverage/src/nestedWorkspaces.ts.html +59 -20
- package/coverage/src/packageEntry.ts.html +40 -19
- package/coverage/src/packageOrder.ts.html +30 -12
- package/coverage/src/packageScript.ts.html +81 -27
- package/coverage/src/requireDependency.ts.html +83 -32
- package/coverage/src/standardTsconfig.ts.html +81 -18
- package/coverage/src/util/checkAlpha.ts.html +18 -9
- package/coverage/src/util/createRuleFactory.ts.html +16 -4
- package/coverage/src/util/index.html +17 -17
- package/coverage/src/util/makeDirectory.ts.html +5 -5
- package/coverage/src/util/packageDependencyGraphService.ts.html +101 -20
- package/package.json +4 -5
- package/src/__tests__/alphabeticalScripts.spec.ts +12 -4
- package/src/__tests__/bannedDependencies.spec.ts +45 -16
- package/src/__tests__/consistentDependencies.spec.ts +11 -5
- package/src/__tests__/consistentVersions.spec.ts +72 -18
- package/src/__tests__/fileContents.spec.ts +9 -5
- package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +191 -76
- package/src/__tests__/nestedWorkspaces.spec.ts +10 -6
- package/src/__tests__/packageEntry.spec.ts +54 -48
- package/src/__tests__/packageOrder.spec.ts +77 -71
- package/src/__tests__/packageScript.spec.ts +25 -11
- package/src/__tests__/requireDependency.spec.ts +12 -6
- package/src/__tests__/utils.ts +16 -7
- package/src/bannedDependencies.ts +32 -15
- package/src/consistentDependencies.ts +22 -9
- package/src/consistentVersions.ts +84 -47
- package/src/fileContents.ts +19 -11
- package/src/index.ts +3 -3
- package/src/mustSatisfyPeerDependencies.ts +162 -66
- package/src/nestedWorkspaces.ts +23 -10
- package/src/packageEntry.ts +18 -11
- package/src/packageOrder.ts +9 -3
- package/src/packageScript.ts +37 -19
- package/src/requireDependency.ts +28 -11
- package/src/standardTsconfig.ts +31 -10
- package/src/util/checkAlpha.ts +5 -2
- package/src/util/createRuleFactory.ts +6 -2
- package/src/util/packageDependencyGraphService.ts +41 -14
- package/vitest.config.mjs +10 -7
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">94.
|
|
26
|
+
<span class="strong">94.39% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>573/607</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">94.
|
|
47
|
+
<span class="strong">94.39% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>573/607</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -807,13 +807,103 @@
|
|
|
807
807
|
<a name='L742'></a><a href='#L742'>742</a>
|
|
808
808
|
<a name='L743'></a><a href='#L743'>743</a>
|
|
809
809
|
<a name='L744'></a><a href='#L744'>744</a>
|
|
810
|
-
<a name='L745'></a><a href='#L745'>745</a
|
|
811
|
-
<
|
|
812
|
-
<
|
|
813
|
-
<
|
|
814
|
-
<
|
|
815
|
-
<
|
|
816
|
-
<
|
|
810
|
+
<a name='L745'></a><a href='#L745'>745</a>
|
|
811
|
+
<a name='L746'></a><a href='#L746'>746</a>
|
|
812
|
+
<a name='L747'></a><a href='#L747'>747</a>
|
|
813
|
+
<a name='L748'></a><a href='#L748'>748</a>
|
|
814
|
+
<a name='L749'></a><a href='#L749'>749</a>
|
|
815
|
+
<a name='L750'></a><a href='#L750'>750</a>
|
|
816
|
+
<a name='L751'></a><a href='#L751'>751</a>
|
|
817
|
+
<a name='L752'></a><a href='#L752'>752</a>
|
|
818
|
+
<a name='L753'></a><a href='#L753'>753</a>
|
|
819
|
+
<a name='L754'></a><a href='#L754'>754</a>
|
|
820
|
+
<a name='L755'></a><a href='#L755'>755</a>
|
|
821
|
+
<a name='L756'></a><a href='#L756'>756</a>
|
|
822
|
+
<a name='L757'></a><a href='#L757'>757</a>
|
|
823
|
+
<a name='L758'></a><a href='#L758'>758</a>
|
|
824
|
+
<a name='L759'></a><a href='#L759'>759</a>
|
|
825
|
+
<a name='L760'></a><a href='#L760'>760</a>
|
|
826
|
+
<a name='L761'></a><a href='#L761'>761</a>
|
|
827
|
+
<a name='L762'></a><a href='#L762'>762</a>
|
|
828
|
+
<a name='L763'></a><a href='#L763'>763</a>
|
|
829
|
+
<a name='L764'></a><a href='#L764'>764</a>
|
|
830
|
+
<a name='L765'></a><a href='#L765'>765</a>
|
|
831
|
+
<a name='L766'></a><a href='#L766'>766</a>
|
|
832
|
+
<a name='L767'></a><a href='#L767'>767</a>
|
|
833
|
+
<a name='L768'></a><a href='#L768'>768</a>
|
|
834
|
+
<a name='L769'></a><a href='#L769'>769</a>
|
|
835
|
+
<a name='L770'></a><a href='#L770'>770</a>
|
|
836
|
+
<a name='L771'></a><a href='#L771'>771</a>
|
|
837
|
+
<a name='L772'></a><a href='#L772'>772</a>
|
|
838
|
+
<a name='L773'></a><a href='#L773'>773</a>
|
|
839
|
+
<a name='L774'></a><a href='#L774'>774</a>
|
|
840
|
+
<a name='L775'></a><a href='#L775'>775</a>
|
|
841
|
+
<a name='L776'></a><a href='#L776'>776</a>
|
|
842
|
+
<a name='L777'></a><a href='#L777'>777</a>
|
|
843
|
+
<a name='L778'></a><a href='#L778'>778</a>
|
|
844
|
+
<a name='L779'></a><a href='#L779'>779</a>
|
|
845
|
+
<a name='L780'></a><a href='#L780'>780</a>
|
|
846
|
+
<a name='L781'></a><a href='#L781'>781</a>
|
|
847
|
+
<a name='L782'></a><a href='#L782'>782</a>
|
|
848
|
+
<a name='L783'></a><a href='#L783'>783</a>
|
|
849
|
+
<a name='L784'></a><a href='#L784'>784</a>
|
|
850
|
+
<a name='L785'></a><a href='#L785'>785</a>
|
|
851
|
+
<a name='L786'></a><a href='#L786'>786</a>
|
|
852
|
+
<a name='L787'></a><a href='#L787'>787</a>
|
|
853
|
+
<a name='L788'></a><a href='#L788'>788</a>
|
|
854
|
+
<a name='L789'></a><a href='#L789'>789</a>
|
|
855
|
+
<a name='L790'></a><a href='#L790'>790</a>
|
|
856
|
+
<a name='L791'></a><a href='#L791'>791</a>
|
|
857
|
+
<a name='L792'></a><a href='#L792'>792</a>
|
|
858
|
+
<a name='L793'></a><a href='#L793'>793</a>
|
|
859
|
+
<a name='L794'></a><a href='#L794'>794</a>
|
|
860
|
+
<a name='L795'></a><a href='#L795'>795</a>
|
|
861
|
+
<a name='L796'></a><a href='#L796'>796</a>
|
|
862
|
+
<a name='L797'></a><a href='#L797'>797</a>
|
|
863
|
+
<a name='L798'></a><a href='#L798'>798</a>
|
|
864
|
+
<a name='L799'></a><a href='#L799'>799</a>
|
|
865
|
+
<a name='L800'></a><a href='#L800'>800</a>
|
|
866
|
+
<a name='L801'></a><a href='#L801'>801</a>
|
|
867
|
+
<a name='L802'></a><a href='#L802'>802</a>
|
|
868
|
+
<a name='L803'></a><a href='#L803'>803</a>
|
|
869
|
+
<a name='L804'></a><a href='#L804'>804</a>
|
|
870
|
+
<a name='L805'></a><a href='#L805'>805</a>
|
|
871
|
+
<a name='L806'></a><a href='#L806'>806</a>
|
|
872
|
+
<a name='L807'></a><a href='#L807'>807</a>
|
|
873
|
+
<a name='L808'></a><a href='#L808'>808</a>
|
|
874
|
+
<a name='L809'></a><a href='#L809'>809</a>
|
|
875
|
+
<a name='L810'></a><a href='#L810'>810</a>
|
|
876
|
+
<a name='L811'></a><a href='#L811'>811</a>
|
|
877
|
+
<a name='L812'></a><a href='#L812'>812</a>
|
|
878
|
+
<a name='L813'></a><a href='#L813'>813</a>
|
|
879
|
+
<a name='L814'></a><a href='#L814'>814</a>
|
|
880
|
+
<a name='L815'></a><a href='#L815'>815</a>
|
|
881
|
+
<a name='L816'></a><a href='#L816'>816</a>
|
|
882
|
+
<a name='L817'></a><a href='#L817'>817</a>
|
|
883
|
+
<a name='L818'></a><a href='#L818'>818</a>
|
|
884
|
+
<a name='L819'></a><a href='#L819'>819</a>
|
|
885
|
+
<a name='L820'></a><a href='#L820'>820</a>
|
|
886
|
+
<a name='L821'></a><a href='#L821'>821</a>
|
|
887
|
+
<a name='L822'></a><a href='#L822'>822</a>
|
|
888
|
+
<a name='L823'></a><a href='#L823'>823</a>
|
|
889
|
+
<a name='L824'></a><a href='#L824'>824</a>
|
|
890
|
+
<a name='L825'></a><a href='#L825'>825</a>
|
|
891
|
+
<a name='L826'></a><a href='#L826'>826</a>
|
|
892
|
+
<a name='L827'></a><a href='#L827'>827</a>
|
|
893
|
+
<a name='L828'></a><a href='#L828'>828</a>
|
|
894
|
+
<a name='L829'></a><a href='#L829'>829</a>
|
|
895
|
+
<a name='L830'></a><a href='#L830'>830</a>
|
|
896
|
+
<a name='L831'></a><a href='#L831'>831</a>
|
|
897
|
+
<a name='L832'></a><a href='#L832'>832</a>
|
|
898
|
+
<a name='L833'></a><a href='#L833'>833</a>
|
|
899
|
+
<a name='L834'></a><a href='#L834'>834</a>
|
|
900
|
+
<a name='L835'></a><a href='#L835'>835</a>
|
|
901
|
+
<a name='L836'></a><a href='#L836'>836</a>
|
|
902
|
+
<a name='L837'></a><a href='#L837'>837</a>
|
|
903
|
+
<a name='L838'></a><a href='#L838'>838</a>
|
|
904
|
+
<a name='L839'></a><a href='#L839'>839</a>
|
|
905
|
+
<a name='L840'></a><a href='#L840'>840</a>
|
|
906
|
+
<a name='L841'></a><a href='#L841'>841</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
817
907
|
<span class="cline-any cline-neutral"> </span>
|
|
818
908
|
<span class="cline-any cline-neutral"> </span>
|
|
819
909
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -821,6 +911,12 @@
|
|
|
821
911
|
<span class="cline-any cline-neutral"> </span>
|
|
822
912
|
<span class="cline-any cline-neutral"> </span>
|
|
823
913
|
<span class="cline-any cline-neutral"> </span>
|
|
914
|
+
<span class="cline-any cline-yes">1x</span>
|
|
915
|
+
<span class="cline-any cline-yes">1x</span>
|
|
916
|
+
<span class="cline-any cline-yes">1x</span>
|
|
917
|
+
<span class="cline-any cline-yes">1x</span>
|
|
918
|
+
<span class="cline-any cline-yes">1x</span>
|
|
919
|
+
<span class="cline-any cline-yes">1x</span>
|
|
824
920
|
<span class="cline-any cline-neutral"> </span>
|
|
825
921
|
<span class="cline-any cline-yes">1x</span>
|
|
826
922
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -1086,9 +1182,24 @@
|
|
|
1086
1182
|
<span class="cline-any cline-yes">14x</span>
|
|
1087
1183
|
<span class="cline-any cline-yes">14x</span>
|
|
1088
1184
|
<span class="cline-any cline-yes">14x</span>
|
|
1185
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1186
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1187
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1188
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1189
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1089
1190
|
<span class="cline-any cline-neutral"> </span>
|
|
1090
1191
|
<span class="cline-any cline-neutral"> </span>
|
|
1091
1192
|
<span class="cline-any cline-yes">14x</span>
|
|
1193
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1194
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1195
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1196
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1197
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1198
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1199
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1200
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1201
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1202
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1092
1203
|
<span class="cline-any cline-yes">18x</span>
|
|
1093
1204
|
<span class="cline-any cline-yes">4x</span>
|
|
1094
1205
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -1107,22 +1218,44 @@
|
|
|
1107
1218
|
<span class="cline-any cline-neutral"> </span>
|
|
1108
1219
|
<span class="cline-any cline-yes">14x</span>
|
|
1109
1220
|
<span class="cline-any cline-neutral"> </span>
|
|
1221
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1222
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1110
1223
|
<span class="cline-any cline-neutral"> </span>
|
|
1111
1224
|
<span class="cline-any cline-yes">14x</span>
|
|
1112
1225
|
<span class="cline-any cline-yes">4x</span>
|
|
1226
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1227
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1228
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1113
1229
|
<span class="cline-any cline-yes">10x</span>
|
|
1114
1230
|
<span class="cline-any cline-yes">14x</span>
|
|
1115
1231
|
<span class="cline-any cline-yes">38x</span>
|
|
1116
1232
|
<span class="cline-any cline-yes">38x</span>
|
|
1233
|
+
<span class="cline-any cline-yes">38x</span>
|
|
1234
|
+
<span class="cline-any cline-yes">38x</span>
|
|
1235
|
+
<span class="cline-any cline-yes">38x</span>
|
|
1236
|
+
<span class="cline-any cline-no"> </span>
|
|
1117
1237
|
<span class="cline-any cline-no"> </span>
|
|
1118
1238
|
<span class="cline-any cline-no"> </span>
|
|
1239
|
+
<span class="cline-any cline-no"> </span>
|
|
1240
|
+
<span class="cline-any cline-yes">38x</span>
|
|
1241
|
+
<span class="cline-any cline-yes">38x</span>
|
|
1119
1242
|
<span class="cline-any cline-yes">38x</span>
|
|
1120
1243
|
<span class="cline-any cline-yes">38x</span>
|
|
1121
1244
|
<span class="cline-any cline-yes">38x</span>
|
|
1122
1245
|
<span class="cline-any cline-yes">8x</span>
|
|
1123
1246
|
<span class="cline-any cline-yes">8x</span>
|
|
1247
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1248
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1249
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1250
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1124
1251
|
<span class="cline-any cline-yes">38x</span>
|
|
1125
1252
|
<span class="cline-any cline-yes">32x</span>
|
|
1253
|
+
<span class="cline-any cline-yes">32x</span>
|
|
1254
|
+
<span class="cline-any cline-yes">32x</span>
|
|
1255
|
+
<span class="cline-any cline-yes">32x</span>
|
|
1256
|
+
<span class="cline-any cline-yes">32x</span>
|
|
1257
|
+
<span class="cline-any cline-yes">32x</span>
|
|
1258
|
+
<span class="cline-any cline-yes">32x</span>
|
|
1126
1259
|
<span class="cline-any cline-yes">6x</span>
|
|
1127
1260
|
<span class="cline-any cline-yes">6x</span>
|
|
1128
1261
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1134,14 +1267,22 @@
|
|
|
1134
1267
|
<span class="cline-any cline-no"> </span>
|
|
1135
1268
|
<span class="cline-any cline-no"> </span>
|
|
1136
1269
|
<span class="cline-any cline-no"> </span>
|
|
1270
|
+
<span class="cline-any cline-no"> </span>
|
|
1137
1271
|
<span class="cline-any cline-yes">32x</span>
|
|
1138
1272
|
<span class="cline-any cline-yes">13x</span>
|
|
1139
1273
|
<span class="cline-any cline-yes">13x</span>
|
|
1140
1274
|
<span class="cline-any cline-yes">26x</span>
|
|
1141
1275
|
<span class="cline-any cline-yes">26x</span>
|
|
1276
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1277
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1278
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1142
1279
|
<span class="cline-any cline-yes">30x</span>
|
|
1143
1280
|
<span class="cline-any cline-neutral"> </span>
|
|
1144
1281
|
<span class="cline-any cline-yes">14x</span>
|
|
1282
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1283
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1284
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1285
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1145
1286
|
<span class="cline-any cline-neutral"> </span>
|
|
1146
1287
|
<span class="cline-any cline-yes">13x</span>
|
|
1147
1288
|
<span class="cline-any cline-yes">13x</span>
|
|
@@ -1149,6 +1290,10 @@
|
|
|
1149
1290
|
<span class="cline-any cline-yes">13x</span>
|
|
1150
1291
|
<span class="cline-any cline-yes">13x</span>
|
|
1151
1292
|
<span class="cline-any cline-yes">26x</span>
|
|
1293
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1294
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1295
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1296
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1152
1297
|
<span class="cline-any cline-yes">13x</span>
|
|
1153
1298
|
<span class="cline-any cline-yes">13x</span>
|
|
1154
1299
|
<span class="cline-any cline-yes">6x</span>
|
|
@@ -1158,6 +1303,9 @@
|
|
|
1158
1303
|
<span class="cline-any cline-yes">13x</span>
|
|
1159
1304
|
<span class="cline-any cline-yes">7x</span>
|
|
1160
1305
|
<span class="cline-any cline-yes">7x</span>
|
|
1306
|
+
<span class="cline-any cline-yes">7x</span>
|
|
1307
|
+
<span class="cline-any cline-yes">7x</span>
|
|
1308
|
+
<span class="cline-any cline-yes">7x</span>
|
|
1161
1309
|
<span class="cline-any cline-yes">2x</span>
|
|
1162
1310
|
<span class="cline-any cline-yes">2x</span>
|
|
1163
1311
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -1188,6 +1336,9 @@
|
|
|
1188
1336
|
<span class="cline-any cline-no"> </span>
|
|
1189
1337
|
<span class="cline-any cline-no"> </span>
|
|
1190
1338
|
<span class="cline-any cline-no"> </span>
|
|
1339
|
+
<span class="cline-any cline-no"> </span>
|
|
1340
|
+
<span class="cline-any cline-no"> </span>
|
|
1341
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1191
1342
|
<span class="cline-any cline-yes">4x</span>
|
|
1192
1343
|
<span class="cline-any cline-yes">2x</span>
|
|
1193
1344
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -1202,6 +1353,7 @@
|
|
|
1202
1353
|
<span class="cline-any cline-neutral"> </span>
|
|
1203
1354
|
<span class="cline-any cline-yes">13x</span>
|
|
1204
1355
|
<span class="cline-any cline-yes">13x</span>
|
|
1356
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1205
1357
|
<span class="cline-any cline-yes">2x</span>
|
|
1206
1358
|
<span class="cline-any cline-yes">2x</span>
|
|
1207
1359
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -1227,6 +1379,12 @@
|
|
|
1227
1379
|
<span class="cline-any cline-no"> </span>
|
|
1228
1380
|
<span class="cline-any cline-no"> </span>
|
|
1229
1381
|
<span class="cline-any cline-no"> </span>
|
|
1382
|
+
<span class="cline-any cline-no"> </span>
|
|
1383
|
+
<span class="cline-any cline-no"> </span>
|
|
1384
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1385
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1386
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1387
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1230
1388
|
<span class="cline-any cline-yes">9x</span>
|
|
1231
1389
|
<span class="cline-any cline-yes">2x</span>
|
|
1232
1390
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -1259,6 +1417,7 @@
|
|
|
1259
1417
|
<span class="cline-any cline-yes">50x</span>
|
|
1260
1418
|
<span class="cline-any cline-yes">50x</span>
|
|
1261
1419
|
<span class="cline-any cline-yes">44x</span>
|
|
1420
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1262
1421
|
<span class="cline-any cline-yes">50x</span>
|
|
1263
1422
|
<span class="cline-any cline-yes">10x</span>
|
|
1264
1423
|
<span class="cline-any cline-yes">10x</span>
|
|
@@ -1267,14 +1426,24 @@
|
|
|
1267
1426
|
<span class="cline-any cline-neutral"> </span>
|
|
1268
1427
|
<span class="cline-any cline-yes">11x</span>
|
|
1269
1428
|
<span class="cline-any cline-yes">11x</span>
|
|
1429
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1430
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1431
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1432
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1270
1433
|
<span class="cline-any cline-yes">10x</span>
|
|
1271
1434
|
<span class="cline-any cline-yes">10x</span>
|
|
1272
1435
|
<span class="cline-any cline-yes">11x</span>
|
|
1273
1436
|
<span class="cline-any cline-yes">1x</span>
|
|
1274
1437
|
<span class="cline-any cline-yes">1x</span>
|
|
1275
1438
|
<span class="cline-any cline-yes">1x</span>
|
|
1439
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1440
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1441
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1442
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1276
1443
|
<span class="cline-any cline-yes">1x</span>
|
|
1277
1444
|
<span class="cline-any cline-yes">1x</span>
|
|
1445
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1446
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1278
1447
|
<span class="cline-any cline-yes">1x</span>
|
|
1279
1448
|
<span class="cline-any cline-yes">1x</span>
|
|
1280
1449
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -1314,6 +1483,9 @@
|
|
|
1314
1483
|
<span class="cline-any cline-neutral"> </span>
|
|
1315
1484
|
<span class="cline-any cline-yes">1x</span>
|
|
1316
1485
|
<span class="cline-any cline-yes">69x</span>
|
|
1486
|
+
<span class="cline-any cline-yes">69x</span>
|
|
1487
|
+
<span class="cline-any cline-yes">69x</span>
|
|
1488
|
+
<span class="cline-any cline-yes">69x</span>
|
|
1317
1489
|
<span class="cline-any cline-yes">22x</span>
|
|
1318
1490
|
<span class="cline-any cline-yes">69x</span>
|
|
1319
1491
|
<span class="cline-any cline-yes">16x</span>
|
|
@@ -1347,6 +1519,8 @@
|
|
|
1347
1519
|
<span class="cline-any cline-yes">3x</span>
|
|
1348
1520
|
<span class="cline-any cline-yes">1x</span>
|
|
1349
1521
|
<span class="cline-any cline-yes">1x</span>
|
|
1522
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1523
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1350
1524
|
<span class="cline-any cline-yes">3x</span>
|
|
1351
1525
|
<span class="cline-any cline-yes">3x</span>
|
|
1352
1526
|
<span class="cline-any cline-yes">3x</span>
|
|
@@ -1366,6 +1540,8 @@
|
|
|
1366
1540
|
<span class="cline-any cline-yes">3x</span>
|
|
1367
1541
|
<span class="cline-any cline-yes">1x</span>
|
|
1368
1542
|
<span class="cline-any cline-yes">1x</span>
|
|
1543
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1544
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1369
1545
|
<span class="cline-any cline-yes">3x</span>
|
|
1370
1546
|
<span class="cline-any cline-yes">3x</span>
|
|
1371
1547
|
<span class="cline-any cline-yes">3x</span>
|
|
@@ -1379,13 +1555,25 @@
|
|
|
1379
1555
|
<span class="cline-any cline-yes">25x</span>
|
|
1380
1556
|
<span class="cline-any cline-yes">35x</span>
|
|
1381
1557
|
<span class="cline-any cline-yes">35x</span>
|
|
1558
|
+
<span class="cline-any cline-yes">51x</span>
|
|
1559
|
+
<span class="cline-any cline-yes">35x</span>
|
|
1382
1560
|
<span class="cline-any cline-yes">35x</span>
|
|
1383
1561
|
<span class="cline-any cline-neutral"> </span>
|
|
1384
1562
|
<span class="cline-any cline-yes">25x</span>
|
|
1385
1563
|
<span class="cline-any cline-yes">25x</span>
|
|
1564
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1565
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1566
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1567
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1568
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1386
1569
|
<span class="cline-any cline-yes">35x</span>
|
|
1387
1570
|
<span class="cline-any cline-yes">4x</span>
|
|
1388
|
-
<span class="cline-any cline-yes">
|
|
1571
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1572
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1573
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1574
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1575
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1576
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1389
1577
|
<span class="cline-any cline-yes">6x</span>
|
|
1390
1578
|
<span class="cline-any cline-yes">6x</span>
|
|
1391
1579
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1475,6 +1663,8 @@
|
|
|
1475
1663
|
<span class="cline-any cline-yes">241x</span>
|
|
1476
1664
|
<span class="cline-any cline-yes">253x</span>
|
|
1477
1665
|
<span class="cline-any cline-yes">253x</span>
|
|
1666
|
+
<span class="cline-any cline-yes">301x</span>
|
|
1667
|
+
<span class="cline-any cline-yes">253x</span>
|
|
1478
1668
|
<span class="cline-any cline-yes">253x</span>
|
|
1479
1669
|
<span class="cline-any cline-neutral"> </span>
|
|
1480
1670
|
<span class="cline-any cline-yes">81x</span>
|
|
@@ -1483,6 +1673,8 @@
|
|
|
1483
1673
|
<span class="cline-any cline-yes">172x</span>
|
|
1484
1674
|
<span class="cline-any cline-yes">172x</span>
|
|
1485
1675
|
<span class="cline-any cline-yes">172x</span>
|
|
1676
|
+
<span class="cline-any cline-yes">172x</span>
|
|
1677
|
+
<span class="cline-any cline-yes">172x</span>
|
|
1486
1678
|
<span class="cline-any cline-neutral"> </span>
|
|
1487
1679
|
<span class="cline-any cline-yes">253x</span>
|
|
1488
1680
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1542,14 +1734,14 @@
|
|
|
1542
1734
|
<span class="cline-any cline-neutral"> </span>
|
|
1543
1735
|
<span class="cline-any cline-yes">4x</span>
|
|
1544
1736
|
<span class="cline-any cline-yes">4x</span>
|
|
1545
|
-
<span class="cline-any cline-yes">
|
|
1546
|
-
<span class="cline-any cline-yes">
|
|
1737
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1738
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1547
1739
|
<span class="cline-any cline-yes">1x</span>
|
|
1548
1740
|
<span class="cline-any cline-yes">1x</span>
|
|
1549
|
-
<span class="cline-any cline-yes">
|
|
1550
|
-
<span class="cline-any cline-yes">
|
|
1551
|
-
<span class="cline-any cline-yes">
|
|
1552
|
-
<span class="cline-any cline-yes">
|
|
1741
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1742
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1743
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1744
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1553
1745
|
<span class="cline-any cline-yes">4x</span>
|
|
1554
1746
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*!
|
|
1555
1747
|
* Copyright 2020 Palantir Technologies, Inc.
|
|
@@ -1561,9 +1753,9 @@
|
|
|
1561
1753
|
import { Context } from "@monorepolint/config";
|
|
1562
1754
|
import { Host, mutateJson, PackageJson } from "@monorepolint/utils";
|
|
1563
1755
|
import * as path from "node:path";
|
|
1756
|
+
import resolvePackagePath from "resolve-package-path";
|
|
1564
1757
|
import * as r from "runtypes";
|
|
1565
1758
|
import { coerce } from "semver";
|
|
1566
|
-
import resolvePackagePath from "resolve-package-path";
|
|
1567
1759
|
import { createRuleFactory } from "./util/createRuleFactory.js";
|
|
1568
1760
|
|
|
1569
1761
|
const Options = r.Union(
|
|
@@ -1582,7 +1774,7 @@ const Options = r.Union(
|
|
|
1582
1774
|
dependencyWhitelist: r.Undefined,
|
|
1583
1775
|
dependencyBlacklist: r.Undefined,
|
|
1584
1776
|
enforceForDevDependencies: r.Undefined,
|
|
1585
|
-
})
|
|
1777
|
+
}),
|
|
1586
1778
|
),
|
|
1587
1779
|
r
|
|
1588
1780
|
.Record({
|
|
@@ -1593,7 +1785,7 @@ const Options = r.Union(
|
|
|
1593
1785
|
skipUnparseableRanges: r.Undefined,
|
|
1594
1786
|
dependencyBlacklist: r.Undefined,
|
|
1595
1787
|
enforceForDevDependencies: r.Undefined,
|
|
1596
|
-
})
|
|
1788
|
+
}),
|
|
1597
1789
|
),
|
|
1598
1790
|
r
|
|
1599
1791
|
.Record({
|
|
@@ -1604,7 +1796,7 @@ const Options = r.Union(
|
|
|
1604
1796
|
skipUnparseableRanges: r.Undefined,
|
|
1605
1797
|
dependencyWhitelist: r.Undefined,
|
|
1606
1798
|
enforceForDevDependencies: r.Undefined,
|
|
1607
|
-
})
|
|
1799
|
+
}),
|
|
1608
1800
|
),
|
|
1609
1801
|
r
|
|
1610
1802
|
.Record({
|
|
@@ -1615,7 +1807,7 @@ const Options = r.Union(
|
|
|
1615
1807
|
skipUnparseableRanges: r.Undefined,
|
|
1616
1808
|
dependencyWhitelist: r.Undefined,
|
|
1617
1809
|
dependencyBlacklist: r.Undefined,
|
|
1618
|
-
})
|
|
1810
|
+
}),
|
|
1619
1811
|
),
|
|
1620
1812
|
r
|
|
1621
1813
|
.Record({
|
|
@@ -1626,7 +1818,7 @@ const Options = r.Union(
|
|
|
1626
1818
|
r.Partial({
|
|
1627
1819
|
dependencyBlacklist: r.Undefined,
|
|
1628
1820
|
enforceForDevDependencies: r.Undefined,
|
|
1629
|
-
})
|
|
1821
|
+
}),
|
|
1630
1822
|
),
|
|
1631
1823
|
r
|
|
1632
1824
|
.Record({
|
|
@@ -1637,7 +1829,7 @@ const Options = r.Union(
|
|
|
1637
1829
|
r.Partial({
|
|
1638
1830
|
dependencyWhitelist: r.Undefined,
|
|
1639
1831
|
enforceForDevDependencies: r.Undefined,
|
|
1640
|
-
})
|
|
1832
|
+
}),
|
|
1641
1833
|
),
|
|
1642
1834
|
r
|
|
1643
1835
|
.Record({
|
|
@@ -1648,7 +1840,7 @@ const Options = r.Union(
|
|
|
1648
1840
|
r.Partial({
|
|
1649
1841
|
dependencyWhitelist: r.Undefined,
|
|
1650
1842
|
dependencyBlacklist: r.Undefined,
|
|
1651
|
-
})
|
|
1843
|
+
}),
|
|
1652
1844
|
),
|
|
1653
1845
|
r
|
|
1654
1846
|
.Record({
|
|
@@ -1659,7 +1851,7 @@ const Options = r.Union(
|
|
|
1659
1851
|
r.Partial({
|
|
1660
1852
|
skipUnparseableRanges: r.Undefined,
|
|
1661
1853
|
enforceForDevDependencies: r.Undefined,
|
|
1662
|
-
})
|
|
1854
|
+
}),
|
|
1663
1855
|
),
|
|
1664
1856
|
r
|
|
1665
1857
|
.Record({
|
|
@@ -1670,7 +1862,7 @@ const Options = r.Union(
|
|
|
1670
1862
|
r.Partial({
|
|
1671
1863
|
skipUnparseableRanges: r.Undefined,
|
|
1672
1864
|
dependencyBlacklist: r.Undefined,
|
|
1673
|
-
})
|
|
1865
|
+
}),
|
|
1674
1866
|
),
|
|
1675
1867
|
r
|
|
1676
1868
|
.Record({
|
|
@@ -1681,7 +1873,7 @@ const Options = r.Union(
|
|
|
1681
1873
|
r.Partial({
|
|
1682
1874
|
skipUnparseableRanges: r.Undefined,
|
|
1683
1875
|
dependencyWhitelist: r.Undefined,
|
|
1684
|
-
})
|
|
1876
|
+
}),
|
|
1685
1877
|
),
|
|
1686
1878
|
r
|
|
1687
1879
|
.Record({
|
|
@@ -1692,7 +1884,7 @@ const Options = r.Union(
|
|
|
1692
1884
|
.And(
|
|
1693
1885
|
r.Partial({
|
|
1694
1886
|
enforceForDevDependencies: r.Undefined,
|
|
1695
|
-
})
|
|
1887
|
+
}),
|
|
1696
1888
|
),
|
|
1697
1889
|
r
|
|
1698
1890
|
.Record({
|
|
@@ -1703,7 +1895,7 @@ const Options = r.Union(
|
|
|
1703
1895
|
.And(
|
|
1704
1896
|
r.Partial({
|
|
1705
1897
|
dependencyBlacklist: r.Undefined,
|
|
1706
|
-
})
|
|
1898
|
+
}),
|
|
1707
1899
|
),
|
|
1708
1900
|
r
|
|
1709
1901
|
.Record({
|
|
@@ -1714,7 +1906,7 @@ const Options = r.Union(
|
|
|
1714
1906
|
.And(
|
|
1715
1907
|
r.Partial({
|
|
1716
1908
|
dependencyWhitelist: r.Undefined,
|
|
1717
|
-
})
|
|
1909
|
+
}),
|
|
1718
1910
|
),
|
|
1719
1911
|
r
|
|
1720
1912
|
.Record({
|
|
@@ -1725,14 +1917,14 @@ const Options = r.Union(
|
|
|
1725
1917
|
.And(
|
|
1726
1918
|
r.Partial({
|
|
1727
1919
|
skipUnparseableRanges: r.Undefined,
|
|
1728
|
-
})
|
|
1920
|
+
}),
|
|
1729
1921
|
),
|
|
1730
1922
|
r.Record({
|
|
1731
1923
|
skipUnparseableRanges: r.Boolean,
|
|
1732
1924
|
dependencyWhitelist: r.Array(r.String),
|
|
1733
1925
|
dependencyBlacklist: r.Array(r.String),
|
|
1734
1926
|
enforceForDevDependencies: r.Boolean,
|
|
1735
|
-
})
|
|
1927
|
+
}),
|
|
1736
1928
|
);
|
|
1737
1929
|
|
|
1738
1930
|
export type Options = r.Static<typeof Options>;
|
|
@@ -1823,7 +2015,12 @@ interface IResolvedPeerDependencyRequirement {
|
|
|
1823
2015
|
}
|
|
1824
2016
|
|
|
1825
2017
|
function checkSatisfyPeerDependencies(context: Context, opts: Options) {
|
|
1826
|
-
const {
|
|
2018
|
+
const {
|
|
2019
|
+
dependencyBlacklist,
|
|
2020
|
+
dependencyWhitelist,
|
|
2021
|
+
enforceForDevDependencies,
|
|
2022
|
+
skipUnparseableRanges,
|
|
2023
|
+
} = opts;
|
|
1827
2024
|
const packageJsonPath = path.resolve(context.getPackageJsonPath());
|
|
1828
2025
|
const packageJson = context.host.readJson(packageJsonPath) as PackageJson;
|
|
1829
2026
|
const packageDependencies = packageJson.<span class="branch-0 cbranch-no" title="branch not covered" >dependencies || {};</span>
|
|
@@ -1832,8 +2029,18 @@ function checkSatisfyPeerDependencies(context: Context, opts: Options) {
|
|
|
1832
2029
|
const packageName = packageJson.<span class="branch-0 cbranch-no" title="branch not covered" >name || packageJsonPath;</span>
|
|
1833
2030
|
|
|
1834
2031
|
// check that no peer dependencies are also declared as regular dependencies
|
|
1835
|
-
for (
|
|
1836
|
-
|
|
2032
|
+
for (
|
|
2033
|
+
const [peerDependencyName, peerDependencyRange] of Object.entries(
|
|
2034
|
+
packagePeerDependencies,
|
|
2035
|
+
)
|
|
2036
|
+
) {
|
|
2037
|
+
if (
|
|
2038
|
+
shouldSkipPackage({
|
|
2039
|
+
dependencyBlacklist,
|
|
2040
|
+
dependencyWhitelist,
|
|
2041
|
+
packageName: peerDependencyName,
|
|
2042
|
+
})
|
|
2043
|
+
) {
|
|
1837
2044
|
continue;
|
|
1838
2045
|
}
|
|
1839
2046
|
|
|
@@ -1842,36 +2049,59 @@ function checkSatisfyPeerDependencies(context: Context, opts: Options) {
|
|
|
1842
2049
|
context.addError({
|
|
1843
2050
|
file: packageJsonPath,
|
|
1844
2051
|
message:
|
|
1845
|
-
`[0] Package ${packageName} has overloaded ${peerDependencyName} dependencies.\n\t`
|
|
1846
|
-
`Peer dependency '${peerDependencyRange}' and regular dependency '${dependencyRange}'.`,
|
|
2052
|
+
`[0] Package ${packageName} has overloaded ${peerDependencyName} dependencies.\n\t`
|
|
2053
|
+
+ `Peer dependency '${peerDependencyRange}' and regular dependency '${dependencyRange}'.`,
|
|
1847
2054
|
});
|
|
1848
2055
|
}
|
|
1849
2056
|
}
|
|
1850
2057
|
|
|
1851
2058
|
// map of all inherited peer dependency requirements
|
|
1852
|
-
const allRequiredPeerDependencies: {
|
|
2059
|
+
const allRequiredPeerDependencies: {
|
|
2060
|
+
[peerDependencyName: string]: IPeerDependencyRequirement[];
|
|
2061
|
+
} = {};
|
|
1853
2062
|
|
|
1854
2063
|
// for each of this package's dependencies, add the dependency's peer requirements into `allRequiredPeerDependencies`
|
|
1855
2064
|
const allDependencies = enforceForDevDependencies
|
|
1856
|
-
? [
|
|
2065
|
+
? [
|
|
2066
|
+
...Object.keys(packageDependencies),
|
|
2067
|
+
...Object.keys(packageDevDependencies),
|
|
2068
|
+
]
|
|
1857
2069
|
: Object.keys(packageDependencies);
|
|
1858
2070
|
for (const dependency of allDependencies) {
|
|
1859
|
-
const dependencyPackageJsonPath = resolvePackagePath(
|
|
2071
|
+
const dependencyPackageJsonPath = resolvePackagePath(
|
|
2072
|
+
dependency,
|
|
2073
|
+
path.dirname(packageJsonPath),
|
|
2074
|
+
);
|
|
1860
2075
|
if (dependencyPackageJsonPath == null) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1861
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(
|
|
2076
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(</span>
|
|
2077
|
+
<span class="cstat-no" title="statement not covered" > `Could not resolve ${dependency} from ${path.dirname(packageJsonPath)}`,</span>
|
|
2078
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1862
2079
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1863
|
-
const dependencyPackageJson = context.host.readJson(
|
|
2080
|
+
const dependencyPackageJson = context.host.readJson(
|
|
2081
|
+
dependencyPackageJsonPath,
|
|
2082
|
+
) as PackageJson;
|
|
1864
2083
|
const requiredPeerDependencies = dependencyPackageJson.peerDependencies;
|
|
1865
2084
|
if (requiredPeerDependencies == null) {
|
|
1866
2085
|
continue;
|
|
1867
2086
|
}
|
|
1868
|
-
for (
|
|
1869
|
-
|
|
2087
|
+
for (
|
|
2088
|
+
const [peerDependencyName, range] of Object.entries(
|
|
2089
|
+
requiredPeerDependencies,
|
|
2090
|
+
)
|
|
2091
|
+
) {
|
|
2092
|
+
if (
|
|
2093
|
+
shouldSkipPackage({
|
|
2094
|
+
dependencyBlacklist,
|
|
2095
|
+
dependencyWhitelist,
|
|
2096
|
+
packageName: peerDependencyName,
|
|
2097
|
+
})
|
|
2098
|
+
) {
|
|
1870
2099
|
continue;
|
|
1871
2100
|
}
|
|
1872
2101
|
|
|
1873
2102
|
if (!isValidRange(range)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1874
|
-
<span class="cstat-no" title="statement not covered" > const message
|
|
2103
|
+
<span class="cstat-no" title="statement not covered" > const message =</span>
|
|
2104
|
+
<span class="cstat-no" title="statement not covered" > `Unable to parse ${dependencyPackageJson.name}'s ${peerDependencyName} peer dependency range '${range}'.`;</span>
|
|
1875
2105
|
<span class="cstat-no" title="statement not covered" > if (skipUnparseableRanges) {</span>
|
|
1876
2106
|
<span class="cstat-no" title="statement not covered" > context.addWarning({ file: dependencyPackageJsonPath, message });</span>
|
|
1877
2107
|
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
@@ -1881,26 +2111,40 @@ function checkSatisfyPeerDependencies(context: Context, opts: Options) {
|
|
|
1881
2111
|
if (allRequiredPeerDependencies[peerDependencyName] == null) {
|
|
1882
2112
|
allRequiredPeerDependencies[peerDependencyName] = [];
|
|
1883
2113
|
}
|
|
1884
|
-
allRequiredPeerDependencies[peerDependencyName].push({
|
|
2114
|
+
allRequiredPeerDependencies[peerDependencyName].push({
|
|
2115
|
+
fromPackageName: dependencyPackageJson.name!,
|
|
2116
|
+
range,
|
|
2117
|
+
});
|
|
1885
2118
|
}
|
|
1886
2119
|
}
|
|
1887
2120
|
|
|
1888
|
-
for (
|
|
2121
|
+
for (
|
|
2122
|
+
const [peerDependencyName, peerDependencyRequirements] of Object.entries(
|
|
2123
|
+
allRequiredPeerDependencies,
|
|
2124
|
+
)
|
|
2125
|
+
) {
|
|
1889
2126
|
// for each inherited peer dependency, determine the strictest range
|
|
1890
2127
|
let mostStrictPeerRequirement: IResolvedPeerDependencyRequirement = {
|
|
1891
2128
|
fromPeerDependencyRequirements: [peerDependencyRequirements[0]],
|
|
1892
2129
|
range: peerDependencyRequirements[0].range,
|
|
1893
2130
|
};
|
|
1894
2131
|
for (const peerRequirement of peerDependencyRequirements) {
|
|
1895
|
-
if (
|
|
2132
|
+
if (
|
|
2133
|
+
doesASatisfyB(mostStrictPeerRequirement.range, peerRequirement.range)
|
|
2134
|
+
) {
|
|
1896
2135
|
continue;
|
|
1897
|
-
} else if (
|
|
2136
|
+
} else if (
|
|
2137
|
+
doesASatisfyB(peerRequirement.range, mostStrictPeerRequirement.range)
|
|
2138
|
+
) {
|
|
1898
2139
|
mostStrictPeerRequirement = {
|
|
1899
2140
|
fromPeerDependencyRequirements: [peerRequirement],
|
|
1900
2141
|
range: peerRequirement.range,
|
|
1901
2142
|
};
|
|
1902
2143
|
} else {
|
|
1903
|
-
const maybeIntersection = findIntersection(
|
|
2144
|
+
const maybeIntersection = findIntersection(
|
|
2145
|
+
peerRequirement.range,
|
|
2146
|
+
mostStrictPeerRequirement.range,
|
|
2147
|
+
);
|
|
1904
2148
|
if (maybeIntersection !== undefined) {
|
|
1905
2149
|
mostStrictPeerRequirement = {
|
|
1906
2150
|
fromPeerDependencyRequirements: [
|
|
@@ -1913,9 +2157,9 @@ function checkSatisfyPeerDependencies(context: Context, opts: Options) {
|
|
|
1913
2157
|
context.addError({
|
|
1914
2158
|
file: packageJsonPath,
|
|
1915
2159
|
message:
|
|
1916
|
-
`[1] Package ${packageName} has conflicting inherited ${peerDependencyName} peer dependencies.\n\t`
|
|
1917
|
-
`Dependency ${peerRequirement.fromPackageName} requires '${peerRequirement.range}' but\n\t`
|
|
1918
|
-
getMostStrictStatement(mostStrictPeerRequirement),
|
|
2160
|
+
`[1] Package ${packageName} has conflicting inherited ${peerDependencyName} peer dependencies.\n\t`
|
|
2161
|
+
+ `Dependency ${peerRequirement.fromPackageName} requires '${peerRequirement.range}' but\n\t`
|
|
2162
|
+
+ getMostStrictStatement(mostStrictPeerRequirement),
|
|
1919
2163
|
});
|
|
1920
2164
|
}
|
|
1921
2165
|
}
|
|
@@ -1926,31 +2170,35 @@ function checkSatisfyPeerDependencies(context: Context, opts: Options) {
|
|
|
1926
2170
|
const packageDependencyRange = packageDependencies[peerDependencyName];
|
|
1927
2171
|
if (packageDependencyRange != null) {
|
|
1928
2172
|
if (!isValidRange(packageDependencyRange)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1929
|
-
<span class="cstat-no" title="statement not covered" > const message
|
|
2173
|
+
<span class="cstat-no" title="statement not covered" > const message =</span>
|
|
2174
|
+
<span class="cstat-no" title="statement not covered" > `Unable to parse ${packageName}'s ${peerDependencyName} dependency range '${packageDependencyRange}'.`;</span>
|
|
1930
2175
|
<span class="cstat-no" title="statement not covered" > if (skipUnparseableRanges) {</span>
|
|
1931
2176
|
<span class="cstat-no" title="statement not covered" > context.addWarning({ file: packageJsonPath, message });</span>
|
|
1932
2177
|
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1933
2178
|
<span class="cstat-no" title="statement not covered" > throw new Error(message);</span>
|
|
1934
2179
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1935
|
-
} else if (
|
|
2180
|
+
<span class="cstat-no" title="statement not covered" > } else if (</span>
|
|
2181
|
+
!doesASatisfyB(packageDependencyRange, mostStrictPeerRequirement.range)
|
|
2182
|
+
) {
|
|
1936
2183
|
context.addError({
|
|
1937
2184
|
file: packageJsonPath,
|
|
1938
2185
|
message:
|
|
1939
|
-
`[2] Package ${packageName} dependency on ${peerDependencyName} '${packageDependencyRange}' does not satisfy inherited peer dependencies.\n\t`
|
|
1940
|
-
getMostStrictStatement(mostStrictPeerRequirement),
|
|
2186
|
+
`[2] Package ${packageName} dependency on ${peerDependencyName} '${packageDependencyRange}' does not satisfy inherited peer dependencies.\n\t`
|
|
2187
|
+
+ getMostStrictStatement(mostStrictPeerRequirement),
|
|
1941
2188
|
});
|
|
1942
2189
|
}
|
|
1943
2190
|
}
|
|
1944
2191
|
|
|
1945
2192
|
// for every inherited peer dependency, this package must declare a dependency or peer dependency
|
|
1946
2193
|
// equal to or stricter than `mostStrictPeerRequirement`
|
|
1947
|
-
const packagePeerDependencyRange =
|
|
2194
|
+
const packagePeerDependencyRange =
|
|
2195
|
+
packagePeerDependencies[peerDependencyName];
|
|
1948
2196
|
if (packageDependencyRange == null && packagePeerDependencyRange == null) {
|
|
1949
2197
|
context.addError({
|
|
1950
2198
|
file: packageJsonPath,
|
|
1951
2199
|
message:
|
|
1952
|
-
`[3] Package ${packageName} is missing required ${peerDependencyName} dependency.\n\t`
|
|
1953
|
-
getMostStrictStatement(mostStrictPeerRequirement),
|
|
2200
|
+
`[3] Package ${packageName} is missing required ${peerDependencyName} dependency.\n\t`
|
|
2201
|
+
+ getMostStrictStatement(mostStrictPeerRequirement),
|
|
1954
2202
|
fixer: getAddDependencyTypeFixer({
|
|
1955
2203
|
packageJsonPath,
|
|
1956
2204
|
dependencyType: "peerDependencies",
|
|
@@ -1965,18 +2213,24 @@ function checkSatisfyPeerDependencies(context: Context, opts: Options) {
|
|
|
1965
2213
|
// the range must be equal to or stricter than `mostStrictPeerRequirement`
|
|
1966
2214
|
if (packagePeerDependencyRange != null) {
|
|
1967
2215
|
if (!isValidRange(packagePeerDependencyRange)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1968
|
-
<span class="cstat-no" title="statement not covered" > const message
|
|
2216
|
+
<span class="cstat-no" title="statement not covered" > const message =</span>
|
|
2217
|
+
<span class="cstat-no" title="statement not covered" > `Unable to parse ${packageName}'s ${peerDependencyName} peer dependency range '${packagePeerDependencyRange}'.`;</span>
|
|
1969
2218
|
<span class="cstat-no" title="statement not covered" > if (skipUnparseableRanges) {</span>
|
|
1970
2219
|
<span class="cstat-no" title="statement not covered" > context.addWarning({ file: packageJsonPath, message });</span>
|
|
1971
2220
|
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1972
2221
|
<span class="cstat-no" title="statement not covered" > throw new Error(message);</span>
|
|
1973
2222
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1974
|
-
} else if (
|
|
2223
|
+
<span class="cstat-no" title="statement not covered" > } else if (</span>
|
|
2224
|
+
!doesASatisfyB(
|
|
2225
|
+
packagePeerDependencyRange,
|
|
2226
|
+
mostStrictPeerRequirement.range,
|
|
2227
|
+
)
|
|
2228
|
+
) {
|
|
1975
2229
|
context.addError({
|
|
1976
2230
|
file: packageJsonPath,
|
|
1977
2231
|
message:
|
|
1978
|
-
`[4] Package ${packageName} peer dependency on ${peerDependencyName} '${packagePeerDependencyRange}' is not strict enough.\n\t`
|
|
1979
|
-
getMostStrictStatement(mostStrictPeerRequirement),
|
|
2232
|
+
`[4] Package ${packageName} peer dependency on ${peerDependencyName} '${packagePeerDependencyRange}' is not strict enough.\n\t`
|
|
2233
|
+
+ getMostStrictStatement(mostStrictPeerRequirement),
|
|
1980
2234
|
fixer: getAddDependencyTypeFixer({
|
|
1981
2235
|
packageJsonPath,
|
|
1982
2236
|
dependencyType: "peerDependencies",
|
|
@@ -2001,28 +2255,39 @@ function shouldSkipPackage({
|
|
|
2001
2255
|
}) {
|
|
2002
2256
|
// blacklist should take precedance
|
|
2003
2257
|
if (
|
|
2004
|
-
(dependencyBlacklist != null && dependencyBlacklist.includes(packageName))
|
|
2005
|
-
(dependencyWhitelist != null
|
|
2258
|
+
(dependencyBlacklist != null && dependencyBlacklist.includes(packageName))
|
|
2259
|
+
|| (dependencyWhitelist != null
|
|
2260
|
+
&& !dependencyWhitelist.includes(packageName))
|
|
2006
2261
|
) {
|
|
2007
2262
|
return true;
|
|
2008
2263
|
}
|
|
2009
2264
|
return false;
|
|
2010
2265
|
}
|
|
2011
2266
|
|
|
2012
|
-
function getMostStrictStatement(
|
|
2267
|
+
function getMostStrictStatement(
|
|
2268
|
+
mostStrictPeerRequirement: IResolvedPeerDependencyRequirement,
|
|
2269
|
+
) {
|
|
2013
2270
|
if (mostStrictPeerRequirement.fromPeerDependencyRequirements.length === 1) {
|
|
2014
|
-
const dependencyName =
|
|
2271
|
+
const dependencyName =
|
|
2272
|
+
mostStrictPeerRequirement.fromPeerDependencyRequirements[0]
|
|
2273
|
+
.fromPackageName;
|
|
2015
2274
|
return `Dependency ${dependencyName} requires '${mostStrictPeerRequirement.range}'.`;
|
|
2016
2275
|
} else {
|
|
2017
|
-
const dependencyNames = mostStrictPeerRequirement
|
|
2018
|
-
.
|
|
2276
|
+
const dependencyNames = mostStrictPeerRequirement
|
|
2277
|
+
.fromPeerDependencyRequirements
|
|
2278
|
+
.map((peerDependencyRequirement) =>
|
|
2279
|
+
peerDependencyRequirement.fromPackageName
|
|
2280
|
+
)
|
|
2019
2281
|
.join(", ");
|
|
2020
|
-
const dependencyRequirements = mostStrictPeerRequirement
|
|
2021
|
-
.
|
|
2282
|
+
const dependencyRequirements = mostStrictPeerRequirement
|
|
2283
|
+
.fromPeerDependencyRequirements
|
|
2284
|
+
.map((peerDependencyRequirement) =>
|
|
2285
|
+
`'${peerDependencyRequirement.range}'`
|
|
2286
|
+
)
|
|
2022
2287
|
.join(", ");
|
|
2023
2288
|
return (
|
|
2024
|
-
`Dependencies [${dependencyNames}] require [${dependencyRequirements}] respectively, `
|
|
2025
|
-
`resolving to '${mostStrictPeerRequirement.range}'.`
|
|
2289
|
+
`Dependencies [${dependencyNames}] require [${dependencyRequirements}] respectively, `
|
|
2290
|
+
+ `resolving to '${mostStrictPeerRequirement.range}'.`
|
|
2026
2291
|
);
|
|
2027
2292
|
}
|
|
2028
2293
|
}
|
|
@@ -2056,7 +2321,10 @@ function getMostStrictStatement(mostStrictPeerRequirement: IResolvedPeerDependen
|
|
|
2056
2321
|
* @param b version range that matches `RANGE_REGEX`
|
|
2057
2322
|
* @returns the maximum intersecting `ValidRange`, or `undefined` if there is no intersection
|
|
2058
2323
|
*/
|
|
2059
|
-
export function findIntersection(
|
|
2324
|
+
export function findIntersection(
|
|
2325
|
+
a: ValidRange,
|
|
2326
|
+
b: ValidRange,
|
|
2327
|
+
): ValidRange | undefined {
|
|
2060
2328
|
if (doesASatisfyB(a, b)) {
|
|
2061
2329
|
return a;
|
|
2062
2330
|
} else if (doesASatisfyB(b, a)) {
|
|
@@ -2089,7 +2357,9 @@ export function findIntersection(a: ValidRange, b: ValidRange): ValidRange | und
|
|
|
2089
2357
|
.map((bVersion) => {
|
|
2090
2358
|
const bSemVer = coerce(bVersion)!;
|
|
2091
2359
|
if (bVersion.startsWith("^") && bSemVer.major >= aSemVer.major) {
|
|
2092
|
-
return `^${
|
|
2360
|
+
return `^${
|
|
2361
|
+
bSemVer.compare(aSemVer) >= <span class="branch-0 cbranch-no" title="branch not covered" >0 ? bSemVer.raw : a</span>SemVer.raw
|
|
2362
|
+
}`;
|
|
2093
2363
|
}
|
|
2094
2364
|
return bSemVer.compare(aSemVer) !== <span class="branch-0 cbranch-no" title="branch not covered" >-1 ? bVersion : u</span>ndefined;
|
|
2095
2365
|
})
|
|
@@ -2108,7 +2378,9 @@ export function findIntersection(a: ValidRange, b: ValidRange): ValidRange | und
|
|
|
2108
2378
|
.map((aVersion) => {
|
|
2109
2379
|
const aSemVer = coerce(aVersion)!;
|
|
2110
2380
|
if (aVersion.startsWith("^") && aSemVer.major >= bSemVer.major) {
|
|
2111
|
-
return `^${
|
|
2381
|
+
return `^${
|
|
2382
|
+
aSemVer.compare(bSemVer) >= <span class="branch-0 cbranch-no" title="branch not covered" >0 ? aSemVer.raw : b</span>SemVer.raw
|
|
2383
|
+
}`;
|
|
2112
2384
|
}
|
|
2113
2385
|
return aSemVer.compare(bSemVer) !== <span class="branch-0 cbranch-no" title="branch not covered" >-1 ? aVersion : u</span>ndefined;
|
|
2114
2386
|
})
|
|
@@ -2122,14 +2394,26 @@ export function findIntersection(a: ValidRange, b: ValidRange): ValidRange | und
|
|
|
2122
2394
|
const compatibleVersions = aVersions
|
|
2123
2395
|
.map((aVersion) => {
|
|
2124
2396
|
const aSemVer = coerce(aVersion)!;
|
|
2125
|
-
const majorMatchingBVersion = bVersions.find((m) =>
|
|
2397
|
+
const majorMatchingBVersion = bVersions.find((m) =>
|
|
2398
|
+
coerce(m)!.major === aSemVer.major
|
|
2399
|
+
);
|
|
2126
2400
|
if (majorMatchingBVersion === undefined) {
|
|
2127
2401
|
// there is no intersecting `b` major version for this `a` major version
|
|
2128
2402
|
return undefined;
|
|
2129
2403
|
}
|
|
2130
|
-
if (
|
|
2404
|
+
if (
|
|
2405
|
+
doesASatisfyB(
|
|
2406
|
+
aVersion as ValidRange,
|
|
2407
|
+
majorMatchingBVersion as ValidRange,
|
|
2408
|
+
)
|
|
2409
|
+
) {
|
|
2131
2410
|
return aVersion;
|
|
2132
|
-
} else if (
|
|
2411
|
+
} else if (
|
|
2412
|
+
doesASatisfyB(
|
|
2413
|
+
majorMatchingBVersion as ValidRange,
|
|
2414
|
+
aVersion as ValidRange,
|
|
2415
|
+
)
|
|
2416
|
+
) {
|
|
2133
2417
|
return majorMatchingBVersion;
|
|
2134
2418
|
<span class="branch-0 cbranch-no" title="branch not covered" > } else {</span>
|
|
2135
2419
|
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
@@ -2218,7 +2502,9 @@ export function doesASatisfyB(a: ValidRange, b: ValidRange): boolean {
|
|
|
2218
2502
|
|
|
2219
2503
|
return aVersions.every((aVersion) => {
|
|
2220
2504
|
const aSemVer = coerce(aVersion)!;
|
|
2221
|
-
const majorMatchingBVersion = bVersions.find((m) =>
|
|
2505
|
+
const majorMatchingBVersion = bVersions.find((m) =>
|
|
2506
|
+
coerce(m)!.major === aSemVer.major
|
|
2507
|
+
);
|
|
2222
2508
|
if (majorMatchingBVersion === undefined) {
|
|
2223
2509
|
// `a` permits a major version that is not permitted by `b`, therefore `a` is "less strict"
|
|
2224
2510
|
return false;
|
|
@@ -2226,7 +2512,9 @@ export function doesASatisfyB(a: ValidRange, b: ValidRange): boolean {
|
|
|
2226
2512
|
|
|
2227
2513
|
const aVersionIsRange = isMajorVersionRange(aVersion);
|
|
2228
2514
|
const majorMatchingBSemVer = coerce(majorMatchingBVersion)!;
|
|
2229
|
-
const majorMatchingBVersionIsRange = isMajorVersionRange(
|
|
2515
|
+
const majorMatchingBVersionIsRange = isMajorVersionRange(
|
|
2516
|
+
majorMatchingBVersion,
|
|
2517
|
+
);
|
|
2230
2518
|
|
|
2231
2519
|
if (majorMatchingBVersionIsRange) {
|
|
2232
2520
|
// `a` satisfies `b` so long as `aSemVer` is greater than or equal to `majorMatchingBSemVer`
|
|
@@ -2302,7 +2590,7 @@ function getAddDependencyTypeFixer({
|
|
|
2302
2590
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2303
2591
|
Code coverage generated by
|
|
2304
2592
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2305
|
-
at 2025-01-
|
|
2593
|
+
at 2025-01-22T17:39:11.886Z
|
|
2306
2594
|
</div>
|
|
2307
2595
|
<script src="../prettify.js"></script>
|
|
2308
2596
|
<script>
|