@budibase/server 1.0.219 → 1.0.220-alpha.2

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 (284) hide show
  1. package/.yarnrc +1 -0
  2. package/__mocks__/node-fetch.ts +9 -0
  3. package/builder/assets/index.7786f497.css +6 -0
  4. package/builder/assets/index.e1885c5f.js +974 -0
  5. package/builder/assets/{vendor.9bf2fcb4.js → vendor.001dcf8c.js} +163 -163
  6. package/builder/index.html +3 -3
  7. package/coverage/clover.xml +1018 -950
  8. package/coverage/coverage-final.json +31 -31
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +111 -12
  12. package/coverage/lcov-report/api/controllers/backup.js.html +9 -6
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +16 -16
  16. package/coverage/lcov-report/api/controllers/dev.js.html +13 -166
  17. package/coverage/lcov-report/api/controllers/index.html +32 -32
  18. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +47 -17
  28. package/coverage/lcov-report/api/controllers/row/index.html +33 -33
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +159 -21
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +17 -8
  33. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  47. package/coverage/lcov-report/api/index.html +15 -15
  48. package/coverage/lcov-report/api/index.js.html +22 -13
  49. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +32 -2
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +2 -5
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +5 -2
  75. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  77. package/coverage/lcov-report/automations/actions.js.html +1 -1
  78. package/coverage/lcov-report/automations/automationUtils.js.html +57 -12
  79. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  80. package/coverage/lcov-report/automations/index.html +17 -17
  81. package/coverage/lcov-report/automations/index.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeQuery.js.html +2 -2
  86. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/filter.js.html +58 -34
  88. package/coverage/lcov-report/automations/steps/index.html +11 -11
  89. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +4 -4
  108. package/coverage/lcov-report/constants/index.html +1 -1
  109. package/coverage/lcov-report/constants/index.js.html +1 -1
  110. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  111. package/coverage/lcov-report/constants/screens.js.html +1 -1
  112. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  113. package/coverage/lcov-report/db/index.html +14 -14
  114. package/coverage/lcov-report/db/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.html +13 -13
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +10 -7
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  119. package/coverage/lcov-report/db/newid.js.html +2 -2
  120. package/coverage/lcov-report/db/utils.js.html +27 -51
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  122. package/coverage/lcov-report/events/index.html +1 -1
  123. package/coverage/lcov-report/events/index.js.html +1 -1
  124. package/coverage/lcov-report/events/utils.js.html +1 -1
  125. package/coverage/lcov-report/index.html +83 -83
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  127. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  128. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  129. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  130. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  131. package/coverage/lcov-report/middleware/index.html +1 -1
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +10 -10
  133. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  134. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  135. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  136. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  137. package/coverage/lcov-report/threads/automation.js.html +18 -9
  138. package/coverage/lcov-report/threads/index.html +25 -25
  139. package/coverage/lcov-report/threads/query.js.html +301 -79
  140. package/coverage/lcov-report/threads/utils.js.html +4 -4
  141. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  142. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  143. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  144. package/coverage/lcov-report/utilities/global.js.html +14 -14
  145. package/coverage/lcov-report/utilities/index.html +26 -26
  146. package/coverage/lcov-report/utilities/index.js.html +17 -32
  147. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  148. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  149. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  150. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  151. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  152. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  153. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  154. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  155. package/coverage/lcov-report/utilities/security.js.html +2 -2
  156. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  157. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  158. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  159. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  160. package/coverage/lcov-report/utilities/users.js.html +1 -1
  161. package/coverage/lcov-report/utilities/workerRequests.js.html +57 -9
  162. package/coverage/lcov.info +1789 -1665
  163. package/dist/api/controllers/application.js +19 -16
  164. package/dist/api/controllers/automation.js +28 -2
  165. package/dist/api/controllers/backup.js +3 -2
  166. package/dist/api/controllers/dev.js +2 -40
  167. package/dist/api/controllers/public/applications.js +1 -1
  168. package/dist/api/controllers/public/utils.js +8 -1
  169. package/dist/api/controllers/query/index.js +31 -3
  170. package/dist/api/controllers/row/external.js +19 -7
  171. package/dist/api/controllers/row/internalSearch.js +47 -10
  172. package/dist/api/controllers/row/utils.js +3 -0
  173. package/dist/api/controllers/static/index.js +1 -5
  174. package/dist/api/index.js +4 -1
  175. package/dist/api/routes/automation.js +2 -0
  176. package/dist/api/routes/dev.js +1 -2
  177. package/dist/api/routes/public/rows.js +7 -2
  178. package/dist/api/routes/utils/validators.js +1 -0
  179. package/dist/app.js +20 -0
  180. package/dist/automations/automationUtils.js +16 -4
  181. package/dist/automations/logging/index.js +70 -0
  182. package/dist/automations/steps/executeQuery.js +1 -1
  183. package/dist/automations/steps/filter.js +38 -29
  184. package/dist/automations/triggers.js +1 -1
  185. package/dist/db/linkedRows/index.js +1 -0
  186. package/dist/db/utils.js +4 -31
  187. package/dist/definitions/datasource.js +1 -0
  188. package/dist/environment.js +3 -0
  189. package/dist/integrations/airtable.js +1 -0
  190. package/dist/integrations/arangodb.js +1 -0
  191. package/dist/integrations/base/sql.js +22 -3
  192. package/dist/integrations/couchdb.js +1 -0
  193. package/dist/integrations/dynamodb.js +1 -0
  194. package/dist/integrations/elasticsearch.js +1 -0
  195. package/dist/integrations/firebase.js +1 -0
  196. package/dist/integrations/googlesheets.js +1 -0
  197. package/dist/integrations/index.js +4 -0
  198. package/dist/integrations/microsoftSqlServer.js +2 -1
  199. package/dist/integrations/mongodb.js +1 -0
  200. package/dist/integrations/mysql.js +2 -1
  201. package/dist/integrations/oracle.js +1 -0
  202. package/dist/integrations/postgres.js +2 -1
  203. package/dist/integrations/queries/sql.js +3 -0
  204. package/dist/integrations/redis.js +1 -0
  205. package/dist/integrations/rest.js +2 -1
  206. package/dist/integrations/s3.js +1 -0
  207. package/dist/integrations/snowflake.js +102 -0
  208. package/dist/package.json +7 -6
  209. package/dist/tests/utilities/TestConfiguration.js +19 -6
  210. package/dist/threads/automation.js +6 -3
  211. package/dist/threads/index.js +15 -1
  212. package/dist/threads/query.js +65 -12
  213. package/dist/tsconfig.build.tsbuildinfo +1 -1
  214. package/dist/utilities/fileSystem/index.js +16 -6
  215. package/dist/utilities/index.js +1 -5
  216. package/dist/utilities/workerRequests.js +8 -0
  217. package/package.json +8 -7
  218. package/scripts/dev/manage.js +2 -0
  219. package/scripts/integrations/oracle/instantclient/linux/arm64/basiclite-19.10.zip +0 -0
  220. package/scripts/integrations/oracle/instantclient/linux/arm64/install.sh +23 -0
  221. package/scripts/integrations/oracle/instantclient/linux/install.sh +10 -0
  222. package/specs/openapi.json +9 -5
  223. package/specs/openapi.yaml +10 -4
  224. package/src/api/controllers/application.ts +19 -19
  225. package/src/api/controllers/automation.js +35 -2
  226. package/src/api/controllers/backup.js +3 -2
  227. package/src/api/controllers/dev.js +2 -53
  228. package/src/api/controllers/public/applications.ts +2 -2
  229. package/src/api/controllers/public/utils.ts +8 -1
  230. package/src/api/controllers/query/index.ts +40 -4
  231. package/src/api/controllers/row/external.js +19 -9
  232. package/src/api/controllers/row/internalSearch.js +55 -9
  233. package/src/api/controllers/row/utils.js +3 -0
  234. package/src/api/controllers/static/index.js +1 -6
  235. package/src/api/index.js +4 -1
  236. package/src/api/routes/automation.js +10 -0
  237. package/src/api/routes/dev.js +0 -1
  238. package/src/api/routes/public/rows.ts +7 -2
  239. package/src/api/routes/tests/query.spec.js +166 -1
  240. package/src/api/routes/utils/validators.js +1 -0
  241. package/src/app.ts +30 -1
  242. package/src/automations/automationUtils.js +19 -4
  243. package/src/automations/logging/index.ts +35 -0
  244. package/src/automations/steps/executeQuery.js +1 -1
  245. package/src/automations/steps/filter.js +36 -28
  246. package/src/automations/tests/filter.spec.js +2 -1
  247. package/src/automations/triggers.js +1 -1
  248. package/src/db/linkedRows/index.js +1 -0
  249. package/src/db/utils.js +5 -13
  250. package/src/definitions/common.ts +1 -0
  251. package/src/definitions/datasource.ts +2 -0
  252. package/src/definitions/openapi.ts +471 -469
  253. package/src/environment.js +3 -0
  254. package/src/integrations/airtable.ts +1 -0
  255. package/src/integrations/arangodb.ts +1 -0
  256. package/src/integrations/base/sql.ts +29 -11
  257. package/src/integrations/couchdb.ts +1 -0
  258. package/src/integrations/dynamodb.ts +1 -0
  259. package/src/integrations/elasticsearch.ts +1 -0
  260. package/src/integrations/firebase.ts +1 -0
  261. package/src/integrations/googlesheets.ts +1 -0
  262. package/src/integrations/index.ts +4 -0
  263. package/src/integrations/microsoftSqlServer.ts +2 -0
  264. package/src/integrations/mongodb.ts +1 -0
  265. package/src/integrations/mysql.ts +2 -0
  266. package/src/integrations/oracle.ts +1 -0
  267. package/src/integrations/postgres.ts +2 -0
  268. package/src/integrations/queries/sql.ts +3 -1
  269. package/src/integrations/redis.ts +1 -0
  270. package/src/integrations/rest.ts +2 -1
  271. package/src/integrations/s3.ts +1 -0
  272. package/src/integrations/snowflake.ts +99 -0
  273. package/src/integrations/tests/rest.spec.js +16 -1
  274. package/src/migrations/tests/index.spec.ts +18 -2
  275. package/src/module.d.ts +2 -0
  276. package/src/tests/utilities/TestConfiguration.js +22 -3
  277. package/src/threads/automation.js +6 -3
  278. package/src/threads/index.ts +5 -1
  279. package/src/threads/query.js +88 -14
  280. package/src/utilities/fileSystem/index.js +22 -8
  281. package/src/utilities/index.js +1 -6
  282. package/src/utilities/workerRequests.js +16 -0
  283. package/builder/assets/index.1c640a53.js +0 -1316
  284. package/builder/assets/index.24307ca0.css +0 -6
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">71.35% </span>
26
+ <span class="strong">72.34% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>705/988</span>
28
+ <span class='fraction'>709/980</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">46.89% </span>
33
+ <span class="strong">47.22% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>136/290</span>
35
+ <span class='fraction'>136/288</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">68.11% </span>
40
+ <span class="strong">67.62% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>94/138</span>
42
+ <span class='fraction'>94/139</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">71.25% </span>
47
+ <span class="strong">72.25% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>694/974</span>
49
+ <span class='fraction'>698/966</span>
50
50
  </div>
51
51
 
52
52
 
@@ -110,17 +110,17 @@
110
110
 
111
111
  <tr>
112
112
  <td class="file high" data-value="automation.js"><a href="automation.js.html">automation.js</a></td>
113
- <td data-value="92.5" class="pic high">
114
- <div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
113
+ <td data-value="84.55" class="pic high">
114
+ <div class="chart"><div class="cover-fill" style="width: 84%"></div><div class="cover-empty" style="width: 16%"></div></div>
115
115
  </td>
116
- <td data-value="92.5" class="pct high">92.5%</td>
117
- <td data-value="120" class="abs high">111/120</td>
118
- <td data-value="73.52" class="pct medium">73.52%</td>
119
- <td data-value="34" class="abs medium">25/34</td>
120
- <td data-value="95.23" class="pct high">95.23%</td>
121
- <td data-value="21" class="abs high">20/21</td>
122
- <td data-value="92.17" class="pct high">92.17%</td>
123
- <td data-value="115" class="abs high">106/115</td>
116
+ <td data-value="84.55" class="pct high">84.55%</td>
117
+ <td data-value="136" class="abs high">115/136</td>
118
+ <td data-value="62.5" class="pct medium">62.5%</td>
119
+ <td data-value="40" class="abs medium">25/40</td>
120
+ <td data-value="83.33" class="pct high">83.33%</td>
121
+ <td data-value="24" class="abs high">20/24</td>
122
+ <td data-value="83.96" class="pct high">83.96%</td>
123
+ <td data-value="131" class="abs high">110/131</td>
124
124
  </tr>
125
125
 
126
126
  <tr>
@@ -129,13 +129,13 @@
129
129
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
130
130
  </td>
131
131
  <td data-value="100" class="pct high">100%</td>
132
- <td data-value="13" class="abs high">13/13</td>
132
+ <td data-value="14" class="abs high">14/14</td>
133
133
  <td data-value="100" class="pct high">100%</td>
134
134
  <td data-value="0" class="abs high">0/0</td>
135
135
  <td data-value="100" class="pct high">100%</td>
136
136
  <td data-value="2" class="abs high">2/2</td>
137
137
  <td data-value="100" class="pct high">100%</td>
138
- <td data-value="13" class="abs high">13/13</td>
138
+ <td data-value="14" class="abs high">14/14</td>
139
139
  </tr>
140
140
 
141
141
  <tr>
@@ -184,18 +184,18 @@
184
184
  </tr>
185
185
 
186
186
  <tr>
187
- <td class="file low" data-value="dev.js"><a href="dev.js.html">dev.js</a></td>
188
- <td data-value="45.26" class="pic low">
189
- <div class="chart"><div class="cover-fill" style="width: 45%"></div><div class="cover-empty" style="width: 55%"></div></div>
187
+ <td class="file medium" data-value="dev.js"><a href="dev.js.html">dev.js</a></td>
188
+ <td data-value="60" class="pic medium">
189
+ <div class="chart"><div class="cover-fill" style="width: 60%"></div><div class="cover-empty" style="width: 40%"></div></div>
190
190
  </td>
191
- <td data-value="45.26" class="pct low">45.26%</td>
192
- <td data-value="95" class="abs low">43/95</td>
193
- <td data-value="20" class="pct low">20%</td>
194
- <td data-value="25" class="abs low">5/25</td>
195
- <td data-value="41.66" class="pct low">41.66%</td>
196
- <td data-value="12" class="abs low">5/12</td>
197
- <td data-value="45.26" class="pct low">45.26%</td>
198
- <td data-value="95" class="abs low">43/95</td>
191
+ <td data-value="60" class="pct medium">60%</td>
192
+ <td data-value="70" class="abs medium">42/70</td>
193
+ <td data-value="29.41" class="pct low">29.41%</td>
194
+ <td data-value="17" class="abs low">5/17</td>
195
+ <td data-value="50" class="pct medium">50%</td>
196
+ <td data-value="10" class="abs medium">5/10</td>
197
+ <td data-value="60" class="pct medium">60%</td>
198
+ <td data-value="70" class="abs medium">42/70</td>
199
199
  </tr>
200
200
 
201
201
  <tr>
@@ -386,7 +386,7 @@
386
386
  <div class='footer quiet pad2 space-top1 center small'>
387
387
  Code coverage generated by
388
388
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
389
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
389
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
390
390
  </div>
391
391
  <script src="../../prettify.js"></script>
392
392
  <script>
@@ -136,7 +136,7 @@ exports.find = async function (ctx) {
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 Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
139
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
140
140
  </div>
141
141
  <script src="../../prettify.js"></script>
142
142
  <script>
@@ -232,7 +232,7 @@ exports.destroy = async function (ctx) {
232
232
  <div class='footer quiet pad2 space-top1 center small'>
233
233
  Code coverage generated by
234
234
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
235
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
235
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
236
236
  </div>
237
237
  <script src="../../prettify.js"></script>
238
238
  <script>
@@ -193,7 +193,7 @@ exports.getMetadata = async ctx =&gt; {
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
196
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
197
197
  </div>
198
198
  <script src="../../prettify.js"></script>
199
199
  <script>
@@ -109,7 +109,7 @@ exports.fetchDefinitions = <span class="fstat-no" title="function not covered" >
109
109
  <div class='footer quiet pad2 space-top1 center small'>
110
110
  Code coverage generated by
111
111
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
112
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
112
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
113
113
  </div>
114
114
  <script src="../../prettify.js"></script>
115
115
  <script>
@@ -595,7 +595,7 @@ exports.removePermission = async function (ctx) {
595
595
  <div class='footer quiet pad2 space-top1 center small'>
596
596
  Code coverage generated by
597
597
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
598
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
598
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
599
599
  </div>
600
600
  <script src="../../prettify.js"></script>
601
601
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
104
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -220,7 +220,7 @@ exports.generateQueryPreviewValidation = () =&gt; {
220
220
  <div class='footer quiet pad2 space-top1 center small'>
221
221
  Code coverage generated by
222
222
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
223
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
223
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
224
224
  </div>
225
225
  <script src="../../../prettify.js"></script>
226
226
  <script>
@@ -394,7 +394,7 @@ exports.destroy = async function (ctx) {
394
394
  <div class='footer quiet pad2 space-top1 center small'>
395
395
  Code coverage generated by
396
396
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
397
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
397
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
398
398
  </div>
399
399
  <script src="../../prettify.js"></script>
400
400
  <script>
@@ -346,7 +346,7 @@ exports.clientFetch = async ctx =&gt; {
346
346
  <div class='footer quiet pad2 space-top1 center small'>
347
347
  Code coverage generated by
348
348
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
349
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
349
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
350
350
  </div>
351
351
  <script src="../../prettify.js"></script>
352
352
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">16.07% </span>
26
+ <span class="strong">15.12% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>18/112</span>
28
+ <span class='fraction'>18/119</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/46</span>
35
+ <span class='fraction'>0/50</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">16.36% </span>
47
+ <span class="strong">15.51% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>18/110</span>
49
+ <span class='fraction'>18/116</span>
50
50
  </div>
51
51
 
52
52
 
@@ -296,7 +296,17 @@
296
296
  <a name='L231'></a><a href='#L231'>231</a>
297
297
  <a name='L232'></a><a href='#L232'>232</a>
298
298
  <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
300
310
  <span class="cline-any cline-neutral">&nbsp;</span>
301
311
  <span class="cline-any cline-neutral">&nbsp;</span>
302
312
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -459,21 +469,31 @@
459
469
  <span class="cline-any cline-no">&nbsp;</span>
460
470
  <span class="cline-any cline-no">&nbsp;</span>
461
471
  <span class="cline-any cline-no">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
472
  <span class="cline-any cline-no">&nbsp;</span>
473
+ <span class="cline-any cline-neutral">&nbsp;</span>
464
474
  <span class="cline-any cline-no">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
477
  <span class="cline-any cline-no">&nbsp;</span>
466
478
  <span class="cline-any cline-neutral">&nbsp;</span>
467
479
  <span class="cline-any cline-neutral">&nbsp;</span>
468
480
  <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-no">&nbsp;</span>
469
483
  <span class="cline-any cline-no">&nbsp;</span>
470
484
  <span class="cline-any cline-neutral">&nbsp;</span>
471
485
  <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-no">&nbsp;</span>
487
+ <span class="cline-any cline-no">&nbsp;</span>
488
+ <span class="cline-any cline-no">&nbsp;</span>
489
+ <span class="cline-any cline-no">&nbsp;</span>
490
+ <span class="cline-any cline-no">&nbsp;</span>
472
491
  <span class="cline-any cline-neutral">&nbsp;</span>
473
492
  <span class="cline-any cline-neutral">&nbsp;</span>
474
493
  <span class="cline-any cline-neutral">&nbsp;</span>
475
494
  <span class="cline-any cline-no">&nbsp;</span>
476
495
  <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
497
  <span class="cline-any cline-no">&nbsp;</span>
478
498
  <span class="cline-any cline-no">&nbsp;</span>
479
499
  <span class="cline-any cline-no">&nbsp;</span>
@@ -686,34 +706,44 @@ exports.validate = <span class="fstat-no" title="function not covered" >as</span
686
706
  }
687
707
  &nbsp;
688
708
  exports.exportRows = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
689
- const { datasourceId, tableName } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(ctx.params.tableId)</span>
709
+ const { datasourceId } = <span class="cstat-no" title="statement not covered" >breakExternalTableId(ctx.params.tableId)</span>
690
710
  const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
691
- let format = <span class="cstat-no" title="statement not covered" >ctx.query.format</span>
711
+ const format = <span class="cstat-no" title="statement not covered" >ctx.query.format</span>
712
+ const { columns } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
692
713
  const datasource = <span class="cstat-no" title="statement not covered" >await db.get(datasourceId)</span>
693
714
  <span class="cstat-no" title="statement not covered" > if (!datasource || !datasource.entities) {</span>
694
715
  <span class="cstat-no" title="statement not covered" > ctx.throw(400, "Datasource has not been configured for plus API.")</span>
695
716
  }
696
- const tables = <span class="cstat-no" title="statement not covered" >datasource.entities</span>
697
- const table = <span class="cstat-no" title="statement not covered" >tables[tableName]</span>
698
717
  <span class="cstat-no" title="statement not covered" > ctx.request.body = {</span>
699
718
  query: {
700
719
  oneOf: {
701
- [table.primaryDisplay]: ctx.request.body.rows.map(
702
- <span class="fstat-no" title="function not covered" > id</span> =&gt; <span class="cstat-no" title="statement not covered" >breakRowIdField(id)[0]</span>
703
- ),
720
+ _id: ctx.request.body.rows.map(<span class="fstat-no" title="function not covered" >ro</span>w =&gt; <span class="cstat-no" title="statement not covered" >JSON.parse(decodeURI(row))[0])</span>,
704
721
  },
705
722
  },
706
723
  }
707
724
  &nbsp;
708
725
  let result = <span class="cstat-no" title="statement not covered" >await exports.search(ctx)</span>
726
+ let rows = <span class="cstat-no" title="statement not covered" >[]</span>
727
+ &nbsp;
728
+ // Filter data to only specified columns if required
729
+ <span class="cstat-no" title="statement not covered" > if (columns &amp;&amp; columns.length) {</span>
730
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; result.rows.length; i++) {</span>
731
+ <span class="cstat-no" title="statement not covered" > rows[i] = {}</span>
732
+ <span class="cstat-no" title="statement not covered" > for (let column of columns) {</span>
733
+ <span class="cstat-no" title="statement not covered" > rows[i][column] = result.rows[i][column]</span>
734
+ }
735
+ }
736
+ } else {
737
+ <span class="cstat-no" title="statement not covered" > rows = result.rows</span>
738
+ }
709
739
  &nbsp;
710
- let headers = <span class="cstat-no" title="statement not covered" >Object.keys(result.rows[0])</span>
740
+ let headers = <span class="cstat-no" title="statement not covered" >Object.keys(rows[0])</span>
711
741
  const exporter = <span class="cstat-no" title="statement not covered" >exporters[format]</span>
712
742
  const filename = <span class="cstat-no" title="statement not covered" >`export.${format}`</span>
713
743
  &nbsp;
714
744
  // send down the file
715
745
  <span class="cstat-no" title="statement not covered" > ctx.attachment(filename)</span>
716
- <span class="cstat-no" title="statement not covered" > return apiFileReturn(exporter(headers, result.rows))</span>
746
+ <span class="cstat-no" title="statement not covered" > return apiFileReturn(exporter(headers, rows))</span>
717
747
  }
718
748
  &nbsp;
719
749
  exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >as</span>ync ctx =&gt; {
@@ -769,7 +799,7 @@ exports.fetchEnrichedRow = <span class="fstat-no" title="function not covered" >
769
799
  <div class='footer quiet pad2 space-top1 center small'>
770
800
  Code coverage generated by
771
801
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
772
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
802
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
773
803
  </div>
774
804
  <script src="../../../prettify.js"></script>
775
805
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">57.87% </span>
26
+ <span class="strong">56.91% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>349/603</span>
28
+ <span class='fraction'>362/636</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">35.82% </span>
33
+ <span class="strong">35.61% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>96/268</span>
35
+ <span class='fraction'>104/292</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">53.48% </span>
40
+ <span class="strong">52.27% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>46/86</span>
42
+ <span class='fraction'>46/88</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">57.96% </span>
47
+ <span class="strong">57.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>342/590</span>
49
+ <span class='fraction'>355/621</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file low" data-value="external.js"><a href="external.js.html">external.js</a></td>
83
- <td data-value="16.07" class="pic low">
84
- <div class="chart"><div class="cover-fill" style="width: 16%"></div><div class="cover-empty" style="width: 84%"></div></div>
83
+ <td data-value="15.12" class="pic low">
84
+ <div class="chart"><div class="cover-fill" style="width: 15%"></div><div class="cover-empty" style="width: 85%"></div></div>
85
85
  </td>
86
- <td data-value="16.07" class="pct low">16.07%</td>
87
- <td data-value="112" class="abs low">18/112</td>
86
+ <td data-value="15.12" class="pct low">15.12%</td>
87
+ <td data-value="119" class="abs low">18/119</td>
88
88
  <td data-value="0" class="pct low">0%</td>
89
- <td data-value="46" class="abs low">0/46</td>
89
+ <td data-value="50" class="abs low">0/50</td>
90
90
  <td data-value="0" class="pct low">0%</td>
91
91
  <td data-value="15" class="abs low">0/15</td>
92
- <td data-value="16.36" class="pct low">16.36%</td>
93
- <td data-value="110" class="abs low">18/110</td>
92
+ <td data-value="15.51" class="pct low">15.51%</td>
93
+ <td data-value="116" class="abs low">18/116</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
@@ -110,17 +110,17 @@
110
110
 
111
111
  <tr>
112
112
  <td class="file medium" data-value="internalSearch.js"><a href="internalSearch.js.html">internalSearch.js</a></td>
113
- <td data-value="60.89" class="pic medium">
113
+ <td data-value="60" class="pic medium">
114
114
  <div class="chart"><div class="cover-fill" style="width: 60%"></div><div class="cover-empty" style="width: 40%"></div></div>
115
115
  </td>
116
- <td data-value="60.89" class="pct medium">60.89%</td>
117
- <td data-value="156" class="abs medium">95/156</td>
118
- <td data-value="40" class="pct low">40%</td>
119
- <td data-value="95" class="abs low">38/95</td>
120
- <td data-value="54.54" class="pct medium">54.54%</td>
121
- <td data-value="33" class="abs medium">18/33</td>
122
- <td data-value="61.43" class="pct medium">61.43%</td>
123
- <td data-value="153" class="abs medium">94/153</td>
116
+ <td data-value="60" class="pct medium">60%</td>
117
+ <td data-value="180" class="abs medium">108/180</td>
118
+ <td data-value="40.7" class="pct low">40.7%</td>
119
+ <td data-value="113" class="abs low">46/113</td>
120
+ <td data-value="51.42" class="pct medium">51.42%</td>
121
+ <td data-value="35" class="abs medium">18/35</td>
122
+ <td data-value="60.79" class="pct medium">60.79%</td>
123
+ <td data-value="176" class="abs medium">107/176</td>
124
124
  </tr>
125
125
 
126
126
  <tr>
@@ -140,17 +140,17 @@
140
140
 
141
141
  <tr>
142
142
  <td class="file medium" data-value="utils.js"><a href="utils.js.html">utils.js</a></td>
143
- <td data-value="69.23" class="pic medium">
144
- <div class="chart"><div class="cover-fill" style="width: 69%"></div><div class="cover-empty" style="width: 31%"></div></div>
143
+ <td data-value="66.66" class="pic medium">
144
+ <div class="chart"><div class="cover-fill" style="width: 66%"></div><div class="cover-empty" style="width: 34%"></div></div>
145
145
  </td>
146
- <td data-value="69.23" class="pct medium">69.23%</td>
147
- <td data-value="52" class="abs medium">36/52</td>
148
- <td data-value="40.62" class="pct low">40.62%</td>
149
- <td data-value="32" class="abs low">13/32</td>
146
+ <td data-value="66.66" class="pct medium">66.66%</td>
147
+ <td data-value="54" class="abs medium">36/54</td>
148
+ <td data-value="38.23" class="pct low">38.23%</td>
149
+ <td data-value="34" class="abs low">13/34</td>
150
150
  <td data-value="66.66" class="pct medium">66.66%</td>
151
151
  <td data-value="6" class="abs medium">4/6</td>
152
- <td data-value="68.62" class="pct medium">68.62%</td>
153
- <td data-value="51" class="abs medium">35/51</td>
152
+ <td data-value="66.03" class="pct medium">66.03%</td>
153
+ <td data-value="53" class="abs medium">35/53</td>
154
154
  </tr>
155
155
 
156
156
  </tbody>
@@ -161,7 +161,7 @@
161
161
  <div class='footer quiet pad2 space-top1 center small'>
162
162
  Code coverage generated by
163
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
164
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
165
165
  </div>
166
166
  <script src="../../../prettify.js"></script>
167
167
  <script>
@@ -1435,7 +1435,7 @@ exports.fetchEnrichedRow = async ctx =&gt; {
1435
1435
  <div class='footer quiet pad2 space-top1 center small'>
1436
1436
  Code coverage generated by
1437
1437
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1438
- at Fri Jul 08 2022 12:33:10 GMT+0000 (Coordinated Universal Time)
1438
+ at Mon Jul 11 2022 11:03:31 GMT+0000 (Coordinated Universal Time)
1439
1439
  </div>
1440
1440
  <script src="../../../prettify.js"></script>
1441
1441
  <script>