@inboxsdk/core 1.2.4 → 1.2.7

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 (332) hide show
  1. package/inboxsdk.js +4474 -463
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -1
  4. package/pageWorld.js +1 -1
  5. package/pageWorld.js.map +1 -1
  6. package/src/common/load-script.d.ts +0 -6
  7. package/src/common/load-script.d.ts.map +1 -1
  8. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -1
  9. package/src/inboxsdk.d.ts +29 -0
  10. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
  11. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
  12. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
  13. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
  14. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
  15. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  16. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
  17. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
  18. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
  19. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
  20. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
  21. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
  22. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
  23. package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
  24. package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
  25. package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
  26. package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
  27. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
  28. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  29. package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
  30. package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
  31. package/src/build/exec.js +0 -26
  32. package/src/build/spawn.js +0 -17
  33. package/src/common/ajax.js +0 -90
  34. package/src/common/cachebust-url.js +0 -10
  35. package/src/common/censorHTMLstring.js +0 -37
  36. package/src/common/censorHTMLtree.js +0 -28
  37. package/src/common/censorJSONTree.js +0 -15
  38. package/src/common/connectivity-test.js +0 -21
  39. package/src/common/defer.js +0 -11
  40. package/src/common/find-parent.js +0 -10
  41. package/src/common/get-extension-id.js +0 -7
  42. package/src/common/get-or-fail.js +0 -8
  43. package/src/common/get-session-id.js +0 -14
  44. package/src/common/get-stack-trace.js +0 -6
  45. package/src/common/html-to-text.js +0 -7
  46. package/src/common/isElementVisible.js +0 -6
  47. package/src/common/load-script.js +0 -128
  48. package/src/common/log-error.js +0 -185
  49. package/src/common/quoted-split.js +0 -18
  50. package/src/common/rate-limit-queuer.js +0 -57
  51. package/src/common/rate-limit.js +0 -14
  52. package/src/common/version.js +0 -8
  53. package/src/inboxsdk-js/header.js +0 -19
  54. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
  55. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
  56. package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
  57. package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
  58. package/src/inboxsdk-js/inboxsdk.js +0 -23
  59. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
  60. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -31
  61. package/src/injected-js/gmail/constants.js +0 -2
  62. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  63. package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
  64. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  65. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  66. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  67. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
  68. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
  69. package/src/injected-js/gmail/thread-identifier/index.js +0 -133
  70. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
  71. package/src/injected-js/injected-logger.js +0 -50
  72. package/src/injected-js/main.js +0 -49
  73. package/src/injected-js/message-metadata-holder.js +0 -103
  74. package/src/injected-js/setup-data-exposer.js +0 -135
  75. package/src/injected-js/setup-error-silencer.js +0 -15
  76. package/src/injected-js/setup-event-reemitter.js +0 -47
  77. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  78. package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
  79. package/src/injected-js/setupPushStateListener.js +0 -14
  80. package/src/injected-js/xhr-helper.js +0 -43
  81. package/src/injected-js/xhr-proxy-factory.js +0 -537
  82. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  83. package/src/platform-implementation-js/constants/router.js +0 -60
  84. package/src/platform-implementation-js/constants/toolbars.js +0 -5
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
  116. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
  117. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
  118. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
  119. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
  120. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
  121. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
  122. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  123. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  124. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
  125. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
  126. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
  127. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
  128. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  129. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
  130. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  131. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -328
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
  180. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
  181. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  182. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
  183. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
  184. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
  185. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
  186. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
  196. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  197. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
  198. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
  199. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
  200. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
  201. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
  202. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
  203. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
  204. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
  205. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
  206. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  207. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
  208. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
  209. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  210. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
  211. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  212. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
  213. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  214. package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
  215. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  216. package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
  217. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
  218. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
  219. package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
  220. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  221. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
  222. package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
  223. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
  224. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
  225. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  226. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  227. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  228. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  229. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  230. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
  231. package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
  232. package/src/platform-implementation-js/lib/delay-asap.js +0 -10
  233. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  234. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  235. package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
  236. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
  237. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  238. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  239. package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
  240. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  241. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
  242. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
  243. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  244. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  245. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
  246. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  247. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  248. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  249. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
  250. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
  251. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  252. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  253. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  254. package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
  255. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
  256. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  257. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  258. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  259. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  260. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  261. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  262. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  263. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
  264. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  265. package/src/platform-implementation-js/lib/idMap.js +0 -40
  266. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  267. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  268. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -8
  269. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  270. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
  271. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  272. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  273. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  274. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  275. package/src/platform-implementation-js/lib/logger.js +0 -439
  276. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
  277. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  278. package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
  279. package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
  280. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
  281. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
  282. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  283. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  284. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
  285. package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
  286. package/src/platform-implementation-js/lib/wait-for.js +0 -38
  287. package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
  288. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
  289. package/src/platform-implementation-js/main.js +0 -42
  290. package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
  291. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  292. package/src/platform-implementation-js/namespaces/compose.js +0 -59
  293. package/src/platform-implementation-js/namespaces/conversations.js +0 -83
  294. package/src/platform-implementation-js/namespaces/global.js +0 -30
  295. package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
  296. package/src/platform-implementation-js/namespaces/lists.js +0 -40
  297. package/src/platform-implementation-js/namespaces/modal.js +0 -43
  298. package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
  299. package/src/platform-implementation-js/namespaces/router.js +0 -139
  300. package/src/platform-implementation-js/namespaces/search.js +0 -29
  301. package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
  302. package/src/platform-implementation-js/namespaces/user.js +0 -57
  303. package/src/platform-implementation-js/namespaces/widgets.js +0 -73
  304. package/src/platform-implementation-js/platform-implementation.js +0 -178
  305. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  306. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
  307. package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
  308. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
  309. package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
  310. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  311. package/src/platform-implementation-js/views/compose-view.js +0 -310
  312. package/src/platform-implementation-js/views/content-panel-view.js +0 -36
  313. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
  314. package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
  315. package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
  316. package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
  317. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  318. package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
  319. package/src/platform-implementation-js/views/nav-item-view.js +0 -130
  320. package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
  321. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
  322. package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
  323. package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
  324. package/src/platform-implementation-js/views/section-view.js +0 -60
  325. package/src/platform-implementation-js/views/thread-row-view.js +0 -90
  326. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  327. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  328. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
  329. package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
  330. package/src/platform-implementation-js/widgets/modal-view.js +0 -108
  331. package/src/platform-implementation-js/widgets/mole-view.js +0 -38
  332. package/src/platform-implementation-js/widgets/top-message-bar-view.js +0 -15
@@ -1,532 +0,0 @@
1
- import flatten from 'lodash/flatten';
2
- import last from 'lodash/last';
3
- import t from 'transducers.js';
4
- import mapIndexed from 'map-indexed-xf';
5
- import assert from 'assert';
6
- import htmlToText from '../../../common/html-to-text';
7
- export function interpretSentEmailResponse(responseString) {
8
- const emailSentArray = deserialize(responseString).value;
9
- const gmailMessageId = extractGmailMessageIdFromSentEmail(emailSentArray);
10
- const gmailThreadId = extractGmailThreadIdFromSentEmail(emailSentArray) || gmailMessageId;
11
- if (!gmailMessageId || !gmailThreadId) {
12
- throw new Error('Failed to read email response');
13
- }
14
- return {
15
- threadID: gmailThreadId,
16
- messageID: gmailMessageId,
17
- };
18
- }
19
- export function extractGmailMessageIdFromSentEmail(emailSentArray) {
20
- const messageIdArrayMarker = 'a';
21
- const messageIdArray = _searchArray(emailSentArray, messageIdArrayMarker, (markerArray) => markerArray.length > 3 &&
22
- Array.isArray(markerArray[3]) &&
23
- markerArray[3].length > 0);
24
- if (!messageIdArray) {
25
- return null;
26
- }
27
- return messageIdArray[3][0];
28
- }
29
- export function extractGmailThreadIdFromSentEmail(emailSentArray) {
30
- const threadIdArrayMarker = 'csd';
31
- const threadIdArray = _searchArray(emailSentArray, threadIdArrayMarker, function (markerArray) {
32
- return (markerArray.length == 3 &&
33
- Array.isArray(markerArray[2]) &&
34
- markerArray[2].length > 5);
35
- });
36
- if (!threadIdArray) {
37
- return null;
38
- }
39
- return threadIdArray[1];
40
- }
41
- export function extractGmailThreadIdFromMessageIdSearch(responseString) {
42
- const threadResponseArray = deserialize(responseString).value;
43
- const threadIdArrayMarker = 'cs';
44
- const threadIdArray = _searchArray(threadResponseArray, threadIdArrayMarker, (markerArray) => markerArray[0] === 'cs' && markerArray.length > 20);
45
- if (!threadIdArray) {
46
- return null;
47
- }
48
- return threadIdArray[1];
49
- }
50
- export function rewriteSingleQuotes(s) {
51
- // The input string contains unquoted, double-quoted, and single-quoted
52
- // parts. Parse the string for these parts, and transform the single-
53
- // quoted part into a double-quoted part by swapping the quotes, and
54
- // escaping any double-quotes inside of it with backslashes.
55
- // i is our position in the input string. result is our result string that
56
- // we'll copy the parts of the input to as we interpret them.
57
- let i = 0;
58
- const resultParts = [];
59
- // eslint-disable-next-line no-constant-condition
60
- while (true) {
61
- // Find the position of the next singly or doubly quoted part.
62
- // `i` is increasing monotonically every round of this loop, and the loop
63
- // ends as soon as no matches are found after the `i`th position in the
64
- // string, so this while loop can't be infinite.
65
- const nextQuoteIndex = findNextQuote(s, i);
66
- if (nextQuoteIndex < 0) {
67
- resultParts.push(s.substr(i));
68
- break;
69
- }
70
- // Copy the unquoted part preceding the quoted section we found into the
71
- // result, and put a double-quote into the result to begin the quoted
72
- // section we found.
73
- resultParts.push(s.substr(i, nextQuoteIndex - i));
74
- resultParts.push('"');
75
- i = nextQuoteIndex + 1;
76
- if (s[nextQuoteIndex] === '"') {
77
- // Find the next quotation mark not preceded by a backslash.
78
- const nextDoubleQuoteIndex = findNextUnescapedCharacter(s, i, '"');
79
- if (nextDoubleQuoteIndex < 0) {
80
- throw new Error('Unclosed double quote');
81
- }
82
- // Add that entire double-quoted part to the result.
83
- resultParts.push(s.slice(i, nextDoubleQuoteIndex + 1));
84
- i = nextDoubleQuoteIndex + 1;
85
- }
86
- else {
87
- // Same logic as above, but for a single-quoted part.
88
- const nextSingleQuoteIndex = findNextUnescapedCharacter(s, i, "'");
89
- if (nextSingleQuoteIndex < 0) {
90
- throw new Error('Unclosed single quote');
91
- }
92
- // Escape all double-quotes inside the part, un-escape all single-quotes
93
- // inside the part, and then write it out into the result with the ending
94
- // single-quote replaced with a double-quote.
95
- const part = s
96
- .slice(i, nextSingleQuoteIndex)
97
- .replace(/"/g, '\\"')
98
- .replace(/\\'/g, "'");
99
- resultParts.push(part);
100
- resultParts.push('"');
101
- i = nextSingleQuoteIndex + 1;
102
- }
103
- }
104
- return resultParts.join('');
105
- }
106
- function findNextQuote(s, start) {
107
- for (let i = start, len = s.length; i < len; i++) {
108
- if (s[i] === '"' || s[i] === "'") {
109
- return i;
110
- }
111
- }
112
- return -1;
113
- }
114
- function findNextUnescapedCharacter(s, start, char) {
115
- for (let i = start, len = s.length; i < len; i++) {
116
- if (s[i] === '\\') {
117
- i++;
118
- }
119
- else if (s[i] === char) {
120
- return i;
121
- }
122
- }
123
- return -1;
124
- }
125
- export function deserialize(threadResponseString) {
126
- const options = {
127
- includeLengths: false,
128
- suggestionMode: /^5\n/.test(threadResponseString),
129
- noArrayNewLines: !/^[,\]]/m.test(threadResponseString),
130
- includeExplicitNulls: true,
131
- };
132
- const value = [];
133
- let pos;
134
- if (options.suggestionMode) {
135
- pos = threadResponseString.indexOf("'\n");
136
- if (pos === -1) {
137
- throw new Error('Message was missing beginning header');
138
- }
139
- pos += 2;
140
- }
141
- else {
142
- pos = threadResponseString.indexOf('\n\n');
143
- if (pos === -1) {
144
- throw new Error('Message was missing beginning newlines');
145
- }
146
- pos += 2;
147
- }
148
- while (pos < threadResponseString.length) {
149
- let lineEnd = threadResponseString.indexOf('\n', pos + 1);
150
- if (lineEnd === -1) {
151
- lineEnd = threadResponseString.length;
152
- }
153
- else if (threadResponseString[lineEnd - 1] === '\r') {
154
- // seriously Gmail is crazy. The chunk length only sometimes includes the
155
- // newline after the chunk length.
156
- lineEnd += 1;
157
- }
158
- const line = threadResponseString.slice(pos, lineEnd);
159
- let dataLine;
160
- if (/^\d+\s*$/.test(line)) {
161
- options.includeLengths = true;
162
- const length = +line;
163
- dataLine = threadResponseString.slice(lineEnd, lineEnd + length);
164
- pos = lineEnd + length;
165
- }
166
- else {
167
- dataLine = threadResponseString.slice(pos);
168
- pos = threadResponseString.length;
169
- }
170
- value.push(deserializeArray(dataLine));
171
- }
172
- return { value, options };
173
- }
174
- function transformUnquotedSections(str, cb) {
175
- const parts = [];
176
- let nextQuote;
177
- let position = 0;
178
- let inString = false;
179
- while ((nextQuote = findNextUnescapedCharacter(str, position, '"')) !== -1) {
180
- if (inString) {
181
- parts.push(str.slice(position, nextQuote + 1));
182
- }
183
- else {
184
- parts.push(cb(str.slice(position, nextQuote + 1)));
185
- }
186
- position = nextQuote + 1;
187
- inString = !inString;
188
- }
189
- if (inString) {
190
- throw new Error('string ended inside quoted section');
191
- }
192
- parts.push(cb(str.slice(position)));
193
- return parts.join('');
194
- }
195
- export function deserializeArray(value) {
196
- value = value.replace(/[\r\n\t]/g, '');
197
- // Change all the singly quoted parts to use double-quotes so that the
198
- // data can be JSON-decoded instead of eval'd. (Also necessary for the
199
- // next step.)
200
- value = rewriteSingleQuotes(value);
201
- // Fix some things with the data. (It's in a weird minified JSON-like
202
- // format). Make sure we don't modify any data inside of strings!
203
- value = transformUnquotedSections(value, (match) => match
204
- .replace(/,\s*(?=,|\])/g, ',null') // fix implied nulls
205
- .replace(/\[\s*(?=,)/g, '[null') // "
206
- );
207
- try {
208
- return JSON.parse(value, (k, v) => (v == null ? undefined : v));
209
- }
210
- catch (err) {
211
- throw new Error('deserialization error');
212
- }
213
- }
214
- export function serialize(value, options) {
215
- if (options.suggestionMode) {
216
- assert(options.includeLengths);
217
- return suggestionSerialize(value, options.includeExplicitNulls);
218
- }
219
- return threadListSerialize(value, options);
220
- }
221
- function threadListSerialize(threadResponseArray, options) {
222
- const { includeLengths, noArrayNewLines, includeExplicitNulls } = options;
223
- let response = ")]}'\n" + (noArrayNewLines && includeLengths ? '' : '\n');
224
- for (let ii = 0; ii < threadResponseArray.length; ii++) {
225
- const arraySection = threadResponseArray[ii];
226
- const arraySectionString = serializeArray(arraySection, noArrayNewLines, includeExplicitNulls);
227
- if (!includeLengths) {
228
- response += arraySectionString;
229
- }
230
- else {
231
- const length = arraySectionString.length + (noArrayNewLines ? 2 : 1);
232
- response +=
233
- (noArrayNewLines ? '\n' : '') + length + '\n' + arraySectionString;
234
- }
235
- }
236
- if (!includeLengths) {
237
- if (!noArrayNewLines) {
238
- const lines = response.split(/\r|\n/);
239
- const firstLines = lines.slice(0, -3);
240
- const lastLines = lines.slice(-3);
241
- response = firstLines.join('\n');
242
- response += '\n' + lastLines[0] + lastLines[1].replace(/"/g, "'");
243
- }
244
- else {
245
- // A 16-digit hexadecimal string is often at the end, but sometimes it
246
- // has fewer digits.
247
- response = response.replace(/"([0-9a-f]{8,16})"\]$/, "'$1']");
248
- }
249
- }
250
- return response + (noArrayNewLines && includeLengths ? '\n' : '');
251
- }
252
- function suggestionSerialize(suggestionsArray, includeExplicitNulls) {
253
- let response = "5\n)]}'\n";
254
- for (let ii = 0; ii < suggestionsArray.length; ii++) {
255
- const arraySection = suggestionsArray[ii];
256
- const arraySectionString = serializeArray(arraySection, false, includeExplicitNulls);
257
- const length = arraySectionString.length;
258
- response += length + '\r\n' + arraySectionString;
259
- }
260
- return response;
261
- }
262
- function serializeArray(array, noArrayNewLines, includeExplicitNulls) {
263
- let response = '[';
264
- for (let ii = 0; ii < array.length; ii++) {
265
- const item = array[ii];
266
- let addition;
267
- if (Array.isArray(item)) {
268
- addition = serializeArray(item, noArrayNewLines, includeExplicitNulls);
269
- }
270
- else if (item == null) {
271
- addition = includeExplicitNulls ? 'null' : '';
272
- }
273
- else {
274
- addition = JSON.stringify(item)
275
- .replace(/</gim, '\\u003c')
276
- .replace(/=/gim, '\\u003d')
277
- .replace(/>/gim, '\\u003e')
278
- .replace(/&/gim, '\\u0026');
279
- }
280
- if (ii > 0) {
281
- response += ',';
282
- }
283
- response += addition;
284
- }
285
- response += ']' + (noArrayNewLines ? '' : '\n');
286
- return response;
287
- }
288
- export function readDraftId(response, messageID) {
289
- const decoded = deserialize(response).value;
290
- const msgA = t.toArray(decoded, t.compose(t.cat, t.filter(Array.isArray), t.cat, t.filter((x) => x[0] === 'ms' && x[1] === messageID), t.take(1), t.map((x) => x[60])))[0];
291
- if (msgA) {
292
- const match = msgA.match(/^msg-[^:]:(\S+)$/i);
293
- return match && match[1];
294
- }
295
- return null;
296
- }
297
- export function replaceThreadsInResponse(response, replacementThreads, { start, total }) {
298
- const { value, options } = deserialize(response);
299
- const actionResponseMode = value.length === 1 &&
300
- value[0].length === 2 &&
301
- typeof value[0][1] === 'string';
302
- const threadValue = actionResponseMode
303
- ? value[0][0].map((x) => [x])
304
- : value;
305
- /*
306
- threadValue looks like this:
307
- [
308
- [ // group
309
- ["blah", ...], // item
310
- ["blah", ...] // item
311
- ],
312
- [ // group
313
- ["blah", ...],
314
- ["tb", [...]],
315
- ["tb", [...]]
316
- ],
317
- [
318
- ["tb", [...]],
319
- ["blah", ...]
320
- ],
321
- [
322
- ["blah", ...],
323
- ["blah", ...]
324
- ],
325
- ]
326
-
327
- threadValue is an array of groups. Each group is an array of items. An item is
328
- an array which has an identifier string as its first item. Each "tb" item
329
- contains an array of up to 10 threads. All of the "tb" items will be sequential
330
- but may overflow to other groups.
331
-
332
- We want to replace all of the "tb" items, while trying to stick close to the
333
- original structure. We prepare by creating an array of groups that come before
334
- any groups containing a "tb" item, an array of groups that come after any
335
- groups containing a "tb" item, an array of items that come before any "tb"
336
- items in the first "tb" group, and an array of items that come after any "tb"
337
- items in the last "tb" group. Then we generate the new "tb" items, and splice
338
- it all back together.
339
-
340
- */
341
- const preTbGroups = [];
342
- const postTbGroups = [];
343
- let preTbItems = [];
344
- let postTbItems = [];
345
- let hasSeenTb = false;
346
- threadValue.forEach((group) => {
347
- let tbSeenInThisGroup = false;
348
- const preTbGroup = [];
349
- const postTbGroup = [];
350
- group.forEach((item) => {
351
- if (total && item[0] === 'ti') {
352
- if (typeof total === 'number') {
353
- // does not switch out of 'many'-total mode (we currently never need this).
354
- item[2] = item[10] = total;
355
- }
356
- else if (total === 'MANY') {
357
- // large total to ensure it is always larger than the actual
358
- // number of threads.
359
- item[2] = item[10] = 100 * 1000;
360
- // flip response from number-total mode into 'many'-total mode.
361
- item[3] = 1;
362
- const query = item[5];
363
- if (item[6]) {
364
- item[6][0] = [query, 1];
365
- }
366
- else {
367
- console.error('replaceThreadsInResponse(): Missing item[6]');
368
- }
369
- }
370
- }
371
- if (item[0] === 'tb') {
372
- hasSeenTb = tbSeenInThisGroup = true;
373
- if (preTbGroup.length) {
374
- preTbItems = preTbGroup;
375
- }
376
- postTbItems = postTbGroup;
377
- }
378
- else if (!hasSeenTb) {
379
- preTbGroup.push(item);
380
- }
381
- else {
382
- postTbGroup.push(item);
383
- }
384
- });
385
- if (!tbSeenInThisGroup) {
386
- if (!hasSeenTb) {
387
- preTbGroups.push(preTbGroup);
388
- }
389
- else {
390
- postTbGroups.push(postTbGroup);
391
- }
392
- }
393
- });
394
- const newTbs = _threadsToTbGroups(replacementThreads, start);
395
- if (preTbItems.length) {
396
- newTbs[0] = preTbItems.concat(newTbs[0] || []);
397
- }
398
- if (postTbItems.length) {
399
- if (newTbs.length) {
400
- newTbs[newTbs.length - 1] = newTbs[newTbs.length - 1].concat(postTbItems);
401
- }
402
- else {
403
- newTbs.push(postTbItems);
404
- }
405
- }
406
- const parsedNew = flatten([preTbGroups, newTbs, postTbGroups]);
407
- const allSections = flatten(parsedNew);
408
- const endSection = last(allSections);
409
- if (endSection[0] !== 'e') {
410
- throw new Error('Failed to find end section');
411
- }
412
- endSection[1] = allSections.length;
413
- const fullNew = actionResponseMode
414
- ? [[flatten(parsedNew), value[0][1]]]
415
- : parsedNew;
416
- return serialize(fullNew, options);
417
- }
418
- export function extractThreads(response) {
419
- return extractThreadsFromDeserialized(deserialize(response).value);
420
- }
421
- export function extractThreadsFromDeserialized(value) {
422
- if (value.length === 1 &&
423
- value[0].length === 2 &&
424
- typeof value[0][1] === 'string') {
425
- value = [value[0][0]];
426
- }
427
- return _extractThreadArraysFromResponseArray(value).map((thread) => Object.freeze(Object.defineProperty({
428
- subject: htmlToText(thread[9]),
429
- shortDate: htmlToText(thread[14]),
430
- timeString: htmlToText(thread[15]),
431
- peopleHtml: cleanupPeopleLine(thread[7]),
432
- timestamp: thread[16] / 1000,
433
- isUnread: thread[9].indexOf('<b>') > -1,
434
- lastEmailAddress: thread[28],
435
- bodyPreviewHtml: thread[10],
436
- someGmailMessageIds: [thread[1], thread[2]],
437
- gmailThreadId: thread[0],
438
- }, '_originalGmailFormat', { value: thread })));
439
- }
440
- const _extractMessageIdsFromThreadBatchRequestXf = t.compose(t.cat, t.cat, t.filter((item) => item[0] === 'cs'), t.map((item) => [item[1], item[2]]));
441
- export function extractMessageIdsFromThreadBatchRequest(response) {
442
- const { value } = deserialize(response);
443
- return t.toObj(value, _extractMessageIdsFromThreadBatchRequestXf);
444
- }
445
- export function cleanupPeopleLine(peopleHtml) {
446
- // Removes possible headings like "To: " that get added on the Sent page, and
447
- // removes a class that's specific to the current preview pane setting.
448
- return peopleHtml
449
- .replace(/^[^<]*/, '')
450
- .replace(/(<span[^>]*) class="[^"]*"/g, '$1');
451
- }
452
- const _extractThreadArraysFromResponseArrayXf = t.compose(t.cat, t.filter((item) => item[0] === 'tb'), t.map((item) => item[2]), t.cat);
453
- function _extractThreadArraysFromResponseArray(threadResponseArray) {
454
- return t.toArray(threadResponseArray, _extractThreadArraysFromResponseArrayXf);
455
- }
456
- const _extractThreadsFromConversationViewResponseArrayXf = t.compose(t.cat, t.filter((item) => item[0] === 'cs'), t.map((item) => ({
457
- threadID: item[1],
458
- messageIDs: item[8],
459
- })));
460
- const _extractMessagesFromResponseArrayXf = t.compose(t.cat, t.filter((item) => item[0] === 'ms'), t.map((item) => ({
461
- messageID: item[1],
462
- date: item[7],
463
- })));
464
- export function extractMessages(response) {
465
- // regular view=cv requests have a top level array length of 1
466
- // whereas view=cv requests when you refresh Gmail while looking at a thread
467
- // have a top level array with more elements
468
- let { value } = deserialize(response);
469
- if (value.length === 1)
470
- value = value[0];
471
- const threads = t.toArray(value, _extractThreadsFromConversationViewResponseArrayXf);
472
- const messages = t.toArray(value, _extractMessagesFromResponseArrayXf);
473
- const messageMap = {};
474
- messages.forEach((message) => {
475
- messageMap[message.messageID] = message;
476
- });
477
- return threads.map(({ threadID, messageIDs }) => ({
478
- threadID,
479
- messages: messageIDs.map((messageID) => messageMap[messageID]),
480
- }));
481
- }
482
- function _threadsToTbGroups(threads, start) {
483
- const _threadsToTbGroupsXf = t.compose(t.map((thread) => thread._originalGmailFormat), t.partition(10), mapIndexed((threadsChunk, i) => [['tb', start + i * 10, threadsChunk]]));
484
- return t.toArray(threads, _threadsToTbGroupsXf);
485
- }
486
- function _searchArray(responseArray, marker, markerArrayValidator) {
487
- const pathArray = _searchObject(responseArray, marker, 100);
488
- for (let ii = 0; ii < pathArray.length; ii++) {
489
- const pathToMarkerArray = pathArray[ii].path.slice(0, -1);
490
- const markerArray = _getArrayValueFromPath(responseArray, pathToMarkerArray);
491
- if (markerArrayValidator(markerArray)) {
492
- return markerArray;
493
- }
494
- }
495
- }
496
- function _searchObject(element, query, maxDepth) {
497
- const retVal = [];
498
- const initialNode = {
499
- el: element,
500
- path: [],
501
- };
502
- const nodeList = [initialNode];
503
- while (nodeList.length > 0) {
504
- const node = nodeList.pop();
505
- if (node.path.length <= maxDepth) {
506
- if (node.el !== null && typeof node.el === 'object') {
507
- const keys = Object.keys(node.el);
508
- for (let i = 0; i < keys.length; i++) {
509
- const key = keys[i];
510
- const newNode = {
511
- el: node.el[key],
512
- path: node.path.concat([key]),
513
- };
514
- nodeList.push(newNode);
515
- }
516
- }
517
- else {
518
- if (node.el === query) {
519
- retVal.push(node);
520
- }
521
- }
522
- }
523
- }
524
- return retVal;
525
- }
526
- function _getArrayValueFromPath(responseArray, path) {
527
- let currentArray = responseArray;
528
- for (let ii = 0; ii < path.length; ii++) {
529
- currentArray = currentArray[path[ii]];
530
- }
531
- return currentArray;
532
- }