2016-11-04 23:15:18 +01:00
|
|
|
{
|
|
|
|
"env": {
|
|
|
|
"node": true
|
|
|
|
},
|
|
|
|
"globals": {
|
|
|
|
"$": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"_": false,
|
|
|
|
"jQuery": false,
|
|
|
|
"Spinner": false,
|
|
|
|
"Handlebars": false,
|
|
|
|
"XDate": false,
|
|
|
|
"zxcvbn": false,
|
|
|
|
"LazyLoad": false,
|
|
|
|
"Dropbox": false,
|
|
|
|
"SockJS": false,
|
|
|
|
"marked": false,
|
|
|
|
"i18n": false,
|
|
|
|
"bridge": false,
|
|
|
|
"page_params": false,
|
|
|
|
"status_classes": false,
|
|
|
|
"password_quality": false,
|
|
|
|
"csrf_token": false,
|
|
|
|
"typeahead_helper": false,
|
|
|
|
"popovers": false,
|
|
|
|
"server_events": false,
|
|
|
|
"ui": false,
|
|
|
|
"stream_color": false,
|
|
|
|
"people": false,
|
|
|
|
"navigate": false,
|
|
|
|
"settings": false,
|
|
|
|
"resize": false,
|
|
|
|
"loading": false,
|
|
|
|
"compose": false,
|
|
|
|
"compose_fade": false,
|
|
|
|
"subs": false,
|
|
|
|
"timerender": false,
|
|
|
|
"message_edit": false,
|
|
|
|
"reload": false,
|
|
|
|
"composebox_typeahead": false,
|
|
|
|
"search": false,
|
|
|
|
"topic_list": false,
|
|
|
|
"gear_menu": false,
|
|
|
|
"hashchange": false,
|
|
|
|
"message_list": false,
|
|
|
|
"Filter": false,
|
|
|
|
"pointer": false,
|
|
|
|
"util": false,
|
|
|
|
"MessageListView": false,
|
|
|
|
"blueslip": false,
|
|
|
|
"rows": false,
|
|
|
|
"WinChan": false,
|
|
|
|
"muting_ui": false,
|
|
|
|
"Socket": false,
|
|
|
|
"channel": false,
|
2016-12-04 03:02:03 +01:00
|
|
|
"components": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"viewport": false,
|
|
|
|
"avatar": false,
|
|
|
|
"feature_flags": false,
|
|
|
|
"search_suggestion": false,
|
|
|
|
"referral": false,
|
|
|
|
"notifications": false,
|
|
|
|
"message_flags": false,
|
|
|
|
"bot_data": false,
|
|
|
|
"stream_list": false,
|
|
|
|
"narrow": false,
|
|
|
|
"admin": false,
|
|
|
|
"stream_data": false,
|
|
|
|
"muting": false,
|
|
|
|
"Dict": false,
|
|
|
|
"unread": false,
|
|
|
|
"alert_words_ui": false,
|
|
|
|
"message_store": false,
|
|
|
|
"favicon": false,
|
|
|
|
"condense": false,
|
|
|
|
"floating_recipient_bar": false,
|
|
|
|
"tab_bar": false,
|
|
|
|
"emoji": false,
|
|
|
|
"activity": false,
|
|
|
|
"invite": false,
|
|
|
|
"colorspace": false,
|
|
|
|
"tutorial": false,
|
|
|
|
"templates": false,
|
|
|
|
"alert_words": false,
|
|
|
|
"fenced_code": false,
|
|
|
|
"echo": false,
|
|
|
|
"localstorage": false,
|
|
|
|
"current_msg_list": true,
|
|
|
|
"home_msg_list": false,
|
|
|
|
"pm_list": false,
|
|
|
|
"unread_ui": false
|
2016-11-04 23:15:18 +01:00
|
|
|
},
|
|
|
|
"rules": {
|
2016-12-05 19:02:19 +01:00
|
|
|
"no-restricted-syntax": 1,
|
|
|
|
"no-nested-ternary": 1,
|
|
|
|
"spaced-comment": 1,
|
|
|
|
"space-infix-ops": 1,
|
|
|
|
"newline-per-chained-call": 1,
|
|
|
|
"no-whitespace-before-property": 1,
|
|
|
|
"padded-blocks": 1,
|
|
|
|
"space-in-parens": 1,
|
|
|
|
"eol-last": ["error", "always"],
|
|
|
|
"no-unneeded-ternary": ["error", { "defaultAssignment": false }],
|
|
|
|
"no-case-declarations": "error",
|
|
|
|
"eqeqeq": ["error", "allow-null"],
|
|
|
|
"no-duplicate-imports": "error",
|
|
|
|
"no-undef": "error",
|
|
|
|
"dot-notation": ["error", { "allowKeywords": true }],
|
|
|
|
"no-iterator": "error",
|
|
|
|
"no-dupe-class-members": "error",
|
Eslint: Add additioanl rules, some for GCI.
This commit adds rules for GCI, turns on rules that do not error
on our codebase, and changes frontend_tests/.eslintrc.json's no-sync
rule to off (as per AirBnB's style guide).
Rules for GCI:
no-restricted-syntax, no-nested-ternary, spaced-comment,
space-infix-ops, newline-per-chained-call, padded-blocks,
no-whitespace-before-property, space-in-parens
Rules that do not error:
no-useless-constructor, no-dupe-class-members, no-duplicate-imports,
no-iterator, no-undef, dot-notation, no-case-declarations, no-unneeded-ternary,
eol-last,
Finally, eqeqeq is changed from 2 to ['error', 'allow-null'], going
from jslint defaults to airbnb's recommendation (there were no errors)
2016-12-05 07:49:37 +01:00
|
|
|
"no-useless-constructor": "error",
|
2016-12-04 16:23:15 +01:00
|
|
|
"prefer-const": ["error", {
|
2016-12-05 19:02:19 +01:00
|
|
|
"destructuring": "any",
|
2016-12-04 16:23:15 +01:00
|
|
|
"ignoreReadBeforeAssign": true
|
|
|
|
}],
|
2016-12-05 19:02:19 +01:00
|
|
|
"no-const-assign": "error",
|
|
|
|
"no-new-object": 2,
|
|
|
|
"quote-props": ["error", "as-needed", {
|
|
|
|
"keywords": false,
|
|
|
|
"unnecessary": true,
|
|
|
|
"numbers": false
|
|
|
|
}],
|
|
|
|
"no-array-constructor": "error",
|
2016-12-05 07:53:36 +01:00
|
|
|
"array-callback-return": "error",
|
2016-12-05 19:02:19 +01:00
|
|
|
"template-curly-spacing": "error",
|
2016-12-06 19:57:46 +01:00
|
|
|
//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.
|
2016-12-05 19:02:19 +01:00
|
|
|
"no-useless-escape": 1,
|
|
|
|
"func-style": ["off", "expression"],
|
|
|
|
"wrap-iife": ["error", "outside", { "functionPrototypeMethods": false }],
|
|
|
|
"no-new-func": "error",
|
|
|
|
"space-before-function-paren": ["error", { "anonymous": "always", "named": "never", "asyncArrow": "always" }],
|
|
|
|
"no-param-reassign": 1,
|
|
|
|
"prefer-spread": "error",
|
|
|
|
"arrow-spacing": ["error", { "before": true, "after": true }],
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-alert": 2,
|
|
|
|
"no-array-constructor": 2,
|
|
|
|
"no-caller": 2,
|
|
|
|
"no-bitwise": 2,
|
|
|
|
"no-catch-shadow": 2,
|
|
|
|
"comma-dangle": 0,
|
|
|
|
"no-console": 1,
|
|
|
|
"no-control-regex": 2,
|
|
|
|
"no-debugger": 2,
|
|
|
|
"no-div-regex": 2,
|
|
|
|
"no-dupe-keys": 2,
|
2016-12-02 21:34:35 +01:00
|
|
|
"no-else-return": 2,
|
2016-12-05 02:35:14 +01:00
|
|
|
"no-empty": 2,
|
2016-11-29 17:59:32 +01:00
|
|
|
"no-empty-character-class": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-eq-null": 2,
|
|
|
|
"no-eval": 2,
|
|
|
|
"no-ex-assign": 2,
|
|
|
|
"no-extra-semi": 2,
|
|
|
|
"no-func-assign": 2,
|
|
|
|
"no-floating-decimal": 2,
|
|
|
|
"no-implied-eval": 2,
|
|
|
|
"no-with": 2,
|
|
|
|
"no-fallthrough": 2,
|
|
|
|
"no-unreachable": 2,
|
|
|
|
"no-undef": 2,
|
|
|
|
"no-undef-init": 2,
|
|
|
|
"no-unused-expressions": 2,
|
|
|
|
"no-octal": 2,
|
|
|
|
"no-octal-escape": 2,
|
|
|
|
"no-obj-calls": 2,
|
|
|
|
"no-multi-str": 2,
|
|
|
|
"no-new-wrappers": 2,
|
|
|
|
"no-new": 2,
|
|
|
|
"no-new-func": 2,
|
|
|
|
"no-native-reassign": 2,
|
2016-11-30 19:05:04 +01:00
|
|
|
"no-plusplus": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-delete-var": 2,
|
|
|
|
"no-return-assign": 2,
|
|
|
|
"no-new-object": 2,
|
|
|
|
"no-label-var": 2,
|
|
|
|
"no-ternary": 0,
|
|
|
|
"no-self-compare": 2,
|
|
|
|
"no-sync": 2,
|
|
|
|
"no-underscore-dangle": 1,
|
2016-11-24 08:28:16 +01:00
|
|
|
"no-loop-func": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-labels": 2,
|
|
|
|
"no-unused-vars": 1,
|
|
|
|
"no-script-url": 2,
|
|
|
|
"no-proto": 2,
|
|
|
|
"no-iterator": 2,
|
|
|
|
"no-mixed-requires": [0, false],
|
2016-11-29 17:59:32 +01:00
|
|
|
"no-extra-parens": ["error", "functions"],
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-shadow": 1,
|
|
|
|
"no-use-before-define": 2,
|
|
|
|
"no-redeclare": 2,
|
|
|
|
"no-regex-spaces": 2,
|
2016-12-01 13:30:30 +01:00
|
|
|
"brace-style": ["error", "1tbs", { "allowSingleLine": true }],
|
2016-11-27 10:01:39 +01:00
|
|
|
"block-scoped-var": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"camelcase": 1,
|
|
|
|
"complexity": [0, 4],
|
|
|
|
"curly": 2,
|
|
|
|
"dot-notation": 2,
|
2016-11-27 10:01:39 +01:00
|
|
|
"guard-for-in": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"max-depth": [0, 4],
|
2016-12-02 15:16:33 +01:00
|
|
|
"max-len": ["error", 100, 2, {
|
|
|
|
"ignoreUrls": true,
|
|
|
|
"ignoreComments": false,
|
|
|
|
"ignoreRegExpLiterals": true,
|
|
|
|
"ignoreStrings": true,
|
|
|
|
"ignoreTemplateLiterals": true
|
|
|
|
}],
|
2016-11-04 23:15:18 +01:00
|
|
|
"max-params": [0, 3],
|
|
|
|
"max-statements": [0, 10],
|
2016-12-04 17:50:32 +01:00
|
|
|
"new-cap": ["error", { "newIsCap": true, "capIsNew": false }],
|
2016-11-04 23:15:18 +01:00
|
|
|
"new-parens": 2,
|
2016-12-02 17:09:31 +01:00
|
|
|
"one-var": ["error", "never"],
|
2016-11-04 23:15:18 +01:00
|
|
|
"quotes": [1, "single"],
|
2016-12-03 03:08:47 +01:00
|
|
|
"quote-props": ["error", "as-needed", { "keywords": false, "unnecessary": true, "numbers": false }],
|
2016-11-27 10:01:39 +01:00
|
|
|
"radix": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"semi": 2,
|
2016-12-01 20:02:56 +01:00
|
|
|
"keyword-spacing": ["error", {
|
|
|
|
"before": true,
|
|
|
|
"after": true,
|
|
|
|
"overrides": {
|
|
|
|
"return": { "after": true },
|
|
|
|
"throw": { "after": true },
|
|
|
|
"case": { "after": true }
|
|
|
|
}
|
|
|
|
}],
|
2016-12-02 23:45:20 +01:00
|
|
|
"space-before-blocks": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"strict": 1,
|
|
|
|
"unnecessary-strict": 0,
|
|
|
|
"use-isnan": 2,
|
2016-11-27 17:18:31 +01:00
|
|
|
"valid-typeof": ["error", { "requireStringLiterals": true }],
|
2016-11-04 23:15:18 +01:00
|
|
|
"wrap-iife": 2,
|
|
|
|
"wrap-regex": 0,
|
2016-12-05 03:39:24 +01:00
|
|
|
"yoda": 2
|
2016-11-04 23:15:18 +01:00
|
|
|
}
|
|
|
|
}
|