@budibase/server 1.0.27-alpha.2 → 1.0.27-alpha.6
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.
- package/__mocks__/node-fetch.ts +18 -0
- package/builder/assets/{index.5522fcd5.css → index.431d69df.css} +1 -1
- package/builder/assets/{index.e9e2c4d7.js → index.f909f0e2.js} +245 -240
- package/builder/index.html +2 -2
- package/coverage/clover.xml +429 -339
- package/coverage/coverage-final.json +22 -22
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +54 -54
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +49 -49
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +20 -20
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +19 -19
- package/coverage/lcov-report/api/controllers/query/index.js.html +66 -150
- package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -3
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +5 -5
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +24 -3
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +31 -7
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +11 -11
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/automations/utils.js.html +5 -5
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +2 -2
- package/coverage/lcov-report/db/utils.js.html +18 -18
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +46 -46
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +10 -10
- package/coverage/lcov-report/middleware/builder.js.html +8 -8
- package/coverage/lcov-report/middleware/currentapp.js.html +28 -28
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +9 -9
- package/coverage/lcov-report/middleware/resourceId.js.html +17 -17
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +30 -30
- package/coverage/lcov-report/threads/index.js.html +11 -11
- package/coverage/lcov-report/threads/query.js.html +358 -91
- package/coverage/lcov-report/threads/utils.js.html +352 -10
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +13 -13
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +9 -9
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +732 -576
- package/dist/api/controllers/query/import/sources/curl.js +5 -1
- package/dist/api/controllers/query/index.js +29 -47
- package/dist/api/controllers/query/validation.js +2 -1
- package/dist/api/routes/query.js +3 -1
- package/dist/automations/steps/executeQuery.js +8 -1
- package/dist/integrations/rest.js +2 -2
- package/dist/package.json +5 -4
- package/dist/tests/utilities/TestConfiguration.js +7 -0
- package/dist/threads/query.js +145 -52
- package/dist/threads/utils.js +104 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -5
- package/src/api/controllers/query/import/sources/curl.ts +5 -1
- package/src/api/controllers/query/index.js +27 -55
- package/src/api/controllers/query/validation.js +2 -1
- package/src/api/routes/query.js +8 -1
- package/src/api/routes/tests/query.spec.js +88 -0
- package/src/automations/steps/executeQuery.js +9 -1
- package/src/definitions/datasource.ts +10 -0
- package/src/integrations/rest.ts +5 -2
- package/src/tests/utilities/TestConfiguration.js +10 -0
- package/src/threads/query.js +145 -56
- package/src/threads/utils.js +114 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">92.39% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>85/92</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">81.08% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>30/37</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">91.66% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>11/12</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">93.18% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>82/88</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
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
56
|
</p>
|
|
57
57
|
</div>
|
|
58
|
-
<div class='status-line
|
|
58
|
+
<div class='status-line high'></div>
|
|
59
59
|
<pre><table class="coverage">
|
|
60
60
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
61
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -138,23 +138,190 @@
|
|
|
138
138
|
<a name='L79'></a><a href='#L79'>79</a>
|
|
139
139
|
<a name='L80'></a><a href='#L80'>80</a>
|
|
140
140
|
<a name='L81'></a><a href='#L81'>81</a>
|
|
141
|
-
<a name='L82'></a><a href='#L82'>82</a
|
|
141
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
142
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
143
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
144
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
145
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
146
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
147
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
148
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
153
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
154
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
155
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
156
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
157
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
158
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
159
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
160
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
161
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
162
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
163
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
164
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
165
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
166
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
167
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
168
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
169
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
170
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
171
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
172
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
173
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
174
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
175
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
176
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
177
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
178
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
179
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
180
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
181
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
182
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
183
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
184
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
185
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
186
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
187
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
188
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
189
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
190
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
191
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
192
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
193
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
194
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
195
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
196
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
197
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
198
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
199
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
200
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
201
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
202
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
203
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
204
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
205
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
206
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
207
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
208
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
209
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
210
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
211
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
212
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
213
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
214
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
215
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
216
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
217
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
218
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
219
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
220
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
221
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
222
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
223
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
224
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
225
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
226
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
227
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
228
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
229
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
230
|
+
<a name='L171'></a><a href='#L171'>171</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
142
231
|
<span class="cline-any cline-yes">1x</span>
|
|
143
232
|
<span class="cline-any cline-yes">1x</span>
|
|
233
|
+
<span class="cline-any cline-yes">1x</span>
|
|
234
|
+
<span class="cline-any cline-yes">1x</span>
|
|
235
|
+
<span class="cline-any cline-yes">1x</span>
|
|
236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
237
|
+
<span class="cline-any cline-neutral"> </span>
|
|
238
|
+
<span class="cline-any cline-neutral"> </span>
|
|
239
|
+
<span class="cline-any cline-yes">11x</span>
|
|
240
|
+
<span class="cline-any cline-yes">11x</span>
|
|
241
|
+
<span class="cline-any cline-yes">11x</span>
|
|
242
|
+
<span class="cline-any cline-yes">11x</span>
|
|
243
|
+
<span class="cline-any cline-yes">11x</span>
|
|
244
|
+
<span class="cline-any cline-yes">11x</span>
|
|
245
|
+
<span class="cline-any cline-yes">11x</span>
|
|
246
|
+
<span class="cline-any cline-yes">11x</span>
|
|
247
|
+
<span class="cline-any cline-yes">11x</span>
|
|
248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
144
249
|
<span class="cline-any cline-neutral"> </span>
|
|
145
250
|
<span class="cline-any cline-neutral"> </span>
|
|
251
|
+
<span class="cline-any cline-yes">11x</span>
|
|
252
|
+
<span class="cline-any cline-yes">11x</span>
|
|
253
|
+
<span class="cline-any cline-neutral"> </span>
|
|
254
|
+
<span class="cline-any cline-neutral"> </span>
|
|
255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
256
|
+
<span class="cline-any cline-yes">12x</span>
|
|
257
|
+
<span class="cline-any cline-neutral"> </span>
|
|
258
|
+
<span class="cline-any cline-yes">12x</span>
|
|
259
|
+
<span class="cline-any cline-yes">12x</span>
|
|
260
|
+
<span class="cline-any cline-yes">12x</span>
|
|
261
|
+
<span class="cline-any cline-yes">12x</span>
|
|
146
262
|
<span class="cline-any cline-yes">2x</span>
|
|
263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
264
|
+
<span class="cline-any cline-yes">10x</span>
|
|
265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
266
|
+
<span class="cline-any cline-yes">10x</span>
|
|
267
|
+
<span class="cline-any cline-yes">10x</span>
|
|
268
|
+
<span class="cline-any cline-yes">10x</span>
|
|
269
|
+
<span class="cline-any cline-yes">10x</span>
|
|
270
|
+
<span class="cline-any cline-yes">10x</span>
|
|
271
|
+
<span class="cline-any cline-yes">8x</span>
|
|
272
|
+
<span class="cline-any cline-yes">8x</span>
|
|
273
|
+
<span class="cline-any cline-yes">8x</span>
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-yes">10x</span>
|
|
147
278
|
<span class="cline-any cline-no"> </span>
|
|
148
279
|
<span class="cline-any cline-no"> </span>
|
|
149
280
|
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-yes">10x</span>
|
|
284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
289
|
+
<span class="cline-any cline-yes">1x</span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-yes">1x</span>
|
|
292
|
+
<span class="cline-any cline-yes">1x</span>
|
|
293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
296
|
+
<span class="cline-any cline-yes">9x</span>
|
|
297
|
+
<span class="cline-any cline-yes">7x</span>
|
|
298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
301
|
+
<span class="cline-any cline-yes">9x</span>
|
|
150
302
|
<span class="cline-any cline-no"> </span>
|
|
151
303
|
<span class="cline-any cline-neutral"> </span>
|
|
152
304
|
<span class="cline-any cline-neutral"> </span>
|
|
153
|
-
<span class="cline-any cline-
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-yes">9x</span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-yes">9x</span>
|
|
309
|
+
<span class="cline-any cline-no"> </span>
|
|
310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
312
|
+
<span class="cline-any cline-yes">9x</span>
|
|
313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-yes">3x</span>
|
|
317
|
+
<span class="cline-any cline-yes">3x</span>
|
|
318
|
+
<span class="cline-any cline-yes">3x</span>
|
|
319
|
+
<span class="cline-any cline-yes">3x</span>
|
|
320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
154
322
|
<span class="cline-any cline-neutral"> </span>
|
|
155
323
|
<span class="cline-any cline-neutral"> </span>
|
|
156
324
|
<span class="cline-any cline-neutral"> </span>
|
|
157
|
-
<span class="cline-any cline-yes">2x</span>
|
|
158
325
|
<span class="cline-any cline-neutral"> </span>
|
|
159
326
|
<span class="cline-any cline-neutral"> </span>
|
|
160
327
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -165,134 +332,234 @@
|
|
|
165
332
|
<span class="cline-any cline-neutral"> </span>
|
|
166
333
|
<span class="cline-any cline-yes">4x</span>
|
|
167
334
|
<span class="cline-any cline-yes">4x</span>
|
|
168
|
-
<span class="cline-any cline-yes">
|
|
335
|
+
<span class="cline-any cline-yes">4x</span>
|
|
336
|
+
<span class="cline-any cline-yes">4x</span>
|
|
337
|
+
<span class="cline-any cline-yes">4x</span>
|
|
338
|
+
<span class="cline-any cline-yes">3x</span>
|
|
169
339
|
<span class="cline-any cline-neutral"> </span>
|
|
170
|
-
<span class="cline-any cline-yes">2x</span>
|
|
171
340
|
<span class="cline-any cline-neutral"> </span>
|
|
172
|
-
<span class="cline-any cline-yes">2x</span>
|
|
173
|
-
<span class="cline-any cline-yes">2x</span>
|
|
174
|
-
<span class="cline-any cline-yes">2x</span>
|
|
175
|
-
<span class="cline-any cline-yes">2x</span>
|
|
176
|
-
<span class="cline-any cline-yes">2x</span>
|
|
177
|
-
<span class="cline-any cline-no"> </span>
|
|
178
|
-
<span class="cline-any cline-no"> </span>
|
|
179
|
-
<span class="cline-any cline-no"> </span>
|
|
180
341
|
<span class="cline-any cline-neutral"> </span>
|
|
342
|
+
<span class="cline-any cline-yes">3x</span>
|
|
343
|
+
<span class="cline-any cline-yes">3x</span>
|
|
181
344
|
<span class="cline-any cline-neutral"> </span>
|
|
345
|
+
<span class="cline-any cline-yes">1x</span>
|
|
182
346
|
<span class="cline-any cline-neutral"> </span>
|
|
183
|
-
<span class="cline-any cline-yes">
|
|
184
|
-
<span class="cline-any cline-no"> </span>
|
|
185
|
-
<span class="cline-any cline-no"> </span>
|
|
347
|
+
<span class="cline-any cline-yes">4x</span>
|
|
186
348
|
<span class="cline-any cline-neutral"> </span>
|
|
187
349
|
<span class="cline-any cline-neutral"> </span>
|
|
188
350
|
<span class="cline-any cline-neutral"> </span>
|
|
189
|
-
<span class="cline-any cline-yes">
|
|
351
|
+
<span class="cline-any cline-yes">12x</span>
|
|
352
|
+
<span class="cline-any cline-yes">12x</span>
|
|
190
353
|
<span class="cline-any cline-no"> </span>
|
|
191
354
|
<span class="cline-any cline-neutral"> </span>
|
|
192
|
-
<span class="cline-any cline-
|
|
193
|
-
<span class="cline-any cline-
|
|
355
|
+
<span class="cline-any cline-yes">12x</span>
|
|
356
|
+
<span class="cline-any cline-yes">12x</span>
|
|
357
|
+
<span class="cline-any cline-yes">12x</span>
|
|
358
|
+
<span class="cline-any cline-yes">2x</span>
|
|
194
359
|
<span class="cline-any cline-yes">2x</span>
|
|
195
|
-
<span class="cline-any cline-no"> </span>
|
|
196
360
|
<span class="cline-any cline-neutral"> </span>
|
|
197
361
|
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-yes">12x</span>
|
|
198
363
|
<span class="cline-any cline-neutral"> </span>
|
|
199
|
-
<span class="cline-any cline-yes">
|
|
364
|
+
<span class="cline-any cline-yes">9x</span>
|
|
365
|
+
<span class="cline-any cline-yes">9x</span>
|
|
200
366
|
<span class="cline-any cline-neutral"> </span>
|
|
201
|
-
<span class="cline-any cline-yes">
|
|
367
|
+
<span class="cline-any cline-yes">4x</span>
|
|
202
368
|
<span class="cline-any cline-no"> </span>
|
|
203
369
|
<span class="cline-any cline-neutral"> </span>
|
|
204
370
|
<span class="cline-any cline-neutral"> </span>
|
|
205
|
-
<span class="cline-any cline-yes">
|
|
371
|
+
<span class="cline-any cline-yes">4x</span>
|
|
372
|
+
<span class="cline-any cline-yes">4x</span>
|
|
373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-yes">9x</span>
|
|
375
|
+
<span class="cline-any cline-yes">9x</span>
|
|
376
|
+
<span class="cline-any cline-yes">9x</span>
|
|
377
|
+
<span class="cline-any cline-yes">4x</span>
|
|
378
|
+
<span class="cline-any cline-yes">4x</span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
206
381
|
<span class="cline-any cline-neutral"> </span>
|
|
207
382
|
<span class="cline-any cline-neutral"> </span>
|
|
208
|
-
<span class="cline-any cline-yes">1x</span>
|
|
209
383
|
<span class="cline-any cline-yes">4x</span>
|
|
210
384
|
<span class="cline-any cline-neutral"> </span>
|
|
211
385
|
<span class="cline-any cline-neutral"> </span>
|
|
386
|
+
<span class="cline-any cline-yes">12x</span>
|
|
212
387
|
<span class="cline-any cline-neutral"> </span>
|
|
213
388
|
<span class="cline-any cline-neutral"> </span>
|
|
214
389
|
<span class="cline-any cline-neutral"> </span>
|
|
390
|
+
<span class="cline-any cline-yes">1x</span>
|
|
391
|
+
<span class="cline-any cline-yes">8x</span>
|
|
392
|
+
<span class="cline-any cline-yes">8x</span>
|
|
215
393
|
<span class="cline-any cline-neutral"> </span>
|
|
216
|
-
<span class="cline-any cline-yes">
|
|
394
|
+
<span class="cline-any cline-yes">6x</span>
|
|
217
395
|
<span class="cline-any cline-neutral"> </span>
|
|
218
396
|
<span class="cline-any cline-neutral"> </span>
|
|
219
397
|
<span class="cline-any cline-yes">2x</span>
|
|
220
398
|
<span class="cline-any cline-neutral"> </span>
|
|
221
399
|
<span class="cline-any cline-neutral"> </span>
|
|
222
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">require("./utils")
|
|
400
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const threadUtils = require("./utils")
|
|
401
|
+
threadUtils.threadSetup()
|
|
223
402
|
const ScriptRunner = require("../utilities/scriptRunner")
|
|
224
403
|
const { integrations } = require("../integrations")
|
|
404
|
+
const { processStringSync } = require("@budibase/string-templates")
|
|
405
|
+
const CouchDB = require("../db")
|
|
225
406
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
407
|
+
class QueryRunner {
|
|
408
|
+
constructor(input, flags = { noRecursiveQuery: false }) {
|
|
409
|
+
this.appId = input.appId
|
|
410
|
+
this.datasource = input.datasource
|
|
411
|
+
this.queryVerb = input.queryVerb
|
|
412
|
+
this.fields = input.fields
|
|
413
|
+
this.parameters = input.parameters
|
|
414
|
+
this.transformer = input.transformer
|
|
415
|
+
this.queryId = input.queryId
|
|
416
|
+
this.noRecursiveQuery = flags.noRecursiveQuery
|
|
417
|
+
this.cachedVariables = []
|
|
418
|
+
// allows the response from a query to be stored throughout this
|
|
419
|
+
// execution so that if it needs to be re-used for another variable
|
|
420
|
+
// it can be
|
|
421
|
+
this.queryResponse = {}
|
|
422
|
+
this.hasRerun = false
|
|
233
423
|
}
|
|
234
|
-
return resp
|
|
235
|
-
}
|
|
236
424
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
425
|
+
async execute() {
|
|
426
|
+
let { datasource, fields, queryVerb, transformer } = this
|
|
427
|
+
// pre-query, make sure datasource variables are added to parameters
|
|
428
|
+
const parameters = await this.addDatasourceVariables()
|
|
429
|
+
const query = threadUtils.enrichQueryFields(fields, parameters)
|
|
430
|
+
const Integration = integrations[datasource.source]
|
|
431
|
+
if (!Integration) {
|
|
432
|
+
throw "Integration type does not exist."
|
|
433
|
+
}
|
|
434
|
+
const integration = new Integration(datasource.config)
|
|
245
435
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
436
|
+
let output = threadUtils.formatResponse(await integration[queryVerb](query))
|
|
437
|
+
let rows = output,
|
|
438
|
+
info = undefined,
|
|
439
|
+
extra = undefined
|
|
440
|
+
if (threadUtils.hasExtraData(output)) {
|
|
441
|
+
rows = output.data
|
|
442
|
+
info = output.info
|
|
443
|
+
extra = output.extra
|
|
444
|
+
}
|
|
252
445
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
<span class="cstat-no" title="statement not covered" > rows = output.data</span>
|
|
259
|
-
<span class="cstat-no" title="statement not covered" > info = output.info</span>
|
|
260
|
-
<span class="cstat-no" title="statement not covered" > extra = output.extra</span>
|
|
261
|
-
}
|
|
446
|
+
// transform as required
|
|
447
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (transformer) {
|
|
448
|
+
const runner = <span class="cstat-no" title="statement not covered" >new ScriptRunner(transformer, { data: rows })</span>
|
|
449
|
+
<span class="cstat-no" title="statement not covered" > rows = runner.execute()</span>
|
|
450
|
+
}
|
|
262
451
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
452
|
+
// if the request fails we retry once, invalidating the cached value
|
|
453
|
+
if (
|
|
454
|
+
info &&
|
|
455
|
+
info.code >= 400 &&
|
|
456
|
+
this.cachedVariables.length > 0 &&
|
|
457
|
+
!this.hasRerun
|
|
458
|
+
) {
|
|
459
|
+
this.hasRerun = true
|
|
460
|
+
// invalidate the cache value
|
|
461
|
+
await threadUtils.invalidateDynamicVariables(this.cachedVariables)
|
|
462
|
+
return this.execute()
|
|
463
|
+
}
|
|
268
464
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
465
|
+
// needs to an array for next step
|
|
466
|
+
if (!Array.isArray(rows)) {
|
|
467
|
+
rows = [rows]
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// map into JSON if just raw primitive here
|
|
471
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (rows.find(row => typeof row !== "object")) {
|
|
472
|
+
<span class="cstat-no" title="statement not covered" > rows = rows.map(<span class="fstat-no" title="function not covered" >va</span>lue => (<span class="cstat-no" title="statement not covered" >{ value })</span>)</span>
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
// get all the potential fields in the schema
|
|
476
|
+
let keys = rows.flatMap(Object.keys)
|
|
273
477
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
478
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (integration.end) {
|
|
479
|
+
<span class="cstat-no" title="statement not covered" > integration.end()</span>
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
return { rows, keys, info, extra }
|
|
277
483
|
}
|
|
278
484
|
|
|
279
|
-
|
|
280
|
-
|
|
485
|
+
async runAnotherQuery(queryId, parameters) {
|
|
486
|
+
const db = new CouchDB(this.appId)
|
|
487
|
+
const query = await db.get(queryId)
|
|
488
|
+
const datasource = await db.get(query.datasourceId)
|
|
489
|
+
return new QueryRunner(
|
|
490
|
+
{
|
|
491
|
+
appId: this.appId,
|
|
492
|
+
datasource,
|
|
493
|
+
queryVerb: query.queryVerb,
|
|
494
|
+
fields: query.fields,
|
|
495
|
+
parameters,
|
|
496
|
+
transformer: query.transformer,
|
|
497
|
+
},
|
|
498
|
+
{ noRecursiveQuery: true }
|
|
499
|
+
).execute()
|
|
500
|
+
}
|
|
281
501
|
|
|
282
|
-
|
|
283
|
-
|
|
502
|
+
async getDynamicVariable(variable) {
|
|
503
|
+
let { parameters } = this
|
|
504
|
+
const queryId = variable.queryId,
|
|
505
|
+
name = variable.name
|
|
506
|
+
let value = await threadUtils.checkCacheForDynamicVariable(queryId, name)
|
|
507
|
+
if (!value) {
|
|
508
|
+
value = this.queryResponse[queryId]
|
|
509
|
+
? <span class="branch-0 cbranch-no" title="branch not covered" >this.queryResponse[queryId]</span>
|
|
510
|
+
: await this.runAnotherQuery(queryId, parameters)
|
|
511
|
+
// store incase this query is to be called again
|
|
512
|
+
this.queryResponse[queryId] = value
|
|
513
|
+
await threadUtils.storeDynamicVariable(queryId, name, value)
|
|
514
|
+
} else {
|
|
515
|
+
this.cachedVariables.push({ queryId, name })
|
|
516
|
+
}
|
|
517
|
+
return value
|
|
284
518
|
}
|
|
285
519
|
|
|
286
|
-
|
|
520
|
+
async addDatasourceVariables() {
|
|
521
|
+
let { datasource, parameters, fields } = this
|
|
522
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!datasource || !datasource.config) {
|
|
523
|
+
<span class="cstat-no" title="statement not covered" > return parameters</span>
|
|
524
|
+
}
|
|
525
|
+
const staticVars = datasource.config.staticVariables || {}
|
|
526
|
+
const dynamicVars = datasource.config.dynamicVariables || []
|
|
527
|
+
for (let [key, value] of Object.entries(staticVars)) {
|
|
528
|
+
if (!parameters[key]) {
|
|
529
|
+
parameters[key] = value
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
if (!this.noRecursiveQuery) {
|
|
533
|
+
// need to see if this uses any variables
|
|
534
|
+
const stringFields = JSON.stringify(fields)
|
|
535
|
+
const foundVars = dynamicVars.filter(variable => {
|
|
536
|
+
// don't allow a query to use its own dynamic variable (loop)
|
|
537
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (variable.queryId === this.queryId) {
|
|
538
|
+
<span class="cstat-no" title="statement not covered" > return false</span>
|
|
539
|
+
}
|
|
540
|
+
// look for {{ variable }} but allow spaces between handlebars
|
|
541
|
+
const regex = new RegExp(`{{[ ]*${variable.name}[ ]*}}`)
|
|
542
|
+
return regex.test(stringFields)
|
|
543
|
+
})
|
|
544
|
+
const dynamics = foundVars.map(dynVar => this.getDynamicVariable(dynVar))
|
|
545
|
+
const responses = await Promise.all(dynamics)
|
|
546
|
+
for (let i = 0; i < foundVars.length; i++) {
|
|
547
|
+
const variable = foundVars[i]
|
|
548
|
+
parameters[variable.name] = processStringSync(variable.value, {
|
|
549
|
+
data: responses[i].rows,
|
|
550
|
+
info: responses[i].extra,
|
|
551
|
+
})
|
|
552
|
+
// make sure its known that this uses dynamic variables in case it fails
|
|
553
|
+
this.hasDynamicVariables = true
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
return parameters
|
|
557
|
+
}
|
|
287
558
|
}
|
|
288
559
|
|
|
289
560
|
module.exports = (input, callback) => {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
input.queryVerb,
|
|
293
|
-
input.query,
|
|
294
|
-
input.transformer
|
|
295
|
-
)
|
|
561
|
+
const Runner = new QueryRunner(input)
|
|
562
|
+
Runner.execute()
|
|
296
563
|
.then(response => {
|
|
297
564
|
callback(null, response)
|
|
298
565
|
})
|
|
@@ -307,7 +574,7 @@ module.exports = (input, callback) => {
|
|
|
307
574
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
308
575
|
Code coverage generated by
|
|
309
576
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
310
|
-
at
|
|
577
|
+
at Fri Jan 07 2022 12:04:09 GMT+0000 (Coordinated Universal Time)
|
|
311
578
|
</div>
|
|
312
579
|
</div>
|
|
313
580
|
<script src="../prettify.js"></script>
|