@@ -1059,6 +1059,280 @@ const useES3Syntax = {
1059
1059
'unicorn/prefer-optional-catch-binding' : OFF ,
1060
1060
} ;
1061
1061
1062
+ const forbidNonStandardBuiltIns = {
1063
+ // disallow non-standard built-in methods
1064
+ 'es/no-nonstandard-array-properties' : ERROR ,
1065
+ 'es/no-nonstandard-array-prototype-properties' : ERROR ,
1066
+ 'es/no-nonstandard-arraybuffer-properties' : ERROR ,
1067
+ 'es/no-nonstandard-arraybuffer-prototype-properties' : ERROR ,
1068
+ 'es/no-nonstandard-atomics-properties' : ERROR ,
1069
+ 'es/no-nonstandard-bigint-properties' : ERROR ,
1070
+ 'es/no-nonstandard-bigint-prototype-properties' : ERROR ,
1071
+ 'es/no-nonstandard-boolean-properties' : ERROR ,
1072
+ 'es/no-nonstandard-boolean-prototype-properties' : ERROR ,
1073
+ 'es/no-nonstandard-dataview-properties' : ERROR ,
1074
+ 'es/no-nonstandard-dataview-prototype-properties' : ERROR ,
1075
+ 'es/no-nonstandard-date-properties' : ERROR ,
1076
+ 'es/no-nonstandard-date-prototype-properties' : ERROR ,
1077
+ 'es/no-nonstandard-finalizationregistry-properties' : ERROR ,
1078
+ 'es/no-nonstandard-finalizationregistry-prototype-properties' : ERROR ,
1079
+ 'es/no-nonstandard-function-properties' : ERROR ,
1080
+ 'es/no-nonstandard-intl-collator-properties' : ERROR ,
1081
+ 'es/no-nonstandard-intl-collator-prototype-properties' : ERROR ,
1082
+ 'es/no-nonstandard-intl-datetimeformat-properties' : ERROR ,
1083
+ 'es/no-nonstandard-intl-datetimeformat-prototype-properties' : ERROR ,
1084
+ 'es/no-nonstandard-intl-displaynames-properties' : ERROR ,
1085
+ 'es/no-nonstandard-intl-displaynames-prototype-properties' : ERROR ,
1086
+ 'es/no-nonstandard-intl-listformat-properties' : ERROR ,
1087
+ 'es/no-nonstandard-intl-listformat-prototype-properties' : ERROR ,
1088
+ 'es/no-nonstandard-intl-locale-properties' : ERROR ,
1089
+ 'es/no-nonstandard-intl-locale-prototype-properties' : ERROR ,
1090
+ 'es/no-nonstandard-intl-numberformat-properties' : ERROR ,
1091
+ 'es/no-nonstandard-intl-numberformat-prototype-properties' : ERROR ,
1092
+ 'es/no-nonstandard-intl-pluralrules-properties' : ERROR ,
1093
+ 'es/no-nonstandard-intl-pluralrules-prototype-properties' : ERROR ,
1094
+ 'es/no-nonstandard-intl-properties' : ERROR ,
1095
+ 'es/no-nonstandard-intl-relativetimeformat-properties' : ERROR ,
1096
+ 'es/no-nonstandard-intl-relativetimeformat-prototype-properties' : ERROR ,
1097
+ 'es/no-nonstandard-intl-segmenter-properties' : ERROR ,
1098
+ 'es/no-nonstandard-intl-segmenter-prototype-properties' : ERROR ,
1099
+ 'es/no-nonstandard-iterator-properties' : ERROR ,
1100
+ 'es/no-nonstandard-iterator-prototype-properties' : ERROR ,
1101
+ 'es/no-nonstandard-json-properties' : ERROR ,
1102
+ 'es/no-nonstandard-map-properties' : ERROR ,
1103
+ 'es/no-nonstandard-map-prototype-properties' : ERROR ,
1104
+ 'es/no-nonstandard-math-properties' : ERROR ,
1105
+ 'es/no-nonstandard-number-properties' : ERROR ,
1106
+ 'es/no-nonstandard-number-prototype-properties' : ERROR ,
1107
+ 'es/no-nonstandard-object-properties' : ERROR ,
1108
+ 'es/no-nonstandard-promise-properties' : ERROR ,
1109
+ 'es/no-nonstandard-promise-prototype-properties' : ERROR ,
1110
+ 'es/no-nonstandard-proxy-properties' : ERROR ,
1111
+ 'es/no-nonstandard-reflect-properties' : ERROR ,
1112
+ 'es/no-nonstandard-regexp-properties' : ERROR ,
1113
+ 'es/no-nonstandard-regexp-prototype-properties' : ERROR ,
1114
+ 'es/no-nonstandard-set-properties' : ERROR ,
1115
+ 'es/no-nonstandard-set-prototype-properties' : ERROR ,
1116
+ 'es/no-nonstandard-sharedarraybuffer-properties' : ERROR ,
1117
+ 'es/no-nonstandard-sharedarraybuffer-prototype-properties' : ERROR ,
1118
+ 'es/no-nonstandard-string-properties' : ERROR ,
1119
+ 'es/no-nonstandard-string-prototype-properties' : ERROR ,
1120
+ 'es/no-nonstandard-symbol-properties' : [ ERROR , { allow : [
1121
+ 'sham' , // non-standard flag
1122
+ ] } ] ,
1123
+ 'es/no-nonstandard-symbol-prototype-properties' : ERROR ,
1124
+ 'es/no-nonstandard-typed-array-properties' : ERROR ,
1125
+ 'es/no-nonstandard-typed-array-prototype-properties' : ERROR ,
1126
+ 'es/no-nonstandard-weakmap-properties' : ERROR ,
1127
+ 'es/no-nonstandard-weakmap-prototype-properties' : ERROR ,
1128
+ 'es/no-nonstandard-weakref-properties' : ERROR ,
1129
+ 'es/no-nonstandard-weakref-prototype-properties' : ERROR ,
1130
+ 'es/no-nonstandard-weakset-properties' : ERROR ,
1131
+ 'es/no-nonstandard-weakset-prototype-properties' : ERROR ,
1132
+ } ;
1133
+
1134
+ const forbidCompletelyNonExistentBuiltIns = {
1135
+ ...forbidNonStandardBuiltIns ,
1136
+ // disallow non-standard built-in methods
1137
+ 'es/no-nonstandard-array-properties' : [ ERROR , { allow : [
1138
+ 'fromAsync' ,
1139
+ 'isTemplateObject' ,
1140
+ ] } ] ,
1141
+ 'es/no-nonstandard-array-prototype-properties' : [ ERROR , { allow : [
1142
+ 'filterReject' ,
1143
+ 'uniqueBy' ,
1144
+ // TODO: drop from `core-js@4`
1145
+ 'filterOut' ,
1146
+ 'group' ,
1147
+ 'groupBy' ,
1148
+ 'groupByToMap' ,
1149
+ 'groupToMap' ,
1150
+ 'lastIndex' ,
1151
+ 'lastItem' ,
1152
+ ] } ] ,
1153
+ 'es/no-nonstandard-bigint-properties' : [ ERROR , { allow : [
1154
+ // TODO: drop from `core-js@4`
1155
+ 'range' ,
1156
+ ] } ] ,
1157
+ 'es/no-nonstandard-dataview-prototype-properties' : [ ERROR , { allow : [
1158
+ 'getFloat16' ,
1159
+ 'getUint8Clamped' ,
1160
+ 'setFloat16' ,
1161
+ 'setUint8Clamped' ,
1162
+ ] } ] ,
1163
+ 'es/no-nonstandard-function-properties' : [ ERROR , { allow : [
1164
+ 'isCallable' ,
1165
+ 'isConstructor' ,
1166
+ ] } ] ,
1167
+ 'es/no-nonstandard-iterator-properties' : [ ERROR , { allow : [
1168
+ 'concat' ,
1169
+ 'range' ,
1170
+ ] } ] ,
1171
+ 'es/no-nonstandard-iterator-prototype-properties' : [ ERROR , { allow : [
1172
+ 'toAsync' ,
1173
+ // TODO: drop from `core-js@4`
1174
+ 'asIndexedPairs' ,
1175
+ 'indexed' ,
1176
+ ] } ] ,
1177
+ 'es/no-nonstandard-json-properties' : [ ERROR , { allow : [
1178
+ 'isRawJSON' ,
1179
+ 'rawJSON' ,
1180
+ ] } ] ,
1181
+ 'es/no-nonstandard-map-properties' : [ ERROR , { allow : [
1182
+ 'from' ,
1183
+ 'of' ,
1184
+ // TODO: drop from `core-js@4`
1185
+ 'keyBy' ,
1186
+ ] } ] ,
1187
+ 'es/no-nonstandard-map-prototype-properties' : [ ERROR , { allow : [
1188
+ 'getOrInsert' ,
1189
+ 'getOrInsertComputed' ,
1190
+ // TODO: drop from `core-js@4`
1191
+ 'deleteAll' ,
1192
+ 'emplace' ,
1193
+ 'every' ,
1194
+ 'filter' ,
1195
+ 'find' ,
1196
+ 'findKey' ,
1197
+ 'includes' ,
1198
+ 'keyOf' ,
1199
+ 'mapKeys' ,
1200
+ 'mapValues' ,
1201
+ 'merge' ,
1202
+ 'reduce' ,
1203
+ 'some' ,
1204
+ 'update' ,
1205
+ 'updateOrInsert' ,
1206
+ 'upsert' ,
1207
+ ] } ] ,
1208
+ 'es/no-nonstandard-math-properties' : [ ERROR , { allow : [
1209
+ 'f16round' ,
1210
+ 'sumPrecise' ,
1211
+ // TODO: drop from `core-js@4`
1212
+ 'DEG_PER_RAD' ,
1213
+ 'RAD_PER_DEG' ,
1214
+ 'clamp' ,
1215
+ 'degrees' ,
1216
+ 'fscale' ,
1217
+ 'iaddh' ,
1218
+ 'imulh' ,
1219
+ 'isubh' ,
1220
+ 'radians' ,
1221
+ 'scale' ,
1222
+ 'seededPRNG' ,
1223
+ 'signbit' ,
1224
+ 'umulh' ,
1225
+ ] } ] ,
1226
+ 'es/no-nonstandard-number-properties' : [ ERROR , { allow : [
1227
+ // TODO: drop from `core-js@4`
1228
+ 'fromString' ,
1229
+ 'range' ,
1230
+ ] } ] ,
1231
+ 'es/no-nonstandard-object-properties' : [ ERROR , { allow : [
1232
+ // TODO: drop from `core-js@4`
1233
+ 'iterateEntries' ,
1234
+ 'iterateKeys' ,
1235
+ 'iterateValues' ,
1236
+ ] } ] ,
1237
+ 'es/no-nonstandard-reflect-properties' : [ ERROR , { allow : [
1238
+ // TODO: drop from `core-js@4`
1239
+ 'defineMetadata' ,
1240
+ 'deleteMetadata' ,
1241
+ 'getMetadata' ,
1242
+ 'getMetadataKeys' ,
1243
+ 'getOwnMetadata' ,
1244
+ 'getOwnMetadataKeys' ,
1245
+ 'hasMetadata' ,
1246
+ 'hasOwnMetadata' ,
1247
+ 'metadata' ,
1248
+ ] } ] ,
1249
+ 'es/no-nonstandard-regexp-properties' : [ ERROR , { allow : [
1250
+ 'escape' ,
1251
+ ] } ] ,
1252
+ 'es/no-nonstandard-set-properties' : [ ERROR , { allow : [
1253
+ 'from' ,
1254
+ 'of' ,
1255
+ ] } ] ,
1256
+ 'es/no-nonstandard-set-prototype-properties' : [ ERROR , { allow : [
1257
+ // TODO: drop from `core-js@4`
1258
+ 'addAll' ,
1259
+ 'deleteAll' ,
1260
+ 'every' ,
1261
+ 'filter' ,
1262
+ 'find' ,
1263
+ 'join' ,
1264
+ 'map' ,
1265
+ 'reduce' ,
1266
+ 'some' ,
1267
+ ] } ] ,
1268
+ 'es/no-nonstandard-string-properties' : [ ERROR , { allow : [
1269
+ 'cooked' ,
1270
+ 'dedent' ,
1271
+ ] } ] ,
1272
+ 'es/no-nonstandard-string-prototype-properties' : [ ERROR , { allow : [
1273
+ // TODO: drop from `core-js@4`
1274
+ 'codePoints' ,
1275
+ ] } ] ,
1276
+ 'es/no-nonstandard-symbol-properties' : [ ERROR , { allow : [
1277
+ 'asyncDispose' ,
1278
+ 'customMatcher' ,
1279
+ 'dispose' ,
1280
+ 'isRegisteredSymbol' ,
1281
+ 'isWellKnownSymbol' ,
1282
+ 'metadata' ,
1283
+ 'sham' , // non-standard flag
1284
+ // TODO: drop from `core-js@4`
1285
+ 'isRegistered' ,
1286
+ 'isWellKnown' ,
1287
+ 'matcher' ,
1288
+ 'metadataKey' ,
1289
+ 'observable' ,
1290
+ 'patternMatch' ,
1291
+ 'replaceAll' ,
1292
+ 'useSetter' ,
1293
+ 'useSimple' ,
1294
+ ] } ] ,
1295
+ 'es/no-nonstandard-typed-array-properties' : [ ERROR , { allow : [
1296
+ 'fromBase64' ,
1297
+ 'fromHex' ,
1298
+ // TODO: drop from `core-js@4`
1299
+ 'fromAsync' ,
1300
+ ] } ] ,
1301
+ 'es/no-nonstandard-typed-array-prototype-properties' : [ ERROR , { allow : [
1302
+ 'filterReject' ,
1303
+ 'uniqueBy' ,
1304
+ // TODO: drop from `core-js@4`
1305
+ 'filterOut' ,
1306
+ 'groupBy' ,
1307
+ 'setFromBase64' ,
1308
+ 'setFromHex' ,
1309
+ 'toBase64' ,
1310
+ 'toHex' ,
1311
+ 'toSpliced' ,
1312
+ ] } ] ,
1313
+ 'es/no-nonstandard-weakmap-properties' : [ ERROR , { allow : [
1314
+ 'from' ,
1315
+ 'of' ,
1316
+ ] } ] ,
1317
+ 'es/no-nonstandard-weakmap-prototype-properties' : [ ERROR , { allow : [
1318
+ 'getOrInsert' ,
1319
+ 'getOrInsertComputed' ,
1320
+ // TODO: drop from `core-js@4`
1321
+ 'deleteAll' ,
1322
+ 'emplace' ,
1323
+ 'upsert' ,
1324
+ ] } ] ,
1325
+ 'es/no-nonstandard-weakset-properties' : [ ERROR , { allow : [
1326
+ 'from' ,
1327
+ 'of' ,
1328
+ ] } ] ,
1329
+ 'es/no-nonstandard-weakset-prototype-properties' : [ ERROR , { allow : [
1330
+ // TODO: drop from `core-js@4`
1331
+ 'addAll' ,
1332
+ 'deleteAll' ,
1333
+ ] } ] ,
1334
+ } ;
1335
+
1062
1336
const forbidESAnnexBBuiltIns = {
1063
1337
'es/no-date-prototype-getyear-setyear' : ERROR ,
1064
1338
'es/no-date-prototype-togmtstring' : ERROR ,
@@ -1384,6 +1658,7 @@ const transpiledAndPolyfilled = {
1384
1658
// enforce using named capture group in regular expression
1385
1659
'regexp/prefer-named-capture-group' : OFF ,
1386
1660
...forbidSomeES2025Syntax ,
1661
+ ...forbidCompletelyNonExistentBuiltIns ,
1387
1662
} ;
1388
1663
1389
1664
const nodePackages = {
@@ -1668,6 +1943,7 @@ const packagesPackageJSON = {
1668
1943
1669
1944
const markdown = {
1670
1945
...disable ( forbidModernBuiltIns ) ,
1946
+ ...forbidCompletelyNonExistentBuiltIns ,
1671
1947
// allow use of console
1672
1948
'no-console' : OFF ,
1673
1949
// disallow use of new operator when not part of the assignment or comparison
@@ -1781,6 +2057,7 @@ export default [
1781
2057
} ,
1782
2058
rules : {
1783
2059
...base ,
2060
+ ...forbidNonStandardBuiltIns ,
1784
2061
...forbidESAnnexBBuiltIns ,
1785
2062
} ,
1786
2063
} ,
@@ -1827,7 +2104,10 @@ export default [
1827
2104
files : [
1828
2105
'packages/core-js?(-pure)/**/instance/**' ,
1829
2106
] ,
1830
- rules : disable ( forbidModernBuiltIns ) ,
2107
+ rules : {
2108
+ ...disable ( forbidModernBuiltIns ) ,
2109
+ ...forbidCompletelyNonExistentBuiltIns ,
2110
+ } ,
1831
2111
} ,
1832
2112
{
1833
2113
files : [
@@ -1844,6 +2124,12 @@ export default [
1844
2124
] ,
1845
2125
rules : tests ,
1846
2126
} ,
2127
+ {
2128
+ files : [
2129
+ 'tests/compat/tests.js' ,
2130
+ ] ,
2131
+ rules : forbidCompletelyNonExistentBuiltIns ,
2132
+ } ,
1847
2133
{
1848
2134
files : [
1849
2135
'tests/@(helpers|unit-@(global|pure))/**' ,
0 commit comments