11import { describe , expect , test } from 'vitest' ;
2+ import type { EcmaScriptVersion } from '../src/types' ;
23import {
34 ESX_TO_BROWSERSLIST ,
45 transformSyntaxToBrowserslist ,
56 transformSyntaxToRspackTarget ,
67} from '../src/utils/syntax' ;
78
89const compareSemver = ( a : string , b : string ) => {
9- const [ aMajor , aMinor , aPatch ] = a . split ( '.' ) . map ( Number ) ;
10- const [ bMajor , bMinor , bPatch ] = b . split ( '.' ) . map ( Number ) ;
10+ const [ aMajor , aMinor , aPatch ] = a . split ( '.' ) . map ( Number ) as [
11+ number ,
12+ number ,
13+ number ,
14+ ] ;
15+ const [ bMajor , bMinor , bPatch ] = b . split ( '.' ) . map ( Number ) as [
16+ number ,
17+ number ,
18+ number ,
19+ ] ;
1120
1221 if ( aMajor !== bMajor ) {
1322 return aMajor - bMajor ;
@@ -27,7 +36,7 @@ describe('ESX_TO_BROWSERSLIST', () => {
2736 } ) ;
2837
2938 test ( 'ECMA version mapped browserslist queries should increments' , ( ) => {
30- const sortedVersions = [
39+ const sortedVersions : EcmaScriptVersion [ ] = [
3140 'es5' ,
3241 'es6' ,
3342 'es2015' ,
@@ -39,16 +48,18 @@ describe('ESX_TO_BROWSERSLIST', () => {
3948 'es2021' ,
4049 'es2022' ,
4150 'es2023' ,
42- 'es2024' ,
43- 'esnext' ,
4451 ] ;
4552
4653 for ( let i = 1 ; i < sortedVersions . length ; i ++ ) {
47- const prev = sortedVersions [ i - 1 ] ;
48- const current = sortedVersions [ i ] ;
54+ const prev = sortedVersions [ i - 1 ] ! ;
55+ const current = sortedVersions [ i ] ! ;
4956 for ( const query of Object . keys ( ESX_TO_BROWSERSLIST [ current ] ) ) {
50- const prevQuery = ESX_TO_BROWSERSLIST [ prev ] [ query ] ;
51- const currQuery = ESX_TO_BROWSERSLIST [ current ] [ query ] ;
57+ const prevQuery = ( ESX_TO_BROWSERSLIST [ prev ] as Record < string , string > ) [
58+ query
59+ ] ;
60+ const currQuery = (
61+ ESX_TO_BROWSERSLIST [ current ] as Record < string , string >
62+ ) [ query ] ;
5263 if ( prevQuery && currQuery ) {
5364 expect ( compareSemver ( currQuery , prevQuery ) ) . toBeGreaterThanOrEqual ( 0 ) ;
5465 }
@@ -59,7 +70,9 @@ describe('ESX_TO_BROWSERSLIST', () => {
5970
6071describe ( 'transformSyntaxToBrowserslist' , ( ) => {
6172 test ( 'esX' , ( ) => {
62- expect ( transformSyntaxToBrowserslist ( 'es2015' ) ) . toMatchInlineSnapshot ( `
73+ expect (
74+ transformSyntaxToBrowserslist ( 'es2015' , 'web' ) ,
75+ ) . toMatchInlineSnapshot ( `
6376 [
6477 "chrome >= 63.0.0",
6578 "edge >= 79.0.0",
@@ -71,7 +84,9 @@ describe('transformSyntaxToBrowserslist', () => {
7184 ]
7285 ` ) ;
7386
74- expect ( transformSyntaxToBrowserslist ( 'es2018' ) ) . toMatchInlineSnapshot ( `
87+ expect (
88+ transformSyntaxToBrowserslist ( 'es2018' , 'web' ) ,
89+ ) . toMatchInlineSnapshot ( `
7590 [
7691 "chrome >= 64.0.0",
7792 "edge >= 79.0.0",
@@ -111,15 +126,15 @@ describe('transformSyntaxToBrowserslist', () => {
111126
112127 test ( 'browserslist' , ( ) => {
113128 expect (
114- transformSyntaxToBrowserslist ( [ 'fully supports es6-module' ] ) ,
129+ transformSyntaxToBrowserslist ( [ 'fully supports es6-module' ] , 'web' ) ,
115130 ) . toMatchInlineSnapshot ( `
116131 [
117132 "fully supports es6-module",
118133 ]
119134 ` ) ;
120135
121136 expect (
122- transformSyntaxToBrowserslist ( [ 'node 14' , 'Chrome 103' ] ) ,
137+ transformSyntaxToBrowserslist ( [ 'node 14' , 'Chrome 103' ] , 'web' ) ,
123138 ) . toMatchInlineSnapshot ( `
124139 [
125140 "node 14",
@@ -130,7 +145,7 @@ describe('transformSyntaxToBrowserslist', () => {
130145
131146 test ( 'combined' , ( ) => {
132147 expect (
133- transformSyntaxToBrowserslist ( [ 'Chrome 123' , 'es5' ] ) ,
148+ transformSyntaxToBrowserslist ( [ 'Chrome 123' , 'es5' ] , 'web' ) ,
134149 ) . toMatchInlineSnapshot ( `
135150 [
136151 "Chrome 123",
@@ -145,8 +160,8 @@ describe('transformSyntaxToBrowserslist', () => {
145160 ]
146161 ` ) ;
147162
148- expect ( transformSyntaxToBrowserslist ( [ 'es5' ] ) ) . toEqual (
149- transformSyntaxToBrowserslist ( 'es5' ) ,
163+ expect ( transformSyntaxToBrowserslist ( [ 'es5' ] , 'web' ) ) . toEqual (
164+ transformSyntaxToBrowserslist ( 'es5' , 'web' ) ,
150165 ) ;
151166 } ) ;
152167} ) ;
0 commit comments