@budibase/server 1.1.32-alpha.4 → 1.1.32

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 (204) hide show
  1. package/builder/assets/index.133db51f.js +978 -0
  2. package/builder/assets/{index.bdcef434.css → index.192adf4c.css} +2 -2
  3. package/builder/assets/{vendor.6bcafa60.js → vendor.162098da.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +696 -381
  6. package/coverage/coverage-final.json +16 -13
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +1 -1
  16. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/validation.js.html +4 -4
  23. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/index.html +18 -18
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +49 -94
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +15 -15
  45. package/coverage/lcov-report/api/index.html +1 -1
  46. package/coverage/lcov-report/api/index.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/index.html +1 -1
  58. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +2 -2
  73. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  75. package/coverage/lcov-report/automations/actions.js.html +1 -1
  76. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  77. package/coverage/lcov-report/automations/bullboard.js.html +17 -17
  78. package/coverage/lcov-report/automations/index.html +1 -1
  79. package/coverage/lcov-report/automations/index.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +2 -5
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/index.html +1 -1
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggers.js.html +18 -18
  106. package/coverage/lcov-report/constants/index.html +1 -1
  107. package/coverage/lcov-report/constants/index.js.html +14 -5
  108. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  109. package/coverage/lcov-report/constants/screens.js.html +1 -1
  110. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  111. package/coverage/lcov-report/db/index.html +19 -19
  112. package/coverage/lcov-report/db/index.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  117. package/coverage/lcov-report/db/newid.js.html +1 -1
  118. package/coverage/lcov-report/db/utils.js.html +13 -61
  119. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  120. package/coverage/lcov-report/events/index.html +1 -1
  121. package/coverage/lcov-report/events/index.js.html +1 -1
  122. package/coverage/lcov-report/events/utils.js.html +1 -1
  123. package/coverage/lcov-report/index.html +72 -57
  124. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  125. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  126. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  127. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  128. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  129. package/coverage/lcov-report/middleware/index.html +21 -21
  130. package/coverage/lcov-report/middleware/joi-validator.js.html +43 -43
  131. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  132. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  135. package/coverage/lcov-report/threads/automation.js.html +1114 -0
  136. package/coverage/lcov-report/threads/index.html +146 -0
  137. package/coverage/lcov-report/threads/query.js.html +916 -0
  138. package/coverage/lcov-report/threads/utils.js.html +319 -0
  139. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  140. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  141. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  142. package/coverage/lcov-report/utilities/global.js.html +14 -68
  143. package/coverage/lcov-report/utilities/index.html +19 -19
  144. package/coverage/lcov-report/utilities/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +14 -26
  146. package/coverage/lcov-report/utilities/queue/index.html +17 -17
  147. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  148. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  150. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  151. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  152. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  153. package/coverage/lcov-report/utilities/security.js.html +2 -2
  154. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  156. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  157. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  158. package/coverage/lcov-report/utilities/users.js.html +1 -1
  159. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  160. package/coverage/lcov.info +1214 -695
  161. package/dist/api/controllers/deploy/index.js +0 -1
  162. package/dist/api/controllers/query/index.js +1 -1
  163. package/dist/api/controllers/query/validation.js +3 -3
  164. package/dist/api/controllers/row/internalSearch.js +16 -30
  165. package/dist/api/routes/utils/validators.js +1 -1
  166. package/dist/automations/utils.js +1 -47
  167. package/dist/constants/index.js +4 -1
  168. package/dist/db/utils.js +1 -14
  169. package/dist/integrations/base/sql.js +14 -43
  170. package/dist/package.json +8 -8
  171. package/dist/threads/automation.js +54 -147
  172. package/dist/threads/index.js +20 -27
  173. package/dist/threads/query.js +15 -23
  174. package/dist/threads/utils.js +24 -47
  175. package/dist/tsconfig.build.tsbuildinfo +1 -1
  176. package/dist/utilities/global.js +5 -24
  177. package/dist/utilities/queue/inMemoryQueue.js +0 -5
  178. package/package.json +9 -9
  179. package/src/api/controllers/deploy/index.ts +1 -6
  180. package/src/api/controllers/query/index.ts +1 -1
  181. package/src/api/controllers/query/validation.js +3 -3
  182. package/src/api/controllers/row/internalSearch.js +20 -35
  183. package/src/api/routes/tests/user.spec.js +0 -2
  184. package/src/api/routes/utils/validators.js +1 -1
  185. package/src/automations/steps/executeQuery.js +0 -1
  186. package/src/automations/tests/automation.spec.js +2 -2
  187. package/src/automations/utils.ts +1 -54
  188. package/src/constants/index.js +5 -2
  189. package/src/db/utils.js +0 -16
  190. package/src/definitions/datasource.ts +0 -3
  191. package/src/integrations/base/sql.ts +13 -44
  192. package/src/integrations/tests/sql.spec.js +4 -50
  193. package/src/middleware/tests/currentapp.spec.js +0 -11
  194. package/src/threads/{automation.ts → automation.js} +48 -172
  195. package/src/threads/index.ts +23 -31
  196. package/src/threads/{query.ts → query.js} +12 -32
  197. package/src/threads/{utils.ts → utils.js} +12 -31
  198. package/src/utilities/global.js +3 -21
  199. package/src/utilities/queue/inMemoryQueue.js +0 -4
  200. package/builder/assets/index.7ea7c069.js +0 -977
  201. package/dist/definitions/automations.js +0 -8
  202. package/dist/threads/definitions.js +0 -2
  203. package/src/definitions/automations.ts +0 -49
  204. package/src/threads/definitions.ts +0 -18
@@ -0,0 +1,319 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for threads/utils.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">threads</a> utils.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">81.08% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>30/37</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">66.66% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>10/15</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">88.88% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>8/9</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">83.33% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>30/36</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">44x</span>
145
+ <span class="cline-any cline-yes">44x</span>
146
+ <span class="cline-any cline-yes">44x</span>
147
+ <span class="cline-any cline-yes">44x</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-yes">44x</span>
150
+ <span class="cline-any cline-neutral">&nbsp;</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span>
153
+ <span class="cline-any cline-yes">19x</span>
154
+ <span class="cline-any cline-yes">2x</span>
155
+ <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-yes">19x</span>
157
+ <span class="cline-any cline-neutral">&nbsp;</span>
158
+ <span class="cline-any cline-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-yes">44x</span>
160
+ <span class="cline-any cline-no">&nbsp;</span>
161
+ <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-yes">44x</span>
164
+ <span class="cline-any cline-neutral">&nbsp;</span>
165
+ <span class="cline-any cline-yes">5x</span>
166
+ <span class="cline-any cline-yes">5x</span>
167
+ <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-neutral">&nbsp;</span>
169
+ <span class="cline-any cline-no">&nbsp;</span>
170
+ <span class="cline-any cline-no">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
174
+ <span class="cline-any cline-yes">19x</span>
175
+ <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <span class="cline-any cline-neutral">&nbsp;</span>
177
+ <span class="cline-any cline-yes">44x</span>
178
+ <span class="cline-any cline-yes">11x</span>
179
+ <span class="cline-any cline-yes">11x</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-yes">44x</span>
183
+ <span class="cline-any cline-yes">3x</span>
184
+ <span class="cline-any cline-yes">3x</span>
185
+ <span class="cline-any cline-yes">3x</span>
186
+ <span class="cline-any cline-yes">3x</span>
187
+ <span class="cline-any cline-neutral">&nbsp;</span>
188
+ <span class="cline-any cline-neutral">&nbsp;</span>
189
+ <span class="cline-any cline-neutral">&nbsp;</span>
190
+ <span class="cline-any cline-yes">3x</span>
191
+ <span class="cline-any cline-neutral">&nbsp;</span>
192
+ <span class="cline-any cline-neutral">&nbsp;</span>
193
+ <span class="cline-any cline-yes">44x</span>
194
+ <span class="cline-any cline-yes">5x</span>
195
+ <span class="cline-any cline-yes">5x</span>
196
+ <span class="cline-any cline-neutral">&nbsp;</span>
197
+ <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span>
199
+ <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-neutral">&nbsp;</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-yes">44x</span>
203
+ <span class="cline-any cline-yes">21x</span>
204
+ <span class="cline-any cline-no">&nbsp;</span>
205
+ <span class="cline-any cline-no">&nbsp;</span>
206
+ <span class="cline-any cline-neutral">&nbsp;</span>
207
+ <span class="cline-any cline-no">&nbsp;</span>
208
+ <span class="cline-any cline-neutral">&nbsp;</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-yes">21x</span>
211
+ <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
213
+ <span class="cline-any cline-yes">44x</span>
214
+ <span class="cline-any cline-yes">21x</span>
215
+ <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-neutral">&nbsp;</span>
219
+ <span class="cline-any cline-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-neutral">&nbsp;</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const env = require("../environment")
223
+ const db = require("../db")
224
+ const redis = require("@budibase/backend-core/redis")
225
+ const { SEPARATOR } = require("@budibase/backend-core/db")
226
+ &nbsp;
227
+ const VARIABLE_TTL_SECONDS = 3600
228
+ let client
229
+ &nbsp;
230
+ async function getClient() {
231
+ if (!client) {
232
+ client = await new redis.Client(redis.utils.Databases.QUERY_VARS).init()
233
+ }
234
+ return client
235
+ }
236
+ &nbsp;
237
+ process.on("exit", <span class="fstat-no" title="function not covered" >as</span>ync () =&gt; {
238
+ <span class="cstat-no" title="statement not covered" > if (client) <span class="cstat-no" title="statement not covered" >await client.finish()</span></span>
239
+ })
240
+ &nbsp;
241
+ exports.threadSetup = () =&gt; {
242
+ // don't run this if not threading
243
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (env.isTest() || <span class="branch-1 cbranch-no" title="branch not covered" >env.DISABLE_THREADING)</span> {
244
+ return
245
+ }
246
+ // when thread starts, make sure it is recorded
247
+ <span class="cstat-no" title="statement not covered" > env.setInThread()</span>
248
+ <span class="cstat-no" title="statement not covered" > db.init()</span>
249
+ }
250
+ &nbsp;
251
+ function makeVariableKey(queryId, variable) {
252
+ return `${queryId}${SEPARATOR}${variable}`
253
+ }
254
+ &nbsp;
255
+ exports.checkCacheForDynamicVariable = async (queryId, variable) =&gt; {
256
+ const cache = await getClient()
257
+ return cache.get(makeVariableKey(queryId, variable))
258
+ }
259
+ &nbsp;
260
+ exports.invalidateDynamicVariables = async cachedVars =&gt; {
261
+ const cache = await getClient()
262
+ let promises = []
263
+ for (let variable of cachedVars) {
264
+ promises.push(
265
+ cache.delete(makeVariableKey(variable.queryId, variable.name))
266
+ )
267
+ }
268
+ await Promise.all(promises)
269
+ }
270
+ &nbsp;
271
+ exports.storeDynamicVariable = async (queryId, variable, value) =&gt; {
272
+ const cache = await getClient()
273
+ await cache.store(
274
+ makeVariableKey(queryId, variable),
275
+ value,
276
+ VARIABLE_TTL_SECONDS
277
+ )
278
+ }
279
+ &nbsp;
280
+ exports.formatResponse = resp =&gt; {
281
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof resp === "string") {
282
+ <span class="cstat-no" title="statement not covered" > try {</span>
283
+ <span class="cstat-no" title="statement not covered" > resp = JSON.parse(resp)</span>
284
+ } catch (err) {
285
+ <span class="cstat-no" title="statement not covered" > resp = { response: resp }</span>
286
+ }
287
+ }
288
+ return resp
289
+ }
290
+ &nbsp;
291
+ exports.hasExtraData = response =&gt; {
292
+ return (
293
+ typeof response === "object" &amp;&amp;
294
+ !Array.isArray(response) &amp;&amp;
295
+ response &amp;&amp;
296
+ response.data != null &amp;&amp;
297
+ response.info != null
298
+ )
299
+ }
300
+ &nbsp;</pre></td></tr></table></pre>
301
+
302
+ <div class='push'></div><!-- for sticky footer -->
303
+ </div><!-- /wrapper -->
304
+ <div class='footer quiet pad2 space-top1 center small'>
305
+ Code coverage generated by
306
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
307
+ at Mon Aug 01 2022 15:42:56 GMT+0000 (Coordinated Universal Time)
308
+ </div>
309
+ <script src="../prettify.js"></script>
310
+ <script>
311
+ window.onload = function () {
312
+ prettyPrint();
313
+ };
314
+ </script>
315
+ <script src="../sorter.js"></script>
316
+ <script src="../block-navigation.js"></script>
317
+ </body>
318
+ </html>
319
+
@@ -79,7 +79,7 @@ module.exports.budibaseTempDir = budibaseTempDir
79
79
  <div class='footer quiet pad2 space-top1 center small'>
80
80
  Code coverage generated by
81
81
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
82
- at Mon Aug 01 2022 11:47:03 GMT+0000 (Coordinated Universal Time)
82
+ at Mon Aug 01 2022 15:42:56 GMT+0000 (Coordinated Universal Time)
83
83
  </div>
84
84
  <script src="../prettify.js"></script>
85
85
  <script>
@@ -136,7 +136,7 @@ exports.resolve = function (...args) {
136
136
  <div class='footer quiet pad2 space-top1 center small'>
137
137
  Code coverage generated by
138
138
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
139
- at Mon Aug 01 2022 11:47:03 GMT+0000 (Coordinated Universal Time)
139
+ at Mon Aug 01 2022 15:42:56 GMT+0000 (Coordinated Universal Time)
140
140
  </div>
141
141
  <script src="../prettify.js"></script>
142
142
  <script>
@@ -502,7 +502,7 @@ module.exports = {
502
502
  <div class='footer quiet pad2 space-top1 center small'>
503
503
  Code coverage generated by
504
504
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
505
- at Mon Aug 01 2022 11:47:03 GMT+0000 (Coordinated Universal Time)
505
+ at Mon Aug 01 2022 15:42:56 GMT+0000 (Coordinated Universal Time)
506
506
  </div>
507
507
  <script src="../prettify.js"></script>
508
508
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">78.57% </span>
26
+ <span class="strong">83.6% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>55/70</span>
28
+ <span class='fraction'>51/61</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">75.67% </span>
33
+ <span class="strong">78.57% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>28/37</span>
35
+ <span class='fraction'>22/28</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">68.75% </span>
40
+ <span class="strong">73.33% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>11/16</span>
42
+ <span class='fraction'>11/15</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">79.41% </span>
47
+ <span class="strong">84.74% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>54/68</span>
49
+ <span class='fraction'>50/59</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -170,25 +170,7 @@
170
170
  <a name='L105'></a><a href='#L105'>105</a>
171
171
  <a name='L106'></a><a href='#L106'>106</a>
172
172
  <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
173
+ <a name='L108'></a><a href='#L108'>108</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
192
174
  <span class="cline-any cline-neutral">&nbsp;</span>
193
175
  <span class="cline-any cline-neutral">&nbsp;</span>
194
176
  <span class="cline-any cline-yes">49x</span>
@@ -202,11 +184,9 @@
202
184
  <span class="cline-any cline-yes">49x</span>
203
185
  <span class="cline-any cline-yes">49x</span>
204
186
  <span class="cline-any cline-yes">49x</span>
205
- <span class="cline-any cline-yes">49x</span>
206
187
  <span class="cline-any cline-neutral">&nbsp;</span>
207
188
  <span class="cline-any cline-yes">49x</span>
208
189
  <span class="cline-any cline-yes">238x</span>
209
- <span class="cline-any cline-neutral">&nbsp;</span>
210
190
  <span class="cline-any cline-yes">238x</span>
211
191
  <span class="cline-any cline-yes">3x</span>
212
192
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -224,29 +204,14 @@
224
204
  <span class="cline-any cline-yes">203x</span>
225
205
  <span class="cline-any cline-yes">32x</span>
226
206
  <span class="cline-any cline-yes">27x</span>
227
- <span class="cline-any cline-yes">5x</span>
228
- <span class="cline-any cline-no">&nbsp;</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
207
  <span class="cline-any cline-neutral">&nbsp;</span>
231
208
  <span class="cline-any cline-yes">235x</span>
232
209
  <span class="cline-any cline-yes">235x</span>
233
210
  <span class="cline-any cline-neutral">&nbsp;</span>
234
211
  <span class="cline-any cline-neutral">&nbsp;</span>
235
212
  <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-no">&nbsp;</span>
237
- <span class="cline-any cline-no">&nbsp;</span>
238
- <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-no">&nbsp;</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-neutral">&nbsp;</span>
243
- <span class="cline-any cline-yes">231x</span>
244
- <span class="cline-any cline-yes">231x</span>
245
- <span class="cline-any cline-neutral">&nbsp;</span>
246
213
  <span class="cline-any cline-yes">231x</span>
247
214
  <span class="cline-any cline-yes">231x</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-neutral">&nbsp;</span>
250
215
  <span class="cline-any cline-neutral">&nbsp;</span>
251
216
  <span class="cline-any cline-yes">231x</span>
252
217
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -296,7 +261,6 @@
296
261
  <span class="cline-any cline-yes">32x</span>
297
262
  <span class="cline-any cline-no">&nbsp;</span>
298
263
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-neutral">&nbsp;</span>
300
264
  <span class="cline-any cline-yes">32x</span>
301
265
  <span class="cline-any cline-neutral">&nbsp;</span>
302
266
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -327,11 +291,9 @@ const {
327
291
  } = require("@budibase/backend-core/tenancy")
328
292
  const env = require("../environment")
329
293
  const { getAppId } = require("@budibase/backend-core/context")
330
- const { groups } = require("@budibase/pro")
331
294
  &nbsp;
332
295
  exports.updateAppRole = (user, { appId } = {}) =&gt; {
333
296
  appId = appId || getAppId()
334
- &nbsp;
335
297
  if (!user || !user.roles) {
336
298
  return user
337
299
  }
@@ -347,33 +309,18 @@ exports.updateAppRole = (user, { appId } = {}) =&gt; {
347
309
  // if a role wasn't found then either set as admin (builder) or public (everyone else)
348
310
  if (!user.roleId &amp;&amp; user.builder &amp;&amp; user.builder.global) {
349
311
  user.roleId = BUILTIN_ROLE_IDS.ADMIN
350
- } else if (!user.roleId &amp;&amp; !user?.userGroups?.length) {
312
+ } else if (!user.roleId) {
351
313
  user.roleId = BUILTIN_ROLE_IDS.PUBLIC
352
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if (user?.userGroups?.length) {
353
- <span class="cstat-no" title="statement not covered" > user.roleId = null</span>
354
314
  }
355
- &nbsp;
356
315
  delete user.roles
357
316
  return user
358
317
  }
359
318
  &nbsp;
360
- async function <span class="fstat-no" title="function not covered" >checkGroupRoles(</span>user, { appId } = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
361
- let roleId = <span class="cstat-no" title="statement not covered" >await groups.getGroupRoleId(user, appId)</span>
362
- <span class="cstat-no" title="statement not covered" > user.roleId = roleId</span>
363
- &nbsp;
364
- <span class="cstat-no" title="statement not covered" > return user</span>
365
- }
366
- &nbsp;
367
- async function processUser(user, { appId } = {}) {
319
+ function processUser(user, { appId } = {}) {
368
320
  <span class="missing-if-branch" title="else path not taken" >E</span>if (user) {
369
321
  delete user.password
370
322
  }
371
- user = await exports.updateAppRole(user, { appId })
372
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!user.roleId &amp;&amp; user?.userGroups?.length) {
373
- <span class="cstat-no" title="statement not covered" > user = await checkGroupRoles(user, { appId })</span>
374
- }
375
- &nbsp;
376
- return user
323
+ return exports.updateAppRole(user, { appId })
377
324
  }
378
325
  &nbsp;
379
326
  exports.getCachedSelf = async (ctx, appId) =&gt; {
@@ -421,7 +368,6 @@ exports.getGlobalUsers = async (users = null) =&gt; {
421
368
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!appId) {
422
369
  <span class="cstat-no" title="statement not covered" > return globalUsers</span>
423
370
  }
424
- &nbsp;
425
371
  return globalUsers.map(user =&gt; exports.updateAppRole(user))
426
372
  }
427
373
  &nbsp;
@@ -445,7 +391,7 @@ exports.getGlobalUsersFromMetadata = async users =&gt; {
445
391
  <div class='footer quiet pad2 space-top1 center small'>
446
392
  Code coverage generated by
447
393
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
448
- at Mon Aug 01 2022 11:47:03 GMT+0000 (Coordinated Universal Time)
394
+ at Mon Aug 01 2022 15:42:56 GMT+0000 (Coordinated Universal Time)
449
395
  </div>
450
396
  <script src="../prettify.js"></script>
451
397
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">72.9% </span>
26
+ <span class="strong">73.63% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>261/358</span>
28
+ <span class='fraction'>257/349</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">60.66% </span>
33
+ <span class="strong">60.28% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>91/150</span>
35
+ <span class='fraction'>85/141</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">70.58% </span>
40
+ <span class="strong">71.64% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>48/68</span>
42
+ <span class='fraction'>48/67</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">72.64% </span>
47
+ <span class="strong">73.39% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>255/351</span>
49
+ <span class='fraction'>251/342</span>
50
50
  </div>
51
51
 
52
52
 
@@ -124,18 +124,18 @@
124
124
  </tr>
125
125
 
126
126
  <tr>
127
- <td class="file medium" data-value="global.js"><a href="global.js.html">global.js</a></td>
128
- <td data-value="78.57" class="pic medium">
129
- <div class="chart"><div class="cover-fill" style="width: 78%"></div><div class="cover-empty" style="width: 22%"></div></div>
127
+ <td class="file high" data-value="global.js"><a href="global.js.html">global.js</a></td>
128
+ <td data-value="83.6" class="pic high">
129
+ <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
130
130
  </td>
131
+ <td data-value="83.6" class="pct high">83.6%</td>
132
+ <td data-value="61" class="abs high">51/61</td>
131
133
  <td data-value="78.57" class="pct medium">78.57%</td>
132
- <td data-value="70" class="abs medium">55/70</td>
133
- <td data-value="75.67" class="pct medium">75.67%</td>
134
- <td data-value="37" class="abs medium">28/37</td>
135
- <td data-value="68.75" class="pct medium">68.75%</td>
136
- <td data-value="16" class="abs medium">11/16</td>
137
- <td data-value="79.41" class="pct medium">79.41%</td>
138
- <td data-value="68" class="abs medium">54/68</td>
134
+ <td data-value="28" class="abs medium">22/28</td>
135
+ <td data-value="73.33" class="pct medium">73.33%</td>
136
+ <td data-value="15" class="abs medium">11/15</td>
137
+ <td data-value="84.74" class="pct high">84.74%</td>
138
+ <td data-value="59" class="abs high">50/59</td>
139
139
  </tr>
140
140
 
141
141
  <tr>
@@ -236,7 +236,7 @@
236
236
  <div class='footer quiet pad2 space-top1 center small'>
237
237
  Code coverage generated by
238
238
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
239
- at Mon Aug 01 2022 11:47:03 GMT+0000 (Coordinated Universal Time)
239
+ at Mon Aug 01 2022 15:42:56 GMT+0000 (Coordinated Universal Time)
240
240
  </div>
241
241
  <script src="../prettify.js"></script>
242
242
  <script>
@@ -562,7 +562,7 @@ exports.convertBookmark = bookmark =&gt; {
562
562
  <div class='footer quiet pad2 space-top1 center small'>
563
563
  Code coverage generated by
564
564
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
565
- at Mon Aug 01 2022 11:47:03 GMT+0000 (Coordinated Universal Time)
565
+ at Mon Aug 01 2022 15:42:56 GMT+0000 (Coordinated Universal Time)
566
566
  </div>
567
567
  <script src="../prettify.js"></script>
568
568
  <script>