2016-11-04 23:15:18 +01:00
|
|
|
{
|
|
|
|
"env": {
|
2017-05-25 01:44:58 +02:00
|
|
|
"node": true,
|
|
|
|
"es6": true
|
|
|
|
},
|
|
|
|
"parserOptions": {
|
|
|
|
"sourceType": "module"
|
2016-11-04 23:15:18 +01:00
|
|
|
},
|
|
|
|
"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,
|
2017-11-03 17:25:47 +01:00
|
|
|
"md5": false,
|
2017-04-02 00:07:03 +02:00
|
|
|
"moment": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"i18n": false,
|
2017-04-05 02:10:04 +02:00
|
|
|
"DynamicText": false,
|
2017-06-08 22:58:15 +02:00
|
|
|
"LightboxCanvas": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"bridge": false,
|
|
|
|
"page_params": false,
|
2016-12-28 14:46:42 +01:00
|
|
|
"attachments_ui": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"csrf_token": false,
|
|
|
|
"typeahead_helper": false,
|
2017-04-26 09:32:46 +02:00
|
|
|
"pygments_data": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"popovers": false,
|
|
|
|
"server_events": false,
|
2017-05-31 08:53:09 +02:00
|
|
|
"server_events_dispatch": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"ui": false,
|
2017-03-18 21:17:41 +01:00
|
|
|
"ui_report": false,
|
2017-11-30 02:31:21 +01:00
|
|
|
"night_mode": false,
|
2017-03-18 21:35:35 +01:00
|
|
|
"ui_util": false,
|
2017-03-18 00:50:39 +01:00
|
|
|
"lightbox": false,
|
2017-10-24 20:15:35 +02:00
|
|
|
"input_pill": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"stream_color": false,
|
|
|
|
"people": false,
|
2017-11-07 08:58:46 +01:00
|
|
|
"user_groups": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"navigate": false,
|
2017-10-06 10:46:08 +02:00
|
|
|
"toMarkdown": false,
|
2017-04-06 02:28:57 +02:00
|
|
|
"settings_account": false,
|
2017-04-06 15:34:42 +02:00
|
|
|
"settings_display": false,
|
2017-04-06 16:01:07 +02:00
|
|
|
"settings_notifications": false,
|
2017-04-06 16:56:52 +02:00
|
|
|
"settings_muting": false,
|
2017-04-06 17:47:36 +02:00
|
|
|
"settings_lab": false,
|
2017-04-06 22:47:27 +02:00
|
|
|
"settings_bots": false,
|
2017-04-07 01:30:13 +02:00
|
|
|
"settings_sections": false,
|
2017-04-08 17:24:07 +02:00
|
|
|
"settings_emoji": false,
|
2017-04-08 18:13:39 +02:00
|
|
|
"settings_org": false,
|
2017-04-08 20:08:35 +02:00
|
|
|
"settings_users": false,
|
2017-04-08 21:02:08 +02:00
|
|
|
"settings_streams": false,
|
2017-04-08 23:24:03 +02:00
|
|
|
"settings_filters": false,
|
2017-10-21 03:15:12 +02:00
|
|
|
"settings_invites": false,
|
2017-11-13 05:20:42 +01:00
|
|
|
"settings_user_groups": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"settings": false,
|
|
|
|
"resize": false,
|
|
|
|
"loading": false,
|
2016-10-12 20:57:59 +02:00
|
|
|
"typing": false,
|
2017-03-22 15:11:41 +01:00
|
|
|
"typing_events": false,
|
2017-03-21 17:45:10 +01:00
|
|
|
"typing_data": false,
|
2017-03-22 00:41:09 +01:00
|
|
|
"typing_status": false,
|
sending messages: Extract sent_messages.js.
This commit extract send_messages.js to clean up code related
to the following things:
* sending data to /json/report_send_time
* restarting the event loop if events don't arrive on time
The code related to /json/report changes the following ways:
* We track the state almost completely in the new
send_messages.js module, with other modules just
making one-line calls.
* We no longer send "displayed" times to the servers, since
we were kind of lying about them anyway.
* We now explicitly track the state of each single sent
message in its own object.
* We now look up data related to the messages by local_id,
instead of message_id. The problem with message_id was
that is was mutable. Now we use local_id, and we extend
the local_id concept to messages that don't get rendered
client side. We no longer need to react to the
'message_id_changed' event to change our hash key.
* The code used to live in many places:
* various big chunks were scattered among compose.js,
and those were all moved or reduced to one-line
calls into the new module
* echo.js continues to make basically one-line calls,
but it no longer calls compose.report_as_received(),
nor does it set the "start" time.
* message_util.js used to report received events, but
only when they finally got drawn in the home view;
this code is gone now
The code related to restarting the event loop if events don't arrive
changes as follows:
* The timer now gets set up from within
send_messages.message_state.report_server_ack,
where we can easily inspect the current state of the
possibly-still-in-flight message.
* The code to confirm that an event was received happens now
in server_events.js, rather than later, so that we don't
falsely blame the event loop for a downstream bug. (Plus
it's easier to just do it one place.)
This change removes a fair amount of code from our node tests. Some
of the removal is good stuff related to us completing killing off
unnecessary code. Other removals are more expediency-driven, and
we should make another sweep at ramping up our coverage on compose.js,
with possibly a little more mocking of the new `send_messages` code
layer, since it's now abstracted better.
There is also some minor cleanup to echo.resend_message() in this
commit.
See #5968 for a detailed breakdown of the changes.
2017-07-30 12:56:46 +02:00
|
|
|
"sent_messages": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"compose": false,
|
2017-03-18 17:41:47 +01:00
|
|
|
"compose_actions": false,
|
2017-03-18 18:10:37 +01:00
|
|
|
"compose_state": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"compose_fade": false,
|
2017-05-27 15:40:54 +02:00
|
|
|
"overlays": false,
|
2017-04-22 22:22:25 +02:00
|
|
|
"stream_create": false,
|
2017-04-24 04:11:25 +02:00
|
|
|
"stream_edit": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"subs": false,
|
2017-03-19 16:00:35 +01:00
|
|
|
"stream_muting": false,
|
2017-03-19 16:03:07 +01:00
|
|
|
"stream_events": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"timerender": false,
|
2017-01-05 17:34:27 +01:00
|
|
|
"message_live_update": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"message_edit": false,
|
|
|
|
"reload": false,
|
|
|
|
"composebox_typeahead": false,
|
|
|
|
"search": false,
|
|
|
|
"topic_list": false,
|
2017-04-21 20:42:10 +02:00
|
|
|
"topic_generator": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"gear_menu": false,
|
|
|
|
"hashchange": false,
|
2017-03-18 18:29:20 +01:00
|
|
|
"hash_util": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"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,
|
2017-03-10 23:48:51 +01:00
|
|
|
"message_viewport": false,
|
2017-02-21 03:15:22 +01:00
|
|
|
"upload_widget": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"avatar": false,
|
2017-02-21 03:41:20 +01:00
|
|
|
"realm_icon": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"feature_flags": false,
|
|
|
|
"search_suggestion": false,
|
|
|
|
"notifications": false,
|
|
|
|
"message_flags": false,
|
|
|
|
"bot_data": false,
|
2017-08-12 17:26:12 +02:00
|
|
|
"top_left_corner": false,
|
2017-04-18 17:08:59 +02:00
|
|
|
"stream_sort": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"stream_list": false,
|
2017-03-05 17:28:40 +01:00
|
|
|
"stream_popover": false,
|
2017-04-25 15:25:31 +02:00
|
|
|
"narrow_state": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"narrow": false,
|
2017-04-17 16:51:27 +02:00
|
|
|
"admin_sections": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"admin": false,
|
|
|
|
"stream_data": false,
|
2017-07-24 18:22:37 +02:00
|
|
|
"topic_data": false,
|
2017-04-04 18:14:27 +02:00
|
|
|
"list_util": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"muting": false,
|
|
|
|
"Dict": false,
|
|
|
|
"unread": false,
|
|
|
|
"alert_words_ui": false,
|
|
|
|
"message_store": false,
|
2017-03-19 22:43:38 +01:00
|
|
|
"message_util": false,
|
2017-03-19 20:23:48 +01:00
|
|
|
"message_events": false,
|
2017-03-19 18:19:48 +01:00
|
|
|
"message_fetch": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"favicon": false,
|
|
|
|
"condense": false,
|
2017-03-16 21:00:56 +01:00
|
|
|
"list_render": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"floating_recipient_bar": false,
|
|
|
|
"tab_bar": false,
|
|
|
|
"emoji": false,
|
2017-03-30 20:04:01 +02:00
|
|
|
"presence": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"activity": false,
|
|
|
|
"invite": false,
|
|
|
|
"colorspace": false,
|
2016-12-02 13:23:23 +01:00
|
|
|
"reactions": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"tutorial": false,
|
|
|
|
"templates": false,
|
|
|
|
"alert_words": false,
|
|
|
|
"fenced_code": false,
|
2017-05-09 18:01:43 +02:00
|
|
|
"markdown": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"echo": false,
|
|
|
|
"localstorage": false,
|
2016-12-28 02:14:31 +01:00
|
|
|
"localStorage": false,
|
2016-11-29 17:59:32 +01:00
|
|
|
"current_msg_list": true,
|
|
|
|
"home_msg_list": false,
|
|
|
|
"pm_list": false,
|
2017-06-01 07:46:23 +02:00
|
|
|
"pm_conversations": false,
|
2017-06-01 07:42:57 +02:00
|
|
|
"recent_senders": false,
|
2016-12-20 02:30:08 +01:00
|
|
|
"unread_ui": false,
|
2017-03-18 01:41:56 +01:00
|
|
|
"unread_ops": false,
|
2017-11-23 15:00:05 +01:00
|
|
|
"upload": false,
|
2017-01-21 16:49:27 +01:00
|
|
|
"user_events": false,
|
2017-01-26 00:41:53 +01:00
|
|
|
"Plotly": false,
|
2017-02-22 02:34:05 +01:00
|
|
|
"emoji_codes": false,
|
2017-03-20 16:56:39 +01:00
|
|
|
"drafts": false,
|
2017-01-17 20:51:30 +01:00
|
|
|
"katex": false,
|
2017-01-24 01:48:35 +01:00
|
|
|
"Clipboard": false,
|
2017-04-27 07:27:25 +02:00
|
|
|
"emoji_picker": false,
|
2017-04-23 08:51:26 +02:00
|
|
|
"hotspots": false,
|
2017-06-22 22:08:43 +02:00
|
|
|
"compose_ui": false,
|
2017-09-23 11:27:18 +02:00
|
|
|
"common": false,
|
|
|
|
"desktop_notifications_panel": false
|
2016-11-04 23:15:18 +01:00
|
|
|
},
|
|
|
|
"rules": {
|
2016-12-05 07:53:36 +01:00
|
|
|
"array-callback-return": "error",
|
2017-10-06 21:43:12 +02:00
|
|
|
"array-bracket-spacing": "error",
|
2017-06-05 09:01:02 +02:00
|
|
|
"arrow-spacing": [ "error", { "before": true, "after": true } ],
|
|
|
|
"block-scoped-var": 2,
|
|
|
|
"brace-style": [ "error", "1tbs", { "allowSingleLine": true } ],
|
|
|
|
"camelcase": 0,
|
|
|
|
"comma-dangle": [ "error",
|
|
|
|
{
|
|
|
|
"arrays": "always-multiline",
|
|
|
|
"objects": "always-multiline",
|
|
|
|
"imports": "always-multiline",
|
|
|
|
"exports": "always-multiline",
|
|
|
|
"functions": "never"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"complexity": [ 0, 4 ],
|
|
|
|
"curly": 2,
|
|
|
|
"dot-notation": [ "error", { "allowKeywords": true } ],
|
|
|
|
"eol-last": [ "error", "always" ],
|
2017-09-28 19:47:08 +02:00
|
|
|
"eqeqeq": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"func-style": [ "off", "expression" ],
|
|
|
|
"guard-for-in": 2,
|
|
|
|
"keyword-spacing": [ "error",
|
|
|
|
{
|
|
|
|
"before": true,
|
|
|
|
"after": true,
|
|
|
|
"overrides": {
|
|
|
|
"return": { "after": true },
|
|
|
|
"throw": { "after": true },
|
|
|
|
"case": { "after": true }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"max-depth": [ 0, 4 ],
|
|
|
|
"max-len": [ "error", 100, 2,
|
|
|
|
{
|
|
|
|
"ignoreUrls": true,
|
|
|
|
"ignoreComments": false,
|
|
|
|
"ignoreRegExpLiterals": true,
|
|
|
|
"ignoreStrings": true,
|
|
|
|
"ignoreTemplateLiterals": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"max-params": [ 0, 3 ],
|
|
|
|
"max-statements": [ 0, 10 ],
|
|
|
|
"new-cap": [ "error",
|
|
|
|
{
|
|
|
|
"newIsCap": true,
|
|
|
|
"capIsNew": false
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"new-parens": 2,
|
|
|
|
"newline-per-chained-call": 0,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-alert": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-array-constructor": "error",
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-bitwise": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-caller": 2,
|
|
|
|
"no-case-declarations": "error",
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-catch-shadow": 2,
|
2017-02-02 01:21:12 +01:00
|
|
|
"no-console": 0,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-const-assign": "error",
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-control-regex": 2,
|
|
|
|
"no-debugger": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-delete-var": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-div-regex": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-dupe-class-members": "error",
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-dupe-keys": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-duplicate-imports": "error",
|
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,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-extra-parens": [ "error", "functions" ],
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-extra-semi": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-fallthrough": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-floating-decimal": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-func-assign": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-implied-eval": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-iterator": "error",
|
|
|
|
"no-label-var": 2,
|
|
|
|
"no-labels": 2,
|
|
|
|
"no-loop-func": 2,
|
|
|
|
"no-mixed-requires": [ 0, false ],
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-multi-str": 2,
|
|
|
|
"no-native-reassign": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-nested-ternary": 0,
|
|
|
|
"no-new-func": "error",
|
|
|
|
"no-new-object": 2,
|
|
|
|
"no-new-wrappers": 2,
|
|
|
|
"no-obj-calls": 2,
|
|
|
|
"no-octal": 2,
|
|
|
|
"no-octal-escape": 2,
|
|
|
|
"no-param-reassign": 0,
|
2016-11-30 19:05:04 +01:00
|
|
|
"no-plusplus": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-proto": 2,
|
|
|
|
"no-redeclare": 2,
|
|
|
|
"no-regex-spaces": 2,
|
|
|
|
"no-restricted-syntax": 0,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-return-assign": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-script-url": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-self-compare": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-shadow": 0,
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-sync": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-ternary": 0,
|
|
|
|
"no-undef": "error",
|
|
|
|
"no-undef-init": 2,
|
2017-02-02 01:21:12 +01:00
|
|
|
"no-underscore-dangle": 0,
|
2017-06-05 09:01:02 +02:00
|
|
|
"no-unneeded-ternary": [ "error", { "defaultAssignment": false } ],
|
|
|
|
"no-unreachable": 2,
|
|
|
|
"no-unused-expressions": 2,
|
|
|
|
"no-unused-vars": [ "error",
|
|
|
|
{
|
|
|
|
"vars": "local",
|
|
|
|
"args": "after-used",
|
|
|
|
"varsIgnorePattern": "print_elapsed_time|check_duplicate_ids"
|
|
|
|
}
|
|
|
|
],
|
2016-11-04 23:15:18 +01:00
|
|
|
"no-use-before-define": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"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": 0,
|
|
|
|
"no-whitespace-before-property": 0,
|
|
|
|
"no-with": 2,
|
|
|
|
"one-var": [ "error", "never" ],
|
|
|
|
"padded-blocks": 0,
|
|
|
|
"prefer-const": [ "error",
|
|
|
|
{
|
|
|
|
"destructuring": "any",
|
|
|
|
"ignoreReadBeforeAssign": true
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"quote-props": [ "error", "as-needed",
|
|
|
|
{
|
|
|
|
"keywords": false,
|
|
|
|
"unnecessary": true,
|
|
|
|
"numbers": false
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"quotes": [ 0, "single" ],
|
2016-11-27 10:01:39 +01:00
|
|
|
"radix": 2,
|
2016-11-04 23:15:18 +01:00
|
|
|
"semi": 2,
|
2016-12-02 23:45:20 +01:00
|
|
|
"space-before-blocks": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"space-before-function-paren": [ "error",
|
|
|
|
{
|
|
|
|
"anonymous": "always",
|
|
|
|
"named": "never",
|
|
|
|
"asyncArrow": "always"
|
|
|
|
}
|
|
|
|
],
|
2017-10-06 21:36:39 +02:00
|
|
|
"space-in-parens": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"space-infix-ops": 0,
|
|
|
|
"spaced-comment": 0,
|
2017-02-02 01:21:12 +01:00
|
|
|
"strict": 0,
|
2017-06-05 09:01:02 +02:00
|
|
|
"template-curly-spacing": "error",
|
2016-11-04 23:15:18 +01:00
|
|
|
"unnecessary-strict": 0,
|
|
|
|
"use-isnan": 2,
|
2017-06-05 09:01:02 +02:00
|
|
|
"valid-typeof": [ "error", { "requireStringLiterals": true } ],
|
|
|
|
"wrap-iife": [ "error", "outside", { "functionPrototypeMethods": false } ],
|
2016-11-04 23:15:18 +01:00
|
|
|
"wrap-regex": 0,
|
2016-12-05 03:39:24 +01:00
|
|
|
"yoda": 2
|
2016-11-04 23:15:18 +01:00
|
|
|
}
|
|
|
|
}
|