@@ -36,11 +36,19 @@ async function generate(assetMap) {
36
36
}
37
37
38
38
compatArray . sort ( ( a , b ) => {
39
- if ( a . key . toLowerCase ( ) < b . key . toLowerCase ( ) ) {
39
+ if ( a . key . split ( '.' ) [ 0 ] . toLowerCase ( ) < b . key . split ( '.' ) [ 0 ] . toLowerCase ( ) ) {
40
+ return - 1 ;
41
+ }
42
+
43
+ if ( a . key . split ( '.' ) [ 0 ] . toLowerCase ( ) > b . key . split ( '.' ) [ 0 ] . toLowerCase ( ) ) {
44
+ return 1 ;
45
+ }
46
+
47
+ if ( a . key < b . key ) {
40
48
return - 1 ;
41
49
}
42
50
43
- if ( a . key . toLowerCase ( ) > b . key . toLowerCase ( ) ) {
51
+ if ( a . key > b . key ) {
44
52
return 1 ;
45
53
}
46
54
@@ -122,51 +130,90 @@ function handleFeature(compat, name, feature) {
122
130
mapPropertyFeatureAPI ( compat , 'Window.customElements' , feature . name , feature ) ;
123
131
} else if ( name . includes ( '.prototype.' ) ) {
124
132
mapPrototypeFeatureAPI ( compat , name , feature . name , feature ) || mapPrototypeFeatureBuiltin ( compat , name , feature . name , feature ) ;
125
- } else if ( name . includes ( '.' ) ) {
133
+ } else if ( name . includes ( '.' ) && ! ( name . startsWith ( 'Window.' ) || name . startsWith ( 'window.' ) ) && ! ( name . startsWith ( 'Self.' ) || name . startsWith ( 'self.' ) ) ) {
126
134
mapPropertyFeatureAPI ( compat , name , feature . name , feature ) || mapPropertyFeatureBuiltin ( compat , name , feature . name , feature ) ||
127
135
mapPropertyFeatureAPI ( compat , toTitleCase ( name ) , feature . name , feature ) || mapPropertyFeatureBuiltin ( compat , toTitleCase ( name ) , feature . name , feature ) ;
128
136
} else if ( bcd . api [ name ] ) {
129
137
mapMainFeatureAPI ( compat , name , feature . name , feature ) ;
130
138
} else if ( bcd . javascript . builtins [ name ] ) {
131
139
mapMainFeatureBuiltin ( compat , name , feature . name , feature ) ;
132
- } else if ( bcd . api . WindowOrWorkerGlobalScope [ name ] ) {
133
- mapGlobalScopeFeatureAPI ( compat , name , feature . name , feature )
140
+ } else if ( bcd . api . Window [ name ] ) {
141
+ mapWindowFeatureAPI ( compat , name , feature . name , feature )
142
+ } else if ( bcd . api . WorkerGlobalScope [ name ] ) {
143
+ mapWorkerGlobalScopeFeatureAPI ( compat , name , feature . name , feature )
134
144
} else {
135
- if ( ! name . includes ( 'Window.' ) ) {
136
- handleFeature ( compat , 'Window.' + name , feature ) ;
145
+ if ( name . startsWith ( 'Window.' ) || name . startsWith ( 'window .') ) {
146
+ handleFeature ( compat , name . substr ( 7 ) , feature ) ;
137
147
return ;
138
148
}
139
149
140
150
console . log ( 'skipped' , feature . name ) ;
141
151
}
142
152
}
143
153
144
- function mapGlobalScopeFeatureAPI ( compat , featureName , polyfillName , feature ) {
154
+ function mapWindowFeatureAPI ( compat , featureName , polyfillName , feature ) {
145
155
let polyfilled = { } ;
146
156
let native = { } ;
147
157
for ( const browser of coreWebBrowsers ) {
148
158
const mdnBrowser = browsersCoreWebToMDN ( browser ) ;
149
159
if (
150
160
mdnBrowser &&
151
- bcd . api . WindowOrWorkerGlobalScope [ featureName ] . __compat &&
152
- bcd . api . WindowOrWorkerGlobalScope [ featureName ] . __compat . support &&
153
- bcd . api . WindowOrWorkerGlobalScope [ featureName ] . __compat . support [ mdnBrowser ]
161
+ bcd . api . Window [ featureName ] . __compat &&
162
+ bcd . api . Window [ featureName ] . __compat . support &&
163
+ bcd . api . Window [ featureName ] . __compat . support [ mdnBrowser ]
154
164
) {
155
165
polyfilled [ browser ] = ( feature . browsers || { } ) [ browser ] ;
156
- native [ browser ] = bcd . api . WindowOrWorkerGlobalScope [ featureName ] . __compat . support [ mdnBrowser ] ;
166
+ native [ browser ] = bcd . api . Window [ featureName ] . __compat . support [ mdnBrowser ] ;
157
167
}
158
168
}
159
169
160
- compat [ featureName ] = compat [ featureName ] || {
161
- key : featureName ,
170
+ if ( compat [ 'Window.' + featureName ] ) {
171
+ return true ;
172
+ }
173
+
174
+ compat [ 'Window.' + featureName ] = compat [ 'Window.' + featureName ] || {
175
+ key : 'Window.' + featureName ,
162
176
data : [ ] ,
163
177
} ;
164
178
165
- compat [ featureName ] . data . push ( {
166
- name : featureName ,
179
+ compat [ 'Window.' + featureName ] . data . push ( {
180
+ name : 'Window.' + featureName ,
181
+ polyfillName : polyfillName ,
182
+ coreWeb : feature ,
183
+ mdn : bcd . api . Window [ featureName ] ,
184
+ polyfilled : polyfilled ,
185
+ native : native ,
186
+ } ) ;
187
+
188
+ return true ;
189
+ }
190
+
191
+ function mapWorkerGlobalScopeFeatureAPI ( compat , featureName , polyfillName , feature ) {
192
+ let polyfilled = { } ;
193
+ let native = { } ;
194
+ for ( const browser of coreWebBrowsers ) {
195
+ const mdnBrowser = browsersCoreWebToMDN ( browser ) ;
196
+ if (
197
+ mdnBrowser &&
198
+ bcd . api . WorkerGlobalScope [ featureName ] . __compat &&
199
+ bcd . api . WorkerGlobalScope [ featureName ] . __compat . support &&
200
+ bcd . api . WorkerGlobalScope [ featureName ] . __compat . support [ mdnBrowser ]
201
+ ) {
202
+ polyfilled [ browser ] = ( feature . browsers || { } ) [ browser ] ;
203
+ native [ browser ] = bcd . api . WorkerGlobalScope [ featureName ] . __compat . support [ mdnBrowser ] ;
204
+ }
205
+ }
206
+
207
+ compat [ 'self.' + featureName ] = compat [ 'self.' + featureName ] || {
208
+ key : 'self.' + featureName ,
209
+ data : [ ] ,
210
+ } ;
211
+
212
+ compat [ 'self.' + featureName ] . data . push ( {
213
+ name : 'self.' + featureName ,
167
214
polyfillName : polyfillName ,
168
215
coreWeb : feature ,
169
- mdn : bcd . api . WindowOrWorkerGlobalScope [ featureName ] ,
216
+ mdn : bcd . api . WorkerGlobalScope [ featureName ] ,
170
217
polyfilled : polyfilled ,
171
218
native : native ,
172
219
} ) ;
0 commit comments