@inboxsdk/core 0.2.28-alpha.3 → 0.2.28-alpha.5

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 (398) hide show
  1. package/inboxsdk.js +1 -1
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +5 -1
  4. package/src/build/exec.js +26 -0
  5. package/src/build/spawn.js +17 -0
  6. package/src/common/ajax.js +90 -0
  7. package/src/common/cachebust-url.js +10 -0
  8. package/src/common/censorHTMLstring.js +37 -0
  9. package/src/common/censorHTMLtree.js +28 -0
  10. package/src/common/censorJSONTree.js +15 -0
  11. package/src/common/connectivity-test.js +21 -0
  12. package/src/common/defer.js +11 -0
  13. package/src/common/find-parent.js +10 -0
  14. package/src/common/get-extension-id.js +7 -0
  15. package/src/common/get-or-fail.js +8 -0
  16. package/src/common/get-session-id.js +14 -0
  17. package/src/common/get-stack-trace.js +6 -0
  18. package/src/common/html-to-text.js +7 -0
  19. package/src/common/isElementVisible.js +6 -0
  20. package/src/common/load-script.js +127 -0
  21. package/src/common/log-error.js +191 -0
  22. package/src/common/quoted-split.js +18 -0
  23. package/src/common/rate-limit-queuer.js +57 -0
  24. package/src/common/rate-limit.js +14 -0
  25. package/src/common/version.js +6 -0
  26. package/src/inboxsdk-js/check-requirements.js +7 -3
  27. package/src/inboxsdk-js/header.js +1 -0
  28. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  30. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  31. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  32. package/src/inboxsdk-js/inboxsdk.js +33 -39
  33. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  34. package/src/inboxsdk-js/loading/platform-implementation-loader.js +27 -0
  35. package/src/injected-js/gmail/constants.js +2 -0
  36. package/src/injected-js/gmail/modify-suggestions.js +106 -0
  37. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  38. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  39. package/src/injected-js/gmail/setup-gmonkey-handler.js +49 -0
  40. package/src/injected-js/gmail/sync-compose-processor-20220909.js +298 -0
  41. package/src/injected-js/gmail/sync-compose-processor.js +55 -0
  42. package/src/injected-js/gmail/sync-compose-request-processor.js +110 -0
  43. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  44. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  45. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  46. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  47. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  48. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  49. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  50. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  51. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  52. package/src/injected-js/injected-logger.js +50 -0
  53. package/src/injected-js/main.js +11 -24
  54. package/src/injected-js/message-metadata-holder.js +52 -82
  55. package/src/injected-js/setup-data-exposer.js +89 -148
  56. package/src/injected-js/setup-error-silencer.js +21 -21
  57. package/src/injected-js/setup-event-reemitter.js +30 -22
  58. package/src/injected-js/setupCustomViewEventAssassin.js +90 -0
  59. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  60. package/src/injected-js/setupPushStateListener.js +18 -11
  61. package/src/injected-js/xhr-helper.js +62 -65
  62. package/src/injected-js/xhr-proxy-factory.js +195 -445
  63. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  64. package/src/platform-implementation-js/constants/nav-item-types.js +19 -0
  65. package/src/platform-implementation-js/constants/router.js +14 -9
  66. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  67. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  68. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  69. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +21 -0
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +28 -0
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +98 -0
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +4 -0
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +8 -0
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +12 -0
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +33 -0
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +4 -0
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +44 -0
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  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 +44 -67
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +95 -0
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +38 -0
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +12 -0
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +253 -0
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +200 -0
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +533 -0
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +289 -0
  115. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +21 -0
  116. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  117. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +28 -0
  118. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +19 -0
  119. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +126 -0
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  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 +391 -797
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  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 +188 -541
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +101 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +38 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +28 -0
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +22 -0
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +233 -0
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +223 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +157 -0
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +109 -0
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +5 -0
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +759 -0
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +84 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +33 -0
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +325 -0
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +58 -0
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +55 -0
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +96 -0
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +30 -0
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +10 -0
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +22 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  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 +24 -35
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +17 -0
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +33 -0
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +49 -0
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.js +65 -0
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.js +16 -0
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  271. package/src/platform-implementation-js/driver-common/update-icon.js +90 -0
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  273. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  274. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  275. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  276. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  277. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  278. package/src/platform-implementation-js/lib/ErrorCollector.js +47 -0
  279. package/src/platform-implementation-js/lib/Membrane.js +22 -0
  280. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +30 -0
  281. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  283. package/src/platform-implementation-js/lib/attemptWithRetries.js +16 -0
  284. package/src/platform-implementation-js/lib/common-page-communicator.js +137 -0
  285. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  286. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  287. package/src/platform-implementation-js/lib/delay-asap.js +12 -0
  288. package/src/platform-implementation-js/lib/delay-idle.js +16 -0
  289. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +36 -0
  290. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  291. package/src/platform-implementation-js/lib/dom/generic-button-view.js +39 -0
  292. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +39 -0
  293. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  294. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +38 -0
  295. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  296. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  297. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +12 -0
  298. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +79 -0
  299. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +28 -0
  300. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +15 -0
  301. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +15 -0
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +5 -0
  303. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  304. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +39 -0
  305. package/src/platform-implementation-js/lib/dom/parentNodes.js +8 -0
  306. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  307. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +6 -0
  308. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +22 -0
  309. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  310. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  311. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  312. package/src/platform-implementation-js/lib/dom/simulate-key.js +46 -0
  313. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +16 -0
  314. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +7 -0
  315. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +25 -0
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  317. package/src/platform-implementation-js/lib/fake-window-resize.js +5 -0
  318. package/src/platform-implementation-js/lib/from-event-target-capture.js +12 -0
  319. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +10 -0
  320. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  321. package/src/platform-implementation-js/lib/handler-registry.js +67 -0
  322. package/src/platform-implementation-js/lib/idMap.js +45 -0
  323. package/src/platform-implementation-js/lib/imageRequest.js +8 -0
  324. package/src/platform-implementation-js/lib/incrementName.js +7 -0
  325. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +14 -0
  326. package/src/platform-implementation-js/lib/inject-script.js +33 -0
  327. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  328. package/src/platform-implementation-js/lib/is-valid-app-id.js +27 -0
  329. package/src/platform-implementation-js/lib/is-valid-email.js +14 -0
  330. package/src/platform-implementation-js/lib/isNotNil.js +5 -0
  331. package/src/platform-implementation-js/lib/isStreakAppId.js +11 -0
  332. package/src/platform-implementation-js/lib/logger.js +441 -0
  333. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  334. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  335. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  337. package/src/platform-implementation-js/lib/persistent-queue.js +107 -0
  338. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  339. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  340. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  341. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  343. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  345. package/src/platform-implementation-js/lib/safe-event-emitter.js +17 -0
  346. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  347. package/src/platform-implementation-js/lib/stopper-pool.js +41 -0
  348. package/src/platform-implementation-js/lib/stream-wait-for.js +30 -0
  349. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  350. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  351. package/src/platform-implementation-js/lib/wait-for.js +28 -0
  352. package/src/platform-implementation-js/lib/waitForAsync.js +19 -0
  353. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  354. package/src/platform-implementation-js/main.js +9 -24
  355. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -1
  356. package/src/platform-implementation-js/namespaces/app-menu.js +31 -0
  357. package/src/platform-implementation-js/namespaces/butter-bar.js +163 -0
  358. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  359. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  360. package/src/platform-implementation-js/namespaces/global.js +27 -39
  361. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  362. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  363. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  364. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  365. package/src/platform-implementation-js/namespaces/router.js +70 -137
  366. package/src/platform-implementation-js/namespaces/search.js +19 -17
  367. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  368. package/src/platform-implementation-js/namespaces/user.js +36 -37
  369. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  370. package/src/platform-implementation-js/platform-implementation.js +98 -229
  371. package/src/platform-implementation-js/views/SimpleElementView.js +16 -0
  372. package/src/platform-implementation-js/views/app-menu-item-view.js +257 -0
  373. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  374. package/src/platform-implementation-js/views/collapsible-panel-view.js +222 -0
  375. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  376. package/src/platform-implementation-js/views/compose-button-view.js +45 -0
  377. package/src/platform-implementation-js/views/compose-view.js +312 -0
  378. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  379. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  380. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  381. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  382. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  383. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +14 -0
  384. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  385. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  386. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  387. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  388. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  389. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  390. package/src/platform-implementation-js/views/section-view.js +60 -52
  391. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  392. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +39 -0
  393. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +98 -0
  394. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +122 -0
  395. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  396. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  397. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  398. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,24 +1,15 @@
1
- /* @flow */
2
-
3
- import populateRouteID from '../../../lib/populateRouteID';
4
- import Logger from '../../../lib/logger';
5
-
6
- import type { RouteParams } from '../../../namespaces/router';
7
- import type GmailRouteProcessor from '../views/gmail-route-view/gmail-route-processor';
8
-
9
- export default function createLink(
10
- GmailRouteProcessor: GmailRouteProcessor,
11
- routeID: string,
12
- params: ?RouteParams | string
13
- ): string {
14
- params =
15
- typeof params === 'string'
16
- ? params
17
- : params
18
- ? Object.assign({}, params)
19
- : {};
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = createLink;
8
+ var _populateRouteID = _interopRequireDefault(require("../../../lib/populateRouteID"));
9
+ var _logger = _interopRequireDefault(require("../../../lib/logger"));
10
+ function createLink(GmailRouteProcessor, routeID, params) {
11
+ params = typeof params === 'string' ? params : params ? Object.assign({}, params) : {};
20
12
  routeID = GmailRouteProcessor.getCompatibleRouteID(routeID);
21
-
22
13
  if (typeof params === 'string') {
23
14
  var matches = routeID.match(/:/g);
24
15
  if (matches && matches.length === 1) {
@@ -29,50 +20,38 @@ export default function createLink(
29
20
  params = {};
30
21
  }
31
22
  }
32
-
33
23
  const hasPageParam = routeID.match(/:page(?:\/|$)/);
34
24
  if (hasPageParam && !params.page) {
35
25
  params.page = 0;
36
26
  }
37
-
38
27
  const parts = routeID.split('/');
39
28
 
40
29
  // attempt to use new, more strict populateRouteID fn, if that fails
41
30
  // log an error and fallback to older, more permissive approach.
42
31
  // intent is to retire the old approach once we understand the consequences.
43
- let processedRoute: string;
32
+ let processedRoute;
44
33
  try {
45
- processedRoute = populateRouteID(routeID, params);
34
+ processedRoute = (0, _populateRouteID.default)(routeID, params);
46
35
  } catch (error) {
47
- Logger.error(error, {
36
+ _logger.default.error(error, {
48
37
  routeID,
49
- paramsKey: Object.keys(params),
38
+ paramsKey: Object.keys(params)
50
39
  });
51
-
52
- processedRoute = parts
53
- .map(function (part) {
54
- if (part.indexOf(':') === -1) {
55
- return part;
56
- }
57
-
58
- const colonParts = part.split(':');
59
- if (params && typeof params[colonParts[1]] !== 'undefined') {
60
- return colonParts[0] + params[colonParts[1]];
61
- }
62
-
63
- return colonParts[0];
64
- })
65
- .map(encodeURIComponent)
66
- .join('/');
40
+ processedRoute = parts.map(function (part) {
41
+ if (part.indexOf(':') === -1) {
42
+ return part;
43
+ }
44
+ const colonParts = part.split(':');
45
+ if (params && typeof params[colonParts[1]] !== 'undefined') {
46
+ return colonParts[0] + params[colonParts[1]];
47
+ }
48
+ return colonParts[0];
49
+ }).map(encodeURIComponent).join('/');
67
50
  }
68
51
 
69
52
  //check if link is of the form inbox/p0 or search/blah/p0
70
- if (
71
- GmailRouteProcessor.isListRouteName(parts[0]) &&
72
- processedRoute.indexOf('p0') === processedRoute.length - 2
73
- ) {
53
+ if (GmailRouteProcessor.isListRouteName(parts[0]) && processedRoute.indexOf('p0') === processedRoute.length - 2) {
74
54
  processedRoute = processedRoute.substring(0, processedRoute.length - 3);
75
55
  }
76
-
77
56
  return '#' + processedRoute;
78
- }
57
+ }
@@ -0,0 +1,8 @@
1
+ import { convertBase } from '@macil/simple-base-converter';
2
+ const B64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
3
+ const GMAIL_ALPHABET = 'BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz';
4
+ export default function encodeDraftUrlId(syncThreadId, syncMessageId) {
5
+ const raw = `${syncThreadId.replace(/^thread-/, '')}+${syncMessageId}`;
6
+ const b64 = Buffer.from(raw).toString('base64').replace(/=/g, '');
7
+ return convertBase(b64, B64_ALPHABET, GMAIL_ALPHABET);
8
+ }
@@ -1,24 +1,19 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import memoize from 'lodash/memoize';
4
- import { defn } from 'ud';
5
- import gmailAjax from '../../../driver-common/gmailAjax';
6
- import { readDraftId } from '../gmail-response-processor';
7
- import type GmailDriver from '../gmail-driver';
8
- import isStreakAppId from '../../../lib/isStreakAppId';
9
-
10
- export type GetDraftIdResult = {
11
- draftID: ?string,
12
- debugData: ?Object,
13
- };
14
-
15
- async function uncachedGetDraftIDForMessageID(
16
- driver: GmailDriver,
17
- messageID: string
18
- ): Promise<GetDraftIdResult> {
19
- const response = await gmailAjax({
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _memoize = _interopRequireDefault(require("lodash/memoize"));
9
+ var _ud = require("ud");
10
+ var _gmailAjax = _interopRequireDefault(require("../../../driver-common/gmailAjax"));
11
+ var _gmailResponseProcessor = require("../gmail-response-processor");
12
+ var _isStreakAppId = _interopRequireDefault(require("../../../lib/isStreakAppId"));
13
+ async function uncachedGetDraftIDForMessageID(driver, messageID) {
14
+ const response = await (0, _gmailAjax.default)({
20
15
  method: 'GET',
21
- url: (document.location: any).origin + document.location.pathname,
16
+ url: document.location.origin + document.location.pathname,
22
17
  data: {
23
18
  ui: '2',
24
19
  ik: driver.getPageCommunicator().getIkValue(),
@@ -28,43 +23,37 @@ async function uncachedGetDraftIDForMessageID(
28
23
  nsc: '1',
29
24
  mb: '0',
30
25
  rt: 'j',
31
- search: 'drafts',
32
- },
26
+ search: 'drafts'
27
+ }
33
28
  });
34
29
  try {
35
- const draftID = readDraftId(response.text, messageID);
36
- const debugData = { responseText: response.text };
37
- return { draftID, debugData };
30
+ const draftID = (0, _gmailResponseProcessor.readDraftId)(response.text, messageID);
31
+ const debugData = {
32
+ responseText: response.text
33
+ };
34
+ return {
35
+ draftID,
36
+ debugData
37
+ };
38
38
  } catch (err) {
39
- if (isStreakAppId(driver.getAppId())) {
39
+ if ((0, _isStreakAppId.default)(driver.getAppId())) {
40
40
  driver.getLogger().error(err, {
41
41
  message: 'failed to read draft ID',
42
42
  messageID,
43
- text: response.text,
43
+ text: response.text
44
44
  });
45
45
  }
46
46
  throw err;
47
47
  }
48
48
  }
49
-
50
- const cachedGetDraftIDForMessageID: (
51
- driver: GmailDriver,
52
- messageID: string
53
- ) => Promise<GetDraftIdResult> = memoize(
54
- uncachedGetDraftIDForMessageID,
55
- (driver, messageID) => messageID
56
- );
57
-
58
- function getDraftIDForMessageID(
59
- driver: GmailDriver,
60
- messageID: string,
61
- skipCache: boolean = false
62
- ): Promise<GetDraftIdResult> {
49
+ const cachedGetDraftIDForMessageID = (0, _memoize.default)(uncachedGetDraftIDForMessageID, (driver, messageID) => messageID);
50
+ function getDraftIDForMessageID(driver, messageID) {
51
+ let skipCache = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
63
52
  if (skipCache) {
64
53
  return uncachedGetDraftIDForMessageID(driver, messageID);
65
54
  } else {
66
55
  return cachedGetDraftIDForMessageID(driver, messageID);
67
56
  }
68
57
  }
69
-
70
- export default defn(module, getDraftIDForMessageID);
58
+ var _default = (0, _ud.defn)(module, getDraftIDForMessageID);
59
+ exports.default = _default;
@@ -1,43 +1,33 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import NativeGmailNavItemView from '../views/native-gmail-nav-item-view';
4
- import GmailElementGetter from '../gmail-element-getter';
5
- import findParent from '../../../../common/find-parent';
6
- import waitFor from '../../../lib/wait-for';
7
-
8
- import type GmailDriver from '../gmail-driver';
9
-
10
- export default function getNativeNavItem(
11
- driver: GmailDriver,
12
- label: string
13
- ): Promise<NativeGmailNavItemView> {
14
- return waitFor(() => {
15
- const navContainer = GmailElementGetter.getLeftNavContainerElement();
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = getNativeNavItem;
8
+ var _nativeGmailNavItemView = _interopRequireDefault(require("../views/native-gmail-nav-item-view"));
9
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
10
+ var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
11
+ var _waitFor = _interopRequireDefault(require("../../../lib/wait-for"));
12
+ function getNativeNavItem(driver, label) {
13
+ return (0, _waitFor.default)(() => {
14
+ const navContainer = _gmailElementGetter.default.getLeftNavContainerElement();
16
15
  if (!navContainer) return null;
17
16
  return navContainer.querySelector(`.aim a[href*="#${label}"]`);
18
- }, 300 * 1000)
19
- .then((labelLinkElement) => {
20
- const labelElement = findParent(labelLinkElement, (el) =>
21
- el.classList.contains('aim')
22
- );
23
-
24
- if (!labelElement) {
25
- throw new Error('native nav item structured weird');
26
- }
27
-
28
- if (!(labelElement: any).__nativeGmailNavItemView) {
29
- (labelElement: any).__nativeGmailNavItemView =
30
- new NativeGmailNavItemView(driver, labelElement, label);
31
- }
32
-
33
- return (labelElement: any).__nativeGmailNavItemView;
34
- })
35
- .catch((err) => {
36
- if (GmailElementGetter.isStandalone()) {
37
- // never resolve
38
- return new Promise((resolve, reject) => {});
39
- }
40
-
41
- throw err;
42
- });
43
- }
17
+ }, 300 * 1000).then(labelLinkElement => {
18
+ const labelElement = (0, _findParent.default)(labelLinkElement, el => el.classList.contains('aim'));
19
+ if (!labelElement) {
20
+ throw new Error('native nav item structured weird');
21
+ }
22
+ if (!labelElement.__nativeGmailNavItemView) {
23
+ labelElement.__nativeGmailNavItemView = new _nativeGmailNavItemView.default(driver, labelElement, label);
24
+ }
25
+ return labelElement.__nativeGmailNavItemView;
26
+ }).catch(err => {
27
+ if (_gmailElementGetter.default.isStandalone()) {
28
+ // never resolve
29
+ return new Promise((resolve, reject) => {});
30
+ }
31
+ throw err;
32
+ });
33
+ }
@@ -0,0 +1,12 @@
1
+ import getOriginalMessagePage from '../../../driver-common/getOriginalMessagePage';
2
+ import htmlToText from '../../../../common/html-to-text';
3
+ export default async function getRfcMessageIdForGmailMessageId(driver, gmailMessageId) {
4
+ const text = await getOriginalMessagePage(driver, {
5
+ oldGmailMessageID: gmailMessageId,
6
+ });
7
+ const match = text.match(/^Message-ID:\s+(\S+)\s*$/im);
8
+ if (!match) {
9
+ throw new Error("Failed to find rfc id for gmail thread id. Message may not exist in user's account.");
10
+ }
11
+ return htmlToText(match[1]);
12
+ }
@@ -0,0 +1,33 @@
1
+ import gmailAjax from '../../../driver-common/gmailAjax';
2
+ import querystring from 'querystring';
3
+ import * as GmailResponseProcessor from '../gmail-response-processor';
4
+ import getRfcMessageIdForGmailMessageId from './get-rfc-message-id-for-gmail-message-id';
5
+ export default async function getRfcMessageIdForGmailThreadId(driver, gmailThreadId) {
6
+ const messageIdQuery = {
7
+ ui: 2,
8
+ ik: driver.getPageCommunicator().getIkValue(),
9
+ view: 'cv',
10
+ th: gmailThreadId,
11
+ nsc: 1,
12
+ mb: 0,
13
+ rt: 'j',
14
+ search: 'all',
15
+ };
16
+ const gmailMessageIdResponse = await gmailAjax({
17
+ method: 'POST',
18
+ url: document.location.origin +
19
+ document.location.pathname +
20
+ '?' +
21
+ querystring.stringify(messageIdQuery),
22
+ canRetry: true,
23
+ });
24
+ const extractedIds = GmailResponseProcessor.extractMessageIdsFromThreadBatchRequest(gmailMessageIdResponse.text);
25
+ if (Object.keys(extractedIds).length !== 1) {
26
+ throw new Error(`Expected to find 1 thread/message ID pair, but got ${Object.keys(extractedIds).length}`);
27
+ }
28
+ const gmailMessageId = extractedIds[gmailThreadId];
29
+ if (!gmailMessageId) {
30
+ throw new Error('Could not find a message ID for given thread ID');
31
+ }
32
+ return getRfcMessageIdForGmailMessageId(driver, gmailMessageId);
33
+ }
@@ -1,33 +1,25 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- export type URLObject = {
4
- name: string,
5
- params: string[],
6
- query: ?string,
7
- hash: string,
8
- };
9
-
10
- export default function getURLObject(url: string): URLObject {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getURLObject;
7
+ function getURLObject(url) {
11
8
  const m = url.match(/#([^?]*)(?:\?(.*))?/);
12
9
  if (!m) {
13
10
  return {
14
11
  name: 'inbox',
15
12
  params: [],
16
13
  hash: '',
17
- query: undefined,
14
+ query: undefined
18
15
  };
19
16
  }
20
-
21
17
  const hash = m[1];
22
18
  const hashParts = hash.split('/');
23
-
24
19
  return {
25
20
  name: decodeURIComponent(hashParts[0]),
26
- params: hashParts
27
- .slice(1)
28
- .map((part) => part.replace(/\+/g, ' '))
29
- .map(decodeURIComponent),
21
+ params: hashParts.slice(1).map(part => part.replace(/\+/g, ' ')).map(decodeURIComponent),
30
22
  query: m[2],
31
- hash,
23
+ hash
32
24
  };
33
- }
25
+ }
@@ -1,38 +1,31 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import { defn } from 'ud';
4
- import BigNumber from 'bignumber.js';
5
-
6
- import getSyncThreadsForSearch from '../../../driver-common/getSyncThreadsForSearch';
7
-
8
- import gmailAjax from '../../../driver-common/gmailAjax';
9
- import isStreakAppId from '../../../lib/isStreakAppId';
10
-
11
- import { extractThreadsFromSearchResponse } from '../gmail-sync-response-processor';
12
-
13
- import type GmailDriver from '../gmail-driver';
14
- import type { SyncThread } from '../gmail-sync-response-processor';
15
-
16
- export default async function getSyncThreadForOldGmailThreadId(
17
- driver: GmailDriver,
18
- oldGmailThreadId: string
19
- ): Promise<SyncThread> {
20
- const { threads: threadDescriptors, _text } = await getSyncThreadsForSearch(
21
- driver,
22
- 'threadid:' + new BigNumber(oldGmailThreadId, 16).toString(10)
23
- );
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = getSyncThreadForOldGmailThreadId;
8
+ var _ud = require("ud");
9
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
10
+ var _getSyncThreadsForSearch = _interopRequireDefault(require("../../../driver-common/getSyncThreadsForSearch"));
11
+ var _gmailAjax = _interopRequireDefault(require("../../../driver-common/gmailAjax"));
12
+ var _isStreakAppId = _interopRequireDefault(require("../../../lib/isStreakAppId"));
13
+ var _gmailSyncResponseProcessor = require("../gmail-sync-response-processor");
14
+ async function getSyncThreadForOldGmailThreadId(driver, oldGmailThreadId) {
15
+ const {
16
+ threads: threadDescriptors,
17
+ _text
18
+ } = await (0, _getSyncThreadsForSearch.default)(driver, 'threadid:' + new _bignumber.default(oldGmailThreadId, 16).toString(10));
24
19
  const firstThread = threadDescriptors[0];
25
20
  if (firstThread == null) {
26
21
  console.error(`Thread with ID ${oldGmailThreadId} not found by Gmail`); //eslint-disable-line
27
- const isStreak = isStreakAppId(driver.getAppId());
28
- const err = new Error(
29
- 'Thread not found by getSyncThreadForOldGmailThreadId'
30
- );
22
+ const isStreak = (0, _isStreakAppId.default)(driver.getAppId());
23
+ const err = new Error('Thread not found by getSyncThreadForOldGmailThreadId');
31
24
  driver.getLogger().error(err, {
32
25
  oldGmailThreadId: isStreak ? oldGmailThreadId : null,
33
- responseText: isStreak ? _text : null,
26
+ responseText: isStreak ? _text : null
34
27
  });
35
28
  throw err;
36
29
  }
37
30
  return firstThread;
38
- }
31
+ }
@@ -1,76 +1,64 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import { defn } from 'ud';
4
- import gmailAjax from '../../../driver-common/gmailAjax';
5
- import { extractThreadsFromThreadResponse } from '../gmail-sync-response-processor';
6
- import getAccountUrlPart from '../../../driver-common/getAccountUrlPart';
7
- import type GmailDriver from '../gmail-driver';
8
- import type { SyncThread } from '../gmail-sync-response-processor';
9
-
10
- export default async function getThreadFromSyncThreadId(
11
- driver: GmailDriver,
12
- syncThreadId: string
13
- ): Promise<?SyncThread> {
14
- const [btaiHeader, xsrfToken] = await Promise.all([
15
- driver.getPageCommunicator().getBtaiHeader(),
16
- driver.getPageCommunicator().getXsrfToken(),
17
- ]);
18
- return getThreadFromSyncThreadIdUsingHeaders(
19
- syncThreadId,
20
- btaiHeader,
21
- xsrfToken
22
- );
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = getThreadFromSyncThreadId;
8
+ exports.getThreadFromSyncThreadIdUsingHeaders = getThreadFromSyncThreadIdUsingHeaders;
9
+ var _ud = require("ud");
10
+ var _gmailAjax = _interopRequireDefault(require("../../../driver-common/gmailAjax"));
11
+ var _gmailSyncResponseProcessor = require("../gmail-sync-response-processor");
12
+ var _getAccountUrlPart = _interopRequireDefault(require("../../../driver-common/getAccountUrlPart"));
13
+ async function getThreadFromSyncThreadId(driver, syncThreadId) {
14
+ const [btaiHeader, xsrfToken] = await Promise.all([driver.getPageCommunicator().getBtaiHeader(), driver.getPageCommunicator().getXsrfToken()]);
15
+ return getThreadFromSyncThreadIdUsingHeaders(syncThreadId, btaiHeader, xsrfToken);
23
16
  }
24
-
25
- export async function getThreadFromSyncThreadIdUsingHeaders(
26
- syncThreadId: string,
27
- btaiHeader: string,
28
- xsrfToken: string
29
- ): Promise<?SyncThread> {
17
+ async function getThreadFromSyncThreadIdUsingHeaders(syncThreadId, btaiHeader, xsrfToken) {
30
18
  let responseText = null;
31
19
  try {
32
- let { text } = await gmailAjax({
20
+ let {
21
+ text
22
+ } = await (0, _gmailAjax.default)({
33
23
  method: 'POST',
34
- url: `https://mail.google.com/sync${getAccountUrlPart()}/i/fd`,
24
+ url: `https://mail.google.com/sync${(0, _getAccountUrlPart.default)()}/i/fd`,
35
25
  headers: {
36
26
  'Content-Type': 'application/json',
37
27
  'X-Framework-Xsrf-Token': xsrfToken,
38
28
  'X-Gmail-BTAI': btaiHeader,
39
- 'X-Google-BTD': '1',
29
+ 'X-Google-BTD': '1'
40
30
  },
41
31
  data: JSON.stringify({
42
- '1': [
43
- {
44
- '1': syncThreadId,
45
- '2': 1,
46
- },
47
- ],
48
- }),
32
+ '1': [{
33
+ '1': syncThreadId,
34
+ '2': 1
35
+ }]
36
+ })
49
37
  });
50
38
  responseText = text;
51
39
  } catch (err) {
52
40
  // try sending request with new format 2022_09_09
53
- let { text } = await gmailAjax({
41
+ let {
42
+ text
43
+ } = await (0, _gmailAjax.default)({
54
44
  method: 'POST',
55
- url: `https://mail.google.com/sync${getAccountUrlPart()}/i/fd?rt=r&pt=ji`,
45
+ url: `https://mail.google.com/sync${(0, _getAccountUrlPart.default)()}/i/fd?rt=r&pt=ji`,
56
46
  headers: {
57
47
  'Content-Type': 'application/json',
58
48
  'X-Framework-Xsrf-Token': xsrfToken,
59
49
  'X-Gmail-BTAI': btaiHeader,
60
- 'X-Google-BTD': '1',
50
+ 'X-Google-BTD': '1'
61
51
  },
62
- data: JSON.stringify([[[syncThreadId, 1]], 2]),
52
+ data: JSON.stringify([[[syncThreadId, 1]], 2])
63
53
  });
64
54
  responseText = text;
65
55
  }
66
-
67
- const threadDescriptors = extractThreadsFromThreadResponse(responseText);
56
+ const threadDescriptors = (0, _gmailSyncResponseProcessor.extractThreadsFromThreadResponse)(responseText);
68
57
  if (threadDescriptors.length > 0) {
69
58
  const thread = threadDescriptors[0];
70
59
  if (thread.oldGmailThreadID) {
71
60
  return thread;
72
61
  }
73
62
  }
74
-
75
63
  return null;
76
- }
64
+ }
@@ -1,19 +1,19 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import gmailElementGetter from '../gmail-element-getter';
4
- import type GmailDriver from '../gmail-driver';
5
- import isIntegratedViewGmail from './isIntegratedViewGmail';
6
- import { waitForMenuReady } from './add-nav-item';
7
-
8
- export default async function gmailLoadEvent(driver: GmailDriver) {
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = gmailLoadEvent;
8
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
9
+ var _isIntegratedViewGmail = _interopRequireDefault(require("./isIntegratedViewGmail"));
10
+ var _addNavItem = require("./add-nav-item");
11
+ async function gmailLoadEvent(driver) {
9
12
  const pageCommunicator = driver.getPageCommunicator();
10
-
11
- const isConversationViewDisabled =
12
- await pageCommunicator.isConversationViewDisabled();
13
- await waitForMenuReady();
14
-
13
+ const isConversationViewDisabled = await pageCommunicator.isConversationViewDisabled();
14
+ await (0, _addNavItem.waitForMenuReady)();
15
15
  driver.getLogger().eventSite('gmailSettings', {
16
- isGmailIntegratedView: isIntegratedViewGmail(),
16
+ isGmailIntegratedView: (0, _isIntegratedViewGmail.default)(),
17
17
  screenWidth: window.screen && window.screen.width,
18
18
  screenHeight: window.screen && window.screen.height,
19
19
  windowWidth: window.innerWidth,
@@ -22,40 +22,22 @@ export default async function gmailLoadEvent(driver: GmailDriver) {
22
22
  isUsingSyncAPI: pageCommunicator.isUsingSyncAPI(),
23
23
  previewPane: pageCommunicator.getUserOriginalPreviewPaneMode(),
24
24
  isConversationViewDisabled,
25
- wasAccountSwitcherReadyAtStart:
26
- driver.getEnvData().wasAccountSwitcherReadyAtStart,
27
- timings: Object.assign(
28
- ({
29
- responseStart:
30
- global.performance && global.performance.timing.responseStart,
31
- responseEnd:
32
- global.performance && global.performance.timing.responseEnd,
33
- domLoading: global.performance && global.performance.timing.domLoading,
34
- domInteractive:
35
- global.performance && global.performance.timing.domInteractive,
36
- domComplete:
37
- global.performance && global.performance.timing.domComplete,
38
- domContentLoadedEventStart:
39
- global.performance &&
40
- global.performance.timing.domContentLoadedEventStart,
41
- domContentLoadedEventEnd:
42
- global.performance &&
43
- global.performance.timing.domContentLoadedEventEnd,
44
- domainLookupEnd:
45
- global.performance && global.performance.timing.domainLookupEnd,
46
- domainLookupStart:
47
- global.performance && global.performance.timing.domainLookupStart,
48
- fetchStart: global.performance && global.performance.timing.fetchStart,
49
- loadEventStart:
50
- global.performance && global.performance.timing.loadEventStart,
51
- loadEventEnd:
52
- global.performance && global.performance.timing.loadEventEnd,
53
- navigationStart:
54
- global.performance && global.performance.timing.navigationStart,
55
- requestStart:
56
- global.performance && global.performance.timing.requestStart,
57
- }: any),
58
- driver.getTimings()
59
- ),
25
+ wasAccountSwitcherReadyAtStart: driver.getEnvData().wasAccountSwitcherReadyAtStart,
26
+ timings: Object.assign({
27
+ responseStart: global.performance && global.performance.timing.responseStart,
28
+ responseEnd: global.performance && global.performance.timing.responseEnd,
29
+ domLoading: global.performance && global.performance.timing.domLoading,
30
+ domInteractive: global.performance && global.performance.timing.domInteractive,
31
+ domComplete: global.performance && global.performance.timing.domComplete,
32
+ domContentLoadedEventStart: global.performance && global.performance.timing.domContentLoadedEventStart,
33
+ domContentLoadedEventEnd: global.performance && global.performance.timing.domContentLoadedEventEnd,
34
+ domainLookupEnd: global.performance && global.performance.timing.domainLookupEnd,
35
+ domainLookupStart: global.performance && global.performance.timing.domainLookupStart,
36
+ fetchStart: global.performance && global.performance.timing.fetchStart,
37
+ loadEventStart: global.performance && global.performance.timing.loadEventStart,
38
+ loadEventEnd: global.performance && global.performance.timing.loadEventEnd,
39
+ navigationStart: global.performance && global.performance.timing.navigationStart,
40
+ requestStart: global.performance && global.performance.timing.requestStart
41
+ }, driver.getTimings())
60
42
  });
61
- }
43
+ }