es-check 9.4.0 → 9.4.2
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/detectFeatures.js +6 -6
- package/package.json +2 -2
- package/utils.js +57 -37
package/detectFeatures.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
const
|
|
1
|
+
const { fastBrakeSync } = require('fast-brake/sync');
|
|
2
2
|
const { ES_FEATURES, POLYFILL_PATTERNS, IMPORT_PATTERNS } = require('./constants');
|
|
3
|
+
const esversionPlugin = require('fast-brake/plugins/esversion');
|
|
4
|
+
|
|
5
|
+
const fastbrake = fastBrakeSync({ plugins: [esversionPlugin.default] });
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* Detects polyfills in the code and adds them to the polyfills Set
|
|
@@ -81,15 +84,12 @@ const detectFeatures = (code, ecmaVersion, sourceType, ignoreList = new Set(), o
|
|
|
81
84
|
if (checkForPolyfills) detectPolyfills(code, polyfills);
|
|
82
85
|
|
|
83
86
|
let detectedFeatures = [];
|
|
84
|
-
|
|
87
|
+
|
|
85
88
|
if (ast && ast.features) {
|
|
86
89
|
detectedFeatures = ast.features;
|
|
87
90
|
} else {
|
|
88
91
|
try {
|
|
89
|
-
|
|
90
|
-
sourceType: sourceType || 'script'
|
|
91
|
-
};
|
|
92
|
-
detectedFeatures = fastBrake.detect(code, detectOptions);
|
|
92
|
+
detectedFeatures = fastbrake.detect(code);
|
|
93
93
|
} catch (err) {
|
|
94
94
|
const error = new Error(`Failed to parse code: ${err.message}`);
|
|
95
95
|
error.type = 'ES-Check';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "es-check",
|
|
3
|
-
"version": "9.4.
|
|
3
|
+
"version": "9.4.2",
|
|
4
4
|
"description": "Checks the ECMAScript version of .js glob against a specified version of ECMAScript with a shell command",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"acorn-walk": "^8.3.4",
|
|
88
88
|
"browserslist": "^4.23.3",
|
|
89
89
|
"commander": "14.0.1",
|
|
90
|
-
"fast-brake": "^0.1.
|
|
90
|
+
"fast-brake": "^0.1.4",
|
|
91
91
|
"fast-glob": "^3.3.3",
|
|
92
92
|
"lilconfig": "^3.1.3",
|
|
93
93
|
"source-map": "^0.7.4",
|
package/utils.js
CHANGED
|
@@ -451,7 +451,30 @@ const ECMA_VERSION_MAP = {
|
|
|
451
451
|
2022: 'es2022',
|
|
452
452
|
2023: 'es2023',
|
|
453
453
|
2024: 'es2024',
|
|
454
|
-
2025: 'es2025'
|
|
454
|
+
2025: 'es2025',
|
|
455
|
+
es5: 'es5',
|
|
456
|
+
es6: 'es2015',
|
|
457
|
+
es7: 'es2016',
|
|
458
|
+
es8: 'es2017',
|
|
459
|
+
es9: 'es2018',
|
|
460
|
+
es10: 'es2019',
|
|
461
|
+
es11: 'es2020',
|
|
462
|
+
es12: 'es2021',
|
|
463
|
+
es13: 'es2022',
|
|
464
|
+
es14: 'es2023',
|
|
465
|
+
es15: 'es2024',
|
|
466
|
+
es16: 'es2025',
|
|
467
|
+
es2015: 'es2015',
|
|
468
|
+
es2016: 'es2016',
|
|
469
|
+
es2017: 'es2017',
|
|
470
|
+
es2018: 'es2018',
|
|
471
|
+
es2019: 'es2019',
|
|
472
|
+
es2020: 'es2020',
|
|
473
|
+
es2021: 'es2021',
|
|
474
|
+
es2022: 'es2022',
|
|
475
|
+
es2023: 'es2023',
|
|
476
|
+
es2024: 'es2024',
|
|
477
|
+
es2025: 'es2025'
|
|
455
478
|
};
|
|
456
479
|
|
|
457
480
|
/**
|
|
@@ -471,8 +494,10 @@ function getTargetVersion(ecmaVersion) {
|
|
|
471
494
|
* @param {string} file - File path for error reporting
|
|
472
495
|
* @returns {{ast: Object, error: null} | {ast: null, error: Object}}
|
|
473
496
|
*/
|
|
474
|
-
const
|
|
497
|
+
const { fastBrakeSync } = require('fast-brake/sync');
|
|
498
|
+
const esversionPlugin = require('fast-brake/plugins/esversion');
|
|
475
499
|
|
|
500
|
+
const fastbrake = fastBrakeSync({ plugins: [esversionPlugin.default] });
|
|
476
501
|
const parseCache = new Map();
|
|
477
502
|
|
|
478
503
|
function parseCode(code, acornOpts, acorn, file, needsFeatures = false) {
|
|
@@ -492,23 +517,14 @@ function parseCode(code, acornOpts, acorn, file, needsFeatures = false) {
|
|
|
492
517
|
: code;
|
|
493
518
|
|
|
494
519
|
const options = { target: targetVersion, sourceType };
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
if (moduleFeature) {
|
|
501
|
-
throw new Error(
|
|
502
|
-
`'${moduleFeature.name}' can only be used in ES modules. Use --module flag to enable module support` +
|
|
503
|
-
(moduleFeature.line ? ` at line ${moduleFeature.line}` : '')
|
|
504
|
-
);
|
|
505
|
-
}
|
|
520
|
+
|
|
521
|
+
const isCompatible = fastbrake.check(codeToCheck, options);
|
|
522
|
+
if (!isCompatible) {
|
|
523
|
+
throw new Error(`Code contains features incompatible with ${targetVersion}`);
|
|
506
524
|
}
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
const detectedFeatures = needsFeatures
|
|
511
|
-
? fastBrake.detect(codeToCheck, { sourceType })
|
|
525
|
+
|
|
526
|
+
const detectedFeatures = needsFeatures
|
|
527
|
+
? fastbrake.detect(codeToCheck)
|
|
512
528
|
: [];
|
|
513
529
|
|
|
514
530
|
const result = {
|
|
@@ -589,35 +605,39 @@ function handleESVersionError(options) {
|
|
|
589
605
|
}
|
|
590
606
|
}
|
|
591
607
|
|
|
592
|
-
(
|
|
593
|
-
try {
|
|
594
|
-
await fastBrake.check('', { target: 'es5' });
|
|
595
|
-
} catch (e) {}
|
|
596
|
-
})();
|
|
597
|
-
|
|
598
|
-
async function parseLightMode(code, ecmaVersion, isModule, allowHashBang, file) {
|
|
608
|
+
function parseLightMode(code, ecmaVersion, isModule, allowHashBang, file) {
|
|
599
609
|
const targetVersion = getTargetVersion(ecmaVersion);
|
|
600
|
-
|
|
610
|
+
|
|
601
611
|
const codeToCheck = allowHashBang && code.startsWith('#!')
|
|
602
612
|
? code.slice(code.indexOf('\n') + 1)
|
|
603
613
|
: code;
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
614
|
+
|
|
615
|
+
try {
|
|
616
|
+
const isCompatible = fastbrake.check(codeToCheck, {
|
|
617
|
+
target: targetVersion,
|
|
618
|
+
sourceType: isModule ? 'module' : 'script'
|
|
619
|
+
});
|
|
620
|
+
|
|
621
|
+
if (!isCompatible) {
|
|
622
|
+
return {
|
|
623
|
+
error: {
|
|
624
|
+
err: new Error(`Code contains features incompatible with ${targetVersion}`),
|
|
625
|
+
stack: '',
|
|
626
|
+
file
|
|
627
|
+
}
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
return { error: null };
|
|
632
|
+
} catch (err) {
|
|
611
633
|
return {
|
|
612
634
|
error: {
|
|
613
|
-
err: new Error(`
|
|
614
|
-
stack: '',
|
|
635
|
+
err: new Error(`Failed to check code in light mode: ${err.message}`),
|
|
636
|
+
stack: err.stack || '',
|
|
615
637
|
file
|
|
616
638
|
}
|
|
617
639
|
};
|
|
618
640
|
}
|
|
619
|
-
|
|
620
|
-
return { error: null };
|
|
621
641
|
}
|
|
622
642
|
|
|
623
643
|
module.exports = {
|