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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/inboxsdk.js +1 -1
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +5 -1
  4. package/src/build/exec.js +26 -0
  5. package/src/build/spawn.js +17 -0
  6. package/src/common/ajax.js +90 -0
  7. package/src/common/cachebust-url.js +10 -0
  8. package/src/common/censorHTMLstring.js +37 -0
  9. package/src/common/censorHTMLtree.js +28 -0
  10. package/src/common/censorJSONTree.js +15 -0
  11. package/src/common/connectivity-test.js +21 -0
  12. package/src/common/defer.js +11 -0
  13. package/src/common/find-parent.js +10 -0
  14. package/src/common/get-extension-id.js +7 -0
  15. package/src/common/get-or-fail.js +8 -0
  16. package/src/common/get-session-id.js +14 -0
  17. package/src/common/get-stack-trace.js +6 -0
  18. package/src/common/html-to-text.js +7 -0
  19. package/src/common/isElementVisible.js +6 -0
  20. package/src/common/load-script.js +127 -0
  21. package/src/common/log-error.js +191 -0
  22. package/src/common/quoted-split.js +18 -0
  23. package/src/common/rate-limit-queuer.js +57 -0
  24. package/src/common/rate-limit.js +14 -0
  25. package/src/common/version.js +6 -0
  26. package/src/inboxsdk-js/check-requirements.js +7 -3
  27. package/src/inboxsdk-js/header.js +1 -0
  28. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  30. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  31. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  32. package/src/inboxsdk-js/inboxsdk.js +33 -39
  33. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  34. package/src/inboxsdk-js/loading/platform-implementation-loader.js +27 -0
  35. package/src/injected-js/gmail/constants.js +2 -0
  36. package/src/injected-js/gmail/modify-suggestions.js +106 -0
  37. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  38. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  39. package/src/injected-js/gmail/setup-gmonkey-handler.js +49 -0
  40. package/src/injected-js/gmail/sync-compose-processor-20220909.js +298 -0
  41. package/src/injected-js/gmail/sync-compose-processor.js +55 -0
  42. package/src/injected-js/gmail/sync-compose-request-processor.js +110 -0
  43. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  44. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  45. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  46. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  47. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  48. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  49. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  50. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  51. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  52. package/src/injected-js/injected-logger.js +50 -0
  53. package/src/injected-js/main.js +11 -24
  54. package/src/injected-js/message-metadata-holder.js +52 -82
  55. package/src/injected-js/setup-data-exposer.js +89 -148
  56. package/src/injected-js/setup-error-silencer.js +21 -21
  57. package/src/injected-js/setup-event-reemitter.js +30 -22
  58. package/src/injected-js/setupCustomViewEventAssassin.js +90 -0
  59. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  60. package/src/injected-js/setupPushStateListener.js +18 -11
  61. package/src/injected-js/xhr-helper.js +62 -65
  62. package/src/injected-js/xhr-proxy-factory.js +195 -445
  63. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  64. package/src/platform-implementation-js/constants/nav-item-types.js +19 -0
  65. package/src/platform-implementation-js/constants/router.js +14 -9
  66. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  67. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  68. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  69. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +21 -0
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +28 -0
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +98 -0
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +4 -0
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +8 -0
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +12 -0
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +33 -0
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +4 -0
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +44 -0
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +95 -0
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +38 -0
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +12 -0
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +253 -0
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +200 -0
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +533 -0
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +289 -0
  115. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +21 -0
  116. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  117. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +28 -0
  118. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +19 -0
  119. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +126 -0
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +101 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +38 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +28 -0
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +22 -0
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +233 -0
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +223 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +157 -0
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +109 -0
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +5 -0
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +759 -0
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +84 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +33 -0
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +325 -0
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +58 -0
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +55 -0
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +96 -0
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +30 -0
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +10 -0
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +22 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  209. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  210. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +17 -0
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +33 -0
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +49 -0
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.js +65 -0
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.js +16 -0
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  271. package/src/platform-implementation-js/driver-common/update-icon.js +90 -0
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  273. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  274. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  275. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  276. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  277. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  278. package/src/platform-implementation-js/lib/ErrorCollector.js +47 -0
  279. package/src/platform-implementation-js/lib/Membrane.js +22 -0
  280. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +30 -0
  281. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  283. package/src/platform-implementation-js/lib/attemptWithRetries.js +16 -0
  284. package/src/platform-implementation-js/lib/common-page-communicator.js +137 -0
  285. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  286. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  287. package/src/platform-implementation-js/lib/delay-asap.js +12 -0
  288. package/src/platform-implementation-js/lib/delay-idle.js +16 -0
  289. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +36 -0
  290. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  291. package/src/platform-implementation-js/lib/dom/generic-button-view.js +39 -0
  292. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +39 -0
  293. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  294. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +38 -0
  295. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  296. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  297. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +12 -0
  298. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +79 -0
  299. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +28 -0
  300. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +15 -0
  301. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +15 -0
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +5 -0
  303. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  304. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +39 -0
  305. package/src/platform-implementation-js/lib/dom/parentNodes.js +8 -0
  306. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  307. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +6 -0
  308. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +22 -0
  309. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  310. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  311. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  312. package/src/platform-implementation-js/lib/dom/simulate-key.js +46 -0
  313. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +16 -0
  314. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +7 -0
  315. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +25 -0
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  317. package/src/platform-implementation-js/lib/fake-window-resize.js +5 -0
  318. package/src/platform-implementation-js/lib/from-event-target-capture.js +12 -0
  319. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +10 -0
  320. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  321. package/src/platform-implementation-js/lib/handler-registry.js +67 -0
  322. package/src/platform-implementation-js/lib/idMap.js +45 -0
  323. package/src/platform-implementation-js/lib/imageRequest.js +8 -0
  324. package/src/platform-implementation-js/lib/incrementName.js +7 -0
  325. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +14 -0
  326. package/src/platform-implementation-js/lib/inject-script.js +33 -0
  327. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  328. package/src/platform-implementation-js/lib/is-valid-app-id.js +27 -0
  329. package/src/platform-implementation-js/lib/is-valid-email.js +14 -0
  330. package/src/platform-implementation-js/lib/isNotNil.js +5 -0
  331. package/src/platform-implementation-js/lib/isStreakAppId.js +11 -0
  332. package/src/platform-implementation-js/lib/logger.js +441 -0
  333. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  334. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  335. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  337. package/src/platform-implementation-js/lib/persistent-queue.js +107 -0
  338. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  339. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  340. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  341. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  343. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  345. package/src/platform-implementation-js/lib/safe-event-emitter.js +17 -0
  346. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  347. package/src/platform-implementation-js/lib/stopper-pool.js +41 -0
  348. package/src/platform-implementation-js/lib/stream-wait-for.js +30 -0
  349. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  350. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  351. package/src/platform-implementation-js/lib/wait-for.js +28 -0
  352. package/src/platform-implementation-js/lib/waitForAsync.js +19 -0
  353. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  354. package/src/platform-implementation-js/main.js +9 -24
  355. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -1
  356. package/src/platform-implementation-js/namespaces/app-menu.js +31 -0
  357. package/src/platform-implementation-js/namespaces/butter-bar.js +163 -0
  358. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  359. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  360. package/src/platform-implementation-js/namespaces/global.js +27 -39
  361. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  362. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  363. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  364. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  365. package/src/platform-implementation-js/namespaces/router.js +70 -137
  366. package/src/platform-implementation-js/namespaces/search.js +19 -17
  367. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  368. package/src/platform-implementation-js/namespaces/user.js +36 -37
  369. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  370. package/src/platform-implementation-js/platform-implementation.js +98 -229
  371. package/src/platform-implementation-js/views/SimpleElementView.js +16 -0
  372. package/src/platform-implementation-js/views/app-menu-item-view.js +257 -0
  373. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  374. package/src/platform-implementation-js/views/collapsible-panel-view.js +222 -0
  375. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  376. package/src/platform-implementation-js/views/compose-button-view.js +45 -0
  377. package/src/platform-implementation-js/views/compose-view.js +312 -0
  378. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  379. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  380. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  381. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  382. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  383. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +14 -0
  384. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  385. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  386. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  387. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  388. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  389. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  390. package/src/platform-implementation-js/views/section-view.js +60 -52
  391. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  392. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +39 -0
  393. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +98 -0
  394. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +122 -0
  395. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  396. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  397. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  398. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -0,0 +1,107 @@
1
+ // Queue which tries to persist its data into localStorage so its contents
2
+ // aren't wiped when the page is closed. It handles localStorage not being
3
+ // present or not working (such as if we're running into quota issues).
4
+ // Safe for use in multiple tabs on the same domain at once.
5
+ export default class PersistentQueue {
6
+ _fallbackQueue = [];
7
+ _sid;
8
+ constructor(id) {
9
+ this._sid = 'inboxsdk__persistentqueue_' + id;
10
+ }
11
+ _getSavedQueue() {
12
+ let queue = JSON.parse(localStorage.getItem(this._sid));
13
+ if (queue == null) {
14
+ queue = [];
15
+ }
16
+ return queue;
17
+ }
18
+ _putSavedQueue(queue) {
19
+ localStorage.setItem(this._sid, JSON.stringify(queue));
20
+ }
21
+ _clearSavedQueue() {
22
+ localStorage.removeItem(this._sid);
23
+ }
24
+ add(val) {
25
+ let success = false;
26
+ if (typeof localStorage !== 'undefined') {
27
+ try {
28
+ const queue = this._getSavedQueue();
29
+ queue.push(val);
30
+ this._putSavedQueue(queue);
31
+ success = true;
32
+ }
33
+ catch (e) {
34
+ // ignore
35
+ }
36
+ }
37
+ if (!success) {
38
+ this._fallbackQueue.push(val);
39
+ }
40
+ }
41
+ remove() {
42
+ let ret;
43
+ if (typeof localStorage !== 'undefined') {
44
+ try {
45
+ const queue = this._getSavedQueue();
46
+ const tmpRet = queue.shift();
47
+ this._putSavedQueue(queue);
48
+ ret = tmpRet;
49
+ }
50
+ catch (e) {
51
+ // ignore
52
+ }
53
+ }
54
+ // If we didn't get anything from the localStorage queue, or if we
55
+ // failed to update the queue, then try the fallback instead.
56
+ if (ret === undefined) {
57
+ ret = this._fallbackQueue.shift();
58
+ }
59
+ return ret;
60
+ }
61
+ removeAll() {
62
+ let ret = undefined;
63
+ if (typeof localStorage !== 'undefined') {
64
+ try {
65
+ const queue = this._getSavedQueue();
66
+ this._clearSavedQueue();
67
+ ret = queue;
68
+ }
69
+ catch (e) {
70
+ // ignore
71
+ }
72
+ }
73
+ if (ret === undefined) {
74
+ ret = [];
75
+ }
76
+ ret = ret.concat(this._fallbackQueue);
77
+ this._fallbackQueue = [];
78
+ return ret;
79
+ }
80
+ peekAll() {
81
+ let ret = undefined;
82
+ if (typeof localStorage !== 'undefined') {
83
+ try {
84
+ ret = this._getSavedQueue();
85
+ }
86
+ catch (e) {
87
+ // ignore
88
+ }
89
+ }
90
+ if (ret === undefined) {
91
+ ret = [];
92
+ }
93
+ ret = ret.concat(this._fallbackQueue);
94
+ return ret;
95
+ }
96
+ clear() {
97
+ if (typeof localStorage !== 'undefined') {
98
+ try {
99
+ this._clearSavedQueue();
100
+ }
101
+ catch (e) {
102
+ // ignore
103
+ }
104
+ }
105
+ this._fallbackQueue.length = 0;
106
+ }
107
+ }
@@ -1,14 +1,13 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import type { RouteParams } from '../namespaces/router';
4
-
5
- export default function populateRouteID(
6
- routeID: string,
7
- params: ?RouteParams
8
- ): string {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = populateRouteID;
7
+ function populateRouteID(routeID, params) {
9
8
  const paramsObject = params || {};
10
9
  const usedParams = new Set();
11
- const result = routeID.replace(/:([^/]+)/g, (whole: string, term: string) => {
10
+ const result = routeID.replace(/:([^/]+)/g, (whole, term) => {
12
11
  if (term in paramsObject) {
13
12
  usedParams.add(term);
14
13
  return encodeURIComponent(String(paramsObject[term]));
@@ -20,4 +19,4 @@ export default function populateRouteID(
20
19
  throw new Error('Extra parameters given');
21
20
  }
22
21
  return result;
23
- }
22
+ }
@@ -1,31 +1,32 @@
1
- /* @flow */
2
-
3
- import populateRouteID from './populateRouteID';
1
+ "use strict";
4
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _populateRouteID = _interopRequireDefault(require("./populateRouteID"));
5
5
  test('works with no params', () => {
6
- expect(populateRouteID('a/b', null)).toBe('a/b');
6
+ expect((0, _populateRouteID.default)('a/b', null)).toBe('a/b');
7
7
  });
8
-
9
8
  test('works with params', () => {
10
- expect(populateRouteID('a/:id/b/:foo', { id: 'aaa', foo: '456' })).toBe(
11
- 'a/aaa/b/456'
12
- );
9
+ expect((0, _populateRouteID.default)('a/:id/b/:foo', {
10
+ id: 'aaa',
11
+ foo: '456'
12
+ })).toBe('a/aaa/b/456');
13
13
  });
14
-
15
14
  test('works with params that are not preceded by a slash', () => {
16
- expect(populateRouteID('a/foo:id/b', { id: 'aaa' })).toBe('a/fooaaa/b');
15
+ expect((0, _populateRouteID.default)('a/foo:id/b', {
16
+ id: 'aaa'
17
+ })).toBe('a/fooaaa/b');
17
18
  });
18
-
19
19
  test('url encodes', () => {
20
- expect(populateRouteID('a/:id', { id: '%/$\'"' })).toBe("a/%25%2F%24'%22");
20
+ expect((0, _populateRouteID.default)('a/:id', {
21
+ id: '%/$\'"'
22
+ })).toBe("a/%25%2F%24'%22");
21
23
  });
22
-
23
24
  test('throws if missing params', () => {
24
- expect(() => populateRouteID('a/:id', {})).toThrowError();
25
+ expect(() => (0, _populateRouteID.default)('a/:id', {})).toThrowError();
25
26
  });
26
-
27
27
  test('throws if extra params', () => {
28
- expect(() =>
29
- populateRouteID('a/:id', { id: '456', foo: '789' })
30
- ).toThrowError();
31
- });
28
+ expect(() => (0, _populateRouteID.default)('a/:id', {
29
+ id: '456',
30
+ foo: '789'
31
+ })).toThrowError();
32
+ });
@@ -1,21 +1,23 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import React from 'react';
4
-
5
- type Props = {
6
- className?: ?string,
7
- el: HTMLElement,
8
- };
9
- export default class ElementContainer extends React.Component<Props> {
10
- props: Props;
11
- _content: HTMLElement;
12
- _contentRefCb = (el: ?HTMLElement) => {
13
- if (el) this._content = el;
14
- };
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ class ElementContainer extends _react.default.Component {
11
+ constructor() {
12
+ super(...arguments);
13
+ (0, _defineProperty2.default)(this, "_contentRefCb", el => {
14
+ if (el) this._content = el;
15
+ });
16
+ }
15
17
  componentDidMount() {
16
18
  this._content.appendChild(this.props.el);
17
19
  }
18
- componentDidUpdate(prevProps: Props) {
20
+ componentDidUpdate(prevProps) {
19
21
  if (prevProps.el !== this.props.el) {
20
22
  while (this._content.lastElementChild) {
21
23
  this._content.lastElementChild.remove();
@@ -23,13 +25,14 @@ export default class ElementContainer extends React.Component<Props> {
23
25
  this._content.appendChild(this.props.el);
24
26
  }
25
27
  }
26
- shouldComponentUpdate(nextProps: Props) {
27
- return (
28
- this.props.className !== nextProps.className ||
29
- this.props.el !== nextProps.el
30
- );
28
+ shouldComponentUpdate(nextProps) {
29
+ return this.props.className !== nextProps.className || this.props.el !== nextProps.el;
31
30
  }
32
31
  render() {
33
- return <div className={this.props.className} ref={this._contentRefCb} />;
32
+ return /*#__PURE__*/_react.default.createElement("div", {
33
+ className: this.props.className,
34
+ ref: this._contentRefCb
35
+ });
34
36
  }
35
37
  }
38
+ exports.default = ElementContainer;
@@ -1,10 +1,11 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import idMap from './idMap';
4
-
5
- export default function rewriteCssWithIdMap(cssSource: string): string {
6
- return cssSource.replace(
7
- /\.IDMAP_([-a-zA-Z0-9_]+)/g,
8
- (match, classname) => `.${idMap(classname)}`
9
- );
10
- }
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = rewriteCssWithIdMap;
8
+ var _idMap = _interopRequireDefault(require("./idMap"));
9
+ function rewriteCssWithIdMap(cssSource) {
10
+ return cssSource.replace(/\.IDMAP_([-a-zA-Z0-9_]+)/g, (match, classname) => `.${(0, _idMap.default)(classname)}`);
11
+ }
@@ -1,26 +1,21 @@
1
- /* @flow */
2
-
3
- import rewriteCssWithIdMap from './rewriteCssWithIdMap';
4
-
5
- import idMap from './idMap';
1
+ "use strict";
6
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _rewriteCssWithIdMap = _interopRequireDefault(require("./rewriteCssWithIdMap"));
5
+ var _idMap = _interopRequireDefault(require("./idMap"));
7
6
  test('rewrites single classname', () => {
8
- expect(
9
- rewriteCssWithIdMap(`
7
+ expect((0, _rewriteCssWithIdMap.default)(`
10
8
  .IDMAP_foo {
11
9
  color: red;
12
10
  }
13
- `)
14
- ).toBe(`
15
- .${idMap('foo')} {
11
+ `)).toBe(`
12
+ .${(0, _idMap.default)('foo')} {
16
13
  color: red;
17
14
  }
18
15
  `);
19
16
  });
20
-
21
17
  test('only rewrites IDMAP_ classnames', () => {
22
- expect(
23
- rewriteCssWithIdMap(`
18
+ expect((0, _rewriteCssWithIdMap.default)(`
24
19
  .blaaah {
25
20
  color: blue;
26
21
  }
@@ -28,23 +23,21 @@ test('only rewrites IDMAP_ classnames', () => {
28
23
  color: red;
29
24
  }
30
25
  .xyz .IDMAP_foo::after {}
31
- `)
32
- ).toBe(`
26
+ `)).toBe(`
33
27
  .blaaah {
34
28
  color: blue;
35
29
  }
36
- .foo .x.${idMap('foo')}.y .blah .${idMap('xyz-_def3')}, .x {
30
+ .foo .x.${(0, _idMap.default)('foo')}.y .blah .${(0, _idMap.default)('xyz-_def3')}, .x {
37
31
  color: red;
38
32
  }
39
- .xyz .${idMap('foo')}::after {}
33
+ .xyz .${(0, _idMap.default)('foo')}::after {}
40
34
  `);
41
35
  });
42
-
43
36
  test('name is not present in rewritten CSS', () => {
44
- const output = rewriteCssWithIdMap(`
37
+ const output = (0, _rewriteCssWithIdMap.default)(`
45
38
  .IDMAP_foo3 {
46
39
  color: red;
47
40
  }
48
41
  `);
49
42
  expect(output.includes('foo3')).toBe(false);
50
- });
43
+ });
@@ -1,20 +1,15 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import memoize from 'lodash/memoize';
4
- import find from 'lodash/find';
5
- import escapeRegExp from 'lodash/escapeRegExp';
6
-
7
- const routeIDtoRegExp: (routeID: string) => RegExp = memoize(
8
- (routeID) =>
9
- new RegExp(
10
- '^' + escapeRegExp(routeID).replace(/\/:[^/]+/g, '/([^/]+)') + '/?$'
11
- )
12
- );
13
-
14
- export default function routeIDmatchesHash(
15
- routeID: string | Array<string>,
16
- hash: string
17
- ): ?string {
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = routeIDmatchesHash;
8
+ var _memoize = _interopRequireDefault(require("lodash/memoize"));
9
+ var _find = _interopRequireDefault(require("lodash/find"));
10
+ var _escapeRegExp = _interopRequireDefault(require("lodash/escapeRegExp"));
11
+ const routeIDtoRegExp = (0, _memoize.default)(routeID => new RegExp('^' + (0, _escapeRegExp.default)(routeID).replace(/\/:[^/]+/g, '/([^/]+)') + '/?$'));
12
+ function routeIDmatchesHash(routeID, hash) {
18
13
  const routeIDs = Array.isArray(routeID) ? routeID : [routeID];
19
- return find(routeIDs, (routeID) => hash.match(routeIDtoRegExp(routeID)));
20
- }
14
+ return (0, _find.default)(routeIDs, routeID => hash.match(routeIDtoRegExp(routeID)));
15
+ }
@@ -1,23 +1,17 @@
1
- /* @flow */
2
-
3
- import routeIDmatchesHash from './routeIDmatchesHash';
1
+ "use strict";
4
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _routeIDmatchesHash = _interopRequireDefault(require("./routeIDmatchesHash"));
5
5
  test('single parameter-less route works', () => {
6
- expect(routeIDmatchesHash('foo/bar/def', 'foo/bar/def')).toBe('foo/bar/def');
7
- expect(routeIDmatchesHash('foo/bar/def', 'foo/bax/def')).toBe(undefined);
6
+ expect((0, _routeIDmatchesHash.default)('foo/bar/def', 'foo/bar/def')).toBe('foo/bar/def');
7
+ expect((0, _routeIDmatchesHash.default)('foo/bar/def', 'foo/bax/def')).toBe(undefined);
8
8
  });
9
-
10
9
  test('array works', () => {
11
- expect(routeIDmatchesHash(['foo', 'bar'], 'foo')).toBe('foo');
12
- expect(routeIDmatchesHash(['foo', 'bar'], 'bar')).toBe('bar');
13
- expect(routeIDmatchesHash(['foo', 'bar'], 'blah')).toBe(undefined);
10
+ expect((0, _routeIDmatchesHash.default)(['foo', 'bar'], 'foo')).toBe('foo');
11
+ expect((0, _routeIDmatchesHash.default)(['foo', 'bar'], 'bar')).toBe('bar');
12
+ expect((0, _routeIDmatchesHash.default)(['foo', 'bar'], 'blah')).toBe(undefined);
14
13
  });
15
-
16
14
  test('parameter works', () => {
17
- expect(routeIDmatchesHash('foo/:bar/def/:blah', 'foo/123/def/x1')).toBe(
18
- 'foo/:bar/def/:blah'
19
- );
20
- expect(routeIDmatchesHash('foo/:bar/def/:blah', 'foo/123/xef/x1')).toBe(
21
- undefined
22
- );
23
- });
15
+ expect((0, _routeIDmatchesHash.default)('foo/:bar/def/:blah', 'foo/123/def/x1')).toBe('foo/:bar/def/:blah');
16
+ expect((0, _routeIDmatchesHash.default)('foo/:bar/def/:blah', 'foo/123/xef/x1')).toBe(undefined);
17
+ });
@@ -0,0 +1,17 @@
1
+ import EventEmitter from 'events';
2
+ import Logger from './logger';
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
4
+ /* eslint-disable prefer-rest-params */
5
+ // Version of EventEmitter where any exceptions thrown by event handlers are
6
+ // caught. This is used to catch exceptions from application code.
7
+ export default class SafeEventEmitter extends EventEmitter {
8
+ emit(event, ...args) {
9
+ try {
10
+ return super.emit.apply(this, arguments);
11
+ }
12
+ catch (e) {
13
+ Logger.error(e);
14
+ return true;
15
+ }
16
+ }
17
+ }
@@ -1,22 +1,23 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import type Kefir from 'kefir';
4
- import udKefir from 'ud-kefir';
5
- import rewriteCssWithIdMap from './rewriteCssWithIdMap';
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = sharedStyle;
8
+ var _udKefir = _interopRequireDefault(require("ud-kefir"));
9
+ var _rewriteCssWithIdMap = _interopRequireDefault(require("./rewriteCssWithIdMap"));
6
10
  var fs = require('fs');
7
- var cssContent: Kefir.Observable<string> = udKefir(
8
- module,
9
- fs.readFileSync(__dirname + '/../style/shared.css', 'utf8')
10
- );
11
-
12
- export default function sharedStyle(root: Document = document) {
11
+ var cssContent = (0, _udKefir.default)(module, fs.readFileSync(__dirname + '/../style/shared.css', 'utf8'));
12
+ function sharedStyle() {
13
+ let root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
13
14
  if (!root.getElementById('inboxsdk__shared_style')) {
14
15
  const style = root.createElement('style');
15
16
  style.id = 'inboxsdk__shared_style';
16
- cssContent.onValue((css) => {
17
- style.textContent = rewriteCssWithIdMap(css);
17
+ cssContent.onValue(css => {
18
+ style.textContent = (0, _rewriteCssWithIdMap.default)(css);
18
19
  });
19
20
  if (!root.head) throw new Error('missing head');
20
21
  root.head.appendChild(style);
21
22
  }
22
- }
23
+ }
@@ -0,0 +1,41 @@
1
+ import * as Kefir from 'kefir';
2
+ // An StopperPool is created from a stopper stream, and can have more stopper
3
+ // streams added to it. It has a stream property which is a stopper stream which
4
+ // emits a stop event and ends only after all of its input stopper streams have
5
+ // stopped.
6
+ export default class StopperPool {
7
+ _streamCount = 0;
8
+ _ended = false;
9
+ _pool = Kefir.pool();
10
+ stream;
11
+ constructor(streams) {
12
+ this.stream = this._pool
13
+ .filter(() => {
14
+ this._streamCount--;
15
+ if (this._streamCount === 0) {
16
+ this._ended = true;
17
+ return true;
18
+ }
19
+ return false;
20
+ })
21
+ .take(1)
22
+ .toProperty();
23
+ // force stream to be active so this._streamCount, this._ended, and the
24
+ // property's cached value will be kept up-to-date
25
+ this.stream.onValue(() => {
26
+ // ignore
27
+ });
28
+ this.add(streams);
29
+ }
30
+ add(newStreams) {
31
+ if (this._ended) {
32
+ throw new Error('Tried to add a stream to a stopped StopperPool');
33
+ }
34
+ const arrStreams = Array.isArray(newStreams) ? newStreams : [newStreams];
35
+ this._streamCount += arrStreams.length;
36
+ this._pool.plug(Kefir.merge(arrStreams.map((newStream) => newStream.take(1))));
37
+ }
38
+ getSize() {
39
+ return this._streamCount;
40
+ }
41
+ }
@@ -0,0 +1,30 @@
1
+ import * as Kefir from 'kefir';
2
+ /**
3
+ * Returns a Kefir stream that repeatedly calls the condition callback until it
4
+ * returns a truthy value, and then the stream emits that value and ends.
5
+ * If the timeout passes, an error event is emitted and the error is also
6
+ * thrown so that it gets logged. Well-behaving code should not let the timeout
7
+ * get tripped.
8
+ */
9
+ export default function streamWaitFor(condition, timeout = 60 * 1000, steptime = 250) {
10
+ // make this error here so we have a sensible stack.
11
+ const timeoutError = new Error('waitFor timeout');
12
+ const timeoutStream = Kefir.later(timeout, null).flatMap(() => {
13
+ const result = condition();
14
+ if (result) {
15
+ return Kefir.constant(result);
16
+ }
17
+ setTimeout(() => {
18
+ throw timeoutError;
19
+ }, 0);
20
+ return Kefir.constantError(timeoutError);
21
+ });
22
+ const isTruthy = Boolean;
23
+ return Kefir.later(0, null)
24
+ .merge(Kefir.interval(steptime, null))
25
+ .map(() => condition())
26
+ .filter(isTruthy)
27
+ .merge(timeoutStream)
28
+ .take(1)
29
+ .takeErrors(1);
30
+ }
@@ -1,18 +1,19 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import type LiveSet from 'live-set';
4
- import toValueObservable from 'live-set/toValueObservable';
5
- import Kefir from 'kefir';
6
- import type { ItemWithLifetime } from './dom/make-element-child-stream';
7
-
8
- export default function toItemWithLifetimeStream<T>(
9
- liveSet: LiveSet<T>
10
- ): Kefir.Observable<ItemWithLifetime<T>> {
11
- return Kefir.fromESObservable(
12
- toValueObservable(liveSet).map((event) => {
13
- const removal: Promise<void> = event.removal;
14
- const removalStream = Kefir.fromPromise(removal);
15
- return { el: event.value, removalStream };
16
- })
17
- );
18
- }
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = toItemWithLifetimeStream;
8
+ var _toValueObservable = _interopRequireDefault(require("live-set/toValueObservable"));
9
+ var _kefir = _interopRequireDefault(require("kefir"));
10
+ function toItemWithLifetimeStream(liveSet) {
11
+ return _kefir.default.fromESObservable((0, _toValueObservable.default)(liveSet).map(event => {
12
+ const removal = event.removal;
13
+ const removalStream = _kefir.default.fromPromise(removal);
14
+ return {
15
+ el: event.value,
16
+ removalStream
17
+ };
18
+ }));
19
+ }
@@ -1,31 +1,33 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import LiveSet from 'live-set';
4
- import type Kefir from 'kefir';
5
- import type { ItemWithLifetime } from './dom/make-element-child-stream';
6
-
7
- export default function toLiveSet<T>(
8
- itemWithLifetimeStream: Kefir.Observable<ItemWithLifetime<T>>
9
- ): LiveSet<T> {
10
- return new LiveSet({
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = toLiveSet;
8
+ var _liveSet = _interopRequireDefault(require("live-set"));
9
+ function toLiveSet(itemWithLifetimeStream) {
10
+ return new _liveSet.default({
11
11
  read() {
12
12
  throw new Error('should not happen; liveset was inactive');
13
13
  },
14
14
  listen(setValues, controller) {
15
15
  setValues(new Set());
16
-
17
16
  const sub = itemWithLifetimeStream.observe({
18
- value({ el, removalStream }) {
17
+ value(_ref) {
18
+ let {
19
+ el,
20
+ removalStream
21
+ } = _ref;
19
22
  controller.add(el);
20
23
  removalStream.take(1).onValue(() => {
21
24
  controller.remove(el);
22
25
  });
23
- },
26
+ }
24
27
  });
25
-
26
28
  return () => {
27
29
  sub.unsubscribe();
28
30
  };
29
- },
31
+ }
30
32
  });
31
- }
33
+ }
@@ -0,0 +1,28 @@
1
+ export default function waitFor(condition, timeout = 120 * 1000, steptime = 250) {
2
+ // make this error here so we have a sensible stack.
3
+ const timeoutError = new Error('waitFor timeout');
4
+ return new Promise(function (resolve, reject) {
5
+ let waited = 0;
6
+ function step() {
7
+ try {
8
+ const result = condition();
9
+ if (result) {
10
+ resolve(result);
11
+ }
12
+ else {
13
+ if (waited >= timeout) {
14
+ reject(timeoutError);
15
+ }
16
+ else {
17
+ waited += steptime;
18
+ setTimeout(step, steptime);
19
+ }
20
+ }
21
+ }
22
+ catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ setTimeout(step, 1);
27
+ });
28
+ }