@inboxsdk/core 0.2.28-alpha.5 → 0.2.28

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 (669) hide show
  1. package/inboxsdk.js +28 -62
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -5
  4. package/pageWorld.js.map +1 -1
  5. package/src/build/exec.d.ts +0 -1
  6. package/src/build/spawn.d.ts +0 -1
  7. package/src/common/ajax.d.ts +0 -1
  8. package/src/common/cachebust-url.d.ts +0 -1
  9. package/src/common/censorHTMLstring.d.ts +0 -1
  10. package/src/common/censorHTMLtree.d.ts +0 -1
  11. package/src/common/censorJSONTree.d.ts +0 -1
  12. package/src/common/connectivity-test.d.ts +0 -1
  13. package/src/common/defer.d.ts +0 -1
  14. package/src/common/find-parent.d.ts +0 -1
  15. package/src/common/get-extension-id.d.ts +0 -1
  16. package/src/common/get-or-fail.d.ts +0 -1
  17. package/src/common/get-session-id.d.ts +0 -1
  18. package/src/common/get-stack-trace.d.ts +0 -1
  19. package/src/common/html-to-text.d.ts +0 -1
  20. package/src/common/isElementVisible.d.ts +0 -1
  21. package/src/common/load-script.d.ts +0 -1
  22. package/src/common/log-error.d.ts +0 -1
  23. package/src/common/quoted-split.d.ts +0 -1
  24. package/src/common/rate-limit-queuer.d.ts +0 -1
  25. package/src/common/rate-limit.d.ts +0 -1
  26. package/src/common/version.d.ts +0 -1
  27. package/src/inboxsdk-js/check-requirements.js +3 -7
  28. package/src/inboxsdk-js/header.js +0 -1
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +6 -5
  30. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +3 -4
  31. package/src/inboxsdk-js/inboxsdk-REMOTE.js +1 -3
  32. package/src/inboxsdk-js/inboxsdk-TEST.js +3 -4
  33. package/src/inboxsdk-js/inboxsdk.js +39 -33
  34. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +18 -15
  35. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts +0 -1
  36. package/src/inboxsdk.d.ts +27 -10
  37. package/src/injected-js/gmail/constants.d.ts +0 -1
  38. package/src/injected-js/gmail/modify-suggestions.d.ts +0 -1
  39. package/src/injected-js/gmail/modify-suggestions.test.js +9 -8
  40. package/src/injected-js/gmail/setup-gmail-interceptor.js +579 -340
  41. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts +0 -1
  42. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts +0 -1
  43. package/src/injected-js/gmail/sync-compose-processor.d.ts +0 -1
  44. package/src/injected-js/gmail/sync-compose-request-processor.d.ts +0 -1
  45. package/src/injected-js/gmail/sync-compose-request-processor.test.js +49 -39
  46. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +33 -20
  47. package/src/injected-js/gmail/thread-identifier/index.js +93 -57
  48. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +31 -22
  49. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +28 -12
  50. package/src/injected-js/inbox/setupAjaxInterceptor.js +121 -64
  51. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +66 -53
  52. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +36 -20
  53. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  54. package/src/injected-js/injected-logger.d.ts +0 -1
  55. package/src/injected-js/main.js +24 -11
  56. package/src/injected-js/message-metadata-holder.js +82 -52
  57. package/src/injected-js/setup-data-exposer.js +148 -89
  58. package/src/injected-js/setup-error-silencer.js +21 -21
  59. package/src/injected-js/setup-event-reemitter.js +22 -30
  60. package/src/injected-js/setupCustomViewEventAssassin.d.ts +0 -1
  61. package/src/injected-js/setupInboxCustomViewLinkFixer.js +29 -24
  62. package/src/injected-js/setupPushStateListener.js +11 -18
  63. package/src/injected-js/xhr-helper.js +65 -62
  64. package/src/injected-js/xhr-proxy-factory.js +445 -195
  65. package/src/injected-js/xhr-proxy-factory.test.js +991 -824
  66. package/src/platform-implementation-js/constants/nav-item-types.d.ts +0 -1
  67. package/src/platform-implementation-js/constants/router.js +9 -17
  68. package/src/platform-implementation-js/constants/toolbars.js +3 -8
  69. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +136 -115
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -3
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts +0 -1
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +14 -13
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +48 -27
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts +0 -1
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +42 -31
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +40 -30
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts +0 -1
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts +0 -1
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +18 -10
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +28 -21
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +45 -33
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +49 -31
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +65 -58
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +0 -1
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +124 -40
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +22 -17
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts +0 -1
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +11 -10
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +80 -44
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +26 -19
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +147 -71
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +148 -91
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +166 -150
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +120 -70
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +67 -44
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +379 -230
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +307 -121
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +24 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +49 -41
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +40 -30
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +60 -28
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +133 -61
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +110 -83
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +42 -30
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +46 -52
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +3 -13
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +683 -355
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts +0 -1
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts +0 -1
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +0 -4
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts +0 -1
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts +0 -1
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts +0 -1
  116. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts +0 -1
  117. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +93 -77
  118. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts +0 -1
  119. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts +0 -1
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +82 -35
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +94 -44
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +19 -12
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +29 -17
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +797 -391
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +9 -7
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +109 -60
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +135 -95
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +211 -103
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +541 -188
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +135 -67
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +49 -27
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +13 -7
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +22 -9
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +63 -36
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts +0 -1
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +113 -38
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts +0 -1
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +16 -11
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +17 -11
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +11 -8
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +47 -27
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +24 -11
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +111 -59
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts +0 -1
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +14 -15
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +17 -11
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +24 -18
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts +0 -1
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +23 -19
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts +0 -1
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +19 -11
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +376 -141
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +28 -17
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +70 -34
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts +0 -1
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +17 -10
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts +0 -1
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts +0 -1
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +137 -83
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +19 -10
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +1190 -632
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts +0 -1
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +38 -29
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +617 -327
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -34
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +48 -29
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +380 -188
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +194 -104
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts +0 -1
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +811 -382
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +58 -34
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +581 -330
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +277 -123
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +35 -15
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +571 -216
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +336 -152
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +211 -87
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts +0 -1
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts +0 -1
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts +0 -1
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts +0 -1
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +11 -10
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts +0 -1
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts +0 -1
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts +0 -1
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +29 -20
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts +0 -1
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +76 -41
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +99 -45
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +128 -76
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +319 -128
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +78 -45
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +4 -8
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +54 -36
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +53 -35
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +15 -13
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +18 -15
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +13 -14
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +20 -14
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +13 -14
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +67 -35
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +18 -16
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +185 -68
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +56 -28
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +10 -12
  209. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  210. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +35 -24
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +89 -37
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +78 -56
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +32 -26
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +109 -52
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +8 -7
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +20 -16
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +16 -15
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +83 -75
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +823 -531
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +61 -48
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +12 -9
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +19 -12
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +33 -24
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +388 -201
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +265 -249
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +152 -84
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +67 -55
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +65 -43
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +56 -31
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +294 -191
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +45 -32
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +39 -21
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +240 -153
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +150 -75
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +37 -20
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +114 -60
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +65 -47
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +52 -41
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +36 -27
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +80 -52
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +649 -465
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +58 -37
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +26 -14
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +235 -118
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +11 -10
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +46 -28
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +202 -131
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +80 -40
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +61 -35
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +221 -124
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +213 -125
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +126 -104
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +51 -36
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +297 -158
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +35 -21
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +43 -24
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +68 -39
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts +0 -1
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +19 -14
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +35 -27
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts +0 -1
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +22 -16
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts +0 -1
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts +0 -1
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +7 -12
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts +0 -1
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +20 -19
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +306 -197
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +161 -113
  271. package/src/platform-implementation-js/driver-common/update-icon.d.ts +0 -1
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +114 -1
  273. package/src/platform-implementation-js/driver-interfaces/driver.d.ts +0 -5
  274. package/src/platform-implementation-js/driver-interfaces/driver.js +126 -1
  275. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +48 -4
  276. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +29 -1
  277. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +32 -1
  278. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +11 -1
  279. package/src/platform-implementation-js/lib/ErrorCollector.d.ts +0 -1
  280. package/src/platform-implementation-js/lib/Membrane.d.ts +0 -1
  281. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts +0 -1
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.js +41 -43
  283. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +155 -139
  284. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts +0 -1
  285. package/src/platform-implementation-js/lib/common-page-communicator.d.ts +0 -1
  286. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +38 -19
  287. package/src/platform-implementation-js/lib/css-selector-escape.js +3 -7
  288. package/src/platform-implementation-js/lib/delay-asap.d.ts +0 -1
  289. package/src/platform-implementation-js/lib/delay-idle.d.ts +0 -1
  290. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts +0 -1
  291. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +11 -8
  292. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts +0 -1
  293. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts +0 -1
  294. package/src/platform-implementation-js/lib/dom/get-selection.js +52 -23
  295. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts +0 -1
  296. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +101 -69
  297. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +10 -8
  298. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts +0 -1
  299. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts +0 -1
  300. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts +0 -1
  301. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts +0 -1
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts +0 -1
  303. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts +0 -1
  304. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +17 -15
  305. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts +0 -1
  306. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts +0 -1
  307. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +11 -8
  308. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts +0 -1
  309. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts +0 -1
  310. package/src/platform-implementation-js/lib/dom/set-css.js +3 -7
  311. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +11 -9
  312. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +33 -32
  313. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts +0 -1
  314. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts +0 -1
  315. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts +0 -1
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts +0 -1
  317. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +26 -23
  318. package/src/platform-implementation-js/lib/fake-window-resize.d.ts +0 -1
  319. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts +0 -1
  320. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts +0 -1
  321. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +149 -86
  322. package/src/platform-implementation-js/lib/handler-registry.d.ts +0 -1
  323. package/src/platform-implementation-js/lib/idMap.d.ts +0 -1
  324. package/src/platform-implementation-js/lib/imageRequest.d.ts +0 -1
  325. package/src/platform-implementation-js/lib/incrementName.d.ts +0 -1
  326. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts +0 -1
  327. package/src/platform-implementation-js/lib/inject-script.d.ts +0 -1
  328. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +57 -42
  329. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts +0 -1
  330. package/src/platform-implementation-js/lib/is-valid-email.d.ts +0 -1
  331. package/src/platform-implementation-js/lib/isNotNil.d.ts +0 -1
  332. package/src/platform-implementation-js/lib/isStreakAppId.d.ts +0 -1
  333. package/src/platform-implementation-js/lib/logger.d.ts +0 -1
  334. package/src/platform-implementation-js/lib/make-revocable-function.js +21 -19
  335. package/src/platform-implementation-js/lib/make-revocable-function.test.js +22 -20
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +17 -15
  337. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +18 -9
  338. package/src/platform-implementation-js/lib/persistent-queue.d.ts +0 -1
  339. package/src/platform-implementation-js/lib/populateRouteID.js +9 -8
  340. package/src/platform-implementation-js/lib/populateRouteID.test.js +19 -20
  341. package/src/platform-implementation-js/lib/react/ElementContainer.js +20 -23
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +9 -10
  343. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +20 -13
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +18 -13
  345. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +17 -11
  346. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts +0 -1
  347. package/src/platform-implementation-js/lib/shared-style.js +13 -14
  348. package/src/platform-implementation-js/lib/stopper-pool.d.ts +0 -1
  349. package/src/platform-implementation-js/lib/stream-wait-for.d.ts +0 -1
  350. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +17 -18
  351. package/src/platform-implementation-js/lib/toLiveSet.js +15 -17
  352. package/src/platform-implementation-js/lib/wait-for.d.ts +1 -2
  353. package/src/platform-implementation-js/lib/waitForAsync.d.ts +0 -1
  354. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +5 -6
  355. package/src/platform-implementation-js/main.js +24 -9
  356. package/src/platform-implementation-js/namespaces/butter-bar.d.ts +0 -1
  357. package/src/platform-implementation-js/namespaces/compose.js +60 -37
  358. package/src/platform-implementation-js/namespaces/conversations.js +124 -52
  359. package/src/platform-implementation-js/namespaces/global.js +39 -27
  360. package/src/platform-implementation-js/namespaces/keyboard.js +33 -29
  361. package/src/platform-implementation-js/namespaces/lists.js +31 -25
  362. package/src/platform-implementation-js/namespaces/modal.js +28 -34
  363. package/src/platform-implementation-js/namespaces/nav-menu.js +45 -30
  364. package/src/platform-implementation-js/namespaces/router.js +137 -70
  365. package/src/platform-implementation-js/namespaces/search.js +17 -19
  366. package/src/platform-implementation-js/namespaces/toolbars.js +117 -71
  367. package/src/platform-implementation-js/namespaces/user.js +37 -36
  368. package/src/platform-implementation-js/namespaces/widgets.js +61 -54
  369. package/src/platform-implementation-js/platform-implementation.d.ts +0 -2
  370. package/src/platform-implementation-js/platform-implementation.js +226 -98
  371. package/src/platform-implementation-js/views/SimpleElementView.d.ts +0 -1
  372. package/src/platform-implementation-js/views/app-toolbar-button-view.js +47 -26
  373. package/src/platform-implementation-js/views/collapsible-section-view.js +63 -66
  374. package/src/platform-implementation-js/views/compose-button-view.d.ts +0 -1
  375. package/src/platform-implementation-js/views/compose-view.d.ts +0 -1
  376. package/src/platform-implementation-js/views/content-panel-view.js +30 -28
  377. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +44 -21
  378. package/src/platform-implementation-js/views/conversations/custom-message-view.js +104 -44
  379. package/src/platform-implementation-js/views/conversations/message-view.js +202 -131
  380. package/src/platform-implementation-js/views/conversations/thread-view.js +127 -75
  381. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts +0 -1
  382. package/src/platform-implementation-js/views/native-nav-item-view.js +65 -32
  383. package/src/platform-implementation-js/views/nav-item-view.js +115 -51
  384. package/src/platform-implementation-js/views/route-view/custom-route-view.js +20 -25
  385. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  386. package/src/platform-implementation-js/views/route-view/list-route-view.js +52 -30
  387. package/src/platform-implementation-js/views/route-view/route-view.js +35 -24
  388. package/src/platform-implementation-js/views/section-view.js +52 -60
  389. package/src/platform-implementation-js/views/thread-row-view.js +74 -49
  390. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts +0 -1
  391. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts +0 -1
  392. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts +0 -1
  393. package/src/platform-implementation-js/widgets/drawer-view.js +36 -29
  394. package/src/platform-implementation-js/widgets/modal-view.js +68 -39
  395. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  396. package/src/platform-implementation-js/widgets/top-message-bar-view.js +10 -13
  397. package/src/build/exec.d.ts.map +0 -1
  398. package/src/build/exec.js +0 -26
  399. package/src/build/spawn.d.ts.map +0 -1
  400. package/src/build/spawn.js +0 -17
  401. package/src/common/ajax.d.ts.map +0 -1
  402. package/src/common/ajax.js +0 -90
  403. package/src/common/cachebust-url.d.ts.map +0 -1
  404. package/src/common/cachebust-url.js +0 -10
  405. package/src/common/censorHTMLstring.d.ts.map +0 -1
  406. package/src/common/censorHTMLstring.js +0 -37
  407. package/src/common/censorHTMLtree.d.ts.map +0 -1
  408. package/src/common/censorHTMLtree.js +0 -28
  409. package/src/common/censorJSONTree.d.ts.map +0 -1
  410. package/src/common/censorJSONTree.js +0 -15
  411. package/src/common/connectivity-test.d.ts.map +0 -1
  412. package/src/common/connectivity-test.js +0 -21
  413. package/src/common/defer.d.ts.map +0 -1
  414. package/src/common/defer.js +0 -11
  415. package/src/common/find-parent.d.ts.map +0 -1
  416. package/src/common/find-parent.js +0 -10
  417. package/src/common/get-extension-id.d.ts.map +0 -1
  418. package/src/common/get-extension-id.js +0 -7
  419. package/src/common/get-or-fail.d.ts.map +0 -1
  420. package/src/common/get-or-fail.js +0 -8
  421. package/src/common/get-session-id.d.ts.map +0 -1
  422. package/src/common/get-session-id.js +0 -14
  423. package/src/common/get-stack-trace.d.ts.map +0 -1
  424. package/src/common/get-stack-trace.js +0 -6
  425. package/src/common/html-to-text.d.ts.map +0 -1
  426. package/src/common/html-to-text.js +0 -7
  427. package/src/common/isElementVisible.d.ts.map +0 -1
  428. package/src/common/isElementVisible.js +0 -6
  429. package/src/common/load-script.d.ts.map +0 -1
  430. package/src/common/load-script.js +0 -127
  431. package/src/common/log-error.d.ts.map +0 -1
  432. package/src/common/log-error.js +0 -191
  433. package/src/common/quoted-split.d.ts.map +0 -1
  434. package/src/common/quoted-split.js +0 -18
  435. package/src/common/rate-limit-queuer.d.ts.map +0 -1
  436. package/src/common/rate-limit-queuer.js +0 -57
  437. package/src/common/rate-limit.d.ts.map +0 -1
  438. package/src/common/rate-limit.js +0 -14
  439. package/src/common/version.d.ts.map +0 -1
  440. package/src/common/version.js +0 -6
  441. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +0 -1
  442. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -27
  443. package/src/injected-js/gmail/constants.d.ts.map +0 -1
  444. package/src/injected-js/gmail/constants.js +0 -2
  445. package/src/injected-js/gmail/modify-suggestions.d.ts.map +0 -1
  446. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  447. package/src/injected-js/gmail/setup-gmonkey-handler.d.ts.map +0 -1
  448. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  449. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts.map +0 -1
  450. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  451. package/src/injected-js/gmail/sync-compose-processor.d.ts.map +0 -1
  452. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  453. package/src/injected-js/gmail/sync-compose-request-processor.d.ts.map +0 -1
  454. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -110
  455. package/src/injected-js/injected-logger.d.ts.map +0 -1
  456. package/src/injected-js/injected-logger.js +0 -50
  457. package/src/injected-js/setupCustomViewEventAssassin.d.ts.map +0 -1
  458. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  459. package/src/platform-implementation-js/constants/nav-item-types.d.ts.map +0 -1
  460. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  461. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts +0 -5
  462. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts.map +0 -1
  463. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -21
  464. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts +0 -5
  465. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts.map +0 -1
  466. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -28
  467. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +0 -1
  468. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  469. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts.map +0 -1
  470. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  471. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts.map +0 -1
  472. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  473. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts.map +0 -1
  474. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  475. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts.map +0 -1
  476. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  477. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +0 -1
  478. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -4
  479. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts.map +0 -1
  480. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  481. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts +0 -2
  482. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts.map +0 -1
  483. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts.map +0 -1
  484. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  485. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts.map +0 -1
  486. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  487. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +0 -1
  488. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -253
  489. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts.map +0 -1
  490. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -200
  491. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts.map +0 -1
  492. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -533
  493. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts.map +0 -1
  494. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -289
  495. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts.map +0 -1
  496. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  497. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts.map +0 -1
  498. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  499. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts.map +0 -1
  500. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  501. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts +0 -43
  502. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts.map +0 -1
  503. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -126
  504. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts.map +0 -1
  505. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  506. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts.map +0 -1
  507. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  508. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts.map +0 -1
  509. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  510. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts.map +0 -1
  511. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  512. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts.map +0 -1
  513. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  514. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts.map +0 -1
  515. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  516. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts.map +0 -1
  517. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  518. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts.map +0 -1
  519. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  520. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts.map +0 -1
  521. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -5
  522. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +0 -1
  523. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -759
  524. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts.map +0 -1
  525. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  526. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts.map +0 -1
  527. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  528. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts.map +0 -1
  529. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  530. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts.map +0 -1
  531. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -58
  532. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts.map +0 -1
  533. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -55
  534. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts.map +0 -1
  535. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -96
  536. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts.map +0 -1
  537. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  538. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts.map +0 -1
  539. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  540. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts.map +0 -1
  541. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  542. package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts.map +0 -1
  543. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  544. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts.map +0 -1
  545. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  546. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts.map +0 -1
  547. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  548. package/src/platform-implementation-js/driver-common/gmailAjax.d.ts.map +0 -1
  549. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  550. package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts.map +0 -1
  551. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  552. package/src/platform-implementation-js/driver-common/update-icon.d.ts.map +0 -1
  553. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  554. package/src/platform-implementation-js/lib/ErrorCollector.d.ts.map +0 -1
  555. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  556. package/src/platform-implementation-js/lib/Membrane.d.ts.map +0 -1
  557. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  558. package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts.map +0 -1
  559. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  560. package/src/platform-implementation-js/lib/attemptWithRetries.d.ts.map +0 -1
  561. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  562. package/src/platform-implementation-js/lib/common-page-communicator.d.ts.map +0 -1
  563. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  564. package/src/platform-implementation-js/lib/delay-asap.d.ts.map +0 -1
  565. package/src/platform-implementation-js/lib/delay-asap.js +0 -12
  566. package/src/platform-implementation-js/lib/delay-idle.d.ts.map +0 -1
  567. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  568. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts.map +0 -1
  569. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  570. package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts.map +0 -1
  571. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  572. package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts.map +0 -1
  573. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  574. package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts.map +0 -1
  575. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  576. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts.map +0 -1
  577. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  578. package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts.map +0 -1
  579. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  580. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts.map +0 -1
  581. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -28
  582. package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts.map +0 -1
  583. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  584. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts.map +0 -1
  585. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  586. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts.map +0 -1
  587. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  588. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts.map +0 -1
  589. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -39
  590. package/src/platform-implementation-js/lib/dom/parentNodes.d.ts.map +0 -1
  591. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  592. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts.map +0 -1
  593. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  594. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts.map +0 -1
  595. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  596. package/src/platform-implementation-js/lib/dom/simulate-key.d.ts.map +0 -1
  597. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  598. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts.map +0 -1
  599. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  600. package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts.map +0 -1
  601. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  602. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts.map +0 -1
  603. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  604. package/src/platform-implementation-js/lib/fake-window-resize.d.ts.map +0 -1
  605. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  606. package/src/platform-implementation-js/lib/from-event-target-capture.d.ts.map +0 -1
  607. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  608. package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts.map +0 -1
  609. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  610. package/src/platform-implementation-js/lib/handler-registry.d.ts.map +0 -1
  611. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  612. package/src/platform-implementation-js/lib/idMap.d.ts.map +0 -1
  613. package/src/platform-implementation-js/lib/idMap.js +0 -45
  614. package/src/platform-implementation-js/lib/imageRequest.d.ts.map +0 -1
  615. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  616. package/src/platform-implementation-js/lib/incrementName.d.ts.map +0 -1
  617. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  618. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +0 -1
  619. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -14
  620. package/src/platform-implementation-js/lib/inject-script.d.ts.map +0 -1
  621. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  622. package/src/platform-implementation-js/lib/is-valid-app-id.d.ts.map +0 -1
  623. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  624. package/src/platform-implementation-js/lib/is-valid-email.d.ts.map +0 -1
  625. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  626. package/src/platform-implementation-js/lib/isNotNil.d.ts.map +0 -1
  627. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  628. package/src/platform-implementation-js/lib/isStreakAppId.d.ts.map +0 -1
  629. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  630. package/src/platform-implementation-js/lib/logger.d.ts.map +0 -1
  631. package/src/platform-implementation-js/lib/logger.js +0 -441
  632. package/src/platform-implementation-js/lib/persistent-queue.d.ts.map +0 -1
  633. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  634. package/src/platform-implementation-js/lib/safe-event-emitter.d.ts.map +0 -1
  635. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -17
  636. package/src/platform-implementation-js/lib/stopper-pool.d.ts.map +0 -1
  637. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  638. package/src/platform-implementation-js/lib/stream-wait-for.d.ts.map +0 -1
  639. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  640. package/src/platform-implementation-js/lib/wait-for.d.ts.map +0 -1
  641. package/src/platform-implementation-js/lib/wait-for.js +0 -28
  642. package/src/platform-implementation-js/lib/waitForAsync.d.ts.map +0 -1
  643. package/src/platform-implementation-js/lib/waitForAsync.js +0 -19
  644. package/src/platform-implementation-js/namespaces/app-menu.d.ts +0 -38
  645. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +0 -1
  646. package/src/platform-implementation-js/namespaces/app-menu.js +0 -31
  647. package/src/platform-implementation-js/namespaces/butter-bar.d.ts.map +0 -1
  648. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  649. package/src/platform-implementation-js/views/SimpleElementView.d.ts.map +0 -1
  650. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  651. package/src/platform-implementation-js/views/app-menu-item-view.d.ts +0 -23
  652. package/src/platform-implementation-js/views/app-menu-item-view.d.ts.map +0 -1
  653. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -257
  654. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts +0 -50
  655. package/src/platform-implementation-js/views/collapsible-panel-view.d.ts.map +0 -1
  656. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -222
  657. package/src/platform-implementation-js/views/compose-button-view.d.ts.map +0 -1
  658. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  659. package/src/platform-implementation-js/views/compose-view.d.ts.map +0 -1
  660. package/src/platform-implementation-js/views/compose-view.js +0 -312
  661. package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts.map +0 -1
  662. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  663. package/src/platform-implementation-js/views/nav-item-view.d.ts +0 -24
  664. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts.map +0 -1
  665. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  666. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts.map +0 -1
  667. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  668. package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts.map +0 -1
  669. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -122
@@ -1,15 +1,15 @@
1
- "use strict";
1
+ /* @flow */
2
+
3
+ import assert from 'assert';
4
+ import _ from 'lodash';
5
+ import noop from 'lodash/noop';
6
+ import sinon from 'sinon';
7
+ import delay from 'pdelay';
8
+ import MockServer from '../../test/lib/MockServer';
2
9
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _assert = _interopRequireDefault(require("assert"));
5
- var _lodash = _interopRequireDefault(require("lodash"));
6
- var _noop = _interopRequireDefault(require("lodash/noop"));
7
- var _sinon = _interopRequireDefault(require("sinon"));
8
- var _pdelay = _interopRequireDefault(require("pdelay"));
9
- var _MockServer = _interopRequireDefault(require("../../test/lib/MockServer"));
10
- var _xhrProxyFactory = _interopRequireDefault(require("./xhr-proxy-factory"));
11
10
  const testError = new Error('TEST');
12
11
  let logErrorTestCalls = 0;
12
+
13
13
  function logError(error, label) {
14
14
  if (error === testError) {
15
15
  logErrorTestCalls++;
@@ -18,6 +18,7 @@ function logError(error, label) {
18
18
  throw error || new Error(label);
19
19
  }
20
20
  }
21
+
21
22
  function thrower(err) {
22
23
  return function () {
23
24
  if (typeof err == 'string') {
@@ -29,539 +30,550 @@ function thrower(err) {
29
30
  }
30
31
  };
31
32
  }
32
- const server = new _MockServer.default();
33
- server.respondWith({
34
- method: 'GET',
35
- path: '/foo',
36
- headers: {
37
- 'X-Special': 'Value'
38
- }
39
- }, {
40
- status: 200,
41
- response: 'header value received'
42
- });
43
- server.respondWith({
44
- method: 'GET',
45
- path: '/foo',
46
- responseType: 'testing'
47
- }, {
48
- status: 200,
49
- response: 'testing here!'
50
- });
51
- server.respondWith({
52
- method: 'GET',
53
- path: '/foo'
54
- }, {
55
- status: 200,
56
- response: 'Response here!',
57
- partialResponse: 'Response here',
58
- headers: {
59
- 'X-Test': 'Header Value'
60
- }
61
- });
62
- server.respondWith({
63
- method: 'POST',
64
- path: '/foo',
65
- body: 'somedata'
66
- }, {
67
- status: 200,
68
- response: 'body received'
69
- });
70
- server.respondWith({
71
- method: 'POST',
72
- path: '/foo',
73
- body: 'testab'
74
- }, {
75
- status: 200,
76
- response: 'testab received'
77
- });
78
- server.respondWith({
79
- method: 'POST',
80
- path: '/foo'
81
- }, {
82
- status: 200,
83
- response: 'POST request'
84
- });
85
- server.respondWith({
86
- method: 'GET',
87
- path: '/foo2'
88
- }, {
89
- status: 200,
90
- response: 'foo2 response!',
91
- partialResponse: 'foo2 response'
92
- });
93
- server.respondWith({
94
- method: 'GET',
95
- path: '/fooXml'
96
- }, {
97
- status: 200,
98
- response: 'testing here!',
99
- responseXML: {
100
- fakeXml: true
33
+
34
+ import XHRProxyFactory from './xhr-proxy-factory';
35
+
36
+ const server = new MockServer();
37
+ server.respondWith(
38
+ { method: 'GET', path: '/foo', headers: { 'X-Special': 'Value' } },
39
+ { status: 200, response: 'header value received' }
40
+ );
41
+ server.respondWith(
42
+ { method: 'GET', path: '/foo', responseType: 'testing' },
43
+ { status: 200, response: 'testing here!' }
44
+ );
45
+ server.respondWith(
46
+ { method: 'GET', path: '/foo' },
47
+ {
48
+ status: 200,
49
+ response: 'Response here!',
50
+ partialResponse: 'Response here',
51
+ headers: { 'X-Test': 'Header Value' },
101
52
  }
102
- });
103
- server.respondWith({
104
- method: 'GETab',
105
- path: '/fooAB'
106
- }, {
107
- status: 200,
108
- response: 'fooAB requested, data12 received'
109
- });
53
+ );
54
+ server.respondWith(
55
+ { method: 'POST', path: '/foo', body: 'somedata' },
56
+ { status: 200, response: 'body received' }
57
+ );
58
+ server.respondWith(
59
+ { method: 'POST', path: '/foo', body: 'testab' },
60
+ { status: 200, response: 'testab received' }
61
+ );
62
+ server.respondWith(
63
+ { method: 'POST', path: '/foo' },
64
+ { status: 200, response: 'POST request' }
65
+ );
66
+ server.respondWith(
67
+ { method: 'GET', path: '/foo2' },
68
+ { status: 200, response: 'foo2 response!', partialResponse: 'foo2 response' }
69
+ );
70
+ server.respondWith(
71
+ { method: 'GET', path: '/fooXml' },
72
+ { status: 200, response: 'testing here!', responseXML: { fakeXml: true } }
73
+ );
74
+ server.respondWith(
75
+ { method: 'GETab', path: '/fooAB' },
76
+ { status: 200, response: 'fooAB requested, data12 received' }
77
+ );
110
78
  const XMLHttpRequest = server.XMLHttpRequest;
111
- const constructors = {
79
+
80
+ const constructors: { [name: string]: typeof XMLHttpRequest } = {
112
81
  XMLHttpRequest: XMLHttpRequest,
113
- XHRProxy: (0, _xhrProxyFactory.default)(XMLHttpRequest, [], {
114
- logError: logError
115
- })
82
+ XHRProxy: XHRProxyFactory(XMLHttpRequest, [], { logError: logError }),
116
83
  };
117
- constructors['XHRProxy²'] = (0, _xhrProxyFactory.default)(constructors.XHRProxy, [], {
118
- logError: logError
119
- });
120
- constructors['XHRProxy with changers'] = (0, _xhrProxyFactory.default)(XMLHttpRequest, [{
121
- isRelevantTo: () => true,
122
- requestChanger(connection, request) {
123
- return Promise.resolve(request);
124
- },
125
- responseTextChanger(connection, response) {
126
- return Promise.resolve(response);
127
- }
128
- }], {
129
- logError: logError
84
+
85
+ constructors['XHRProxy²'] = XHRProxyFactory(constructors.XHRProxy, [], {
86
+ logError: logError,
130
87
  });
88
+ constructors['XHRProxy with changers'] = XHRProxyFactory(
89
+ XMLHttpRequest,
90
+ [
91
+ {
92
+ isRelevantTo: () => true,
93
+ requestChanger(connection, request) {
94
+ return Promise.resolve(request);
95
+ },
96
+ responseTextChanger(connection, response) {
97
+ return Promise.resolve(response);
98
+ },
99
+ },
100
+ ],
101
+ { logError: logError }
102
+ );
103
+
131
104
  beforeEach(() => {
132
105
  logErrorTestCalls = 0;
133
106
  });
134
107
 
135
108
  // Test both the mock and the instrumented version
136
- ['XMLHttpRequest', 'XHRProxy', 'XHRProxy²', 'XHRProxy with changers'].forEach(XHRName => {
137
- describe(XHRName, () => {
138
- let XHRConstructor;
139
- let xhr;
140
- beforeEach(() => {
141
- XHRConstructor = constructors[XHRName];
142
- xhr = new XHRConstructor();
143
- });
144
- ['onreadystatechange', 'addEventListener'].forEach(method => {
145
- describe(method, () => {
146
- it('should call all states and work on re-used object', done => {
147
- const calledForState = {
148
- '1': 0,
149
- '2': 0,
150
- '3': 0,
151
- '4': 0
152
- };
153
- let runCount = 0;
154
- const listener = function (event) {
155
- _assert.default.strictEqual(this, xhr, 'check for correct this binding');
156
- _assert.default.strictEqual(event.target, this, 'check for correct event target');
157
- calledForState[this.readyState]++;
158
- if (this.readyState >= 2) {
159
- _assert.default.equal(this.status, 200, 'check http status');
160
- }
161
- if (this.readyState >= 3) {
162
- _assert.default.equal(this.responseText, this.response, 'check responseText');
163
- } else {
164
- let responseText;
165
- try {
166
- responseText = this.responseText;
167
- } catch (e) {
168
- responseText = '';
109
+ ['XMLHttpRequest', 'XHRProxy', 'XHRProxy²', 'XHRProxy with changers'].forEach(
110
+ (XHRName) => {
111
+ describe(XHRName, () => {
112
+ let XHRConstructor: typeof XMLHttpRequest;
113
+ let xhr: XMLHttpRequest;
114
+ beforeEach(() => {
115
+ XHRConstructor = constructors[XHRName];
116
+ xhr = new XHRConstructor();
117
+ });
118
+
119
+ ['onreadystatechange', 'addEventListener'].forEach((method) => {
120
+ describe(method, () => {
121
+ it('should call all states and work on re-used object', (done) => {
122
+ const calledForState = { '1': 0, '2': 0, '3': 0, '4': 0 };
123
+ let runCount = 0;
124
+ const listener = function (event: Object) {
125
+ assert.strictEqual(this, xhr, 'check for correct this binding');
126
+ assert.strictEqual(
127
+ event.target,
128
+ this,
129
+ 'check for correct event target'
130
+ );
131
+ calledForState[this.readyState]++;
132
+
133
+ if (this.readyState >= 2) {
134
+ assert.equal(this.status, 200, 'check http status');
169
135
  }
170
- _assert.default.strictEqual(responseText, '');
171
- }
172
- if (this.readyState == 3) {
173
- if (XHRName === 'XHRProxy with changers') {
174
- // No progress text should be given when a responseTextChanger is in use.
175
- _assert.default.strictEqual(this.response, '');
136
+ if (this.readyState >= 3) {
137
+ assert.equal(
138
+ this.responseText,
139
+ this.response,
140
+ 'check responseText'
141
+ );
176
142
  } else {
177
- _assert.default.strictEqual(this.response, 'Response here');
143
+ let responseText;
144
+ try {
145
+ responseText = this.responseText;
146
+ } catch (e) {
147
+ responseText = '';
148
+ }
149
+ assert.strictEqual(responseText, '');
150
+ }
151
+ if (this.readyState == 3) {
152
+ if (XHRName === 'XHRProxy with changers') {
153
+ // No progress text should be given when a responseTextChanger is in use.
154
+ assert.strictEqual(this.response, '');
155
+ } else {
156
+ assert.strictEqual(this.response, 'Response here');
157
+ }
158
+ }
159
+ if (this.readyState == 4) {
160
+ runCount++;
161
+ assert.equal(this.response, 'Response here!');
162
+ assert.deepEqual(
163
+ calledForState,
164
+ {
165
+ '1': runCount,
166
+ '2': runCount,
167
+ '3': runCount,
168
+ '4': runCount,
169
+ },
170
+ 'check that listener was called for each state'
171
+ );
172
+ if (runCount === 1) {
173
+ start();
174
+ } else {
175
+ done();
176
+ }
178
177
  }
178
+ };
179
+ if (method == 'onreadystatechange') {
180
+ xhr.onreadystatechange = listener;
181
+ } else if (method == 'addEventListener') {
182
+ xhr.addEventListener('readystatechange', listener);
183
+ }
184
+ function start() {
185
+ xhr.open('GET', '/foo');
186
+ assert.equal(xhr.readyState, 1, 'readyState check');
187
+ xhr.send();
188
+ }
189
+ assert.equal(xhr.readyState, 0, 'readyState check');
190
+ start();
191
+ });
192
+ });
193
+ });
194
+
195
+ describe('multiple event listeners', () => {
196
+ it('should fire both together', (done) => {
197
+ let simpleFired = false,
198
+ addedFired = false;
199
+ xhr.onreadystatechange = function (event) {
200
+ simpleFired = true;
201
+ };
202
+ xhr.addEventListener('readystatechange', function (event: Object) {
203
+ addedFired = true;
204
+ });
205
+ xhr.addEventListener('readystatechange', function (event: Object) {
206
+ if (this.readyState == 4) {
207
+ assert(
208
+ simpleFired && addedFired,
209
+ 'check that both listeners fired'
210
+ );
211
+ done();
212
+ }
213
+ });
214
+ xhr.open('GET', '/foo');
215
+ xhr.send();
216
+ });
217
+ });
218
+
219
+ describe('removeEventListener', () => {
220
+ it('should work', (done) => {
221
+ const badListener = function (event: Object) {
222
+ throw new Error('this listener should have been removed');
223
+ };
224
+ xhr.addEventListener('readystatechange', badListener);
225
+ xhr.addEventListener('readystatechange', function (event: Object) {
226
+ if (this.readyState == 4) {
227
+ done();
179
228
  }
229
+ });
230
+ xhr.removeEventListener('readystatechange', badListener);
231
+ xhr.open('GET', '/foo');
232
+ xhr.send();
233
+ });
234
+ });
235
+
236
+ describe('abort', () => {
237
+ it('should work after send', (done) => {
238
+ let finishCount = 0;
239
+ xhr.onreadystatechange = function () {
180
240
  if (this.readyState == 4) {
181
- runCount++;
182
- _assert.default.equal(this.response, 'Response here!');
183
- _assert.default.deepEqual(calledForState, {
184
- '1': runCount,
185
- '2': runCount,
186
- '3': runCount,
187
- '4': runCount
188
- }, 'check that listener was called for each state');
189
- if (runCount === 1) {
190
- start();
241
+ if (finishCount++ === 0) {
242
+ assert.equal(
243
+ this.responseText,
244
+ 'Response here',
245
+ 'response check'
246
+ );
247
+ xhr.open('GET', '/foo2');
248
+ xhr.send();
191
249
  } else {
250
+ assert.equal(
251
+ this.responseText,
252
+ 'foo2 response!',
253
+ 'response check'
254
+ );
192
255
  done();
193
256
  }
194
257
  }
195
258
  };
196
- if (method == 'onreadystatechange') {
197
- xhr.onreadystatechange = listener;
198
- } else if (method == 'addEventListener') {
199
- xhr.addEventListener('readystatechange', listener);
200
- }
201
- function start() {
202
- xhr.open('GET', '/foo');
203
- _assert.default.equal(xhr.readyState, 1, 'readyState check');
204
- xhr.send();
205
- }
206
- _assert.default.equal(xhr.readyState, 0, 'readyState check');
207
- start();
259
+ xhr.open('GET', '/foo');
260
+ xhr.send();
261
+ xhr.abort();
208
262
  });
209
263
  });
210
- });
211
- describe('multiple event listeners', () => {
212
- it('should fire both together', done => {
213
- let simpleFired = false,
214
- addedFired = false;
215
- xhr.onreadystatechange = function (event) {
216
- simpleFired = true;
217
- };
218
- xhr.addEventListener('readystatechange', function (event) {
219
- addedFired = true;
220
- });
221
- xhr.addEventListener('readystatechange', function (event) {
222
- if (this.readyState == 4) {
223
- (0, _assert.default)(simpleFired && addedFired, 'check that both listeners fired');
264
+
265
+ describe('open', () => {
266
+ it('should cancel active request but without abort event', (done) => {
267
+ xhr.onreadystatechange = sinon.spy();
268
+ xhr.onabort = xhr.onerror = xhr.onload = xhr.onloadend = thrower();
269
+ xhr.open('GET', '/foo');
270
+ assert.strictEqual(xhr.readyState, 1);
271
+ assert(xhr.onreadystatechange.calledOnce);
272
+ xhr.onreadystatechange = thrower(
273
+ 'readyStateChange should not happen here'
274
+ );
275
+ xhr.send();
276
+ xhr.open('GET', '/foo2');
277
+ xhr.send();
278
+ const stateCounts = { '1': 0, '2': 0, '3': 0, '4': 0 };
279
+ xhr.onreadystatechange = function () {
280
+ stateCounts[xhr.readyState]++;
281
+ };
282
+ xhr.onload = function () {
283
+ assert.deepEqual(stateCounts, { '1': 0, '2': 1, '3': 1, '4': 1 });
284
+ assert.strictEqual(xhr.responseText, 'foo2 response!');
224
285
  done();
225
- }
286
+ };
287
+ xhr.onloadend = noop;
226
288
  });
227
- xhr.open('GET', '/foo');
228
- xhr.send();
229
289
  });
230
- });
231
- describe('removeEventListener', () => {
232
- it('should work', done => {
233
- const badListener = function (event) {
234
- throw new Error('this listener should have been removed');
235
- };
236
- xhr.addEventListener('readystatechange', badListener);
237
- xhr.addEventListener('readystatechange', function (event) {
238
- if (this.readyState == 4) {
239
- done();
240
- }
290
+
291
+ describe('sync', () => {
292
+ it('can do synchronous requests', () => {
293
+ const onloadSpy = sinon.spy();
294
+ xhr.onload = function () {
295
+ assert.strictEqual(this, xhr, 'this check');
296
+ onloadSpy();
297
+ };
298
+ xhr.open('GET', '/foo', false);
299
+ xhr.send();
300
+ assert.equal(xhr.readyState, 4, 'readyState check');
301
+ assert.equal(xhr.responseText, 'Response here!', 'response check');
302
+ assert(onloadSpy.calledOnce, 'check onload was ran');
303
+ });
304
+
305
+ it('async arg as undefined counts as false', () => {
306
+ const onloadSpy = sinon.spy();
307
+ xhr.onload = function () {
308
+ assert.strictEqual(this, xhr, 'this check');
309
+ onloadSpy();
310
+ };
311
+ xhr.open('GET', '/foo', undefined);
312
+ xhr.send();
313
+ assert.equal(xhr.readyState, 4, 'readyState check');
314
+ assert.equal(xhr.responseText, 'Response here!', 'response check');
315
+ assert(onloadSpy.calledOnce, 'check onload was ran');
241
316
  });
242
- xhr.removeEventListener('readystatechange', badListener);
243
- xhr.open('GET', '/foo');
244
- xhr.send();
245
317
  });
246
- });
247
- describe('abort', () => {
248
- it('should work after send', done => {
249
- let finishCount = 0;
250
- xhr.onreadystatechange = function () {
251
- if (this.readyState == 4) {
252
- if (finishCount++ === 0) {
253
- _assert.default.equal(this.responseText, 'Response here', 'response check');
254
- xhr.open('GET', '/foo2');
255
- xhr.send();
256
- } else {
257
- _assert.default.equal(this.responseText, 'foo2 response!', 'response check');
258
- done();
259
- }
318
+
319
+ describe('events', () => {
320
+ it('readystatechange', (done) => {
321
+ const step = _.after(2, done);
322
+ function checkEvent(event: Event) {
323
+ assert.strictEqual(event.target, xhr);
324
+ step();
260
325
  }
261
- };
262
- xhr.open('GET', '/foo');
263
- xhr.send();
264
- xhr.abort();
265
- });
266
- });
267
- describe('open', () => {
268
- it('should cancel active request but without abort event', done => {
269
- xhr.onreadystatechange = _sinon.default.spy();
270
- xhr.onabort = xhr.onerror = xhr.onload = xhr.onloadend = thrower();
271
- xhr.open('GET', '/foo');
272
- _assert.default.strictEqual(xhr.readyState, 1);
273
- (0, _assert.default)(xhr.onreadystatechange.calledOnce);
274
- xhr.onreadystatechange = thrower('readyStateChange should not happen here');
275
- xhr.send();
276
- xhr.open('GET', '/foo2');
277
- xhr.send();
278
- const stateCounts = {
279
- '1': 0,
280
- '2': 0,
281
- '3': 0,
282
- '4': 0
283
- };
284
- xhr.onreadystatechange = function () {
285
- stateCounts[xhr.readyState]++;
286
- };
287
- xhr.onload = function () {
288
- _assert.default.deepEqual(stateCounts, {
289
- '1': 0,
290
- '2': 1,
291
- '3': 1,
292
- '4': 1
326
+ xhr.onreadystatechange = function (event) {
327
+ if (this.readyState == 4) {
328
+ step();
329
+ }
330
+ };
331
+ xhr.addEventListener('readystatechange', function (event: Object) {
332
+ if (this.readyState == 4) {
333
+ step();
334
+ }
293
335
  });
294
- _assert.default.strictEqual(xhr.responseText, 'foo2 response!');
295
- done();
296
- };
297
- xhr.onloadend = _noop.default;
298
- });
299
- });
300
- describe('sync', () => {
301
- it('can do synchronous requests', () => {
302
- const onloadSpy = _sinon.default.spy();
303
- xhr.onload = function () {
304
- _assert.default.strictEqual(this, xhr, 'this check');
305
- onloadSpy();
306
- };
307
- xhr.open('GET', '/foo', false);
308
- xhr.send();
309
- _assert.default.equal(xhr.readyState, 4, 'readyState check');
310
- _assert.default.equal(xhr.responseText, 'Response here!', 'response check');
311
- (0, _assert.default)(onloadSpy.calledOnce, 'check onload was ran');
312
- });
313
- it('async arg as undefined counts as false', () => {
314
- const onloadSpy = _sinon.default.spy();
315
- xhr.onload = function () {
316
- _assert.default.strictEqual(this, xhr, 'this check');
317
- onloadSpy();
318
- };
319
- xhr.open('GET', '/foo', undefined);
320
- xhr.send();
321
- _assert.default.equal(xhr.readyState, 4, 'readyState check');
322
- _assert.default.equal(xhr.responseText, 'Response here!', 'response check');
323
- (0, _assert.default)(onloadSpy.calledOnce, 'check onload was ran');
324
- });
325
- });
326
- describe('events', () => {
327
- it('readystatechange', done => {
328
- const step = _lodash.default.after(2, done);
329
- function checkEvent(event) {
330
- _assert.default.strictEqual(event.target, xhr);
331
- step();
332
- }
333
- xhr.onreadystatechange = function (event) {
334
- if (this.readyState == 4) {
336
+ xhr.open('GET', '/foo');
337
+ xhr.send();
338
+ });
339
+
340
+ it('load', (done) => {
341
+ const step = _.after(2, done);
342
+ function checkEvent(event: Object) {
343
+ assert.strictEqual(event.target, xhr);
344
+ assert.strictEqual(typeof event.lengthComputable, 'boolean');
345
+ assert.strictEqual(typeof event.loaded, 'number');
346
+ assert.strictEqual(typeof event.total, 'number');
335
347
  step();
336
348
  }
337
- };
338
- xhr.addEventListener('readystatechange', function (event) {
339
- if (this.readyState == 4) {
349
+ xhr.onload = checkEvent;
350
+ xhr.addEventListener('load', checkEvent);
351
+ xhr.onerror = thrower();
352
+ xhr.open('GET', '/foo');
353
+ xhr.send();
354
+ });
355
+
356
+ it('loadstart', (done) => {
357
+ const step = _.after(2, done);
358
+ function checkEvent(event: Object) {
359
+ assert.strictEqual(event.target, xhr);
360
+ assert.strictEqual(event.lengthComputable, false);
361
+ assert.strictEqual(typeof event.loaded, 'number');
362
+ assert.strictEqual(typeof event.total, 'number');
340
363
  step();
341
364
  }
365
+ xhr.onloadstart = checkEvent;
366
+ xhr.addEventListener('loadstart', checkEvent);
367
+ xhr.open('GET', '/foo');
368
+ xhr.send();
369
+ xhr.abort();
370
+ });
371
+
372
+ it('loadend', (done) => {
373
+ const step = _.after(4, done);
374
+ function checkEvent(event: Object) {
375
+ assert.strictEqual(event.target, xhr);
376
+ assert.strictEqual(typeof event.lengthComputable, 'boolean');
377
+ assert.strictEqual(typeof event.loaded, 'number');
378
+ assert.strictEqual(typeof event.total, 'number');
379
+ step();
380
+ }
381
+ xhr.onload = checkEvent;
382
+ xhr.addEventListener('load', checkEvent);
383
+ xhr.onloadend = checkEvent;
384
+ xhr.addEventListener('loadend', checkEvent);
385
+ xhr.open('GET', '/foo');
386
+ xhr.send();
387
+ });
388
+
389
+ it('error', (done) => {
390
+ const step = _.after(4, done);
391
+ function checkEvent(event: Object) {
392
+ assert.strictEqual(event.target, xhr);
393
+ assert.strictEqual(typeof event.lengthComputable, 'boolean');
394
+ assert.strictEqual(typeof event.loaded, 'number');
395
+ assert.strictEqual(typeof event.total, 'number');
396
+ step();
397
+ }
398
+ xhr.onload = thrower();
399
+ xhr.onloadend = step.bind(null, null);
400
+ xhr.addEventListener('loadend', step.bind(null, null));
401
+ xhr.onerror = checkEvent;
402
+ xhr.addEventListener('error', checkEvent);
403
+ xhr.open('GET', '/non-existent-page');
404
+ xhr.send();
405
+ });
406
+
407
+ it('abort', (done) => {
408
+ const step = _.after(2, done);
409
+ function checkEvent(event: Object) {
410
+ assert.strictEqual(event.target, xhr);
411
+ assert.strictEqual(typeof event.lengthComputable, 'boolean');
412
+ assert.strictEqual(typeof event.loaded, 'number');
413
+ assert.strictEqual(typeof event.total, 'number');
414
+ step();
415
+ }
416
+ xhr.onabort = checkEvent;
417
+ xhr.addEventListener('abort', checkEvent);
418
+ xhr.open('GET', '/foo');
419
+ xhr.send();
420
+ xhr.abort();
342
421
  });
343
- xhr.open('GET', '/foo');
344
- xhr.send();
345
- });
346
- it('load', done => {
347
- const step = _lodash.default.after(2, done);
348
- function checkEvent(event) {
349
- _assert.default.strictEqual(event.target, xhr);
350
- _assert.default.strictEqual(typeof event.lengthComputable, 'boolean');
351
- _assert.default.strictEqual(typeof event.loaded, 'number');
352
- _assert.default.strictEqual(typeof event.total, 'number');
353
- step();
354
- }
355
- xhr.onload = checkEvent;
356
- xhr.addEventListener('load', checkEvent);
357
- xhr.onerror = thrower();
358
- xhr.open('GET', '/foo');
359
- xhr.send();
360
- });
361
- it('loadstart', done => {
362
- const step = _lodash.default.after(2, done);
363
- function checkEvent(event) {
364
- _assert.default.strictEqual(event.target, xhr);
365
- _assert.default.strictEqual(event.lengthComputable, false);
366
- _assert.default.strictEqual(typeof event.loaded, 'number');
367
- _assert.default.strictEqual(typeof event.total, 'number');
368
- step();
369
- }
370
- xhr.onloadstart = checkEvent;
371
- xhr.addEventListener('loadstart', checkEvent);
372
- xhr.open('GET', '/foo');
373
- xhr.send();
374
- xhr.abort();
375
- });
376
- it('loadend', done => {
377
- const step = _lodash.default.after(4, done);
378
- function checkEvent(event) {
379
- _assert.default.strictEqual(event.target, xhr);
380
- _assert.default.strictEqual(typeof event.lengthComputable, 'boolean');
381
- _assert.default.strictEqual(typeof event.loaded, 'number');
382
- _assert.default.strictEqual(typeof event.total, 'number');
383
- step();
384
- }
385
- xhr.onload = checkEvent;
386
- xhr.addEventListener('load', checkEvent);
387
- xhr.onloadend = checkEvent;
388
- xhr.addEventListener('loadend', checkEvent);
389
- xhr.open('GET', '/foo');
390
- xhr.send();
391
- });
392
- it('error', done => {
393
- const step = _lodash.default.after(4, done);
394
- function checkEvent(event) {
395
- _assert.default.strictEqual(event.target, xhr);
396
- _assert.default.strictEqual(typeof event.lengthComputable, 'boolean');
397
- _assert.default.strictEqual(typeof event.loaded, 'number');
398
- _assert.default.strictEqual(typeof event.total, 'number');
399
- step();
400
- }
401
- xhr.onload = thrower();
402
- xhr.onloadend = step.bind(null, null);
403
- xhr.addEventListener('loadend', step.bind(null, null));
404
- xhr.onerror = checkEvent;
405
- xhr.addEventListener('error', checkEvent);
406
- xhr.open('GET', '/non-existent-page');
407
- xhr.send();
408
- });
409
- it('abort', done => {
410
- const step = _lodash.default.after(2, done);
411
- function checkEvent(event) {
412
- _assert.default.strictEqual(event.target, xhr);
413
- _assert.default.strictEqual(typeof event.lengthComputable, 'boolean');
414
- _assert.default.strictEqual(typeof event.loaded, 'number');
415
- _assert.default.strictEqual(typeof event.total, 'number');
416
- step();
417
- }
418
- xhr.onabort = checkEvent;
419
- xhr.addEventListener('abort', checkEvent);
420
- xhr.open('GET', '/foo');
421
- xhr.send();
422
- xhr.abort();
423
- });
424
- });
425
- describe('post', () => {
426
- it('works', done => {
427
- xhr.open('POST', '/foo');
428
- xhr.onload = function () {
429
- _assert.default.strictEqual(xhr.responseText, 'body received');
430
- done();
431
- };
432
- xhr.send('somedata');
433
422
  });
434
- it('works without body', done => {
435
- xhr.open('POST', '/foo');
436
- xhr.onload = function () {
437
- _assert.default.strictEqual(xhr.responseText, 'POST request');
438
- done();
439
- };
440
- xhr.send();
423
+
424
+ describe('post', () => {
425
+ it('works', (done) => {
426
+ xhr.open('POST', '/foo');
427
+ xhr.onload = function () {
428
+ assert.strictEqual(xhr.responseText, 'body received');
429
+ done();
430
+ };
431
+ xhr.send('somedata');
432
+ });
433
+
434
+ it('works without body', (done) => {
435
+ xhr.open('POST', '/foo');
436
+ xhr.onload = function () {
437
+ assert.strictEqual(xhr.responseText, 'POST request');
438
+ done();
439
+ };
440
+ xhr.send();
441
+ });
441
442
  });
442
- });
443
- describe('properties', () => {
444
- it('has the necessary constants', () => {
445
- _assert.default.strictEqual(XHRConstructor.UNSENT, 0);
446
- _assert.default.strictEqual(XHRConstructor.OPENED, 1);
447
- _assert.default.strictEqual(XHRConstructor.HEADERS_RECEIVED, 2);
448
- _assert.default.strictEqual(XHRConstructor.LOADING, 3);
449
- _assert.default.strictEqual(XHRConstructor.DONE, 4);
450
- _assert.default.strictEqual(xhr.UNSENT, 0);
451
- _assert.default.strictEqual(xhr.OPENED, 1);
452
- _assert.default.strictEqual(xhr.HEADERS_RECEIVED, 2);
453
- _assert.default.strictEqual(xhr.LOADING, 3);
454
- _assert.default.strictEqual(xhr.DONE, 4);
443
+
444
+ describe('properties', () => {
445
+ it('has the necessary constants', () => {
446
+ assert.strictEqual((XHRConstructor: any).UNSENT, 0);
447
+ assert.strictEqual((XHRConstructor: any).OPENED, 1);
448
+ assert.strictEqual((XHRConstructor: any).HEADERS_RECEIVED, 2);
449
+ assert.strictEqual((XHRConstructor: any).LOADING, 3);
450
+ assert.strictEqual((XHRConstructor: any).DONE, 4);
451
+
452
+ assert.strictEqual((xhr: any).UNSENT, 0);
453
+ assert.strictEqual((xhr: any).OPENED, 1);
454
+ assert.strictEqual((xhr: any).HEADERS_RECEIVED, 2);
455
+ assert.strictEqual((xhr: any).LOADING, 3);
456
+ assert.strictEqual((xhr: any).DONE, 4);
457
+ });
455
458
  });
456
- });
457
- describe('responseType', () => {
458
- it('supports non-text values', done => {
459
- xhr.responseType = 'testing';
460
- xhr.onreadystatechange = function () {
461
- if (this.readyState == 4) {
462
- _assert.default.equal(xhr.response, 'testing here!');
463
- let rt = '';
464
- try {
465
- rt = xhr.responseText;
466
- } catch (e) {
467
- // ignore
459
+
460
+ describe('responseType', () => {
461
+ it('supports non-text values', (done) => {
462
+ xhr.responseType = 'testing';
463
+ xhr.onreadystatechange = function () {
464
+ if (this.readyState == 4) {
465
+ assert.equal(xhr.response, 'testing here!');
466
+ let rt = '';
467
+ try {
468
+ rt = xhr.responseText;
469
+ } catch (e) {
470
+ // ignore
471
+ }
472
+ assert.strictEqual(rt, '', 'responseText check');
473
+ done();
468
474
  }
469
- _assert.default.strictEqual(rt, '', 'responseText check');
475
+ };
476
+ xhr.open('GET', '/foo');
477
+ xhr.send();
478
+ });
479
+
480
+ it('supports responseXml', (done) => {
481
+ xhr.onload = function () {
482
+ assert.equal(xhr.responseText, 'testing here!');
483
+ assert.deepEqual(xhr.responseXML, { fakeXml: true });
470
484
  done();
471
- }
472
- };
473
- xhr.open('GET', '/foo');
474
- xhr.send();
475
- });
476
- it('supports responseXml', done => {
477
- xhr.onload = function () {
478
- _assert.default.equal(xhr.responseText, 'testing here!');
479
- _assert.default.deepEqual(xhr.responseXML, {
480
- fakeXml: true
481
- });
482
- done();
483
- };
484
- xhr.open('GET', '/fooXml');
485
- xhr.send();
485
+ };
486
+ xhr.open('GET', '/fooXml');
487
+ xhr.send();
488
+ });
486
489
  });
487
- });
488
- describe('getResponseHeader', () => {
489
- it('should work', done => {
490
- xhr.onreadystatechange = function () {
491
- if (this.readyState < 2) {
492
- _assert.default.strictEqual(xhr.getResponseHeader('X-Test'), null);
493
- } else {
494
- _assert.default.equal(this.getResponseHeader('X-Test'), 'Header Value');
495
- }
496
- if (this.readyState == 4) {
497
- done();
498
- }
499
- };
500
- _assert.default.strictEqual(xhr.getResponseHeader('X-Test'), null);
501
- xhr.open('GET', '/foo');
502
- _assert.default.strictEqual(xhr.getResponseHeader('X-Test'), null);
503
- xhr.send();
504
- _assert.default.strictEqual(xhr.getResponseHeader('X-Test'), null);
490
+
491
+ describe('getResponseHeader', () => {
492
+ it('should work', (done) => {
493
+ xhr.onreadystatechange = function () {
494
+ if (this.readyState < 2) {
495
+ assert.strictEqual(xhr.getResponseHeader('X-Test'), null);
496
+ } else {
497
+ assert.equal(this.getResponseHeader('X-Test'), 'Header Value');
498
+ }
499
+ if (this.readyState == 4) {
500
+ done();
501
+ }
502
+ };
503
+ assert.strictEqual(xhr.getResponseHeader('X-Test'), null);
504
+ xhr.open('GET', '/foo');
505
+ assert.strictEqual(xhr.getResponseHeader('X-Test'), null);
506
+ xhr.send();
507
+ assert.strictEqual(xhr.getResponseHeader('X-Test'), null);
508
+ });
505
509
  });
506
- });
507
- describe('getAllResponseHeaders', () => {
508
- it('should work', done => {
509
- xhr.onreadystatechange = function () {
510
- if (this.readyState < 2) {
511
- _assert.default.strictEqual(xhr.getAllResponseHeaders(), null);
512
- } else {
513
- _assert.default.equal(this.getAllResponseHeaders().trim().toLowerCase(), 'x-test: header value');
514
- }
515
- if (this.readyState == 4) {
516
- done();
517
- }
518
- };
519
- _assert.default.strictEqual(xhr.getAllResponseHeaders(), null);
520
- xhr.open('GET', '/foo');
521
- _assert.default.strictEqual(xhr.getAllResponseHeaders(), null);
522
- xhr.send();
523
- _assert.default.strictEqual(xhr.getAllResponseHeaders(), null);
510
+
511
+ describe('getAllResponseHeaders', () => {
512
+ it('should work', (done) => {
513
+ xhr.onreadystatechange = function () {
514
+ if (this.readyState < 2) {
515
+ assert.strictEqual(xhr.getAllResponseHeaders(), null);
516
+ } else {
517
+ assert.equal(
518
+ this.getAllResponseHeaders().trim().toLowerCase(),
519
+ 'x-test: header value'
520
+ );
521
+ }
522
+ if (this.readyState == 4) {
523
+ done();
524
+ }
525
+ };
526
+ assert.strictEqual(xhr.getAllResponseHeaders(), null);
527
+ xhr.open('GET', '/foo');
528
+ assert.strictEqual(xhr.getAllResponseHeaders(), null);
529
+ xhr.send();
530
+ assert.strictEqual(xhr.getAllResponseHeaders(), null);
531
+ });
524
532
  });
525
- });
526
- describe('setRequestHeader', () => {
527
- it('should work', done => {
528
- xhr.onreadystatechange = function () {
529
- if (this.readyState == 4) {
530
- _assert.default.equal(this.response, 'header value received');
531
- done();
532
- }
533
- };
534
- xhr.open('GET', '/foo');
535
- xhr.setRequestHeader('X-Special', 'Value');
536
- xhr.send();
533
+
534
+ describe('setRequestHeader', () => {
535
+ it('should work', (done) => {
536
+ xhr.onreadystatechange = function () {
537
+ if (this.readyState == 4) {
538
+ assert.equal(this.response, 'header value received');
539
+ done();
540
+ }
541
+ };
542
+ xhr.open('GET', '/foo');
543
+ xhr.setRequestHeader('X-Special', 'Value');
544
+ xhr.send();
545
+ });
537
546
  });
538
- });
539
- describe('prototype', () => {
540
- it('should be present', () => {
541
- (0, _assert.default)('prototype' in XHRConstructor);
542
- (0, _assert.default)(typeof XHRConstructor.prototype.open === 'function');
543
- (0, _assert.default)(typeof XHRConstructor.prototype.send === 'function');
547
+
548
+ describe('prototype', () => {
549
+ it('should be present', () => {
550
+ assert('prototype' in XHRConstructor);
551
+ assert(typeof XHRConstructor.prototype.open === 'function');
552
+ assert(typeof XHRConstructor.prototype.send === 'function');
553
+ });
544
554
  });
545
- });
546
- describe('MailTrack compatibility', () => {
547
- // MailTrack redefines js_frame's XMLHttpRequest.prototype.open to do
548
- // some stuff, and then looks up the main frame's
549
- // XMLHttpRequest.prototype.open and calls it.
550
- // This can result in XHRProxy.prototype.open being called with `this`
551
- // set to a real XMLHttpRequest object.
552
555
 
553
- it('works with MailTrack', done => {
554
- const realXhr = new XMLHttpRequest();
555
- realXhr.onload = () => done();
556
- XHRConstructor.prototype.open.call(realXhr, 'GET', '/foo');
557
- realXhr.send();
556
+ describe('MailTrack compatibility', () => {
557
+ // MailTrack redefines js_frame's XMLHttpRequest.prototype.open to do
558
+ // some stuff, and then looks up the main frame's
559
+ // XMLHttpRequest.prototype.open and calls it.
560
+ // This can result in XHRProxy.prototype.open being called with `this`
561
+ // set to a real XMLHttpRequest object.
562
+
563
+ it('works with MailTrack', (done) => {
564
+ const realXhr = new XMLHttpRequest();
565
+ realXhr.onload = () => done();
566
+ XHRConstructor.prototype.open.call(realXhr, 'GET', '/foo');
567
+ realXhr.send();
568
+ });
558
569
  });
559
570
  });
560
- });
561
- });
571
+ }
572
+ );
573
+
562
574
  describe('XHRProxyFactory', () => {
563
575
  describe('wrappers', () => {
564
- it('should be used with responseTextChanger present and work on re-used object', done => {
576
+ it('should be used with responseTextChanger present and work on re-used object', (done) => {
565
577
  let origResponse;
566
578
  let originalSendBodyLoggerRan = 0;
567
579
  let originalResponseTextLoggerRan = 0;
@@ -570,241 +582,325 @@ describe('XHRProxyFactory', () => {
570
582
  let firstAfterListenersRan = 0;
571
583
  let rsc4Ran = 0;
572
584
  let runCount = 0;
573
- function checkConnectionParam(connection, expectStatus, expectOriginalSendBody) {
574
- _assert.default.equal(connection._flag, true, 'connection object check');
585
+ function checkConnectionParam(
586
+ connection,
587
+ expectStatus,
588
+ expectOriginalSendBody
589
+ ) {
590
+ assert.equal((connection: any)._flag, true, 'connection object check');
575
591
  if (expectStatus) {
576
- _assert.default.equal(connection.status, 200, 'status check');
577
- _assert.default.equal(connection.responseType, 'text', 'responseType check');
592
+ assert.equal((connection: any).status, 200, 'status check');
593
+ assert.equal(
594
+ (connection: any).responseType,
595
+ 'text',
596
+ 'responseType check'
597
+ );
578
598
  }
579
- _assert.default.equal(connection.originalSendBody, expectOriginalSendBody ? 'body test' : undefined, 'body check');
580
- _assert.default.equal(connection.method, 'GET', 'method check');
581
- _assert.default.equal(connection.url, '/foo', 'url check');
582
- _assert.default.deepEqual(connection.params, {}, 'params check');
599
+ assert.equal(
600
+ connection.originalSendBody,
601
+ expectOriginalSendBody ? 'body test' : undefined,
602
+ 'body check'
603
+ );
604
+ assert.equal(connection.method, 'GET', 'method check');
605
+ assert.equal(connection.url, '/foo', 'url check');
606
+ assert.deepEqual(connection.params, {}, 'params check');
583
607
  }
584
- const wrappers = [{
585
- isRelevantTo(connection) {
586
- _assert.default.strictEqual(this, wrappers[0], 'this check');
587
- (0, _assert.default)(!connection._flag, 'check that connection object is fresh');
588
- connection._flag = true;
589
- checkConnectionParam(connection, false, false);
590
- return connection.url == '/foo';
591
- },
592
- originalSendBodyLogger(connection, body) {
593
- _assert.default.strictEqual(this, wrappers[0], 'this check');
594
- checkConnectionParam(connection, false, true);
595
- _assert.default.equal(body, 'body test', 'body check');
596
- originalSendBodyLoggerRan++;
608
+ const wrappers = [
609
+ {
610
+ isRelevantTo(connection) {
611
+ assert.strictEqual(this, wrappers[0], 'this check');
612
+ assert(
613
+ !(connection: any)._flag,
614
+ 'check that connection object is fresh'
615
+ );
616
+ (connection: any)._flag = true;
617
+ checkConnectionParam(connection, false, false);
618
+ return connection.url == '/foo';
619
+ },
620
+ originalSendBodyLogger(connection, body) {
621
+ assert.strictEqual(this, wrappers[0], 'this check');
622
+ checkConnectionParam(connection, false, true);
623
+ assert.equal(body, 'body test', 'body check');
624
+ originalSendBodyLoggerRan++;
625
+ },
626
+ originalResponseTextLogger(connection, response) {
627
+ assert.strictEqual(this, wrappers[0], 'this check');
628
+ checkConnectionParam(connection, true, true);
629
+ originalResponseTextLoggerRan++;
630
+ origResponse = response;
631
+ },
632
+ responseTextChanger(connection, response) {
633
+ assert.strictEqual(this, wrappers[0], 'this check');
634
+ checkConnectionParam(connection, true, true);
635
+ responseTextChangerRan++;
636
+ assert.equal(response, origResponse);
637
+ return response + '-modified' + runCount;
638
+ },
639
+ finalResponseTextLogger(connection, response) {
640
+ assert.strictEqual(this, wrappers[0], 'this check');
641
+ checkConnectionParam(connection, true, true);
642
+ finalResponseTextLoggerRan++;
643
+ assert.equal(response, origResponse + '-modified' + runCount);
644
+ },
645
+ afterListeners(connection) {
646
+ firstAfterListenersRan++;
647
+ },
597
648
  },
598
- originalResponseTextLogger(connection, response) {
599
- _assert.default.strictEqual(this, wrappers[0], 'this check');
600
- checkConnectionParam(connection, true, true);
601
- originalResponseTextLoggerRan++;
602
- origResponse = response;
603
- },
604
- responseTextChanger(connection, response) {
605
- _assert.default.strictEqual(this, wrappers[0], 'this check');
606
- checkConnectionParam(connection, true, true);
607
- responseTextChangerRan++;
608
- _assert.default.equal(response, origResponse);
609
- return response + '-modified' + runCount;
610
- },
611
- finalResponseTextLogger(connection, response) {
612
- _assert.default.strictEqual(this, wrappers[0], 'this check');
613
- checkConnectionParam(connection, true, true);
614
- finalResponseTextLoggerRan++;
615
- _assert.default.equal(response, origResponse + '-modified' + runCount);
616
- },
617
- afterListeners(connection) {
618
- firstAfterListenersRan++;
619
- }
620
- }, {
621
- isRelevantTo(connection) {
622
- return true;
623
- },
624
- originalSendBodyLogger(connection, body) {
625
- originalSendBodyLoggerRan++;
626
- },
627
- originalResponseTextLogger(connection, response) {
628
- originalResponseTextLoggerRan++;
629
- _assert.default.equal(response, origResponse);
630
- },
631
- finalResponseTextLogger(connection, response) {
632
- finalResponseTextLoggerRan++;
633
- _assert.default.equal(response, origResponse + '-modified' + runCount);
634
- },
635
- afterListeners(connection) {
636
- _assert.default.equal(firstAfterListenersRan, 1 * runCount, 'check that afterListeners ran correct number of times');
637
- _assert.default.equal(rsc4Ran, 1 * runCount, 'check that readystatechange listener ran correct number of times');
638
- if (runCount === 1) {
639
- start();
640
- } else {
641
- done();
642
- }
643
- }
644
- }, {
645
- isRelevantTo(connection) {
646
- return false;
647
- },
648
- originalSendBodyLogger(connection, body) {
649
- throw new Error('should not run');
650
- },
651
- originalResponseTextLogger(connection, response) {
652
- throw new Error('should not run');
653
- },
654
- responseTextChanger(connection, response) {
655
- throw new Error('should not run');
649
+ {
650
+ isRelevantTo(connection) {
651
+ return true;
652
+ },
653
+ originalSendBodyLogger(connection, body) {
654
+ originalSendBodyLoggerRan++;
655
+ },
656
+ originalResponseTextLogger(connection, response) {
657
+ originalResponseTextLoggerRan++;
658
+ assert.equal(response, origResponse);
659
+ },
660
+ finalResponseTextLogger(connection, response) {
661
+ finalResponseTextLoggerRan++;
662
+ assert.equal(response, origResponse + '-modified' + runCount);
663
+ },
664
+ afterListeners(connection) {
665
+ assert.equal(
666
+ firstAfterListenersRan,
667
+ 1 * runCount,
668
+ 'check that afterListeners ran correct number of times'
669
+ );
670
+ assert.equal(
671
+ rsc4Ran,
672
+ 1 * runCount,
673
+ 'check that readystatechange listener ran correct number of times'
674
+ );
675
+ if (runCount === 1) {
676
+ start();
677
+ } else {
678
+ done();
679
+ }
680
+ },
656
681
  },
657
- finalResponseTextLogger(connection, response) {
658
- throw new Error('should not run');
682
+ {
683
+ isRelevantTo(connection) {
684
+ return false;
685
+ },
686
+ originalSendBodyLogger(connection, body) {
687
+ throw new Error('should not run');
688
+ },
689
+ originalResponseTextLogger(connection, response) {
690
+ throw new Error('should not run');
691
+ },
692
+ responseTextChanger(connection, response) {
693
+ throw new Error('should not run');
694
+ },
695
+ finalResponseTextLogger(connection, response) {
696
+ throw new Error('should not run');
697
+ },
698
+ afterListeners(connection) {
699
+ throw new Error('should not run');
700
+ },
659
701
  },
660
- afterListeners(connection) {
661
- throw new Error('should not run');
662
- }
663
- }];
664
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
665
- logError: logError
702
+ ];
703
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
704
+ logError: logError,
666
705
  });
667
706
  const xhr = new XHRProxy();
668
707
  xhr.onreadystatechange = function () {
669
708
  if (this.readyState == 3) {
670
- _assert.default.equal(this.response, '', 'check response is empty until end when responseTextChanger is used');
671
- _assert.default.equal(this.responseText, this.response, 'check responseText');
709
+ assert.equal(
710
+ this.response,
711
+ '',
712
+ 'check response is empty until end when responseTextChanger is used'
713
+ );
714
+ assert.equal(this.responseText, this.response, 'check responseText');
672
715
  }
673
716
  if (this.readyState == 4) {
674
717
  runCount++;
675
- _assert.default.equal(originalSendBodyLoggerRan, 2 * runCount, 'check that originalSendBodyLogger ran correct number of times');
676
- _assert.default.equal(originalResponseTextLoggerRan, 2 * runCount, 'check that originalResponseTextLogger ran correct number of times');
677
- _assert.default.equal(responseTextChangerRan, 1 * runCount, 'check that responseTextChanger ran correct number of times');
678
- _assert.default.equal(finalResponseTextLoggerRan, 2 * runCount, 'check that finalResponseTextLogger ran correct number of times');
679
- _assert.default.equal(firstAfterListenersRan, 1 * (runCount - 1), 'check that afterListeners ran correct number of times');
680
- _assert.default.equal(this.response, origResponse + '-modified' + (runCount - 1), 'check that response was modified');
681
- _assert.default.equal(this.responseText, this.response, 'check responseText');
718
+ assert.equal(
719
+ originalSendBodyLoggerRan,
720
+ 2 * runCount,
721
+ 'check that originalSendBodyLogger ran correct number of times'
722
+ );
723
+ assert.equal(
724
+ originalResponseTextLoggerRan,
725
+ 2 * runCount,
726
+ 'check that originalResponseTextLogger ran correct number of times'
727
+ );
728
+ assert.equal(
729
+ responseTextChangerRan,
730
+ 1 * runCount,
731
+ 'check that responseTextChanger ran correct number of times'
732
+ );
733
+ assert.equal(
734
+ finalResponseTextLoggerRan,
735
+ 2 * runCount,
736
+ 'check that finalResponseTextLogger ran correct number of times'
737
+ );
738
+ assert.equal(
739
+ firstAfterListenersRan,
740
+ 1 * (runCount - 1),
741
+ 'check that afterListeners ran correct number of times'
742
+ );
743
+ assert.equal(
744
+ this.response,
745
+ origResponse + '-modified' + (runCount - 1),
746
+ 'check that response was modified'
747
+ );
748
+ assert.equal(this.responseText, this.response, 'check responseText');
682
749
  rsc4Ran++;
683
750
  // done is in afterListener wrapper
684
751
  }
685
752
  };
686
-
687
753
  function start() {
688
754
  xhr.open('GET', '/foo');
689
755
  xhr.send('body test');
690
756
  }
691
757
  start();
692
758
  });
693
- it('should be used without responseTextChanger present', done => {
759
+
760
+ it('should be used without responseTextChanger present', (done) => {
694
761
  let origResponse;
695
762
  let originalResponseTextLoggerRan = 0;
696
763
  let finalResponseTextLoggerRan = 0;
697
- const wrappers = [{
698
- isRelevantTo(connection) {
699
- return true;
764
+ const wrappers = [
765
+ {
766
+ isRelevantTo(connection) {
767
+ return true;
768
+ },
769
+ originalResponseTextLogger(connection, response) {
770
+ assert.strictEqual(this, wrappers[0], 'this check');
771
+ originalResponseTextLoggerRan++;
772
+ origResponse = response;
773
+ },
774
+ finalResponseTextLogger(connection, response) {
775
+ assert.strictEqual(this, wrappers[0], 'this check');
776
+ finalResponseTextLoggerRan++;
777
+ assert.equal(response, origResponse);
778
+ },
700
779
  },
701
- originalResponseTextLogger(connection, response) {
702
- _assert.default.strictEqual(this, wrappers[0], 'this check');
703
- originalResponseTextLoggerRan++;
704
- origResponse = response;
780
+ {
781
+ isRelevantTo(connection) {
782
+ return false;
783
+ },
784
+ responseTextChanger(connection, response) {
785
+ throw new Error('should not run');
786
+ },
705
787
  },
706
- finalResponseTextLogger(connection, response) {
707
- _assert.default.strictEqual(this, wrappers[0], 'this check');
708
- finalResponseTextLoggerRan++;
709
- _assert.default.equal(response, origResponse);
710
- }
711
- }, {
712
- isRelevantTo(connection) {
713
- return false;
714
- },
715
- responseTextChanger(connection, response) {
716
- throw new Error('should not run');
717
- }
718
- }];
719
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
720
- logError: logError
788
+ ];
789
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
790
+ logError: logError,
721
791
  });
722
792
  const xhr = new XHRProxy();
723
793
  xhr.onreadystatechange = function () {
724
- _assert.default.equal(this.responseText, this.response, 'check responseText');
794
+ assert.equal(this.responseText, this.response, 'check responseText');
725
795
  if (this.readyState == 3) {
726
- _assert.default.equal(this.response, 'Response here', 'check response');
796
+ assert.equal(this.response, 'Response here', 'check response');
727
797
  }
728
798
  if (this.readyState == 4) {
729
- _assert.default.equal(this.response, 'Response here!', 'check response');
730
- _assert.default.equal(originalResponseTextLoggerRan, 1, 'check that originalResponseTextLogger ran correct number of times');
731
- _assert.default.equal(finalResponseTextLoggerRan, 1, 'check that finalResponseTextLogger ran correct number of times');
799
+ assert.equal(this.response, 'Response here!', 'check response');
800
+ assert.equal(
801
+ originalResponseTextLoggerRan,
802
+ 1,
803
+ 'check that originalResponseTextLogger ran correct number of times'
804
+ );
805
+ assert.equal(
806
+ finalResponseTextLoggerRan,
807
+ 1,
808
+ 'check that finalResponseTextLogger ran correct number of times'
809
+ );
732
810
  done();
733
811
  }
734
812
  };
735
813
  xhr.open('GET', '/foo');
736
814
  xhr.send();
737
815
  });
738
- it('should not have errors prevent event listeners', done => {
816
+
817
+ it('should not have errors prevent event listeners', (done) => {
739
818
  let loggerRan = 0;
740
- const wrappers = [{
741
- isRelevantTo(connection) {
742
- throw testError;
743
- },
744
- originalResponseTextLogger(connection, response) {
745
- throw new Error('should not run');
746
- }
747
- }, {
748
- isRelevantTo(connection) {
749
- return true;
819
+ const wrappers = [
820
+ {
821
+ isRelevantTo(connection) {
822
+ throw testError;
823
+ },
824
+ originalResponseTextLogger(connection, response) {
825
+ throw new Error('should not run');
826
+ },
750
827
  },
751
- originalSendBodyLogger(connection, body) {
752
- throw testError;
828
+ {
829
+ isRelevantTo(connection) {
830
+ return true;
831
+ },
832
+ originalSendBodyLogger(connection, body) {
833
+ throw testError;
834
+ },
835
+ requestChanger(connection, body) {
836
+ throw testError;
837
+ },
838
+ originalResponseTextLogger(connection, response) {
839
+ loggerRan++;
840
+ throw testError;
841
+ },
842
+ responseTextChanger(connection, response) {
843
+ throw testError;
844
+ },
845
+ finalResponseTextLogger(connection, response) {
846
+ throw testError;
847
+ },
753
848
  },
754
- requestChanger(connection, body) {
755
- throw testError;
849
+ {
850
+ isRelevantTo(connection) {
851
+ return true;
852
+ },
853
+ originalSendBodyLogger(connection, body) {
854
+ throw testError;
855
+ },
856
+ originalResponseTextLogger(connection, response) {
857
+ throw testError;
858
+ },
859
+ finalResponseTextLogger(connection, response) {
860
+ throw testError;
861
+ },
756
862
  },
757
- originalResponseTextLogger(connection, response) {
758
- loggerRan++;
759
- throw testError;
760
- },
761
- responseTextChanger(connection, response) {
762
- throw testError;
763
- },
764
- finalResponseTextLogger(connection, response) {
765
- throw testError;
766
- }
767
- }, {
768
- isRelevantTo(connection) {
769
- return true;
770
- },
771
- originalSendBodyLogger(connection, body) {
772
- throw testError;
773
- },
774
- originalResponseTextLogger(connection, response) {
775
- throw testError;
776
- },
777
- finalResponseTextLogger(connection, response) {
778
- throw testError;
779
- }
780
- }];
781
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
782
- logError: logError
863
+ ];
864
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
865
+ logError: logError,
783
866
  });
784
867
  const xhr = new XHRProxy();
785
868
  xhr.onreadystatechange = function () {
786
869
  if (this.readyState == 4) {
787
- _assert.default.equal(logErrorTestCalls, 9, 'check that logError was called correct number of times');
788
- _assert.default.equal(loggerRan, 1, 'check that originalResponseTextLogger was attempted');
789
- _assert.default.equal(this.response, 'Response here!', 'check response');
870
+ assert.equal(
871
+ logErrorTestCalls,
872
+ 9,
873
+ 'check that logError was called correct number of times'
874
+ );
875
+ assert.equal(
876
+ loggerRan,
877
+ 1,
878
+ 'check that originalResponseTextLogger was attempted'
879
+ );
880
+ assert.equal(this.response, 'Response here!', 'check response');
790
881
  done();
791
882
  }
792
883
  };
793
884
  xhr.open('GET', '/foo');
794
885
  xhr.send();
795
886
  });
796
- it('can have wrappers changed after construction', done => {
797
- const wrappers = [{
798
- isRelevantTo(connection) {
799
- throw new Error('should not run');
887
+
888
+ it('can have wrappers changed after construction', (done) => {
889
+ const wrappers = [
890
+ {
891
+ isRelevantTo(connection) {
892
+ throw new Error('should not run');
893
+ },
894
+ originalResponseTextLogger(connection, response) {
895
+ throw new Error('should not run');
896
+ },
800
897
  },
801
- originalResponseTextLogger(connection, response) {
802
- throw new Error('should not run');
803
- }
804
- }];
805
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
806
- logError: logError
898
+ ];
899
+
900
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
901
+ logError: logError,
807
902
  });
903
+
808
904
  let loggerRan = 0;
809
905
  wrappers.length = 0;
810
906
  wrappers.push({
@@ -813,98 +909,130 @@ describe('XHRProxyFactory', () => {
813
909
  },
814
910
  originalResponseTextLogger(connection, response) {
815
911
  loggerRan++;
816
- }
912
+ },
817
913
  });
914
+
818
915
  const xhr = new XHRProxy();
819
916
  xhr.onreadystatechange = function () {
820
917
  if (this.readyState == 4) {
821
- _assert.default.equal(loggerRan, 1, 'check that originalResponseTextLogger has run');
918
+ assert.equal(
919
+ loggerRan,
920
+ 1,
921
+ 'check that originalResponseTextLogger has run'
922
+ );
822
923
  done();
823
924
  }
824
925
  };
825
926
  xhr.open('GET', '/foo');
826
927
  xhr.send();
827
928
  });
828
- it('should support promises for responseTextChanger', done => {
929
+
930
+ it('should support promises for responseTextChanger', (done) => {
829
931
  let origResponse;
830
932
  let responseTextChangerRan = 0;
831
933
  let finalResponseTextLoggerRan = 0;
832
934
  function checkConnectionParam(connection) {
833
- _assert.default.equal(connection._flag, true, 'connection object check');
935
+ assert.equal((connection: any)._flag, true, 'connection object check');
834
936
  }
835
- const wrappers = [{
836
- isRelevantTo(connection) {
837
- _assert.default.strictEqual(this, wrappers[0], 'this check');
838
- connection._flag = true;
839
- checkConnectionParam(connection);
840
- return connection.url == '/foo';
937
+ const wrappers = [
938
+ {
939
+ isRelevantTo(connection) {
940
+ assert.strictEqual(this, wrappers[0], 'this check');
941
+ (connection: any)._flag = true;
942
+ checkConnectionParam(connection);
943
+ return connection.url == '/foo';
944
+ },
945
+ originalResponseTextLogger(connection, response) {
946
+ assert.strictEqual(this, wrappers[0], 'this check');
947
+ checkConnectionParam(connection);
948
+ origResponse = response;
949
+ },
950
+ async responseTextChanger(connection, response) {
951
+ assert.strictEqual(this, wrappers[0], 'this check');
952
+ await delay(1);
953
+ checkConnectionParam(connection);
954
+ responseTextChangerRan++;
955
+ assert.equal(response, origResponse);
956
+ assert.equal(
957
+ xhr.readyState,
958
+ 3,
959
+ 'check that readyState is still LOADING'
960
+ );
961
+ return response + '-modified';
962
+ },
963
+ finalResponseTextLogger(connection, response) {
964
+ assert.strictEqual(this, wrappers[0], 'this check');
965
+ checkConnectionParam(connection);
966
+ finalResponseTextLoggerRan++;
967
+ assert.equal(response, origResponse + '-modified');
968
+ },
841
969
  },
842
- originalResponseTextLogger(connection, response) {
843
- _assert.default.strictEqual(this, wrappers[0], 'this check');
844
- checkConnectionParam(connection);
845
- origResponse = response;
846
- },
847
- async responseTextChanger(connection, response) {
848
- _assert.default.strictEqual(this, wrappers[0], 'this check');
849
- await (0, _pdelay.default)(1);
850
- checkConnectionParam(connection);
851
- responseTextChangerRan++;
852
- _assert.default.equal(response, origResponse);
853
- _assert.default.equal(xhr.readyState, 3, 'check that readyState is still LOADING');
854
- return response + '-modified';
970
+ {
971
+ isRelevantTo(connection) {
972
+ return true;
973
+ },
974
+ finalResponseTextLogger(connection, response) {
975
+ finalResponseTextLoggerRan++;
976
+ assert.equal(response, origResponse + '-modified');
977
+ },
855
978
  },
856
- finalResponseTextLogger(connection, response) {
857
- _assert.default.strictEqual(this, wrappers[0], 'this check');
858
- checkConnectionParam(connection);
859
- finalResponseTextLoggerRan++;
860
- _assert.default.equal(response, origResponse + '-modified');
861
- }
862
- }, {
863
- isRelevantTo(connection) {
864
- return true;
979
+ {
980
+ isRelevantTo(connection) {
981
+ return false;
982
+ },
983
+ requestChanger() {
984
+ throw new Error('should not run');
985
+ },
986
+ responseTextChanger(connection, response) {
987
+ throw new Error('should not run');
988
+ },
989
+ finalResponseTextLogger(connection, response) {
990
+ throw new Error('should not run');
991
+ },
865
992
  },
866
- finalResponseTextLogger(connection, response) {
867
- finalResponseTextLoggerRan++;
868
- _assert.default.equal(response, origResponse + '-modified');
869
- }
870
- }, {
871
- isRelevantTo(connection) {
872
- return false;
873
- },
874
- requestChanger() {
875
- throw new Error('should not run');
876
- },
877
- responseTextChanger(connection, response) {
878
- throw new Error('should not run');
879
- },
880
- finalResponseTextLogger(connection, response) {
881
- throw new Error('should not run');
882
- }
883
- }];
884
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
885
- logError: logError
993
+ ];
994
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
995
+ logError: logError,
886
996
  });
887
997
  const xhr = new XHRProxy();
998
+
888
999
  let methodCalled = false,
889
1000
  addedListenerCalled = false;
890
- const finishRsc = _lodash.default.after(2, () => {
891
- (0, _assert.default)(methodCalled, 'check that onreadystatechange method was called');
892
- (0, _assert.default)(addedListenerCalled, 'check that added listener was called');
893
- _assert.default.equal(responseTextChangerRan, 1, 'check that responseTextChanger ran correct number of times');
894
- _assert.default.equal(finalResponseTextLoggerRan, 2, 'check that finalResponseTextLogger ran correct number of times');
1001
+ const finishRsc = _.after(2, () => {
1002
+ assert(methodCalled, 'check that onreadystatechange method was called');
1003
+ assert(addedListenerCalled, 'check that added listener was called');
1004
+ assert.equal(
1005
+ responseTextChangerRan,
1006
+ 1,
1007
+ 'check that responseTextChanger ran correct number of times'
1008
+ );
1009
+ assert.equal(
1010
+ finalResponseTextLoggerRan,
1011
+ 2,
1012
+ 'check that finalResponseTextLogger ran correct number of times'
1013
+ );
895
1014
  done();
896
1015
  });
1016
+
897
1017
  xhr.onreadystatechange = function () {
898
- _assert.default.equal(this.responseText, this.response, 'check responseText');
1018
+ assert.equal(this.responseText, this.response, 'check responseText');
899
1019
  if (this.readyState == 4) {
900
- _assert.default.equal(this.response, origResponse + '-modified', 'check that response was modified');
1020
+ assert.equal(
1021
+ this.response,
1022
+ origResponse + '-modified',
1023
+ 'check that response was modified'
1024
+ );
901
1025
  methodCalled = true;
902
1026
  finishRsc();
903
1027
  }
904
1028
  };
905
1029
  xhr.addEventListener('readystatechange', function () {
906
1030
  if (this.readyState == 4) {
907
- _assert.default.equal(this.response, origResponse + '-modified', 'check that response was modified');
1031
+ assert.equal(
1032
+ this.response,
1033
+ origResponse + '-modified',
1034
+ 'check that response was modified'
1035
+ );
908
1036
  addedListenerCalled = true;
909
1037
  finishRsc();
910
1038
  }
@@ -912,136 +1040,175 @@ describe('XHRProxyFactory', () => {
912
1040
  xhr.open('GET', '/foo');
913
1041
  xhr.send();
914
1042
  });
915
- it('should have responseTextChanger promises respect abort', done => {
916
- const wrappers = [{
917
- isRelevantTo(connection) {
918
- return connection.url == '/foo';
919
- },
920
- async responseTextChanger(connection, response) {
921
- // start a new request, aborting the current one, so that the result
922
- // of this responseTextChanger never gets seen.
923
- xhr.open('GET', '/foo2');
924
- xhr.send();
925
- await (0, _pdelay.default)(1);
926
- return response + '-modified';
1043
+
1044
+ it('should have responseTextChanger promises respect abort', (done) => {
1045
+ const wrappers = [
1046
+ {
1047
+ isRelevantTo(connection) {
1048
+ return connection.url == '/foo';
1049
+ },
1050
+ async responseTextChanger(connection, response) {
1051
+ // start a new request, aborting the current one, so that the result
1052
+ // of this responseTextChanger never gets seen.
1053
+ xhr.open('GET', '/foo2');
1054
+ xhr.send();
1055
+
1056
+ await delay(1);
1057
+
1058
+ return response + '-modified';
1059
+ },
1060
+ finalResponseTextLogger(connection, response) {
1061
+ throw new Error('should not run');
1062
+ },
927
1063
  },
928
- finalResponseTextLogger(connection, response) {
929
- throw new Error('should not run');
930
- }
931
- }];
932
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
933
- logError: logError
1064
+ ];
1065
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
1066
+ logError: logError,
934
1067
  });
935
1068
  const xhr = new XHRProxy();
1069
+
936
1070
  xhr.addEventListener('readystatechange', function () {
937
1071
  if (this.readyState == 4) {
938
- _assert.default.equal(this.responseText, 'foo2 response!');
1072
+ assert.equal(this.responseText, 'foo2 response!');
939
1073
  done();
940
1074
  }
941
1075
  });
942
1076
  xhr.open('GET', '/foo');
943
1077
  xhr.send();
944
1078
  });
945
- it('supports multiple responseTextChanger wrappers', done => {
946
- const wrappers = [{
947
- isRelevantTo: () => true,
948
- responseTextChanger(connection, response) {
949
- _assert.default.strictEqual(connection.originalResponseText, 'foo2 response!');
950
- _assert.default.strictEqual(connection.modifiedResponseText, 'foo2 response!');
951
- _assert.default.strictEqual(connection.modifiedResponseText, response);
952
- return response + 'a';
953
- }
954
- }, {
955
- isRelevantTo: () => true,
956
- responseTextChanger(connection, response) {
957
- _assert.default.strictEqual(connection.originalResponseText, 'foo2 response!');
958
- _assert.default.strictEqual(connection.modifiedResponseText, 'foo2 response!a');
959
- _assert.default.strictEqual(connection.modifiedResponseText, response);
960
- return response + 'b';
961
- }
962
- }];
963
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
964
- logError: logError
1079
+
1080
+ it('supports multiple responseTextChanger wrappers', (done) => {
1081
+ const wrappers = [
1082
+ {
1083
+ isRelevantTo: () => true,
1084
+ responseTextChanger(connection, response) {
1085
+ assert.strictEqual(
1086
+ connection.originalResponseText,
1087
+ 'foo2 response!'
1088
+ );
1089
+ assert.strictEqual(
1090
+ connection.modifiedResponseText,
1091
+ 'foo2 response!'
1092
+ );
1093
+ assert.strictEqual(connection.modifiedResponseText, response);
1094
+ return response + 'a';
1095
+ },
1096
+ },
1097
+ {
1098
+ isRelevantTo: () => true,
1099
+ responseTextChanger(connection, response) {
1100
+ assert.strictEqual(
1101
+ connection.originalResponseText,
1102
+ 'foo2 response!'
1103
+ );
1104
+ assert.strictEqual(
1105
+ connection.modifiedResponseText,
1106
+ 'foo2 response!a'
1107
+ );
1108
+ assert.strictEqual(connection.modifiedResponseText, response);
1109
+ return response + 'b';
1110
+ },
1111
+ },
1112
+ ];
1113
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
1114
+ logError: logError,
965
1115
  });
966
1116
  const xhr = new XHRProxy();
1117
+
967
1118
  xhr.onload = function () {
968
- _assert.default.strictEqual(this.responseText, 'foo2 response!ab');
1119
+ assert.strictEqual(this.responseText, 'foo2 response!ab');
969
1120
  done();
970
1121
  };
971
1122
  xhr.open('GET', '/foo2');
972
1123
  xhr.send();
973
1124
  });
974
- it('should ignore invalid responseTextChanger return value', done => {
975
- const logErrorSpy = _sinon.default.spy();
976
- const wrappers = [{
977
- isRelevantTo: () => true,
978
- responseTextChanger(connection, response) {
979
- return null;
980
- }
981
- }];
982
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
983
- logError: logErrorSpy
1125
+
1126
+ it('should ignore invalid responseTextChanger return value', (done) => {
1127
+ const logErrorSpy = sinon.spy();
1128
+ const wrappers = [
1129
+ {
1130
+ isRelevantTo: () => true,
1131
+ responseTextChanger(connection, response) {
1132
+ return (null: any);
1133
+ },
1134
+ },
1135
+ ];
1136
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
1137
+ logError: logErrorSpy,
984
1138
  });
985
1139
  const xhr = new XHRProxy();
1140
+
986
1141
  xhr.onload = function () {
987
- _assert.default.strictEqual(this.responseText, 'foo2 response!');
988
- (0, _assert.default)(logErrorSpy.calledOnce);
1142
+ assert.strictEqual(this.responseText, 'foo2 response!');
1143
+ assert(logErrorSpy.calledOnce);
989
1144
  done();
990
1145
  };
991
1146
  xhr.open('GET', '/foo2');
992
1147
  xhr.send();
993
1148
  });
994
- it('requestChanger should work', done => {
995
- const wrappers = [{
996
- isRelevantTo: () => true,
997
- requestChanger(connection, request) {
998
- return Promise.resolve({
999
- method: request.method + 'a',
1000
- url: request.url + 'A',
1001
- body: request.body + '1'
1002
- });
1003
- }
1004
- }, {
1005
- isRelevantTo: () => true,
1006
- requestChanger(connection, request) {
1007
- return {
1008
- method: request.method + 'b',
1009
- url: request.url + 'B',
1010
- body: request.body + '2'
1011
- };
1012
- }
1013
- }];
1014
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
1015
- logError: logError
1149
+
1150
+ it('requestChanger should work', (done) => {
1151
+ const wrappers = [
1152
+ {
1153
+ isRelevantTo: () => true,
1154
+ requestChanger(connection, request) {
1155
+ return Promise.resolve({
1156
+ method: request.method + 'a',
1157
+ url: request.url + 'A',
1158
+ body: request.body + '1',
1159
+ });
1160
+ },
1161
+ },
1162
+ {
1163
+ isRelevantTo: () => true,
1164
+ requestChanger(connection, request) {
1165
+ return {
1166
+ method: request.method + 'b',
1167
+ url: request.url + 'B',
1168
+ body: request.body + '2',
1169
+ };
1170
+ },
1171
+ },
1172
+ ];
1173
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
1174
+ logError: logError,
1016
1175
  });
1017
1176
  const xhr = new XHRProxy();
1177
+
1018
1178
  xhr.onload = function () {
1019
- _assert.default.strictEqual(this.responseText, 'fooAB requested, data12 received');
1179
+ assert.strictEqual(
1180
+ this.responseText,
1181
+ 'fooAB requested, data12 received'
1182
+ );
1020
1183
  done();
1021
1184
  };
1022
1185
  xhr.onerror = done;
1023
1186
  xhr.open('GET', '/foo');
1024
1187
  xhr.send('data');
1025
1188
  });
1026
- it('requestChanger should check returned value for sanity', done => {
1027
- const logErrorSpy = _sinon.default.spy();
1028
- const wrappers = [{
1029
- isRelevantTo: () => true,
1030
- requestChanger(connection, request) {
1031
- return Promise.resolve({
1032
- method: request.method + 'a',
1033
- url: request.url + 'A',
1034
- _MISSPELL_body: request.body + '1'
1035
- });
1036
- }
1037
- }];
1038
- const XHRProxy = (0, _xhrProxyFactory.default)(XMLHttpRequest, wrappers, {
1039
- logError: logErrorSpy
1189
+
1190
+ it('requestChanger should check returned value for sanity', (done) => {
1191
+ const logErrorSpy = sinon.spy();
1192
+ const wrappers = [
1193
+ {
1194
+ isRelevantTo: () => true,
1195
+ requestChanger(connection, request): any {
1196
+ return Promise.resolve({
1197
+ method: request.method + 'a',
1198
+ url: request.url + 'A',
1199
+ _MISSPELL_body: request.body + '1',
1200
+ });
1201
+ },
1202
+ },
1203
+ ];
1204
+ const XHRProxy = XHRProxyFactory(XMLHttpRequest, wrappers, {
1205
+ logError: logErrorSpy,
1040
1206
  });
1041
1207
  const xhr = new XHRProxy();
1208
+
1042
1209
  xhr.onload = function () {
1043
- _assert.default.strictEqual(this.responseText, 'body received');
1044
- (0, _assert.default)(logErrorSpy.calledOnce);
1210
+ assert.strictEqual(this.responseText, 'body received');
1211
+ assert(logErrorSpy.calledOnce);
1045
1212
  done();
1046
1213
  };
1047
1214
  xhr.onerror = thrower('xhr error');
@@ -1049,4 +1216,4 @@ describe('XHRProxyFactory', () => {
1049
1216
  xhr.send('somedata');
1050
1217
  });
1051
1218
  });
1052
- });
1219
+ });