by accident I ran a jshint on the Strophe source files and it seems that the code contains quite some unused and undefined variables (among other things).
I think it would be good to define a .jshintrc
file with the Strophe standards and clean up the things.
src/base64.js: line 5, col 11, 'Base64' is defined but never used.
src/bosh.js: line 8, col 1, Bad option value.
src/bosh.js: line 419, col 56, Don't make functions within a loop.
src/bosh.js: line 441, col 13, 'body' is not defined.
src/bosh.js: line 442, col 18, 'i' is not defined.
src/bosh.js: line 442, col 25, 'i' is not defined.
src/bosh.js: line 442, col 42, 'i' is not defined.
src/bosh.js: line 443, col 26, 'i' is not defined.
src/bosh.js: line 444, col 30, 'i' is not defined.
src/bosh.js: line 445, col 25, 'body' is not defined.
src/bosh.js: line 452, col 25, 'body' is not defined.
src/bosh.js: line 452, col 41, 'i' is not defined.
src/bosh.js: line 459, col 37, 'body' is not defined.
src/bosh.js: line 462, col 37, 'body' is not defined.
src/bosh.js: line 467, col 13, 'time_elapsed' is not defined.
src/bosh.js: line 475, col 17, 'time_elapsed' is not defined.
src/bosh.js: line 12, col 41, 'document' is defined but never used.
src/bosh.js: line 12, col 41, 'console' is defined but never used.
src/bosh.js: line 12, col 41, 'Base64' is defined but never used.
src/bosh.js: line 12, col 41, 'MD5' is defined but never used.
src/bosh.js: line 12, col 41, '$msg' is defined but never used.
src/bosh.js: line 12, col 41, '$iq' is defined but never used.
src/bosh.js: line 12, col 41, '$pres' is defined but never used.
src/core.js: line 8, col 1, Bad option value.
src/core.js: line 1601, col 35, Don't make functions within a loop.
src/core.js: line 575, col 13, 'parser' is not defined.
src/core.js: line 575, col 26, 'DOMParser' is not defined.
src/core.js: line 576, col 13, 'node' is not defined.
src/core.js: line 576, col 20, 'parser' is not defined.
src/core.js: line 578, col 13, 'node' is not defined.
src/core.js: line 579, col 13, 'node' is not defined.
src/core.js: line 580, col 13, 'node' is not defined.
src/core.js: line 582, col 16, 'node' is not defined.
src/core.js: line 3157, col 18, 'core_hmac_sha1' is not defined.
src/core.js: line 3159, col 11, 'core_hmac_sha1' is not defined.
src/core.js: line 3159, col 43, 'binb2str' is not defined.
src/core.js: line 3165, col 10, 'binb2str' is not defined.
src/core.js: line 3167, col 17, 'core_hmac_sha1' is not defined.
src/core.js: line 3168, col 17, 'str_hmac_sha1' is not defined.
src/core.js: line 3169, col 23, 'core_hmac_sha1' is not defined.
src/core.js: line 3169, col 38, 'str_sha1' is not defined.
src/core.js: line 3169, col 47, 'binb2str' is not defined.
src/core.js: line 3170, col 49, 'b64_hmac_sha1' is not defined.
src/core.js: line 3176, col 43, 'binb2str' is not defined.
src/core.js: line 661, col 94, 'children' is defined but never used.
src/core.js: line 661, col 101, 'child' is defined but never used.
src/core.js: line 866, col 30, 'msg' is defined but never used.
src/core.js: line 866, col 25, 'level' is defined but never used.
src/core.js: line 1807, col 29, 'elem' is defined but never used.
src/core.js: line 1830, col 30, 'elem' is defined but never used.
src/core.js: line 1847, col 29, 'data' is defined but never used.
src/core.js: line 1864, col 30, 'data' is defined but never used.
src/core.js: line 2396, col 30, 'auth_str' is defined but never used.
src/core.js: line 2396, col 47, 'hashed_auth_str' is defined but never used.
src/core.js: line 2537, col 30, 'elem' is defined but never used.
src/core.js: line 2751, col 37, 'elem' is defined but never used.
src/core.js: line 2900, col 17, 'body' is defined but never used.
src/core.js: line 2900, col 31, 'time_elapsed' is defined but never used.
src/core.js: line 2992, col 28, 'connection' is defined but never used.
src/core.js: line 3018, col 46, 'challenge' is defined but never used.
src/core.js: line 3018, col 35, 'connection' is defined but never used.
src/core.js: line 3072, col 73, 'challenge' is defined but never used.
src/core.js: line 3267, col 53, 'challenge' is defined but never used.
src/core.js: line 3267, col 42, 'connection' is defined but never used.
src/core.js: line 12, col 41, 'XMLHttpRequest' is defined but never used.
src/core.js: line 12, col 41, 'Strophe' is defined but never used.
src/core.js: line 12, col 41, '$build' is defined but never used.
src/core.js: line 12, col 41, '$msg' is defined but never used.
src/core.js: line 12, col 41, '$iq' is defined but never used.
src/core.js: line 12, col 41, '$pres' is defined but never used.
src/md5.js: line 14, col 8, 'MD5' is defined but never used.
src/sha1.js: line 16, col 18, 'b64_sha1' is defined but never used.
src/sha1.js: line 17, col 18, 'str_sha1' is defined but never used.
src/sha1.js: line 18, col 23, 'b64_hmac_sha1' is defined but never used.
src/sha1.js: line 19, col 23, 'str_hmac_sha1' is defined but never used.
src/websocket.js: line 106, col 9, 'ns' is not defined.
src/websocket.js: line 107, col 14, 'i' is not defined.
src/websocket.js: line 107, col 21, 'i' is not defined.
src/websocket.js: line 107, col 50, 'i' is not defined.
src/websocket.js: line 108, col 13, 'e' is not defined.
src/websocket.js: line 108, col 34, 'i' is not defined.
src/websocket.js: line 109, col 17, 'e' is not defined.
src/websocket.js: line 109, col 45, 'ns' is not defined.
src/websocket.js: line 111, col 19, 'e' is not defined.
src/websocket.js: line 112, col 24, 'e' is not defined.
src/websocket.js: line 114, col 29, 'e' is not defined.
src/websocket.js: line 118, col 9, 'errorString' is not defined.
src/websocket.js: line 121, col 13, 'errorString' is not defined.
src/websocket.js: line 123, col 13, 'errorString' is not defined.
src/websocket.js: line 127, col 13, 'errorString' is not defined.
src/websocket.js: line 130, col 23, 'errorString' is not defined.
src/websocket.js: line 160, col 27, 'WebSocket' is not defined.
src/websocket.js: line 238, col 35, 'DOMParser' is not defined.
src/websocket.js: line 254, col 70, 'error' is not defined.
src/websocket.js: line 259, col 28, 'DOMParser' is not defined.
src/websocket.js: line 275, col 40, 'WebSocket' is not defined.
src/websocket.js: line 394, col 18, 'i' is not defined.
src/websocket.js: line 394, col 25, 'i' is not defined.
src/websocket.js: line 394, col 42, 'i' is not defined.
src/websocket.js: line 395, col 26, 'i' is not defined.
src/websocket.js: line 397, col 30, 'i' is not defined.
src/websocket.js: line 402, col 39, 'i' is not defined.
src/websocket.js: line 439, col 13, 'data' is not defined.
src/websocket.js: line 440, col 24, 'DOMParser' is not defined.
src/websocket.js: line 440, col 52, 'data' is not defined.
src/websocket.js: line 446, col 13, 'data' is not defined.
src/websocket.js: line 447, col 24, 'DOMParser' is not defined.
src/websocket.js: line 447, col 52, 'data' is not defined.
src/websocket.js: line 342, col 29, 'event' is defined but never used.
src/websocket.js: line 11, col 41, 'setTimeout' is defined but never used.
src/websocket.js: line 11, col 41, 'console' is defined but never used.
src/websocket.js: line 11, col 41, 'XMLHttpRequest' is defined but never used.
src/websocket.js: line 11, col 41, 'ActiveXObject' is defined but never used.
src/websocket.js: line 11, col 41, 'Base64' is defined but never used.
src/websocket.js: line 11, col 41, 'MD5' is defined but never used.
src/websocket.js: line 11, col 41, '$msg' is defined but never used.
src/websocket.js: line 11, col 41, '$iq' is defined but never used.
src/websocket.js: line 11, col 41, '$pres' is defined but never used.
118 errors
While for sure some of them are entirely just global definitions which are missing in the source files, there are also very valid ones and IMO we should fix them to make Strophe more robust and also (in case of the unused variables) less big in the size.