Update checked-in dependencies
This commit is contained in:
parent
46043e8a9e
commit
4a0d3378b1
21 changed files with 760 additions and 6 deletions
27
node_modules/.package-lock.json
generated
vendored
27
node_modules/.package-lock.json
generated
vendored
|
|
@ -2270,16 +2270,19 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-github": {
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-4.1.5.tgz",
|
||||
"integrity": "sha512-fY+3C8914Efqzmb6ODvL0ZNjv8xxLkwmUasYZ189IY1gL7AxFE9CVED+MZA8B1e+OZtnfTdrQR036t5AYoun0A==",
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-4.2.0.tgz",
|
||||
"integrity": "sha512-YAzCgSKFpZK7e3YVBKNmsVqHG5+/+cFWXKx8gi2zj96vlFA665mHRhHAMTNuPQmY22Lx4c5Xq26KIRiVLQMmqQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^4.20.0",
|
||||
"@typescript-eslint/parser": "^4.20.0",
|
||||
"eslint-config-prettier": ">=8.0.0",
|
||||
"eslint-plugin-eslint-comments": "^3.2.0",
|
||||
"eslint-plugin-filenames": "^1.3.2",
|
||||
"eslint-plugin-i18n-text": "^1.0.1",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-no-only-tests": "^2.6.0",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"eslint-rule-documentation": ">=1.0.0",
|
||||
"prettier": "^2.2.1",
|
||||
|
|
@ -2292,6 +2295,15 @@
|
|||
"eslint": "^7.23.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-i18n-text": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-i18n-text/-/eslint-plugin-i18n-text-1.0.1.tgz",
|
||||
"integrity": "sha512-3G3UetST6rdqhqW9SfcfzNYMpQXS7wNkJvp6dsXnjzGiku6Iu5hl3B0kmk6lIcFPwYjhQIY+tXVRtK9TlGT7RA==",
|
||||
"dev": true,
|
||||
"peerDependencies": {
|
||||
"eslint": ">=5.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-import": {
|
||||
"version": "2.24.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.0.tgz",
|
||||
|
|
@ -2412,6 +2424,15 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-no-only-tests": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-2.6.0.tgz",
|
||||
"integrity": "sha512-T9SmE/g6UV1uZo1oHAqOvL86XWl7Pl2EpRpnLI8g/bkJu+h7XBCB+1LnubRZ2CUQXj805vh4/CYZdnqtVaEo2Q==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-prettier": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz",
|
||||
|
|
|
|||
10
node_modules/eslint-plugin-github/lib/configs/browser.js
generated
vendored
10
node_modules/eslint-plugin-github/lib/configs/browser.js
generated
vendored
|
|
@ -13,6 +13,14 @@ module.exports = {
|
|||
'github/unescaped-html-literal': 'error',
|
||||
'github/no-useless-passive': 'error',
|
||||
'github/require-passive-events': 'error',
|
||||
'github/prefer-observers': 'error'
|
||||
'github/prefer-observers': 'error',
|
||||
'import/no-nodejs-modules': 'error',
|
||||
'no-restricted-syntax': [
|
||||
'error',
|
||||
{
|
||||
selector: "NewExpression[callee.name='URL'][arguments.length=1]",
|
||||
message: 'Please pass in `window.location.origin` as the 2nd argument to `new URL()`'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
20
node_modules/eslint-plugin-github/lib/configs/recommended.js
generated
vendored
20
node_modules/eslint-plugin-github/lib/configs/recommended.js
generated
vendored
|
|
@ -8,7 +8,7 @@ module.exports = {
|
|||
env: {
|
||||
es6: true
|
||||
},
|
||||
plugins: ['github', 'prettier', 'eslint-comments', 'import'],
|
||||
plugins: ['github', 'prettier', 'eslint-comments', 'import', 'filenames', 'i18n-text', 'no-only-tests'],
|
||||
rules: {
|
||||
'constructor-super': 'error',
|
||||
'eslint-comments/disable-enable-pair': 'off',
|
||||
|
|
@ -18,16 +18,20 @@ module.exports = {
|
|||
'eslint-comments/no-unused-disable': 'error',
|
||||
'eslint-comments/no-unused-enable': 'error',
|
||||
'eslint-comments/no-use': ['error', {allow: ['eslint', 'eslint-disable-next-line', 'eslint-env', 'globals']}],
|
||||
'filenames/match-regex': ['error', '^[a-z0-9-]+(.d)?$'],
|
||||
'func-style': ['error', 'declaration', {allowArrowFunctions: true}],
|
||||
'github/array-foreach': 'error',
|
||||
'github/no-implicit-buggy-globals': 'error',
|
||||
'github/no-then': 'error',
|
||||
'i18n-text/no-en': ['error'],
|
||||
'import/default': 'error',
|
||||
'import/export': 'error',
|
||||
'import/extensions': 'error',
|
||||
'import/first': 'error',
|
||||
'import/named': 'error',
|
||||
'import/namespace': 'error',
|
||||
'import/no-absolute-path': 'error',
|
||||
'import/no-amd': 'error',
|
||||
'import/no-anonymous-default-export': [
|
||||
'error',
|
||||
{
|
||||
|
|
@ -39,12 +43,17 @@ module.exports = {
|
|||
allowObject: true
|
||||
}
|
||||
],
|
||||
'import/no-commonjs': 'error',
|
||||
'import/no-deprecated': 'error',
|
||||
'import/no-duplicates': 'error',
|
||||
'import/no-dynamic-require': 'error',
|
||||
'import/no-extraneous-dependencies': [0, {devDependencies: false}],
|
||||
'import/no-mutable-exports': 'error',
|
||||
'import/no-named-as-default': 'error',
|
||||
'import/no-named-as-default-member': 'error',
|
||||
'import/no-namespace': 'error',
|
||||
'import/no-unresolved': 'error',
|
||||
'import/no-webpack-loader-syntax': 'error',
|
||||
'no-case-declarations': 'error',
|
||||
'no-class-assign': 'error',
|
||||
'no-compare-neg-zero': 'error',
|
||||
|
|
@ -76,10 +85,17 @@ module.exports = {
|
|||
'no-new-symbol': 'error',
|
||||
'no-obj-calls': 'error',
|
||||
'no-octal': 'error',
|
||||
'no-only-tests/no-only-tests': [
|
||||
'error',
|
||||
{
|
||||
block: ['describe', 'it', 'context', 'test', 'tape', 'fixture', 'serial', 'suite']
|
||||
}
|
||||
],
|
||||
'no-redeclare': 'error',
|
||||
'no-regex-spaces': 'error',
|
||||
'no-return-assign': 'error',
|
||||
'no-self-assign': 'error',
|
||||
'no-sequences': ['error'],
|
||||
'no-shadow': 'error',
|
||||
'no-sparse-arrays': 'error',
|
||||
'no-this-before-super': 'error',
|
||||
|
|
@ -94,6 +110,7 @@ module.exports = {
|
|||
'no-useless-escape': 'error',
|
||||
'no-var': 'error',
|
||||
'object-shorthand': ['error', 'always', {avoidQuotes: true}],
|
||||
'one-var': ['error', 'never'],
|
||||
'prefer-const': 'error',
|
||||
'prefer-promise-reject-errors': 'error',
|
||||
'prefer-rest-params': 'error',
|
||||
|
|
@ -101,6 +118,7 @@ module.exports = {
|
|||
'prefer-template': 'error',
|
||||
'prettier/prettier': 'error',
|
||||
'require-yield': 'error',
|
||||
'sort-imports': 'error',
|
||||
'use-isnan': 'error',
|
||||
'valid-typeof': 'error',
|
||||
camelcase: ['error', {properties: 'always'}],
|
||||
|
|
|
|||
5
node_modules/eslint-plugin-github/package.json
generated
vendored
5
node_modules/eslint-plugin-github/package.json
generated
vendored
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "eslint-plugin-github",
|
||||
"version": "4.1.5",
|
||||
"version": "4.2.0",
|
||||
"description": "An opinionated collection of ESLint shared configs and rules used by GitHub.",
|
||||
"main": "lib/index.js",
|
||||
"entries": [
|
||||
|
|
@ -29,7 +29,10 @@
|
|||
"@typescript-eslint/parser": "^4.20.0",
|
||||
"eslint-config-prettier": ">=8.0.0",
|
||||
"eslint-plugin-eslint-comments": "^3.2.0",
|
||||
"eslint-plugin-filenames": "^1.3.2",
|
||||
"eslint-plugin-i18n-text": "^1.0.1",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-no-only-tests": "^2.6.0",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"eslint-rule-documentation": ">=1.0.0",
|
||||
"prettier": "^2.2.1",
|
||||
|
|
|
|||
18
node_modules/eslint-plugin-i18n-text/.eslintrc
generated
vendored
Normal file
18
node_modules/eslint-plugin-i18n-text/.eslintrc
generated
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"extends": "eslint:recommended",
|
||||
"env": {
|
||||
"node": true,
|
||||
"es6": true
|
||||
},
|
||||
"plugins": ["prettier"],
|
||||
"rules": {
|
||||
"prettier/prettier": "error",
|
||||
"camelcase": "error",
|
||||
"eqeqeq": ["error", "smart"],
|
||||
"no-implicit-globals": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-var": "error",
|
||||
"prefer-const": "error",
|
||||
"strict": "error"
|
||||
}
|
||||
}
|
||||
6
node_modules/eslint-plugin-i18n-text/.prettierrc
generated
vendored
Normal file
6
node_modules/eslint-plugin-i18n-text/.prettierrc
generated
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"bracketSpacing": false,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none"
|
||||
}
|
||||
3
node_modules/eslint-plugin-i18n-text/.travis.yml
generated
vendored
Normal file
3
node_modules/eslint-plugin-i18n-text/.travis.yml
generated
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
language: node_js
|
||||
node_js:
|
||||
- "node"
|
||||
20
node_modules/eslint-plugin-i18n-text/LICENSE
generated
vendored
Normal file
20
node_modules/eslint-plugin-i18n-text/LICENSE
generated
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
Copyright (c) 2017-2019 David Graham
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
61
node_modules/eslint-plugin-i18n-text/README.md
generated
vendored
Normal file
61
node_modules/eslint-plugin-i18n-text/README.md
generated
vendored
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# eslint-plugin-i18n-text
|
||||
|
||||
Disallow English text in string literals.
|
||||
|
||||
Embedding messages in JavaScript files prevents them from being translated into
|
||||
other languages. An alternative is to embed the translated text in the markup
|
||||
and find it with JavaScript.
|
||||
|
||||
```html
|
||||
<div class="js-message" data-success-message="It works!">…</div>
|
||||
```
|
||||
|
||||
```js
|
||||
const el = document.querySelector('.js-message')
|
||||
el.textContent = el.getAttribute('data-success-message')
|
||||
```
|
||||
|
||||
This pattern allows the web framework that's generating the markup to use
|
||||
its translation library to insert the appropriate translated text.
|
||||
|
||||
## Installation
|
||||
|
||||
You'll first need to install [ESLint](http://eslint.org):
|
||||
|
||||
```
|
||||
$ npm install eslint --save-dev
|
||||
```
|
||||
|
||||
Next, install `eslint-plugin-i18n-text`:
|
||||
|
||||
```
|
||||
$ npm install eslint-plugin-i18n-text --save-dev
|
||||
```
|
||||
|
||||
**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-i18n-text` globally.
|
||||
|
||||
## Usage
|
||||
|
||||
Add `i18n-text` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:
|
||||
|
||||
```json
|
||||
{
|
||||
"plugins": [
|
||||
"i18n-text"
|
||||
],
|
||||
"rules": {
|
||||
"i18n-text/no-en": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
```
|
||||
npm install
|
||||
npm test
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
Distributed under the MIT license. See LICENSE for details.
|
||||
7
node_modules/eslint-plugin-i18n-text/index.js
generated
vendored
Normal file
7
node_modules/eslint-plugin-i18n-text/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
'use strict'
|
||||
|
||||
module.exports = {
|
||||
rules: {
|
||||
'no-en': require('./rules/no-en')
|
||||
}
|
||||
}
|
||||
27
node_modules/eslint-plugin-i18n-text/package.json
generated
vendored
Normal file
27
node_modules/eslint-plugin-i18n-text/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"name": "eslint-plugin-i18n-text",
|
||||
"version": "1.0.1",
|
||||
"description": "Disallow English text in string literals",
|
||||
"repository": "dgraham/eslint-plugin-i18n-text",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"eslint",
|
||||
"eslintplugin",
|
||||
"eslint-plugin"
|
||||
],
|
||||
"author": "David Graham",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"pretest": "eslint .",
|
||||
"test": "mocha --reporter dot tests/"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": ">=5.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^6.4.0",
|
||||
"eslint-plugin-prettier": "^3.1.0",
|
||||
"mocha": "^6.2.0",
|
||||
"prettier": "^1.18.2"
|
||||
}
|
||||
}
|
||||
96
node_modules/eslint-plugin-i18n-text/rules/no-en.js
generated
vendored
Normal file
96
node_modules/eslint-plugin-i18n-text/rules/no-en.js
generated
vendored
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
'use strict'
|
||||
|
||||
const message = 'English text in string literals is not allowed'
|
||||
|
||||
function isEnglish(value) {
|
||||
return typeof value === 'string' && /^[A-Z][a-z]+\s/.test(value)
|
||||
}
|
||||
|
||||
function isConsole(node) {
|
||||
return (
|
||||
node.callee.type === 'MemberExpression' &&
|
||||
node.callee.object.name === 'console'
|
||||
)
|
||||
}
|
||||
|
||||
function isInvariant(node) {
|
||||
return node.callee.type === 'Identifier' && node.callee.name === 'invariant'
|
||||
}
|
||||
|
||||
function isSuite(node) {
|
||||
return node.callee.type === 'Identifier' && node.callee.name === 'suite'
|
||||
}
|
||||
|
||||
function isTest(node) {
|
||||
return node.callee.type === 'Identifier' && node.callee.name === 'test'
|
||||
}
|
||||
|
||||
function isAssert(node) {
|
||||
const direct =
|
||||
node.callee.type === 'Identifier' && node.callee.name === 'assert'
|
||||
const member =
|
||||
node.callee.type === 'MemberExpression' &&
|
||||
node.callee.object.name === 'assert'
|
||||
return direct || member
|
||||
}
|
||||
|
||||
module.exports = function(context) {
|
||||
return {
|
||||
LogicalExpression: function(node) {
|
||||
if (node.right.type === 'Literal' && isEnglish(node.right.value)) {
|
||||
context.report({node: node.right, message})
|
||||
} else if (node.right.type === 'TemplateLiteral') {
|
||||
if (node.right.quasis.some(el => isEnglish(el.value.raw))) {
|
||||
context.report({node: node.right, message})
|
||||
}
|
||||
}
|
||||
},
|
||||
AssignmentExpression: function(node) {
|
||||
if (node.right.type === 'Literal' && isEnglish(node.right.value)) {
|
||||
context.report({node: node.right, message})
|
||||
} else if (node.right.type === 'TemplateLiteral') {
|
||||
if (node.right.quasis.some(el => isEnglish(el.value.raw))) {
|
||||
context.report({node: node.right, message})
|
||||
}
|
||||
}
|
||||
},
|
||||
CallExpression: function(node) {
|
||||
if (isConsole(node) || isInvariant(node)) return
|
||||
if (isSuite(node) || isTest(node) || isAssert(node)) return
|
||||
|
||||
for (const arg of node.arguments) {
|
||||
if (arg.type === 'Literal' && isEnglish(arg.value)) {
|
||||
context.report({node: arg, message})
|
||||
} else if (arg.type === 'TemplateLiteral') {
|
||||
if (arg.quasis.some(el => isEnglish(el.value.raw))) {
|
||||
context.report({node: arg, message})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
ReturnStatement: function(node) {
|
||||
if (!node.argument) return
|
||||
|
||||
if (node.argument.type === 'Literal' && isEnglish(node.argument.value)) {
|
||||
context.report({node: node.argument, message})
|
||||
} else if (node.argument.type === 'TemplateLiteral') {
|
||||
if (node.argument.quasis.some(el => isEnglish(el.value.raw))) {
|
||||
context.report({node: node.argument, message})
|
||||
}
|
||||
}
|
||||
},
|
||||
VariableDeclarator: function(node) {
|
||||
if (!node.init) return
|
||||
|
||||
if (node.init.type === 'Literal' && isEnglish(node.init.value)) {
|
||||
context.report({node: node.init, message})
|
||||
} else if (node.init.type === 'TemplateLiteral') {
|
||||
if (node.init.quasis.some(el => isEnglish(el.value.raw))) {
|
||||
context.report({node: node.init, message})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.schema = []
|
||||
103
node_modules/eslint-plugin-i18n-text/tests/no-en.js
generated
vendored
Normal file
103
node_modules/eslint-plugin-i18n-text/tests/no-en.js
generated
vendored
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
'use strict'
|
||||
|
||||
const rule = require('../rules/no-en')
|
||||
const RuleTester = require('eslint').RuleTester
|
||||
|
||||
const error = 'English text in string literals is not allowed'
|
||||
|
||||
const ruleTester = new RuleTester({parserOptions: {ecmaVersion: 6}})
|
||||
ruleTester.run('no-en', rule, {
|
||||
valid: [
|
||||
'invariant(1 == 1, "Assertion message")',
|
||||
'invariant(1 == 1, `Assertion message`)',
|
||||
'console.debug("Debugging message")',
|
||||
'console.debug(`Debugging message`)',
|
||||
'console.log("Informational message")',
|
||||
'console.warn("Warning message")',
|
||||
'console.error("Error message")',
|
||||
'throw new Error("Error message")',
|
||||
'throw new Error(`Error message`)',
|
||||
'var e = new Error("Error message")',
|
||||
'var e = new Error(`Error message`)',
|
||||
'var x = {"Object key": 42}',
|
||||
'var x = {test: "Object value"}',
|
||||
'x = 42',
|
||||
'x = "42"',
|
||||
'x = `42`',
|
||||
'var x',
|
||||
'var x = 42',
|
||||
'var x = "42"',
|
||||
'function x() { return }',
|
||||
'function x() { return 42 }',
|
||||
'function x() { return "42" }',
|
||||
'document.addEventListener("click", function(){})',
|
||||
'document.addEventListener(`click`, function(){})',
|
||||
'suite("Test suite", function(){})',
|
||||
'test("Test something", function(){})',
|
||||
'assert.equal(1, 2, "Should be false")',
|
||||
'assert(false, "Should be true")',
|
||||
'assert(false, `Should be true`)'
|
||||
],
|
||||
invalid: [
|
||||
{
|
||||
code: 'el.textContent = "Some message text"',
|
||||
errors: [{message: error, type: 'Literal'}]
|
||||
},
|
||||
{
|
||||
code: 'var message = "Some message text"',
|
||||
errors: [{message: error, type: 'Literal'}]
|
||||
},
|
||||
{
|
||||
code: 'message = "Some message text"',
|
||||
errors: [{message: error, type: 'Literal'}]
|
||||
},
|
||||
{
|
||||
code: 'function x() { return "Some message text" }',
|
||||
errors: [{message: error, type: 'Literal'}]
|
||||
},
|
||||
{
|
||||
code: 'displayMessage("Some message text")',
|
||||
errors: [{message: error, type: 'Literal'}]
|
||||
},
|
||||
{
|
||||
code: 'list.push("Some message text")',
|
||||
errors: [{message: error, type: 'Literal'}]
|
||||
},
|
||||
{
|
||||
code: 'el.textContent = `Some ${x} message text`',
|
||||
errors: [{message: error, type: 'TemplateLiteral'}]
|
||||
},
|
||||
{
|
||||
code: 'el.textContent = `Some message text`',
|
||||
errors: [{message: error, type: 'TemplateLiteral'}]
|
||||
},
|
||||
{
|
||||
code: 'var message = `Some message text`',
|
||||
errors: [{message: error, type: 'TemplateLiteral'}]
|
||||
},
|
||||
{
|
||||
code: 'message = `Some message text`',
|
||||
errors: [{message: error, type: 'TemplateLiteral'}]
|
||||
},
|
||||
{
|
||||
code: 'function x() { return `Some message text` }',
|
||||
errors: [{message: error, type: 'TemplateLiteral'}]
|
||||
},
|
||||
{
|
||||
code: 'displayMessage(`Some message text`)',
|
||||
errors: [{message: error, type: 'TemplateLiteral'}]
|
||||
},
|
||||
{
|
||||
code: 'list.push(`Some message text`)',
|
||||
errors: [{message: error, type: 'TemplateLiteral'}]
|
||||
},
|
||||
{
|
||||
code: "someValue || 'Something went wrong'",
|
||||
errors: [{message: error, type: 'Literal'}]
|
||||
},
|
||||
{
|
||||
code: 'someValue || `Something went ${adjective} wrong`',
|
||||
errors: [{message: error, type: 'TemplateLiteral'}]
|
||||
}
|
||||
]
|
||||
})
|
||||
25
node_modules/eslint-plugin-no-only-tests/.github/workflows/nodejs.yml
generated
vendored
Normal file
25
node_modules/eslint-plugin-no-only-tests/.github/workflows/nodejs.yml
generated
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
name: Tests
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [10.x, 12.x, 14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: borales/actions-yarn@v2.0.0
|
||||
with:
|
||||
cmd: install
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Tests
|
||||
run: yarn run test
|
||||
env:
|
||||
CI: true
|
||||
54
node_modules/eslint-plugin-no-only-tests/.github/workflows/npmpublish.yml
generated
vendored
Normal file
54
node_modules/eslint-plugin-no-only-tests/.github/workflows/npmpublish.yml
generated
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
name: Release
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 12
|
||||
- uses: borales/actions-yarn@v2.0.0
|
||||
with:
|
||||
cmd: install
|
||||
- run: npm test
|
||||
|
||||
publish-npm:
|
||||
name: Publish NPM
|
||||
needs: test
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 12
|
||||
registry-url: https://registry.npmjs.org/
|
||||
- uses: borales/actions-yarn@v2.0.0
|
||||
with:
|
||||
cmd: install
|
||||
- run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
||||
|
||||
publish-gpr:
|
||||
name: Publish GPR
|
||||
needs: test
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 12
|
||||
registry-url: https://npm.pkg.github.com/
|
||||
scope: '@levibuzolic'
|
||||
- uses: borales/actions-yarn@v2.0.0
|
||||
with:
|
||||
cmd: install
|
||||
- run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
57
node_modules/eslint-plugin-no-only-tests/CHANGELOG.md
generated
vendored
Normal file
57
node_modules/eslint-plugin-no-only-tests/CHANGELOG.md
generated
vendored
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# v2.6.0
|
||||
|
||||
* Disable auto fixing by default, allow it to be optionally enabled.
|
||||
|
||||
# v2.5.0
|
||||
|
||||
* Add support for auto fixing violations - #19 @tgreen7
|
||||
|
||||
# v2.4.0
|
||||
|
||||
* Add support for defining 2 levels deep in blocks (ie. `ava.default`)
|
||||
|
||||
# v2.3.1
|
||||
|
||||
* Bump js-yaml from 3.13.0 to 3.13.1 due to security vulnerability - #11
|
||||
|
||||
# v2.3.0
|
||||
|
||||
* Allow test block names to be specified in options - #10
|
||||
|
||||
# v2.2.0
|
||||
|
||||
* Added rule for catching `.only` blocks for `serial` - #9 @IevgenRagulin
|
||||
|
||||
# v2.1.0
|
||||
|
||||
* Added rule for catching `.only` blocks for `fixture` - #8 @roughy
|
||||
|
||||
# v2.0.1
|
||||
|
||||
* Fixed major bug where rule would cause errors for objects with key `only` - #7 @bendemboski
|
||||
|
||||
# v2.0.0
|
||||
|
||||
* Updated rule format to ESLint 3
|
||||
* Updated ESLInt dependency to `>=3.0.0`
|
||||
* Updated node engine to `>=4.0.0`
|
||||
* Get CircleCI up and running
|
||||
|
||||
# v1.2.0
|
||||
|
||||
* Added rules for catching `.only` blocks for `test`, `context` and `tape`
|
||||
|
||||
# v1.1.0
|
||||
|
||||
* Updated rule to use `Identifier` rather than `CallExpression`
|
||||
* Changed reporter to give a more generic message (removed reference to mocha)
|
||||
* Added additional test coverage
|
||||
|
||||
# v1.0.1
|
||||
|
||||
* Added additional test coverage
|
||||
* Removed unnecessary dependencies in `package.json`
|
||||
|
||||
# v1.0.0
|
||||
|
||||
* Initial version
|
||||
21
node_modules/eslint-plugin-no-only-tests/LICENSE
generated
vendored
Normal file
21
node_modules/eslint-plugin-no-only-tests/LICENSE
generated
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Levi Buzolic
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
75
node_modules/eslint-plugin-no-only-tests/README.md
generated
vendored
Normal file
75
node_modules/eslint-plugin-no-only-tests/README.md
generated
vendored
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
# eslint-plugin-no-only-tests
|
||||
|
||||
[](https://www.npmjs.com/package/eslint-plugin-no-only-tests) [](https://npmcharts.com/compare/eslint-plugin-no-only-tests?minimal=true) [](https://github.com/levibuzolic/eslint-plugin-no-only-tests/actions?query=workflow%3ATests)
|
||||
|
||||
ESLint rule for `.only` tests in [mocha](https://mochajs.org/) and other JS testing libraries.
|
||||
|
||||
Currently matches the following test blocks by default: `describe`, `it`, `context`, `tape`, `test`, `fixture`, `serial`.
|
||||
|
||||
Designed to prevent you from committing `.only` tests to CI, disabling tests for your whole team.
|
||||
|
||||
As of v2.3 you can now override the test blocks and focus functions.
|
||||
|
||||
## Installation
|
||||
|
||||
First you'll need to install [ESLint](http://eslint.org) then the plugin:
|
||||
|
||||
```bash
|
||||
npm install --save-dev eslint eslint-plugin-no-only-tests
|
||||
# or
|
||||
yarn add --dev eslint eslint-plugin-no-only-tests
|
||||
```
|
||||
|
||||
> **Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-no-only-tests` globally.
|
||||
|
||||
## Usage
|
||||
|
||||
Add `no-only-tests` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:
|
||||
|
||||
```json
|
||||
{
|
||||
"plugins": [
|
||||
"no-only-tests"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Then configure the rules you want to use under the rules section.
|
||||
|
||||
```json
|
||||
{
|
||||
"rules": {
|
||||
"no-only-tests/no-only-tests": "error"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
If you use a testing framework that uses an unsupported block name, or a different way of focusing test (something other than `.only`) you can specify an array of blocks and focus methods to match in the options.
|
||||
|
||||
```json
|
||||
{
|
||||
"rules": {
|
||||
"no-only-tests/no-only-tests": ["error", {"block": ["test", "it", "assert"], "focus": ["only", "focus"]}]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The above example will catch any uses of `test.only`, `test.focus`, `it.only`, `it.focus`, `assert.only` and `assert.focus`.
|
||||
|
||||
This rule supports autofixing only when the `fix` option is set to `true` to avoid changing runtime code unintentionally when configured in an editor.
|
||||
|
||||
```json
|
||||
{
|
||||
"rules": {
|
||||
"no-only-tests/no-only-tests": ["error", {"fix": true}]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
Option | Type | Description
|
||||
---|---|---
|
||||
`block` | `Array<string>` | Specify the block names that your testing framework uses. Defaults to `["describe", "it", "context", "test", "tape", "fixture", "serial"]`
|
||||
`focus` | `Array<string>` | Specify the focus scope that your testing framework uses. Defaults to `["only"]`
|
||||
`fix` | `boolean` | Enable this rule to auto-fix violations, useful for a pre-commit hook, not recommended for users with auto-fixing enabled in their editor. Defaults to `false`
|
||||
7
node_modules/eslint-plugin-no-only-tests/index.js
generated
vendored
Normal file
7
node_modules/eslint-plugin-no-only-tests/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
rules: {
|
||||
'no-only-tests': require('./rules/no-only-tests')
|
||||
}
|
||||
};
|
||||
36
node_modules/eslint-plugin-no-only-tests/package.json
generated
vendored
Normal file
36
node_modules/eslint-plugin-no-only-tests/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"name": "eslint-plugin-no-only-tests",
|
||||
"version": "2.6.0",
|
||||
"description": "ESLint rule for .only blocks in mocha tests",
|
||||
"keywords": [
|
||||
"eslint",
|
||||
"eslintplugin",
|
||||
"eslint-plugin",
|
||||
"mocha",
|
||||
"rule",
|
||||
"only",
|
||||
"describe",
|
||||
"it",
|
||||
"fixture"
|
||||
],
|
||||
"author": "Levi Buzolic",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "node tests.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": ">=3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
},
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:levibuzolic/eslint-plugin-no-only-tests.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/levibuzolic/no-only-tests/issues"
|
||||
},
|
||||
"homepage": "https://github.com/levibuzolic/no-only-tests#readme"
|
||||
}
|
||||
88
node_modules/eslint-plugin-no-only-tests/rules/no-only-tests.js
generated
vendored
Normal file
88
node_modules/eslint-plugin-no-only-tests/rules/no-only-tests.js
generated
vendored
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
/**
|
||||
* @fileoverview Rule to flag use of .only in tests, preventing focused tests being committed accidentally
|
||||
* @author Levi Buzolic
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Rule Definition
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const BLOCK_DEFAULTS = ['describe', 'it', 'context', 'test', 'tape', 'fixture', 'serial'];
|
||||
const FOCUS_DEFAULTS = ['only'];
|
||||
|
||||
module.exports = {
|
||||
meta: {
|
||||
docs: {
|
||||
description: 'disallow .only blocks in tests',
|
||||
category: 'Possible Errors',
|
||||
recommended: true,
|
||||
url: 'https://github.com/levibuzolic/eslint-plugin-no-only-tests',
|
||||
},
|
||||
fixable: true,
|
||||
schema: [
|
||||
{
|
||||
type: 'object',
|
||||
properties: {
|
||||
block: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'string',
|
||||
},
|
||||
uniqueItems: true,
|
||||
},
|
||||
focus: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'string',
|
||||
},
|
||||
uniqueItems: true,
|
||||
},
|
||||
fix: {
|
||||
type: 'boolean',
|
||||
},
|
||||
},
|
||||
additionalProperties: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
create(context) {
|
||||
var block = (context.options[0] || {}).block || BLOCK_DEFAULTS;
|
||||
var focus = (context.options[0] || {}).focus || FOCUS_DEFAULTS;
|
||||
var fix = !!(context.options[0] || {}).fix;
|
||||
|
||||
return {
|
||||
Identifier(node) {
|
||||
var parentObject = node.parent && node.parent.object;
|
||||
if (parentObject == null) return;
|
||||
if (focus.indexOf(node.name) === -1) return;
|
||||
|
||||
var callPath = getCallPath(node.parent).join('.');
|
||||
|
||||
// comparison guarantees that matching is done with the beginning of call path
|
||||
if (block.find(b => callPath.split(b)[0] === '')) {
|
||||
context.report({
|
||||
node,
|
||||
message: callPath + ' not permitted',
|
||||
fix: fix ? fixer => fixer.removeRange([node.range[0] - 1, node.range[1]]) : undefined,
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
function getCallPath(node, path = []) {
|
||||
if (node) {
|
||||
const nodeName = node.name || (node.property && node.property.name);
|
||||
if (node.object) {
|
||||
return getCallPath(node.object, [nodeName, ...path]);
|
||||
}
|
||||
if (node.callee) {
|
||||
return getCallPath(node.callee, path);
|
||||
}
|
||||
return [nodeName, ...path];
|
||||
}
|
||||
return path;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue