mirror of
https://github.com/sourcegraph/sourcegraph.git
synced 2026-02-06 15:51:43 +00:00
web: integrate @sourcegraph/eslint-plugin-sourcegraph (#35040)
This commit is contained in:
parent
9728c462a4
commit
b3f63c939b
@ -1,30 +0,0 @@
|
||||
# eslint-plugin-sourcegraph
|
||||
|
||||
Custom ESLint rules for Sourcegraph. This package should only be used within
|
||||
the main Sourcegraph project, and isn't intended for reuse by other packages in
|
||||
the Sourcegraph organisation.
|
||||
|
||||
## Rules
|
||||
|
||||
Rules are defined in `lib/rules`. At present, one rule is available.
|
||||
|
||||
### `check-help-links`
|
||||
|
||||
This rule parses `Link` and `a` elements in JSX/TSX files. If a list of valid
|
||||
docsite pages is provided, elements that point to a `/help/*` link are checked
|
||||
against that list: if they don't exist, a linting error is raised.
|
||||
|
||||
The list of docsite pages is provided either via the `DOCSITE_LIST` environment
|
||||
variable, which should be a newline separated list of pages as outputted by
|
||||
`docsite ls`, or via the `docsiteList` rule option, which is the same data as
|
||||
an array.
|
||||
|
||||
If neither of these are set, then the rule will silently succeed.
|
||||
|
||||
## Testing
|
||||
|
||||
Unit tests can be run with:
|
||||
|
||||
```sh
|
||||
yarn test
|
||||
```
|
||||
@ -1,14 +0,0 @@
|
||||
'use strict'
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
var requireIndex = require('requireindex')
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Plugin Definition
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// import all rules in lib/rules
|
||||
module.exports.rules = requireIndex(__dirname + '/rules')
|
||||
@ -1,101 +0,0 @@
|
||||
'use strict'
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Rule Definition
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
module.exports = {
|
||||
meta: {
|
||||
docs: {
|
||||
description: 'Check that /help links point to real, non-redirected pages',
|
||||
category: 'Best Practices',
|
||||
recommended: false,
|
||||
},
|
||||
schema: [
|
||||
{
|
||||
type: 'object',
|
||||
properties: {
|
||||
docsiteList: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
additionalProperties: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
create: function (context) {
|
||||
// Build the set of valid pages. In order, we'll try to get this from:
|
||||
//
|
||||
// 1. The DOCSITE_LIST environment variable, which should be a newline
|
||||
// separated list of pages, as outputted by `docsite ls`.
|
||||
// 2. The docsiteList rule option, which should be an array of pages.
|
||||
//
|
||||
// If neither of these are set, this rule will silently pass, so as not to
|
||||
// require docsite to be run when a user wants to run eslint in general.
|
||||
const pages = new Set()
|
||||
if (process.env.DOCSITE_LIST) {
|
||||
process.env.DOCSITE_LIST.split('\n').forEach(page => pages.add(page))
|
||||
} else if (context.options.length > 0) {
|
||||
context.options[0].docsiteList.forEach(page => pages.add(page))
|
||||
}
|
||||
|
||||
// No pages were provided, so we'll return an empty object and do nothing.
|
||||
if (pages.size === 0) {
|
||||
return {}
|
||||
}
|
||||
|
||||
// Return the object that will install the listeners we want. In this case,
|
||||
// we only need to look at JSX opening elements.
|
||||
//
|
||||
// Note that we could use AST selectors below, but the structure of the AST
|
||||
// makes that tricky: the identifer (Link or a) and attribute (to or href)
|
||||
// we use to identify an element of interest are siblings, so we'd probably
|
||||
// have to select on the identifier and have some ugly traversal code below
|
||||
// to check the attribute. It feels cleaner to do it this way with the
|
||||
// opening element as the context.
|
||||
return {
|
||||
JSXOpeningElement: node => {
|
||||
// Figure out what kind of element we have and therefore what attribute
|
||||
// we'd want to look for.
|
||||
let attrName
|
||||
if (node.name.name === 'Link') {
|
||||
attrName = 'to'
|
||||
} else if (node.name.name === 'a') {
|
||||
attrName = 'href'
|
||||
} else {
|
||||
// Anything that's not a link is uninteresting.
|
||||
return
|
||||
}
|
||||
|
||||
// Go find the link target in the attribute array.
|
||||
const target = node.attributes.reduce(
|
||||
(target, attr) => target || (attr.name && attr.name.name === attrName ? attr.value.value : undefined),
|
||||
undefined
|
||||
)
|
||||
|
||||
// Make sure the target points to a help link; if not, we don't need to
|
||||
// go any further.
|
||||
if (!target || !target.startsWith('/help/')) {
|
||||
return
|
||||
}
|
||||
|
||||
// Strip off the /help/ prefix, any anchor, and any trailing slash, then
|
||||
// look up the resultant page in the pages set, bearing in mind that it
|
||||
// might point to a directory and we also need to look for any index
|
||||
// page that might exist.
|
||||
const destination = target.substring(6).split('#')[0].replace(/\/+$/, '')
|
||||
if (!pages.has(destination + '.md') && !pages.has(destination + '/index.md')) {
|
||||
context.report({
|
||||
node,
|
||||
message: 'Help link to non-existent page: {{ destination }}',
|
||||
data: { destination },
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "@sourcegraph/eslint-plugin-sourcegraph",
|
||||
"version": "1.0.0",
|
||||
"description": "Custom ESLint rules for Sourcegraph",
|
||||
"keywords": [
|
||||
"eslint",
|
||||
"eslintplugin",
|
||||
"eslint-plugin"
|
||||
],
|
||||
"main": "lib/index.js",
|
||||
"scripts": {
|
||||
"lint:js": "echo 'TODO: add proper ESLint config, issue #19448'",
|
||||
"test": "mocha tests --recursive"
|
||||
},
|
||||
"dependencies": {
|
||||
"requireindex": "~1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"license": "Apache-2.0"
|
||||
}
|
||||
@ -1,81 +0,0 @@
|
||||
'use strict'
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
var rule = require('../../../lib/rules/check-help-links'),
|
||||
RuleTester = require('eslint').RuleTester
|
||||
|
||||
// Set up the configuration such that JSX is valid.
|
||||
RuleTester.setDefaultConfig({
|
||||
parserOptions: {
|
||||
ecmaVersion: 6,
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Tests
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const ruleTester = new RuleTester()
|
||||
const invalidLinkError = path => {
|
||||
return { message: 'Help link to non-existent page: ' + path, type: 'JSXOpeningElement' }
|
||||
}
|
||||
const options = [{ docsiteList: ['a.md', 'b/c.md', 'd/index.md'] }]
|
||||
|
||||
// Build up the test cases given the various combinations we need to support.
|
||||
const cases = { valid: [], invalid: [] }
|
||||
for (const [element, attribute] of [
|
||||
['a', 'href'],
|
||||
['Link', 'to'],
|
||||
]) {
|
||||
for (const anchor of ['', '#anchor', '#anchor#double']) {
|
||||
for (const content of ['', 'link content']) {
|
||||
const code = target =>
|
||||
content
|
||||
? `<${element} ${attribute}="${target}${anchor}">${content}</${element}>`
|
||||
: `<${element} ${attribute}="${target}${anchor}" />`
|
||||
|
||||
cases.valid.push(
|
||||
...[
|
||||
'/help/a',
|
||||
'/help/b/c',
|
||||
'/help/d',
|
||||
'/help/d/',
|
||||
'not-a-help-link',
|
||||
'help/but-not-absolute',
|
||||
'/help-but-not-a-directory',
|
||||
].map(target => {
|
||||
return {
|
||||
code: code(target),
|
||||
options,
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
cases.invalid.push(
|
||||
...['/help/', '/help/b', '/help/does/not/exist'].map(target => {
|
||||
return {
|
||||
code: code(target),
|
||||
errors: [invalidLinkError(target.substring(6))],
|
||||
options,
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Every case should be valid if the options are empty.
|
||||
cases.valid.push(
|
||||
...[...cases.invalid, ...cases.valid].map(({ code }) => {
|
||||
return { code }
|
||||
})
|
||||
)
|
||||
|
||||
// Actually run the tests.
|
||||
ruleTester.run('check-help-links', rule, cases)
|
||||
@ -132,7 +132,7 @@
|
||||
"@pollyjs/persister-fs": "^5.0.0",
|
||||
"@slack/web-api": "^5.10.0",
|
||||
"@sourcegraph/eslint-config": "^0.27.0",
|
||||
"@sourcegraph/eslint-plugin-sourcegraph": "1.0.0",
|
||||
"@sourcegraph/eslint-plugin-sourcegraph": "^1.0.5",
|
||||
"@sourcegraph/eslint-plugin-wildcard": "1.0.0",
|
||||
"@sourcegraph/prettierrc": "^3.0.3",
|
||||
"@sourcegraph/stylelint-config": "^1.4.0",
|
||||
|
||||
135
yarn.lock
135
yarn.lock
@ -3944,6 +3944,44 @@
|
||||
dependencies:
|
||||
prop-types "^15.6.2"
|
||||
|
||||
"@sourcegraph/codemod-cli@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/@sourcegraph/codemod-cli/-/codemod-cli-1.0.0.tgz#0039d25a9bb566c8cb8ac098ca34c0fdd64bc0cc"
|
||||
integrity sha512-qT9b1zyW/fa5h9v5UTkmGokqyoriTgTtZY2oHKyXsCbekdlbd1WJ+tXBHpsLRGOuBTGfjv1hIHcXeWdBi7j9Eg==
|
||||
dependencies:
|
||||
"@sourcegraph/codemod-common" "1.0.0"
|
||||
|
||||
"@sourcegraph/codemod-common@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/@sourcegraph/codemod-common/-/codemod-common-1.0.0.tgz#64ed2e3faf932650f5f60ea0bc60b2b572dcaad8"
|
||||
integrity sha512-QGlHVZFiAVYEWSIbcXP1rVQdXMgSBA3NUMhdkNMM3NUiuw3AL5fR5M/rH/bKyPHO2uOJF8XutqnEBpzbj4eRGw==
|
||||
|
||||
"@sourcegraph/codemod-toolkit-packages@1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/@sourcegraph/codemod-toolkit-packages/-/codemod-toolkit-packages-1.0.1.tgz#dfa4f592c90048006c9ab20007c600ca88819134"
|
||||
integrity sha512-NMLy/ozpWF02cQVHaTVdj4hCFigQYCYohXOiEMnUs7NenSQ2AeAu/K5M1uq16liZ0RoKP8eRABT1aaD0IwWSqg==
|
||||
dependencies:
|
||||
"@sourcegraph/codemod-common" "1.0.0"
|
||||
"@sourcegraph/codemod-toolkit-ts" "1.0.1"
|
||||
|
||||
"@sourcegraph/codemod-toolkit-ts@1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/@sourcegraph/codemod-toolkit-ts/-/codemod-toolkit-ts-1.0.1.tgz#028f9fd2bc8633458e7778bb538890bb552ad4a9"
|
||||
integrity sha512-CKJAxErXJMO3gwjqLhQqDpFeIGNuVe5V6PCs6p0U0fClTfIHQ58NwfYbY3q37no1phDo3polrBGeXZj8jy7MKQ==
|
||||
dependencies:
|
||||
"@sourcegraph/codemod-cli" "1.0.0"
|
||||
"@sourcegraph/codemod-common" "1.0.0"
|
||||
|
||||
"@sourcegraph/codemod-transforms@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/@sourcegraph/codemod-transforms/-/codemod-transforms-1.0.2.tgz#578ed64f5737e342feb98f2be02fe554828f8829"
|
||||
integrity sha512-/UgPJHadjTC6EHRa5j03H1Cps4jZitV6vPBHs9Gd/HAisBmkq6+9Y0tdgiyQ+HNCDPtb+EG8+ootlXEoSil7Aw==
|
||||
dependencies:
|
||||
"@sourcegraph/codemod-cli" "1.0.0"
|
||||
"@sourcegraph/codemod-common" "1.0.0"
|
||||
"@sourcegraph/codemod-toolkit-packages" "1.0.1"
|
||||
"@sourcegraph/codemod-toolkit-ts" "1.0.1"
|
||||
|
||||
"@sourcegraph/eslint-config@^0.27.0":
|
||||
version "0.27.0"
|
||||
resolved "https://registry.npmjs.org/@sourcegraph/eslint-config/-/eslint-config-0.27.0.tgz#f892b5ad8c6d975bbeb97dfc40b31d0c41e4f70b"
|
||||
@ -3965,6 +4003,20 @@
|
||||
eslint-plugin-unicorn "^21.0.0"
|
||||
eslint-plugin-unused-imports "^1.1.5"
|
||||
|
||||
"@sourcegraph/eslint-plugin-sourcegraph@^1.0.5":
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmjs.org/@sourcegraph/eslint-plugin-sourcegraph/-/eslint-plugin-sourcegraph-1.0.5.tgz#397d8b52d85102b04dfd6f86d0816f731561bae6"
|
||||
integrity sha512-609NL/0nOnGiDJHrTsIsaffNlm70ua5j7ftX6M3UhbMyMREX5xa7SwZmOjlBSwaaDlaP4SUmXwr7CumI7idM7g==
|
||||
dependencies:
|
||||
"@sourcegraph/codemod-transforms" "1.0.2"
|
||||
"@typescript-eslint/experimental-utils" "5.4.0"
|
||||
"@typescript-eslint/scope-manager" "5.4.0"
|
||||
debug "^4.3.2"
|
||||
ignore "^5.1.8"
|
||||
regexpp "^3.2.0"
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@sourcegraph/extension-api-classes@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/@sourcegraph/extension-api-classes/-/extension-api-classes-1.1.0.tgz#4e3f16875639f88c6783dd356cb128fa53cee091"
|
||||
@ -5600,10 +5652,10 @@
|
||||
"@types/tough-cookie" "*"
|
||||
parse5 "^4.0.0"
|
||||
|
||||
"@types/json-schema@*", "@types/json-schema@^7.0.0", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7":
|
||||
version "7.0.9"
|
||||
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
|
||||
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
|
||||
"@types/json-schema@*", "@types/json-schema@^7.0.0", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9":
|
||||
version "7.0.11"
|
||||
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
|
||||
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
|
||||
|
||||
"@types/json-stable-stringify@^1.0.32":
|
||||
version "1.0.32"
|
||||
@ -6299,6 +6351,18 @@
|
||||
eslint-scope "^5.1.1"
|
||||
eslint-utils "^3.0.0"
|
||||
|
||||
"@typescript-eslint/experimental-utils@5.4.0":
|
||||
version "5.4.0"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz#238a7418d2da3b24874ba35385eb21cc61d2a65e"
|
||||
integrity sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.9"
|
||||
"@typescript-eslint/scope-manager" "5.4.0"
|
||||
"@typescript-eslint/types" "5.4.0"
|
||||
"@typescript-eslint/typescript-estree" "5.4.0"
|
||||
eslint-scope "^5.1.1"
|
||||
eslint-utils "^3.0.0"
|
||||
|
||||
"@typescript-eslint/parser@^4.28.3":
|
||||
version "4.28.3"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.3.tgz#95f1d475c08268edffdcb2779993c488b6434b44"
|
||||
@ -6317,11 +6381,24 @@
|
||||
"@typescript-eslint/types" "4.28.3"
|
||||
"@typescript-eslint/visitor-keys" "4.28.3"
|
||||
|
||||
"@typescript-eslint/scope-manager@5.4.0":
|
||||
version "5.4.0"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz#aaab08415f4a9cf32b870c7750ae8ba4607126a1"
|
||||
integrity sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.4.0"
|
||||
"@typescript-eslint/visitor-keys" "5.4.0"
|
||||
|
||||
"@typescript-eslint/types@4.28.3":
|
||||
version "4.28.3"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.3.tgz#8fffd436a3bada422c2c1da56060a0566a9506c7"
|
||||
integrity sha512-kQFaEsQBQVtA9VGVyciyTbIg7S3WoKHNuOp/UF5RG40900KtGqfoiETWD/v0lzRXc+euVE9NXmfer9dLkUJrkA==
|
||||
|
||||
"@typescript-eslint/types@5.4.0":
|
||||
version "5.4.0"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz#b1c130f4b381b77bec19696c6e3366f9781ce8f2"
|
||||
integrity sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==
|
||||
|
||||
"@typescript-eslint/typescript-estree@4.28.3":
|
||||
version "4.28.3"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.3.tgz#253d7088100b2a38aefe3c8dd7bd1f8232ec46fb"
|
||||
@ -6335,6 +6412,19 @@
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/typescript-estree@5.4.0":
|
||||
version "5.4.0"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz#fe524fb308973c68ebeb7428f3b64499a6ba5fc0"
|
||||
integrity sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.4.0"
|
||||
"@typescript-eslint/visitor-keys" "5.4.0"
|
||||
debug "^4.3.2"
|
||||
globby "^11.0.4"
|
||||
is-glob "^4.0.3"
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/visitor-keys@4.28.3":
|
||||
version "4.28.3"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.3.tgz#26ac91e84b23529968361045829da80a4e5251c4"
|
||||
@ -6343,6 +6433,14 @@
|
||||
"@typescript-eslint/types" "4.28.3"
|
||||
eslint-visitor-keys "^2.0.0"
|
||||
|
||||
"@typescript-eslint/visitor-keys@5.4.0":
|
||||
version "5.4.0"
|
||||
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz#09bc28efd3621f292fe88c86eef3bf4893364c8c"
|
||||
integrity sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.4.0"
|
||||
eslint-visitor-keys "^3.0.0"
|
||||
|
||||
"@ungap/promise-all-settled@1.1.2":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
|
||||
@ -10884,7 +10982,7 @@ debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, de
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@4, debug@4.3.3, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.3:
|
||||
debug@4, debug@4.3.3, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3:
|
||||
version "4.3.3"
|
||||
resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
|
||||
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
|
||||
@ -12342,6 +12440,11 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
|
||||
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
|
||||
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
|
||||
|
||||
eslint-visitor-keys@^3.0.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
|
||||
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
|
||||
|
||||
eslint@7.14.0:
|
||||
version "7.14.0"
|
||||
resolved "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz#2d2cac1d28174c510a97b377f122a5507958e344"
|
||||
@ -15443,7 +15546,7 @@ is-generator-fn@^2.0.0:
|
||||
resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e"
|
||||
integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g==
|
||||
|
||||
is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
|
||||
is-glob@4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
|
||||
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
|
||||
@ -15464,6 +15567,13 @@ is-glob@^3.0.0, is-glob@^3.1.0:
|
||||
dependencies:
|
||||
is-extglob "^2.1.0"
|
||||
|
||||
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
|
||||
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
|
||||
dependencies:
|
||||
is-extglob "^2.1.1"
|
||||
|
||||
is-hexadecimal@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz#b6e710d7d07bb66b98cb8cece5c9b4921deeb835"
|
||||
@ -21528,10 +21638,10 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0:
|
||||
call-bind "^1.0.2"
|
||||
define-properties "^1.1.3"
|
||||
|
||||
regexpp@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
|
||||
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
|
||||
regexpp@^3.1.0, regexpp@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
||||
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
||||
|
||||
regexpu-core@^4.7.1:
|
||||
version "4.7.1"
|
||||
@ -21810,11 +21920,6 @@ requireindex@^1.2.0, requireindex@~1.2.0:
|
||||
resolved "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef"
|
||||
integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==
|
||||
|
||||
requireindex@~1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162"
|
||||
integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI=
|
||||
|
||||
requires-port@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user