@budibase/worker 2.2.26 → 2.2.27-alpha.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 (172) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/node-fetch.ts +23 -0
  3. package/coverage/clover.xml +1423 -1379
  4. package/coverage/coverage-final.json +83 -77
  5. package/coverage/lcov-report/index.html +140 -140
  6. package/coverage/lcov-report/src/api/controllers/global/auth.ts.html +52 -52
  7. package/coverage/lcov-report/src/api/controllers/global/configs.ts.html +167 -224
  8. package/coverage/lcov-report/src/api/controllers/global/email.ts.html +4 -4
  9. package/coverage/lcov-report/src/api/controllers/global/events.ts.html +136 -0
  10. package/coverage/lcov-report/src/api/controllers/global/index.html +83 -68
  11. package/coverage/lcov-report/src/api/controllers/global/license.ts.html +16 -16
  12. package/coverage/lcov-report/src/api/controllers/global/roles.ts.html +69 -69
  13. package/coverage/lcov-report/src/api/controllers/global/self.ts.html +20 -20
  14. package/coverage/lcov-report/src/api/controllers/global/templates.ts.html +54 -54
  15. package/coverage/lcov-report/src/api/controllers/global/users.ts.html +83 -44
  16. package/coverage/lcov-report/src/api/controllers/global/workspaces.ts.html +9 -9
  17. package/coverage/lcov-report/src/api/controllers/system/accounts.ts.html +5 -5
  18. package/coverage/lcov-report/src/api/controllers/system/environment.ts.html +4 -4
  19. package/coverage/lcov-report/src/api/controllers/system/index.html +11 -11
  20. package/coverage/lcov-report/src/api/controllers/system/migrations.ts.html +5 -5
  21. package/coverage/lcov-report/src/api/controllers/system/restore.ts.html +4 -4
  22. package/coverage/lcov-report/src/api/controllers/system/status.ts.html +5 -5
  23. package/coverage/lcov-report/src/api/controllers/system/tenants.ts.html +7 -7
  24. package/coverage/lcov-report/src/api/index.html +1 -1
  25. package/coverage/lcov-report/src/api/index.ts.html +42 -30
  26. package/coverage/lcov-report/src/api/routes/global/auth.ts.html +14 -14
  27. package/coverage/lcov-report/src/api/routes/global/configs.ts.html +25 -25
  28. package/coverage/lcov-report/src/api/routes/global/email.ts.html +13 -13
  29. package/coverage/lcov-report/src/api/routes/global/events.ts.html +109 -0
  30. package/coverage/lcov-report/src/api/routes/global/index.html +37 -22
  31. package/coverage/lcov-report/src/api/routes/global/license.ts.html +9 -9
  32. package/coverage/lcov-report/src/api/routes/global/roles.ts.html +10 -10
  33. package/coverage/lcov-report/src/api/routes/global/self.ts.html +11 -11
  34. package/coverage/lcov-report/src/api/routes/global/templates.ts.html +14 -14
  35. package/coverage/lcov-report/src/api/routes/global/users.ts.html +62 -20
  36. package/coverage/lcov-report/src/api/routes/global/workspaces.ts.html +12 -12
  37. package/coverage/lcov-report/src/api/routes/index.html +7 -7
  38. package/coverage/lcov-report/src/api/routes/index.ts.html +29 -23
  39. package/coverage/lcov-report/src/api/routes/system/accounts.ts.html +10 -10
  40. package/coverage/lcov-report/src/api/routes/system/environment.ts.html +9 -9
  41. package/coverage/lcov-report/src/api/routes/system/index.html +15 -15
  42. package/coverage/lcov-report/src/api/routes/system/migrations.ts.html +10 -10
  43. package/coverage/lcov-report/src/api/routes/system/restore.ts.html +9 -9
  44. package/coverage/lcov-report/src/api/routes/system/status.ts.html +9 -9
  45. package/coverage/lcov-report/src/api/routes/system/tenants.ts.html +10 -10
  46. package/coverage/lcov-report/src/api/routes/validation/index.html +3 -3
  47. package/coverage/lcov-report/src/api/routes/validation/index.ts.html +2 -2
  48. package/coverage/lcov-report/src/api/routes/validation/users.ts.html +14 -14
  49. package/coverage/lcov-report/src/constants/index.html +17 -17
  50. package/coverage/lcov-report/src/constants/index.ts.html +77 -53
  51. package/coverage/lcov-report/src/constants/templates/index.html +18 -18
  52. package/coverage/lcov-report/src/constants/templates/index.ts.html +42 -42
  53. package/coverage/lcov-report/src/db/index.html +17 -17
  54. package/coverage/lcov-report/src/db/index.ts.html +18 -18
  55. package/coverage/lcov-report/src/environment.ts.html +45 -30
  56. package/coverage/lcov-report/src/index.html +27 -27
  57. package/coverage/lcov-report/src/index.ts.html +55 -55
  58. package/coverage/lcov-report/src/middleware/cloudRestricted.ts.html +5 -5
  59. package/coverage/lcov-report/src/middleware/index.html +1 -1
  60. package/coverage/lcov-report/src/migrations/functions/globalInfoSyncUsers.ts.html +9 -9
  61. package/coverage/lcov-report/src/migrations/functions/index.html +11 -11
  62. package/coverage/lcov-report/src/migrations/index.html +15 -15
  63. package/coverage/lcov-report/src/migrations/index.ts.html +27 -27
  64. package/coverage/lcov-report/src/sdk/accounts/accounts.ts.html +13 -13
  65. package/coverage/lcov-report/src/sdk/accounts/index.html +13 -13
  66. package/coverage/lcov-report/src/sdk/accounts/index.ts.html +2 -2
  67. package/coverage/lcov-report/src/sdk/index.html +5 -5
  68. package/coverage/lcov-report/src/sdk/index.ts.html +6 -6
  69. package/coverage/lcov-report/src/sdk/users/events.ts.html +82 -58
  70. package/coverage/lcov-report/src/sdk/users/index.html +28 -28
  71. package/coverage/lcov-report/src/sdk/users/index.ts.html +2 -2
  72. package/coverage/lcov-report/src/sdk/users/users.ts.html +174 -120
  73. package/coverage/lcov-report/src/tests/TestConfiguration.ts.html +221 -107
  74. package/coverage/lcov-report/src/tests/api/accounts.ts.html +7 -7
  75. package/coverage/lcov-report/src/tests/api/auth.ts.html +25 -13
  76. package/coverage/lcov-report/src/tests/api/base.ts.html +5 -5
  77. package/coverage/lcov-report/src/tests/api/configs.ts.html +11 -11
  78. package/coverage/lcov-report/src/tests/api/email.ts.html +6 -6
  79. package/coverage/lcov-report/src/tests/api/environment.ts.html +6 -6
  80. package/coverage/lcov-report/src/tests/api/groups.ts.html +163 -0
  81. package/coverage/lcov-report/src/tests/api/index.html +91 -31
  82. package/coverage/lcov-report/src/tests/api/index.ts.html +62 -29
  83. package/coverage/lcov-report/src/tests/api/license.ts.html +136 -0
  84. package/coverage/lcov-report/src/tests/api/migrations.ts.html +8 -8
  85. package/coverage/lcov-report/src/tests/api/restore.ts.html +7 -7
  86. package/coverage/lcov-report/src/tests/api/roles.ts.html +181 -0
  87. package/coverage/lcov-report/src/tests/api/self.ts.html +7 -7
  88. package/coverage/lcov-report/src/tests/api/status.ts.html +6 -6
  89. package/coverage/lcov-report/src/tests/api/templates.ts.html +175 -0
  90. package/coverage/lcov-report/src/tests/api/tenants.ts.html +10 -10
  91. package/coverage/lcov-report/src/tests/api/users.ts.html +30 -27
  92. package/coverage/lcov-report/src/tests/controllers.ts.html +14 -14
  93. package/coverage/lcov-report/src/tests/index.html +34 -34
  94. package/coverage/lcov-report/src/tests/index.ts.html +19 -55
  95. package/coverage/lcov-report/src/tests/mocks/{email.js.html → email.ts.html} +5 -5
  96. package/coverage/lcov-report/src/tests/mocks/index.html +6 -6
  97. package/coverage/lcov-report/src/tests/mocks/index.ts.html +10 -10
  98. package/coverage/lcov-report/src/tests/structures/configs.ts.html +11 -11
  99. package/coverage/lcov-report/src/tests/structures/groups.ts.html +15 -15
  100. package/coverage/lcov-report/src/tests/structures/index.html +26 -26
  101. package/coverage/lcov-report/src/tests/structures/index.ts.html +16 -22
  102. package/coverage/lcov-report/src/tests/structures/users.ts.html +16 -16
  103. package/coverage/lcov-report/src/utilities/appService.ts.html +45 -18
  104. package/coverage/lcov-report/src/utilities/email.ts.html +28 -28
  105. package/coverage/lcov-report/src/utilities/fileSystem.ts.html +4 -4
  106. package/coverage/lcov-report/src/utilities/index.html +27 -27
  107. package/coverage/lcov-report/src/utilities/index.ts.html +2 -2
  108. package/coverage/lcov-report/src/utilities/redis.ts.html +20 -20
  109. package/coverage/lcov-report/src/utilities/templates.ts.html +6 -6
  110. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  111. package/coverage/lcov.info +2826 -2609
  112. package/jest-testcontainers-config.js +8 -0
  113. package/jest.config.ts +10 -4
  114. package/package.json +11 -7
  115. package/scripts/dev/manage.js +2 -2
  116. package/src/api/controllers/global/auth.ts +1 -1
  117. package/src/api/controllers/global/configs.ts +112 -131
  118. package/src/api/controllers/global/events.ts +17 -0
  119. package/src/api/controllers/global/users.ts +14 -1
  120. package/src/api/index.ts +4 -0
  121. package/src/api/routes/global/auth.ts +1 -1
  122. package/src/api/routes/global/configs.ts +7 -7
  123. package/src/api/routes/global/email.ts +1 -1
  124. package/src/api/routes/global/events.ts +8 -0
  125. package/src/api/routes/global/license.ts +1 -1
  126. package/src/api/routes/global/roles.ts +1 -1
  127. package/src/api/routes/global/self.ts +1 -1
  128. package/src/api/routes/global/templates.ts +1 -1
  129. package/src/api/routes/global/tests/auth.spec.ts +30 -22
  130. package/src/api/routes/global/tests/configs.spec.ts +114 -94
  131. package/src/api/routes/global/tests/groups.spec.ts +58 -0
  132. package/src/api/routes/global/tests/license.spec.ts +0 -2
  133. package/src/api/routes/global/tests/roles.spec.ts +71 -5
  134. package/src/api/routes/global/tests/templates.spec.ts +81 -9
  135. package/src/api/routes/global/tests/users.spec.ts +35 -36
  136. package/src/api/routes/global/users.ts +15 -1
  137. package/src/api/routes/global/workspaces.ts +1 -1
  138. package/src/api/routes/index.ts +2 -0
  139. package/src/api/routes/system/accounts.ts +1 -1
  140. package/src/api/routes/system/environment.ts +1 -1
  141. package/src/api/routes/system/migrations.ts +1 -1
  142. package/src/api/routes/system/restore.ts +1 -1
  143. package/src/api/routes/system/status.ts +1 -1
  144. package/src/api/routes/system/tenants.ts +1 -1
  145. package/src/api/routes/system/tests/environment.spec.ts +1 -1
  146. package/src/constants/index.ts +13 -5
  147. package/src/db/index.ts +1 -1
  148. package/src/environment.ts +6 -1
  149. package/src/index.ts +5 -5
  150. package/src/middleware/cloudRestricted.ts +1 -1
  151. package/src/sdk/users/events.ts +8 -0
  152. package/src/sdk/users/users.ts +23 -5
  153. package/src/tests/TestConfiguration.ts +52 -14
  154. package/src/tests/api/auth.ts +7 -3
  155. package/src/tests/api/configs.ts +2 -2
  156. package/src/tests/api/groups.ts +26 -0
  157. package/src/tests/api/index.ts +12 -1
  158. package/src/tests/api/license.ts +17 -0
  159. package/src/tests/api/roles.ts +32 -0
  160. package/src/tests/api/templates.ts +30 -0
  161. package/src/tests/api/users.ts +4 -3
  162. package/src/tests/index.ts +6 -18
  163. package/src/tests/jestEnv.ts +11 -0
  164. package/src/tests/jestSetup.ts +8 -15
  165. package/src/tests/mocks/{email.js → email.ts} +1 -1
  166. package/src/tests/mocks/index.ts +4 -4
  167. package/src/tests/structures/configs.ts +2 -2
  168. package/src/tests/structures/groups.ts +1 -1
  169. package/src/tests/structures/index.ts +3 -5
  170. package/src/tests/structures/users.ts +1 -1
  171. package/src/utilities/appService.ts +12 -3
  172. package/tsconfig.json +2 -2
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">86.94% </span>
26
+ <span class="strong">86.95% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>253/291</span>
28
+ <span class='fraction'>240/276</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">79.76% </span>
33
+ <span class="strong">76.25% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>67/84</span>
35
+ <span class='fraction'>61/80</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">84.48% </span>
40
+ <span class="strong">84.61% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>49/58</span>
42
+ <span class='fraction'>44/52</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">87.2% </span>
47
+ <span class="strong">88% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>225/258</span>
49
+ <span class='fraction'>220/250</span>
50
50
  </div>
51
51
 
52
52
 
@@ -682,10 +682,27 @@
682
682
  <a name='L617'></a><a href='#L617'>617</a>
683
683
  <a name='L618'></a><a href='#L618'>618</a>
684
684
  <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">17x</span>
686
- <span class="cline-any cline-yes">17x</span>
687
- <span class="cline-any cline-yes">17x</span>
688
- <span class="cline-any cline-yes">17x</span>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">18x</span>
704
+ <span class="cline-any cline-yes">18x</span>
705
+ <span class="cline-any cline-yes">18x</span>
689
706
  <span class="cline-any cline-neutral">&nbsp;</span>
690
707
  <span class="cline-any cline-neutral">&nbsp;</span>
691
708
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -700,7 +717,7 @@
700
717
  <span class="cline-any cline-neutral">&nbsp;</span>
701
718
  <span class="cline-any cline-neutral">&nbsp;</span>
702
719
  <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-yes">17x</span>
720
+ <span class="cline-any cline-yes">18x</span>
704
721
  <span class="cline-any cline-neutral">&nbsp;</span>
705
722
  <span class="cline-any cline-neutral">&nbsp;</span>
706
723
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -715,35 +732,38 @@
715
732
  <span class="cline-any cline-neutral">&nbsp;</span>
716
733
  <span class="cline-any cline-neutral">&nbsp;</span>
717
734
  <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-yes">17x</span>
719
- <span class="cline-any cline-yes">17x</span>
720
- <span class="cline-any cline-yes">17x</span>
721
735
  <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-yes">17x</span>
723
736
  <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-yes">17x</span>
725
- <span class="cline-any cline-no">&nbsp;</span>
726
- <span class="cline-any cline-no">&nbsp;</span>
737
+ <span class="cline-any cline-yes">18x</span>
738
+ <span class="cline-any cline-yes">18x</span>
739
+ <span class="cline-any cline-yes">18x</span>
740
+ <span class="cline-any cline-yes">18x</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-yes">18x</span>
743
+ <span class="cline-any cline-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-yes">18x</span>
745
+ <span class="cline-any cline-yes">1x</span>
746
+ <span class="cline-any cline-yes">1x</span>
727
747
  <span class="cline-any cline-neutral">&nbsp;</span>
728
748
  <span class="cline-any cline-neutral">&nbsp;</span>
729
749
  <span class="cline-any cline-neutral">&nbsp;</span>
730
750
  <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-no">&nbsp;</span>
751
+ <span class="cline-any cline-yes">49x</span>
732
752
  <span class="cline-any cline-neutral">&nbsp;</span>
733
753
  <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-yes">17x</span>
754
+ <span class="cline-any cline-yes">18x</span>
735
755
  <span class="cline-any cline-no">&nbsp;</span>
736
756
  <span class="cline-any cline-no">&nbsp;</span>
737
757
  <span class="cline-any cline-neutral">&nbsp;</span>
738
758
  <span class="cline-any cline-neutral">&nbsp;</span>
739
759
  <span class="cline-any cline-neutral">&nbsp;</span>
740
760
  <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-yes">17x</span>
761
+ <span class="cline-any cline-yes">18x</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
763
  <span class="cline-any cline-neutral">&nbsp;</span>
743
764
  <span class="cline-any cline-neutral">&nbsp;</span>
744
765
  <span class="cline-any cline-neutral">&nbsp;</span>
745
766
  <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-no">&nbsp;</span>
747
767
  <span class="cline-any cline-no">&nbsp;</span>
748
768
  <span class="cline-any cline-neutral">&nbsp;</span>
749
769
  <span class="cline-any cline-no">&nbsp;</span>
@@ -779,13 +799,14 @@
779
799
  <span class="cline-any cline-neutral">&nbsp;</span>
780
800
  <span class="cline-any cline-neutral">&nbsp;</span>
781
801
  <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-yes">17x</span>
783
- <span class="cline-any cline-yes">9x</span>
784
- <span class="cline-any cline-yes">9x</span>
785
- <span class="cline-any cline-yes">9x</span>
786
- <span class="cline-any cline-yes">9x</span>
802
+ <span class="cline-any cline-yes">18x</span>
803
+ <span class="cline-any cline-yes">10x</span>
804
+ <span class="cline-any cline-yes">10x</span>
805
+ <span class="cline-any cline-yes">10x</span>
806
+ <span class="cline-any cline-yes">10x</span>
807
+ <span class="cline-any cline-neutral">&nbsp;</span>
808
+ <span class="cline-any cline-yes">10x</span>
787
809
  <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-yes">9x</span>
789
810
  <span class="cline-any cline-neutral">&nbsp;</span>
790
811
  <span class="cline-any cline-neutral">&nbsp;</span>
791
812
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -793,8 +814,8 @@
793
814
  <span class="cline-any cline-neutral">&nbsp;</span>
794
815
  <span class="cline-any cline-neutral">&nbsp;</span>
795
816
  <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-yes">18x</span>
796
818
  <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-yes">17x</span>
798
819
  <span class="cline-any cline-neutral">&nbsp;</span>
799
820
  <span class="cline-any cline-neutral">&nbsp;</span>
800
821
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -802,22 +823,21 @@
802
823
  <span class="cline-any cline-neutral">&nbsp;</span>
803
824
  <span class="cline-any cline-neutral">&nbsp;</span>
804
825
  <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-yes">92x</span>
806
- <span class="cline-any cline-yes">92x</span>
807
- <span class="cline-any cline-yes">92x</span>
826
+ <span class="cline-any cline-yes">121x</span>
827
+ <span class="cline-any cline-yes">121x</span>
808
828
  <span class="cline-any cline-neutral">&nbsp;</span>
809
829
  <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-yes">92x</span>
811
- <span class="cline-any cline-yes">90x</span>
830
+ <span class="cline-any cline-yes">121x</span>
831
+ <span class="cline-any cline-yes">119x</span>
812
832
  <span class="cline-any cline-yes">2x</span>
813
833
  <span class="cline-any cline-yes">1x</span>
814
834
  <span class="cline-any cline-yes">1x</span>
815
835
  <span class="cline-any cline-no">&nbsp;</span>
816
836
  <span class="cline-any cline-neutral">&nbsp;</span>
817
837
  <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-yes">92x</span>
838
+ <span class="cline-any cline-yes">121x</span>
819
839
  <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-yes">92x</span>
840
+ <span class="cline-any cline-yes">121x</span>
821
841
  <span class="cline-any cline-neutral">&nbsp;</span>
822
842
  <span class="cline-any cline-neutral">&nbsp;</span>
823
843
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -826,57 +846,73 @@
826
846
  <span class="cline-any cline-neutral">&nbsp;</span>
827
847
  <span class="cline-any cline-neutral">&nbsp;</span>
828
848
  <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-yes">92x</span>
849
+ <span class="cline-any cline-yes">121x</span>
830
850
  <span class="cline-any cline-yes">1x</span>
831
851
  <span class="cline-any cline-neutral">&nbsp;</span>
832
852
  <span class="cline-any cline-neutral">&nbsp;</span>
833
- <span class="cline-any cline-yes">92x</span>
834
- <span class="cline-any cline-yes">81x</span>
853
+ <span class="cline-any cline-yes">121x</span>
854
+ <span class="cline-any cline-yes">110x</span>
835
855
  <span class="cline-any cline-neutral">&nbsp;</span>
836
856
  <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-yes">92x</span>
857
+ <span class="cline-any cline-yes">121x</span>
838
858
  <span class="cline-any cline-neutral">&nbsp;</span>
839
859
  <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-yes">88x</span>
841
860
  <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-yes">88x</span>
843
- <span class="cline-any cline-yes">88x</span>
844
- <span class="cline-any cline-yes">88x</span>
845
- <span class="cline-any cline-yes">1x</span>
861
+ <span class="cline-any cline-yes">18x</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-yes">117x</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-yes">117x</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-yes">18x</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-yes">117x</span>
879
+ <span class="cline-any cline-yes">117x</span>
880
+ <span class="cline-any cline-yes">116x</span>
881
+ <span class="cline-any cline-no">&nbsp;</span>
846
882
  <span class="cline-any cline-neutral">&nbsp;</span>
847
883
  <span class="cline-any cline-neutral">&nbsp;</span>
848
884
  <span class="cline-any cline-neutral">&nbsp;</span>
849
885
  <span class="cline-any cline-neutral">&nbsp;</span>
850
- <span class="cline-any cline-yes">87x</span>
851
- <span class="cline-any cline-yes">87x</span>
852
- <span class="cline-any cline-yes">87x</span>
886
+ <span class="cline-any cline-yes">116x</span>
887
+ <span class="cline-any cline-yes">116x</span>
888
+ <span class="cline-any cline-yes">116x</span>
853
889
  <span class="cline-any cline-yes">1x</span>
854
890
  <span class="cline-any cline-neutral">&nbsp;</span>
855
891
  <span class="cline-any cline-neutral">&nbsp;</span>
856
892
  <span class="cline-any cline-neutral">&nbsp;</span>
857
893
  <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-yes">17x</span>
894
+ <span class="cline-any cline-yes">124x</span>
859
895
  <span class="cline-any cline-neutral">&nbsp;</span>
860
896
  <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-yes">91x</span>
862
897
  <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-yes">91x</span>
864
- <span class="cline-any cline-yes">84x</span>
865
898
  <span class="cline-any cline-neutral">&nbsp;</span>
866
- <span class="cline-any cline-yes">91x</span>
867
- <span class="cline-any cline-yes">84x</span>
899
+ <span class="cline-any cline-yes">122x</span>
900
+ <span class="cline-any cline-yes">115x</span>
868
901
  <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-yes">91x</span>
870
- <span class="cline-any cline-yes">91x</span>
902
+ <span class="cline-any cline-yes">122x</span>
903
+ <span class="cline-any cline-yes">115x</span>
871
904
  <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-yes">91x</span>
905
+ <span class="cline-any cline-yes">122x</span>
906
+ <span class="cline-any cline-yes">122x</span>
873
907
  <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-yes">91x</span>
908
+ <span class="cline-any cline-yes">122x</span>
909
+ <span class="cline-any cline-neutral">&nbsp;</span>
910
+ <span class="cline-any cline-yes">122x</span>
875
911
  <span class="cline-any cline-no">&nbsp;</span>
876
912
  <span class="cline-any cline-neutral">&nbsp;</span>
877
913
  <span class="cline-any cline-neutral">&nbsp;</span>
878
914
  <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-yes">91x</span>
915
+ <span class="cline-any cline-yes">122x</span>
880
916
  <span class="cline-any cline-neutral">&nbsp;</span>
881
917
  <span class="cline-any cline-yes">13x</span>
882
918
  <span class="cline-any cline-yes">13x</span>
@@ -893,19 +929,19 @@
893
929
  <span class="cline-any cline-neutral">&nbsp;</span>
894
930
  <span class="cline-any cline-neutral">&nbsp;</span>
895
931
  <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-yes">90x</span>
932
+ <span class="cline-any cline-yes">121x</span>
897
933
  <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-yes">79x</span>
899
- <span class="cline-any cline-yes">79x</span>
900
- <span class="cline-any cline-yes">2x</span>
934
+ <span class="cline-any cline-yes">110x</span>
935
+ <span class="cline-any cline-yes">109x</span>
936
+ <span class="cline-any cline-yes">3x</span>
901
937
  <span class="cline-any cline-neutral">&nbsp;</span>
902
938
  <span class="cline-any cline-neutral">&nbsp;</span>
903
939
  <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-yes">88x</span>
940
+ <span class="cline-any cline-yes">117x</span>
905
941
  <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-yes">86x</span>
942
+ <span class="cline-any cline-yes">115x</span>
907
943
  <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-yes">86x</span>
944
+ <span class="cline-any cline-yes">115x</span>
909
945
  <span class="cline-any cline-yes">1x</span>
910
946
  <span class="cline-any cline-yes">1x</span>
911
947
  <span class="cline-any cline-yes">1x</span>
@@ -913,31 +949,31 @@
913
949
  <span class="cline-any cline-neutral">&nbsp;</span>
914
950
  <span class="cline-any cline-neutral">&nbsp;</span>
915
951
  <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-yes">86x</span>
917
- <span class="cline-any cline-yes">86x</span>
918
- <span class="cline-any cline-yes">74x</span>
952
+ <span class="cline-any cline-yes">115x</span>
953
+ <span class="cline-any cline-yes">115x</span>
954
+ <span class="cline-any cline-yes">103x</span>
919
955
  <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-yes">74x</span>
956
+ <span class="cline-any cline-yes">103x</span>
921
957
  <span class="cline-any cline-no">&nbsp;</span>
922
958
  <span class="cline-any cline-no">&nbsp;</span>
923
959
  <span class="cline-any cline-neutral">&nbsp;</span>
924
960
  <span class="cline-any cline-neutral">&nbsp;</span>
925
961
  <span class="cline-any cline-neutral">&nbsp;</span>
926
962
  <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-yes">86x</span>
963
+ <span class="cline-any cline-yes">115x</span>
964
+ <span class="cline-any cline-neutral">&nbsp;</span>
965
+ <span class="cline-any cline-yes">115x</span>
966
+ <span class="cline-any cline-yes">115x</span>
928
967
  <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-yes">86x</span>
930
- <span class="cline-any cline-yes">86x</span>
968
+ <span class="cline-any cline-yes">115x</span>
969
+ <span class="cline-any cline-yes">115x</span>
931
970
  <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-yes">86x</span>
933
- <span class="cline-any cline-yes">86x</span>
934
- <span class="cline-any cline-yes">86x</span>
935
971
  <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-yes">86x</span>
972
+ <span class="cline-any cline-yes">115x</span>
937
973
  <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-yes">86x</span>
974
+ <span class="cline-any cline-yes">115x</span>
939
975
  <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-yes">86x</span>
976
+ <span class="cline-any cline-yes">115x</span>
941
977
  <span class="cline-any cline-neutral">&nbsp;</span>
942
978
  <span class="cline-any cline-neutral">&nbsp;</span>
943
979
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -951,22 +987,22 @@
951
987
  <span class="cline-any cline-neutral">&nbsp;</span>
952
988
  <span class="cline-any cline-neutral">&nbsp;</span>
953
989
  <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-yes">17x</span>
990
+ <span class="cline-any cline-yes">18x</span>
955
991
  <span class="cline-any cline-neutral">&nbsp;</span>
956
992
  <span class="cline-any cline-neutral">&nbsp;</span>
957
993
  <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-yes">92x</span>
959
- <span class="cline-any cline-yes">92x</span>
960
- <span class="cline-any cline-yes">92x</span>
961
- <span class="cline-any cline-yes">40x</span>
962
994
  <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-yes">12x</span>
996
+ <span class="cline-any cline-yes">12x</span>
997
+ <span class="cline-any cline-yes">7x</span>
963
998
  <span class="cline-any cline-neutral">&nbsp;</span>
964
999
  <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-yes">92x</span>
1000
+ <span class="cline-any cline-neutral">&nbsp;</span>
1001
+ <span class="cline-any cline-yes">12x</span>
966
1002
  <span class="cline-any cline-neutral">&nbsp;</span>
967
1003
  <span class="cline-any cline-neutral">&nbsp;</span>
968
1004
  <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-yes">17x</span>
1005
+ <span class="cline-any cline-yes">18x</span>
970
1006
  <span class="cline-any cline-yes">16x</span>
971
1007
  <span class="cline-any cline-yes">11x</span>
972
1008
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -985,9 +1021,9 @@
985
1021
  <span class="cline-any cline-neutral">&nbsp;</span>
986
1022
  <span class="cline-any cline-neutral">&nbsp;</span>
987
1023
  <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-yes">17x</span>
1024
+ <span class="cline-any cline-yes">18x</span>
1025
+ <span class="cline-any cline-neutral">&nbsp;</span>
989
1026
  <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-yes">11x</span>
991
1027
  <span class="cline-any cline-yes">16x</span>
992
1028
  <span class="cline-any cline-yes">11x</span>
993
1029
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1004,9 +1040,9 @@
1004
1040
  <span class="cline-any cline-neutral">&nbsp;</span>
1005
1041
  <span class="cline-any cline-neutral">&nbsp;</span>
1006
1042
  <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-yes">17x</span>
1043
+ <span class="cline-any cline-yes">18x</span>
1044
+ <span class="cline-any cline-neutral">&nbsp;</span>
1008
1045
  <span class="cline-any cline-neutral">&nbsp;</span>
1009
- <span class="cline-any cline-yes">11x</span>
1010
1046
  <span class="cline-any cline-yes">16x</span>
1011
1047
  <span class="cline-any cline-yes">11x</span>
1012
1048
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1031,7 +1067,7 @@
1031
1067
  <span class="cline-any cline-neutral">&nbsp;</span>
1032
1068
  <span class="cline-any cline-neutral">&nbsp;</span>
1033
1069
  <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-yes">17x</span>
1070
+ <span class="cline-any cline-yes">18x</span>
1035
1071
  <span class="cline-any cline-yes">11x</span>
1036
1072
  <span class="cline-any cline-neutral">&nbsp;</span>
1037
1073
  <span class="cline-any cline-yes">11x</span>
@@ -1046,10 +1082,10 @@
1046
1082
  <span class="cline-any cline-yes">11x</span>
1047
1083
  <span class="cline-any cline-neutral">&nbsp;</span>
1048
1084
  <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-yes">17x</span>
1085
+ <span class="cline-any cline-yes">18x</span>
1086
+ <span class="cline-any cline-neutral">&nbsp;</span>
1050
1087
  <span class="cline-any cline-neutral">&nbsp;</span>
1051
1088
  <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-yes">6x</span>
1053
1089
  <span class="cline-any cline-yes">6x</span>
1054
1090
  <span class="cline-any cline-neutral">&nbsp;</span>
1055
1091
  <span class="cline-any cline-yes">6x</span>
@@ -1128,9 +1164,9 @@
1128
1164
  <span class="cline-any cline-neutral">&nbsp;</span>
1129
1165
  <span class="cline-any cline-neutral">&nbsp;</span>
1130
1166
  <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-yes">17x</span>
1167
+ <span class="cline-any cline-yes">18x</span>
1168
+ <span class="cline-any cline-neutral">&nbsp;</span>
1132
1169
  <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-yes">2x</span>
1134
1170
  <span class="cline-any cline-yes">2x</span>
1135
1171
  <span class="cline-any cline-yes">2x</span>
1136
1172
  <span class="cline-any cline-yes">2x</span>
@@ -1145,9 +1181,9 @@
1145
1181
  <span class="cline-any cline-neutral">&nbsp;</span>
1146
1182
  <span class="cline-any cline-neutral">&nbsp;</span>
1147
1183
  <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-yes">17x</span>
1184
+ <span class="cline-any cline-yes">18x</span>
1185
+ <span class="cline-any cline-neutral">&nbsp;</span>
1149
1186
  <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-yes">2x</span>
1151
1187
  <span class="cline-any cline-yes">2x</span>
1152
1188
  <span class="cline-any cline-neutral">&nbsp;</span>
1153
1189
  <span class="cline-any cline-yes">2x</span>
@@ -1213,7 +1249,7 @@
1213
1249
  <span class="cline-any cline-yes">2x</span>
1214
1250
  <span class="cline-any cline-neutral">&nbsp;</span>
1215
1251
  <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-yes">17x</span>
1252
+ <span class="cline-any cline-yes">18x</span>
1217
1253
  <span class="cline-any cline-yes">4x</span>
1218
1254
  <span class="cline-any cline-yes">4x</span>
1219
1255
  <span class="cline-any cline-yes">4x</span>
@@ -1242,7 +1278,7 @@
1242
1278
  <span class="cline-any cline-yes">3x</span>
1243
1279
  <span class="cline-any cline-neutral">&nbsp;</span>
1244
1280
  <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-yes">17x</span>
1281
+ <span class="cline-any cline-yes">18x</span>
1246
1282
  <span class="cline-any cline-yes">3x</span>
1247
1283
  <span class="cline-any cline-yes">3x</span>
1248
1284
  <span class="cline-any cline-yes">3x</span>
@@ -1252,9 +1288,9 @@
1252
1288
  <span class="cline-any cline-yes">3x</span>
1253
1289
  <span class="cline-any cline-neutral">&nbsp;</span>
1254
1290
  <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-yes">17x</span>
1291
+ <span class="cline-any cline-yes">18x</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1256
1293
  <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-yes">5x</span>
1258
1294
  <span class="cline-any cline-yes">5x</span>
1259
1295
  <span class="cline-any cline-neutral">&nbsp;</span>
1260
1296
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1328,11 +1364,13 @@ import {
1328
1364
  InviteUsersRequest,
1329
1365
  InviteUsersResponse,
1330
1366
  MigrationType,
1367
+ PlatformUser,
1331
1368
  PlatformUserByEmail,
1332
1369
  RowResponse,
1333
1370
  SearchUsersRequest,
1334
1371
  User,
1335
1372
  ThirdPartyUser,
1373
+ isUser,
1336
1374
  } from "@budibase/types"
1337
1375
  import { sendEmail } from "../../utilities/email"
1338
1376
  import { EmailTemplatePurpose } from "../../constants"
@@ -1340,29 +1378,29 @@ import { groups as groupsSdk } from "@budibase/pro"
1340
1378
  &nbsp;
1341
1379
  const PAGE_LIMIT = 8
1342
1380
  &nbsp;
1343
- export const allUsers = <span class="fstat-no" title="function not covered" >async () =</span>&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
1344
- const db = <span class="cstat-no" title="statement not covered" >tenancy.getGlobalDB()</span>
1345
- const response = <span class="cstat-no" title="statement not covered" >await db.allDocs(</span>
1381
+ export const allUsers = async () =&gt; {
1382
+ const db = tenancy.getGlobalDB()
1383
+ const response = await db.allDocs(
1346
1384
  dbUtils.getGlobalUserParams(null, {
1347
1385
  include_docs: true,
1348
1386
  })
1349
1387
  )
1350
- <span class="cstat-no" title="statement not covered" > return response.rows.map(<span class="fstat-no" title="function not covered" >(r</span>ow: any) =&gt; <span class="cstat-no" title="statement not covered" >row.doc)</span></span>
1388
+ return response.rows.map((row: any) =&gt; row.doc)
1351
1389
  }
1352
1390
  &nbsp;
1353
- export const countUsersByApp = <span class="fstat-no" title="function not covered" >async (a</span>ppId: string) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
1391
+ export const <span class="cstat-no" title="statement not covered" >countUsersByApp<span class="fstat-no" title="function not covered" > </span>= <span class="fstat-no" title="function not covered" >a</span>sync (a</span>ppId: string) =&gt; {
1354
1392
  let response: any = <span class="cstat-no" title="statement not covered" >await usersCore.searchGlobalUsersByApp(appId, {})</span>
1355
1393
  <span class="cstat-no" title="statement not covered" > return {</span>
1356
1394
  userCount: response.length,
1357
1395
  }
1358
1396
  }
1359
1397
  &nbsp;
1360
- export const paginatedUsers = <span class="fstat-no" title="function not covered" >async ({</span>
1398
+ export const <span class="cstat-no" title="statement not covered" >paginatedUsers<span class="fstat-no" title="function not covered" > </span>= <span class="fstat-no" title="function not covered" >a</span>sync ({</span>
1361
1399
  page,
1362
1400
  email,
1363
1401
  appId,
1364
1402
  userIds,
1365
- }: SearchUsersRequest = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
1403
+ }: SearchUsersRequest = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> =&gt; {
1366
1404
  const db = <span class="cstat-no" title="statement not covered" >tenancy.getGlobalDB()</span>
1367
1405
  // get one extra document, to have the next page
1368
1406
  const opts: any = <span class="cstat-no" title="statement not covered" >{</span>
@@ -1456,12 +1494,28 @@ const buildUser = async (
1456
1494
  return fullUser
1457
1495
  }
1458
1496
  &nbsp;
1497
+ // lookup, could be email or userId, either will return a doc
1498
+ export const <span class="cstat-no" title="statement not covered" >getPlatformUser<span class="fstat-no" title="function not covered" > </span>= a</span>sync (
1499
+ identifier: string
1500
+ ): Promise&lt;PlatformUser | null&gt; =&gt; {
1501
+ // use the view here and allow to find anyone regardless of casing
1502
+ // Use lowercase to ensure email login is case insensitive
1503
+ const response = dbUtils.queryPlatformView(
1504
+ ViewName.PLATFORM_USERS_LOWERCASE,
1505
+ {
1506
+ keys: [identifier.toLowerCase()],
1507
+ include_docs: true,
1508
+ }
1509
+ ) as Promise&lt;PlatformUser&gt;
1510
+ return response
1511
+ }
1512
+ &nbsp;
1459
1513
  const validateUniqueUser = async (email: string, tenantId: string) =&gt; {
1460
1514
  // check budibase users in other tenants
1461
1515
  if (env.MULTI_TENANCY) {
1462
- const tenantUser = await tenancy.getTenantUser(email)
1463
- if (tenantUser != null &amp;&amp; tenantUser.tenantId !== tenantId) {
1464
- throw `Unavailable`
1516
+ const tenantUser = await getPlatformUser(email)
1517
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (tenantUser != null &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >tenantUser.tenantId !== tenantId) {</span>
1518
+ <span class="cstat-no" title="statement not covered" > throw `Unavailable`</span>
1465
1519
  }
1466
1520
  }
1467
1521
  &nbsp;
@@ -1490,7 +1544,7 @@ export const save = async (
1490
1544
  &nbsp;
1491
1545
  let { email, _id, userGroups = [] } = user
1492
1546
  &nbsp;
1493
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!email &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!_id)</span> {
1547
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!email &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!_id) {</span>
1494
1548
  <span class="cstat-no" title="statement not covered" > throw new Error("_id or email is required")</span>
1495
1549
  }
1496
1550
  &nbsp;
@@ -1549,10 +1603,10 @@ export const save = async (
1549
1603
  builtUser._rev = response.rev
1550
1604
  &nbsp;
1551
1605
  await eventHelpers.handleSaveEvents(builtUser, dbUser)
1552
- await addTenant(tenantId, _id, email)
1553
1606
  await cache.user.invalidateUser(response.id)
1607
+ &nbsp;
1554
1608
  // let server know to sync user
1555
- await apps.syncUserInApps(_id)
1609
+ await apps.syncUserInApps(_id, dbUser)
1556
1610
  &nbsp;
1557
1611
  await Promise.all(groupPromises)
1558
1612
  &nbsp;
@@ -1657,7 +1711,7 @@ const searchExistingEmails = async (emails: string[]) =&gt; {
1657
1711
  matchedEmails.push(...existingTenantUsers.map(user =&gt; user.email))
1658
1712
  &nbsp;
1659
1713
  const existingPlatformUsers = await getExistingPlatformUsers(emails)
1660
- matchedEmails.push(...existingPlatformUsers.map(user =&gt; user._id!))
1714
+ matchedEmails.push(...existingPlatformUsers.map(<span class="fstat-no" title="function not covered" >user =&gt; <span class="cstat-no" title="statement not covered" >u</span>ser._id!</span>))
1661
1715
  &nbsp;
1662
1716
  const existingAccounts = await getExistingAccounts(emails)
1663
1717
  matchedEmails.push(...existingAccounts.map(account =&gt; account.email))
@@ -1858,7 +1912,7 @@ export const destroy = async (id: string, currentUser: any) =&gt; {
1858
1912
  await cache.user.invalidateUser(userId)
1859
1913
  await sessions.invalidateSessions(userId, { reason: "deletion" })
1860
1914
  // let server know to sync user
1861
- await apps.syncUserInApps(userId)
1915
+ await apps.syncUserInApps(userId, dbUser)
1862
1916
  }
1863
1917
  &nbsp;
1864
1918
  const bulkDeleteProcessing = async (dbUser: User) =&gt; {
@@ -1868,7 +1922,7 @@ const bulkDeleteProcessing = async (dbUser: User) =&gt; {
1868
1922
  await cache.user.invalidateUser(userId)
1869
1923
  await sessions.invalidateSessions(userId, { reason: "bulk-deletion" })
1870
1924
  // let server know to sync user
1871
- await apps.syncUserInApps(userId)
1925
+ await apps.syncUserInApps(userId, dbUser)
1872
1926
  }
1873
1927
  &nbsp;
1874
1928
  export const invite = async (
@@ -1927,7 +1981,7 @@ export const invite = async (
1927
1981
  <div class='footer quiet pad2 space-top1 center small'>
1928
1982
  Code coverage generated by
1929
1983
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1930
- at Thu Feb 02 2023 11:54:57 GMT+0000 (Coordinated Universal Time)
1984
+ at Mon Feb 06 2023 09:20:59 GMT+0000 (Coordinated Universal Time)
1931
1985
  </div>
1932
1986
  <script src="../../../prettify.js"></script>
1933
1987
  <script>