1
1
import { describe , expect , test } from 'vitest' ;
2
+ import type { EcmaScriptVersion } from '../src/types' ;
2
3
import {
3
4
ESX_TO_BROWSERSLIST ,
4
5
transformSyntaxToBrowserslist ,
5
6
transformSyntaxToRspackTarget ,
6
7
} from '../src/utils/syntax' ;
7
8
8
9
const 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
+ ] ;
11
20
12
21
if ( aMajor !== bMajor ) {
13
22
return aMajor - bMajor ;
@@ -27,7 +36,7 @@ describe('ESX_TO_BROWSERSLIST', () => {
27
36
} ) ;
28
37
29
38
test ( 'ECMA version mapped browserslist queries should increments' , ( ) => {
30
- const sortedVersions = [
39
+ const sortedVersions : EcmaScriptVersion [ ] = [
31
40
'es5' ,
32
41
'es6' ,
33
42
'es2015' ,
@@ -39,16 +48,18 @@ describe('ESX_TO_BROWSERSLIST', () => {
39
48
'es2021' ,
40
49
'es2022' ,
41
50
'es2023' ,
42
- 'es2024' ,
43
- 'esnext' ,
44
51
] ;
45
52
46
53
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 ] ! ;
49
56
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 ] ;
52
63
if ( prevQuery && currQuery ) {
53
64
expect ( compareSemver ( currQuery , prevQuery ) ) . toBeGreaterThanOrEqual ( 0 ) ;
54
65
}
@@ -59,7 +70,9 @@ describe('ESX_TO_BROWSERSLIST', () => {
59
70
60
71
describe ( 'transformSyntaxToBrowserslist' , ( ) => {
61
72
test ( 'esX' , ( ) => {
62
- expect ( transformSyntaxToBrowserslist ( 'es2015' ) ) . toMatchInlineSnapshot ( `
73
+ expect (
74
+ transformSyntaxToBrowserslist ( 'es2015' , 'web' ) ,
75
+ ) . toMatchInlineSnapshot ( `
63
76
[
64
77
"chrome >= 63.0.0",
65
78
"edge >= 79.0.0",
@@ -71,7 +84,9 @@ describe('transformSyntaxToBrowserslist', () => {
71
84
]
72
85
` ) ;
73
86
74
- expect ( transformSyntaxToBrowserslist ( 'es2018' ) ) . toMatchInlineSnapshot ( `
87
+ expect (
88
+ transformSyntaxToBrowserslist ( 'es2018' , 'web' ) ,
89
+ ) . toMatchInlineSnapshot ( `
75
90
[
76
91
"chrome >= 64.0.0",
77
92
"edge >= 79.0.0",
@@ -111,15 +126,15 @@ describe('transformSyntaxToBrowserslist', () => {
111
126
112
127
test ( 'browserslist' , ( ) => {
113
128
expect (
114
- transformSyntaxToBrowserslist ( [ 'fully supports es6-module' ] ) ,
129
+ transformSyntaxToBrowserslist ( [ 'fully supports es6-module' ] , 'web' ) ,
115
130
) . toMatchInlineSnapshot ( `
116
131
[
117
132
"fully supports es6-module",
118
133
]
119
134
` ) ;
120
135
121
136
expect (
122
- transformSyntaxToBrowserslist ( [ 'node 14' , 'Chrome 103' ] ) ,
137
+ transformSyntaxToBrowserslist ( [ 'node 14' , 'Chrome 103' ] , 'web' ) ,
123
138
) . toMatchInlineSnapshot ( `
124
139
[
125
140
"node 14",
@@ -130,7 +145,7 @@ describe('transformSyntaxToBrowserslist', () => {
130
145
131
146
test ( 'combined' , ( ) => {
132
147
expect (
133
- transformSyntaxToBrowserslist ( [ 'Chrome 123' , 'es5' ] ) ,
148
+ transformSyntaxToBrowserslist ( [ 'Chrome 123' , 'es5' ] , 'web' ) ,
134
149
) . toMatchInlineSnapshot ( `
135
150
[
136
151
"Chrome 123",
@@ -145,8 +160,8 @@ describe('transformSyntaxToBrowserslist', () => {
145
160
]
146
161
` ) ;
147
162
148
- expect ( transformSyntaxToBrowserslist ( [ 'es5' ] ) ) . toEqual (
149
- transformSyntaxToBrowserslist ( 'es5' ) ,
163
+ expect ( transformSyntaxToBrowserslist ( [ 'es5' ] , 'web' ) ) . toEqual (
164
+ transformSyntaxToBrowserslist ( 'es5' , 'web' ) ,
150
165
) ;
151
166
} ) ;
152
167
} ) ;
0 commit comments