@dereekb/firebase-server 12.7.0 → 13.0.1

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 (343) hide show
  1. package/LICENSE +1 -1
  2. package/index.cjs.default.js +1 -0
  3. package/index.cjs.js +2859 -0
  4. package/index.cjs.mjs +2 -0
  5. package/index.esm.js +2699 -0
  6. package/mailgun/index.cjs.default.js +1 -0
  7. package/mailgun/{src/lib/auth.mailgun.js → index.cjs.js} +6 -6
  8. package/mailgun/index.cjs.mjs +2 -0
  9. package/mailgun/index.esm.js +39 -0
  10. package/mailgun/package.json +20 -5
  11. package/model/index.cjs.default.js +1 -0
  12. package/model/index.cjs.js +4767 -0
  13. package/model/index.cjs.mjs +2 -0
  14. package/model/index.d.ts +1 -0
  15. package/model/index.esm.js +4630 -0
  16. package/model/package.json +28 -4
  17. package/model/src/lib/notification/notification.module.d.ts +10 -10
  18. package/model/src/lib/storagefile/storagefile.task.service.handler.d.ts +3 -14
  19. package/package.json +49 -47
  20. package/src/lib/auth/auth.context.d.ts +1 -1
  21. package/src/lib/auth/auth.service.d.ts +1 -1
  22. package/src/lib/function/assert.d.ts +2 -2
  23. package/src/lib/function/context.d.ts +1 -1
  24. package/src/lib/function/error.d.ts +0 -8
  25. package/src/lib/index.d.ts +1 -0
  26. package/src/lib/nest/app.d.ts +1 -1
  27. package/src/lib/nest/development/development.app.function.d.ts +1 -2
  28. package/src/lib/nest/function/call.d.ts +1 -1
  29. package/src/lib/nest/function/context.d.ts +0 -4
  30. package/src/lib/nest/function/index.d.ts +0 -1
  31. package/src/lib/nest/function/nest.d.ts +1 -1
  32. package/src/lib/nest/function/v2/blocking.d.ts +3 -2
  33. package/src/lib/nest/model/crud.assert.function.d.ts +0 -4
  34. package/src/lib/storage/storage.d.ts +1 -1
  35. package/src/lib/type.d.ts +9 -0
  36. package/test/index.cjs.default.js +1 -0
  37. package/test/index.cjs.js +1258 -0
  38. package/test/index.cjs.mjs +2 -0
  39. package/test/index.d.ts +1 -0
  40. package/test/index.esm.js +1181 -0
  41. package/test/package.json +31 -4
  42. package/test/src/lib/firebase/firebase.admin.auth.d.ts +22 -13
  43. package/test/src/lib/firebase/firebase.admin.collection.d.ts +6 -6
  44. package/test/src/lib/firebase/firebase.admin.d.ts +10 -10
  45. package/test/src/lib/firebase/firebase.admin.function.d.ts +9 -9
  46. package/test/src/lib/firebase/firebase.admin.nest.d.ts +8 -8
  47. package/test/src/lib/firebase/firebase.admin.nest.function.d.ts +9 -9
  48. package/test/src/lib/firebase/firebase.test.d.ts +30 -0
  49. package/test/src/lib/firebase/index.d.ts +1 -1
  50. package/test/src/lib/firestore/firestore.admin.d.ts +3 -3
  51. package/test/src/lib/firestore/firestore.d.ts +2 -2
  52. package/test/src/lib/storage/storage.admin.d.ts +3 -3
  53. package/test/src/lib/storage/storage.d.ts +2 -2
  54. package/zoho/LICENSE +1 -1
  55. package/zoho/index.cjs.default.js +1 -0
  56. package/zoho/index.cjs.js +82 -85
  57. package/zoho/index.cjs.mjs +2 -0
  58. package/zoho/index.d.ts +1 -0
  59. package/zoho/index.esm.js +84 -87
  60. package/zoho/package.json +15 -15
  61. package/CHANGELOG.md +0 -2237
  62. package/mailgun/src/index.js +0 -5
  63. package/mailgun/src/index.js.map +0 -1
  64. package/mailgun/src/lib/auth.mailgun.js.map +0 -1
  65. package/mailgun/src/lib/index.js +0 -5
  66. package/mailgun/src/lib/index.js.map +0 -1
  67. package/model/src/index.js +0 -5
  68. package/model/src/index.js.map +0 -1
  69. package/model/src/lib/index.js +0 -7
  70. package/model/src/lib/index.js.map +0 -1
  71. package/model/src/lib/mailgun/index.js +0 -5
  72. package/model/src/lib/mailgun/index.js.map +0 -1
  73. package/model/src/lib/mailgun/notification.send.service.mailgun.js +0 -68
  74. package/model/src/lib/mailgun/notification.send.service.mailgun.js.map +0 -1
  75. package/model/src/lib/notification/index.js +0 -20
  76. package/model/src/lib/notification/index.js.map +0 -1
  77. package/model/src/lib/notification/notification.action.init.service.js +0 -230
  78. package/model/src/lib/notification/notification.action.init.service.js.map +0 -1
  79. package/model/src/lib/notification/notification.action.service.js +0 -1487
  80. package/model/src/lib/notification/notification.action.service.js.map +0 -1
  81. package/model/src/lib/notification/notification.config.js +0 -13
  82. package/model/src/lib/notification/notification.config.js.map +0 -1
  83. package/model/src/lib/notification/notification.config.service.js +0 -60
  84. package/model/src/lib/notification/notification.config.service.js.map +0 -1
  85. package/model/src/lib/notification/notification.create.run.js +0 -59
  86. package/model/src/lib/notification/notification.create.run.js.map +0 -1
  87. package/model/src/lib/notification/notification.error.js +0 -87
  88. package/model/src/lib/notification/notification.error.js.map +0 -1
  89. package/model/src/lib/notification/notification.expedite.service.js +0 -112
  90. package/model/src/lib/notification/notification.expedite.service.js.map +0 -1
  91. package/model/src/lib/notification/notification.module.js +0 -106
  92. package/model/src/lib/notification/notification.module.js.map +0 -1
  93. package/model/src/lib/notification/notification.send.js +0 -3
  94. package/model/src/lib/notification/notification.send.js.map +0 -1
  95. package/model/src/lib/notification/notification.send.service.js +0 -10
  96. package/model/src/lib/notification/notification.send.service.js.map +0 -1
  97. package/model/src/lib/notification/notification.send.service.notificationsummary.js +0 -104
  98. package/model/src/lib/notification/notification.send.service.notificationsummary.js.map +0 -1
  99. package/model/src/lib/notification/notification.send.service.text.js +0 -29
  100. package/model/src/lib/notification/notification.send.service.text.js.map +0 -1
  101. package/model/src/lib/notification/notification.task.service.handler.js +0 -65
  102. package/model/src/lib/notification/notification.task.service.handler.js.map +0 -1
  103. package/model/src/lib/notification/notification.task.service.js +0 -10
  104. package/model/src/lib/notification/notification.task.service.js.map +0 -1
  105. package/model/src/lib/notification/notification.task.service.util.js +0 -27
  106. package/model/src/lib/notification/notification.task.service.util.js.map +0 -1
  107. package/model/src/lib/notification/notification.task.subtask.handler.js +0 -256
  108. package/model/src/lib/notification/notification.task.subtask.handler.js.map +0 -1
  109. package/model/src/lib/notification/notification.util.js +0 -478
  110. package/model/src/lib/notification/notification.util.js.map +0 -1
  111. package/model/src/lib/storagefile/index.js +0 -12
  112. package/model/src/lib/storagefile/index.js.map +0 -1
  113. package/model/src/lib/storagefile/storagefile.action.init.service.js +0 -155
  114. package/model/src/lib/storagefile/storagefile.action.init.service.js.map +0 -1
  115. package/model/src/lib/storagefile/storagefile.action.server.js +0 -797
  116. package/model/src/lib/storagefile/storagefile.action.server.js.map +0 -1
  117. package/model/src/lib/storagefile/storagefile.error.js +0 -106
  118. package/model/src/lib/storagefile/storagefile.error.js.map +0 -1
  119. package/model/src/lib/storagefile/storagefile.module.js +0 -64
  120. package/model/src/lib/storagefile/storagefile.module.js.map +0 -1
  121. package/model/src/lib/storagefile/storagefile.task.service.handler.js +0 -287
  122. package/model/src/lib/storagefile/storagefile.task.service.handler.js.map +0 -1
  123. package/model/src/lib/storagefile/storagefile.upload.service.initializer.js +0 -180
  124. package/model/src/lib/storagefile/storagefile.upload.service.initializer.js.map +0 -1
  125. package/model/src/lib/storagefile/storagefile.upload.service.js +0 -10
  126. package/model/src/lib/storagefile/storagefile.upload.service.js.map +0 -1
  127. package/model/src/lib/storagefile/storagefile.util.js +0 -54
  128. package/model/src/lib/storagefile/storagefile.util.js.map +0 -1
  129. package/src/index.js +0 -5
  130. package/src/index.js.map +0 -1
  131. package/src/lib/auth/auth.context.js +0 -13
  132. package/src/lib/auth/auth.context.js.map +0 -1
  133. package/src/lib/auth/auth.service.error.js +0 -34
  134. package/src/lib/auth/auth.service.error.js.map +0 -1
  135. package/src/lib/auth/auth.service.js +0 -427
  136. package/src/lib/auth/auth.service.js.map +0 -1
  137. package/src/lib/auth/auth.util.js +0 -23
  138. package/src/lib/auth/auth.util.js.map +0 -1
  139. package/src/lib/auth/index.js +0 -8
  140. package/src/lib/auth/index.js.map +0 -1
  141. package/src/lib/env/env.service.js +0 -7
  142. package/src/lib/env/env.service.js.map +0 -1
  143. package/src/lib/env/index.js +0 -5
  144. package/src/lib/env/index.js.map +0 -1
  145. package/src/lib/firestore/array.js +0 -34
  146. package/src/lib/firestore/array.js.map +0 -1
  147. package/src/lib/firestore/driver.accessor.batch.js +0 -93
  148. package/src/lib/firestore/driver.accessor.batch.js.map +0 -1
  149. package/src/lib/firestore/driver.accessor.default.js +0 -62
  150. package/src/lib/firestore/driver.accessor.default.js.map +0 -1
  151. package/src/lib/firestore/driver.accessor.js +0 -50
  152. package/src/lib/firestore/driver.accessor.js.map +0 -1
  153. package/src/lib/firestore/driver.accessor.transaction.js +0 -96
  154. package/src/lib/firestore/driver.accessor.transaction.js.map +0 -1
  155. package/src/lib/firestore/driver.js +0 -14
  156. package/src/lib/firestore/driver.js.map +0 -1
  157. package/src/lib/firestore/driver.query.js +0 -55
  158. package/src/lib/firestore/driver.query.js.map +0 -1
  159. package/src/lib/firestore/firestore.js +0 -10
  160. package/src/lib/firestore/firestore.js.map +0 -1
  161. package/src/lib/firestore/increment.js +0 -17
  162. package/src/lib/firestore/increment.js.map +0 -1
  163. package/src/lib/firestore/index.js +0 -9
  164. package/src/lib/firestore/index.js.map +0 -1
  165. package/src/lib/function/assert.js +0 -68
  166. package/src/lib/function/assert.js.map +0 -1
  167. package/src/lib/function/context.js +0 -14
  168. package/src/lib/function/context.js.map +0 -1
  169. package/src/lib/function/error.auth.js +0 -25
  170. package/src/lib/function/error.auth.js.map +0 -1
  171. package/src/lib/function/error.js +0 -221
  172. package/src/lib/function/error.js.map +0 -1
  173. package/src/lib/function/index.js +0 -9
  174. package/src/lib/function/index.js.map +0 -1
  175. package/src/lib/function/type.js +0 -3
  176. package/src/lib/function/type.js.map +0 -1
  177. package/src/lib/index.js +0 -11
  178. package/src/lib/index.js.map +0 -1
  179. package/src/lib/nest/app.js +0 -114
  180. package/src/lib/nest/app.js.map +0 -1
  181. package/src/lib/nest/auth/auth.module.js +0 -60
  182. package/src/lib/nest/auth/auth.module.js.map +0 -1
  183. package/src/lib/nest/auth/auth.util.js +0 -72
  184. package/src/lib/nest/auth/auth.util.js.map +0 -1
  185. package/src/lib/nest/auth/index.js +0 -6
  186. package/src/lib/nest/auth/index.js.map +0 -1
  187. package/src/lib/nest/development/development.app.function.js +0 -38
  188. package/src/lib/nest/development/development.app.function.js.map +0 -1
  189. package/src/lib/nest/development/development.assert.function.js +0 -3
  190. package/src/lib/nest/development/development.assert.function.js.map +0 -1
  191. package/src/lib/nest/development/development.function.js +0 -41
  192. package/src/lib/nest/development/development.function.js.map +0 -1
  193. package/src/lib/nest/development/development.schedule.function.error.js +0 -35
  194. package/src/lib/nest/development/development.schedule.function.error.js.map +0 -1
  195. package/src/lib/nest/development/development.schedule.function.js +0 -54
  196. package/src/lib/nest/development/development.schedule.function.js.map +0 -1
  197. package/src/lib/nest/development/index.js +0 -9
  198. package/src/lib/nest/development/index.js.map +0 -1
  199. package/src/lib/nest/env/env.service.js +0 -19
  200. package/src/lib/nest/env/env.service.js.map +0 -1
  201. package/src/lib/nest/env/env.util.js +0 -12
  202. package/src/lib/nest/env/env.util.js.map +0 -1
  203. package/src/lib/nest/env/index.js +0 -6
  204. package/src/lib/nest/env/index.js.map +0 -1
  205. package/src/lib/nest/firebase/firebase.module.js +0 -17
  206. package/src/lib/nest/firebase/firebase.module.js.map +0 -1
  207. package/src/lib/nest/firebase/index.js +0 -5
  208. package/src/lib/nest/firebase/index.js.map +0 -1
  209. package/src/lib/nest/firestore/firestore.module.js +0 -86
  210. package/src/lib/nest/firestore/firestore.module.js.map +0 -1
  211. package/src/lib/nest/firestore/index.js +0 -5
  212. package/src/lib/nest/firestore/index.js.map +0 -1
  213. package/src/lib/nest/function/call.js +0 -46
  214. package/src/lib/nest/function/call.js.map +0 -1
  215. package/src/lib/nest/function/context.js +0 -79
  216. package/src/lib/nest/function/context.js.map +0 -1
  217. package/src/lib/nest/function/index.js +0 -10
  218. package/src/lib/nest/function/index.js.map +0 -1
  219. package/src/lib/nest/function/nest.js +0 -17
  220. package/src/lib/nest/function/nest.js.map +0 -1
  221. package/src/lib/nest/function/schedule.js +0 -8
  222. package/src/lib/nest/function/schedule.js.map +0 -1
  223. package/src/lib/nest/function/v1/call.d.ts +0 -59
  224. package/src/lib/nest/function/v1/call.js +0 -55
  225. package/src/lib/nest/function/v1/call.js.map +0 -1
  226. package/src/lib/nest/function/v1/event.d.ts +0 -80
  227. package/src/lib/nest/function/v1/event.js +0 -52
  228. package/src/lib/nest/function/v1/event.js.map +0 -1
  229. package/src/lib/nest/function/v1/index.d.ts +0 -3
  230. package/src/lib/nest/function/v1/index.js +0 -7
  231. package/src/lib/nest/function/v1/index.js.map +0 -1
  232. package/src/lib/nest/function/v1/schedule.d.ts +0 -47
  233. package/src/lib/nest/function/v1/schedule.js +0 -68
  234. package/src/lib/nest/function/v1/schedule.js.map +0 -1
  235. package/src/lib/nest/function/v2/blocking.js +0 -38
  236. package/src/lib/nest/function/v2/blocking.js.map +0 -1
  237. package/src/lib/nest/function/v2/call.js +0 -31
  238. package/src/lib/nest/function/v2/call.js.map +0 -1
  239. package/src/lib/nest/function/v2/event.js +0 -25
  240. package/src/lib/nest/function/v2/event.js.map +0 -1
  241. package/src/lib/nest/function/v2/index.js +0 -9
  242. package/src/lib/nest/function/v2/index.js.map +0 -1
  243. package/src/lib/nest/function/v2/schedule.js +0 -56
  244. package/src/lib/nest/function/v2/schedule.js.map +0 -1
  245. package/src/lib/nest/function/v2/taskqueue.js +0 -26
  246. package/src/lib/nest/function/v2/taskqueue.js.map +0 -1
  247. package/src/lib/nest/index.js +0 -15
  248. package/src/lib/nest/index.js.map +0 -1
  249. package/src/lib/nest/middleware/appcheck.decorator.js +0 -12
  250. package/src/lib/nest/middleware/appcheck.decorator.js.map +0 -1
  251. package/src/lib/nest/middleware/appcheck.js +0 -3
  252. package/src/lib/nest/middleware/appcheck.js.map +0 -1
  253. package/src/lib/nest/middleware/appcheck.middleware.js +0 -74
  254. package/src/lib/nest/middleware/appcheck.middleware.js.map +0 -1
  255. package/src/lib/nest/middleware/appcheck.module.js +0 -21
  256. package/src/lib/nest/middleware/appcheck.module.js.map +0 -1
  257. package/src/lib/nest/middleware/globalprefix.js +0 -11
  258. package/src/lib/nest/middleware/globalprefix.js.map +0 -1
  259. package/src/lib/nest/middleware/index.js +0 -10
  260. package/src/lib/nest/middleware/index.js.map +0 -1
  261. package/src/lib/nest/middleware/rawbody.middleware.js +0 -16
  262. package/src/lib/nest/middleware/rawbody.middleware.js.map +0 -1
  263. package/src/lib/nest/middleware/webhook.js +0 -24
  264. package/src/lib/nest/middleware/webhook.js.map +0 -1
  265. package/src/lib/nest/model/call.model.function.js +0 -73
  266. package/src/lib/nest/model/call.model.function.js.map +0 -1
  267. package/src/lib/nest/model/create.model.function.js +0 -27
  268. package/src/lib/nest/model/create.model.function.js.map +0 -1
  269. package/src/lib/nest/model/crud.assert.function.js +0 -3
  270. package/src/lib/nest/model/crud.assert.function.js.map +0 -1
  271. package/src/lib/nest/model/delete.model.function.js +0 -27
  272. package/src/lib/nest/model/delete.model.function.js.map +0 -1
  273. package/src/lib/nest/model/index.js +0 -11
  274. package/src/lib/nest/model/index.js.map +0 -1
  275. package/src/lib/nest/model/permission.error.js +0 -24
  276. package/src/lib/nest/model/permission.error.js.map +0 -1
  277. package/src/lib/nest/model/read.model.function.js +0 -27
  278. package/src/lib/nest/model/read.model.function.js.map +0 -1
  279. package/src/lib/nest/model/specifier.function.js +0 -35
  280. package/src/lib/nest/model/specifier.function.js.map +0 -1
  281. package/src/lib/nest/model/update.model.function.js +0 -27
  282. package/src/lib/nest/model/update.model.function.js.map +0 -1
  283. package/src/lib/nest/nest.provider.js +0 -89
  284. package/src/lib/nest/nest.provider.js.map +0 -1
  285. package/src/lib/nest/storage/index.js +0 -5
  286. package/src/lib/nest/storage/index.js.map +0 -1
  287. package/src/lib/nest/storage/storage.module.js +0 -112
  288. package/src/lib/nest/storage/storage.module.js.map +0 -1
  289. package/src/lib/storage/driver.accessor.js +0 -299
  290. package/src/lib/storage/driver.accessor.js.map +0 -1
  291. package/src/lib/storage/driver.js +0 -12
  292. package/src/lib/storage/driver.js.map +0 -1
  293. package/src/lib/storage/index.js +0 -8
  294. package/src/lib/storage/index.js.map +0 -1
  295. package/src/lib/storage/storage.js +0 -20
  296. package/src/lib/storage/storage.js.map +0 -1
  297. package/src/lib/storage/storage.service.js +0 -26
  298. package/src/lib/storage/storage.service.js.map +0 -1
  299. package/test/src/index.js +0 -5
  300. package/test/src/index.js.map +0 -1
  301. package/test/src/lib/firebase/firebase.admin.auth.js +0 -260
  302. package/test/src/lib/firebase/firebase.admin.auth.js.map +0 -1
  303. package/test/src/lib/firebase/firebase.admin.collection.js +0 -108
  304. package/test/src/lib/firebase/firebase.admin.collection.js.map +0 -1
  305. package/test/src/lib/firebase/firebase.admin.function.js +0 -132
  306. package/test/src/lib/firebase/firebase.admin.function.js.map +0 -1
  307. package/test/src/lib/firebase/firebase.admin.js +0 -174
  308. package/test/src/lib/firebase/firebase.admin.js.map +0 -1
  309. package/test/src/lib/firebase/firebase.admin.nest.function.callable.context.js +0 -42
  310. package/test/src/lib/firebase/firebase.admin.nest.function.callable.context.js.map +0 -1
  311. package/test/src/lib/firebase/firebase.admin.nest.function.cloud.context.js +0 -40
  312. package/test/src/lib/firebase/firebase.admin.nest.function.cloud.context.js.map +0 -1
  313. package/test/src/lib/firebase/firebase.admin.nest.function.js +0 -64
  314. package/test/src/lib/firebase/firebase.admin.nest.function.js.map +0 -1
  315. package/test/src/lib/firebase/firebase.admin.nest.js +0 -107
  316. package/test/src/lib/firebase/firebase.admin.nest.js.map +0 -1
  317. package/test/src/lib/firebase/firebase.admin.test.server.js +0 -37
  318. package/test/src/lib/firebase/firebase.admin.test.server.js.map +0 -1
  319. package/test/src/lib/firebase/firebase.function.js +0 -58
  320. package/test/src/lib/firebase/firebase.function.js.map +0 -1
  321. package/test/src/lib/firebase/firebase.jest.d.ts +0 -21
  322. package/test/src/lib/firebase/firebase.jest.js +0 -45
  323. package/test/src/lib/firebase/firebase.jest.js.map +0 -1
  324. package/test/src/lib/firebase/firebase.js +0 -74
  325. package/test/src/lib/firebase/firebase.js.map +0 -1
  326. package/test/src/lib/firebase/index.js +0 -15
  327. package/test/src/lib/firebase/index.js.map +0 -1
  328. package/test/src/lib/firestore/firestore.admin.js +0 -21
  329. package/test/src/lib/firestore/firestore.admin.js.map +0 -1
  330. package/test/src/lib/firestore/firestore.js +0 -57
  331. package/test/src/lib/firestore/firestore.js.map +0 -1
  332. package/test/src/lib/firestore/index.js +0 -6
  333. package/test/src/lib/firestore/index.js.map +0 -1
  334. package/test/src/lib/index.js +0 -7
  335. package/test/src/lib/index.js.map +0 -1
  336. package/test/src/lib/storage/index.js +0 -6
  337. package/test/src/lib/storage/index.js.map +0 -1
  338. package/test/src/lib/storage/storage.admin.js +0 -21
  339. package/test/src/lib/storage/storage.admin.js.map +0 -1
  340. package/test/src/lib/storage/storage.js +0 -59
  341. package/test/src/lib/storage/storage.js.map +0 -1
  342. /package/{zoho/index.cjs.d.ts → index.d.ts} +0 -0
  343. /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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"}