@metamask/notification-services-controller 0.21.0 → 2.0.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 (261) hide show
  1. package/CHANGELOG.md +34 -3
  2. package/README.md +35 -1
  3. package/dist/NotificationServicesController/NotificationServicesController.cjs +75 -80
  4. package/dist/NotificationServicesController/NotificationServicesController.cjs.map +1 -1
  5. package/dist/NotificationServicesController/NotificationServicesController.d.cts +10 -34
  6. package/dist/NotificationServicesController/NotificationServicesController.d.cts.map +1 -1
  7. package/dist/NotificationServicesController/NotificationServicesController.d.mts +10 -34
  8. package/dist/NotificationServicesController/NotificationServicesController.d.mts.map +1 -1
  9. package/dist/NotificationServicesController/NotificationServicesController.mjs +76 -81
  10. package/dist/NotificationServicesController/NotificationServicesController.mjs.map +1 -1
  11. package/dist/NotificationServicesController/index.cjs +2 -1
  12. package/dist/NotificationServicesController/index.cjs.map +1 -1
  13. package/dist/NotificationServicesController/index.d.cts +2 -1
  14. package/dist/NotificationServicesController/index.d.cts.map +1 -1
  15. package/dist/NotificationServicesController/index.d.mts +2 -1
  16. package/dist/NotificationServicesController/index.d.mts.map +1 -1
  17. package/dist/NotificationServicesController/index.mjs +2 -1
  18. package/dist/NotificationServicesController/index.mjs.map +1 -1
  19. package/dist/NotificationServicesController/mocks/index.cjs.map +1 -0
  20. package/dist/NotificationServicesController/mocks/index.d.cts.map +1 -0
  21. package/dist/NotificationServicesController/mocks/index.d.mts.map +1 -0
  22. package/dist/NotificationServicesController/mocks/index.mjs.map +1 -0
  23. package/dist/NotificationServicesController/mocks/mock-feature-announcements.cjs.map +1 -0
  24. package/dist/NotificationServicesController/mocks/mock-feature-announcements.d.cts.map +1 -0
  25. package/dist/NotificationServicesController/mocks/mock-feature-announcements.d.mts.map +1 -0
  26. package/dist/NotificationServicesController/mocks/mock-feature-announcements.mjs.map +1 -0
  27. package/dist/NotificationServicesController/mocks/mock-notification-trigger.cjs.map +1 -0
  28. package/dist/NotificationServicesController/mocks/mock-notification-trigger.d.cts.map +1 -0
  29. package/dist/NotificationServicesController/mocks/mock-notification-trigger.d.mts.map +1 -0
  30. package/dist/NotificationServicesController/mocks/mock-notification-trigger.mjs.map +1 -0
  31. package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-notification-user-storage.cjs +1 -1
  32. package/dist/NotificationServicesController/mocks/mock-notification-user-storage.cjs.map +1 -0
  33. package/dist/NotificationServicesController/mocks/mock-notification-user-storage.d.cts.map +1 -0
  34. package/dist/NotificationServicesController/mocks/mock-notification-user-storage.d.mts.map +1 -0
  35. package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-notification-user-storage.mjs +1 -1
  36. package/dist/NotificationServicesController/mocks/mock-notification-user-storage.mjs.map +1 -0
  37. package/dist/NotificationServicesController/mocks/mock-raw-notifications.cjs.map +1 -0
  38. package/dist/NotificationServicesController/mocks/mock-raw-notifications.d.cts.map +1 -0
  39. package/dist/NotificationServicesController/mocks/mock-raw-notifications.d.mts.map +1 -0
  40. package/dist/NotificationServicesController/mocks/mock-raw-notifications.mjs.map +1 -0
  41. package/dist/NotificationServicesController/mocks/mock-snap-notification.cjs.map +1 -0
  42. package/dist/NotificationServicesController/mocks/mock-snap-notification.d.cts.map +1 -0
  43. package/dist/NotificationServicesController/mocks/mock-snap-notification.d.mts.map +1 -0
  44. package/dist/NotificationServicesController/mocks/mock-snap-notification.mjs.map +1 -0
  45. package/dist/NotificationServicesController/mocks/mockResponses.cjs.map +1 -0
  46. package/dist/NotificationServicesController/mocks/mockResponses.d.cts.map +1 -0
  47. package/dist/NotificationServicesController/mocks/mockResponses.d.mts.map +1 -0
  48. package/dist/NotificationServicesController/mocks/mockResponses.mjs.map +1 -0
  49. package/dist/NotificationServicesController/services/onchain-notifications.cjs +1 -0
  50. package/dist/NotificationServicesController/services/onchain-notifications.cjs.map +1 -1
  51. package/dist/NotificationServicesController/services/onchain-notifications.d.cts.map +1 -1
  52. package/dist/NotificationServicesController/services/onchain-notifications.d.mts.map +1 -1
  53. package/dist/NotificationServicesController/services/onchain-notifications.mjs +2 -1
  54. package/dist/NotificationServicesController/services/onchain-notifications.mjs.map +1 -1
  55. package/dist/NotificationServicesController/utils/utils.cjs +28 -2
  56. package/dist/NotificationServicesController/utils/utils.cjs.map +1 -1
  57. package/dist/NotificationServicesController/utils/utils.d.cts +11 -1
  58. package/dist/NotificationServicesController/utils/utils.d.cts.map +1 -1
  59. package/dist/NotificationServicesController/utils/utils.d.mts +11 -1
  60. package/dist/NotificationServicesController/utils/utils.d.mts.map +1 -1
  61. package/dist/NotificationServicesController/utils/utils.mjs +26 -1
  62. package/dist/NotificationServicesController/utils/utils.mjs.map +1 -1
  63. package/dist/NotificationServicesPushController/NotificationServicesPushController.cjs +99 -57
  64. package/dist/NotificationServicesPushController/NotificationServicesPushController.cjs.map +1 -1
  65. package/dist/NotificationServicesPushController/NotificationServicesPushController.d.cts +21 -22
  66. package/dist/NotificationServicesPushController/NotificationServicesPushController.d.cts.map +1 -1
  67. package/dist/NotificationServicesPushController/NotificationServicesPushController.d.mts +21 -22
  68. package/dist/NotificationServicesPushController/NotificationServicesPushController.d.mts.map +1 -1
  69. package/dist/NotificationServicesPushController/NotificationServicesPushController.mjs +100 -58
  70. package/dist/NotificationServicesPushController/NotificationServicesPushController.mjs.map +1 -1
  71. package/dist/NotificationServicesPushController/index.cjs +1 -1
  72. package/dist/NotificationServicesPushController/index.cjs.map +1 -1
  73. package/dist/NotificationServicesPushController/index.d.cts +1 -1
  74. package/dist/NotificationServicesPushController/index.d.cts.map +1 -1
  75. package/dist/NotificationServicesPushController/index.d.mts +1 -1
  76. package/dist/NotificationServicesPushController/index.d.mts.map +1 -1
  77. package/dist/NotificationServicesPushController/index.mjs +1 -1
  78. package/dist/NotificationServicesPushController/index.mjs.map +1 -1
  79. package/dist/NotificationServicesPushController/mocks/index.cjs.map +1 -0
  80. package/dist/NotificationServicesPushController/mocks/index.d.cts.map +1 -0
  81. package/dist/NotificationServicesPushController/mocks/index.d.mts.map +1 -0
  82. package/dist/NotificationServicesPushController/mocks/index.mjs.map +1 -0
  83. package/dist/NotificationServicesPushController/{__fixtures__ → mocks}/mockResponse.cjs +2 -2
  84. package/dist/NotificationServicesPushController/mocks/mockResponse.cjs.map +1 -0
  85. package/dist/NotificationServicesPushController/mocks/mockResponse.d.cts.map +1 -0
  86. package/dist/NotificationServicesPushController/mocks/mockResponse.d.mts.map +1 -0
  87. package/dist/NotificationServicesPushController/{__fixtures__ → mocks}/mockResponse.mjs +2 -2
  88. package/dist/NotificationServicesPushController/mocks/mockResponse.mjs.map +1 -0
  89. package/dist/NotificationServicesPushController/services/services.cjs +21 -93
  90. package/dist/NotificationServicesPushController/services/services.cjs.map +1 -1
  91. package/dist/NotificationServicesPushController/services/services.d.cts +8 -29
  92. package/dist/NotificationServicesPushController/services/services.d.cts.map +1 -1
  93. package/dist/NotificationServicesPushController/services/services.d.mts +8 -29
  94. package/dist/NotificationServicesPushController/services/services.d.mts.map +1 -1
  95. package/dist/NotificationServicesPushController/services/services.mjs +20 -94
  96. package/dist/NotificationServicesPushController/services/services.mjs.map +1 -1
  97. package/dist/NotificationServicesPushController/types/index.cjs.map +1 -1
  98. package/dist/NotificationServicesPushController/types/index.d.cts +1 -0
  99. package/dist/NotificationServicesPushController/types/index.d.cts.map +1 -1
  100. package/dist/NotificationServicesPushController/types/index.d.mts +1 -0
  101. package/dist/NotificationServicesPushController/types/index.d.mts.map +1 -1
  102. package/dist/NotificationServicesPushController/types/index.mjs.map +1 -1
  103. package/dist/NotificationServicesPushController/{services/push/index.cjs → types/push-service-interface.cjs} +1 -1
  104. package/dist/NotificationServicesPushController/types/push-service-interface.cjs.map +1 -0
  105. package/dist/NotificationServicesPushController/types/push-service-interface.d.cts +30 -0
  106. package/dist/NotificationServicesPushController/types/push-service-interface.d.cts.map +1 -0
  107. package/dist/NotificationServicesPushController/types/push-service-interface.d.mts +30 -0
  108. package/dist/NotificationServicesPushController/types/push-service-interface.d.mts.map +1 -0
  109. package/dist/NotificationServicesPushController/types/push-service-interface.mjs +2 -0
  110. package/dist/NotificationServicesPushController/types/push-service-interface.mjs.map +1 -0
  111. package/dist/NotificationServicesPushController/utils/get-notification-message.cjs +1 -19
  112. package/dist/NotificationServicesPushController/utils/get-notification-message.cjs.map +1 -1
  113. package/dist/NotificationServicesPushController/utils/get-notification-message.d.cts +0 -7
  114. package/dist/NotificationServicesPushController/utils/get-notification-message.d.cts.map +1 -1
  115. package/dist/NotificationServicesPushController/utils/get-notification-message.d.mts +0 -7
  116. package/dist/NotificationServicesPushController/utils/get-notification-message.d.mts.map +1 -1
  117. package/dist/NotificationServicesPushController/utils/get-notification-message.mjs +0 -17
  118. package/dist/NotificationServicesPushController/utils/get-notification-message.mjs.map +1 -1
  119. package/dist/NotificationServicesPushController/web/index.cjs +8 -0
  120. package/dist/NotificationServicesPushController/web/index.cjs.map +1 -0
  121. package/dist/NotificationServicesPushController/web/index.d.cts +2 -0
  122. package/dist/NotificationServicesPushController/web/index.d.cts.map +1 -0
  123. package/dist/NotificationServicesPushController/web/index.d.mts +2 -0
  124. package/dist/NotificationServicesPushController/web/index.d.mts.map +1 -0
  125. package/dist/NotificationServicesPushController/web/index.mjs +2 -0
  126. package/dist/NotificationServicesPushController/web/index.mjs.map +1 -0
  127. package/dist/NotificationServicesPushController/web/push-utils.cjs +170 -0
  128. package/dist/NotificationServicesPushController/web/push-utils.cjs.map +1 -0
  129. package/dist/NotificationServicesPushController/web/push-utils.d.cts +37 -0
  130. package/dist/NotificationServicesPushController/web/push-utils.d.cts.map +1 -0
  131. package/dist/NotificationServicesPushController/web/push-utils.d.mts +37 -0
  132. package/dist/NotificationServicesPushController/web/push-utils.d.mts.map +1 -0
  133. package/dist/NotificationServicesPushController/web/push-utils.mjs +168 -0
  134. package/dist/NotificationServicesPushController/web/push-utils.mjs.map +1 -0
  135. package/dist/shared/index.cjs +19 -0
  136. package/dist/shared/index.cjs.map +1 -0
  137. package/dist/shared/index.d.cts +3 -0
  138. package/dist/shared/index.d.cts.map +1 -0
  139. package/dist/shared/index.d.mts +3 -0
  140. package/dist/shared/index.d.mts.map +1 -0
  141. package/dist/shared/index.mjs +3 -0
  142. package/dist/shared/index.mjs.map +1 -0
  143. package/dist/shared/is-onchain-notification.cjs +22 -0
  144. package/dist/shared/is-onchain-notification.cjs.map +1 -0
  145. package/dist/shared/is-onchain-notification.d.cts +9 -0
  146. package/dist/shared/is-onchain-notification.d.cts.map +1 -0
  147. package/dist/shared/is-onchain-notification.d.mts +9 -0
  148. package/dist/shared/is-onchain-notification.d.mts.map +1 -0
  149. package/dist/shared/is-onchain-notification.mjs +18 -0
  150. package/dist/shared/is-onchain-notification.mjs.map +1 -0
  151. package/notification-services/mocks/package.json +2 -2
  152. package/package.json +24 -14
  153. package/push-services/mocks/package.json +2 -2
  154. package/push-services/web/package.json +9 -0
  155. package/dist/NotificationServicesController/__fixtures__/index.cjs.map +0 -1
  156. package/dist/NotificationServicesController/__fixtures__/index.d.cts.map +0 -1
  157. package/dist/NotificationServicesController/__fixtures__/index.d.mts.map +0 -1
  158. package/dist/NotificationServicesController/__fixtures__/index.mjs.map +0 -1
  159. package/dist/NotificationServicesController/__fixtures__/mock-feature-announcements.cjs.map +0 -1
  160. package/dist/NotificationServicesController/__fixtures__/mock-feature-announcements.d.cts.map +0 -1
  161. package/dist/NotificationServicesController/__fixtures__/mock-feature-announcements.d.mts.map +0 -1
  162. package/dist/NotificationServicesController/__fixtures__/mock-feature-announcements.mjs.map +0 -1
  163. package/dist/NotificationServicesController/__fixtures__/mock-notification-trigger.cjs.map +0 -1
  164. package/dist/NotificationServicesController/__fixtures__/mock-notification-trigger.d.cts.map +0 -1
  165. package/dist/NotificationServicesController/__fixtures__/mock-notification-trigger.d.mts.map +0 -1
  166. package/dist/NotificationServicesController/__fixtures__/mock-notification-trigger.mjs.map +0 -1
  167. package/dist/NotificationServicesController/__fixtures__/mock-notification-user-storage.cjs.map +0 -1
  168. package/dist/NotificationServicesController/__fixtures__/mock-notification-user-storage.d.cts.map +0 -1
  169. package/dist/NotificationServicesController/__fixtures__/mock-notification-user-storage.d.mts.map +0 -1
  170. package/dist/NotificationServicesController/__fixtures__/mock-notification-user-storage.mjs.map +0 -1
  171. package/dist/NotificationServicesController/__fixtures__/mock-raw-notifications.cjs.map +0 -1
  172. package/dist/NotificationServicesController/__fixtures__/mock-raw-notifications.d.cts.map +0 -1
  173. package/dist/NotificationServicesController/__fixtures__/mock-raw-notifications.d.mts.map +0 -1
  174. package/dist/NotificationServicesController/__fixtures__/mock-raw-notifications.mjs.map +0 -1
  175. package/dist/NotificationServicesController/__fixtures__/mock-snap-notification.cjs.map +0 -1
  176. package/dist/NotificationServicesController/__fixtures__/mock-snap-notification.d.cts.map +0 -1
  177. package/dist/NotificationServicesController/__fixtures__/mock-snap-notification.d.mts.map +0 -1
  178. package/dist/NotificationServicesController/__fixtures__/mock-snap-notification.mjs.map +0 -1
  179. package/dist/NotificationServicesController/__fixtures__/mockResponses.cjs.map +0 -1
  180. package/dist/NotificationServicesController/__fixtures__/mockResponses.d.cts.map +0 -1
  181. package/dist/NotificationServicesController/__fixtures__/mockResponses.d.mts.map +0 -1
  182. package/dist/NotificationServicesController/__fixtures__/mockResponses.mjs.map +0 -1
  183. package/dist/NotificationServicesController/__fixtures__/mockServices.cjs +0 -56
  184. package/dist/NotificationServicesController/__fixtures__/mockServices.cjs.map +0 -1
  185. package/dist/NotificationServicesController/__fixtures__/mockServices.d.cts +0 -12
  186. package/dist/NotificationServicesController/__fixtures__/mockServices.d.cts.map +0 -1
  187. package/dist/NotificationServicesController/__fixtures__/mockServices.d.mts +0 -12
  188. package/dist/NotificationServicesController/__fixtures__/mockServices.d.mts.map +0 -1
  189. package/dist/NotificationServicesController/__fixtures__/mockServices.mjs +0 -52
  190. package/dist/NotificationServicesController/__fixtures__/mockServices.mjs.map +0 -1
  191. package/dist/NotificationServicesController/__fixtures__/test-utils.cjs +0 -31
  192. package/dist/NotificationServicesController/__fixtures__/test-utils.cjs.map +0 -1
  193. package/dist/NotificationServicesController/__fixtures__/test-utils.d.cts +0 -14
  194. package/dist/NotificationServicesController/__fixtures__/test-utils.d.cts.map +0 -1
  195. package/dist/NotificationServicesController/__fixtures__/test-utils.d.mts +0 -14
  196. package/dist/NotificationServicesController/__fixtures__/test-utils.d.mts.map +0 -1
  197. package/dist/NotificationServicesController/__fixtures__/test-utils.mjs +0 -27
  198. package/dist/NotificationServicesController/__fixtures__/test-utils.mjs.map +0 -1
  199. package/dist/NotificationServicesPushController/__fixtures__/index.cjs.map +0 -1
  200. package/dist/NotificationServicesPushController/__fixtures__/index.d.cts.map +0 -1
  201. package/dist/NotificationServicesPushController/__fixtures__/index.d.mts.map +0 -1
  202. package/dist/NotificationServicesPushController/__fixtures__/index.mjs.map +0 -1
  203. package/dist/NotificationServicesPushController/__fixtures__/mockResponse.cjs.map +0 -1
  204. package/dist/NotificationServicesPushController/__fixtures__/mockResponse.d.cts.map +0 -1
  205. package/dist/NotificationServicesPushController/__fixtures__/mockResponse.d.mts.map +0 -1
  206. package/dist/NotificationServicesPushController/__fixtures__/mockResponse.mjs.map +0 -1
  207. package/dist/NotificationServicesPushController/__fixtures__/mockServices.cjs +0 -31
  208. package/dist/NotificationServicesPushController/__fixtures__/mockServices.cjs.map +0 -1
  209. package/dist/NotificationServicesPushController/__fixtures__/mockServices.d.cts +0 -9
  210. package/dist/NotificationServicesPushController/__fixtures__/mockServices.d.cts.map +0 -1
  211. package/dist/NotificationServicesPushController/__fixtures__/mockServices.d.mts +0 -9
  212. package/dist/NotificationServicesPushController/__fixtures__/mockServices.d.mts.map +0 -1
  213. package/dist/NotificationServicesPushController/__fixtures__/mockServices.mjs +0 -30
  214. package/dist/NotificationServicesPushController/__fixtures__/mockServices.mjs.map +0 -1
  215. package/dist/NotificationServicesPushController/constants.cjs +0 -14
  216. package/dist/NotificationServicesPushController/constants.cjs.map +0 -1
  217. package/dist/NotificationServicesPushController/constants.d.cts +0 -11
  218. package/dist/NotificationServicesPushController/constants.d.cts.map +0 -1
  219. package/dist/NotificationServicesPushController/constants.d.mts +0 -11
  220. package/dist/NotificationServicesPushController/constants.d.mts.map +0 -1
  221. package/dist/NotificationServicesPushController/constants.mjs +0 -11
  222. package/dist/NotificationServicesPushController/constants.mjs.map +0 -1
  223. package/dist/NotificationServicesPushController/services/push/index.cjs.map +0 -1
  224. package/dist/NotificationServicesPushController/services/push/index.d.cts +0 -6
  225. package/dist/NotificationServicesPushController/services/push/index.d.cts.map +0 -1
  226. package/dist/NotificationServicesPushController/services/push/index.d.mts +0 -6
  227. package/dist/NotificationServicesPushController/services/push/index.d.mts.map +0 -1
  228. package/dist/NotificationServicesPushController/services/push/index.mjs +0 -2
  229. package/dist/NotificationServicesPushController/services/push/index.mjs.map +0 -1
  230. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/index.cjs +0 -0
  231. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/index.d.cts +0 -0
  232. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/index.d.mts +0 -0
  233. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/index.mjs +0 -0
  234. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-feature-announcements.cjs +0 -0
  235. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-feature-announcements.d.cts +0 -0
  236. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-feature-announcements.d.mts +0 -0
  237. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-feature-announcements.mjs +0 -0
  238. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-notification-trigger.cjs +0 -0
  239. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-notification-trigger.d.cts +0 -0
  240. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-notification-trigger.d.mts +0 -0
  241. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-notification-trigger.mjs +0 -0
  242. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-notification-user-storage.d.cts +0 -0
  243. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-notification-user-storage.d.mts +0 -0
  244. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-raw-notifications.cjs +0 -0
  245. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-raw-notifications.d.cts +0 -0
  246. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-raw-notifications.d.mts +0 -0
  247. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-raw-notifications.mjs +0 -0
  248. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-snap-notification.cjs +0 -0
  249. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-snap-notification.d.cts +0 -0
  250. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-snap-notification.d.mts +0 -0
  251. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mock-snap-notification.mjs +0 -0
  252. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mockResponses.cjs +0 -0
  253. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mockResponses.d.cts +0 -0
  254. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mockResponses.d.mts +0 -0
  255. /package/dist/NotificationServicesController/{__fixtures__ → mocks}/mockResponses.mjs +0 -0
  256. /package/dist/NotificationServicesPushController/{__fixtures__ → mocks}/index.cjs +0 -0
  257. /package/dist/NotificationServicesPushController/{__fixtures__ → mocks}/index.d.cts +0 -0
  258. /package/dist/NotificationServicesPushController/{__fixtures__ → mocks}/index.d.mts +0 -0
  259. /package/dist/NotificationServicesPushController/{__fixtures__ → mocks}/index.mjs +0 -0
  260. /package/dist/NotificationServicesPushController/{__fixtures__ → mocks}/mockResponse.d.cts +0 -0
  261. /package/dist/NotificationServicesPushController/{__fixtures__ → mocks}/mockResponse.d.mts +0 -0
@@ -22,37 +22,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.listenToPushNotifications = exports.updateTriggerPushNotifications = exports.deactivatePushNotifications = exports.activatePushNotifications = exports.updateLinksAPI = exports.getPushNotificationLinks = void 0;
30
- const loglevel_1 = __importDefault(require("loglevel"));
26
+ exports.updateTriggerPushNotifications = exports.deactivatePushNotifications = exports.activatePushNotifications = exports.updateLinksAPI = void 0;
31
27
  const endpoints = __importStar(require("./endpoints.cjs"));
32
- const push_web_1 = require("./push/push-web.cjs");
33
- /**
34
- * Fetches push notification links from a remote endpoint using a BearerToken for authorization.
35
- *
36
- * @param bearerToken - The JSON Web Token used for authorization.
37
- * @returns A promise that resolves with the links result or null if an error occurs.
38
- */
39
- async function getPushNotificationLinks(bearerToken) {
40
- try {
41
- const response = await fetch(endpoints.REGISTRATION_TOKENS_ENDPOINT, {
42
- headers: { Authorization: `Bearer ${bearerToken}` },
43
- });
44
- if (!response.ok) {
45
- loglevel_1.default.error('Failed to fetch the push notification links');
46
- throw new Error('Failed to fetch the push notification links');
47
- }
48
- return response.json();
49
- }
50
- catch (error) {
51
- loglevel_1.default.error('Failed to fetch the push notification links', error);
52
- return null;
53
- }
54
- }
55
- exports.getPushNotificationLinks = getPushNotificationLinks;
56
28
  /**
57
29
  * Updates the push notification links on a remote API.
58
30
  *
@@ -89,42 +61,30 @@ exports.updateLinksAPI = updateLinksAPI;
89
61
  * @returns A promise that resolves with an object containing the success status and the BearerToken token.
90
62
  */
91
63
  async function activatePushNotifications(params) {
92
- const { bearerToken, triggers, env, createRegToken, platform, fcmToken } = params;
93
- const notificationLinks = await getPushNotificationLinks(bearerToken);
94
- if (!notificationLinks) {
95
- return null;
96
- }
97
- const regToken = fcmToken ?? (await createRegToken(env).catch(() => null));
64
+ const { bearerToken, triggers, env, createRegToken, platform, locale } = params;
65
+ const regToken = await createRegToken(env).catch(() => null);
98
66
  if (!regToken) {
99
67
  return null;
100
68
  }
101
- const newRegTokens = new Set(notificationLinks.registration_tokens);
102
- newRegTokens.add({ token: regToken, platform });
103
- await updateLinksAPI(bearerToken, triggers, Array.from(newRegTokens));
69
+ await updateLinksAPI(bearerToken, triggers, [
70
+ { token: regToken, platform, locale },
71
+ ]);
104
72
  return regToken;
105
73
  }
106
74
  exports.activatePushNotifications = activatePushNotifications;
107
75
  /**
108
- * Disables push notifications by removing the registration token and unlinking triggers.
76
+ * Disables push notifications by removing the registration token
77
+ * We do not need to unlink triggers, and remove old reg tokens (this is cleaned up in the back-end)
109
78
  *
110
79
  * @param params - Deactivate Push Params
111
- * @returns A promise that resolves with true if notifications were successfully disabled, false otherwise.
80
+ * @returns A promise that resolves with true if push notifications were successfully disabled, false otherwise.
112
81
  */
113
82
  async function deactivatePushNotifications(params) {
114
- const { regToken, bearerToken, triggers, env, deleteRegToken } = params;
83
+ const { regToken, env, deleteRegToken } = params;
115
84
  // if we don't have a reg token, then we can early return
116
85
  if (!regToken) {
117
86
  return true;
118
87
  }
119
- const notificationLinks = await getPushNotificationLinks(bearerToken);
120
- if (!notificationLinks) {
121
- return false;
122
- }
123
- const filteredRegTokens = notificationLinks.registration_tokens.filter((r) => r.token !== regToken);
124
- const isTokenRemovedFromAPI = await updateLinksAPI(bearerToken, triggers, filteredRegTokens);
125
- if (!isTokenRemovedFromAPI) {
126
- return false;
127
- }
128
88
  const isTokenRemovedFromFCM = await deleteRegToken(env);
129
89
  if (!isTokenRemovedFromFCM) {
130
90
  return false;
@@ -143,53 +103,21 @@ exports.deactivatePushNotifications = deactivatePushNotifications;
143
103
  * - fcmToken: the new or existing Firebase Cloud Messaging token used for the update, if applicable.
144
104
  */
145
105
  async function updateTriggerPushNotifications(params) {
146
- const { bearerToken, regToken, triggers, createRegToken, platform, deleteRegToken, env, } = params;
147
- const notificationLinks = await getPushNotificationLinks(bearerToken);
148
- if (!notificationLinks) {
149
- return { isTriggersLinkedToPushNotifications: false };
106
+ const { bearerToken, triggers, createRegToken, platform, locale, deleteRegToken, env, } = params;
107
+ await deleteRegToken(env);
108
+ const newRegToken = await createRegToken(env);
109
+ if (!newRegToken) {
110
+ throw new Error('Failed to create a new registration token');
150
111
  }
151
- // Create new registration token if doesn't exist
152
- const hasRegToken = Boolean(regToken &&
153
- notificationLinks.registration_tokens.some((r) => r.token === regToken));
154
- let newRegToken = null;
155
- if (!hasRegToken) {
156
- await deleteRegToken(env);
157
- newRegToken = await createRegToken(env);
158
- if (!newRegToken) {
159
- throw new Error('Failed to create a new registration token');
160
- }
161
- notificationLinks.registration_tokens.push({
162
- token: newRegToken,
163
- platform,
164
- });
112
+ const linksNotUpdated = await updateLinksAPI(bearerToken, triggers, [
113
+ { token: newRegToken, platform, locale },
114
+ ]);
115
+ if (!linksNotUpdated) {
116
+ throw new Error('Failed to create links to new reg token');
165
117
  }
166
- const isTriggersLinkedToPushNotifications = await updateLinksAPI(bearerToken, triggers, notificationLinks.registration_tokens);
167
118
  return {
168
- isTriggersLinkedToPushNotifications,
169
- fcmToken: newRegToken ?? null,
119
+ fcmToken: newRegToken,
170
120
  };
171
121
  }
172
122
  exports.updateTriggerPushNotifications = updateTriggerPushNotifications;
173
- /**
174
- * Listens to push notifications and invokes the provided callback function with the received notification data.
175
- *
176
- * @param params - listen params
177
- * @returns A promise that resolves to an unsubscribe function to stop listening to push notifications.
178
- */
179
- async function listenToPushNotifications(params) {
180
- const { env, listenToPushReceived, listenToPushClicked } = params;
181
- /*
182
- Push notifications require 2 listeners that need tracking (when creating and for tearing down):
183
- 1. handling receiving a push notification (and the content we want to display)
184
- 2. handling when a user clicks on a push notification
185
- */
186
- const unsubscribePushNotifications = await (0, push_web_1.listenToPushNotificationsReceived)(env, listenToPushReceived);
187
- const unsubscribeNotificationClicks = (0, push_web_1.listenToPushNotificationsClicked)(listenToPushClicked);
188
- const unsubscribe = () => {
189
- unsubscribePushNotifications?.();
190
- unsubscribeNotificationClicks();
191
- };
192
- return unsubscribe;
193
- }
194
- exports.listenToPushNotifications = listenToPushNotifications;
195
123
  //# sourceMappingURL=services.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.cjs","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/services/services.ts"],"names":[],"mappings":"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","sourcesContent":["import log from 'loglevel';\n\nimport * as endpoints from './endpoints';\nimport type { CreateRegToken, DeleteRegToken } from './push';\nimport {\n listenToPushNotificationsClicked,\n listenToPushNotificationsReceived,\n} from './push/push-web';\nimport type { Types } from '../../NotificationServicesController';\nimport type { PushNotificationEnv } from '../types';\n\nexport type RegToken = {\n token: string;\n platform: 'extension' | 'mobile' | 'portfolio';\n};\n\n/**\n * Links API Response Shape\n */\nexport type LinksResult = {\n trigger_ids: string[];\n\n registration_tokens: RegToken[];\n};\n\n/**\n * Fetches push notification links from a remote endpoint using a BearerToken for authorization.\n *\n * @param bearerToken - The JSON Web Token used for authorization.\n * @returns A promise that resolves with the links result or null if an error occurs.\n */\nexport async function getPushNotificationLinks(\n bearerToken: string,\n): Promise<LinksResult | null> {\n try {\n const response = await fetch(endpoints.REGISTRATION_TOKENS_ENDPOINT, {\n headers: { Authorization: `Bearer ${bearerToken}` },\n });\n if (!response.ok) {\n log.error('Failed to fetch the push notification links');\n throw new Error('Failed to fetch the push notification links');\n }\n return response.json() as Promise<LinksResult>;\n } catch (error) {\n log.error('Failed to fetch the push notification links', error);\n return null;\n }\n}\n\n/**\n * Updates the push notification links on a remote API.\n *\n * @param bearerToken - The JSON Web Token used for authorization.\n * @param triggers - An array of trigger identifiers.\n * @param regTokens - An array of registration tokens.\n * @returns A promise that resolves with true if the update was successful, false otherwise.\n */\nexport async function updateLinksAPI(\n bearerToken: string,\n triggers: string[],\n regTokens: RegToken[],\n): Promise<boolean> {\n try {\n const body: LinksResult = {\n trigger_ids: triggers,\n registration_tokens: regTokens,\n };\n const response = await fetch(endpoints.REGISTRATION_TOKENS_ENDPOINT, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n return response.status === 200;\n } catch {\n return false;\n }\n}\n\ntype ActivatePushNotificationsParams = {\n // Push Links\n bearerToken: string;\n triggers: string[];\n\n // Push Registration\n env: PushNotificationEnv;\n createRegToken: CreateRegToken;\n platform: 'extension' | 'mobile' | 'portfolio';\n fcmToken?: string;\n};\n\n/**\n * Enables push notifications by registering the device and linking triggers.\n *\n * @param params - Activate Push Params\n * @returns A promise that resolves with an object containing the success status and the BearerToken token.\n */\nexport async function activatePushNotifications(\n params: ActivatePushNotificationsParams,\n): Promise<string | null> {\n const { bearerToken, triggers, env, createRegToken, platform, fcmToken } =\n params;\n\n const notificationLinks = await getPushNotificationLinks(bearerToken);\n\n if (!notificationLinks) {\n return null;\n }\n\n const regToken = fcmToken ?? (await createRegToken(env).catch(() => null));\n if (!regToken) {\n return null;\n }\n\n const newRegTokens = new Set(notificationLinks.registration_tokens);\n newRegTokens.add({ token: regToken, platform });\n\n await updateLinksAPI(bearerToken, triggers, Array.from(newRegTokens));\n return regToken;\n}\n\ntype DeactivatePushNotificationsParams = {\n // Push Links\n regToken: string;\n bearerToken: string;\n triggers: string[];\n\n // Push Un-registration\n env: PushNotificationEnv;\n deleteRegToken: DeleteRegToken;\n};\n\n/**\n * Disables push notifications by removing the registration token and unlinking triggers.\n *\n * @param params - Deactivate Push Params\n * @returns A promise that resolves with true if notifications were successfully disabled, false otherwise.\n */\nexport async function deactivatePushNotifications(\n params: DeactivatePushNotificationsParams,\n): Promise<boolean> {\n const { regToken, bearerToken, triggers, env, deleteRegToken } = params;\n\n // if we don't have a reg token, then we can early return\n if (!regToken) {\n return true;\n }\n\n const notificationLinks = await getPushNotificationLinks(bearerToken);\n if (!notificationLinks) {\n return false;\n }\n\n const filteredRegTokens = notificationLinks.registration_tokens.filter(\n (r) => r.token !== regToken,\n );\n\n const isTokenRemovedFromAPI = await updateLinksAPI(\n bearerToken,\n triggers,\n filteredRegTokens,\n );\n if (!isTokenRemovedFromAPI) {\n return false;\n }\n\n const isTokenRemovedFromFCM = await deleteRegToken(env);\n if (!isTokenRemovedFromFCM) {\n return false;\n }\n\n return true;\n}\n\ntype UpdateTriggerPushNotificationsParams = {\n // Push Links\n regToken: string;\n bearerToken: string;\n triggers: string[];\n\n // Push Registration\n env: PushNotificationEnv;\n createRegToken: CreateRegToken;\n platform: 'extension' | 'mobile' | 'portfolio';\n\n // Push Un-registration\n deleteRegToken: DeleteRegToken;\n};\n\n/**\n * Updates the triggers linked to push notifications for a given registration token.\n * If the provided registration token does not exist or is not in the current set of registration tokens,\n * a new registration token is created and used for the update.\n *\n * @param params - Update Push Params\n * @returns A promise that resolves with an object containing:\n * - isTriggersLinkedToPushNotifications: boolean indicating if the triggers were successfully updated.\n * - fcmToken: the new or existing Firebase Cloud Messaging token used for the update, if applicable.\n */\nexport async function updateTriggerPushNotifications(\n params: UpdateTriggerPushNotificationsParams,\n): Promise<{\n isTriggersLinkedToPushNotifications: boolean;\n fcmToken?: string | null;\n}> {\n const {\n bearerToken,\n regToken,\n triggers,\n createRegToken,\n platform,\n deleteRegToken,\n env,\n } = params;\n\n const notificationLinks = await getPushNotificationLinks(bearerToken);\n if (!notificationLinks) {\n return { isTriggersLinkedToPushNotifications: false };\n }\n // Create new registration token if doesn't exist\n const hasRegToken = Boolean(\n regToken &&\n notificationLinks.registration_tokens.some((r) => r.token === regToken),\n );\n\n let newRegToken: string | null = null;\n if (!hasRegToken) {\n await deleteRegToken(env);\n newRegToken = await createRegToken(env);\n if (!newRegToken) {\n throw new Error('Failed to create a new registration token');\n }\n notificationLinks.registration_tokens.push({\n token: newRegToken,\n platform,\n });\n }\n\n const isTriggersLinkedToPushNotifications = await updateLinksAPI(\n bearerToken,\n triggers,\n notificationLinks.registration_tokens,\n );\n\n return {\n isTriggersLinkedToPushNotifications,\n fcmToken: newRegToken ?? null,\n };\n}\n\ntype ListenToPushNotificationsParams = {\n env: PushNotificationEnv;\n listenToPushReceived: (\n notification: Types.INotification,\n ) => void | Promise<void>;\n listenToPushClicked: (\n event: NotificationEvent,\n notification?: Types.INotification,\n ) => void;\n};\n\n/**\n * Listens to push notifications and invokes the provided callback function with the received notification data.\n *\n * @param params - listen params\n * @returns A promise that resolves to an unsubscribe function to stop listening to push notifications.\n */\nexport async function listenToPushNotifications(\n params: ListenToPushNotificationsParams,\n): Promise<() => void> {\n const { env, listenToPushReceived, listenToPushClicked } = params;\n\n /*\n Push notifications require 2 listeners that need tracking (when creating and for tearing down):\n 1. handling receiving a push notification (and the content we want to display)\n 2. handling when a user clicks on a push notification\n */\n const unsubscribePushNotifications = await listenToPushNotificationsReceived(\n env,\n listenToPushReceived,\n );\n const unsubscribeNotificationClicks =\n listenToPushNotificationsClicked(listenToPushClicked);\n\n const unsubscribe = () => {\n unsubscribePushNotifications?.();\n unsubscribeNotificationClicks();\n };\n\n return unsubscribe;\n}\n"]}
1
+ {"version":3,"file":"services.cjs","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/services/services.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAAyC;AAqBzC;;;;;;;GAOG;AACI,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,QAAkB,EAClB,SAAqB;IAErB,IAAI;QACF,MAAM,IAAI,GAAgB;YACxB,WAAW,EAAE,QAAQ;YACrB,mBAAmB,EAAE,SAAS;SAC/B,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,4BAA4B,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;KAChC;IAAC,MAAM;QACN,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAtBD,wCAsBC;AAcD;;;;;GAKG;AACI,KAAK,UAAU,yBAAyB,CAC7C,MAAuC;IAEvC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GACpE,MAAM,CAAC;IAET,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,IAAI,CAAC;KACb;IAED,MAAM,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE;QAC1C,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;KACtC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAfD,8DAeC;AAWD;;;;;;GAMG;AACI,KAAK,UAAU,2BAA2B,CAC/C,MAAyC;IAEzC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAEjD,yDAAyD;IACzD,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,IAAI,CAAC;KACb;IAED,MAAM,qBAAqB,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,qBAAqB,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAhBD,kEAgBC;AAiBD;;;;;;;;;GASG;AACI,KAAK,UAAU,8BAA8B,CAClD,MAA4C;IAI5C,MAAM,EACJ,WAAW,EACX,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,MAAM,EACN,cAAc,EACd,GAAG,GACJ,GAAG,MAAM,CAAC;IAEX,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE;QAClE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;KACzC,CAAC,CAAC;IACH,IAAI,CAAC,eAAe,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;IAED,OAAO;QACL,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC;AA/BD,wEA+BC","sourcesContent":["import * as endpoints from './endpoints';\nimport type { PushNotificationEnv } from '../types';\nimport type {\n CreateRegToken,\n DeleteRegToken,\n} from '../types/push-service-interface';\n\nexport type RegToken = {\n token: string;\n platform: 'extension' | 'mobile' | 'portfolio';\n locale: string;\n};\n\n/**\n * Links API Response Shape\n */\nexport type LinksResult = {\n trigger_ids: string[];\n registration_tokens: RegToken[];\n};\n\n/**\n * Updates the push notification links on a remote API.\n *\n * @param bearerToken - The JSON Web Token used for authorization.\n * @param triggers - An array of trigger identifiers.\n * @param regTokens - An array of registration tokens.\n * @returns A promise that resolves with true if the update was successful, false otherwise.\n */\nexport async function updateLinksAPI(\n bearerToken: string,\n triggers: string[],\n regTokens: RegToken[],\n): Promise<boolean> {\n try {\n const body: LinksResult = {\n trigger_ids: triggers,\n registration_tokens: regTokens,\n };\n const response = await fetch(endpoints.REGISTRATION_TOKENS_ENDPOINT, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n return response.status === 200;\n } catch {\n return false;\n }\n}\n\ntype ActivatePushNotificationsParams = {\n // Push Links\n bearerToken: string;\n triggers: string[];\n\n // Push Registration\n env: PushNotificationEnv;\n createRegToken: CreateRegToken;\n platform: 'extension' | 'mobile' | 'portfolio';\n locale: string;\n};\n\n/**\n * Enables push notifications by registering the device and linking triggers.\n *\n * @param params - Activate Push Params\n * @returns A promise that resolves with an object containing the success status and the BearerToken token.\n */\nexport async function activatePushNotifications(\n params: ActivatePushNotificationsParams,\n): Promise<string | null> {\n const { bearerToken, triggers, env, createRegToken, platform, locale } =\n params;\n\n const regToken = await createRegToken(env).catch(() => null);\n if (!regToken) {\n return null;\n }\n\n await updateLinksAPI(bearerToken, triggers, [\n { token: regToken, platform, locale },\n ]);\n return regToken;\n}\n\ntype DeactivatePushNotificationsParams = {\n // Push Links\n regToken: string;\n\n // Push Un-registration\n env: PushNotificationEnv;\n deleteRegToken: DeleteRegToken;\n};\n\n/**\n * Disables push notifications by removing the registration token\n * We do not need to unlink triggers, and remove old reg tokens (this is cleaned up in the back-end)\n *\n * @param params - Deactivate Push Params\n * @returns A promise that resolves with true if push notifications were successfully disabled, false otherwise.\n */\nexport async function deactivatePushNotifications(\n params: DeactivatePushNotificationsParams,\n): Promise<boolean> {\n const { regToken, env, deleteRegToken } = params;\n\n // if we don't have a reg token, then we can early return\n if (!regToken) {\n return true;\n }\n\n const isTokenRemovedFromFCM = await deleteRegToken(env);\n if (!isTokenRemovedFromFCM) {\n return false;\n }\n\n return true;\n}\n\ntype UpdateTriggerPushNotificationsParams = {\n // Push Links\n bearerToken: string;\n triggers: string[];\n\n // Push Registration\n env: PushNotificationEnv;\n createRegToken: CreateRegToken;\n platform: 'extension' | 'mobile' | 'portfolio';\n locale: string;\n\n // Push Un-registration\n deleteRegToken: DeleteRegToken;\n};\n\n/**\n * Updates the triggers linked to push notifications for a given registration token.\n * If the provided registration token does not exist or is not in the current set of registration tokens,\n * a new registration token is created and used for the update.\n *\n * @param params - Update Push Params\n * @returns A promise that resolves with an object containing:\n * - isTriggersLinkedToPushNotifications: boolean indicating if the triggers were successfully updated.\n * - fcmToken: the new or existing Firebase Cloud Messaging token used for the update, if applicable.\n */\nexport async function updateTriggerPushNotifications(\n params: UpdateTriggerPushNotificationsParams,\n): Promise<{\n fcmToken: string;\n}> {\n const {\n bearerToken,\n triggers,\n createRegToken,\n platform,\n locale,\n deleteRegToken,\n env,\n } = params;\n\n await deleteRegToken(env);\n const newRegToken = await createRegToken(env);\n if (!newRegToken) {\n throw new Error('Failed to create a new registration token');\n }\n\n const linksNotUpdated = await updateLinksAPI(bearerToken, triggers, [\n { token: newRegToken, platform, locale },\n ]);\n if (!linksNotUpdated) {\n throw new Error('Failed to create links to new reg token');\n }\n\n return {\n fcmToken: newRegToken,\n };\n}\n"]}
@@ -1,9 +1,9 @@
1
- import type { CreateRegToken, DeleteRegToken } from "./push/index.cjs";
2
- import type { Types } from "../../NotificationServicesController/index.cjs";
3
1
  import type { PushNotificationEnv } from "../types/index.cjs";
2
+ import type { CreateRegToken, DeleteRegToken } from "../types/push-service-interface.cjs";
4
3
  export type RegToken = {
5
4
  token: string;
6
5
  platform: 'extension' | 'mobile' | 'portfolio';
6
+ locale: string;
7
7
  };
8
8
  /**
9
9
  * Links API Response Shape
@@ -12,13 +12,6 @@ export type LinksResult = {
12
12
  trigger_ids: string[];
13
13
  registration_tokens: RegToken[];
14
14
  };
15
- /**
16
- * Fetches push notification links from a remote endpoint using a BearerToken for authorization.
17
- *
18
- * @param bearerToken - The JSON Web Token used for authorization.
19
- * @returns A promise that resolves with the links result or null if an error occurs.
20
- */
21
- export declare function getPushNotificationLinks(bearerToken: string): Promise<LinksResult | null>;
22
15
  /**
23
16
  * Updates the push notification links on a remote API.
24
17
  *
@@ -34,7 +27,7 @@ type ActivatePushNotificationsParams = {
34
27
  env: PushNotificationEnv;
35
28
  createRegToken: CreateRegToken;
36
29
  platform: 'extension' | 'mobile' | 'portfolio';
37
- fcmToken?: string;
30
+ locale: string;
38
31
  };
39
32
  /**
40
33
  * Enables push notifications by registering the device and linking triggers.
@@ -45,25 +38,24 @@ type ActivatePushNotificationsParams = {
45
38
  export declare function activatePushNotifications(params: ActivatePushNotificationsParams): Promise<string | null>;
46
39
  type DeactivatePushNotificationsParams = {
47
40
  regToken: string;
48
- bearerToken: string;
49
- triggers: string[];
50
41
  env: PushNotificationEnv;
51
42
  deleteRegToken: DeleteRegToken;
52
43
  };
53
44
  /**
54
- * Disables push notifications by removing the registration token and unlinking triggers.
45
+ * Disables push notifications by removing the registration token
46
+ * We do not need to unlink triggers, and remove old reg tokens (this is cleaned up in the back-end)
55
47
  *
56
48
  * @param params - Deactivate Push Params
57
- * @returns A promise that resolves with true if notifications were successfully disabled, false otherwise.
49
+ * @returns A promise that resolves with true if push notifications were successfully disabled, false otherwise.
58
50
  */
59
51
  export declare function deactivatePushNotifications(params: DeactivatePushNotificationsParams): Promise<boolean>;
60
52
  type UpdateTriggerPushNotificationsParams = {
61
- regToken: string;
62
53
  bearerToken: string;
63
54
  triggers: string[];
64
55
  env: PushNotificationEnv;
65
56
  createRegToken: CreateRegToken;
66
57
  platform: 'extension' | 'mobile' | 'portfolio';
58
+ locale: string;
67
59
  deleteRegToken: DeleteRegToken;
68
60
  };
69
61
  /**
@@ -77,20 +69,7 @@ type UpdateTriggerPushNotificationsParams = {
77
69
  * - fcmToken: the new or existing Firebase Cloud Messaging token used for the update, if applicable.
78
70
  */
79
71
  export declare function updateTriggerPushNotifications(params: UpdateTriggerPushNotificationsParams): Promise<{
80
- isTriggersLinkedToPushNotifications: boolean;
81
- fcmToken?: string | null;
72
+ fcmToken: string;
82
73
  }>;
83
- type ListenToPushNotificationsParams = {
84
- env: PushNotificationEnv;
85
- listenToPushReceived: (notification: Types.INotification) => void | Promise<void>;
86
- listenToPushClicked: (event: NotificationEvent, notification?: Types.INotification) => void;
87
- };
88
- /**
89
- * Listens to push notifications and invokes the provided callback function with the received notification data.
90
- *
91
- * @param params - listen params
92
- * @returns A promise that resolves to an unsubscribe function to stop listening to push notifications.
93
- */
94
- export declare function listenToPushNotifications(params: ListenToPushNotificationsParams): Promise<() => void>;
95
74
  export {};
96
75
  //# sourceMappingURL=services.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.cts","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/services/services.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,yBAAe;AAK7D,OAAO,KAAK,EAAE,KAAK,EAAE,uDAA6C;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAAiB;AAEpD,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;CAChD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,mBAAmB,EAAE,QAAQ,EAAE,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAc7B;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED,KAAK,+BAA+B,GAAG;IAErC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAED,KAAK,iCAAiC,GAAG;IAEvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,OAAO,CAAC,CAgClB;AAED,KAAK,oCAAoC,GAAG;IAE1C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAG/C,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC;IACT,mCAAmC,EAAE,OAAO,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CA4CD;AAED,KAAK,+BAA+B,GAAG;IACrC,GAAG,EAAE,mBAAmB,CAAC;IACzB,oBAAoB,EAAE,CACpB,YAAY,EAAE,KAAK,CAAC,aAAa,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,mBAAmB,EAAE,CACnB,KAAK,EAAE,iBAAiB,EACxB,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,KAC/B,IAAI,CAAC;CACX,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,MAAM,IAAI,CAAC,CAqBrB"}
1
+ {"version":3,"file":"services.d.cts","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/services/services.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAAiB;AACpD,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACf,4CAAwC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,mBAAmB,EAAE,QAAQ,EAAE,CAAC;CACjC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED,KAAK,+BAA+B,GAAG;IAErC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAED,KAAK,iCAAiC,GAAG;IAEvC,QAAQ,EAAE,MAAM,CAAC;IAGjB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,KAAK,oCAAoC,GAAG;IAE1C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IAGf,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CA2BD"}
@@ -1,9 +1,9 @@
1
- import type { CreateRegToken, DeleteRegToken } from "./push/index.mjs";
2
- import type { Types } from "../../NotificationServicesController/index.mjs";
3
1
  import type { PushNotificationEnv } from "../types/index.mjs";
2
+ import type { CreateRegToken, DeleteRegToken } from "../types/push-service-interface.mjs";
4
3
  export type RegToken = {
5
4
  token: string;
6
5
  platform: 'extension' | 'mobile' | 'portfolio';
6
+ locale: string;
7
7
  };
8
8
  /**
9
9
  * Links API Response Shape
@@ -12,13 +12,6 @@ export type LinksResult = {
12
12
  trigger_ids: string[];
13
13
  registration_tokens: RegToken[];
14
14
  };
15
- /**
16
- * Fetches push notification links from a remote endpoint using a BearerToken for authorization.
17
- *
18
- * @param bearerToken - The JSON Web Token used for authorization.
19
- * @returns A promise that resolves with the links result or null if an error occurs.
20
- */
21
- export declare function getPushNotificationLinks(bearerToken: string): Promise<LinksResult | null>;
22
15
  /**
23
16
  * Updates the push notification links on a remote API.
24
17
  *
@@ -34,7 +27,7 @@ type ActivatePushNotificationsParams = {
34
27
  env: PushNotificationEnv;
35
28
  createRegToken: CreateRegToken;
36
29
  platform: 'extension' | 'mobile' | 'portfolio';
37
- fcmToken?: string;
30
+ locale: string;
38
31
  };
39
32
  /**
40
33
  * Enables push notifications by registering the device and linking triggers.
@@ -45,25 +38,24 @@ type ActivatePushNotificationsParams = {
45
38
  export declare function activatePushNotifications(params: ActivatePushNotificationsParams): Promise<string | null>;
46
39
  type DeactivatePushNotificationsParams = {
47
40
  regToken: string;
48
- bearerToken: string;
49
- triggers: string[];
50
41
  env: PushNotificationEnv;
51
42
  deleteRegToken: DeleteRegToken;
52
43
  };
53
44
  /**
54
- * Disables push notifications by removing the registration token and unlinking triggers.
45
+ * Disables push notifications by removing the registration token
46
+ * We do not need to unlink triggers, and remove old reg tokens (this is cleaned up in the back-end)
55
47
  *
56
48
  * @param params - Deactivate Push Params
57
- * @returns A promise that resolves with true if notifications were successfully disabled, false otherwise.
49
+ * @returns A promise that resolves with true if push notifications were successfully disabled, false otherwise.
58
50
  */
59
51
  export declare function deactivatePushNotifications(params: DeactivatePushNotificationsParams): Promise<boolean>;
60
52
  type UpdateTriggerPushNotificationsParams = {
61
- regToken: string;
62
53
  bearerToken: string;
63
54
  triggers: string[];
64
55
  env: PushNotificationEnv;
65
56
  createRegToken: CreateRegToken;
66
57
  platform: 'extension' | 'mobile' | 'portfolio';
58
+ locale: string;
67
59
  deleteRegToken: DeleteRegToken;
68
60
  };
69
61
  /**
@@ -77,20 +69,7 @@ type UpdateTriggerPushNotificationsParams = {
77
69
  * - fcmToken: the new or existing Firebase Cloud Messaging token used for the update, if applicable.
78
70
  */
79
71
  export declare function updateTriggerPushNotifications(params: UpdateTriggerPushNotificationsParams): Promise<{
80
- isTriggersLinkedToPushNotifications: boolean;
81
- fcmToken?: string | null;
72
+ fcmToken: string;
82
73
  }>;
83
- type ListenToPushNotificationsParams = {
84
- env: PushNotificationEnv;
85
- listenToPushReceived: (notification: Types.INotification) => void | Promise<void>;
86
- listenToPushClicked: (event: NotificationEvent, notification?: Types.INotification) => void;
87
- };
88
- /**
89
- * Listens to push notifications and invokes the provided callback function with the received notification data.
90
- *
91
- * @param params - listen params
92
- * @returns A promise that resolves to an unsubscribe function to stop listening to push notifications.
93
- */
94
- export declare function listenToPushNotifications(params: ListenToPushNotificationsParams): Promise<() => void>;
95
74
  export {};
96
75
  //# sourceMappingURL=services.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.mts","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/services/services.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,yBAAe;AAK7D,OAAO,KAAK,EAAE,KAAK,EAAE,uDAA6C;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAAiB;AAEpD,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;CAChD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,mBAAmB,EAAE,QAAQ,EAAE,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAc7B;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED,KAAK,+BAA+B,GAAG;IAErC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAED,KAAK,iCAAiC,GAAG;IAEvC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,OAAO,CAAC,CAgClB;AAED,KAAK,oCAAoC,GAAG;IAE1C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAG/C,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC;IACT,mCAAmC,EAAE,OAAO,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CA4CD;AAED,KAAK,+BAA+B,GAAG;IACrC,GAAG,EAAE,mBAAmB,CAAC;IACzB,oBAAoB,EAAE,CACpB,YAAY,EAAE,KAAK,CAAC,aAAa,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,mBAAmB,EAAE,CACnB,KAAK,EAAE,iBAAiB,EACxB,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,KAC/B,IAAI,CAAC;CACX,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,MAAM,IAAI,CAAC,CAqBrB"}
1
+ {"version":3,"file":"services.d.mts","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/services/services.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAAiB;AACpD,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACf,4CAAwC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,mBAAmB,EAAE,QAAQ,EAAE,CAAC;CACjC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED,KAAK,+BAA+B,GAAG;IAErC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAED,KAAK,iCAAiC,GAAG;IAEvC,QAAQ,EAAE,MAAM,CAAC;IAGjB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,KAAK,oCAAoC,GAAG;IAE1C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,GAAG,EAAE,mBAAmB,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IAGf,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CA2BD"}
@@ -1,35 +1,4 @@
1
- function $importDefault(module) {
2
- if (module?.__esModule) {
3
- return module.default;
4
- }
5
- return module;
6
- }
7
- import $log from "loglevel";
8
- const log = $importDefault($log);
9
1
  import * as endpoints from "./endpoints.mjs";
10
- import { listenToPushNotificationsClicked, listenToPushNotificationsReceived } from "./push/push-web.mjs";
11
- /**
12
- * Fetches push notification links from a remote endpoint using a BearerToken for authorization.
13
- *
14
- * @param bearerToken - The JSON Web Token used for authorization.
15
- * @returns A promise that resolves with the links result or null if an error occurs.
16
- */
17
- export async function getPushNotificationLinks(bearerToken) {
18
- try {
19
- const response = await fetch(endpoints.REGISTRATION_TOKENS_ENDPOINT, {
20
- headers: { Authorization: `Bearer ${bearerToken}` },
21
- });
22
- if (!response.ok) {
23
- log.error('Failed to fetch the push notification links');
24
- throw new Error('Failed to fetch the push notification links');
25
- }
26
- return response.json();
27
- }
28
- catch (error) {
29
- log.error('Failed to fetch the push notification links', error);
30
- return null;
31
- }
32
- }
33
2
  /**
34
3
  * Updates the push notification links on a remote API.
35
4
  *
@@ -65,41 +34,29 @@ export async function updateLinksAPI(bearerToken, triggers, regTokens) {
65
34
  * @returns A promise that resolves with an object containing the success status and the BearerToken token.
66
35
  */
67
36
  export async function activatePushNotifications(params) {
68
- const { bearerToken, triggers, env, createRegToken, platform, fcmToken } = params;
69
- const notificationLinks = await getPushNotificationLinks(bearerToken);
70
- if (!notificationLinks) {
71
- return null;
72
- }
73
- const regToken = fcmToken ?? (await createRegToken(env).catch(() => null));
37
+ const { bearerToken, triggers, env, createRegToken, platform, locale } = params;
38
+ const regToken = await createRegToken(env).catch(() => null);
74
39
  if (!regToken) {
75
40
  return null;
76
41
  }
77
- const newRegTokens = new Set(notificationLinks.registration_tokens);
78
- newRegTokens.add({ token: regToken, platform });
79
- await updateLinksAPI(bearerToken, triggers, Array.from(newRegTokens));
42
+ await updateLinksAPI(bearerToken, triggers, [
43
+ { token: regToken, platform, locale },
44
+ ]);
80
45
  return regToken;
81
46
  }
82
47
  /**
83
- * Disables push notifications by removing the registration token and unlinking triggers.
48
+ * Disables push notifications by removing the registration token
49
+ * We do not need to unlink triggers, and remove old reg tokens (this is cleaned up in the back-end)
84
50
  *
85
51
  * @param params - Deactivate Push Params
86
- * @returns A promise that resolves with true if notifications were successfully disabled, false otherwise.
52
+ * @returns A promise that resolves with true if push notifications were successfully disabled, false otherwise.
87
53
  */
88
54
  export async function deactivatePushNotifications(params) {
89
- const { regToken, bearerToken, triggers, env, deleteRegToken } = params;
55
+ const { regToken, env, deleteRegToken } = params;
90
56
  // if we don't have a reg token, then we can early return
91
57
  if (!regToken) {
92
58
  return true;
93
59
  }
94
- const notificationLinks = await getPushNotificationLinks(bearerToken);
95
- if (!notificationLinks) {
96
- return false;
97
- }
98
- const filteredRegTokens = notificationLinks.registration_tokens.filter((r) => r.token !== regToken);
99
- const isTokenRemovedFromAPI = await updateLinksAPI(bearerToken, triggers, filteredRegTokens);
100
- if (!isTokenRemovedFromAPI) {
101
- return false;
102
- }
103
60
  const isTokenRemovedFromFCM = await deleteRegToken(env);
104
61
  if (!isTokenRemovedFromFCM) {
105
62
  return false;
@@ -117,51 +74,20 @@ export async function deactivatePushNotifications(params) {
117
74
  * - fcmToken: the new or existing Firebase Cloud Messaging token used for the update, if applicable.
118
75
  */
119
76
  export async function updateTriggerPushNotifications(params) {
120
- const { bearerToken, regToken, triggers, createRegToken, platform, deleteRegToken, env, } = params;
121
- const notificationLinks = await getPushNotificationLinks(bearerToken);
122
- if (!notificationLinks) {
123
- return { isTriggersLinkedToPushNotifications: false };
77
+ const { bearerToken, triggers, createRegToken, platform, locale, deleteRegToken, env, } = params;
78
+ await deleteRegToken(env);
79
+ const newRegToken = await createRegToken(env);
80
+ if (!newRegToken) {
81
+ throw new Error('Failed to create a new registration token');
124
82
  }
125
- // Create new registration token if doesn't exist
126
- const hasRegToken = Boolean(regToken &&
127
- notificationLinks.registration_tokens.some((r) => r.token === regToken));
128
- let newRegToken = null;
129
- if (!hasRegToken) {
130
- await deleteRegToken(env);
131
- newRegToken = await createRegToken(env);
132
- if (!newRegToken) {
133
- throw new Error('Failed to create a new registration token');
134
- }
135
- notificationLinks.registration_tokens.push({
136
- token: newRegToken,
137
- platform,
138
- });
83
+ const linksNotUpdated = await updateLinksAPI(bearerToken, triggers, [
84
+ { token: newRegToken, platform, locale },
85
+ ]);
86
+ if (!linksNotUpdated) {
87
+ throw new Error('Failed to create links to new reg token');
139
88
  }
140
- const isTriggersLinkedToPushNotifications = await updateLinksAPI(bearerToken, triggers, notificationLinks.registration_tokens);
141
89
  return {
142
- isTriggersLinkedToPushNotifications,
143
- fcmToken: newRegToken ?? null,
144
- };
145
- }
146
- /**
147
- * Listens to push notifications and invokes the provided callback function with the received notification data.
148
- *
149
- * @param params - listen params
150
- * @returns A promise that resolves to an unsubscribe function to stop listening to push notifications.
151
- */
152
- export async function listenToPushNotifications(params) {
153
- const { env, listenToPushReceived, listenToPushClicked } = params;
154
- /*
155
- Push notifications require 2 listeners that need tracking (when creating and for tearing down):
156
- 1. handling receiving a push notification (and the content we want to display)
157
- 2. handling when a user clicks on a push notification
158
- */
159
- const unsubscribePushNotifications = await listenToPushNotificationsReceived(env, listenToPushReceived);
160
- const unsubscribeNotificationClicks = listenToPushNotificationsClicked(listenToPushClicked);
161
- const unsubscribe = () => {
162
- unsubscribePushNotifications?.();
163
- unsubscribeNotificationClicks();
90
+ fcmToken: newRegToken,
164
91
  };
165
- return unsubscribe;
166
92
  }
167
93
  //# sourceMappingURL=services.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.mjs","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/services/services.ts"],"names":[],"mappings":"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","sourcesContent":["import log from 'loglevel';\n\nimport * as endpoints from './endpoints';\nimport type { CreateRegToken, DeleteRegToken } from './push';\nimport {\n listenToPushNotificationsClicked,\n listenToPushNotificationsReceived,\n} from './push/push-web';\nimport type { Types } from '../../NotificationServicesController';\nimport type { PushNotificationEnv } from '../types';\n\nexport type RegToken = {\n token: string;\n platform: 'extension' | 'mobile' | 'portfolio';\n};\n\n/**\n * Links API Response Shape\n */\nexport type LinksResult = {\n trigger_ids: string[];\n\n registration_tokens: RegToken[];\n};\n\n/**\n * Fetches push notification links from a remote endpoint using a BearerToken for authorization.\n *\n * @param bearerToken - The JSON Web Token used for authorization.\n * @returns A promise that resolves with the links result or null if an error occurs.\n */\nexport async function getPushNotificationLinks(\n bearerToken: string,\n): Promise<LinksResult | null> {\n try {\n const response = await fetch(endpoints.REGISTRATION_TOKENS_ENDPOINT, {\n headers: { Authorization: `Bearer ${bearerToken}` },\n });\n if (!response.ok) {\n log.error('Failed to fetch the push notification links');\n throw new Error('Failed to fetch the push notification links');\n }\n return response.json() as Promise<LinksResult>;\n } catch (error) {\n log.error('Failed to fetch the push notification links', error);\n return null;\n }\n}\n\n/**\n * Updates the push notification links on a remote API.\n *\n * @param bearerToken - The JSON Web Token used for authorization.\n * @param triggers - An array of trigger identifiers.\n * @param regTokens - An array of registration tokens.\n * @returns A promise that resolves with true if the update was successful, false otherwise.\n */\nexport async function updateLinksAPI(\n bearerToken: string,\n triggers: string[],\n regTokens: RegToken[],\n): Promise<boolean> {\n try {\n const body: LinksResult = {\n trigger_ids: triggers,\n registration_tokens: regTokens,\n };\n const response = await fetch(endpoints.REGISTRATION_TOKENS_ENDPOINT, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n return response.status === 200;\n } catch {\n return false;\n }\n}\n\ntype ActivatePushNotificationsParams = {\n // Push Links\n bearerToken: string;\n triggers: string[];\n\n // Push Registration\n env: PushNotificationEnv;\n createRegToken: CreateRegToken;\n platform: 'extension' | 'mobile' | 'portfolio';\n fcmToken?: string;\n};\n\n/**\n * Enables push notifications by registering the device and linking triggers.\n *\n * @param params - Activate Push Params\n * @returns A promise that resolves with an object containing the success status and the BearerToken token.\n */\nexport async function activatePushNotifications(\n params: ActivatePushNotificationsParams,\n): Promise<string | null> {\n const { bearerToken, triggers, env, createRegToken, platform, fcmToken } =\n params;\n\n const notificationLinks = await getPushNotificationLinks(bearerToken);\n\n if (!notificationLinks) {\n return null;\n }\n\n const regToken = fcmToken ?? (await createRegToken(env).catch(() => null));\n if (!regToken) {\n return null;\n }\n\n const newRegTokens = new Set(notificationLinks.registration_tokens);\n newRegTokens.add({ token: regToken, platform });\n\n await updateLinksAPI(bearerToken, triggers, Array.from(newRegTokens));\n return regToken;\n}\n\ntype DeactivatePushNotificationsParams = {\n // Push Links\n regToken: string;\n bearerToken: string;\n triggers: string[];\n\n // Push Un-registration\n env: PushNotificationEnv;\n deleteRegToken: DeleteRegToken;\n};\n\n/**\n * Disables push notifications by removing the registration token and unlinking triggers.\n *\n * @param params - Deactivate Push Params\n * @returns A promise that resolves with true if notifications were successfully disabled, false otherwise.\n */\nexport async function deactivatePushNotifications(\n params: DeactivatePushNotificationsParams,\n): Promise<boolean> {\n const { regToken, bearerToken, triggers, env, deleteRegToken } = params;\n\n // if we don't have a reg token, then we can early return\n if (!regToken) {\n return true;\n }\n\n const notificationLinks = await getPushNotificationLinks(bearerToken);\n if (!notificationLinks) {\n return false;\n }\n\n const filteredRegTokens = notificationLinks.registration_tokens.filter(\n (r) => r.token !== regToken,\n );\n\n const isTokenRemovedFromAPI = await updateLinksAPI(\n bearerToken,\n triggers,\n filteredRegTokens,\n );\n if (!isTokenRemovedFromAPI) {\n return false;\n }\n\n const isTokenRemovedFromFCM = await deleteRegToken(env);\n if (!isTokenRemovedFromFCM) {\n return false;\n }\n\n return true;\n}\n\ntype UpdateTriggerPushNotificationsParams = {\n // Push Links\n regToken: string;\n bearerToken: string;\n triggers: string[];\n\n // Push Registration\n env: PushNotificationEnv;\n createRegToken: CreateRegToken;\n platform: 'extension' | 'mobile' | 'portfolio';\n\n // Push Un-registration\n deleteRegToken: DeleteRegToken;\n};\n\n/**\n * Updates the triggers linked to push notifications for a given registration token.\n * If the provided registration token does not exist or is not in the current set of registration tokens,\n * a new registration token is created and used for the update.\n *\n * @param params - Update Push Params\n * @returns A promise that resolves with an object containing:\n * - isTriggersLinkedToPushNotifications: boolean indicating if the triggers were successfully updated.\n * - fcmToken: the new or existing Firebase Cloud Messaging token used for the update, if applicable.\n */\nexport async function updateTriggerPushNotifications(\n params: UpdateTriggerPushNotificationsParams,\n): Promise<{\n isTriggersLinkedToPushNotifications: boolean;\n fcmToken?: string | null;\n}> {\n const {\n bearerToken,\n regToken,\n triggers,\n createRegToken,\n platform,\n deleteRegToken,\n env,\n } = params;\n\n const notificationLinks = await getPushNotificationLinks(bearerToken);\n if (!notificationLinks) {\n return { isTriggersLinkedToPushNotifications: false };\n }\n // Create new registration token if doesn't exist\n const hasRegToken = Boolean(\n regToken &&\n notificationLinks.registration_tokens.some((r) => r.token === regToken),\n );\n\n let newRegToken: string | null = null;\n if (!hasRegToken) {\n await deleteRegToken(env);\n newRegToken = await createRegToken(env);\n if (!newRegToken) {\n throw new Error('Failed to create a new registration token');\n }\n notificationLinks.registration_tokens.push({\n token: newRegToken,\n platform,\n });\n }\n\n const isTriggersLinkedToPushNotifications = await updateLinksAPI(\n bearerToken,\n triggers,\n notificationLinks.registration_tokens,\n );\n\n return {\n isTriggersLinkedToPushNotifications,\n fcmToken: newRegToken ?? null,\n };\n}\n\ntype ListenToPushNotificationsParams = {\n env: PushNotificationEnv;\n listenToPushReceived: (\n notification: Types.INotification,\n ) => void | Promise<void>;\n listenToPushClicked: (\n event: NotificationEvent,\n notification?: Types.INotification,\n ) => void;\n};\n\n/**\n * Listens to push notifications and invokes the provided callback function with the received notification data.\n *\n * @param params - listen params\n * @returns A promise that resolves to an unsubscribe function to stop listening to push notifications.\n */\nexport async function listenToPushNotifications(\n params: ListenToPushNotificationsParams,\n): Promise<() => void> {\n const { env, listenToPushReceived, listenToPushClicked } = params;\n\n /*\n Push notifications require 2 listeners that need tracking (when creating and for tearing down):\n 1. handling receiving a push notification (and the content we want to display)\n 2. handling when a user clicks on a push notification\n */\n const unsubscribePushNotifications = await listenToPushNotificationsReceived(\n env,\n listenToPushReceived,\n );\n const unsubscribeNotificationClicks =\n listenToPushNotificationsClicked(listenToPushClicked);\n\n const unsubscribe = () => {\n unsubscribePushNotifications?.();\n unsubscribeNotificationClicks();\n };\n\n return unsubscribe;\n}\n"]}
1
+ {"version":3,"file":"services.mjs","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/services/services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,wBAAoB;AAqBzC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,QAAkB,EAClB,SAAqB;IAErB,IAAI;QACF,MAAM,IAAI,GAAgB;YACxB,WAAW,EAAE,QAAQ;YACrB,mBAAmB,EAAE,SAAS;SAC/B,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,4BAA4B,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;KAChC;IAAC,MAAM;QACN,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAcD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAuC;IAEvC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GACpE,MAAM,CAAC;IAET,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,IAAI,CAAC;KACb;IAED,MAAM,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE;QAC1C,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;KACtC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAyC;IAEzC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAEjD,yDAAyD;IACzD,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,IAAI,CAAC;KACb;IAED,MAAM,qBAAqB,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,qBAAqB,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAiBD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,MAA4C;IAI5C,MAAM,EACJ,WAAW,EACX,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,MAAM,EACN,cAAc,EACd,GAAG,GACJ,GAAG,MAAM,CAAC;IAEX,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE;QAClE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;KACzC,CAAC,CAAC;IACH,IAAI,CAAC,eAAe,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;IAED,OAAO;QACL,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC","sourcesContent":["import * as endpoints from './endpoints';\nimport type { PushNotificationEnv } from '../types';\nimport type {\n CreateRegToken,\n DeleteRegToken,\n} from '../types/push-service-interface';\n\nexport type RegToken = {\n token: string;\n platform: 'extension' | 'mobile' | 'portfolio';\n locale: string;\n};\n\n/**\n * Links API Response Shape\n */\nexport type LinksResult = {\n trigger_ids: string[];\n registration_tokens: RegToken[];\n};\n\n/**\n * Updates the push notification links on a remote API.\n *\n * @param bearerToken - The JSON Web Token used for authorization.\n * @param triggers - An array of trigger identifiers.\n * @param regTokens - An array of registration tokens.\n * @returns A promise that resolves with true if the update was successful, false otherwise.\n */\nexport async function updateLinksAPI(\n bearerToken: string,\n triggers: string[],\n regTokens: RegToken[],\n): Promise<boolean> {\n try {\n const body: LinksResult = {\n trigger_ids: triggers,\n registration_tokens: regTokens,\n };\n const response = await fetch(endpoints.REGISTRATION_TOKENS_ENDPOINT, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n return response.status === 200;\n } catch {\n return false;\n }\n}\n\ntype ActivatePushNotificationsParams = {\n // Push Links\n bearerToken: string;\n triggers: string[];\n\n // Push Registration\n env: PushNotificationEnv;\n createRegToken: CreateRegToken;\n platform: 'extension' | 'mobile' | 'portfolio';\n locale: string;\n};\n\n/**\n * Enables push notifications by registering the device and linking triggers.\n *\n * @param params - Activate Push Params\n * @returns A promise that resolves with an object containing the success status and the BearerToken token.\n */\nexport async function activatePushNotifications(\n params: ActivatePushNotificationsParams,\n): Promise<string | null> {\n const { bearerToken, triggers, env, createRegToken, platform, locale } =\n params;\n\n const regToken = await createRegToken(env).catch(() => null);\n if (!regToken) {\n return null;\n }\n\n await updateLinksAPI(bearerToken, triggers, [\n { token: regToken, platform, locale },\n ]);\n return regToken;\n}\n\ntype DeactivatePushNotificationsParams = {\n // Push Links\n regToken: string;\n\n // Push Un-registration\n env: PushNotificationEnv;\n deleteRegToken: DeleteRegToken;\n};\n\n/**\n * Disables push notifications by removing the registration token\n * We do not need to unlink triggers, and remove old reg tokens (this is cleaned up in the back-end)\n *\n * @param params - Deactivate Push Params\n * @returns A promise that resolves with true if push notifications were successfully disabled, false otherwise.\n */\nexport async function deactivatePushNotifications(\n params: DeactivatePushNotificationsParams,\n): Promise<boolean> {\n const { regToken, env, deleteRegToken } = params;\n\n // if we don't have a reg token, then we can early return\n if (!regToken) {\n return true;\n }\n\n const isTokenRemovedFromFCM = await deleteRegToken(env);\n if (!isTokenRemovedFromFCM) {\n return false;\n }\n\n return true;\n}\n\ntype UpdateTriggerPushNotificationsParams = {\n // Push Links\n bearerToken: string;\n triggers: string[];\n\n // Push Registration\n env: PushNotificationEnv;\n createRegToken: CreateRegToken;\n platform: 'extension' | 'mobile' | 'portfolio';\n locale: string;\n\n // Push Un-registration\n deleteRegToken: DeleteRegToken;\n};\n\n/**\n * Updates the triggers linked to push notifications for a given registration token.\n * If the provided registration token does not exist or is not in the current set of registration tokens,\n * a new registration token is created and used for the update.\n *\n * @param params - Update Push Params\n * @returns A promise that resolves with an object containing:\n * - isTriggersLinkedToPushNotifications: boolean indicating if the triggers were successfully updated.\n * - fcmToken: the new or existing Firebase Cloud Messaging token used for the update, if applicable.\n */\nexport async function updateTriggerPushNotifications(\n params: UpdateTriggerPushNotificationsParams,\n): Promise<{\n fcmToken: string;\n}> {\n const {\n bearerToken,\n triggers,\n createRegToken,\n platform,\n locale,\n deleteRegToken,\n env,\n } = params;\n\n await deleteRegToken(env);\n const newRegToken = await createRegToken(env);\n if (!newRegToken) {\n throw new Error('Failed to create a new registration token');\n }\n\n const linksNotUpdated = await updateLinksAPI(bearerToken, triggers, [\n { token: newRegToken, platform, locale },\n ]);\n if (!linksNotUpdated) {\n throw new Error('Failed to create links to new reg token');\n }\n\n return {\n fcmToken: newRegToken,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export type * from './firebase';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export type * from './firebase';\nexport type * from './push-service-interface';\n"]}
@@ -1,2 +1,3 @@
1
1
  export type * from "./firebase.cjs";
2
+ export type * from "./push-service-interface.cjs";
2
3
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/types/index.ts"],"names":[],"mappings":"AAAA,oCAAgC"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/types/index.ts"],"names":[],"mappings":"AAAA,oCAAgC;AAChC,kDAA8C"}
@@ -1,2 +1,3 @@
1
1
  export type * from "./firebase.mjs";
2
+ export type * from "./push-service-interface.mjs";
2
3
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/types/index.ts"],"names":[],"mappings":"AAAA,oCAAgC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/types/index.ts"],"names":[],"mappings":"AAAA,oCAAgC;AAChC,kDAA8C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export type * from './firebase';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/NotificationServicesPushController/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export type * from './firebase';\nexport type * from './push-service-interface';\n"]}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=index.cjs.map
3
+ //# sourceMappingURL=push-service-interface.cjs.map