Skip to content

Commit d4e7e27

Browse files
committed
Update
1 parent 805a3d5 commit d4e7e27

File tree

4 files changed

+5
-210
lines changed

4 files changed

+5
-210
lines changed

docs/user-guide/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ yarn add -D eslint eslint-plugin-vue
2323
::: tip Requirements
2424

2525
- ESLint v6.2.0 and above
26-
- Node.js v12.22.x, v14.17.x, and v16.x and above
26+
- Node.js v12.22.x, v14.17.x, v16.x and above
2727

2828
:::
2929

lib/rules/no-unsupported-features.js

Lines changed: 1 addition & 206 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@
5353
"eslint": "^6.2.0 || ^7.0.0"
5454
},
5555
"dependencies": {
56-
"eslint-utils": "^2.1.0",
56+
"eslint-utils": "^3.0.0",
5757
"natural-compare": "^1.4.0",
58-
"semver": "^6.3.0",
58+
"semver": "^7.3.5",
5959
"vue-eslint-parser": "^7.10.0"
6060
},
6161
"devDependencies": {

tests/lib/rules/require-expose.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ tester.run('require-expose', rule, {
2121
filename: 'ValidComponent.vue',
2222
code: `
2323
<script>
24-
export default { // TODO
24+
export default {
2525
setup:() => function () {}
2626
}
2727
</script>

0 commit comments

Comments
 (0)