mirror of https://github.com/zulip/zulip.git
414 lines
15 KiB
JSON
414 lines
15 KiB
JSON
{
|
||
"env": {
|
||
"node": true,
|
||
"es6": true
|
||
},
|
||
"extends": [
|
||
"eslint:recommended"
|
||
],
|
||
"parserOptions": {
|
||
"ecmaVersion": 2019,
|
||
"warnOnUnsupportedTypeScriptVersion": false,
|
||
"sourceType": "module"
|
||
},
|
||
"plugins": [
|
||
"eslint-plugin-empty-returns"
|
||
],
|
||
"rules": {
|
||
"array-callback-return": "error",
|
||
"array-bracket-spacing": "error",
|
||
"arrow-spacing": [ "error", { "before": true, "after": true } ],
|
||
"block-scoped-var": "error",
|
||
"brace-style": [ "error", "1tbs", { "allowSingleLine": true } ],
|
||
"comma-dangle": [ "error",
|
||
{
|
||
"arrays": "always-multiline",
|
||
"objects": "always-multiline",
|
||
"imports": "always-multiline",
|
||
"exports": "always-multiline",
|
||
"functions": "never"
|
||
}
|
||
],
|
||
"comma-spacing": [ "error",
|
||
{
|
||
"before": false,
|
||
"after": true
|
||
}
|
||
],
|
||
"curly": "error",
|
||
"dot-notation": "error",
|
||
"empty-returns/main": "error",
|
||
"eol-last": "error",
|
||
"eqeqeq": "error",
|
||
"guard-for-in": "error",
|
||
"indent": ["error", 4, {
|
||
"ArrayExpression": "first",
|
||
"ObjectExpression": "first",
|
||
"CallExpression": {"arguments": "first"},
|
||
"FunctionExpression": {"parameters": "first"},
|
||
"FunctionDeclaration": {"parameters": "first"}
|
||
}],
|
||
"key-spacing": "error",
|
||
"keyword-spacing": "error",
|
||
"max-len": [ "error", 100, 2,
|
||
{
|
||
"ignoreUrls": true,
|
||
"ignoreRegExpLiterals": true,
|
||
"ignoreStrings": true,
|
||
"ignoreTemplateLiterals": true
|
||
}
|
||
],
|
||
"new-cap": [ "error",
|
||
{
|
||
"capIsNew": false
|
||
}
|
||
],
|
||
"new-parens": "error",
|
||
"no-alert": "error",
|
||
"no-array-constructor": "error",
|
||
"no-bitwise": "error",
|
||
"no-caller": "error",
|
||
"no-catch-shadow": "error",
|
||
"no-constant-condition": ["error", {"checkLoops": false}],
|
||
"no-div-regex": "error",
|
||
"no-duplicate-imports": "error",
|
||
"no-else-return": "error",
|
||
"no-eq-null": "error",
|
||
"no-eval": "error",
|
||
"no-extra-parens": "error",
|
||
"no-floating-decimal": "error",
|
||
"no-implied-eval": "error",
|
||
"no-inner-declarations": "off",
|
||
"no-iterator": "error",
|
||
"no-label-var": "error",
|
||
"no-labels": "error",
|
||
"no-loop-func": "error",
|
||
"no-multi-str": "error",
|
||
"no-native-reassign": "error",
|
||
"no-new-func": "error",
|
||
"no-new-object": "error",
|
||
"no-new-wrappers": "error",
|
||
"no-octal-escape": "error",
|
||
"no-plusplus": "error",
|
||
"no-proto": "error",
|
||
"no-return-assign": "error",
|
||
"no-script-url": "error",
|
||
"no-self-compare": "error",
|
||
"no-sync": "error",
|
||
"no-trailing-spaces": "error",
|
||
"no-undef-init": "error",
|
||
"no-unneeded-ternary": [ "error", { "defaultAssignment": false } ],
|
||
"no-unused-expressions": "error",
|
||
"no-unused-vars": [ "error",
|
||
{
|
||
"vars": "local",
|
||
"varsIgnorePattern": "print_elapsed_time|check_duplicate_ids"
|
||
}
|
||
],
|
||
"no-use-before-define": "error",
|
||
"no-useless-constructor": "error",
|
||
// The Zulip codebase complies partially with the "no-useless-escape"
|
||
// rule; only regex expressions haven't been updated yet.
|
||
// Updated regex expressions are currently being tested in casper
|
||
// files and will decide about a potential future enforcement of this rule.
|
||
"no-useless-escape": "off",
|
||
"no-var": "error",
|
||
"space-unary-ops": "error",
|
||
"no-whitespace-before-property": "error",
|
||
"one-var": [ "error", "never" ],
|
||
"prefer-const": [ "error",
|
||
{
|
||
"ignoreReadBeforeAssign": true
|
||
}
|
||
],
|
||
"quote-props": [ "error", "as-needed" ],
|
||
"radix": "error",
|
||
"semi": "error",
|
||
"semi-spacing": "error",
|
||
"sort-imports": "error",
|
||
"space-before-blocks": "error",
|
||
"space-before-function-paren": [ "error",
|
||
{
|
||
"anonymous": "always",
|
||
"named": "never",
|
||
"asyncArrow": "always"
|
||
}
|
||
],
|
||
"space-in-parens": "error",
|
||
"space-infix-ops": "error",
|
||
"spaced-comment": "off",
|
||
"strict": "off",
|
||
"template-curly-spacing": "error",
|
||
"valid-typeof": [ "error", { "requireStringLiterals": true } ],
|
||
"wrap-iife": "error",
|
||
"yoda": "error"
|
||
},
|
||
"overrides": [
|
||
{
|
||
"files": [
|
||
"frontend_tests/**/*.{js,ts}",
|
||
"static/js/**/*.{js,ts}"
|
||
],
|
||
"globals": {
|
||
"$": false,
|
||
"ClipboardJS": false,
|
||
"FetchStatus": false,
|
||
"Filter": false,
|
||
"Handlebars": false,
|
||
"LightboxCanvas": false,
|
||
"MessageListData": false,
|
||
"MessageListView": false,
|
||
"Plotly": false,
|
||
"Sortable": false,
|
||
"WinChan": false,
|
||
"XDate": false,
|
||
"_": false,
|
||
"activity": false,
|
||
"admin": false,
|
||
"alert_words": false,
|
||
"alert_words_ui": false,
|
||
"attachments_ui": false,
|
||
"avatar": false,
|
||
"billing": false,
|
||
"blueslip": false,
|
||
"bot_data": false,
|
||
"bridge": false,
|
||
"buddy_data": false,
|
||
"buddy_list": false,
|
||
"channel": false,
|
||
"click_handlers": false,
|
||
"color_data": false,
|
||
"colorspace": false,
|
||
"common": false,
|
||
"components": false,
|
||
"compose": false,
|
||
"compose_actions": false,
|
||
"compose_fade": false,
|
||
"compose_pm_pill": false,
|
||
"compose_state": false,
|
||
"compose_ui": false,
|
||
"composebox_typeahead": false,
|
||
"condense": false,
|
||
"confirm_dialog": false,
|
||
"copy_and_paste": false,
|
||
"csrf_token": false,
|
||
"current_msg_list": true,
|
||
"drafts": false,
|
||
"dropdown_list_widget": false,
|
||
"echo": false,
|
||
"emoji": false,
|
||
"emoji_picker": false,
|
||
"favicon": false,
|
||
"feature_flags": false,
|
||
"feedback_widget": false,
|
||
"fenced_code": false,
|
||
"flatpickr": false,
|
||
"floating_recipient_bar": false,
|
||
"gear_menu": false,
|
||
"hash_util": false,
|
||
"hashchange": false,
|
||
"helpers": false,
|
||
"history": false,
|
||
"home_msg_list": false,
|
||
"hotspots": false,
|
||
"i18n": false,
|
||
"info_overlay": false,
|
||
"input_pill": false,
|
||
"invite": false,
|
||
"jQuery": false,
|
||
"katex": false,
|
||
"keydown_util": false,
|
||
"lightbox": false,
|
||
"list_cursor": false,
|
||
"list_render": false,
|
||
"list_util": false,
|
||
"loading": false,
|
||
"localStorage": false,
|
||
"local_message": false,
|
||
"localstorage": false,
|
||
"location": false,
|
||
"markdown": false,
|
||
"marked": false,
|
||
"md5": false,
|
||
"message_edit": false,
|
||
"message_events": false,
|
||
"message_fetch": false,
|
||
"message_flags": false,
|
||
"message_list": false,
|
||
"message_live_update": false,
|
||
"message_scroll": false,
|
||
"message_store": false,
|
||
"message_util": false,
|
||
"message_viewport": false,
|
||
"moment": false,
|
||
"muting": false,
|
||
"muting_ui": false,
|
||
"narrow": false,
|
||
"narrow_state": false,
|
||
"navigate": false,
|
||
"night_mode": false,
|
||
"notifications": false,
|
||
"overlays": false,
|
||
"padded_widget": false,
|
||
"page_params": false,
|
||
"panels": false,
|
||
"people": false,
|
||
"pm_conversations": false,
|
||
"pm_list": false,
|
||
"pm_list_dom": false,
|
||
"pointer": false,
|
||
"popovers": false,
|
||
"presence": false,
|
||
"reactions": false,
|
||
"realm_icon": false,
|
||
"realm_logo": false,
|
||
"realm_night_logo": false,
|
||
"recent_senders": false,
|
||
"recent_topics": false,
|
||
"reload": false,
|
||
"reload_state": false,
|
||
"reminder": false,
|
||
"resize": false,
|
||
"rows": false,
|
||
"rtl": false,
|
||
"run_test": false,
|
||
"schema": false,
|
||
"scroll_bar": false,
|
||
"scroll_util": false,
|
||
"search": false,
|
||
"search_pill": false,
|
||
"search_pill_widget": false,
|
||
"search_suggestion": false,
|
||
"search_util": false,
|
||
"sent_messages": false,
|
||
"server_events": false,
|
||
"server_events_dispatch": false,
|
||
"settings": false,
|
||
"settings_account": false,
|
||
"settings_bots": false,
|
||
"settings_display": false,
|
||
"settings_emoji": false,
|
||
"settings_exports": false,
|
||
"settings_linkifiers": false,
|
||
"settings_invites": false,
|
||
"settings_muting": false,
|
||
"settings_notifications": false,
|
||
"settings_org": false,
|
||
"settings_panel_menu": false,
|
||
"settings_profile_fields": false,
|
||
"settings_sections": false,
|
||
"settings_streams": false,
|
||
"settings_toggle": false,
|
||
"settings_ui": false,
|
||
"settings_user_groups": false,
|
||
"settings_users": false,
|
||
"starred_messages": false,
|
||
"stream_color": false,
|
||
"stream_create": false,
|
||
"stream_data": false,
|
||
"stream_edit": false,
|
||
"stream_events": false,
|
||
"stream_topic_history": false,
|
||
"stream_list": false,
|
||
"stream_muting": false,
|
||
"stream_popover": false,
|
||
"stream_sort": false,
|
||
"stream_ui_updates": false,
|
||
"StripeCheckout": false,
|
||
"submessage": false,
|
||
"subs": false,
|
||
"tab_bar": false,
|
||
"templates": false,
|
||
"tictactoe_widget": false,
|
||
"timerender": false,
|
||
"todo_widget": false,
|
||
"top_left_corner": false,
|
||
"topic_generator": false,
|
||
"topic_list": false,
|
||
"topic_zoom": false,
|
||
"transmit": false,
|
||
"tutorial": false,
|
||
"typeahead_helper": false,
|
||
"typing": false,
|
||
"typing_data": false,
|
||
"typing_events": false,
|
||
"ui": false,
|
||
"ui_init": false,
|
||
"ui_report": false,
|
||
"ui_util": false,
|
||
"unread": false,
|
||
"unread_ops": false,
|
||
"unread_ui": false,
|
||
"upgrade": false,
|
||
"upload": false,
|
||
"upload_widget": false,
|
||
"user_events": false,
|
||
"user_groups": false,
|
||
"user_pill": false,
|
||
"user_search": false,
|
||
"user_status": false,
|
||
"user_status_ui": false,
|
||
"poll_widget": false,
|
||
"vdom": false,
|
||
"widgetize": false,
|
||
"zcommand": false,
|
||
"zform": false,
|
||
"zxcvbn": false
|
||
}
|
||
},
|
||
{
|
||
"files": [
|
||
"frontend_tests/casper_tests/*.js",
|
||
"frontend_tests/casper_lib/*.js"
|
||
],
|
||
"rules": {
|
||
"no-var": "off" // PhantomJS doesn’t support let, const
|
||
}
|
||
},
|
||
{
|
||
"files": ["**/*.ts"],
|
||
"extends": [
|
||
"plugin:@typescript-eslint/recommended"
|
||
],
|
||
"parserOptions": {
|
||
"project": "tsconfig.json"
|
||
},
|
||
"rules": {
|
||
// Disable base rule to avoid conflict
|
||
"empty-returns/main": "off",
|
||
"indent": "off",
|
||
"no-extra-parens": "off",
|
||
"semi": "off",
|
||
"no-unused-vars": "off",
|
||
"no-useless-constructor": "off",
|
||
|
||
"@typescript-eslint/array-type": "error",
|
||
"@typescript-eslint/await-thenable": "error",
|
||
"@typescript-eslint/consistent-type-assertions": "error",
|
||
"@typescript-eslint/explicit-function-return-type": ["error", { "allowExpressions": true }],
|
||
"@typescript-eslint/func-call-spacing": "error",
|
||
"@typescript-eslint/indent": "error",
|
||
"@typescript-eslint/member-delimiter-style": "error",
|
||
"@typescript-eslint/member-ordering": "error",
|
||
"@typescript-eslint/no-explicit-any": "off",
|
||
"@typescript-eslint/no-extra-parens": ["error", "all"],
|
||
"@typescript-eslint/no-extraneous-class": "error",
|
||
"@typescript-eslint/no-non-null-assertion": "off",
|
||
"@typescript-eslint/no-parameter-properties": "error",
|
||
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
||
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
||
"@typescript-eslint/no-unused-vars": ["error", { "varsIgnorePattern": "^_" } ],
|
||
"@typescript-eslint/no-use-before-define": "error",
|
||
"@typescript-eslint/no-useless-constructor": "error",
|
||
"@typescript-eslint/prefer-includes": "error",
|
||
"@typescript-eslint/prefer-regexp-exec": "error",
|
||
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
||
"@typescript-eslint/promise-function-async": "error",
|
||
"@typescript-eslint/semi": "error",
|
||
"@typescript-eslint/type-annotation-spacing": "error",
|
||
"@typescript-eslint/unified-signatures": "error"
|
||
}
|
||
}
|
||
]
|
||
}
|