pingerchips-js 1.0.0-a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/.editorconfig +14 -0
  2. package/.github/ISSUE_TEMPLATE.md +11 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +14 -0
  4. package/.github/dependabot.yml +14 -0
  5. package/.github/stale.yml +26 -0
  6. package/.github/workflows/release.yml +112 -0
  7. package/.github/workflows/release_pr.yml +43 -0
  8. package/.github/workflows/run-tests.yml +62 -0
  9. package/.gitmodules +3 -0
  10. package/.prettierrc +2 -0
  11. package/CHANGELOG.md +924 -0
  12. package/LICENCE +19 -0
  13. package/Makefile +78 -0
  14. package/README.md +707 -0
  15. package/bower.json +28 -0
  16. package/dist/node/pusher.js +10870 -0
  17. package/dist/node/pusher.js.map +1 -0
  18. package/dist/react-native/pusher.js +9 -0
  19. package/dist/react-native/pusher.js.map +1 -0
  20. package/dist/web/json2.js +486 -0
  21. package/dist/web/json2.min.js +1 -0
  22. package/dist/web/pusher-with-encryption.js +7009 -0
  23. package/dist/web/pusher-with-encryption.js.map +1 -0
  24. package/dist/web/pusher-with-encryption.min.js +9 -0
  25. package/dist/web/pusher-with-encryption.min.js.map +1 -0
  26. package/dist/web/pusher.js +4587 -0
  27. package/dist/web/pusher.js.map +1 -0
  28. package/dist/web/pusher.min.js +9 -0
  29. package/dist/web/pusher.min.js.map +1 -0
  30. package/dist/web/sockjs.js +2435 -0
  31. package/dist/web/sockjs.min.js +89 -0
  32. package/dist/worker/pusher-with-encryption.worker.js +6622 -0
  33. package/dist/worker/pusher-with-encryption.worker.js.map +1 -0
  34. package/dist/worker/pusher-with-encryption.worker.min.js +9 -0
  35. package/dist/worker/pusher-with-encryption.worker.min.js.map +1 -0
  36. package/dist/worker/pusher.worker.js +4200 -0
  37. package/dist/worker/pusher.worker.js.map +1 -0
  38. package/dist/worker/pusher.worker.min.js +9 -0
  39. package/dist/worker/pusher.worker.min.js.map +1 -0
  40. package/index.d.ts +29 -0
  41. package/integration_tests_server/index.js +176 -0
  42. package/integration_tests_server/package-lock.json +1177 -0
  43. package/integration_tests_server/package.json +15 -0
  44. package/node.js +1 -0
  45. package/package.json +70 -0
  46. package/pusher-with-encryption/index.js +1 -0
  47. package/react-native/index.d.ts +29 -0
  48. package/react-native/index.js +1 -0
  49. package/spec/config/jasmine/helpers/reporter.js +14 -0
  50. package/spec/config/jasmine/integration.json +13 -0
  51. package/spec/config/jasmine/unit.json +13 -0
  52. package/spec/config/jasmine/webpack.integration.js +33 -0
  53. package/spec/config/jasmine/webpack.unit.js +30 -0
  54. package/spec/config/karma/available_browsers.json +4957 -0
  55. package/spec/config/karma/config.ci.js +25 -0
  56. package/spec/config/karma/config.common.js +50 -0
  57. package/spec/config/karma/config.integration.js +26 -0
  58. package/spec/config/karma/config.unit.js +10 -0
  59. package/spec/config/karma/config.worker.js +34 -0
  60. package/spec/config/karma/integration.js +24 -0
  61. package/spec/config/karma/unit.js +20 -0
  62. package/spec/javascripts/helpers/mocks.js +274 -0
  63. package/spec/javascripts/helpers/node/integration.js +33 -0
  64. package/spec/javascripts/helpers/node/mock-dom-dependencies.ts +1 -0
  65. package/spec/javascripts/helpers/pusher_integration.js +1 -0
  66. package/spec/javascripts/helpers/pusher_integration_class.ts +12 -0
  67. package/spec/javascripts/helpers/timers/promises.js +9 -0
  68. package/spec/javascripts/helpers/waitsFor.js +37 -0
  69. package/spec/javascripts/helpers/web/integration.js +44 -0
  70. package/spec/javascripts/helpers/worker/mock-dom-dependencies.js +1 -0
  71. package/spec/javascripts/integration/core/cluster_config_spec.js +153 -0
  72. package/spec/javascripts/integration/core/falling_back_spec.js +195 -0
  73. package/spec/javascripts/integration/core/pusher_spec/index.js +68 -0
  74. package/spec/javascripts/integration/core/pusher_spec/test_builder.js +715 -0
  75. package/spec/javascripts/integration/core/timeout_configuration_spec.js +200 -0
  76. package/spec/javascripts/integration/core/transport_lists_spec.js +103 -0
  77. package/spec/javascripts/integration/index.node.js +12 -0
  78. package/spec/javascripts/integration/index.web.js +63 -0
  79. package/spec/javascripts/integration/index.worker.js +13 -0
  80. package/spec/javascripts/integration/web/dom/jsonp_spec.js +97 -0
  81. package/spec/javascripts/integration/web/dom/script_request_spec.js +90 -0
  82. package/spec/javascripts/polyfills/index.js +105 -0
  83. package/spec/javascripts/unit/core/channels/channel_spec.js +355 -0
  84. package/spec/javascripts/unit/core/channels/channels_spec.js +94 -0
  85. package/spec/javascripts/unit/core/channels/encrypted_channel_spec.js +343 -0
  86. package/spec/javascripts/unit/core/channels/presence_channel_spec.js +553 -0
  87. package/spec/javascripts/unit/core/channels/private_channel_spec.js +182 -0
  88. package/spec/javascripts/unit/core/config_spec.js +507 -0
  89. package/spec/javascripts/unit/core/connection/connection_manager_spec.js +656 -0
  90. package/spec/javascripts/unit/core/connection/connection_spec.js +286 -0
  91. package/spec/javascripts/unit/core/connection/handshake_spec.js +160 -0
  92. package/spec/javascripts/unit/core/connection/protocol_spec.js +420 -0
  93. package/spec/javascripts/unit/core/defaults_spec.js +26 -0
  94. package/spec/javascripts/unit/core/events_dispatcher_spec.js +385 -0
  95. package/spec/javascripts/unit/core/http/http_polling_socket_spec.js +60 -0
  96. package/spec/javascripts/unit/core/http/http_request_spec.js +185 -0
  97. package/spec/javascripts/unit/core/http/http_socket_spec.js +370 -0
  98. package/spec/javascripts/unit/core/http/http_streaming_socket_spec.js +56 -0
  99. package/spec/javascripts/unit/core/http/http_xhr_request_spec.js +164 -0
  100. package/spec/javascripts/unit/core/logger_spec.js +133 -0
  101. package/spec/javascripts/unit/core/pusher_spec.js +613 -0
  102. package/spec/javascripts/unit/core/pusher_with_encryption_spec.js +18 -0
  103. package/spec/javascripts/unit/core/strategies/best_connected_ever_strategy_spec.js +104 -0
  104. package/spec/javascripts/unit/core/strategies/delayed_strategy_spec.js +95 -0
  105. package/spec/javascripts/unit/core/strategies/first_connected_strategy_spec.js +68 -0
  106. package/spec/javascripts/unit/core/strategies/if_strategy_spec.js +165 -0
  107. package/spec/javascripts/unit/core/strategies/sequential_strategy_spec.js +213 -0
  108. package/spec/javascripts/unit/core/strategies/transport_strategy_spec.js +250 -0
  109. package/spec/javascripts/unit/core/strategies/websocket_prioritized_cached_strategy_spec.js +400 -0
  110. package/spec/javascripts/unit/core/timeline/timeline_spec.js +153 -0
  111. package/spec/javascripts/unit/core/transports/assistant_to_the_transport_manager_spec.js +223 -0
  112. package/spec/javascripts/unit/core/transports/hosts_and_ports_spec.js +85 -0
  113. package/spec/javascripts/unit/core/transports/transport_connection_spec.js +585 -0
  114. package/spec/javascripts/unit/core/transports/transport_manager_spec.js +64 -0
  115. package/spec/javascripts/unit/core/user_spec.js +303 -0
  116. package/spec/javascripts/unit/core/utils/periodic_timer_spec.js +74 -0
  117. package/spec/javascripts/unit/core/utils/timers_spec.js +157 -0
  118. package/spec/javascripts/unit/core/utils/url_store_spec.js +14 -0
  119. package/spec/javascripts/unit/core/watchlist_spec.js +48 -0
  120. package/spec/javascripts/unit/core_with_runtime/auth/channel_authorizer_spec.js +137 -0
  121. package/spec/javascripts/unit/core_with_runtime/auth/deprecated_channel_authorizer_spec.js +48 -0
  122. package/spec/javascripts/unit/core_with_runtime/auth/user_authorizer_spec.js +128 -0
  123. package/spec/javascripts/unit/core_with_runtime/readme.md +5 -0
  124. package/spec/javascripts/unit/index.node.js +11 -0
  125. package/spec/javascripts/unit/index.web.js +12 -0
  126. package/spec/javascripts/unit/index.worker.js +11 -0
  127. package/spec/javascripts/unit/isomorphic/transports/hosts_and_ports_spec.js +82 -0
  128. package/spec/javascripts/unit/isomorphic/transports/transports_spec.js +202 -0
  129. package/spec/javascripts/unit/node/timeline_sender_spec.js +83 -0
  130. package/spec/javascripts/unit/web/dom/dependency_loader_spec.js +249 -0
  131. package/spec/javascripts/unit/web/dom/jsonp_request_spec.js +130 -0
  132. package/spec/javascripts/unit/web/dom/script_receiver_factory_spec.js +68 -0
  133. package/spec/javascripts/unit/web/http/http_xdomain_request_spec.js +222 -0
  134. package/spec/javascripts/unit/web/pusher_authorizer_spec.js +64 -0
  135. package/spec/javascripts/unit/web/timeline/timeline_sender_spec.js +131 -0
  136. package/spec/javascripts/unit/web/transports/hosts_and_ports_spec.js +127 -0
  137. package/spec/javascripts/unit/web/transports/transports_spec.js +444 -0
  138. package/spec/javascripts/unit/worker/channel_authorizer_spec.js +156 -0
  139. package/spec/javascripts/unit/worker/timeline_sender_spec.js +76 -0
  140. package/src/core/auth/auth_transports.ts +18 -0
  141. package/src/core/auth/channel_authorizer.ts +64 -0
  142. package/src/core/auth/deprecated_channel_authorizer.ts +58 -0
  143. package/src/core/auth/options.ts +78 -0
  144. package/src/core/auth/user_authenticator.ts +62 -0
  145. package/src/core/base64.ts +49 -0
  146. package/src/core/channels/channel.ts +163 -0
  147. package/src/core/channels/channel_table.ts +7 -0
  148. package/src/core/channels/channels.ts +85 -0
  149. package/src/core/channels/encrypted_channel.ts +149 -0
  150. package/src/core/channels/members.ts +80 -0
  151. package/src/core/channels/metadata.ts +5 -0
  152. package/src/core/channels/presence_channel.ts +113 -0
  153. package/src/core/channels/private_channel.ts +25 -0
  154. package/src/core/config.ts +189 -0
  155. package/src/core/connection/callbacks.ts +21 -0
  156. package/src/core/connection/connection.ts +160 -0
  157. package/src/core/connection/connection_manager.ts +371 -0
  158. package/src/core/connection/connection_manager_options.ts +14 -0
  159. package/src/core/connection/handshake/handshake_payload.ts +10 -0
  160. package/src/core/connection/handshake/index.ts +90 -0
  161. package/src/core/connection/protocol/action.ts +8 -0
  162. package/src/core/connection/protocol/message-types.ts +8 -0
  163. package/src/core/connection/protocol/protocol.ts +154 -0
  164. package/src/core/defaults.ts +66 -0
  165. package/src/core/errors.ts +69 -0
  166. package/src/core/events/callback.ts +6 -0
  167. package/src/core/events/callback_registry.ts +75 -0
  168. package/src/core/events/callback_table.ts +7 -0
  169. package/src/core/events/dispatcher.ts +84 -0
  170. package/src/core/http/ajax.ts +24 -0
  171. package/src/core/http/http_factory.ts +16 -0
  172. package/src/core/http/http_polling_socket.ts +24 -0
  173. package/src/core/http/http_request.ts +81 -0
  174. package/src/core/http/http_socket.ts +220 -0
  175. package/src/core/http/http_streaming_socket.ts +19 -0
  176. package/src/core/http/request_hooks.ts +9 -0
  177. package/src/core/http/socket_hooks.ts +11 -0
  178. package/src/core/http/state.ts +7 -0
  179. package/src/core/http/url_location.ts +6 -0
  180. package/src/core/logger.ts +53 -0
  181. package/src/core/options.ts +59 -0
  182. package/src/core/pusher-licence.js +7 -0
  183. package/src/core/pusher-with-encryption.js +1 -0
  184. package/src/core/pusher-with-encryption.ts +14 -0
  185. package/src/core/pusher.js +2 -0
  186. package/src/core/pusher.ts +249 -0
  187. package/src/core/reachability.ts +7 -0
  188. package/src/core/socket.ts +14 -0
  189. package/src/core/strategies/best_connected_ever_strategy.ts +81 -0
  190. package/src/core/strategies/delayed_strategy.ts +48 -0
  191. package/src/core/strategies/first_connected_strategy.ts +28 -0
  192. package/src/core/strategies/if_strategy.ts +34 -0
  193. package/src/core/strategies/sequential_strategy.ts +129 -0
  194. package/src/core/strategies/strategy.ts +8 -0
  195. package/src/core/strategies/strategy_builder.ts +67 -0
  196. package/src/core/strategies/strategy_options.ts +18 -0
  197. package/src/core/strategies/strategy_runner.ts +6 -0
  198. package/src/core/strategies/transport_strategy.ts +144 -0
  199. package/src/core/strategies/websocket_prioritized_cached_strategy.ts +157 -0
  200. package/src/core/timeline/level.ts +7 -0
  201. package/src/core/timeline/timeline.ts +90 -0
  202. package/src/core/timeline/timeline_sender.ts +33 -0
  203. package/src/core/timeline/timeline_transport.ts +11 -0
  204. package/src/core/transports/assistant_to_the_transport_manager.ts +104 -0
  205. package/src/core/transports/ping_delay_options.ts +7 -0
  206. package/src/core/transports/transport.ts +54 -0
  207. package/src/core/transports/transport_connection.ts +241 -0
  208. package/src/core/transports/transport_connection_options.ts +8 -0
  209. package/src/core/transports/transport_hooks.ts +16 -0
  210. package/src/core/transports/transport_manager.ts +52 -0
  211. package/src/core/transports/transports_table.ts +12 -0
  212. package/src/core/transports/url_scheme.ts +13 -0
  213. package/src/core/transports/url_schemes.ts +47 -0
  214. package/src/core/user.ts +186 -0
  215. package/src/core/util.ts +34 -0
  216. package/src/core/utils/collections.ts +353 -0
  217. package/src/core/utils/factory.ts +75 -0
  218. package/src/core/utils/flat_promise.ts +10 -0
  219. package/src/core/utils/timers/abstract_timer.ts +39 -0
  220. package/src/core/utils/timers/index.ts +39 -0
  221. package/src/core/utils/timers/scheduling.ts +11 -0
  222. package/src/core/utils/timers/timed_callback.ts +5 -0
  223. package/src/core/utils/url_store.ts +48 -0
  224. package/src/core/watchlist.ts +31 -0
  225. package/src/d.ts/constants/index.d.ts +5 -0
  226. package/src/d.ts/faye-websocket/faye-websocket.d.ts +21 -0
  227. package/src/d.ts/global/global.d.ts +1 -0
  228. package/src/d.ts/module/module.d.ts +12 -0
  229. package/src/d.ts/tweetnacl-util/index.d.ts +6 -0
  230. package/src/d.ts/window/events.d.ts +4 -0
  231. package/src/d.ts/window/sockjs.d.ts +3 -0
  232. package/src/d.ts/window/websocket.d.ts +4 -0
  233. package/src/d.ts/window/xmlhttprequest.d.ts +3 -0
  234. package/src/runtimes/interface.ts +59 -0
  235. package/src/runtimes/isomorphic/auth/xhr_auth.ts +90 -0
  236. package/src/runtimes/isomorphic/default_strategy.ts +155 -0
  237. package/src/runtimes/isomorphic/http/http.ts +32 -0
  238. package/src/runtimes/isomorphic/http/http_xhr_request.ts +35 -0
  239. package/src/runtimes/isomorphic/runtime.ts +62 -0
  240. package/src/runtimes/isomorphic/timeline/xhr_timeline.ts +50 -0
  241. package/src/runtimes/isomorphic/transports/transport_connection_initializer.ts +19 -0
  242. package/src/runtimes/isomorphic/transports/transports.ts +81 -0
  243. package/src/runtimes/node/net_info.ts +10 -0
  244. package/src/runtimes/node/runtime.ts +68 -0
  245. package/src/runtimes/react-native/net_info.ts +42 -0
  246. package/src/runtimes/react-native/runtime.ts +65 -0
  247. package/src/runtimes/web/auth/jsonp_auth.ts +51 -0
  248. package/src/runtimes/web/browser.ts +24 -0
  249. package/src/runtimes/web/default_strategy.ts +201 -0
  250. package/src/runtimes/web/dom/dependencies.ts +16 -0
  251. package/src/runtimes/web/dom/dependency_loader.ts +93 -0
  252. package/src/runtimes/web/dom/json2.js +486 -0
  253. package/src/runtimes/web/dom/jsonp_request.ts +52 -0
  254. package/src/runtimes/web/dom/script_receiver.ts +8 -0
  255. package/src/runtimes/web/dom/script_receiver_factory.ts +57 -0
  256. package/src/runtimes/web/dom/script_request.ts +85 -0
  257. package/src/runtimes/web/dom/sockjs/COPYING +11 -0
  258. package/src/runtimes/web/dom/sockjs/Changelog +147 -0
  259. package/src/runtimes/web/dom/sockjs/LICENSE-MIT-SockJS +19 -0
  260. package/src/runtimes/web/dom/sockjs/Makefile +109 -0
  261. package/src/runtimes/web/dom/sockjs/README.md +388 -0
  262. package/src/runtimes/web/dom/sockjs/VERSION-GEN +17 -0
  263. package/src/runtimes/web/dom/sockjs/bin/render.coffee +111 -0
  264. package/src/runtimes/web/dom/sockjs/bin/run_testling.sh +135 -0
  265. package/src/runtimes/web/dom/sockjs/lib/all.js +9 -0
  266. package/src/runtimes/web/dom/sockjs/lib/dom.js +185 -0
  267. package/src/runtimes/web/dom/sockjs/lib/dom2.js +280 -0
  268. package/src/runtimes/web/dom/sockjs/lib/eventemitter.js +57 -0
  269. package/src/runtimes/web/dom/sockjs/lib/heartbeater.js +70 -0
  270. package/src/runtimes/web/dom/sockjs/lib/index.js +41 -0
  271. package/src/runtimes/web/dom/sockjs/lib/info.js +117 -0
  272. package/src/runtimes/web/dom/sockjs/lib/json2.min.js +1 -0
  273. package/src/runtimes/web/dom/sockjs/lib/reventtarget.js +55 -0
  274. package/src/runtimes/web/dom/sockjs/lib/simpleevent.js +28 -0
  275. package/src/runtimes/web/dom/sockjs/lib/sockjs.js +288 -0
  276. package/src/runtimes/web/dom/sockjs/lib/test-hooks.js +16 -0
  277. package/src/runtimes/web/dom/sockjs/lib/trans-iframe-eventsource.js +29 -0
  278. package/src/runtimes/web/dom/sockjs/lib/trans-iframe-htmlfile.js +35 -0
  279. package/src/runtimes/web/dom/sockjs/lib/trans-iframe-within.js +100 -0
  280. package/src/runtimes/web/dom/sockjs/lib/trans-iframe-xhr-polling.js +30 -0
  281. package/src/runtimes/web/dom/sockjs/lib/trans-iframe.js +103 -0
  282. package/src/runtimes/web/dom/sockjs/lib/trans-jsonp-polling.js +106 -0
  283. package/src/runtimes/web/dom/sockjs/lib/trans-jsonp-receiver.js +116 -0
  284. package/src/runtimes/web/dom/sockjs/lib/trans-polling.js +44 -0
  285. package/src/runtimes/web/dom/sockjs/lib/trans-receiver-eventsource.js +41 -0
  286. package/src/runtimes/web/dom/sockjs/lib/trans-receiver-htmlfile.js +65 -0
  287. package/src/runtimes/web/dom/sockjs/lib/trans-receiver-xhr.js +42 -0
  288. package/src/runtimes/web/dom/sockjs/lib/trans-sender.js +138 -0
  289. package/src/runtimes/web/dom/sockjs/lib/trans-xhr.js +29 -0
  290. package/src/runtimes/web/dom/sockjs/lib/utils.js +297 -0
  291. package/src/runtimes/web/dom/sockjs/package.json +18 -0
  292. package/src/runtimes/web/dom/sockjs/version +1 -0
  293. package/src/runtimes/web/http/http.ts +8 -0
  294. package/src/runtimes/web/http/http_xdomain_request.ts +37 -0
  295. package/src/runtimes/web/net_info.ts +50 -0
  296. package/src/runtimes/web/runtime.ts +174 -0
  297. package/src/runtimes/web/timeline/jsonp_timeline.ts +34 -0
  298. package/src/runtimes/web/transports/transport_connection_initializer.ts +39 -0
  299. package/src/runtimes/web/transports/transports.ts +65 -0
  300. package/src/runtimes/worker/auth/fetch_auth.ts +69 -0
  301. package/src/runtimes/worker/net_info.ts +10 -0
  302. package/src/runtimes/worker/runtime.ts +75 -0
  303. package/src/runtimes/worker/timeline/fetch_timeline.ts +39 -0
  304. package/tsconfig.json +26 -0
  305. package/types/spec/javascripts/helpers/node/mock-dom-dependencies.d.ts +1 -0
  306. package/types/spec/javascripts/helpers/pusher_integration_class.d.ts +4 -0
  307. package/types/src/core/auth/auth_transports.d.ts +9 -0
  308. package/types/src/core/auth/channel_authorizer.d.ts +3 -0
  309. package/types/src/core/auth/deprecated_channel_authorizer.d.ts +18 -0
  310. package/types/src/core/auth/options.d.ts +48 -0
  311. package/types/src/core/auth/user_authenticator.d.ts +3 -0
  312. package/types/src/core/base64.d.ts +1 -0
  313. package/types/src/core/channels/channel.d.ts +23 -0
  314. package/types/src/core/channels/channel_table.d.ts +5 -0
  315. package/types/src/core/channels/channels.d.ts +12 -0
  316. package/types/src/core/channels/encrypted_channel.d.ts +15 -0
  317. package/types/src/core/channels/members.d.ts +14 -0
  318. package/types/src/core/channels/metadata.d.ts +4 -0
  319. package/types/src/core/channels/presence_channel.d.ts +13 -0
  320. package/types/src/core/channels/private_channel.d.ts +5 -0
  321. package/types/src/core/config.d.ts +31 -0
  322. package/types/src/core/connection/callbacks.d.ts +18 -0
  323. package/types/src/core/connection/connection.d.ts +16 -0
  324. package/types/src/core/connection/connection_manager.d.ts +50 -0
  325. package/types/src/core/connection/connection_manager_options.d.ts +11 -0
  326. package/types/src/core/connection/handshake/handshake_payload.d.ts +8 -0
  327. package/types/src/core/connection/handshake/index.d.ts +12 -0
  328. package/types/src/core/connection/protocol/action.d.ts +7 -0
  329. package/types/src/core/connection/protocol/message-types.d.ts +7 -0
  330. package/types/src/core/connection/protocol/protocol.d.ts +10 -0
  331. package/types/src/core/defaults.d.ts +26 -0
  332. package/types/src/core/errors.d.ts +28 -0
  333. package/types/src/core/events/callback.d.ts +5 -0
  334. package/types/src/core/events/callback_registry.d.ts +11 -0
  335. package/types/src/core/events/callback_table.d.ts +5 -0
  336. package/types/src/core/events/dispatcher.d.ts +14 -0
  337. package/types/src/core/http/ajax.d.ts +16 -0
  338. package/types/src/core/http/http_factory.d.ts +13 -0
  339. package/types/src/core/http/http_polling_socket.d.ts +3 -0
  340. package/types/src/core/http/http_request.d.ts +17 -0
  341. package/types/src/core/http/http_socket.d.ts +32 -0
  342. package/types/src/core/http/http_streaming_socket.d.ts +3 -0
  343. package/types/src/core/http/request_hooks.d.ts +6 -0
  344. package/types/src/core/http/socket_hooks.d.ts +8 -0
  345. package/types/src/core/http/state.d.ts +6 -0
  346. package/types/src/core/http/url_location.d.ts +5 -0
  347. package/types/src/core/logger.d.ts +11 -0
  348. package/types/src/core/options.d.ts +34 -0
  349. package/types/src/core/pusher-with-encryption.d.ts +5 -0
  350. package/types/src/core/pusher.d.ts +49 -0
  351. package/types/src/core/reachability.d.ts +5 -0
  352. package/types/src/core/socket.d.ts +12 -0
  353. package/types/src/core/strategies/best_connected_ever_strategy.d.ts +10 -0
  354. package/types/src/core/strategies/delayed_strategy.d.ts +15 -0
  355. package/types/src/core/strategies/first_connected_strategy.d.ts +8 -0
  356. package/types/src/core/strategies/if_strategy.d.ts +10 -0
  357. package/types/src/core/strategies/sequential_strategy.d.ts +16 -0
  358. package/types/src/core/strategies/strategy.d.ts +6 -0
  359. package/types/src/core/strategies/strategy_builder.d.ts +5 -0
  360. package/types/src/core/strategies/strategy_options.d.ts +16 -0
  361. package/types/src/core/strategies/strategy_runner.d.ts +5 -0
  362. package/types/src/core/strategies/transport_strategy.d.ts +15 -0
  363. package/types/src/core/strategies/websocket_prioritized_cached_strategy.d.ts +20 -0
  364. package/types/src/core/timeline/level.d.ts +6 -0
  365. package/types/src/core/timeline/timeline.d.ts +25 -0
  366. package/types/src/core/timeline/timeline_sender.d.ts +13 -0
  367. package/types/src/core/timeline/timeline_transport.d.ts +6 -0
  368. package/types/src/core/transports/assistant_to_the_transport_manager.d.ts +14 -0
  369. package/types/src/core/transports/ping_delay_options.d.ts +6 -0
  370. package/types/src/core/transports/transport.d.ts +8 -0
  371. package/types/src/core/transports/transport_connection.d.ts +35 -0
  372. package/types/src/core/transports/transport_connection_options.d.ts +6 -0
  373. package/types/src/core/transports/transport_hooks.d.ts +13 -0
  374. package/types/src/core/transports/transport_manager.d.ts +14 -0
  375. package/types/src/core/transports/transports_table.d.ts +10 -0
  376. package/types/src/core/transports/url_scheme.d.ts +11 -0
  377. package/types/src/core/transports/url_schemes.d.ts +4 -0
  378. package/types/src/core/user.d.ts +21 -0
  379. package/types/src/core/util.d.ts +8 -0
  380. package/types/src/core/utils/collections.d.ts +18 -0
  381. package/types/src/core/utils/factory.d.ts +29 -0
  382. package/types/src/core/utils/flat_promise.d.ts +6 -0
  383. package/types/src/core/utils/timers/abstract_timer.d.ts +10 -0
  384. package/types/src/core/utils/timers/index.d.ts +9 -0
  385. package/types/src/core/utils/timers/scheduling.d.ts +8 -0
  386. package/types/src/core/utils/timers/timed_callback.d.ts +4 -0
  387. package/types/src/core/utils/url_store.d.ts +4 -0
  388. package/types/src/core/watchlist.d.ts +8 -0
  389. package/types/src/runtimes/interface.d.ts +43 -0
  390. package/types/src/runtimes/isomorphic/auth/xhr_auth.d.ts +3 -0
  391. package/types/src/runtimes/isomorphic/default_strategy.d.ts +5 -0
  392. package/types/src/runtimes/isomorphic/http/http.d.ts +3 -0
  393. package/types/src/runtimes/isomorphic/http/http_xhr_request.d.ts +3 -0
  394. package/types/src/runtimes/isomorphic/runtime.d.ts +2 -0
  395. package/types/src/runtimes/isomorphic/timeline/xhr_timeline.d.ts +6 -0
  396. package/types/src/runtimes/isomorphic/transports/transport_connection_initializer.d.ts +1 -0
  397. package/types/src/runtimes/isomorphic/transports/transports.d.ts +5 -0
  398. package/types/src/runtimes/node/net_info.d.ts +6 -0
  399. package/types/src/runtimes/node/runtime.d.ts +3 -0
  400. package/types/src/runtimes/react-native/net_info.d.ts +8 -0
  401. package/types/src/runtimes/react-native/runtime.d.ts +3 -0
  402. package/types/src/runtimes/web/auth/jsonp_auth.d.ts +3 -0
  403. package/types/src/runtimes/web/browser.d.ts +19 -0
  404. package/types/src/runtimes/web/default_strategy.d.ts +5 -0
  405. package/types/src/runtimes/web/dom/dependencies.d.ts +4 -0
  406. package/types/src/runtimes/web/dom/dependency_loader.d.ts +10 -0
  407. package/types/src/runtimes/web/dom/jsonp_request.d.ts +10 -0
  408. package/types/src/runtimes/web/dom/script_receiver.d.ts +7 -0
  409. package/types/src/runtimes/web/dom/script_receiver_factory.d.ts +10 -0
  410. package/types/src/runtimes/web/dom/script_request.d.ts +9 -0
  411. package/types/src/runtimes/web/http/http.d.ts +2 -0
  412. package/types/src/runtimes/web/http/http_xdomain_request.d.ts +3 -0
  413. package/types/src/runtimes/web/net_info.d.ts +7 -0
  414. package/types/src/runtimes/web/runtime.d.ts +3 -0
  415. package/types/src/runtimes/web/timeline/jsonp_timeline.d.ts +6 -0
  416. package/types/src/runtimes/web/transports/transport_connection_initializer.d.ts +1 -0
  417. package/types/src/runtimes/web/transports/transports.d.ts +2 -0
  418. package/types/src/runtimes/worker/auth/fetch_auth.d.ts +3 -0
  419. package/types/src/runtimes/worker/net_info.d.ts +6 -0
  420. package/types/src/runtimes/worker/runtime.d.ts +3 -0
  421. package/types/src/runtimes/worker/timeline/fetch_timeline.d.ts +6 -0
  422. package/webpack/config.node.js +26 -0
  423. package/webpack/config.react-native.js +35 -0
  424. package/webpack/config.shared.js +50 -0
  425. package/webpack/config.web.js +36 -0
  426. package/webpack/config.worker.js +42 -0
  427. package/webpack/dev.server.js +17 -0
  428. package/webpack/hosting_config.js +6 -0
  429. package/with-encryption/index.d.ts +29 -0
  430. package/with-encryption/index.js +4 -0
  431. package/worker/index.d.ts +29 -0
  432. package/worker/index.js +1 -0
  433. package/worker/with-encryption/index.d.ts +29 -0
  434. package/worker/with-encryption/index.js +1 -0
@@ -0,0 +1,297 @@
1
+ /*
2
+ * ***** BEGIN LICENSE BLOCK *****
3
+ * Copyright (c) 2011-2012 VMware, Inc.
4
+ *
5
+ * For the license see COPYING.
6
+ * ***** END LICENSE BLOCK *****
7
+ */
8
+
9
+ var random_string_chars = 'abcdefghijklmnopqrstuvwxyz0123456789_';
10
+
11
+ utils.random_string = function(length, max) {
12
+ max = max || random_string_chars.length;
13
+ var i, ret = [];
14
+ for(i=0; i < length; i++) {
15
+ ret.push( random_string_chars.substr(Math.floor(Math.random() * max),1) );
16
+ }
17
+ return ret.join('');
18
+ };
19
+
20
+ utils.random_number = function(max) {
21
+ return Math.floor(Math.random() * max);
22
+ };
23
+
24
+ utils.random_number_string = function(max) {
25
+ var t = (''+(max - 1)).length;
26
+ var p = Array(t+1).join('0');
27
+ return (p + utils.random_number(max)).slice(-t);
28
+ };
29
+
30
+ utils.getOrigin = function(url) {
31
+ if (url.match(/^file:\/\//)) {
32
+ // no origin when using file protocol
33
+ return null;
34
+ }
35
+
36
+ var parts = url.match(/^(https?):\/\/([^\/:]+)(:([0-9]+))?/);
37
+ var protocol = parts[1];
38
+ var hostname = parts[2];
39
+ var port = parts[4];
40
+
41
+ if (!port) {
42
+ port = (protocol === "https") ? 443 : 80;
43
+ }
44
+
45
+ return protocol + "://" + hostname + ":" + port;
46
+ };
47
+
48
+ utils.isSameOriginUrl = function(url_a, url_b) {
49
+ // location.origin would do, but it's not always available.
50
+ if (!url_b) url_b = _window.location.href;
51
+
52
+ return utils.getOrigin(url_a) === utils.getOrigin(url_b);
53
+ };
54
+
55
+ utils.objectExtend = function(dst, src) {
56
+ for(var k in src) {
57
+ if (src.hasOwnProperty(k)) {
58
+ dst[k] = src[k];
59
+ }
60
+ }
61
+ return dst;
62
+ };
63
+
64
+ var WPrefix = '_jp';
65
+
66
+ utils.polluteGlobalNamespace = function() {
67
+ if (!(WPrefix in _window)) {
68
+ _window[WPrefix] = {};
69
+ }
70
+ };
71
+
72
+ utils.closeFrame = function (code, reason) {
73
+ return 'c'+JSON.stringify([code, reason]);
74
+ };
75
+
76
+ utils.userSetCode = function (code) {
77
+ return code === 1000 || (code >= 3000 && code <= 4999);
78
+ };
79
+
80
+ // See: http://www.erg.abdn.ac.uk/~gerrit/dccp/notes/ccid2/rto_estimator/
81
+ // and RFC 2988.
82
+ utils.countRTO = function (rtt) {
83
+ var rto;
84
+ if (rtt > 100) {
85
+ rto = 3 * rtt; // rto > 300msec
86
+ } else {
87
+ rto = rtt + 200; // 200msec < rto <= 300msec
88
+ }
89
+ return rto;
90
+ }
91
+
92
+ utils.log = function() {
93
+ if (_window.console && console.log && console.log.apply) {
94
+ console.log.apply(console, arguments);
95
+ }
96
+ };
97
+
98
+ utils.bind = function(fun, that) {
99
+ if (fun.bind) {
100
+ return fun.bind(that);
101
+ } else {
102
+ return function() {
103
+ return fun.apply(that, arguments);
104
+ };
105
+ }
106
+ };
107
+
108
+ utils.flatUrl = function(url) {
109
+ return url.indexOf('?') === -1 && url.indexOf('#') === -1;
110
+ };
111
+
112
+ utils.amendUrl = function(url) {
113
+ var dl = _document.location;
114
+ if (!url) {
115
+ throw new Error('Wrong url for SockJS');
116
+ }
117
+ if (!utils.flatUrl(url)) {
118
+ throw new Error('Only basic urls are supported in SockJS');
119
+ }
120
+
121
+ // '//abc' --> 'http://abc'
122
+ if (url.indexOf('//') === 0) {
123
+ url = dl.protocol + url;
124
+ }
125
+ // '/abc' --> 'http://localhost:80/abc'
126
+ if (url.indexOf('/') === 0) {
127
+ url = dl.protocol + '//' + dl.host + url;
128
+ }
129
+ // strip trailing slashes
130
+ url = url.replace(/[/]+$/,'');
131
+ return url;
132
+ };
133
+
134
+ // IE doesn't support [].indexOf.
135
+ utils.arrIndexOf = function(arr, obj){
136
+ for(var i=0; i < arr.length; i++){
137
+ if(arr[i] === obj){
138
+ return i;
139
+ }
140
+ }
141
+ return -1;
142
+ };
143
+
144
+ utils.arrSkip = function(arr, obj) {
145
+ var idx = utils.arrIndexOf(arr, obj);
146
+ if (idx === -1) {
147
+ return arr.slice();
148
+ } else {
149
+ var dst = arr.slice(0, idx);
150
+ return dst.concat(arr.slice(idx+1));
151
+ }
152
+ };
153
+
154
+ // Via: https://gist.github.com/1133122/2121c601c5549155483f50be3da5305e83b8c5df
155
+ utils.isArray = Array.isArray || function(value) {
156
+ return {}.toString.call(value).indexOf('Array') >= 0
157
+ };
158
+
159
+ utils.delay = function(t, fun) {
160
+ if(typeof t === 'function') {
161
+ fun = t;
162
+ t = 0;
163
+ }
164
+ return setTimeout(fun, t);
165
+ };
166
+
167
+
168
+ // Chars worth escaping, as defined by Douglas Crockford:
169
+ // https://github.com/douglascrockford/JSON-js/blob/47a9882cddeb1e8529e07af9736218075372b8ac/json2.js#L196
170
+ var json_escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
171
+ json_lookup = {
172
+ "\u0000":"\\u0000","\u0001":"\\u0001","\u0002":"\\u0002","\u0003":"\\u0003",
173
+ "\u0004":"\\u0004","\u0005":"\\u0005","\u0006":"\\u0006","\u0007":"\\u0007",
174
+ "\b":"\\b","\t":"\\t","\n":"\\n","\u000b":"\\u000b","\f":"\\f","\r":"\\r",
175
+ "\u000e":"\\u000e","\u000f":"\\u000f","\u0010":"\\u0010","\u0011":"\\u0011",
176
+ "\u0012":"\\u0012","\u0013":"\\u0013","\u0014":"\\u0014","\u0015":"\\u0015",
177
+ "\u0016":"\\u0016","\u0017":"\\u0017","\u0018":"\\u0018","\u0019":"\\u0019",
178
+ "\u001a":"\\u001a","\u001b":"\\u001b","\u001c":"\\u001c","\u001d":"\\u001d",
179
+ "\u001e":"\\u001e","\u001f":"\\u001f","\"":"\\\"","\\":"\\\\",
180
+ "\u007f":"\\u007f","\u0080":"\\u0080","\u0081":"\\u0081","\u0082":"\\u0082",
181
+ "\u0083":"\\u0083","\u0084":"\\u0084","\u0085":"\\u0085","\u0086":"\\u0086",
182
+ "\u0087":"\\u0087","\u0088":"\\u0088","\u0089":"\\u0089","\u008a":"\\u008a",
183
+ "\u008b":"\\u008b","\u008c":"\\u008c","\u008d":"\\u008d","\u008e":"\\u008e",
184
+ "\u008f":"\\u008f","\u0090":"\\u0090","\u0091":"\\u0091","\u0092":"\\u0092",
185
+ "\u0093":"\\u0093","\u0094":"\\u0094","\u0095":"\\u0095","\u0096":"\\u0096",
186
+ "\u0097":"\\u0097","\u0098":"\\u0098","\u0099":"\\u0099","\u009a":"\\u009a",
187
+ "\u009b":"\\u009b","\u009c":"\\u009c","\u009d":"\\u009d","\u009e":"\\u009e",
188
+ "\u009f":"\\u009f","\u00ad":"\\u00ad","\u0600":"\\u0600","\u0601":"\\u0601",
189
+ "\u0602":"\\u0602","\u0603":"\\u0603","\u0604":"\\u0604","\u070f":"\\u070f",
190
+ "\u17b4":"\\u17b4","\u17b5":"\\u17b5","\u200c":"\\u200c","\u200d":"\\u200d",
191
+ "\u200e":"\\u200e","\u200f":"\\u200f","\u2028":"\\u2028","\u2029":"\\u2029",
192
+ "\u202a":"\\u202a","\u202b":"\\u202b","\u202c":"\\u202c","\u202d":"\\u202d",
193
+ "\u202e":"\\u202e","\u202f":"\\u202f","\u2060":"\\u2060","\u2061":"\\u2061",
194
+ "\u2062":"\\u2062","\u2063":"\\u2063","\u2064":"\\u2064","\u2065":"\\u2065",
195
+ "\u2066":"\\u2066","\u2067":"\\u2067","\u2068":"\\u2068","\u2069":"\\u2069",
196
+ "\u206a":"\\u206a","\u206b":"\\u206b","\u206c":"\\u206c","\u206d":"\\u206d",
197
+ "\u206e":"\\u206e","\u206f":"\\u206f","\ufeff":"\\ufeff","\ufff0":"\\ufff0",
198
+ "\ufff1":"\\ufff1","\ufff2":"\\ufff2","\ufff3":"\\ufff3","\ufff4":"\\ufff4",
199
+ "\ufff5":"\\ufff5","\ufff6":"\\ufff6","\ufff7":"\\ufff7","\ufff8":"\\ufff8",
200
+ "\ufff9":"\\ufff9","\ufffa":"\\ufffa","\ufffb":"\\ufffb","\ufffc":"\\ufffc",
201
+ "\ufffd":"\\ufffd","\ufffe":"\\ufffe","\uffff":"\\uffff"};
202
+
203
+ // Some extra characters that Chrome gets wrong, and substitutes with
204
+ // something else on the wire.
205
+ var extra_escapable = /[\x00-\x1f\ud800-\udfff\ufffe\uffff\u0300-\u0333\u033d-\u0346\u034a-\u034c\u0350-\u0352\u0357-\u0358\u035c-\u0362\u0374\u037e\u0387\u0591-\u05af\u05c4\u0610-\u0617\u0653-\u0654\u0657-\u065b\u065d-\u065e\u06df-\u06e2\u06eb-\u06ec\u0730\u0732-\u0733\u0735-\u0736\u073a\u073d\u073f-\u0741\u0743\u0745\u0747\u07eb-\u07f1\u0951\u0958-\u095f\u09dc-\u09dd\u09df\u0a33\u0a36\u0a59-\u0a5b\u0a5e\u0b5c-\u0b5d\u0e38-\u0e39\u0f43\u0f4d\u0f52\u0f57\u0f5c\u0f69\u0f72-\u0f76\u0f78\u0f80-\u0f83\u0f93\u0f9d\u0fa2\u0fa7\u0fac\u0fb9\u1939-\u193a\u1a17\u1b6b\u1cda-\u1cdb\u1dc0-\u1dcf\u1dfc\u1dfe\u1f71\u1f73\u1f75\u1f77\u1f79\u1f7b\u1f7d\u1fbb\u1fbe\u1fc9\u1fcb\u1fd3\u1fdb\u1fe3\u1feb\u1fee-\u1fef\u1ff9\u1ffb\u1ffd\u2000-\u2001\u20d0-\u20d1\u20d4-\u20d7\u20e7-\u20e9\u2126\u212a-\u212b\u2329-\u232a\u2adc\u302b-\u302c\uaab2-\uaab3\uf900-\ufa0d\ufa10\ufa12\ufa15-\ufa1e\ufa20\ufa22\ufa25-\ufa26\ufa2a-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4e\ufff0-\uffff]/g,
206
+ extra_lookup;
207
+
208
+ // JSON Quote string. Use native implementation when possible.
209
+ var JSONQuote = (JSON && JSON.stringify) || function(string) {
210
+ json_escapable.lastIndex = 0;
211
+ if (json_escapable.test(string)) {
212
+ string = string.replace(json_escapable, function(a) {
213
+ return json_lookup[a];
214
+ });
215
+ }
216
+ return '"' + string + '"';
217
+ };
218
+
219
+ // This may be quite slow, so let's delay until user actually uses bad
220
+ // characters.
221
+ var unroll_lookup = function(escapable) {
222
+ var i;
223
+ var unrolled = {}
224
+ var c = []
225
+ for(i=0; i<65536; i++) {
226
+ c.push( String.fromCharCode(i) );
227
+ }
228
+ escapable.lastIndex = 0;
229
+ c.join('').replace(escapable, function (a) {
230
+ unrolled[ a ] = '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
231
+ return '';
232
+ });
233
+ escapable.lastIndex = 0;
234
+ return unrolled;
235
+ };
236
+
237
+ // Quote string, also taking care of unicode characters that browsers
238
+ // often break. Especially, take care of unicode surrogates:
239
+ // http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates
240
+ utils.quote = function(string) {
241
+ var quoted = JSONQuote(string);
242
+
243
+ // In most cases this should be very fast and good enough.
244
+ extra_escapable.lastIndex = 0;
245
+ if(!extra_escapable.test(quoted)) {
246
+ return quoted;
247
+ }
248
+
249
+ if(!extra_lookup) extra_lookup = unroll_lookup(extra_escapable);
250
+
251
+ return quoted.replace(extra_escapable, function(a) {
252
+ return extra_lookup[a];
253
+ });
254
+ }
255
+
256
+ var _all_protocols = [
257
+ 'iframe-eventsource',
258
+ 'iframe-htmlfile',
259
+ 'iframe-xhr-polling',
260
+ 'jsonp-polling'
261
+ ];
262
+
263
+ utils.probeProtocols = function(url) {
264
+ var probed = {};
265
+ for(var i=0; i<_all_protocols.length; i++) {
266
+ var protocol = _all_protocols[i];
267
+ // User can have a typo in protocol name.
268
+ probed[protocol] = SockJS[protocol] &&
269
+ SockJS[protocol].enabled(url);
270
+ }
271
+ return probed;
272
+ };
273
+
274
+ utils.detectProtocols = function(protocols_probed, protocols_whitelist, info) {
275
+ protocols_whitelist = protocols_whitelist || _all_protocols;
276
+
277
+ var protocols = [];
278
+ for (var i = 0; i < protocols_whitelist.length; i++) {
279
+ var protocol = protocols_whitelist[i];
280
+ if (protocols_probed[protocol]) {
281
+ protocols.push(protocol);
282
+ }
283
+ }
284
+ return protocols;
285
+ }
286
+
287
+ utils.defaultOptions = function(){
288
+ return {
289
+ devel: false,
290
+ debug: false,
291
+ protocols_whitelist: [],
292
+ info: undefined,
293
+ rtt: undefined,
294
+ max_window_time: 4000,
295
+ init_window_size: 4096
296
+ };
297
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "name" : "sockjs-client",
3
+ "author" : "Marek Majkowski",
4
+ "version" : "0.0.0-unreleasable",
5
+ "description" : "SockJS-client is a browser JavaScript library that provides a WebSocket-like object. SockJS gives you a coherent, cross-browser, Javascript API which creates a low latency, full duplex, cross-domain communication channel between the browser and the web server.",
6
+ "keywords" : ["websockets", "websocket"],
7
+ "homepage" : "http://sockjs.org",
8
+
9
+ "repository": {"type" : "git",
10
+ "url" : "https://github.com/sockjs/sockjs-client.git"},
11
+ "devDependencies": {
12
+ "uglify-js" : "1.2.5",
13
+ "coffee-script" : "1.2.x",
14
+ "optparse" : "1.0.3",
15
+ "node-static" : "0.5.9"
16
+ },
17
+ "main": "sockjs.js"
18
+ }
@@ -0,0 +1 @@
1
+ 0.3.4
@@ -0,0 +1,8 @@
1
+ import xdrHooks from './http_xdomain_request';
2
+ import HTTP from 'isomorphic/http/http';
3
+
4
+ HTTP.createXDR = function(method, url) {
5
+ return this.createRequest(xdrHooks, method, url);
6
+ };
7
+
8
+ export default HTTP;
@@ -0,0 +1,37 @@
1
+ import HTTPRequest from 'core/http/http_request';
2
+ import RequestHooks from 'core/http/request_hooks';
3
+ import Ajax from 'core/http/ajax';
4
+ import * as Errors from 'core/errors';
5
+
6
+ var hooks: RequestHooks = {
7
+ getRequest: function(socket: HTTPRequest): Ajax {
8
+ var xdr = new (<any>window).XDomainRequest();
9
+ xdr.ontimeout = function() {
10
+ socket.emit('error', new Errors.RequestTimedOut());
11
+ socket.close();
12
+ };
13
+ xdr.onerror = function(e) {
14
+ socket.emit('error', e);
15
+ socket.close();
16
+ };
17
+ xdr.onprogress = function() {
18
+ if (xdr.responseText && xdr.responseText.length > 0) {
19
+ socket.onChunk(200, xdr.responseText);
20
+ }
21
+ };
22
+ xdr.onload = function() {
23
+ if (xdr.responseText && xdr.responseText.length > 0) {
24
+ socket.onChunk(200, xdr.responseText);
25
+ }
26
+ socket.emit('finished', 200);
27
+ socket.close();
28
+ };
29
+ return xdr;
30
+ },
31
+ abortRequest: function(xdr: Ajax) {
32
+ xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;
33
+ xdr.abort();
34
+ }
35
+ };
36
+
37
+ export default hooks;
@@ -0,0 +1,50 @@
1
+ import Reachability from 'core/reachability';
2
+ import { default as EventsDispatcher } from 'core/events/dispatcher';
3
+
4
+ /** Really basic interface providing network availability info.
5
+ *
6
+ * Emits:
7
+ * - online - when browser goes online
8
+ * - offline - when browser goes offline
9
+ */
10
+ export class NetInfo extends EventsDispatcher implements Reachability {
11
+ constructor() {
12
+ super();
13
+ var self = this;
14
+ // This is okay, as IE doesn't support this stuff anyway.
15
+ if (window.addEventListener !== undefined) {
16
+ window.addEventListener(
17
+ 'online',
18
+ function() {
19
+ self.emit('online');
20
+ },
21
+ false
22
+ );
23
+ window.addEventListener(
24
+ 'offline',
25
+ function() {
26
+ self.emit('offline');
27
+ },
28
+ false
29
+ );
30
+ }
31
+ }
32
+
33
+ /** Returns whether browser is online or not
34
+ *
35
+ * Offline means definitely offline (no connection to router).
36
+ * Inverse does NOT mean definitely online (only currently supported in Safari
37
+ * and even there only means the device has a connection to the router).
38
+ *
39
+ * @return {Boolean}
40
+ */
41
+ isOnline(): boolean {
42
+ if (window.navigator.onLine === undefined) {
43
+ return true;
44
+ } else {
45
+ return window.navigator.onLine;
46
+ }
47
+ }
48
+ }
49
+
50
+ export var Network = new NetInfo();
@@ -0,0 +1,174 @@
1
+ import Browser from './browser';
2
+ import { Dependencies, DependenciesReceivers } from './dom/dependencies';
3
+ import { AuthTransport, AuthTransports } from 'core/auth/auth_transports';
4
+ import xhrAuth from 'isomorphic/auth/xhr_auth';
5
+ import jsonpAuth from './auth/jsonp_auth';
6
+ import TimelineTransport from 'core/timeline/timeline_transport';
7
+ import TimelineSender from 'core/timeline/timeline_sender';
8
+ import ScriptRequest from './dom/script_request';
9
+ import JSONPRequest from './dom/jsonp_request';
10
+ import * as Collections from 'core/utils/collections';
11
+ import { ScriptReceivers } from './dom/script_receiver_factory';
12
+ import jsonpTimeline from './timeline/jsonp_timeline';
13
+ import Transports from './transports/transports';
14
+ import Ajax from 'core/http/ajax';
15
+ import { Network } from './net_info';
16
+ import getDefaultStrategy from './default_strategy';
17
+ import transportConnectionInitializer from './transports/transport_connection_initializer';
18
+ import HTTPFactory from './http/http';
19
+ import HTTPRequest from 'core/http/http_request';
20
+
21
+ var Runtime: Browser = {
22
+ // for jsonp auth
23
+ nextAuthCallbackID: 1,
24
+ auth_callbacks: {},
25
+ ScriptReceivers,
26
+ DependenciesReceivers,
27
+ getDefaultStrategy,
28
+ Transports,
29
+ transportConnectionInitializer,
30
+ HTTPFactory,
31
+
32
+ TimelineTransport: jsonpTimeline,
33
+
34
+ getXHRAPI() {
35
+ return window.XMLHttpRequest;
36
+ },
37
+
38
+ getWebSocketAPI() {
39
+ return window.WebSocket || window.MozWebSocket;
40
+ },
41
+
42
+ setup(PusherClass): void {
43
+ (<any>window).Pusher = PusherClass; // JSONp requires Pusher to be in the global scope.
44
+ var initializeOnDocumentBody = () => {
45
+ this.onDocumentBody(PusherClass.ready);
46
+ };
47
+ if (!(<any>window).JSON) {
48
+ Dependencies.load('json2', {}, initializeOnDocumentBody);
49
+ } else {
50
+ initializeOnDocumentBody();
51
+ }
52
+ },
53
+
54
+ getDocument(): Document {
55
+ return document;
56
+ },
57
+
58
+ getProtocol(): string {
59
+ return this.getDocument().location.protocol;
60
+ },
61
+
62
+ getAuthorizers(): AuthTransports {
63
+ return { ajax: xhrAuth, jsonp: jsonpAuth };
64
+ },
65
+
66
+ onDocumentBody(callback: Function) {
67
+ if (document.body) {
68
+ callback();
69
+ } else {
70
+ setTimeout(() => {
71
+ this.onDocumentBody(callback);
72
+ }, 0);
73
+ }
74
+ },
75
+
76
+ createJSONPRequest(url: string, data: any): JSONPRequest {
77
+ return new JSONPRequest(url, data);
78
+ },
79
+
80
+ createScriptRequest(src: string): ScriptRequest {
81
+ return new ScriptRequest(src);
82
+ },
83
+
84
+ getLocalStorage() {
85
+ try {
86
+ return window.localStorage;
87
+ } catch (e) {
88
+ return undefined;
89
+ }
90
+ },
91
+
92
+ createXHR(): Ajax {
93
+ if (this.getXHRAPI()) {
94
+ return this.createXMLHttpRequest();
95
+ } else {
96
+ return this.createMicrosoftXHR();
97
+ }
98
+ },
99
+
100
+ createXMLHttpRequest(): Ajax {
101
+ var Constructor = this.getXHRAPI();
102
+ return new Constructor();
103
+ },
104
+
105
+ createMicrosoftXHR(): Ajax {
106
+ return new ActiveXObject('Microsoft.XMLHTTP');
107
+ },
108
+
109
+ getNetwork() {
110
+ return Network;
111
+ },
112
+
113
+ createWebSocket(url: string): any {
114
+ var Constructor = this.getWebSocketAPI();
115
+ return new Constructor(url);
116
+ },
117
+
118
+ createSocketRequest(method: string, url: string): HTTPRequest {
119
+ if (this.isXHRSupported()) {
120
+ return this.HTTPFactory.createXHR(method, url);
121
+ } else if (this.isXDRSupported(url.indexOf('https:') === 0)) {
122
+ return this.HTTPFactory.createXDR(method, url);
123
+ } else {
124
+ throw 'Cross-origin HTTP requests are not supported';
125
+ }
126
+ },
127
+
128
+ isXHRSupported(): boolean {
129
+ var Constructor = this.getXHRAPI();
130
+ return (
131
+ Boolean(Constructor) && new Constructor().withCredentials !== undefined
132
+ );
133
+ },
134
+
135
+ isXDRSupported(useTLS?: boolean): boolean {
136
+ var protocol = useTLS ? 'https:' : 'http:';
137
+ var documentProtocol = this.getProtocol();
138
+ return (
139
+ Boolean(<any>window['XDomainRequest']) && documentProtocol === protocol
140
+ );
141
+ },
142
+
143
+ addUnloadListener(listener: any) {
144
+ if (window.addEventListener !== undefined) {
145
+ window.addEventListener('unload', listener, false);
146
+ } else if (window.attachEvent !== undefined) {
147
+ window.attachEvent('onunload', listener);
148
+ }
149
+ },
150
+
151
+ removeUnloadListener(listener: any) {
152
+ if (window.addEventListener !== undefined) {
153
+ window.removeEventListener('unload', listener, false);
154
+ } else if (window.detachEvent !== undefined) {
155
+ window.detachEvent('onunload', listener);
156
+ }
157
+ },
158
+
159
+ randomInt(max: number): number {
160
+ /**
161
+ * Return values in the range of [0, 1[
162
+ */
163
+ const random = function() {
164
+ const crypto = window.crypto || window['msCrypto'];
165
+ const random = crypto.getRandomValues(new Uint32Array(1))[0];
166
+
167
+ return random / 2 ** 32;
168
+ };
169
+
170
+ return Math.floor(random() * max);
171
+ }
172
+ };
173
+
174
+ export default Runtime;
@@ -0,0 +1,34 @@
1
+ import TimelineSender from 'core/timeline/timeline_sender';
2
+ import TimelineTransport from 'core/timeline/timeline_transport';
3
+ import Browser from 'runtime';
4
+ import { AuthTransport } from 'core/auth/auth_transports';
5
+ import { ScriptReceivers } from '../dom/script_receiver_factory';
6
+
7
+ var getAgent = function(sender: TimelineSender, useTLS: boolean) {
8
+ return function(data: any, callback: Function) {
9
+ var scheme = 'http' + (useTLS ? 's' : '') + '://';
10
+ var url =
11
+ scheme + (sender.host || sender.options.host) + sender.options.path;
12
+ var request = Browser.createJSONPRequest(url, data);
13
+
14
+ var receiver = Browser.ScriptReceivers.create(function(error, result) {
15
+ ScriptReceivers.remove(receiver);
16
+ request.cleanup();
17
+
18
+ if (result && result.host) {
19
+ sender.host = result.host;
20
+ }
21
+ if (callback) {
22
+ callback(error, result);
23
+ }
24
+ });
25
+ request.send(receiver);
26
+ };
27
+ };
28
+
29
+ var jsonp = {
30
+ name: 'jsonp',
31
+ getAgent
32
+ };
33
+
34
+ export default jsonp;
@@ -0,0 +1,39 @@
1
+ import { Dependencies } from '../dom/dependencies';
2
+
3
+ /** Initializes the transport.
4
+ *
5
+ * Fetches resources if needed and then transitions to initialized.
6
+ */
7
+ export default function() {
8
+ var self = this;
9
+
10
+ self.timeline.info(
11
+ self.buildTimelineMessage({
12
+ transport: self.name + (self.options.useTLS ? 's' : '')
13
+ })
14
+ );
15
+
16
+ if (self.hooks.isInitialized()) {
17
+ self.changeState('initialized');
18
+ } else if (self.hooks.file) {
19
+ self.changeState('initializing');
20
+ Dependencies.load(
21
+ self.hooks.file,
22
+ { useTLS: self.options.useTLS },
23
+ function(error, callback) {
24
+ if (self.hooks.isInitialized()) {
25
+ self.changeState('initialized');
26
+ callback(true);
27
+ } else {
28
+ if (error) {
29
+ self.onError(error);
30
+ }
31
+ self.onClose();
32
+ callback(false);
33
+ }
34
+ }
35
+ );
36
+ } else {
37
+ self.onClose();
38
+ }
39
+ }