@dereekb/firebase-server 12.6.21 → 13.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 (332) hide show
  1. package/LICENSE +1 -1
  2. package/index.cjs.js +2937 -0
  3. package/index.esm.js +2775 -0
  4. package/mailgun/index.cjs.js +48 -0
  5. package/mailgun/index.esm.js +46 -0
  6. package/mailgun/package.json +26 -6
  7. package/model/index.cjs.js +5298 -0
  8. package/model/index.d.ts +1 -0
  9. package/model/index.esm.js +5161 -0
  10. package/model/package.json +31 -3
  11. package/model/src/lib/notification/notification.module.d.ts +10 -10
  12. package/model/src/lib/storagefile/storagefile.task.service.handler.d.ts +3 -14
  13. package/package.json +48 -27
  14. package/src/lib/auth/auth.context.d.ts +1 -1
  15. package/src/lib/auth/auth.service.d.ts +1 -1
  16. package/src/lib/function/assert.d.ts +2 -2
  17. package/src/lib/function/context.d.ts +1 -1
  18. package/src/lib/index.d.ts +1 -0
  19. package/src/lib/nest/app.d.ts +1 -1
  20. package/src/lib/nest/development/development.app.function.d.ts +1 -2
  21. package/src/lib/nest/function/call.d.ts +1 -1
  22. package/src/lib/nest/function/context.d.ts +0 -4
  23. package/src/lib/nest/function/index.d.ts +0 -1
  24. package/src/lib/nest/function/nest.d.ts +1 -1
  25. package/src/lib/nest/function/v2/blocking.d.ts +3 -2
  26. package/src/lib/nest/model/crud.assert.function.d.ts +0 -4
  27. package/src/lib/storage/storage.d.ts +1 -1
  28. package/src/lib/type.d.ts +9 -0
  29. package/test/index.cjs.js +1324 -0
  30. package/test/index.d.ts +1 -0
  31. package/test/index.esm.js +1247 -0
  32. package/test/package.json +34 -3
  33. package/test/src/lib/firebase/firebase.admin.auth.d.ts +22 -13
  34. package/test/src/lib/firebase/firebase.admin.collection.d.ts +6 -6
  35. package/test/src/lib/firebase/firebase.admin.d.ts +10 -10
  36. package/test/src/lib/firebase/firebase.admin.function.d.ts +9 -9
  37. package/test/src/lib/firebase/firebase.admin.nest.d.ts +8 -8
  38. package/test/src/lib/firebase/firebase.admin.nest.function.d.ts +9 -9
  39. package/test/src/lib/firebase/firebase.test.d.ts +30 -0
  40. package/test/src/lib/firebase/index.d.ts +1 -1
  41. package/test/src/lib/firestore/firestore.admin.d.ts +3 -3
  42. package/test/src/lib/firestore/firestore.d.ts +2 -2
  43. package/test/src/lib/storage/storage.admin.d.ts +3 -3
  44. package/test/src/lib/storage/storage.d.ts +2 -2
  45. package/zoho/LICENSE +1 -1
  46. package/zoho/index.d.ts +1 -0
  47. package/zoho/index.esm.js +2 -2
  48. package/zoho/package.json +12 -8
  49. package/CHANGELOG.md +0 -2233
  50. package/mailgun/src/index.js +0 -5
  51. package/mailgun/src/index.js.map +0 -1
  52. package/mailgun/src/lib/auth.mailgun.js +0 -41
  53. package/mailgun/src/lib/auth.mailgun.js.map +0 -1
  54. package/mailgun/src/lib/index.js +0 -5
  55. package/mailgun/src/lib/index.js.map +0 -1
  56. package/model/src/index.js +0 -5
  57. package/model/src/index.js.map +0 -1
  58. package/model/src/lib/index.js +0 -7
  59. package/model/src/lib/index.js.map +0 -1
  60. package/model/src/lib/mailgun/index.js +0 -5
  61. package/model/src/lib/mailgun/index.js.map +0 -1
  62. package/model/src/lib/mailgun/notification.send.service.mailgun.js +0 -68
  63. package/model/src/lib/mailgun/notification.send.service.mailgun.js.map +0 -1
  64. package/model/src/lib/notification/index.js +0 -20
  65. package/model/src/lib/notification/index.js.map +0 -1
  66. package/model/src/lib/notification/notification.action.init.service.js +0 -230
  67. package/model/src/lib/notification/notification.action.init.service.js.map +0 -1
  68. package/model/src/lib/notification/notification.action.service.js +0 -1487
  69. package/model/src/lib/notification/notification.action.service.js.map +0 -1
  70. package/model/src/lib/notification/notification.config.js +0 -13
  71. package/model/src/lib/notification/notification.config.js.map +0 -1
  72. package/model/src/lib/notification/notification.config.service.js +0 -60
  73. package/model/src/lib/notification/notification.config.service.js.map +0 -1
  74. package/model/src/lib/notification/notification.create.run.js +0 -59
  75. package/model/src/lib/notification/notification.create.run.js.map +0 -1
  76. package/model/src/lib/notification/notification.error.js +0 -87
  77. package/model/src/lib/notification/notification.error.js.map +0 -1
  78. package/model/src/lib/notification/notification.expedite.service.js +0 -112
  79. package/model/src/lib/notification/notification.expedite.service.js.map +0 -1
  80. package/model/src/lib/notification/notification.module.js +0 -106
  81. package/model/src/lib/notification/notification.module.js.map +0 -1
  82. package/model/src/lib/notification/notification.send.js +0 -3
  83. package/model/src/lib/notification/notification.send.js.map +0 -1
  84. package/model/src/lib/notification/notification.send.service.js +0 -10
  85. package/model/src/lib/notification/notification.send.service.js.map +0 -1
  86. package/model/src/lib/notification/notification.send.service.notificationsummary.js +0 -104
  87. package/model/src/lib/notification/notification.send.service.notificationsummary.js.map +0 -1
  88. package/model/src/lib/notification/notification.send.service.text.js +0 -29
  89. package/model/src/lib/notification/notification.send.service.text.js.map +0 -1
  90. package/model/src/lib/notification/notification.task.service.handler.js +0 -65
  91. package/model/src/lib/notification/notification.task.service.handler.js.map +0 -1
  92. package/model/src/lib/notification/notification.task.service.js +0 -10
  93. package/model/src/lib/notification/notification.task.service.js.map +0 -1
  94. package/model/src/lib/notification/notification.task.service.util.js +0 -27
  95. package/model/src/lib/notification/notification.task.service.util.js.map +0 -1
  96. package/model/src/lib/notification/notification.task.subtask.handler.js +0 -256
  97. package/model/src/lib/notification/notification.task.subtask.handler.js.map +0 -1
  98. package/model/src/lib/notification/notification.util.js +0 -478
  99. package/model/src/lib/notification/notification.util.js.map +0 -1
  100. package/model/src/lib/storagefile/index.js +0 -12
  101. package/model/src/lib/storagefile/index.js.map +0 -1
  102. package/model/src/lib/storagefile/storagefile.action.init.service.js +0 -155
  103. package/model/src/lib/storagefile/storagefile.action.init.service.js.map +0 -1
  104. package/model/src/lib/storagefile/storagefile.action.server.js +0 -797
  105. package/model/src/lib/storagefile/storagefile.action.server.js.map +0 -1
  106. package/model/src/lib/storagefile/storagefile.error.js +0 -106
  107. package/model/src/lib/storagefile/storagefile.error.js.map +0 -1
  108. package/model/src/lib/storagefile/storagefile.module.js +0 -64
  109. package/model/src/lib/storagefile/storagefile.module.js.map +0 -1
  110. package/model/src/lib/storagefile/storagefile.task.service.handler.js +0 -287
  111. package/model/src/lib/storagefile/storagefile.task.service.handler.js.map +0 -1
  112. package/model/src/lib/storagefile/storagefile.upload.service.initializer.js +0 -180
  113. package/model/src/lib/storagefile/storagefile.upload.service.initializer.js.map +0 -1
  114. package/model/src/lib/storagefile/storagefile.upload.service.js +0 -10
  115. package/model/src/lib/storagefile/storagefile.upload.service.js.map +0 -1
  116. package/model/src/lib/storagefile/storagefile.util.js +0 -54
  117. package/model/src/lib/storagefile/storagefile.util.js.map +0 -1
  118. package/src/index.js +0 -5
  119. package/src/index.js.map +0 -1
  120. package/src/lib/auth/auth.context.js +0 -13
  121. package/src/lib/auth/auth.context.js.map +0 -1
  122. package/src/lib/auth/auth.service.error.js +0 -34
  123. package/src/lib/auth/auth.service.error.js.map +0 -1
  124. package/src/lib/auth/auth.service.js +0 -427
  125. package/src/lib/auth/auth.service.js.map +0 -1
  126. package/src/lib/auth/auth.util.js +0 -23
  127. package/src/lib/auth/auth.util.js.map +0 -1
  128. package/src/lib/auth/index.js +0 -8
  129. package/src/lib/auth/index.js.map +0 -1
  130. package/src/lib/env/env.service.js +0 -7
  131. package/src/lib/env/env.service.js.map +0 -1
  132. package/src/lib/env/index.js +0 -5
  133. package/src/lib/env/index.js.map +0 -1
  134. package/src/lib/firestore/array.js +0 -34
  135. package/src/lib/firestore/array.js.map +0 -1
  136. package/src/lib/firestore/driver.accessor.batch.js +0 -93
  137. package/src/lib/firestore/driver.accessor.batch.js.map +0 -1
  138. package/src/lib/firestore/driver.accessor.default.js +0 -62
  139. package/src/lib/firestore/driver.accessor.default.js.map +0 -1
  140. package/src/lib/firestore/driver.accessor.js +0 -50
  141. package/src/lib/firestore/driver.accessor.js.map +0 -1
  142. package/src/lib/firestore/driver.accessor.transaction.js +0 -96
  143. package/src/lib/firestore/driver.accessor.transaction.js.map +0 -1
  144. package/src/lib/firestore/driver.js +0 -14
  145. package/src/lib/firestore/driver.js.map +0 -1
  146. package/src/lib/firestore/driver.query.js +0 -55
  147. package/src/lib/firestore/driver.query.js.map +0 -1
  148. package/src/lib/firestore/firestore.js +0 -10
  149. package/src/lib/firestore/firestore.js.map +0 -1
  150. package/src/lib/firestore/increment.js +0 -17
  151. package/src/lib/firestore/increment.js.map +0 -1
  152. package/src/lib/firestore/index.js +0 -9
  153. package/src/lib/firestore/index.js.map +0 -1
  154. package/src/lib/function/assert.js +0 -68
  155. package/src/lib/function/assert.js.map +0 -1
  156. package/src/lib/function/context.js +0 -14
  157. package/src/lib/function/context.js.map +0 -1
  158. package/src/lib/function/error.auth.js +0 -25
  159. package/src/lib/function/error.auth.js.map +0 -1
  160. package/src/lib/function/error.js +0 -221
  161. package/src/lib/function/error.js.map +0 -1
  162. package/src/lib/function/index.js +0 -9
  163. package/src/lib/function/index.js.map +0 -1
  164. package/src/lib/function/type.js +0 -3
  165. package/src/lib/function/type.js.map +0 -1
  166. package/src/lib/index.js +0 -11
  167. package/src/lib/index.js.map +0 -1
  168. package/src/lib/nest/app.js +0 -114
  169. package/src/lib/nest/app.js.map +0 -1
  170. package/src/lib/nest/auth/auth.module.js +0 -60
  171. package/src/lib/nest/auth/auth.module.js.map +0 -1
  172. package/src/lib/nest/auth/auth.util.js +0 -72
  173. package/src/lib/nest/auth/auth.util.js.map +0 -1
  174. package/src/lib/nest/auth/index.js +0 -6
  175. package/src/lib/nest/auth/index.js.map +0 -1
  176. package/src/lib/nest/development/development.app.function.js +0 -38
  177. package/src/lib/nest/development/development.app.function.js.map +0 -1
  178. package/src/lib/nest/development/development.assert.function.js +0 -3
  179. package/src/lib/nest/development/development.assert.function.js.map +0 -1
  180. package/src/lib/nest/development/development.function.js +0 -41
  181. package/src/lib/nest/development/development.function.js.map +0 -1
  182. package/src/lib/nest/development/development.schedule.function.error.js +0 -35
  183. package/src/lib/nest/development/development.schedule.function.error.js.map +0 -1
  184. package/src/lib/nest/development/development.schedule.function.js +0 -54
  185. package/src/lib/nest/development/development.schedule.function.js.map +0 -1
  186. package/src/lib/nest/development/index.js +0 -9
  187. package/src/lib/nest/development/index.js.map +0 -1
  188. package/src/lib/nest/env/env.service.js +0 -19
  189. package/src/lib/nest/env/env.service.js.map +0 -1
  190. package/src/lib/nest/env/env.util.js +0 -12
  191. package/src/lib/nest/env/env.util.js.map +0 -1
  192. package/src/lib/nest/env/index.js +0 -6
  193. package/src/lib/nest/env/index.js.map +0 -1
  194. package/src/lib/nest/firebase/firebase.module.js +0 -17
  195. package/src/lib/nest/firebase/firebase.module.js.map +0 -1
  196. package/src/lib/nest/firebase/index.js +0 -5
  197. package/src/lib/nest/firebase/index.js.map +0 -1
  198. package/src/lib/nest/firestore/firestore.module.js +0 -86
  199. package/src/lib/nest/firestore/firestore.module.js.map +0 -1
  200. package/src/lib/nest/firestore/index.js +0 -5
  201. package/src/lib/nest/firestore/index.js.map +0 -1
  202. package/src/lib/nest/function/call.js +0 -46
  203. package/src/lib/nest/function/call.js.map +0 -1
  204. package/src/lib/nest/function/context.js +0 -79
  205. package/src/lib/nest/function/context.js.map +0 -1
  206. package/src/lib/nest/function/index.js +0 -10
  207. package/src/lib/nest/function/index.js.map +0 -1
  208. package/src/lib/nest/function/nest.js +0 -17
  209. package/src/lib/nest/function/nest.js.map +0 -1
  210. package/src/lib/nest/function/schedule.js +0 -8
  211. package/src/lib/nest/function/schedule.js.map +0 -1
  212. package/src/lib/nest/function/v1/call.d.ts +0 -59
  213. package/src/lib/nest/function/v1/call.js +0 -55
  214. package/src/lib/nest/function/v1/call.js.map +0 -1
  215. package/src/lib/nest/function/v1/event.d.ts +0 -80
  216. package/src/lib/nest/function/v1/event.js +0 -52
  217. package/src/lib/nest/function/v1/event.js.map +0 -1
  218. package/src/lib/nest/function/v1/index.d.ts +0 -3
  219. package/src/lib/nest/function/v1/index.js +0 -7
  220. package/src/lib/nest/function/v1/index.js.map +0 -1
  221. package/src/lib/nest/function/v1/schedule.d.ts +0 -47
  222. package/src/lib/nest/function/v1/schedule.js +0 -68
  223. package/src/lib/nest/function/v1/schedule.js.map +0 -1
  224. package/src/lib/nest/function/v2/blocking.js +0 -38
  225. package/src/lib/nest/function/v2/blocking.js.map +0 -1
  226. package/src/lib/nest/function/v2/call.js +0 -31
  227. package/src/lib/nest/function/v2/call.js.map +0 -1
  228. package/src/lib/nest/function/v2/event.js +0 -25
  229. package/src/lib/nest/function/v2/event.js.map +0 -1
  230. package/src/lib/nest/function/v2/index.js +0 -9
  231. package/src/lib/nest/function/v2/index.js.map +0 -1
  232. package/src/lib/nest/function/v2/schedule.js +0 -56
  233. package/src/lib/nest/function/v2/schedule.js.map +0 -1
  234. package/src/lib/nest/function/v2/taskqueue.js +0 -26
  235. package/src/lib/nest/function/v2/taskqueue.js.map +0 -1
  236. package/src/lib/nest/index.js +0 -15
  237. package/src/lib/nest/index.js.map +0 -1
  238. package/src/lib/nest/middleware/appcheck.decorator.js +0 -12
  239. package/src/lib/nest/middleware/appcheck.decorator.js.map +0 -1
  240. package/src/lib/nest/middleware/appcheck.js +0 -3
  241. package/src/lib/nest/middleware/appcheck.js.map +0 -1
  242. package/src/lib/nest/middleware/appcheck.middleware.js +0 -74
  243. package/src/lib/nest/middleware/appcheck.middleware.js.map +0 -1
  244. package/src/lib/nest/middleware/appcheck.module.js +0 -21
  245. package/src/lib/nest/middleware/appcheck.module.js.map +0 -1
  246. package/src/lib/nest/middleware/globalprefix.js +0 -11
  247. package/src/lib/nest/middleware/globalprefix.js.map +0 -1
  248. package/src/lib/nest/middleware/index.js +0 -10
  249. package/src/lib/nest/middleware/index.js.map +0 -1
  250. package/src/lib/nest/middleware/rawbody.middleware.js +0 -16
  251. package/src/lib/nest/middleware/rawbody.middleware.js.map +0 -1
  252. package/src/lib/nest/middleware/webhook.js +0 -24
  253. package/src/lib/nest/middleware/webhook.js.map +0 -1
  254. package/src/lib/nest/model/call.model.function.js +0 -73
  255. package/src/lib/nest/model/call.model.function.js.map +0 -1
  256. package/src/lib/nest/model/create.model.function.js +0 -27
  257. package/src/lib/nest/model/create.model.function.js.map +0 -1
  258. package/src/lib/nest/model/crud.assert.function.js +0 -3
  259. package/src/lib/nest/model/crud.assert.function.js.map +0 -1
  260. package/src/lib/nest/model/delete.model.function.js +0 -27
  261. package/src/lib/nest/model/delete.model.function.js.map +0 -1
  262. package/src/lib/nest/model/index.js +0 -11
  263. package/src/lib/nest/model/index.js.map +0 -1
  264. package/src/lib/nest/model/permission.error.js +0 -24
  265. package/src/lib/nest/model/permission.error.js.map +0 -1
  266. package/src/lib/nest/model/read.model.function.js +0 -27
  267. package/src/lib/nest/model/read.model.function.js.map +0 -1
  268. package/src/lib/nest/model/specifier.function.js +0 -35
  269. package/src/lib/nest/model/specifier.function.js.map +0 -1
  270. package/src/lib/nest/model/update.model.function.js +0 -27
  271. package/src/lib/nest/model/update.model.function.js.map +0 -1
  272. package/src/lib/nest/nest.provider.js +0 -89
  273. package/src/lib/nest/nest.provider.js.map +0 -1
  274. package/src/lib/nest/storage/index.js +0 -5
  275. package/src/lib/nest/storage/index.js.map +0 -1
  276. package/src/lib/nest/storage/storage.module.js +0 -112
  277. package/src/lib/nest/storage/storage.module.js.map +0 -1
  278. package/src/lib/storage/driver.accessor.js +0 -299
  279. package/src/lib/storage/driver.accessor.js.map +0 -1
  280. package/src/lib/storage/driver.js +0 -12
  281. package/src/lib/storage/driver.js.map +0 -1
  282. package/src/lib/storage/index.js +0 -8
  283. package/src/lib/storage/index.js.map +0 -1
  284. package/src/lib/storage/storage.js +0 -20
  285. package/src/lib/storage/storage.js.map +0 -1
  286. package/src/lib/storage/storage.service.js +0 -26
  287. package/src/lib/storage/storage.service.js.map +0 -1
  288. package/test/src/index.js +0 -5
  289. package/test/src/index.js.map +0 -1
  290. package/test/src/lib/firebase/firebase.admin.auth.js +0 -260
  291. package/test/src/lib/firebase/firebase.admin.auth.js.map +0 -1
  292. package/test/src/lib/firebase/firebase.admin.collection.js +0 -108
  293. package/test/src/lib/firebase/firebase.admin.collection.js.map +0 -1
  294. package/test/src/lib/firebase/firebase.admin.function.js +0 -132
  295. package/test/src/lib/firebase/firebase.admin.function.js.map +0 -1
  296. package/test/src/lib/firebase/firebase.admin.js +0 -174
  297. package/test/src/lib/firebase/firebase.admin.js.map +0 -1
  298. package/test/src/lib/firebase/firebase.admin.nest.function.callable.context.js +0 -42
  299. package/test/src/lib/firebase/firebase.admin.nest.function.callable.context.js.map +0 -1
  300. package/test/src/lib/firebase/firebase.admin.nest.function.cloud.context.js +0 -40
  301. package/test/src/lib/firebase/firebase.admin.nest.function.cloud.context.js.map +0 -1
  302. package/test/src/lib/firebase/firebase.admin.nest.function.js +0 -64
  303. package/test/src/lib/firebase/firebase.admin.nest.function.js.map +0 -1
  304. package/test/src/lib/firebase/firebase.admin.nest.js +0 -107
  305. package/test/src/lib/firebase/firebase.admin.nest.js.map +0 -1
  306. package/test/src/lib/firebase/firebase.admin.test.server.js +0 -37
  307. package/test/src/lib/firebase/firebase.admin.test.server.js.map +0 -1
  308. package/test/src/lib/firebase/firebase.function.js +0 -58
  309. package/test/src/lib/firebase/firebase.function.js.map +0 -1
  310. package/test/src/lib/firebase/firebase.jest.d.ts +0 -21
  311. package/test/src/lib/firebase/firebase.jest.js +0 -45
  312. package/test/src/lib/firebase/firebase.jest.js.map +0 -1
  313. package/test/src/lib/firebase/firebase.js +0 -74
  314. package/test/src/lib/firebase/firebase.js.map +0 -1
  315. package/test/src/lib/firebase/index.js +0 -15
  316. package/test/src/lib/firebase/index.js.map +0 -1
  317. package/test/src/lib/firestore/firestore.admin.js +0 -21
  318. package/test/src/lib/firestore/firestore.admin.js.map +0 -1
  319. package/test/src/lib/firestore/firestore.js +0 -57
  320. package/test/src/lib/firestore/firestore.js.map +0 -1
  321. package/test/src/lib/firestore/index.js +0 -6
  322. package/test/src/lib/firestore/index.js.map +0 -1
  323. package/test/src/lib/index.js +0 -7
  324. package/test/src/lib/index.js.map +0 -1
  325. package/test/src/lib/storage/index.js +0 -6
  326. package/test/src/lib/storage/index.js.map +0 -1
  327. package/test/src/lib/storage/storage.admin.js +0 -21
  328. package/test/src/lib/storage/storage.admin.js.map +0 -1
  329. package/test/src/lib/storage/storage.js +0 -59
  330. package/test/src/lib/storage/storage.js.map +0 -1
  331. /package/{zoho/index.cjs.d.ts → index.d.ts} +0 -0
  332. /package/{zoho/index.esm.d.ts → mailgun/index.d.ts} +0 -0
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.firestoreNotificationSummarySendService = firestoreNotificationSummarySendService;
4
- const firebase_1 = require("@dereekb/firebase");
5
- const util_1 = require("@dereekb/util");
6
- const notification_util_1 = require("./notification.util");
7
- function firestoreNotificationSummarySendService(config) {
8
- const { context, allowCreateNotificationSummaries: inputAllowCreateNotificationSummaries } = config;
9
- const { firestoreContext, notificationSummaryCollection } = context;
10
- const allowCreateNotificationSummaries = inputAllowCreateNotificationSummaries ?? true;
11
- const sendService = {
12
- async buildSendInstanceForNotificationSummaryMessages(notificationMessages) {
13
- const messagesGroupedByNotificationSummaryMapBuilder = (0, util_1.multiValueMapBuilder)();
14
- notificationMessages.forEach((x) => {
15
- if (x.inputContext.recipient.s != null && x.item != null) {
16
- // only add to map builder if recipient id is defined
17
- messagesGroupedByNotificationSummaryMapBuilder.add(x.inputContext.recipient.s, x);
18
- }
19
- });
20
- const cutSubject = (0, util_1.cutStringFunction)({ maxLength: firebase_1.NOTIFICATION_SUMMARY_EMBEDDED_NOTIFICATION_ITEM_SUBJECT_MAX_LENGTH });
21
- const cutMessage = (0, util_1.cutStringFunction)({ maxLength: firebase_1.NOTIFICATION_SUMMARY_EMBEDDED_NOTIFICATION_ITEM_MESSAGE_MAX_LENGTH });
22
- const messagesGroups = messagesGroupedByNotificationSummaryMapBuilder.entries();
23
- return async () => {
24
- const success = [];
25
- const failed = [];
26
- const ignored = [];
27
- await (0, util_1.runAsyncTasksForValues)(messagesGroups, async ([notificationSummaryId, messages]) => {
28
- await firestoreContext
29
- .runTransaction(async (transaction) => {
30
- const notificationSummaryDocument = notificationSummaryCollection.documentAccessorForTransaction(transaction).loadDocumentForId(notificationSummaryId);
31
- const notificationSummary = await notificationSummaryDocument.snapshotData();
32
- let updated = false;
33
- let updateTemplate;
34
- const existingMessages = notificationSummary?.n ?? [];
35
- const existingMessageIds = new Set(existingMessages.map((x) => x.id));
36
- // ignore any repeat messages
37
- const messagesToSend = messages.filter((x) => !existingMessageIds.has(x.item.id));
38
- if (messagesToSend.length > 0) {
39
- // add the new items to existing n, then keep the last 1000
40
- const sortedN = existingMessages
41
- .concat(messagesToSend.map((x) => {
42
- let message = '';
43
- if (x.content.openingMessage) {
44
- message = x.content.openingMessage;
45
- }
46
- if (x.content.closingMessage) {
47
- message = (message ? message + '\n\n' : message) + x.content.closingMessage;
48
- }
49
- const item = {
50
- ...x.item,
51
- s: cutSubject(x.content.title),
52
- g: cutMessage(message)
53
- };
54
- return item;
55
- }))
56
- .sort(firebase_1.sortNotificationItemsFunction);
57
- const n = (0, util_1.takeLast)(sortedN, firebase_1.NOTIFICATION_SUMMARY_ITEM_LIMIT);
58
- updateTemplate = {
59
- n,
60
- lat: new Date()
61
- };
62
- }
63
- if (updateTemplate != null) {
64
- if (notificationSummary != null) {
65
- await notificationSummaryDocument.update(updateTemplate);
66
- updated = true;
67
- }
68
- else if (allowCreateNotificationSummaries) {
69
- // if it does not exist, and we are allowed to create new summaries, create it and add the new notifications
70
- const createTemplate = {
71
- ...(0, notification_util_1.makeNewNotificationSummaryTemplate)((0, firebase_1.inferKeyFromTwoWayFlatFirestoreModelKey)(notificationSummaryId)),
72
- ...updateTemplate
73
- };
74
- await notificationSummaryDocument.create(createTemplate);
75
- updated = true;
76
- }
77
- }
78
- return updated;
79
- })
80
- .then((updated) => {
81
- if (updated) {
82
- success.push(notificationSummaryId);
83
- }
84
- else {
85
- ignored.push(notificationSummaryId);
86
- }
87
- })
88
- .catch((e) => {
89
- console.error('firestoreNotificationSummarySendService(): failed updating notification summary', e);
90
- failed.push(notificationSummaryId);
91
- });
92
- });
93
- const sendResult = {
94
- success,
95
- failed,
96
- ignored
97
- };
98
- return sendResult;
99
- };
100
- }
101
- };
102
- return sendService;
103
- }
104
- //# sourceMappingURL=notification.send.service.notificationsummary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification.send.service.notificationsummary.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.send.service.notificationsummary.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ignoreSendNotificationTextSendService = ignoreSendNotificationTextSendService;
4
- /**
5
- * NotificationTextSendService that ignores sending all messages.
6
- *
7
- * This is useful for cases where your app may eventually want to send text notifications and want the rest of your app configured like it currently does.
8
- *
9
- * @returns
10
- */
11
- function ignoreSendNotificationTextSendService() {
12
- const sendService = {
13
- async buildSendInstanceForTextNotificationMessages(notificationMessages) {
14
- return async () => {
15
- const success = [];
16
- const failed = [];
17
- const ignored = notificationMessages.map((x) => x.inputContext.recipient.t);
18
- const sendResult = {
19
- success,
20
- failed,
21
- ignored
22
- };
23
- return sendResult;
24
- };
25
- }
26
- };
27
- return sendService;
28
- }
29
- //# sourceMappingURL=notification.send.service.text.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification.send.service.text.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.send.service.text.ts"],"names":[],"mappings":";;AAYA,sFAoBC;AA3BD;;;;;;GAMG;AACH,SAAgB,qCAAqC;IACnD,MAAM,WAAW,GAAgC;QAC/C,KAAK,CAAC,4CAA4C,CAAC,oBAA2C;YAC5F,OAAO,KAAK,IAAI,EAAE;gBAChB,MAAM,OAAO,GAAsB,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAsB,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAsB,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAoB,CAAC,CAAC;gBAElH,MAAM,UAAU,GAAuC;oBACrD,OAAO;oBACP,MAAM;oBACN,OAAO;iBACR,CAAC;gBAEF,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.notificationTaskService = notificationTaskService;
4
- const util_1 = require("@dereekb/util");
5
- /**
6
- * A basic NotificationTaskService implementation.
7
- */
8
- function notificationTaskService(config) {
9
- const { handlers: inputHandlers } = config;
10
- const handlers = {};
11
- inputHandlers.forEach((handlerConfig) => {
12
- const { type } = handlerConfig;
13
- handlers[type] = handlerForConfig(handlerConfig);
14
- });
15
- function handlerForConfig(handlerConfig) {
16
- const { flow: inputFlows, allowRunMultipleParts } = handlerConfig;
17
- const { included: checkpointFlows, excluded: nonCheckpointFlows } = (0, util_1.separateValues)(inputFlows, (x) => x.checkpoint != null);
18
- if (inputFlows.length === 0) {
19
- throw new Error('notificationTaskService(): NotificationTaskServiceTaskHandlerConfig must have at least one flow entry.');
20
- }
21
- else if (nonCheckpointFlows.length > 1) {
22
- throw new Error('notificationTaskService(): NotificationTaskServiceTaskHandlerConfig must not have more than one non-checkpoint flow.');
23
- }
24
- return {
25
- handleNotificationTask: async (notificationTask) => {
26
- const { checkpoints: completedCheckpoints } = notificationTask;
27
- let fn;
28
- switch (completedCheckpoints.length) {
29
- case 0:
30
- fn = (nonCheckpointFlows[0] ?? checkpointFlows[0])?.fn;
31
- break;
32
- default:
33
- const completedCheckpointsSet = new Set(completedCheckpoints);
34
- /**
35
- * Find the next flow function that hasn't had its checkpoint completed yet.
36
- */
37
- const nextCheckpoint = checkpointFlows.find((x) => !completedCheckpointsSet.has(x.checkpoint));
38
- fn = nextCheckpoint?.fn;
39
- break;
40
- }
41
- let result;
42
- if (fn) {
43
- result = await fn(notificationTask);
44
- // if allowRunMultipleParts is true, and the result doesn't have a canRunNextCheckpoint value, then set it to true.
45
- if (allowRunMultipleParts && result.canRunNextCheckpoint == null) {
46
- result.canRunNextCheckpoint = true;
47
- }
48
- }
49
- else {
50
- result = {
51
- completion: true // if there are no functions remaining, then the task is complete
52
- };
53
- }
54
- return result;
55
- }
56
- };
57
- }
58
- return {
59
- isKnownNotificationTaskType: (notificationTaskType) => {
60
- return handlers[notificationTaskType] !== undefined;
61
- },
62
- taskHandlerForNotificationTaskType: (notificationTaskType) => handlers[notificationTaskType]
63
- };
64
- }
65
- //# sourceMappingURL=notification.task.service.handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification.task.service.handler.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.task.service.handler.ts"],"names":[],"mappings":";;AA8CA,0DAiEC;AA7GD,wCAAkE;AAyClE;;GAEG;AACH,SAAgB,uBAAuB,CAAC,MAAqC;IAC3E,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAE3C,MAAM,QAAQ,GAAqE,EAAE,CAAC;IAEtF,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,SAAS,gBAAgB,CAAC,aAAiE;QACzF,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,aAAa,CAAC;QAClE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,IAAA,qBAAc,EAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QAE5H,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wGAAwG,CAAC,CAAC;QAC5H,CAAC;aAAM,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,sHAAsH,CAAC,CAAC;QAC1I,CAAC;QAED,OAAO;YACL,sBAAsB,EAAE,KAAK,EAAE,gBAAkC,EAAE,EAAE;gBACnE,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,gBAAgB,CAAC;gBAC/D,IAAI,EAA0D,CAAC;gBAE/D,QAAQ,oBAAoB,CAAC,MAAM,EAAE,CAAC;oBACpC,KAAK,CAAC;wBACJ,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;wBACvD,MAAM;oBACR;wBACE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;wBAC9D;;2BAEG;wBACH,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAoB,CAAC,CAAC,CAAC;wBACzG,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;wBACxB,MAAM;gBACV,CAAC;gBAED,IAAI,MAA2D,CAAC;gBAEhE,IAAI,EAAE,EAAE,CAAC;oBACP,MAAM,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC;oBAEpC,mHAAmH;oBACnH,IAAI,qBAAqB,IAAI,MAAM,CAAC,oBAAoB,IAAI,IAAI,EAAE,CAAC;wBAChE,MAAsC,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBACtE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG;wBACP,UAAU,EAAE,IAAI,CAAC,iEAAiE;qBACnF,CAAC;gBACJ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,2BAA2B,EAAE,CAAC,oBAA0C,EAAE,EAAE;YAC1E,OAAO,QAAQ,CAAC,oBAAoB,CAAC,KAAK,SAAS,CAAC;QACtD,CAAC;QACD,kCAAkC,EAAE,CAAC,oBAA0C,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACnH,CAAC;AACJ,CAAC"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotificationTaskService = void 0;
4
- /**
5
- * Service dedicated to providing access to NotificationMessageFunctionFactory values for specific NotificationTemplateTypes.
6
- */
7
- class NotificationTaskService {
8
- }
9
- exports.NotificationTaskService = NotificationTaskService;
10
- //# sourceMappingURL=notification.task.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification.task.service.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.task.service.ts"],"names":[],"mappings":";;;AAUA;;GAEG;AACH,MAAsB,uBAAuB;CAS5C;AATD,0DASC"}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeFromCompletionsArrayWithTaskResult = removeFromCompletionsArrayWithTaskResult;
4
- const util_1 = require("@dereekb/util");
5
- /**
6
- * Removes the completed checkpoints from the inputCompletions array based on the handleTaskResult.
7
- *
8
- * @param inputCompletions
9
- * @param handleTaskResult
10
- * @returns
11
- */
12
- function removeFromCompletionsArrayWithTaskResult(inputCompletions, handleTaskResult) {
13
- const { removeAllCompletedCheckpoints, removeFromCompletedCheckpoints } = handleTaskResult;
14
- let result;
15
- if (removeAllCompletedCheckpoints) {
16
- result = [];
17
- }
18
- else if (removeFromCompletedCheckpoints != null) {
19
- const removeFromCompletionsSet = new Set((0, util_1.asArray)(removeFromCompletedCheckpoints));
20
- result = inputCompletions.filter((x) => !removeFromCompletionsSet.has(x));
21
- }
22
- else {
23
- result = inputCompletions;
24
- }
25
- return result;
26
- }
27
- //# sourceMappingURL=notification.task.service.util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification.task.service.util.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.task.service.util.ts"],"names":[],"mappings":";;AAUA,4FAeC;AAxBD,wCAAwC;AAExC;;;;;;GAMG;AACH,SAAgB,wCAAwC,CAAgF,gBAAqB,EAAE,gBAAuJ;IACpT,MAAM,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,GAAG,gBAAgB,CAAC;IAE3F,IAAI,MAAW,CAAC;IAEhB,IAAI,6BAA6B,EAAE,CAAC;QAClC,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;SAAM,IAAI,8BAA8B,IAAI,IAAI,EAAE,CAAC;QAClD,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,IAAA,cAAO,EAAC,8BAA8B,CAAC,CAAC,CAAC;QAClF,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,gBAAgB,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,256 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotificationTaskSubTaskMissingRequiredDataTermination = void 0;
4
- exports.notificationTaskSubtaskNotificationTaskHandlerFactory = notificationTaskSubtaskNotificationTaskHandlerFactory;
5
- exports.notificationTaskSubTaskMissingRequiredDataTermination = notificationTaskSubTaskMissingRequiredDataTermination;
6
- const firebase_1 = require("@dereekb/firebase");
7
- const util_1 = require("@dereekb/util");
8
- const make_error_1 = require("make-error");
9
- const notification_task_service_util_1 = require("./notification.task.service.util");
10
- /**
11
- * Creates a NotificationTaskSubtaskNotificationTaskHandlerFactory.
12
- */
13
- function notificationTaskSubtaskNotificationTaskHandlerFactory(factoryConfig) {
14
- const { taskType, subtaskHandlerFunctionName: subtaskHandlerName, inputFunction, defaultCleanup, cleanupFunction, buildUpdateMetadata: inputBuildUpdateMetadata } = factoryConfig;
15
- return (subtaskHandlerConfig) => {
16
- const { processors: inputProcessors, maxCleanupRetryAttempts: inputMaxCleanupRetryAttempts, cleanupRetryDelay: inputCleanupRetryDelay, defaultAllowRunMultipleParts } = subtaskHandlerConfig;
17
- const maxCleanupRetryAttempts = inputMaxCleanupRetryAttempts ?? firebase_1.DEFAULT_NOTIFICATION_TASK_SUBTASK_CLEANUP_RETRY_ATTEMPTS;
18
- const cleanupRetryDelay = inputCleanupRetryDelay ?? firebase_1.DEFAULT_NOTIFICATION_TASK_SUBTASK_CLEANUP_RETRY_DELAY;
19
- const buildUpdateMetadata = inputBuildUpdateMetadata ?? (() => undefined);
20
- const processors = {};
21
- inputProcessors.forEach((processorConfig) => {
22
- const { target } = processorConfig;
23
- processors[target] = processorFunctionForConfig(processorConfig);
24
- });
25
- /**
26
- * Structure is similar to notificationTaskService(), but contained to handle the subtasks.
27
- */
28
- function processorFunctionForConfig(processorConfig) {
29
- const { flow: inputFlows, cleanup, allowRunMultipleParts: processorAllowRunMultipleParts } = processorConfig;
30
- const { included: subtaskFlows, excluded: nonSubtaskFlows } = (0, util_1.separateValues)(inputFlows, (x) => x.subtask != null);
31
- const allowRunMultipleParts = processorAllowRunMultipleParts ?? defaultAllowRunMultipleParts;
32
- if (inputFlows.length === 0) {
33
- throw new Error(`${subtaskHandlerName}(): NotificationTaskSubtaskProcessorConfig must have at least one flow entry.`);
34
- }
35
- else if (nonSubtaskFlows.length > 1) {
36
- throw new Error(`${subtaskHandlerName}(): NotificationTaskSubtaskProcessorConfig must not have more than one non-subtask flow.`);
37
- }
38
- const allKnownSubtasks = (0, util_1.unique)(inputFlows.map((x) => x.subtask));
39
- return {
40
- process: async (input) => {
41
- const { notificationTask, completedSubtasks, subtaskData } = input;
42
- let fn;
43
- switch (completedSubtasks.length) {
44
- case 0:
45
- fn = (nonSubtaskFlows[0] ?? subtaskFlows[0])?.fn;
46
- break;
47
- default:
48
- const completedSubtasksSet = new Set(completedSubtasks);
49
- /**
50
- * Find the next flow function that hasn't had its checkpoint completed yet.
51
- */
52
- const nextSubtask = subtaskFlows.find((x) => !completedSubtasksSet.has(x.subtask));
53
- fn = nextSubtask?.fn;
54
- break;
55
- }
56
- let result;
57
- if (fn) {
58
- /*
59
- * This section is similar to handleNotificationTask() in notification.action.server.ts,
60
- * but is modified to handle the subtasks. The main difference is the attempt count is maintained,
61
- * and instead is available via the normal NotificationTask attempts details.
62
- */
63
- const subtaskResult = await fn(input);
64
- const { completion: subtaskCompletion, updateMetadata: subtaskUpdateMetadata, delayUntil, canRunNextCheckpoint } = subtaskResult;
65
- let allSubtasksDone = false;
66
- let sfps = completedSubtasks;
67
- // update the task metadata to reflect the changes
68
- switch (subtaskCompletion) {
69
- case true:
70
- allSubtasksDone = true;
71
- break;
72
- case false:
73
- // remove any completions, if applicable
74
- sfps = (0, notification_task_service_util_1.removeFromCompletionsArrayWithTaskResult)(sfps, subtaskResult);
75
- break;
76
- default:
77
- sfps = (0, util_1.unique)([
78
- ...(0, notification_task_service_util_1.removeFromCompletionsArrayWithTaskResult)(sfps, subtaskResult), // remove any completions, if applicable
79
- ...(0, util_1.asArray)(subtaskCompletion)
80
- ]);
81
- const completedSubtasksSet = new Set(sfps);
82
- const incompleteSubtasks = allKnownSubtasks.filter((x) => !completedSubtasksSet.has(x));
83
- allSubtasksDone = incompleteSubtasks.length === 0;
84
- break;
85
- }
86
- // configure the update metadata result
87
- const sd = {
88
- ...subtaskData,
89
- ...subtaskUpdateMetadata
90
- };
91
- /**
92
- * This is updating the metadata for the NotificationTask, which has a nested data
93
- */
94
- const baseUpdateMetadata = {
95
- ...notificationTask.data,
96
- sfps,
97
- sd
98
- };
99
- let updateMetadata = (await buildUpdateMetadata(baseUpdateMetadata, input));
100
- if (updateMetadata) {
101
- // inject sfps and sd back in
102
- updateMetadata = {
103
- ...updateMetadata,
104
- sfps,
105
- sd
106
- };
107
- }
108
- else {
109
- updateMetadata = baseUpdateMetadata;
110
- }
111
- const nextCanRunNextCheckpoint = canRunNextCheckpoint ?? allowRunMultipleParts;
112
- result = {
113
- completion: allSubtasksDone ? ['processing'] : (0, firebase_1.delayCompletion)(), // return processing until all subtasks are complete.
114
- updateMetadata,
115
- canRunNextCheckpoint: nextCanRunNextCheckpoint,
116
- allCompletedSubTasks: sfps,
117
- delayUntil // delay is passed through
118
- };
119
- }
120
- else {
121
- // no more subtasks to process, and no metadata changes. Mark as processing complete and continue.
122
- result = (0, firebase_1.completeSubtaskProcessingAndScheduleCleanupTaskResult)();
123
- }
124
- return result;
125
- },
126
- cleanup
127
- };
128
- }
129
- function useInputDataFactory(fn) {
130
- return async (notificationTask) => {
131
- const { data } = notificationTask;
132
- let result;
133
- if (data) {
134
- try {
135
- const inputFunctionResult = await inputFunction(data, notificationTask);
136
- result = await fn(notificationTask, inputFunctionResult, data);
137
- }
138
- catch (e) {
139
- if (e instanceof NotificationTaskSubTaskMissingRequiredDataTermination) {
140
- // Task is complete if the required data no longer exists. Nothing to cleanup.
141
- result = (0, firebase_1.notificationTaskComplete)();
142
- }
143
- else {
144
- // rethrow the error
145
- throw e;
146
- }
147
- }
148
- }
149
- else {
150
- // Improperly configured task. Complete immediately.
151
- result = (0, firebase_1.notificationTaskComplete)();
152
- }
153
- return result;
154
- };
155
- }
156
- const result = {
157
- type: taskType,
158
- flow: [
159
- {
160
- checkpoint: firebase_1.NOTIFICATION_TASK_SUBTASK_CHECKPOINT_PROCESSING,
161
- fn: useInputDataFactory(async (notificationTask, inputFunctionResult, data) => {
162
- let result;
163
- const baseInput = {
164
- ...inputFunctionResult,
165
- notificationTask
166
- };
167
- const { target } = baseInput;
168
- if (target) {
169
- const processor = processors[target];
170
- if (processor) {
171
- const { sd: subtaskData, sfps: completedSubtasks } = data;
172
- const input = {
173
- ...baseInput,
174
- target,
175
- completedSubtasks: completedSubtasks ?? [],
176
- subtaskData
177
- };
178
- result = await processor.process(input);
179
- }
180
- else {
181
- // processor is unknown. Complete the task.
182
- result = (0, firebase_1.completeSubtaskProcessingAndScheduleCleanupTaskResult)();
183
- }
184
- }
185
- else {
186
- // target is unknown. Complete the task.
187
- result = (0, firebase_1.completeSubtaskProcessingAndScheduleCleanupTaskResult)();
188
- }
189
- return result;
190
- })
191
- },
192
- {
193
- checkpoint: firebase_1.NOTIFICATION_TASK_SUBTASK_CHECKPOINT_CLEANUP,
194
- fn: useInputDataFactory(async (notificationTask, inputFunctionResult, data) => {
195
- let result;
196
- let cleanupFunctionInput = {
197
- ...inputFunctionResult,
198
- notificationTask
199
- };
200
- const { target } = cleanupFunctionInput;
201
- let cleanupInstructions;
202
- if (target) {
203
- const processor = processors[target];
204
- if (processor && processor.cleanup) {
205
- const { sd: subtaskData, sfps: completedSubtasks } = data;
206
- const input = {
207
- ...cleanupFunctionInput,
208
- notificationTask,
209
- completedSubtasks: completedSubtasks ?? [],
210
- target,
211
- subtaskData
212
- };
213
- cleanupInstructions = (await processor.cleanup(input, defaultCleanup)) ?? (await defaultCleanup(cleanupFunctionInput));
214
- cleanupFunctionInput = input;
215
- }
216
- else {
217
- // processor is unknown. Complete the task.
218
- cleanupInstructions = await defaultCleanup(cleanupFunctionInput);
219
- }
220
- }
221
- else {
222
- // target is unknown. Complete the task.
223
- cleanupInstructions = await defaultCleanup(cleanupFunctionInput);
224
- }
225
- if (cleanupInstructions.cleanupSuccess === false && notificationTask.currentCheckpointSendAttempts <= maxCleanupRetryAttempts) {
226
- result = (0, firebase_1.notificationTaskDelayRetry)(cleanupInstructions.delayRetryUntil ?? cleanupRetryDelay);
227
- }
228
- else {
229
- result = await cleanupFunction(cleanupFunctionInput, cleanupInstructions);
230
- }
231
- return result;
232
- })
233
- }
234
- ]
235
- };
236
- return result;
237
- };
238
- }
239
- // MARK: Internally Handled Errors
240
- /**
241
- * Thrown when a subtask no longer has data available to continue processing.
242
- *
243
- * The subtask will be marked as immediately complete, and no cleanup will occur.
244
- *
245
- * This is useful in cases where the underlying models or data that the subtask rely on are deleted (and those models were also required for cleanup) so the task can be marked as complete without attempting cleanup.
246
- */
247
- class NotificationTaskSubTaskMissingRequiredDataTermination extends make_error_1.BaseError {
248
- }
249
- exports.NotificationTaskSubTaskMissingRequiredDataTermination = NotificationTaskSubTaskMissingRequiredDataTermination;
250
- /**
251
- * Creates a NotificationTaskSubTaskMissingRequiredDataTermination.
252
- */
253
- function notificationTaskSubTaskMissingRequiredDataTermination() {
254
- return new NotificationTaskSubTaskMissingRequiredDataTermination();
255
- }
256
- //# sourceMappingURL=notification.task.subtask.handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification.task.subtask.handler.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.task.subtask.handler.ts"],"names":[],"mappings":"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"}