mirror of
https://github.com/google/blockly.git
synced 2025-12-15 22:00:07 +01:00
* fix: input exports * chore: fix build * chore: attempt to fix build * chore: attempt to fix build * chore: create new align enum to replace old one * chore: format * fix: Tweak renamings entries It appears that the goal is to map: Blockly.Input.Align -> Blockly.inputs.Align Blockly.Align -> Blockly.inputs.Align Blockly.ALIGN_* -> Blockly.inputs.Align.* I believe this commit achieves that in a more minimal (and correct) way—but if I have misunderstood the intention then this will not be a useful correction. --------- Co-authored-by: Christopher Allen <cpcallen+git@google.com>
188 lines
5.5 KiB
JavaScript
188 lines
5.5 KiB
JavaScript
const rules = {
|
|
'no-unused-vars': [
|
|
'error',
|
|
{
|
|
'args': 'after-used',
|
|
// Ignore vars starting with an underscore.
|
|
'varsIgnorePattern': '^_',
|
|
// Ignore arguments starting with an underscore.
|
|
'argsIgnorePattern': '^_',
|
|
},
|
|
],
|
|
// Blockly uses for exporting symbols. no-self-assign added in eslint 5.
|
|
'no-self-assign': ['off'],
|
|
// Blockly uses single quotes except for JSON blobs, which must use double
|
|
// quotes.
|
|
'quotes': ['off'],
|
|
// Blockly uses 'use strict' in files.
|
|
'strict': ['off'],
|
|
// Closure style allows redeclarations.
|
|
'no-redeclare': ['off'],
|
|
'valid-jsdoc': ['error'],
|
|
'no-console': ['off'],
|
|
'spaced-comment': [
|
|
'error',
|
|
'always',
|
|
{
|
|
'block': {
|
|
'balanced': true,
|
|
},
|
|
'exceptions': ['*'],
|
|
},
|
|
],
|
|
// Blockly uses prefixes for optional arguments and test-only functions.
|
|
'camelcase': [
|
|
'error',
|
|
{
|
|
'properties': 'never',
|
|
'allow': ['^opt_', '^_opt_', '^testOnly_'],
|
|
},
|
|
],
|
|
// Blockly uses capital letters for some non-constructor namespaces.
|
|
// Keep them for legacy reasons.
|
|
'new-cap': ['off'],
|
|
// Blockly uses objects as maps, but uses Object.create(null) to
|
|
// instantiate them.
|
|
'guard-for-in': ['off'],
|
|
'prefer-spread': ['off'],
|
|
};
|
|
|
|
/**
|
|
* Build shared settings for TS linting and add in the config differences.
|
|
* @return {Object} The override TS linting for given files and a given
|
|
* tsconfig.
|
|
*/
|
|
function buildTSOverride({files, tsconfig}) {
|
|
return {
|
|
'files': files,
|
|
'plugins': ['@typescript-eslint/eslint-plugin', 'jsdoc'],
|
|
'settings': {
|
|
'jsdoc': {
|
|
'mode': 'typescript',
|
|
},
|
|
},
|
|
'parser': '@typescript-eslint/parser',
|
|
'parserOptions': {
|
|
'project': tsconfig,
|
|
'tsconfigRootDir': '.',
|
|
'ecmaVersion': 2020,
|
|
'sourceType': 'module',
|
|
},
|
|
'extends': [
|
|
'plugin:@typescript-eslint/recommended',
|
|
'plugin:jsdoc/recommended',
|
|
'prettier', // Extend again so that these rules are applied last
|
|
],
|
|
'rules': {
|
|
// TS rules
|
|
// Blockly uses namespaces to do declaration merging in some cases.
|
|
'@typescript-eslint/no-namespace': ['off'],
|
|
// Use the updated TypeScript-specific rule.
|
|
'no-invalid-this': ['off'],
|
|
'@typescript-eslint/no-invalid-this': ['error'],
|
|
// Needs decision. 601 problems.
|
|
'@typescript-eslint/no-non-null-assertion': ['off'],
|
|
// Use TS-specific rule.
|
|
'no-unused-vars': ['off'],
|
|
'@typescript-eslint/no-unused-vars': [
|
|
'error',
|
|
{
|
|
'argsIgnorePattern': '^_',
|
|
'varsIgnorePattern': '^_',
|
|
},
|
|
],
|
|
// Temporarily disable. 23 problems.
|
|
'@typescript-eslint/no-explicit-any': ['off'],
|
|
// Temporarily disable. 128 problems.
|
|
'require-jsdoc': ['off'],
|
|
// Temporarily disable. 55 problems.
|
|
'@typescript-eslint/ban-types': ['off'],
|
|
// Temporarily disable. 33 problems.
|
|
'@typescript-eslint/no-empty-function': ['off'],
|
|
// Temporarily disable. 3 problems.
|
|
'@typescript-eslint/no-empty-interface': ['off'],
|
|
|
|
// TsDoc rules (using JsDoc plugin)
|
|
// Disable built-in jsdoc verifier.
|
|
'valid-jsdoc': ['off'],
|
|
// Don't require types in params and returns docs.
|
|
'jsdoc/require-param-type': ['off'],
|
|
'jsdoc/require-returns-type': ['off'],
|
|
// params and returns docs are optional.
|
|
'jsdoc/require-param-description': ['off'],
|
|
'jsdoc/require-returns': ['off'],
|
|
// Disable for now (breaks on `this` which is not really a param).
|
|
'jsdoc/require-param': ['off'],
|
|
// Don't auto-add missing jsdoc. Only required on exported items.
|
|
'jsdoc/require-jsdoc': [
|
|
'warn',
|
|
{
|
|
'enableFixer': false,
|
|
'publicOnly': true,
|
|
},
|
|
],
|
|
'jsdoc/check-tag-names': [
|
|
'error',
|
|
{
|
|
'definedTags': [
|
|
'sealed',
|
|
'typeParam',
|
|
'remarks',
|
|
'define',
|
|
'nocollapse',
|
|
'suppress',
|
|
],
|
|
},
|
|
],
|
|
// Re-enable after Closure is removed. There shouldn't even be
|
|
// types in the TsDoc.
|
|
// These are "types" because of Closure's @suppress {warningName}
|
|
'jsdoc/no-undefined-types': ['off'],
|
|
'jsdoc/valid-types': ['off'],
|
|
// Disabled due to not handling `this`. If re-enabled,
|
|
// checkDestructured option
|
|
// should be left as false.
|
|
'jsdoc/check-param-names': ['off', {'checkDestructured': false}],
|
|
// Allow any text in the license tag. Other checks are not relevant.
|
|
'jsdoc/check-values': ['off'],
|
|
// Ensure there is a blank line between the body and any @tags,
|
|
// as required by the tsdoc spec (see #6353).
|
|
'jsdoc/tag-lines': ['error', 'any', {'startLines': 1}],
|
|
},
|
|
};
|
|
}
|
|
|
|
// NOTE: When this output is put directly in `module.exports`, the formatter
|
|
// does not align with the linter.
|
|
const eslintJSON = {
|
|
'rules': rules,
|
|
'env': {
|
|
'es2020': true,
|
|
'browser': true,
|
|
},
|
|
'globals': {
|
|
'goog': true,
|
|
'exports': true,
|
|
},
|
|
'extends': ['eslint:recommended', 'google', 'prettier'],
|
|
// TypeScript-specific config. Uses above rules plus these.
|
|
'overrides': [
|
|
buildTSOverride({
|
|
files: ['./**/*.ts', './**/*.tsx'],
|
|
tsconfig: './tsconfig.json',
|
|
}),
|
|
buildTSOverride({
|
|
files: ['./tests/typescript/**/*.ts', './tests/typescript/**/*.tsx'],
|
|
tsconfig: './tests/typescript/tsconfig.json',
|
|
}),
|
|
{
|
|
'files': ['./.eslintrc.js'],
|
|
'env': {
|
|
'node': true,
|
|
},
|
|
},
|
|
],
|
|
};
|
|
|
|
module.exports = eslintJSON;
|