@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,260 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testUidFactory = exports.AUTHORIZED_USER_RANDOM_PHONE_NUMBER_FACTORY = exports.AUTHORIZED_USER_RANDOM_EMAIL_FACTORY = exports.AuthorizedUserTestContextInstance = exports.AuthorizedUserTestContextFixture = void 0;
4
- exports.authorizedUserContext = authorizedUserContext;
5
- exports.authorizedUserContextFactory = authorizedUserContextFactory;
6
- exports.createTestFunctionContextOptions = createTestFunctionContextOptions;
7
- exports.createTestFunctionContextAuthData = createTestFunctionContextAuthData;
8
- exports.createTestFirestoreTokenForUserRecord = createTestFirestoreTokenForUserRecord;
9
- exports.createEncodedTestFirestoreTokenForUserRecord = createEncodedTestFirestoreTokenForUserRecord;
10
- exports.decodeEncodedCreateCustomTokenResult = decodeEncodedCreateCustomTokenResult;
11
- exports.testFirestoreClaimsFromUserRecord = testFirestoreClaimsFromUserRecord;
12
- const util_1 = require("@dereekb/util");
13
- const test_1 = require("@dereekb/util/test");
14
- const jsonwebtoken_1 = require("jsonwebtoken");
15
- class AuthorizedUserTestContextFixture extends test_1.AbstractChildJestTestContextFixture {
16
- // MARK: AuthorizedUserTestContext (Forwarded)
17
- get uid() {
18
- return this.instance.uid;
19
- }
20
- loadUserRecord() {
21
- return this.instance.loadUserRecord();
22
- }
23
- loadUserEmailAndPhone() {
24
- return this.instance.loadUserEmailAndPhone();
25
- }
26
- loadIdToken() {
27
- return this.instance.loadIdToken();
28
- }
29
- loadDecodedIdToken() {
30
- return this.instance.loadDecodedIdToken();
31
- }
32
- makeContextOptions() {
33
- return this.instance.makeContextOptions();
34
- }
35
- callWrappedFunction(fn, params, skipJsonConversion) {
36
- return this.instance.callWrappedFunction(fn, params, skipJsonConversion);
37
- }
38
- callCloudFunction(fn, params, skipJsonConversion = false) {
39
- return this.instance.callCloudFunction(fn, params, skipJsonConversion);
40
- }
41
- }
42
- exports.AuthorizedUserTestContextFixture = AuthorizedUserTestContextFixture;
43
- function convertParamsToParsedJsonObjectAndBack(object) {
44
- const paramsAsJson = JSON.parse(JSON.stringify(object));
45
- return paramsAsJson;
46
- }
47
- class AuthorizedUserTestContextInstance {
48
- uid;
49
- testContext;
50
- constructor(uid, testContext) {
51
- this.uid = uid;
52
- this.testContext = testContext;
53
- }
54
- loadUserRecord() {
55
- return this.testContext.auth.getUser(this.uid);
56
- }
57
- async loadUserEmailAndPhone() {
58
- const record = await this.loadUserRecord();
59
- return {
60
- email: record.email,
61
- phone: record.phoneNumber
62
- };
63
- }
64
- loadIdToken() {
65
- return this.loadUserRecord().then((record) => createEncodedTestFirestoreTokenForUserRecord(this.testContext.auth, record));
66
- }
67
- loadDecodedIdToken() {
68
- return this.loadIdToken().then(decodeEncodedCreateCustomTokenResult);
69
- }
70
- makeContextOptions() {
71
- return this.loadUserRecord().then((record) => createTestFunctionContextOptions(this.testContext.auth, record));
72
- }
73
- /**
74
- * Calls a wrapped function with the input params and the context from makeContextOptions().
75
- *
76
- * @param fn
77
- * @param params
78
- * @param skipJsonConversion
79
- */
80
- callWrappedFunction(fn, params, skipJsonConversion) {
81
- // Parse to JSON then back to simulate sending JSON to the server, and the server parsing it as a POJO.
82
- const parsedParams = params == null || skipJsonConversion ? params : convertParamsToParsedJsonObjectAndBack(params);
83
- return this.makeContextOptions().then((options) => fn(parsedParams, options));
84
- }
85
- callCloudFunction(fn, params, skipJsonConversion = false) {
86
- if (params != null && params.scheduleTime) {
87
- // Workaround for https://github.com/firebase/firebase-functions-test/issues/210
88
- const scheduleTime = params.scheduleTime;
89
- delete params.scheduleTime;
90
- params.timestamp = scheduleTime;
91
- }
92
- return this.callWrappedFunction(fn, params, skipJsonConversion);
93
- }
94
- /**
95
- * @deprecated gen 1
96
- *
97
- * @param fn
98
- * @param params
99
- * @param contextOptions
100
- * @param skipJsonConversion
101
- * @returns
102
- */
103
- callEventCloudFunction(fn, params, contextOptions, skipJsonConversion = false) {
104
- const parsedParams = params == null || skipJsonConversion ? params : convertParamsToParsedJsonObjectAndBack(params);
105
- return this.makeContextOptions().then((options) => fn(parsedParams, contextOptions ? { ...contextOptions, ...options } : options));
106
- }
107
- }
108
- exports.AuthorizedUserTestContextInstance = AuthorizedUserTestContextInstance;
109
- /**
110
- * Convenience function for using authorizedUserContextFactory directly and passing buildTests.
111
- */
112
- function authorizedUserContext(config, buildTests) {
113
- authorizedUserContextFactory(config)({ f: config.f }, buildTests);
114
- }
115
- exports.AUTHORIZED_USER_RANDOM_EMAIL_FACTORY = (0, util_1.randomEmailFactory)();
116
- exports.AUTHORIZED_USER_RANDOM_PHONE_NUMBER_FACTORY = (0, util_1.randomPhoneNumberFactory)();
117
- /**
118
- * Creates a new Jest Context that has a random user for authorization for use in firebase server tests.
119
- */
120
- function authorizedUserContextFactory(config) {
121
- const { uid: uidGetter, makeInstance = (uid, testInstance) => new AuthorizedUserTestContextInstance(uid, testInstance), makeFixture = (f) => new AuthorizedUserTestContextFixture(f), makeUserDetails = () => ({}), initUser } = config;
122
- const makeUid = uidGetter ? (0, util_1.asGetter)(uidGetter) : exports.testUidFactory;
123
- return (params, buildTests) => {
124
- const { f, user: inputUserGetterOrValue, addContactInfo: inputAddContactInfoGetterOrValue, template: inputTemplateGetterOrValue } = params;
125
- const inputAddContactInfoGetter = (0, util_1.asGetter)(inputAddContactInfoGetterOrValue);
126
- const inputUserGetter = (0, util_1.asGetter)(inputUserGetterOrValue);
127
- const templateGetter = (0, util_1.asGetter)(inputTemplateGetterOrValue);
128
- return (0, test_1.useJestContextFixture)({
129
- fixture: makeFixture(f),
130
- buildTests,
131
- initInstance: async () => {
132
- const inputAddContactInfo = await inputAddContactInfoGetter();
133
- const inputUser = await inputUserGetter();
134
- const inputTemplate = await templateGetter();
135
- const uid = inputUser?.uid || makeUid();
136
- const { details, claims, addContactInfo: userDetailsAddContactInfo } = { ...makeUserDetails(uid, params), ...inputTemplate };
137
- const { phoneNumber: detailsPhoneNumber, email: detailsEmail } = details ?? {}; // keep details if provided
138
- const addContactInfo = inputAddContactInfo || userDetailsAddContactInfo;
139
- const auth = f.instance.auth;
140
- let email;
141
- let phoneNumber;
142
- if (addContactInfo) {
143
- email = detailsEmail ?? (0, exports.AUTHORIZED_USER_RANDOM_EMAIL_FACTORY)();
144
- phoneNumber = detailsPhoneNumber ?? (0, exports.AUTHORIZED_USER_RANDOM_PHONE_NUMBER_FACTORY)();
145
- }
146
- else {
147
- email = detailsEmail;
148
- phoneNumber = detailsPhoneNumber ?? undefined;
149
- }
150
- const userRecord = await auth.createUser({
151
- uid,
152
- displayName: 'Test Person',
153
- ...details,
154
- email,
155
- phoneNumber,
156
- ...inputUser
157
- });
158
- if (claims) {
159
- await auth.setCustomUserClaims(uid, claims);
160
- }
161
- const instance = await makeInstance(uid, f.instance, params, userRecord);
162
- if (initUser) {
163
- await initUser(instance, params);
164
- }
165
- return instance;
166
- },
167
- destroyInstance: async (instance) => {
168
- const app = instance.testContext.app;
169
- const uid = instance.uid;
170
- await app.auth().deleteUser(uid);
171
- }
172
- });
173
- };
174
- }
175
- /**
176
- * Incrementing number factory for generating test UID values.
177
- *
178
- * Has the format 'test-uid-<number>'
179
- */
180
- exports.testUidFactory = (0, util_1.mapGetter)((0, util_1.incrementingNumberFactory)(), (i) => `${new Date().getTime()}0${i}`);
181
- /**
182
- * Creates a CallableContextOptions with auth attached corresponding to the input UserRecord.
183
- *
184
- * @param auth
185
- * @param userRecord
186
- * @returns
187
- */
188
- async function createTestFunctionContextOptions(auth, userRecord) {
189
- const authData = await createTestFunctionContextAuthData(auth, userRecord);
190
- const contextOptions = {
191
- auth: authData
192
- };
193
- return contextOptions;
194
- }
195
- /**
196
- * Creates AuthData from the input auth and user record.
197
- *
198
- * @param auth
199
- * @param userRecord
200
- * @returns
201
- */
202
- async function createTestFunctionContextAuthData(auth, userRecord) {
203
- const token = await createTestFirestoreTokenForUserRecord(auth, userRecord);
204
- const authData = {
205
- uid: token.uid,
206
- token
207
- };
208
- return authData;
209
- }
210
- /**
211
- * Creates and decodes a firestore token used for testing.
212
- *
213
- * @param auth
214
- * @param userRecord
215
- * @returns
216
- */
217
- function createTestFirestoreTokenForUserRecord(auth, userRecord) {
218
- return createEncodedTestFirestoreTokenForUserRecord(auth, userRecord).then(decodeEncodedCreateCustomTokenResult);
219
- }
220
- /**
221
- * Creates an encoded firestore token used for testing.
222
- *
223
- * @param auth
224
- * @param userRecord
225
- * @returns
226
- */
227
- function createEncodedTestFirestoreTokenForUserRecord(auth, userRecord) {
228
- // TODO: Consider replacing createCustomToken, as the custom claims are put into an object called claims in the JWT, instead of spread over. The decodeEncodedCreateCustomTokenResult() function handles this issue, but it may not be expected.
229
- return auth.createCustomToken(userRecord.uid, testFirestoreClaimsFromUserRecord(userRecord));
230
- }
231
- function decodeEncodedCreateCustomTokenResult(token) {
232
- const decoded = (0, jsonwebtoken_1.decode)(token);
233
- const decodedToken = {
234
- ...decoded,
235
- ...decoded.claims,
236
- auth_time: decoded.iat,
237
- firebase: decoded.claims?.firebase ?? {}
238
- };
239
- delete decodedToken.claims; // remove the "claims" item if it exists.
240
- return decodedToken;
241
- }
242
- function testFirestoreClaimsFromUserRecord(userRecord) {
243
- // Copy claims to be similar to DecodedIdToken pieces.
244
- const baseClaims = {
245
- picture: userRecord.photoURL,
246
- email: userRecord.email,
247
- email_verified: userRecord.emailVerified ?? false,
248
- firebase: {
249
- sign_in_provider: '@dereekb/firebase-server/test',
250
- identities: []
251
- }
252
- };
253
- const customClaims = userRecord.customClaims;
254
- const claims = {
255
- ...customClaims,
256
- ...baseClaims
257
- };
258
- return claims;
259
- }
260
- //# sourceMappingURL=firebase.admin.auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"firebase.admin.auth.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/test/src/lib/firebase/firebase.admin.auth.ts"],"names":[],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModelTestContextInstance = exports.ModelTestContextFixture = void 0;
4
- exports.modelTestContextFactory = modelTestContextFactory;
5
- const firebase_1 = require("@dereekb/firebase");
6
- const util_1 = require("@dereekb/util");
7
- const test_1 = require("@dereekb/util/test");
8
- class ModelTestContextFixture extends test_1.AbstractChildJestTestContextFixture {
9
- // MARK: ModelTestContext (Forwarded)
10
- get documentId() {
11
- return this.instance.documentId;
12
- }
13
- get documentKey() {
14
- return this.instance.documentKey;
15
- }
16
- get documentFlatKey() {
17
- return this.instance.documentFlatKey;
18
- }
19
- get documentTwoWayFlatKey() {
20
- return this.instance.documentTwoWayFlatKey;
21
- }
22
- get documentRef() {
23
- return this.instance.documentRef;
24
- }
25
- get document() {
26
- return this.instance.document;
27
- }
28
- }
29
- exports.ModelTestContextFixture = ModelTestContextFixture;
30
- class ModelTestContextInstance {
31
- collection;
32
- ref;
33
- testContext;
34
- constructor(collection, ref, testContext) {
35
- this.collection = collection;
36
- this.ref = ref;
37
- this.testContext = testContext;
38
- }
39
- get documentId() {
40
- return this.ref.id;
41
- }
42
- get documentKey() {
43
- return this.ref.path;
44
- }
45
- get documentFlatKey() {
46
- return (0, firebase_1.flatFirestoreModelKey)(this.documentKey);
47
- }
48
- get documentTwoWayFlatKey() {
49
- return (0, firebase_1.twoWayFlatFirestoreModelKey)(this.documentKey);
50
- }
51
- get documentRef() {
52
- return this.ref;
53
- }
54
- get document() {
55
- return this.collection.documentAccessor().loadDocument(this.ref);
56
- }
57
- }
58
- exports.ModelTestContextInstance = ModelTestContextInstance;
59
- /**
60
- * Creates a new Jest Context that has a random user for authorization for use in firebase server tests.
61
- */
62
- function modelTestContextFactory(config) {
63
- const { getCollection, collectionForDocument, makeRef = (collection) => {
64
- const accessor = collection.documentAccessor();
65
- if (accessor.newDocument == null) {
66
- throw new Error('collection passed to makeRef() was not a full FirestoreCollection. Either supply a custom makeRef() function or a FirestoreCollection that has newDocument() available on the documentAccessor.');
67
- }
68
- return accessor.newDocument().documentRef;
69
- }, makeInstance = (collection, ref, testInstance) => new ModelTestContextInstance(collection, ref, testInstance), makeFixture = (f) => new ModelTestContextFixture(f), initDocument, destroyInstance } = config;
70
- return (params, buildTests) => {
71
- const { f } = params;
72
- return (0, test_1.useJestContextFixture)({
73
- fixture: makeFixture(f),
74
- buildTests,
75
- initInstance: async () => {
76
- const parentInstance = f.instance;
77
- let ref;
78
- let collection;
79
- let init;
80
- if (params.doc) {
81
- const doc = await (0, util_1.getValueFromGetter)(params.doc);
82
- if (!collectionForDocument) {
83
- throw new Error('collectionForDocument() is required when using ModelTestContextDocumentRefParams values as input.');
84
- }
85
- collection = collectionForDocument(parentInstance, doc);
86
- const expectedCollectionName = collection.documentAccessor().modelIdentity.collectionName;
87
- if (expectedCollectionName !== doc.modelIdentity.collectionName) {
88
- throw new Error(`Input doc is in a different collection (${doc.modelIdentity.collectionName}) than expected (${expectedCollectionName}).`);
89
- }
90
- ref = doc.documentRef;
91
- init = false;
92
- }
93
- else {
94
- collection = getCollection(parentInstance, params);
95
- ref = await makeRef(collection, params, parentInstance);
96
- init = true;
97
- }
98
- const instance = await makeInstance(collection, ref, parentInstance);
99
- if (init && initDocument) {
100
- await initDocument(instance, params);
101
- }
102
- return instance;
103
- },
104
- destroyInstance
105
- });
106
- };
107
- }
108
- //# sourceMappingURL=firebase.admin.collection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"firebase.admin.collection.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/test/src/lib/firebase/firebase.admin.collection.ts"],"names":[],"mappings":"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"}
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.firebaseAdminFunctionTestContextFactory = exports.firebaseAdminFunctionTestBuilder = exports.DEFAULT_FIREBASE_ADMIN_FUNCTION_TEST_USE_FUNCTION_SINGLETON_CONTEXT = exports.FirebaseAdminFunctionTestContextInstance = exports.FirebaseAdminFunctionTestContextFixture = void 0;
4
- exports.setupFirebaseAdminFunctionTestSingleton = setupFirebaseAdminFunctionTestSingleton;
5
- exports.rerollFirebaseAdminFunctionTestSingleton = rerollFirebaseAdminFunctionTestSingleton;
6
- exports.setDefaultFirebaseAdminFunctionTestUseFunctionSingleton = setDefaultFirebaseAdminFunctionTestUseFunctionSingleton;
7
- const admin = require("firebase-admin");
8
- const functions = require("firebase-functions-test");
9
- const test_1 = require("@dereekb/util/test");
10
- const firebase_1 = require("./firebase");
11
- const firebase_admin_1 = require("./firebase.admin");
12
- const util_1 = require("@dereekb/util");
13
- const firebase_function_1 = require("./firebase.function");
14
- // MARK: FirebaseAdminFunctionTestBuilder
15
- let functionsInitialized = false;
16
- /**
17
- * firebase-functions-test uses a singleton internally, so we must track the reference to properly tear it down too.
18
- */
19
- let firebaseFunctionsTestInstance;
20
- function setupFirebaseAdminFunctionTestSingleton(reroll = false) {
21
- if (!(0, firebase_1.isAdminEnvironmentInitialized)()) {
22
- throw new Error('initFirebaseAdminTestEnvironment() was not called.');
23
- }
24
- if (firebaseFunctionsTestInstance) {
25
- firebaseFunctionsTestInstance.cleanup(); // destroy the old instance if it is up.
26
- }
27
- firebaseFunctionsTestInstance = functions();
28
- if (reroll) {
29
- (0, firebase_1.rollNewGCloudProjectEnvironmentVariable)();
30
- }
31
- else {
32
- (0, firebase_1.applyFirebaseGCloudTestProjectIdToFirebaseConfigEnv)();
33
- }
34
- functionsInitialized = true;
35
- return firebaseFunctionsTestInstance;
36
- }
37
- function rerollFirebaseAdminFunctionTestSingleton() {
38
- return setupFirebaseAdminFunctionTestSingleton(true);
39
- }
40
- class FirebaseAdminFunctionTestContextFixture extends test_1.AbstractJestTestContextFixture {
41
- // MARK: FirebaseAdminTestContext (Forwarded)
42
- get app() {
43
- return this.instance.app;
44
- }
45
- get auth() {
46
- return this.instance.auth;
47
- }
48
- get firestore() {
49
- return this.instance.firestore;
50
- }
51
- get firestoreInstance() {
52
- return this.instance.firestoreInstance;
53
- }
54
- get firestoreContext() {
55
- return this.instance.firestoreContext;
56
- }
57
- get storage() {
58
- return this.instance.storage;
59
- }
60
- get storageInstance() {
61
- return this.instance.storageInstance;
62
- }
63
- get storageContext() {
64
- return this.instance.storageContext;
65
- }
66
- get fnWrapper() {
67
- return this.instance.fnWrapper;
68
- }
69
- }
70
- exports.FirebaseAdminFunctionTestContextFixture = FirebaseAdminFunctionTestContextFixture;
71
- class FirebaseAdminFunctionTestContextInstance extends firebase_admin_1.FirebaseAdminTestContextInstance {
72
- instance;
73
- _fnWrapper = (0, util_1.cachedGetter)(() => (0, firebase_function_1.firebaseAdminCloudFunctionWrapper)(this.instance));
74
- constructor(instance, app) {
75
- super(app);
76
- this.instance = instance;
77
- }
78
- get fnWrapper() {
79
- return this._fnWrapper();
80
- }
81
- }
82
- exports.FirebaseAdminFunctionTestContextInstance = FirebaseAdminFunctionTestContextInstance;
83
- exports.DEFAULT_FIREBASE_ADMIN_FUNCTION_TEST_USE_FUNCTION_SINGLETON_CONTEXT = false;
84
- function setDefaultFirebaseAdminFunctionTestUseFunctionSingleton(use) {
85
- exports.DEFAULT_FIREBASE_ADMIN_FUNCTION_TEST_USE_FUNCTION_SINGLETON_CONTEXT = use;
86
- }
87
- /**
88
- * A JestTestContextBuilderFunction for building firebase test context factories using firebase-admin.
89
- *
90
- * This can be used to easily build a testing context that sets up RulesTestEnvironment for tests that sets itself up and tears itself down.
91
- */
92
- exports.firebaseAdminFunctionTestBuilder = (0, test_1.jestTestContextBuilder)({
93
- buildConfig: (input) => {
94
- const config = {
95
- ...input,
96
- useFunctionSingletonContext: input?.useFunctionSingletonContext ?? exports.DEFAULT_FIREBASE_ADMIN_FUNCTION_TEST_USE_FUNCTION_SINGLETON_CONTEXT
97
- };
98
- return config;
99
- },
100
- buildFixture: () => new FirebaseAdminFunctionTestContextFixture(),
101
- setupInstance: async (config) => {
102
- if (!(0, firebase_1.isAdminEnvironmentInitialized)()) {
103
- throw new Error('initFirebaseAdminTestEnvironment() (in @dereekb/firebase-server package) was not called before using adminFirebaseTestBuilder().');
104
- }
105
- if (config.useFunctionSingletonContext) {
106
- if (!functionsInitialized) {
107
- throw new Error('Call setupFirebaseAdminFunctionTestSingleton() (in @dereekb/firebase-server package) if using functions in a singleton context (useFunctionSingletonContext = true/undefined).');
108
- }
109
- }
110
- else if (config.useFunctionSingletonContext === false) {
111
- firebaseFunctionsTestInstance = rerollFirebaseAdminFunctionTestSingleton();
112
- }
113
- const projectId = (0, firebase_1.getGCloudTestProjectId)();
114
- const storageBucket = 'b-' + projectId;
115
- const app = admin.initializeApp({ projectId, storageBucket });
116
- return new FirebaseAdminFunctionTestContextInstance(firebaseFunctionsTestInstance, app);
117
- },
118
- teardownInstance: async (instance, config) => {
119
- if (config.useFunctionSingletonContext === false) {
120
- try {
121
- await instance.app.delete(); // will be called in cleanup
122
- firebaseFunctionsTestInstance.cleanup();
123
- }
124
- catch (e) {
125
- // do nothing
126
- }
127
- firebaseFunctionsTestInstance = undefined;
128
- }
129
- }
130
- });
131
- exports.firebaseAdminFunctionTestContextFactory = (0, exports.firebaseAdminFunctionTestBuilder)({});
132
- //# sourceMappingURL=firebase.admin.function.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"firebase.admin.function.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/test/src/lib/firebase/firebase.admin.function.ts"],"names":[],"mappings":"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"}