@inboxsdk/core 1.2.5 → 1.2.8-0

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 (334) hide show
  1. package/inboxsdk.js +4462 -456
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +3 -2
  4. package/pageWorld.js +1 -1
  5. package/pageWorld.js.map +1 -1
  6. package/src/inboxsdk.d.ts +29 -0
  7. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
  8. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
  9. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
  10. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
  11. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
  12. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  13. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
  14. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
  15. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
  16. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
  17. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.d.ts +15 -1
  18. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.d.ts.map +1 -1
  19. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
  20. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
  21. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.d.ts +9 -0
  22. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.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/compose-view.d.ts +8 -2
  28. package/src/platform-implementation-js/views/compose-view.d.ts.map +1 -1
  29. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
  30. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  31. package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
  32. package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
  33. package/src/build/exec.js +0 -26
  34. package/src/build/spawn.js +0 -17
  35. package/src/common/ajax.js +0 -90
  36. package/src/common/cachebust-url.js +0 -10
  37. package/src/common/censorHTMLstring.js +0 -37
  38. package/src/common/censorHTMLtree.js +0 -28
  39. package/src/common/censorJSONTree.js +0 -15
  40. package/src/common/connectivity-test.js +0 -21
  41. package/src/common/defer.js +0 -11
  42. package/src/common/find-parent.js +0 -10
  43. package/src/common/get-extension-id.js +0 -7
  44. package/src/common/get-or-fail.js +0 -8
  45. package/src/common/get-session-id.js +0 -14
  46. package/src/common/get-stack-trace.js +0 -6
  47. package/src/common/html-to-text.js +0 -7
  48. package/src/common/isElementVisible.js +0 -6
  49. package/src/common/load-script.js +0 -126
  50. package/src/common/log-error.js +0 -185
  51. package/src/common/quoted-split.js +0 -18
  52. package/src/common/rate-limit-queuer.js +0 -57
  53. package/src/common/rate-limit.js +0 -14
  54. package/src/common/version.js +0 -8
  55. package/src/inboxsdk-js/header.js +0 -19
  56. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
  57. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
  58. package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
  59. package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
  60. package/src/inboxsdk-js/inboxsdk.js +0 -23
  61. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
  62. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -28
  63. package/src/injected-js/gmail/constants.js +0 -2
  64. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  65. package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
  66. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  67. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  68. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  69. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
  70. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
  71. package/src/injected-js/gmail/thread-identifier/index.js +0 -133
  72. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
  73. package/src/injected-js/injected-logger.js +0 -50
  74. package/src/injected-js/main.js +0 -49
  75. package/src/injected-js/message-metadata-holder.js +0 -103
  76. package/src/injected-js/setup-data-exposer.js +0 -135
  77. package/src/injected-js/setup-error-silencer.js +0 -15
  78. package/src/injected-js/setup-event-reemitter.js +0 -47
  79. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  80. package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
  81. package/src/injected-js/setupPushStateListener.js +0 -14
  82. package/src/injected-js/xhr-helper.js +0 -43
  83. package/src/injected-js/xhr-proxy-factory.js +0 -537
  84. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  85. package/src/platform-implementation-js/constants/router.js +0 -60
  86. package/src/platform-implementation-js/constants/toolbars.js +0 -5
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
  116. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
  117. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
  118. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
  119. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
  120. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
  121. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
  122. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
  123. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
  124. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  125. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  126. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
  127. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
  128. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
  129. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
  130. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  131. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
  132. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  133. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -338
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
  180. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
  181. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
  182. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
  183. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  184. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
  185. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
  186. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
  187. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
  188. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  196. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  197. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
  198. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  199. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
  200. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
  201. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
  202. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
  203. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
  204. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
  205. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
  206. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
  207. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
  208. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  209. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
  210. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
  211. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  212. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
  213. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  214. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
  215. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  216. package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
  217. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  218. package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
  219. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
  220. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
  221. package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
  222. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  223. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
  224. package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
  225. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
  226. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
  227. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  228. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  229. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  230. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  231. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  232. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
  233. package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
  234. package/src/platform-implementation-js/lib/delay-asap.js +0 -10
  235. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  236. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  237. package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
  238. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
  239. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  240. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  241. package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
  242. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  243. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
  244. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
  245. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  246. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  247. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
  248. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  249. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  250. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  251. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
  252. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
  253. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  254. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  255. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  256. package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
  257. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
  258. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  259. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  260. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  261. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  262. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  263. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  264. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  265. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
  266. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  267. package/src/platform-implementation-js/lib/idMap.js +0 -40
  268. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  269. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  270. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -13
  271. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  272. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
  273. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  274. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  275. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  276. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  277. package/src/platform-implementation-js/lib/logger.js +0 -439
  278. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
  279. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  280. package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
  281. package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
  282. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
  283. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
  284. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  285. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  286. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
  287. package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
  288. package/src/platform-implementation-js/lib/wait-for.js +0 -38
  289. package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
  290. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
  291. package/src/platform-implementation-js/main.js +0 -42
  292. package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
  293. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  294. package/src/platform-implementation-js/namespaces/compose.js +0 -59
  295. package/src/platform-implementation-js/namespaces/conversations.js +0 -83
  296. package/src/platform-implementation-js/namespaces/global.js +0 -30
  297. package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
  298. package/src/platform-implementation-js/namespaces/lists.js +0 -40
  299. package/src/platform-implementation-js/namespaces/modal.js +0 -43
  300. package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
  301. package/src/platform-implementation-js/namespaces/router.js +0 -139
  302. package/src/platform-implementation-js/namespaces/search.js +0 -29
  303. package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
  304. package/src/platform-implementation-js/namespaces/user.js +0 -57
  305. package/src/platform-implementation-js/namespaces/widgets.js +0 -73
  306. package/src/platform-implementation-js/platform-implementation.js +0 -178
  307. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  308. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
  309. package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
  310. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
  311. package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
  312. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  313. package/src/platform-implementation-js/views/compose-view.js +0 -310
  314. package/src/platform-implementation-js/views/content-panel-view.js +0 -36
  315. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
  316. package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
  317. package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
  318. package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
  319. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  320. package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
  321. package/src/platform-implementation-js/views/nav-item-view.js +0 -130
  322. package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
  323. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
  324. package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
  325. package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
  326. package/src/platform-implementation-js/views/section-view.js +0 -60
  327. package/src/platform-implementation-js/views/thread-row-view.js +0 -90
  328. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  329. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  330. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
  331. package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
  332. package/src/platform-implementation-js/widgets/modal-view.js +0 -108
  333. package/src/platform-implementation-js/widgets/mole-view.js +0 -38
  334. 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
- }