@@ -132,7 +132,7 @@ module.exports = {
132
132
* @returns {boolean } `true` if it's supporting.
133
133
*/
134
134
function isNotSupportingVersion ( aCase ) {
135
- return ! semverSubset ( versionRange , getSemverRange ( aCase . supported ) )
135
+ return ! semver . subset ( versionRange , getSemverRange ( aCase . supported ) )
136
136
}
137
137
138
138
/** @type {TemplateListener } */
@@ -166,208 +166,3 @@ module.exports = {
166
166
)
167
167
}
168
168
}
169
-
170
- // TODO replace semver.subset() in the major version.
171
- /**
172
- * semver.subset()
173
- *
174
- * We need to use a copy of the semver source code until a major version upgrade.
175
- *
176
- * @see https://github.com/npm/node-semver/blob/e79ac3a450e8bb504e78b8159e3efc70895699b8/ranges/subset.js#L43
177
- * @license ISC at Isaac Z. Schlueter and Contributors
178
- * https://github.com/npm/node-semver/blob/master/LICENSE
179
- *
180
- * @param {semver.Range } sub
181
- * @param {semver.Range } dom
182
- */
183
- function semverSubset ( sub , dom ) {
184
- if ( sub === dom ) return true
185
-
186
- sub = new semver . Range ( sub )
187
- dom = new semver . Range ( dom )
188
- let sawNonNull = false
189
-
190
- // eslint-disable-next-line no-labels
191
- OUTER: for ( const simpleSub of sub . set ) {
192
- for ( const simpleDom of dom . set ) {
193
- const isSub = simpleSubset ( simpleSub , simpleDom )
194
- sawNonNull = sawNonNull || isSub !== null
195
- // eslint-disable-next-line no-labels
196
- if ( isSub ) continue OUTER
197
- }
198
- if ( sawNonNull ) return false
199
- }
200
- return true
201
- }
202
-
203
- /**
204
- * @license ISC at Isaac Z. Schlueter and Contributors
205
- * https://github.com/npm/node-semver/blob/master/LICENSE
206
- * @param {readonly semver.Comparator[] } sub
207
- * @param {readonly semver.Comparator[] } dom
208
- */
209
- function simpleSubset ( sub , dom ) {
210
- if ( sub === dom ) return true
211
-
212
- /**
213
- * @param {semver.Comparator } c
214
- */
215
- function isAny ( c ) {
216
- return Object . keys ( c . semver ) . length === 0
217
- }
218
-
219
- if ( sub . length === 1 && isAny ( sub [ 0 ] ) ) {
220
- if ( dom . length === 1 && isAny ( dom [ 0 ] ) ) return true
221
- else sub = [ new semver . Comparator ( '>=0.0.0' ) ]
222
- }
223
-
224
- if ( dom . length === 1 && isAny ( dom [ 0 ] ) ) {
225
- dom = [ new semver . Comparator ( '>=0.0.0' ) ]
226
- }
227
-
228
- const eqSet = new Set ( )
229
- let gt , lt
230
- for ( const c of sub ) {
231
- if ( c . operator === '>' || c . operator === '>=' ) gt = higherGT ( gt , c )
232
- else if ( c . operator === '<' || c . operator === '<=' ) lt = lowerLT ( lt , c )
233
- else eqSet . add ( c . semver )
234
- }
235
-
236
- if ( eqSet . size > 1 ) return null
237
-
238
- let gtltComp
239
- if ( gt && lt ) {
240
- gtltComp = semver . compare ( gt . semver , lt . semver )
241
- if ( gtltComp > 0 ) return null
242
- else if ( gtltComp === 0 && ( gt . operator !== '>=' || lt . operator !== '<=' ) )
243
- return null
244
- }
245
-
246
- // will iterate one or zero times
247
- for ( const eq of eqSet ) {
248
- if ( gt && ! semver . satisfies ( eq , String ( gt ) ) ) return null
249
-
250
- if ( lt && ! semver . satisfies ( eq , String ( lt ) ) ) return null
251
-
252
- for ( const c of dom ) {
253
- if ( ! semver . satisfies ( eq , String ( c ) ) ) return false
254
- }
255
-
256
- return true
257
- }
258
-
259
- let higher , lower
260
- let hasDomLT , hasDomGT
261
- // if the subset has a prerelease, we need a comparator in the superset
262
- // with the same tuple and a prerelease, or it's not a subset
263
- let needDomLTPre = lt && lt . semver . prerelease . length ? lt . semver : false
264
- let needDomGTPre = gt && gt . semver . prerelease . length ? gt . semver : false
265
- // exception: <1.2.3-0 is the same as <1.2.3
266
- if (
267
- needDomLTPre &&
268
- needDomLTPre . prerelease . length === 1 &&
269
- lt &&
270
- lt . operator === '<' &&
271
- needDomLTPre . prerelease [ 0 ] === 0
272
- ) {
273
- needDomLTPre = false
274
- }
275
-
276
- for ( const c of dom ) {
277
- hasDomGT = hasDomGT || c . operator === '>' || c . operator === '>='
278
- hasDomLT = hasDomLT || c . operator === '<' || c . operator === '<='
279
- if ( gt ) {
280
- if ( needDomGTPre ) {
281
- if (
282
- c . semver . prerelease &&
283
- c . semver . prerelease . length &&
284
- c . semver . major === needDomGTPre . major &&
285
- c . semver . minor === needDomGTPre . minor &&
286
- c . semver . patch === needDomGTPre . patch
287
- ) {
288
- needDomGTPre = false
289
- }
290
- }
291
- if ( c . operator === '>' || c . operator === '>=' ) {
292
- higher = higherGT ( gt , c )
293
- if ( higher === c && higher !== gt ) return false
294
- } else if (
295
- gt . operator === '>=' &&
296
- ! semver . satisfies ( gt . semver , String ( c ) )
297
- )
298
- return false
299
- }
300
- if ( lt ) {
301
- if ( needDomLTPre ) {
302
- if (
303
- c . semver . prerelease &&
304
- c . semver . prerelease . length &&
305
- c . semver . major === needDomLTPre . major &&
306
- c . semver . minor === needDomLTPre . minor &&
307
- c . semver . patch === needDomLTPre . patch
308
- ) {
309
- needDomLTPre = false
310
- }
311
- }
312
- if ( c . operator === '<' || c . operator === '<=' ) {
313
- lower = lowerLT ( lt , c )
314
- if ( lower === c && lower !== lt ) return false
315
- } else if (
316
- lt . operator === '<=' &&
317
- ! semver . satisfies ( lt . semver , String ( c ) )
318
- )
319
- return false
320
- }
321
- if ( ! c . operator && ( lt || gt ) && gtltComp !== 0 ) return false
322
- }
323
-
324
- // if there was a < or >, and nothing in the dom, then must be false
325
- // UNLESS it was limited by another range in the other direction.
326
- // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
327
- if ( gt && hasDomLT && ! lt && gtltComp !== 0 ) return false
328
-
329
- if ( lt && hasDomGT && ! gt && gtltComp !== 0 ) return false
330
-
331
- // we needed a prerelease range in a specific tuple, but didn't get one
332
- // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,
333
- // because it includes prereleases in the 1.2.3 tuple
334
- if ( needDomGTPre || needDomLTPre ) return false
335
-
336
- return true
337
- }
338
-
339
- /**
340
- * @license ISC at Isaac Z. Schlueter and Contributors
341
- * https://github.com/npm/node-semver/blob/master/LICENSE
342
- * @param {semver.Comparator | void } a
343
- * @param {semver.Comparator } b
344
- */
345
- const higherGT = ( a , b ) => {
346
- if ( ! a ) return b
347
- const comp = semver . compare ( a . semver , b . semver )
348
- return comp > 0
349
- ? a
350
- : comp < 0
351
- ? b
352
- : b . operator === '>' && a . operator === '>='
353
- ? b
354
- : a
355
- }
356
-
357
- /**
358
- * @license ISC at Isaac Z. Schlueter and Contributors
359
- * https://github.com/npm/node-semver/blob/master/LICENSE
360
- * @param {semver.Comparator | void } a
361
- * @param {semver.Comparator } b
362
- */
363
- const lowerLT = ( a , b ) => {
364
- if ( ! a ) return b
365
- const comp = semver . compare ( a . semver , b . semver )
366
- return comp < 0
367
- ? a
368
- : comp > 0
369
- ? b
370
- : b . operator === '<' && a . operator === '<='
371
- ? b
372
- : a
373
- }
0 commit comments