@inboxsdk/core 1.1.6 → 1.1.8

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 (483) hide show
  1. package/background.js +1 -0
  2. package/inboxsdk.js +31 -36
  3. package/inboxsdk.js.map +1 -1
  4. package/package.json +1 -1
  5. package/pageWorld.js +1 -1
  6. package/pageWorld.js.map +1 -1
  7. package/src/inboxsdk-js/header.d.ts +19 -0
  8. package/src/inboxsdk-js/header.d.ts.map +1 -0
  9. package/src/inboxsdk-js/header.js +1 -1
  10. package/src/inboxsdk.d.ts +8 -3
  11. package/src/injected-js/gmail/constants.d.ts +1 -1
  12. package/src/injected-js/gmail/constants.d.ts.map +1 -1
  13. package/src/injected-js/gmail/setup-gmail-interceptor.d.ts +3 -4
  14. package/src/injected-js/gmail/setup-gmail-interceptor.d.ts.map +1 -0
  15. package/src/injected-js/gmail/setup-gmail-interceptor.js +896 -896
  16. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts +1 -1
  17. package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts.map +1 -1
  18. package/src/injected-js/gmail/sync-compose-processor.d.ts +3 -3
  19. package/src/injected-js/gmail/sync-compose-request-processor.d.ts.map +1 -1
  20. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -1
  21. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.d.ts +2 -0
  22. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.d.ts.map +1 -0
  23. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +66 -78
  24. package/src/injected-js/gmail/thread-identifier/index.d.ts +3 -0
  25. package/src/injected-js/gmail/thread-identifier/index.d.ts.map +1 -0
  26. package/src/injected-js/gmail/thread-identifier/index.js +100 -98
  27. package/src/injected-js/gmail/thread-identifier/thread-row-parser.d.ts +7 -0
  28. package/src/injected-js/gmail/thread-identifier/thread-row-parser.d.ts.map +1 -0
  29. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +51 -61
  30. package/src/injected-js/main.d.ts +2 -0
  31. package/src/injected-js/main.d.ts.map +1 -0
  32. package/src/injected-js/main.js +44 -43
  33. package/src/injected-js/message-metadata-holder.d.ts +7 -0
  34. package/src/injected-js/message-metadata-holder.d.ts.map +1 -0
  35. package/src/injected-js/message-metadata-holder.js +89 -97
  36. package/src/injected-js/setup-data-exposer.d.ts +2 -0
  37. package/src/injected-js/setup-data-exposer.d.ts.map +1 -0
  38. package/src/injected-js/setup-data-exposer.js +126 -118
  39. package/src/injected-js/setup-error-silencer.d.ts +2 -0
  40. package/src/injected-js/setup-error-silencer.d.ts.map +1 -0
  41. package/src/injected-js/setup-error-silencer.js +16 -24
  42. package/src/injected-js/setup-event-reemitter.d.ts +2 -0
  43. package/src/injected-js/setup-event-reemitter.d.ts.map +1 -0
  44. package/src/injected-js/setup-event-reemitter.js +46 -59
  45. package/src/injected-js/setupInboxCustomViewLinkFixer.d.ts +2 -0
  46. package/src/injected-js/setupInboxCustomViewLinkFixer.d.ts.map +1 -0
  47. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -26
  48. package/src/injected-js/setupPushStateListener.d.ts +2 -0
  49. package/src/injected-js/setupPushStateListener.d.ts.map +1 -0
  50. package/src/injected-js/setupPushStateListener.js +14 -23
  51. package/src/injected-js/xhr-helper.d.ts +2 -0
  52. package/src/injected-js/xhr-helper.d.ts.map +1 -0
  53. package/src/injected-js/xhr-helper.js +73 -83
  54. package/src/injected-js/xhr-proxy-factory.d.ts +97 -0
  55. package/src/injected-js/xhr-proxy-factory.d.ts.map +1 -0
  56. package/src/injected-js/xhr-proxy-factory.js +503 -451
  57. package/src/platform-implementation-js/constants/router.d.ts +37 -5
  58. package/src/platform-implementation-js/constants/router.d.ts.map +1 -0
  59. package/src/platform-implementation-js/constants/router.js +57 -60
  60. package/src/platform-implementation-js/constants/toolbars.d.ts +2 -0
  61. package/src/platform-implementation-js/constants/toolbars.d.ts.map +1 -0
  62. package/src/platform-implementation-js/constants/toolbars.js +4 -11
  63. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.d.ts.map +1 -1
  64. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -1
  65. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.d.ts.map +1 -1
  66. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -1
  67. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.d.ts.map +1 -1
  68. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -1
  69. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.d.ts +4 -6
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.d.ts.map +1 -0
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +55 -62
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.d.ts.map +1 -1
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -1
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.d.ts.map +1 -1
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -1
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.d.ts.map +1 -1
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +4 -5
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.d.ts.map +1 -1
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +4 -9
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.d.ts.map +1 -1
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +1 -0
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.d.ts +2 -1
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.d.ts.map +1 -1
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +1 -1
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +4 -3
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  87. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.d.ts.map +1 -1
  88. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -1
  89. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.d.ts +19 -6
  90. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.d.ts.map +1 -0
  91. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +75 -80
  92. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.d.ts +5 -0
  93. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.d.ts.map +1 -0
  94. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +13 -22
  95. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.d.ts +5 -0
  96. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.d.ts.map +1 -0
  97. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +18 -26
  98. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.d.ts +5 -0
  99. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.d.ts.map +1 -0
  100. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +13 -30
  101. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.d.ts +44 -0
  102. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.d.ts.map +1 -0
  103. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +681 -601
  104. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.d.ts +2 -0
  105. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.d.ts.map +1 -0
  106. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +23 -24
  107. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.d.ts +19 -3
  108. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.d.ts.map +1 -0
  109. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +156 -150
  110. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.d.ts +20 -0
  111. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.d.ts.map +1 -0
  112. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +101 -96
  113. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +40 -0
  114. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -0
  115. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +287 -265
  116. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.d.ts +61 -0
  117. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.d.ts.map +1 -0
  118. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +689 -524
  119. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.d.ts +5 -0
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.d.ts.map +1 -0
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +124 -118
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.d.ts +15 -0
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.d.ts.map +1 -0
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +47 -51
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.d.ts +8 -0
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.d.ts.map +1 -0
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +8 -16
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.d.ts +8 -0
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.d.ts.map +1 -0
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +23 -31
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.d.ts +4 -0
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.d.ts.map +1 -0
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +61 -66
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.d.ts +6 -0
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.d.ts.map +1 -0
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +64 -48
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.d.ts +2 -0
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.d.ts.map +1 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +10 -17
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.d.ts +2 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.d.ts.map +1 -0
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +14 -23
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.d.ts +3 -0
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.d.ts.map +1 -0
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +13 -16
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.d.ts +7 -0
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.d.ts.map +1 -0
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +57 -59
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.d.ts +3 -0
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.d.ts.map +1 -0
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +49 -49
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.d.ts +4 -0
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.d.ts.map +1 -0
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +89 -89
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts +1 -1
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts.map +1 -1
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.d.ts +4 -0
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.d.ts.map +1 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +13 -21
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.d.ts +3 -0
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.d.ts.map +1 -0
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +16 -23
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.d.ts +4 -0
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.d.ts.map +1 -0
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +14 -22
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts +1 -1
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts.map +1 -1
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.d.ts +4 -0
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.d.ts.map +1 -0
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +23 -29
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.d.ts +3 -0
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.d.ts.map +1 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +17 -25
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.d.ts +4 -0
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.d.ts.map +1 -0
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +317 -252
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.d.ts +3 -0
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.d.ts.map +1 -0
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +22 -18
  180. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.d.ts +4 -0
  181. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.d.ts.map +1 -0
  182. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +57 -50
  183. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.d.ts +3 -0
  184. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.d.ts.map +1 -0
  185. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +18 -20
  186. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.d.ts +3 -0
  187. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.d.ts.map +1 -0
  188. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +114 -113
  189. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.d.ts +3 -0
  190. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.d.ts.map +1 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +15 -18
  192. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.d.ts +189 -118
  193. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.d.ts.map +1 -0
  194. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +1480 -1333
  195. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts +1 -2
  196. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts.map +1 -1
  197. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +1 -2
  198. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.d.ts +3 -0
  199. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.d.ts.map +1 -0
  200. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +69 -70
  201. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.d.ts +67 -6
  202. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.d.ts.map +1 -0
  203. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +715 -637
  204. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.d.ts +44 -6
  205. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.d.ts.map +1 -0
  206. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +100 -101
  207. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.d.ts +72 -3
  208. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.d.ts.map +1 -0
  209. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +502 -438
  210. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.d.ts +39 -8
  211. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.d.ts.map +1 -0
  212. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +229 -211
  213. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.d.ts +117 -5
  214. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.d.ts.map +1 -0
  215. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +938 -821
  216. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.d.ts +5 -0
  217. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.d.ts.map +1 -0
  218. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +66 -61
  219. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.d.ts +18 -0
  220. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.d.ts.map +1 -0
  221. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +520 -457
  222. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.d.ts +7 -0
  223. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.d.ts.map +1 -0
  224. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +24 -27
  225. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.d.ts +69 -7
  226. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.d.ts.map +1 -0
  227. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +646 -523
  228. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.d.ts +58 -11
  229. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.d.ts.map +1 -0
  230. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +436 -383
  231. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.d.ts +35 -7
  232. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.d.ts.map +1 -0
  233. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +265 -235
  234. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts +2 -0
  235. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts.map +1 -1
  236. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +4 -0
  237. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts +2 -0
  238. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts.map +1 -1
  239. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +4 -0
  240. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.d.ts +7 -0
  241. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.d.ts.map +1 -0
  242. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +22 -30
  243. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts +4 -0
  244. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts.map +1 -1
  245. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +6 -0
  246. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.d.ts +11 -0
  247. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.d.ts.map +1 -0
  248. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +35 -41
  249. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.d.ts +18 -0
  250. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.d.ts.map +1 -0
  251. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +96 -97
  252. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.d.ts +18 -15
  253. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.d.ts.map +1 -0
  254. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +170 -170
  255. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.d.ts +47 -0
  256. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.d.ts.map +1 -0
  257. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +325 -279
  258. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.d.ts +16 -0
  259. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.d.ts.map +1 -0
  260. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +56 -61
  261. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.d.ts +31 -3
  262. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.d.ts.map +1 -0
  263. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +275 -252
  264. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.d.ts +6 -0
  265. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.d.ts.map +1 -0
  266. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +27 -32
  267. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.d.ts +7 -0
  268. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.d.ts.map +1 -0
  269. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +45 -43
  270. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.d.ts +5 -6
  271. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.d.ts.map +1 -0
  272. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +11 -19
  273. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.d.ts +5 -6
  274. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.d.ts.map +1 -0
  275. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +39 -48
  276. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.d.ts +5 -0
  277. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.d.ts.map +1 -0
  278. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +12 -20
  279. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.d.ts +5 -0
  280. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.d.ts.map +1 -0
  281. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +11 -19
  282. package/src/platform-implementation-js/driver-common/inboxAjax.d.ts +4 -0
  283. package/src/platform-implementation-js/driver-common/inboxAjax.d.ts.map +1 -0
  284. package/src/platform-implementation-js/driver-common/inboxAjax.js +5 -13
  285. package/src/platform-implementation-js/driver-common/requestGmailThread.d.ts +4 -0
  286. package/src/platform-implementation-js/driver-common/requestGmailThread.d.ts.map +1 -0
  287. package/src/platform-implementation-js/driver-common/requestGmailThread.js +22 -32
  288. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.d.ts +50 -0
  289. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.d.ts.map +1 -0
  290. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +228 -279
  291. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.d.ts +25 -1
  292. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.d.ts.map +1 -0
  293. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +142 -147
  294. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.d.ts +106 -133
  295. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.d.ts.map +1 -0
  296. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -1
  297. package/src/platform-implementation-js/driver-interfaces/driver.d.ts +31 -139
  298. package/src/platform-implementation-js/driver-interfaces/driver.d.ts.map +1 -0
  299. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -1
  300. package/src/platform-implementation-js/driver-interfaces/message-view-driver.d.ts +44 -0
  301. package/src/platform-implementation-js/driver-interfaces/message-view-driver.d.ts.map +1 -0
  302. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +1 -5
  303. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.d.ts +18 -20
  304. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.d.ts.map +1 -0
  305. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -1
  306. package/src/platform-implementation-js/driver-interfaces/route-view-driver.d.ts +19 -0
  307. package/src/platform-implementation-js/driver-interfaces/route-view-driver.d.ts.map +1 -0
  308. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -1
  309. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.d.ts +11 -0
  310. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.d.ts.map +1 -0
  311. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -1
  312. package/src/platform-implementation-js/lib/css-selector-escape.d.ts +2 -0
  313. package/src/platform-implementation-js/lib/css-selector-escape.d.ts.map +1 -0
  314. package/src/platform-implementation-js/lib/css-selector-escape.js +6 -12
  315. package/src/platform-implementation-js/lib/delay-asap.d.ts +1 -1
  316. package/src/platform-implementation-js/lib/delay-asap.d.ts.map +1 -1
  317. package/src/platform-implementation-js/lib/delay-asap.js +0 -2
  318. package/src/platform-implementation-js/lib/dom/get-selection.d.ts +3 -0
  319. package/src/platform-implementation-js/lib/dom/get-selection.d.ts.map +1 -0
  320. package/src/platform-implementation-js/lib/dom/get-selection.js +22 -24
  321. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.d.ts +3 -0
  322. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.d.ts.map +1 -0
  323. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +78 -75
  324. package/src/platform-implementation-js/lib/dom/is-node-in-range.d.ts +2 -0
  325. package/src/platform-implementation-js/lib/dom/is-node-in-range.d.ts.map +1 -0
  326. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +12 -17
  327. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts.map +1 -1
  328. package/src/platform-implementation-js/lib/dom/set-css.d.ts +2 -0
  329. package/src/platform-implementation-js/lib/dom/set-css.d.ts.map +1 -0
  330. package/src/platform-implementation-js/lib/dom/set-css.js +18 -23
  331. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.d.ts +2 -0
  332. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.d.ts.map +1 -0
  333. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +6 -12
  334. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.d.ts +4 -0
  335. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.d.ts.map +1 -0
  336. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +84 -93
  337. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts +1 -1
  338. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts.map +1 -1
  339. package/src/platform-implementation-js/lib/handle-compose-link-chips.d.ts +4 -0
  340. package/src/platform-implementation-js/lib/handle-compose-link-chips.d.ts.map +1 -0
  341. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +106 -97
  342. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
  343. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +1 -1
  344. package/src/platform-implementation-js/lib/insert-link-chip-into-body.d.ts +4 -0
  345. package/src/platform-implementation-js/lib/insert-link-chip-into-body.d.ts.map +1 -0
  346. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +32 -39
  347. package/src/platform-implementation-js/lib/logger.d.ts +1 -0
  348. package/src/platform-implementation-js/lib/logger.d.ts.map +1 -1
  349. package/src/platform-implementation-js/lib/parseParamsFromRouteID.d.ts +2 -0
  350. package/src/platform-implementation-js/lib/parseParamsFromRouteID.d.ts.map +1 -0
  351. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +12 -18
  352. package/src/platform-implementation-js/lib/populateRouteID.d.ts +2 -5
  353. package/src/platform-implementation-js/lib/populateRouteID.d.ts.map +1 -0
  354. package/src/platform-implementation-js/lib/populateRouteID.js +16 -21
  355. package/src/platform-implementation-js/lib/react/ElementContainer.d.ts +15 -0
  356. package/src/platform-implementation-js/lib/react/ElementContainer.d.ts.map +1 -0
  357. package/src/platform-implementation-js/lib/react/ElementContainer.js +24 -36
  358. package/src/platform-implementation-js/lib/routeIDmatchesHash.d.ts +2 -4
  359. package/src/platform-implementation-js/lib/routeIDmatchesHash.d.ts.map +1 -0
  360. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +8 -15
  361. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.d.ts +2 -4
  362. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.d.ts.map +1 -0
  363. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +12 -19
  364. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +1 -1
  365. package/src/platform-implementation-js/main.d.ts.map +1 -1
  366. package/src/platform-implementation-js/main.js +1 -4
  367. package/src/platform-implementation-js/namespaces/compose.d.ts +13 -0
  368. package/src/platform-implementation-js/namespaces/compose.d.ts.map +1 -0
  369. package/src/platform-implementation-js/namespaces/compose.js +56 -61
  370. package/src/platform-implementation-js/namespaces/conversations.d.ts +24 -0
  371. package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -0
  372. package/src/platform-implementation-js/namespaces/conversations.js +79 -78
  373. package/src/platform-implementation-js/namespaces/global.d.ts +11 -0
  374. package/src/platform-implementation-js/namespaces/global.d.ts.map +1 -0
  375. package/src/platform-implementation-js/namespaces/global.js +28 -36
  376. package/src/platform-implementation-js/namespaces/keyboard.d.ts +11 -0
  377. package/src/platform-implementation-js/namespaces/keyboard.d.ts.map +1 -0
  378. package/src/platform-implementation-js/namespaces/keyboard.js +27 -40
  379. package/src/platform-implementation-js/namespaces/lists.d.ts +14 -0
  380. package/src/platform-implementation-js/namespaces/lists.d.ts.map +1 -0
  381. package/src/platform-implementation-js/namespaces/lists.js +38 -50
  382. package/src/platform-implementation-js/namespaces/modal.d.ts +10 -0
  383. package/src/platform-implementation-js/namespaces/modal.d.ts.map +1 -0
  384. package/src/platform-implementation-js/namespaces/modal.js +40 -48
  385. package/src/platform-implementation-js/namespaces/nav-menu.d.ts +16 -0
  386. package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -0
  387. package/src/platform-implementation-js/namespaces/nav-menu.js +29 -36
  388. package/src/platform-implementation-js/namespaces/router.d.ts +50 -1
  389. package/src/platform-implementation-js/namespaces/router.d.ts.map +1 -0
  390. package/src/platform-implementation-js/namespaces/router.js +126 -137
  391. package/src/platform-implementation-js/namespaces/search.d.ts +7 -0
  392. package/src/platform-implementation-js/namespaces/search.d.ts.map +1 -0
  393. package/src/platform-implementation-js/namespaces/search.js +25 -34
  394. package/src/platform-implementation-js/namespaces/toolbars.d.ts +15 -0
  395. package/src/platform-implementation-js/namespaces/toolbars.d.ts.map +1 -0
  396. package/src/platform-implementation-js/namespaces/toolbars.js +138 -140
  397. package/src/platform-implementation-js/namespaces/user.d.ts +13 -0
  398. package/src/platform-implementation-js/namespaces/user.d.ts.map +1 -0
  399. package/src/platform-implementation-js/namespaces/user.js +53 -62
  400. package/src/platform-implementation-js/namespaces/widgets.d.ts +16 -0
  401. package/src/platform-implementation-js/namespaces/widgets.d.ts.map +1 -0
  402. package/src/platform-implementation-js/namespaces/widgets.js +68 -77
  403. package/src/platform-implementation-js/platform-implementation.d.ts +54 -126
  404. package/src/platform-implementation-js/platform-implementation.d.ts.map +1 -0
  405. package/src/platform-implementation-js/platform-implementation.js +176 -147
  406. package/src/platform-implementation-js/views/app-toolbar-button-view.d.ts +11 -0
  407. package/src/platform-implementation-js/views/app-toolbar-button-view.d.ts.map +1 -0
  408. package/src/platform-implementation-js/views/app-toolbar-button-view.js +42 -51
  409. package/src/platform-implementation-js/views/collapsible-section-view.d.ts +12 -0
  410. package/src/platform-implementation-js/views/collapsible-section-view.d.ts.map +1 -0
  411. package/src/platform-implementation-js/views/collapsible-section-view.js +58 -86
  412. package/src/platform-implementation-js/views/compose-view.d.ts +2 -1
  413. package/src/platform-implementation-js/views/compose-view.d.ts.map +1 -1
  414. package/src/platform-implementation-js/views/content-panel-view.d.ts +12 -0
  415. package/src/platform-implementation-js/views/content-panel-view.d.ts.map +1 -0
  416. package/src/platform-implementation-js/views/content-panel-view.js +35 -50
  417. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +18 -0
  418. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -0
  419. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +39 -44
  420. package/src/platform-implementation-js/views/conversations/custom-message-view.d.ts +28 -0
  421. package/src/platform-implementation-js/views/conversations/custom-message-view.d.ts.map +1 -0
  422. package/src/platform-implementation-js/views/conversations/custom-message-view.js +115 -103
  423. package/src/platform-implementation-js/views/conversations/message-view.d.ts +34 -0
  424. package/src/platform-implementation-js/views/conversations/message-view.d.ts.map +1 -0
  425. package/src/platform-implementation-js/views/conversations/message-view.js +197 -209
  426. package/src/platform-implementation-js/views/conversations/thread-view.d.ts +23 -0
  427. package/src/platform-implementation-js/views/conversations/thread-view.d.ts.map +1 -0
  428. package/src/platform-implementation-js/views/conversations/thread-view.js +93 -100
  429. package/src/platform-implementation-js/views/native-nav-item-view.d.ts +11 -0
  430. package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -0
  431. package/src/platform-implementation-js/views/native-nav-item-view.js +56 -62
  432. package/src/platform-implementation-js/views/nav-item-view.d.ts +12 -22
  433. package/src/platform-implementation-js/views/nav-item-view.d.ts.map +1 -0
  434. package/src/platform-implementation-js/views/nav-item-view.js +123 -124
  435. package/src/platform-implementation-js/views/route-view/custom-route-view.d.ts +9 -0
  436. package/src/platform-implementation-js/views/route-view/custom-route-view.d.ts.map +1 -0
  437. package/src/platform-implementation-js/views/route-view/custom-route-view.js +24 -36
  438. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.d.ts +14 -0
  439. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.d.ts.map +1 -0
  440. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +27 -38
  441. package/src/platform-implementation-js/views/route-view/list-route-view.d.ts +13 -0
  442. package/src/platform-implementation-js/views/route-view/list-route-view.d.ts.map +1 -0
  443. package/src/platform-implementation-js/views/route-view/list-route-view.js +41 -51
  444. package/src/platform-implementation-js/views/route-view/route-view.d.ts +11 -0
  445. package/src/platform-implementation-js/views/route-view/route-view.d.ts.map +1 -0
  446. package/src/platform-implementation-js/views/route-view/route-view.js +41 -51
  447. package/src/platform-implementation-js/views/section-view.d.ts +11 -0
  448. package/src/platform-implementation-js/views/section-view.d.ts.map +1 -0
  449. package/src/platform-implementation-js/views/section-view.js +56 -81
  450. package/src/platform-implementation-js/views/thread-row-view.d.ts +27 -0
  451. package/src/platform-implementation-js/views/thread-row-view.d.ts.map +1 -0
  452. package/src/platform-implementation-js/views/thread-row-view.js +87 -94
  453. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts +4 -0
  454. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts.map +1 -1
  455. package/src/platform-implementation-js/widgets/drawer-view.d.ts +13 -0
  456. package/src/platform-implementation-js/widgets/drawer-view.d.ts.map +1 -0
  457. package/src/platform-implementation-js/widgets/drawer-view.js +46 -53
  458. package/src/platform-implementation-js/widgets/modal-view.d.ts +18 -0
  459. package/src/platform-implementation-js/widgets/modal-view.d.ts.map +1 -0
  460. package/src/platform-implementation-js/widgets/modal-view.js +95 -91
  461. package/src/platform-implementation-js/widgets/mole-view.d.ts +12 -0
  462. package/src/platform-implementation-js/widgets/mole-view.d.ts.map +1 -0
  463. package/src/platform-implementation-js/widgets/mole-view.js +37 -46
  464. package/src/platform-implementation-js/widgets/top-message-bar-view.d.ts +8 -0
  465. package/src/platform-implementation-js/widgets/top-message-bar-view.d.ts.map +1 -0
  466. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -21
  467. package/src/injected-js/gmail/modify-suggestions.test.js +0 -20
  468. package/src/injected-js/gmail/sync-compose-request-processor.test.js +0 -80
  469. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +0 -41
  470. package/src/injected-js/xhr-proxy-factory.test.js +0 -1052
  471. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +0 -22
  472. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +0 -125
  473. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +0 -141
  474. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +0 -209
  475. package/src/platform-implementation-js/lib/array-to-lifetimes.js +0 -69
  476. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +0 -155
  477. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +0 -13
  478. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +0 -39
  479. package/src/platform-implementation-js/lib/make-revocable-function.js +0 -38
  480. package/src/platform-implementation-js/lib/make-revocable-function.test.js +0 -61
  481. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +0 -19
  482. package/src/platform-implementation-js/lib/populateRouteID.test.js +0 -32
  483. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +0 -17
@@ -1,40 +1,15 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = XHRProxyFactory;
8
- var _has = _interopRequireDefault(require("lodash/has"));
9
- var _noop = _interopRequireDefault(require("lodash/noop"));
10
- var _each = _interopRequireDefault(require("lodash/each"));
11
- var _filter = _interopRequireDefault(require("lodash/filter"));
12
- var _includes = _interopRequireDefault(require("lodash/includes"));
13
- var _once = _interopRequireDefault(require("lodash/once"));
14
- var _assert = _interopRequireDefault(require("assert"));
15
- var _events = _interopRequireDefault(require("events"));
16
- var _querystring = require("querystring");
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ /* eslint-disable prefer-rest-params */
3
+ import has from 'lodash/has';
4
+ import noop from 'lodash/noop';
5
+ import each from 'lodash/each';
6
+ import filter from 'lodash/filter';
7
+ import includes from 'lodash/includes';
8
+ import once from 'lodash/once';
9
+ import assert from 'assert';
10
+ import EventEmitter from 'events';
11
+ import { parse as deparam } from 'querystring';
17
12
  const WARNING_TIMEOUT = 60 * 1000;
18
-
19
- /**
20
- * Object with information about the connection in progress. Its fields are
21
- * populated as the connection goes on. The object is passed as the first
22
- * argument to all of the wrappers. The object is mutable so the wrappers can
23
- * add properties to it.
24
- *
25
- * @typedef {Object} XHRProxyConnectionDetails
26
- * @property {string} method
27
- * @property {string} url
28
- * @property {Object} params - parameters decoded from the URL
29
- * @property {Object} headers - request headers set on the XHR
30
- * @property {string} responseType
31
- * @property {string} originalSendBody - data passed to send method
32
- * @property {number} status - HTTP response status
33
- * @property {string} [originalResponseText] - Is not set if responseType is set
34
- * to a value besides 'text'.
35
- * @property {string} [modifiedResponseText]
36
- */
37
-
38
13
  /**
39
14
  * Creates a drop-in replacement for the XMLHttpRequest constructor that can
40
15
  * have wrappers which may log or modify server responses. See
@@ -45,442 +20,519 @@ const WARNING_TIMEOUT = 60 * 1000;
45
20
  * @param {Object} [opts] - Can specify a logError function
46
21
  * @returns {function} wrapped XMLHttpRequest-like constructor
47
22
  */
48
- function XHRProxyFactory(XHR, wrappers, opts) {
49
- const logError = opts && opts.logError || function (error, label) {
50
- setTimeout(function () {
51
- // let window.onerror log this
52
- throw error;
53
- }, 1);
54
- };
55
- function transformEvent(oldTarget, newTarget, event) {
56
- const newEvent = {};
57
- Object.keys(event).concat(['bubbles', 'cancelBubble', 'cancelable', 'defaultPrevented', 'preventDefault', 'stopPropagation', 'stopImmediatePropagation', 'lengthComputable', 'loaded', 'total', 'type', 'currentTarget', 'target', 'srcElement', 'NONE', 'CAPTURING_PHASE', 'AT_TARGET', 'BUBBLING_PHASE', 'eventPhase']).filter(name => name in event).forEach(name => {
58
- const value = event[name];
59
- if (value === oldTarget) {
60
- newEvent[name] = newTarget;
61
- } else if (typeof value === 'function') {
62
- newEvent[name] = value.bind(event);
63
- } else {
64
- newEvent[name] = value;
65
- }
66
- });
67
- return newEvent;
68
- }
69
- function wrapEventListener(oldTarget, newTarget, listener) {
70
- return function (event) {
71
- return listener.call(newTarget, transformEvent(oldTarget, newTarget, event));
72
- };
73
- }
74
- function findApplicableWrappers(wrappers, connection) {
75
- return (0, _filter.default)(wrappers, function (wrapper) {
76
- try {
77
- return wrapper.isRelevantTo(connection);
78
- } catch (e) {
79
- logError(e);
80
- }
81
- });
82
- }
83
- function XHRProxy() {
84
- this._wrappers = wrappers;
85
- this._listeners = {};
86
- this._boundListeners = {};
87
- this._events = new _events.default(); // used for internal stuff, not user-visible events
88
- this.responseText = '';
89
- this._openState = false;
90
- if (XHR.bind && XHR.bind.apply) {
91
- // call constructor with variable number of arguments
92
- this._realxhr = new (XHR.bind.apply(XHR, [null].concat(arguments)))();
93
- } else {
94
- // Safari's XMLHttpRequest lacks a bind method, but its constructor
95
- // doesn't support extra arguments anyway, so don't bother logging an
96
- // error here.
97
- this._realxhr = new XHR();
23
+ export default function XHRProxyFactory(XHR, wrappers, opts) {
24
+ const logError = (opts && opts.logError) ||
25
+ function (error, label) {
26
+ setTimeout(function () {
27
+ // let window.onerror log this
28
+ throw error;
29
+ }, 1);
30
+ };
31
+ function transformEvent(oldTarget, newTarget, event) {
32
+ const newEvent = {};
33
+ Object.keys(event)
34
+ .concat([
35
+ 'bubbles',
36
+ 'cancelBubble',
37
+ 'cancelable',
38
+ 'defaultPrevented',
39
+ 'preventDefault',
40
+ 'stopPropagation',
41
+ 'stopImmediatePropagation',
42
+ 'lengthComputable',
43
+ 'loaded',
44
+ 'total',
45
+ 'type',
46
+ 'currentTarget',
47
+ 'target',
48
+ 'srcElement',
49
+ 'NONE',
50
+ 'CAPTURING_PHASE',
51
+ 'AT_TARGET',
52
+ 'BUBBLING_PHASE',
53
+ 'eventPhase',
54
+ ])
55
+ .filter((name) => name in event)
56
+ .forEach((name) => {
57
+ const value = event[name];
58
+ if (value === oldTarget) {
59
+ newEvent[name] = newTarget;
60
+ }
61
+ else if (typeof value === 'function') {
62
+ newEvent[name] = value.bind(event);
63
+ }
64
+ else {
65
+ newEvent[name] = value;
66
+ }
67
+ });
68
+ return newEvent;
69
+ }
70
+ function wrapEventListener(oldTarget, newTarget, listener) {
71
+ return function (event) {
72
+ return listener.call(newTarget, transformEvent(oldTarget, newTarget, event));
73
+ };
74
+ }
75
+ function findApplicableWrappers(wrappers, connection) {
76
+ return filter(wrappers, function (wrapper) {
77
+ try {
78
+ return wrapper.isRelevantTo(connection);
79
+ }
80
+ catch (e) {
81
+ logError(e);
82
+ }
83
+ });
98
84
  }
99
- const self = this;
100
- const triggerEventListeners = (name, event) => {
101
- if (this['on' + name]) {
102
- try {
103
- wrapEventListener(this._realxhr, this, this['on' + name]).call(this, event);
104
- } catch (e) {
105
- logError(e, 'XMLHttpRequest event listener error');
85
+ function XHRProxy() {
86
+ this._wrappers = wrappers;
87
+ this._listeners = {};
88
+ this._boundListeners = {};
89
+ this._events = new EventEmitter(); // used for internal stuff, not user-visible events
90
+ this.responseText = '';
91
+ this._openState = false;
92
+ if (XHR.bind && XHR.bind.apply) {
93
+ // call constructor with variable number of arguments
94
+ this._realxhr = new (XHR.bind.apply(XHR, [null].concat(arguments)))();
95
+ }
96
+ else {
97
+ // Safari's XMLHttpRequest lacks a bind method, but its constructor
98
+ // doesn't support extra arguments anyway, so don't bother logging an
99
+ // error here.
100
+ this._realxhr = new XHR();
106
101
  }
107
- }
108
- (0, _each.default)(this._boundListeners[name], boundListener => {
109
- try {
110
- boundListener(event);
111
- } catch (e) {
112
- logError(e, 'XMLHttpRequest event listener error');
102
+ const self = this;
103
+ const triggerEventListeners = (name, event) => {
104
+ if (this['on' + name]) {
105
+ try {
106
+ wrapEventListener(this._realxhr, this, this['on' + name]).call(this, event);
107
+ }
108
+ catch (e) {
109
+ logError(e, 'XMLHttpRequest event listener error');
110
+ }
111
+ }
112
+ each(this._boundListeners[name], (boundListener) => {
113
+ try {
114
+ boundListener(event);
115
+ }
116
+ catch (e) {
117
+ logError(e, 'XMLHttpRequest event listener error');
118
+ }
119
+ });
120
+ };
121
+ const runRscListeners = (event) => {
122
+ triggerEventListeners('readystatechange', event);
123
+ };
124
+ this._fakeRscEvent = function () {
125
+ runRscListeners(Object.freeze({
126
+ bubbles: false,
127
+ cancelBubble: false,
128
+ cancelable: false,
129
+ defaultPrevented: false,
130
+ preventDefault: noop,
131
+ stopPropagation: noop,
132
+ stopImmediatePropagation: noop,
133
+ type: 'readystatechange',
134
+ currentTarget: this,
135
+ target: this,
136
+ srcElement: this,
137
+ NONE: 0,
138
+ CAPTURING_PHASE: 1,
139
+ AT_TARGET: 2,
140
+ BUBBLING_PHASE: 3,
141
+ eventPhase: 0,
142
+ }));
143
+ };
144
+ const deliverFinalRsc = (event) => {
145
+ this.readyState = 4;
146
+ // Remember the status now before any event handlers are called, just in
147
+ // case one aborts the request.
148
+ var wasSuccess = this.status == 200;
149
+ var progressEvent = Object.assign({}, transformEvent(this._realxhr, this, event), {
150
+ lengthComputable: false,
151
+ loaded: 0,
152
+ total: 0,
153
+ });
154
+ var supportsResponseText = !this._realxhr.responseType || this._realxhr.responseType == 'text';
155
+ if (supportsResponseText) {
156
+ each(this._activeWrappers, (wrapper) => {
157
+ if (wrapper.finalResponseTextLogger) {
158
+ try {
159
+ wrapper.finalResponseTextLogger(this._connection, this.responseText);
160
+ }
161
+ catch (e) {
162
+ logError(e);
163
+ }
164
+ }
165
+ });
166
+ }
167
+ runRscListeners(event);
168
+ if (wasSuccess) {
169
+ triggerEventListeners('load', progressEvent);
170
+ }
171
+ else {
172
+ triggerEventListeners('error', progressEvent);
173
+ }
174
+ triggerEventListeners('loadend', progressEvent);
175
+ each(this._activeWrappers, (wrapper) => {
176
+ if (wrapper.afterListeners) {
177
+ try {
178
+ wrapper.afterListeners(this._connection);
179
+ }
180
+ catch (e) {
181
+ logError(e);
182
+ }
183
+ }
184
+ });
185
+ };
186
+ this._realxhr.addEventListener('readystatechange', (event) => {
187
+ if (!this._connection) {
188
+ return;
189
+ }
190
+ if (this._realxhr.readyState >= 2) {
191
+ this._connection.status = this._realxhr.status;
192
+ }
193
+ const supportsResponseText = !this._realxhr.responseType || this._realxhr.responseType == 'text';
194
+ // Process the response text.
195
+ if (this._realxhr.readyState == 4) {
196
+ if (supportsResponseText) {
197
+ Object.defineProperty(this._connection, 'originalResponseText', {
198
+ enumerable: true,
199
+ writable: false,
200
+ configurable: false,
201
+ value: self._realxhr.responseText,
202
+ });
203
+ each(this._activeWrappers, (wrapper) => {
204
+ if (wrapper.originalResponseTextLogger) {
205
+ try {
206
+ wrapper.originalResponseTextLogger(this._connection, this._connection.originalResponseText);
207
+ }
208
+ catch (e) {
209
+ logError(e);
210
+ }
211
+ }
212
+ });
213
+ const finish = once(deliverFinalRsc.bind(null, event));
214
+ if (this._connection.async) {
215
+ // If the XHR object is re-used for another connection, then we need
216
+ // to make sure that our upcoming async calls here do nothing.
217
+ // Remember the current connection object, and do nothing in our async
218
+ // calls if it no longer matches.
219
+ const startConnection = this._connection;
220
+ (async () => {
221
+ let modifiedResponseText = startConnection.originalResponseText;
222
+ startConnection.modifiedResponseText = modifiedResponseText;
223
+ for (const responseTextChanger of this._responseTextChangers) {
224
+ const longRunWarningTimer = setTimeout(() => {
225
+ console.warn('responseTextChanger is taking too long', responseTextChanger, startConnection);
226
+ }, WARNING_TIMEOUT);
227
+ try {
228
+ modifiedResponseText = await responseTextChanger(startConnection, modifiedResponseText);
229
+ }
230
+ finally {
231
+ clearTimeout(longRunWarningTimer);
232
+ }
233
+ if (typeof modifiedResponseText !== 'string') {
234
+ throw new Error('responseTextChanger returned non-string value ' +
235
+ modifiedResponseText);
236
+ }
237
+ startConnection.modifiedResponseText = modifiedResponseText;
238
+ if (startConnection !== this._connection)
239
+ break;
240
+ }
241
+ return modifiedResponseText;
242
+ })()
243
+ .then((modifiedResponseText) => {
244
+ if (startConnection === self._connection) {
245
+ this.responseText = modifiedResponseText;
246
+ finish();
247
+ }
248
+ }, (err) => {
249
+ logError(err);
250
+ if (startConnection === this._connection) {
251
+ this.responseText = this._realxhr.responseText;
252
+ finish();
253
+ }
254
+ })
255
+ .catch(logError);
256
+ return;
257
+ }
258
+ else {
259
+ self.responseText = self._realxhr.responseText;
260
+ }
261
+ }
262
+ else {
263
+ self.responseText = '';
264
+ }
265
+ deliverFinalRsc(event);
266
+ }
267
+ else {
268
+ if (self._realxhr.readyState == 1 && self.readyState == 1) {
269
+ // Delayed open+send just happened. We already delivered an event
270
+ // for this, so drop this event.
271
+ return;
272
+ }
273
+ else if (self._realxhr.readyState >= 3 && supportsResponseText) {
274
+ if (self._responseTextChangers.length) {
275
+ // If we're going to transform the final response, then we don't
276
+ // want to expose any partial untransformed responses and we don't
277
+ // want to bother trying to transform partial responses. Only show
278
+ // an empty string as the loaded response until the connection is
279
+ // done.
280
+ self.responseText = '';
281
+ }
282
+ else {
283
+ self.responseText = self._realxhr.responseText;
284
+ }
285
+ }
286
+ else {
287
+ self.responseText = '';
288
+ }
289
+ self.readyState = self._realxhr.readyState;
290
+ runRscListeners(event);
291
+ }
292
+ }, false);
293
+ [
294
+ 'dispatchEvent',
295
+ 'getAllResponseHeaders',
296
+ 'getResponseHeader',
297
+ 'overrideMimeType',
298
+ 'responseType',
299
+ 'responseXML',
300
+ 'responseURL',
301
+ 'status',
302
+ 'statusText',
303
+ 'timeout',
304
+ 'ontimeout',
305
+ 'onloadstart',
306
+ 'onprogress',
307
+ 'onabort',
308
+ 'upload',
309
+ 'withCredentials',
310
+ ].forEach(function (prop) {
311
+ Object.defineProperty(self, prop, {
312
+ enumerable: true,
313
+ configurable: false,
314
+ get: function () {
315
+ // If we give the original native methods directly, they'll be called
316
+ // with `this` as the XHRProxy object, which they aren't made for.
317
+ if (typeof self._realxhr[prop] == 'function') {
318
+ return self._realxhr[prop].bind(self._realxhr);
319
+ }
320
+ return self._realxhr[prop];
321
+ },
322
+ set: function (v) {
323
+ if (typeof v == 'function') {
324
+ v = wrapEventListener(this._realxhr, this, v);
325
+ }
326
+ self._realxhr[prop] = v;
327
+ },
328
+ });
329
+ });
330
+ Object.defineProperty(self, 'response', {
331
+ enumerable: true,
332
+ configurable: false,
333
+ get: function () {
334
+ if (!this._realxhr.responseType ||
335
+ this._realxhr.responseType == 'text') {
336
+ return this.responseText;
337
+ }
338
+ else {
339
+ // We're not trying to transform non-text responses currently.
340
+ return this._realxhr.response;
341
+ }
342
+ },
343
+ });
344
+ self.readyState = self._realxhr.readyState;
345
+ }
346
+ XHRProxy.prototype.abort = function () {
347
+ // Important: If the request has already been sent, the XHR will change
348
+ // its readyState to 4 after abort. However, we sometimes asynchronously
349
+ // delay send calls. If the application has already called send but we
350
+ // haven't sent off the real call yet, then we need to hurry up and send
351
+ // something before the abort so that the readyState change happens.
352
+ if (this._clientStartedSend && !this._realStartedSend) {
353
+ if (this.readyState != 0 && this._realxhr.readyState == 0) {
354
+ this._realxhr.open(this._connection.method, this._connection.url);
355
+ }
356
+ this._realStartedSend = true;
357
+ this._realxhr.send();
113
358
  }
114
- });
359
+ this._realxhr.abort();
115
360
  };
116
- const runRscListeners = event => {
117
- triggerEventListeners('readystatechange', event);
361
+ XHRProxy.prototype.setRequestHeader = function (name, value) {
362
+ var self = this;
363
+ if (this.readyState != 1) {
364
+ console.warn('setRequestHeader improperly called at readyState ' + this.readyState);
365
+ }
366
+ if (!this._openState) {
367
+ throw new Error('Can only set headers after open and before send');
368
+ }
369
+ this._connection.headers[name] = value;
370
+ if (this._connection.async && this._requestChangers.length) {
371
+ this._events.once('realOpen', function () {
372
+ self._realxhr.setRequestHeader(name, value);
373
+ });
374
+ }
375
+ else {
376
+ this._realxhr.setRequestHeader(name, value);
377
+ }
118
378
  };
119
- this._fakeRscEvent = function () {
120
- runRscListeners(Object.freeze({
121
- bubbles: false,
122
- cancelBubble: false,
123
- cancelable: false,
124
- defaultPrevented: false,
125
- preventDefault: _noop.default,
126
- stopPropagation: _noop.default,
127
- stopImmediatePropagation: _noop.default,
128
- type: 'readystatechange',
129
- currentTarget: this,
130
- target: this,
131
- srcElement: this,
132
- NONE: 0,
133
- CAPTURING_PHASE: 1,
134
- AT_TARGET: 2,
135
- BUBBLING_PHASE: 3,
136
- eventPhase: 0
137
- }));
379
+ XHRProxy.prototype.addEventListener = function (name, listener) {
380
+ if (!this._listeners[name]) {
381
+ this._listeners[name] = [];
382
+ this._boundListeners[name] = [];
383
+ }
384
+ if (!includes(this._listeners[name], listener)) {
385
+ var boundListener = wrapEventListener(this._realxhr, this, listener);
386
+ this._listeners[name].push(listener);
387
+ this._boundListeners[name].push(boundListener);
388
+ if (!includes(['readystatechange', 'load', 'error', 'loadend'], name)) {
389
+ // certain listeners are called manually so that the final
390
+ // call (when readyState==4) can be delayed.
391
+ this._realxhr.addEventListener(name, boundListener, false);
392
+ }
393
+ }
138
394
  };
139
- const deliverFinalRsc = event => {
140
- this.readyState = 4;
141
- // Remember the status now before any event handlers are called, just in
142
- // case one aborts the request.
143
- var wasSuccess = this.status == 200;
144
- var progressEvent = Object.assign({}, transformEvent(this._realxhr, this, event), {
145
- lengthComputable: false,
146
- loaded: 0,
147
- total: 0
148
- });
149
- var supportsResponseText = !this._realxhr.responseType || this._realxhr.responseType == 'text';
150
- if (supportsResponseText) {
151
- (0, _each.default)(this._activeWrappers, wrapper => {
152
- if (wrapper.finalResponseTextLogger) {
153
- try {
154
- wrapper.finalResponseTextLogger(this._connection, this.responseText);
155
- } catch (e) {
156
- logError(e);
395
+ XHRProxy.prototype.removeEventListener = function (name, listener) {
396
+ if (!this._listeners[name]) {
397
+ return;
398
+ }
399
+ var i = this._listeners[name].indexOf(listener);
400
+ if (i == -1) {
401
+ return;
402
+ }
403
+ this._listeners[name].splice(i, 1);
404
+ var boundListener = this._boundListeners[name].splice(i, 1)[0];
405
+ if (name != 'readystatechange') {
406
+ this._realxhr.removeEventListener(name, boundListener, false);
407
+ }
408
+ };
409
+ XHRProxy.prototype.open = function (method, url, async) {
410
+ // Work around MailTrack issue
411
+ if (!(this instanceof XHRProxy)) {
412
+ return XHR.prototype.open.apply(this, arguments);
413
+ }
414
+ var self = this;
415
+ this._connection = {
416
+ method: method,
417
+ url: url,
418
+ params: deparam(url.split('?')[1] || ''),
419
+ headers: {},
420
+ async: arguments.length < 3 || !!async,
421
+ };
422
+ this._clientStartedSend = false;
423
+ this._realStartedSend = false;
424
+ this._activeWrappers = findApplicableWrappers(this._wrappers, this._connection);
425
+ this._responseTextChangers = this._activeWrappers
426
+ .map(function (wrapper) {
427
+ return (wrapper.responseTextChanger &&
428
+ wrapper.responseTextChanger.bind(wrapper));
429
+ })
430
+ .filter(Boolean);
431
+ this.responseText = '';
432
+ this._openState = true;
433
+ function finish(method, url) {
434
+ return self._realxhr.open(method, url, self._connection.async);
435
+ }
436
+ if (this._connection.async) {
437
+ this._requestChangers = this._activeWrappers
438
+ .map(function (wrapper) {
439
+ return wrapper.requestChanger && wrapper.requestChanger.bind(wrapper);
440
+ })
441
+ .filter(Boolean);
442
+ if (this._requestChangers.length) {
443
+ if (this.readyState != 1) {
444
+ this.readyState = 1;
445
+ this._fakeRscEvent();
446
+ }
157
447
  }
158
- }
159
- });
160
- }
161
- runRscListeners(event);
162
- if (wasSuccess) {
163
- triggerEventListeners('load', progressEvent);
164
- } else {
165
- triggerEventListeners('error', progressEvent);
166
- }
167
- triggerEventListeners('loadend', progressEvent);
168
- (0, _each.default)(this._activeWrappers, wrapper => {
169
- if (wrapper.afterListeners) {
170
- try {
171
- wrapper.afterListeners(this._connection);
172
- } catch (e) {
173
- logError(e);
174
- }
448
+ else {
449
+ finish(method, url);
450
+ }
451
+ }
452
+ else {
453
+ finish(method, url);
175
454
  }
176
- });
177
455
  };
178
- this._realxhr.addEventListener('readystatechange', event => {
179
- if (!this._connection) {
180
- return;
181
- }
182
- if (this._realxhr.readyState >= 2) {
183
- this._connection.status = this._realxhr.status;
184
- }
185
- const supportsResponseText = !this._realxhr.responseType || this._realxhr.responseType == 'text';
186
-
187
- // Process the response text.
188
- if (this._realxhr.readyState == 4) {
189
- if (supportsResponseText) {
190
- Object.defineProperty(this._connection, 'originalResponseText', {
456
+ XHRProxy.prototype.send = function (body) {
457
+ var self = this;
458
+ this._clientStartedSend = true;
459
+ this._openState = false;
460
+ Object.defineProperty(this._connection, 'originalSendBody', {
191
461
  enumerable: true,
192
462
  writable: false,
193
463
  configurable: false,
194
- value: self._realxhr.responseText
195
- });
196
- (0, _each.default)(this._activeWrappers, wrapper => {
197
- if (wrapper.originalResponseTextLogger) {
198
- try {
199
- wrapper.originalResponseTextLogger(this._connection, this._connection.originalResponseText);
200
- } catch (e) {
201
- logError(e);
202
- }
464
+ value: body,
465
+ });
466
+ this._connection.responseType = this._realxhr.responseType || 'text';
467
+ each(self._activeWrappers, function (wrapper) {
468
+ if (wrapper.originalSendBodyLogger) {
469
+ try {
470
+ wrapper.originalSendBodyLogger(self._connection, body);
471
+ }
472
+ catch (e) {
473
+ logError(e);
474
+ }
203
475
  }
204
- });
205
- const finish = (0, _once.default)(deliverFinalRsc.bind(null, event));
206
- if (this._connection.async) {
476
+ });
477
+ function finish(body) {
478
+ self._realStartedSend = true;
479
+ self._realxhr.send(body);
480
+ }
481
+ if (this._connection.async && this._requestChangers.length) {
207
482
  // If the XHR object is re-used for another connection, then we need
208
483
  // to make sure that our upcoming async calls here do nothing.
209
484
  // Remember the current connection object, and do nothing in our async
210
- // calls if it no longer matches.
485
+ // calls if it no longer matches. Also check for aborts.
211
486
  const startConnection = this._connection;
487
+ const request = {
488
+ method: this._connection.method,
489
+ url: this._connection.url,
490
+ body: body,
491
+ };
212
492
  (async () => {
213
- let modifiedResponseText = startConnection.originalResponseText;
214
- startConnection.modifiedResponseText = modifiedResponseText;
215
- for (let responseTextChanger of this._responseTextChangers) {
216
- const longRunWarningTimer = setTimeout(() => {
217
- console.warn('responseTextChanger is taking too long', responseTextChanger, startConnection);
218
- }, WARNING_TIMEOUT);
219
- try {
220
- modifiedResponseText = await responseTextChanger(startConnection, modifiedResponseText);
221
- } finally {
222
- clearTimeout(longRunWarningTimer);
493
+ let modifiedRequest = request;
494
+ for (const requestChanger of this._requestChangers) {
495
+ const longRunWarningTimer = setTimeout(() => {
496
+ console.warn('requestChanger is taking too long', requestChanger, startConnection);
497
+ }, WARNING_TIMEOUT);
498
+ try {
499
+ modifiedRequest = await requestChanger(this._connection, Object.freeze(modifiedRequest));
500
+ }
501
+ finally {
502
+ clearTimeout(longRunWarningTimer);
503
+ }
504
+ assert(has(modifiedRequest, 'method'), 'modifiedRequest has method');
505
+ assert(has(modifiedRequest, 'url'), 'modifiedRequest has url');
506
+ assert(has(modifiedRequest, 'body'), 'modifiedRequest has body');
507
+ if (startConnection !== this._connection || this._realStartedSend)
508
+ break;
223
509
  }
224
- if (typeof modifiedResponseText !== 'string') {
225
- throw new Error('responseTextChanger returned non-string value ' + modifiedResponseText);
510
+ return modifiedRequest;
511
+ })()
512
+ .catch((err) => {
513
+ logError(err);
514
+ return request;
515
+ })
516
+ .then((modifiedRequest) => {
517
+ if (startConnection === this._connection && !this._realStartedSend) {
518
+ this._realxhr.open(modifiedRequest.method, modifiedRequest.url);
519
+ this._events.emit('realOpen');
520
+ finish(modifiedRequest.body);
226
521
  }
227
- startConnection.modifiedResponseText = modifiedResponseText;
228
- if (startConnection !== this._connection) break;
229
- }
230
- return modifiedResponseText;
231
- })().then(modifiedResponseText => {
232
- if (startConnection === self._connection) {
233
- this.responseText = modifiedResponseText;
234
- finish();
235
- }
236
- }, err => {
237
- logError(err);
238
- if (startConnection === this._connection) {
239
- this.responseText = this._realxhr.responseText;
240
- finish();
241
- }
242
- }).catch(logError);
243
- return;
244
- } else {
245
- self.responseText = self._realxhr.responseText;
246
- }
247
- } else {
248
- self.responseText = '';
249
- }
250
- deliverFinalRsc(event);
251
- } else {
252
- if (self._realxhr.readyState == 1 && self.readyState == 1) {
253
- // Delayed open+send just happened. We already delivered an event
254
- // for this, so drop this event.
255
- return;
256
- } else if (self._realxhr.readyState >= 3 && supportsResponseText) {
257
- if (self._responseTextChangers.length) {
258
- // If we're going to transform the final response, then we don't
259
- // want to expose any partial untransformed responses and we don't
260
- // want to bother trying to transform partial responses. Only show
261
- // an empty string as the loaded response until the connection is
262
- // done.
263
- self.responseText = '';
264
- } else {
265
- self.responseText = self._realxhr.responseText;
266
- }
267
- } else {
268
- self.responseText = '';
522
+ });
269
523
  }
270
- self.readyState = self._realxhr.readyState;
271
- runRscListeners(event);
272
- }
273
- }, false);
274
- ['dispatchEvent', 'getAllResponseHeaders', 'getResponseHeader', 'overrideMimeType', 'responseType', 'responseXML', 'responseURL', 'status', 'statusText', 'timeout', 'ontimeout', 'onloadstart', 'onprogress', 'onabort', 'upload', 'withCredentials'].forEach(function (prop) {
275
- Object.defineProperty(self, prop, {
276
- enumerable: true,
277
- configurable: false,
278
- get: function () {
279
- // If we give the original native methods directly, they'll be called
280
- // with `this` as the XHRProxy object, which they aren't made for.
281
- if (typeof self._realxhr[prop] == 'function') {
282
- return self._realxhr[prop].bind(self._realxhr);
283
- }
284
- return self._realxhr[prop];
285
- },
286
- set: function (v) {
287
- if (typeof v == 'function') {
288
- v = wrapEventListener(this._realxhr, this, v);
289
- }
290
- self._realxhr[prop] = v;
524
+ else {
525
+ finish(body);
291
526
  }
292
- });
293
- });
294
- Object.defineProperty(self, 'response', {
295
- enumerable: true,
296
- configurable: false,
297
- get: function () {
298
- if (!this._realxhr.responseType || this._realxhr.responseType == 'text') {
299
- return this.responseText;
300
- } else {
301
- // We're not trying to transform non-text responses currently.
302
- return this._realxhr.response;
303
- }
304
- }
305
- });
306
- self.readyState = self._realxhr.readyState;
307
- }
308
- XHRProxy.prototype.abort = function () {
309
- // Important: If the request has already been sent, the XHR will change
310
- // its readyState to 4 after abort. However, we sometimes asynchronously
311
- // delay send calls. If the application has already called send but we
312
- // haven't sent off the real call yet, then we need to hurry up and send
313
- // something before the abort so that the readyState change happens.
314
- if (this._clientStartedSend && !this._realStartedSend) {
315
- if (this.readyState != 0 && this._realxhr.readyState == 0) {
316
- this._realxhr.open(this._connection.method, this._connection.url);
317
- }
318
- this._realStartedSend = true;
319
- this._realxhr.send();
320
- }
321
- this._realxhr.abort();
322
- };
323
- XHRProxy.prototype.setRequestHeader = function (name, value) {
324
- var self = this;
325
- if (this.readyState != 1) {
326
- console.warn('setRequestHeader improperly called at readyState ' + this.readyState);
327
- }
328
- if (!this._openState) {
329
- throw new Error('Can only set headers after open and before send');
330
- }
331
- this._connection.headers[name] = value;
332
- if (this._connection.async && this._requestChangers.length) {
333
- this._events.once('realOpen', function () {
334
- self._realxhr.setRequestHeader(name, value);
335
- });
336
- } else {
337
- this._realxhr.setRequestHeader(name, value);
338
- }
339
- };
340
- XHRProxy.prototype.addEventListener = function (name, listener) {
341
- if (!this._listeners[name]) {
342
- this._listeners[name] = [];
343
- this._boundListeners[name] = [];
344
- }
345
- if (!(0, _includes.default)(this._listeners[name], listener)) {
346
- var boundListener = wrapEventListener(this._realxhr, this, listener);
347
- this._listeners[name].push(listener);
348
- this._boundListeners[name].push(boundListener);
349
- if (!(0, _includes.default)(['readystatechange', 'load', 'error', 'loadend'], name)) {
350
- // certain listeners are called manually so that the final
351
- // call (when readyState==4) can be delayed.
352
- this._realxhr.addEventListener(name, boundListener, false);
353
- }
354
- }
355
- };
356
- XHRProxy.prototype.removeEventListener = function (name, listener) {
357
- if (!this._listeners[name]) {
358
- return;
359
- }
360
- var i = this._listeners[name].indexOf(listener);
361
- if (i == -1) {
362
- return;
363
- }
364
- this._listeners[name].splice(i, 1);
365
- var boundListener = this._boundListeners[name].splice(i, 1)[0];
366
- if (name != 'readystatechange') {
367
- this._realxhr.removeEventListener(name, boundListener, false);
368
- }
369
- };
370
- XHRProxy.prototype.open = function (method, url, async) {
371
- // Work around MailTrack issue
372
- if (!(this instanceof XHRProxy)) {
373
- return XHR.prototype.open.apply(this, arguments);
374
- }
375
- var self = this;
376
- this._connection = {
377
- method: method,
378
- url: url,
379
- params: (0, _querystring.parse)(url.split('?')[1] || ''),
380
- headers: {},
381
- async: arguments.length < 3 || !!async
382
527
  };
383
- this._clientStartedSend = false;
384
- this._realStartedSend = false;
385
- this._activeWrappers = findApplicableWrappers(this._wrappers, this._connection);
386
- this._responseTextChangers = this._activeWrappers.map(function (wrapper) {
387
- return wrapper.responseTextChanger && wrapper.responseTextChanger.bind(wrapper);
388
- }).filter(Boolean);
389
- this.responseText = '';
390
- this._openState = true;
391
- function finish(method, url) {
392
- return self._realxhr.open(method, url, self._connection.async);
393
- }
394
- if (this._connection.async) {
395
- this._requestChangers = this._activeWrappers.map(function (wrapper) {
396
- return wrapper.requestChanger && wrapper.requestChanger.bind(wrapper);
397
- }).filter(Boolean);
398
- if (this._requestChangers.length) {
399
- if (this.readyState != 1) {
400
- this.readyState = 1;
401
- this._fakeRscEvent();
402
- }
403
- } else {
404
- finish(method, url);
405
- }
406
- } else {
407
- finish(method, url);
408
- }
409
- };
410
- XHRProxy.prototype.send = function (body) {
411
- var self = this;
412
- this._clientStartedSend = true;
413
- this._openState = false;
414
- Object.defineProperty(this._connection, 'originalSendBody', {
415
- enumerable: true,
416
- writable: false,
417
- configurable: false,
418
- value: body
419
- });
420
- this._connection.responseType = this._realxhr.responseType || 'text';
421
- (0, _each.default)(self._activeWrappers, function (wrapper) {
422
- if (wrapper.originalSendBodyLogger) {
423
- try {
424
- wrapper.originalSendBodyLogger(self._connection, body);
425
- } catch (e) {
426
- logError(e);
427
- }
428
- }
429
- });
430
- function finish(body) {
431
- self._realStartedSend = true;
432
- self._realxhr.send(body);
433
- }
434
- if (this._connection.async && this._requestChangers.length) {
435
- // If the XHR object is re-used for another connection, then we need
436
- // to make sure that our upcoming async calls here do nothing.
437
- // Remember the current connection object, and do nothing in our async
438
- // calls if it no longer matches. Also check for aborts.
439
- const startConnection = this._connection;
440
- const request = {
441
- method: this._connection.method,
442
- url: this._connection.url,
443
- body: body
444
- };
445
- (async () => {
446
- let modifiedRequest = request;
447
- for (let requestChanger of this._requestChangers) {
448
- const longRunWarningTimer = setTimeout(() => {
449
- console.warn('requestChanger is taking too long', requestChanger, startConnection);
450
- }, WARNING_TIMEOUT);
451
- try {
452
- modifiedRequest = await requestChanger(this._connection, Object.freeze(modifiedRequest));
453
- } finally {
454
- clearTimeout(longRunWarningTimer);
455
- }
456
- (0, _assert.default)((0, _has.default)(modifiedRequest, 'method'), 'modifiedRequest has method');
457
- (0, _assert.default)((0, _has.default)(modifiedRequest, 'url'), 'modifiedRequest has url');
458
- (0, _assert.default)((0, _has.default)(modifiedRequest, 'body'), 'modifiedRequest has body');
459
- if (startConnection !== this._connection || this._realStartedSend) break;
460
- }
461
- return modifiedRequest;
462
- })().catch(err => {
463
- logError(err);
464
- return request;
465
- }).then(modifiedRequest => {
466
- if (startConnection === this._connection && !this._realStartedSend) {
467
- this._realxhr.open(modifiedRequest.method, modifiedRequest.url);
468
- this._events.emit('realOpen');
469
- finish(modifiedRequest.body);
470
- }
471
- });
472
- } else {
473
- finish(body);
474
- }
475
- };
476
- [XHRProxy, XHRProxy.prototype].forEach(function (obj) {
477
- Object.assign(obj, {
478
- UNSENT: 0,
479
- OPENED: 1,
480
- HEADERS_RECEIVED: 2,
481
- LOADING: 3,
482
- DONE: 4
528
+ [XHRProxy, XHRProxy.prototype].forEach(function (obj) {
529
+ Object.assign(obj, {
530
+ UNSENT: 0,
531
+ OPENED: 1,
532
+ HEADERS_RECEIVED: 2,
533
+ LOADING: 3,
534
+ DONE: 4,
535
+ });
483
536
  });
484
- });
485
- return XHRProxy;
486
- }
537
+ return XHRProxy;
538
+ }