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