@@ -132,7 +132,7 @@ module.exports = {
132132 * @returns {boolean } `true` if it's supporting.
133133 */
134134 function isNotSupportingVersion ( aCase ) {
135- return ! semverSubset ( versionRange , getSemverRange ( aCase . supported ) )
135+ return ! semver . subset ( versionRange , getSemverRange ( aCase . supported ) )
136136 }
137137
138138 /** @type {TemplateListener } */
@@ -166,208 +166,3 @@ module.exports = {
166166 )
167167 }
168168}
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