@budibase/server 2.2.12-alpha.47 → 2.2.12-alpha.49

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 (371) hide show
  1. package/builder/assets/{index.1abbc09d.js → index.1d6d51b0.js} +294 -294
  2. package/builder/assets/{index.cd9a1fa6.css → index.401c667d.css} +1 -1
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +516 -477
  5. package/coverage/coverage-final.json +7 -8
  6. package/coverage/lcov-report/index.html +48 -48
  7. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
  8. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +1 -1
  9. package/coverage/lcov-report/src/api/controllers/application.ts.html +1 -1
  10. package/coverage/lcov-report/src/api/controllers/auth.ts.html +1 -1
  11. package/coverage/lcov-report/src/api/controllers/automation.ts.html +1 -1
  12. package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
  13. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +1 -1
  14. package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
  15. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +1 -1
  16. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +1 -1
  17. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/dev.ts.html +1 -1
  20. package/coverage/lcov-report/src/api/controllers/index.html +1 -1
  21. package/coverage/lcov-report/src/api/controllers/integration.ts.html +1 -1
  22. package/coverage/lcov-report/src/api/controllers/layout.ts.html +1 -1
  23. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +1 -1
  24. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +1 -1
  25. package/coverage/lcov-report/src/api/controllers/permission.ts.html +1 -1
  26. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +1 -1
  27. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +1 -1
  28. package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +1 -1
  31. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +1 -1
  32. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +1 -1
  33. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +1 -1
  34. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +1 -1
  35. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  36. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
  43. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
  44. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
  45. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +1 -1
  46. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
  47. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
  48. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
  57. package/coverage/lcov-report/src/api/controllers/query/index.html +1 -1
  58. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +1 -1
  59. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +1 -1
  60. package/coverage/lcov-report/src/api/controllers/role.ts.html +1 -1
  61. package/coverage/lcov-report/src/api/controllers/routing.ts.html +1 -1
  62. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +1 -1
  63. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +50 -17
  64. package/coverage/lcov-report/src/api/controllers/row/index.html +34 -34
  65. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +1 -1
  66. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +90 -21
  67. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1 -1
  68. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +1 -1
  69. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +124 -10
  70. package/coverage/lcov-report/src/api/controllers/screen.ts.html +1 -1
  71. package/coverage/lcov-report/src/api/controllers/script.ts.html +1 -1
  72. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  73. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +1 -1
  74. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +1 -1
  75. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +1 -1
  76. package/coverage/lcov-report/src/api/controllers/table/index.html +1 -1
  77. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +1 -1
  78. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +1 -1
  79. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1 -1
  80. package/coverage/lcov-report/src/api/controllers/templates.ts.html +1 -1
  81. package/coverage/lcov-report/src/api/controllers/user.ts.html +1 -1
  82. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +2 -2
  83. package/coverage/lcov-report/src/api/controllers/view/index.html +19 -19
  84. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +16 -82
  85. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +1 -1
  86. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +1 -1
  87. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +1 -1
  88. package/coverage/lcov-report/src/api/index.html +1 -1
  89. package/coverage/lcov-report/src/api/index.ts.html +1 -1
  90. package/coverage/lcov-report/src/api/routes/analytics.ts.html +1 -1
  91. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +1 -1
  92. package/coverage/lcov-report/src/api/routes/application.ts.html +1 -1
  93. package/coverage/lcov-report/src/api/routes/auth.ts.html +1 -1
  94. package/coverage/lcov-report/src/api/routes/automation.ts.html +1 -1
  95. package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
  96. package/coverage/lcov-report/src/api/routes/cloud.ts.html +1 -1
  97. package/coverage/lcov-report/src/api/routes/component.ts.html +1 -1
  98. package/coverage/lcov-report/src/api/routes/datasource.ts.html +1 -1
  99. package/coverage/lcov-report/src/api/routes/deploy.ts.html +1 -1
  100. package/coverage/lcov-report/src/api/routes/dev.ts.html +1 -1
  101. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  102. package/coverage/lcov-report/src/api/routes/index.ts.html +1 -1
  103. package/coverage/lcov-report/src/api/routes/integration.ts.html +1 -1
  104. package/coverage/lcov-report/src/api/routes/layout.ts.html +1 -1
  105. package/coverage/lcov-report/src/api/routes/metadata.ts.html +1 -1
  106. package/coverage/lcov-report/src/api/routes/migrations.ts.html +1 -1
  107. package/coverage/lcov-report/src/api/routes/permission.ts.html +1 -1
  108. package/coverage/lcov-report/src/api/routes/plugin.ts.html +1 -1
  109. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +1 -1
  110. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  111. package/coverage/lcov-report/src/api/routes/public/index.ts.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  113. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
  115. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
  116. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
  117. package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
  118. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
  119. package/coverage/lcov-report/src/api/routes/public/users.ts.html +1 -1
  120. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
  121. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  122. package/coverage/lcov-report/src/api/routes/query.ts.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/role.ts.html +1 -1
  124. package/coverage/lcov-report/src/api/routes/routing.ts.html +1 -1
  125. package/coverage/lcov-report/src/api/routes/row.ts.html +1 -1
  126. package/coverage/lcov-report/src/api/routes/screen.ts.html +1 -1
  127. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  128. package/coverage/lcov-report/src/api/routes/static.ts.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/table.ts.html +1 -1
  130. package/coverage/lcov-report/src/api/routes/templates.ts.html +1 -1
  131. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +1 -1
  134. package/coverage/lcov-report/src/api/routes/user.ts.html +1 -1
  135. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  136. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/view.ts.html +1 -1
  138. package/coverage/lcov-report/src/api/routes/webhook.ts.html +1 -1
  139. package/coverage/lcov-report/src/app.ts.html +1 -1
  140. package/coverage/lcov-report/src/automations/actions.ts.html +1 -1
  141. package/coverage/lcov-report/src/automations/automationUtils.ts.html +1 -1
  142. package/coverage/lcov-report/src/automations/bullboard.ts.html +1 -1
  143. package/coverage/lcov-report/src/automations/index.html +1 -1
  144. package/coverage/lcov-report/src/automations/index.ts.html +1 -1
  145. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  146. package/coverage/lcov-report/src/automations/logging/index.ts.html +1 -1
  147. package/coverage/lcov-report/src/automations/steps/bash.ts.html +1 -1
  148. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
  149. package/coverage/lcov-report/src/automations/steps/delay.ts.html +1 -1
  150. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
  151. package/coverage/lcov-report/src/automations/steps/discord.ts.html +1 -1
  152. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +1 -1
  153. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +1 -1
  154. package/coverage/lcov-report/src/automations/steps/filter.ts.html +1 -1
  155. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  156. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/loop.ts.html +1 -1
  158. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +1 -1
  159. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +1 -1
  160. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +1 -1
  161. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +1 -1
  162. package/coverage/lcov-report/src/automations/steps/slack.ts.html +1 -1
  163. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +1 -1
  164. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  165. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +1 -1
  166. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  168. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +1 -1
  170. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +1 -1
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +1 -1
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +1 -1
  175. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +1 -1
  176. package/coverage/lcov-report/src/automations/triggers.ts.html +1 -1
  177. package/coverage/lcov-report/src/automations/utils.ts.html +1 -1
  178. package/coverage/lcov-report/src/constants/index.html +1 -1
  179. package/coverage/lcov-report/src/constants/index.ts.html +1 -1
  180. package/coverage/lcov-report/src/constants/layouts.ts.html +1 -1
  181. package/coverage/lcov-report/src/constants/screens.ts.html +1 -1
  182. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +1 -1
  183. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +1 -1
  184. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +1 -1
  185. package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
  186. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +1 -1
  187. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +1 -1
  188. package/coverage/lcov-report/src/db/dynamoClient.ts.html +1 -1
  189. package/coverage/lcov-report/src/db/inMemoryView.ts.html +1 -1
  190. package/coverage/lcov-report/src/db/index.html +1 -1
  191. package/coverage/lcov-report/src/db/index.ts.html +1 -1
  192. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +1 -1
  193. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +1 -1
  194. package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
  195. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +1 -1
  196. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +1 -1
  197. package/coverage/lcov-report/src/db/newid.ts.html +1 -1
  198. package/coverage/lcov-report/src/db/utils.ts.html +1 -1
  199. package/coverage/lcov-report/src/definitions/automations.ts.html +1 -1
  200. package/coverage/lcov-report/src/definitions/index.html +5 -20
  201. package/coverage/lcov-report/src/environment.ts.html +1 -1
  202. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
  203. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
  204. package/coverage/lcov-report/src/events/index.html +1 -1
  205. package/coverage/lcov-report/src/events/index.ts.html +1 -1
  206. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  207. package/coverage/lcov-report/src/index.html +1 -1
  208. package/coverage/lcov-report/src/index.ts.html +1 -1
  209. package/coverage/lcov-report/src/integrations/airtable.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/arangodb.ts.html +1 -1
  211. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  212. package/coverage/lcov-report/src/integrations/base/query.ts.html +1 -1
  213. package/coverage/lcov-report/src/integrations/base/sql.ts.html +1 -1
  214. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +1 -1
  215. package/coverage/lcov-report/src/integrations/base/utils.ts.html +1 -1
  216. package/coverage/lcov-report/src/integrations/couchdb.ts.html +1 -1
  217. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +1 -1
  218. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +1 -1
  219. package/coverage/lcov-report/src/integrations/firebase.ts.html +1 -1
  220. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1 -1
  221. package/coverage/lcov-report/src/integrations/index.html +10 -10
  222. package/coverage/lcov-report/src/integrations/index.ts.html +1 -1
  223. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1 -1
  224. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1 -1
  225. package/coverage/lcov-report/src/integrations/mysql.ts.html +1 -1
  226. package/coverage/lcov-report/src/integrations/oracle.ts.html +1 -1
  227. package/coverage/lcov-report/src/integrations/postgres.ts.html +1 -1
  228. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  229. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  230. package/coverage/lcov-report/src/integrations/redis.ts.html +1 -1
  231. package/coverage/lcov-report/src/integrations/rest.ts.html +15 -24
  232. package/coverage/lcov-report/src/integrations/s3.ts.html +1 -1
  233. package/coverage/lcov-report/src/integrations/snowflake.ts.html +1 -1
  234. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  235. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  236. package/coverage/lcov-report/src/integrations/utils.ts.html +1 -1
  237. package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
  238. package/coverage/lcov-report/src/middleware/authorized.ts.html +1 -1
  239. package/coverage/lcov-report/src/middleware/builder.ts.html +1 -1
  240. package/coverage/lcov-report/src/middleware/currentapp.ts.html +1 -1
  241. package/coverage/lcov-report/src/middleware/index.html +1 -1
  242. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  243. package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
  244. package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
  245. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  246. package/coverage/lcov-report/src/middleware/utils.ts.html +1 -1
  247. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
  248. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  249. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  257. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  263. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  265. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  267. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
  268. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  269. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
  273. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
  274. package/coverage/lcov-report/src/migrations/index.html +1 -1
  275. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  276. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  277. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  278. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  279. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  280. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +1 -1
  281. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +1 -1
  282. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +1 -1
  283. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  284. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
  285. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +1 -1
  286. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +1 -1
  288. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +1 -1
  289. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  290. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
  291. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
  292. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +143 -29
  293. package/coverage/lcov-report/src/sdk/app/datasources/index.html +21 -21
  294. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +1 -1
  295. package/coverage/lcov-report/src/sdk/app/queries/index.html +1 -1
  296. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +1 -1
  298. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +1 -1
  299. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  300. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +1 -1
  301. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +1 -1
  302. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  303. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +1 -1
  304. package/coverage/lcov-report/src/sdk/index.html +1 -1
  305. package/coverage/lcov-report/src/sdk/index.ts.html +1 -1
  306. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  307. package/coverage/lcov-report/src/sdk/users/index.ts.html +1 -1
  308. package/coverage/lcov-report/src/sdk/users/utils.ts.html +1 -1
  309. package/coverage/lcov-report/src/sdk/utils/index.html +1 -1
  310. package/coverage/lcov-report/src/sdk/utils/index.ts.html +1 -1
  311. package/coverage/lcov-report/src/startup.ts.html +1 -1
  312. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +1 -1
  313. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +1 -1
  314. package/coverage/lcov-report/src/tests/utilities/index.html +1 -1
  315. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  316. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +1 -1
  317. package/coverage/lcov-report/src/threads/automation.ts.html +1 -1
  318. package/coverage/lcov-report/src/threads/index.html +1 -1
  319. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  320. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  321. package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
  322. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +1 -1
  323. package/coverage/lcov-report/src/utilities/centralPath.ts.html +1 -1
  324. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +1 -1
  325. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +1 -1
  326. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +1 -1
  327. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  328. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1 -1
  329. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +1 -1
  330. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  331. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +1 -1
  332. package/coverage/lcov-report/src/utilities/global.ts.html +1 -1
  333. package/coverage/lcov-report/src/utilities/index.html +1 -1
  334. package/coverage/lcov-report/src/utilities/index.ts.html +1 -1
  335. package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
  336. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  337. package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  339. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +1 -1
  340. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +1 -1
  341. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +1 -1
  342. package/coverage/lcov-report/src/utilities/schema.ts.html +1 -1
  343. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
  344. package/coverage/lcov-report/src/utilities/security.ts.html +1 -1
  345. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  346. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +1 -1
  347. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  348. package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
  349. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +1 -1
  350. package/coverage/lcov-report/src/watch.ts.html +1 -1
  351. package/coverage/lcov-report/src/websocket.ts.html +1 -1
  352. package/coverage/lcov.info +885 -822
  353. package/dist/api/controllers/row/external.js +14 -8
  354. package/dist/api/controllers/row/internal.js +30 -9
  355. package/dist/api/controllers/row/utils.js +30 -1
  356. package/dist/api/controllers/view/index.js +5 -26
  357. package/dist/definitions/datasource.js +0 -6
  358. package/dist/integrations/rest.js +2 -4
  359. package/dist/package.json +6 -6
  360. package/dist/sdk/app/datasources/datasources.js +46 -12
  361. package/dist/tsconfig.build.tsbuildinfo +1 -1
  362. package/package.json +7 -7
  363. package/src/api/controllers/row/external.ts +21 -10
  364. package/src/api/controllers/row/internal.ts +35 -12
  365. package/src/api/controllers/row/utils.ts +38 -0
  366. package/src/api/controllers/view/index.ts +5 -27
  367. package/src/definitions/datasource.ts +0 -41
  368. package/src/integrations/rest.ts +8 -11
  369. package/src/integrations/tests/rest.spec.ts +4 -2
  370. package/src/sdk/app/datasources/datasources.ts +50 -12
  371. package/coverage/lcov-report/src/definitions/datasource.ts.html +0 -235
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">85.58% </span>
26
+ <span class="strong">82.37% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>196/229</span>
28
+ <span class='fraction'>201/244</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">57.89% </span>
33
+ <span class="strong">55.07% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>33/57</span>
35
+ <span class='fraction'>38/69</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">85.58% </span>
47
+ <span class="strong">82.27% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>190/222</span>
49
+ <span class='fraction'>195/237</span>
50
50
  </div>
51
51
 
52
52
 
@@ -548,7 +548,30 @@
548
548
  <a name='L483'></a><a href='#L483'>483</a>
549
549
  <a name='L484'></a><a href='#L484'>484</a>
550
550
  <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">56x</span>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">56x</span>
552
575
  <span class="cline-any cline-neutral">&nbsp;</span>
553
576
  <span class="cline-any cline-neutral">&nbsp;</span>
554
577
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -590,6 +613,8 @@
590
613
  <span class="cline-any cline-neutral">&nbsp;</span>
591
614
  <span class="cline-any cline-yes">56x</span>
592
615
  <span class="cline-any cline-neutral">&nbsp;</span>
616
+ <span class="cline-any cline-yes">56x</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
618
  <span class="cline-any cline-neutral">&nbsp;</span>
594
619
  <span class="cline-any cline-neutral">&nbsp;</span>
595
620
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -910,6 +935,14 @@
910
935
  <span class="cline-any cline-neutral">&nbsp;</span>
911
936
  <span class="cline-any cline-yes">6x</span>
912
937
  <span class="cline-any cline-no">&nbsp;</span>
938
+ <span class="cline-any cline-no">&nbsp;</span>
939
+ <span class="cline-any cline-no">&nbsp;</span>
940
+ <span class="cline-any cline-no">&nbsp;</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-neutral">&nbsp;</span>
943
+ <span class="cline-any cline-neutral">&nbsp;</span>
944
+ <span class="cline-any cline-yes">6x</span>
945
+ <span class="cline-any cline-no">&nbsp;</span>
913
946
  <span class="cline-any cline-neutral">&nbsp;</span>
914
947
  <span class="cline-any cline-yes">6x</span>
915
948
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -940,6 +973,9 @@
940
973
  <span class="cline-any cline-yes">2x</span>
941
974
  <span class="cline-any cline-yes">2x</span>
942
975
  <span class="cline-any cline-yes">2x</span>
976
+ <span class="cline-any cline-neutral">&nbsp;</span>
977
+ <span class="cline-any cline-neutral">&nbsp;</span>
978
+ <span class="cline-any cline-yes">2x</span>
943
979
  <span class="cline-any cline-yes">2x</span>
944
980
  <span class="cline-any cline-neutral">&nbsp;</span>
945
981
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -948,6 +984,12 @@
948
984
  <span class="cline-any cline-yes">2x</span>
949
985
  <span class="cline-any cline-neutral">&nbsp;</span>
950
986
  <span class="cline-any cline-yes">2x</span>
987
+ <span class="cline-any cline-no">&nbsp;</span>
988
+ <span class="cline-any cline-no">&nbsp;</span>
989
+ <span class="cline-any cline-no">&nbsp;</span>
990
+ <span class="cline-any cline-neutral">&nbsp;</span>
991
+ <span class="cline-any cline-neutral">&nbsp;</span>
992
+ <span class="cline-any cline-yes">2x</span>
951
993
  <span class="cline-any cline-yes">2x</span>
952
994
  <span class="cline-any cline-neutral">&nbsp;</span>
953
995
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -963,11 +1005,15 @@
963
1005
  <span class="cline-any cline-neutral">&nbsp;</span>
964
1006
  <span class="cline-any cline-neutral">&nbsp;</span>
965
1007
  <span class="cline-any cline-yes">2x</span>
1008
+ <span class="cline-any cline-yes">2x</span>
966
1009
  <span class="cline-any cline-no">&nbsp;</span>
967
1010
  <span class="cline-any cline-no">&nbsp;</span>
968
1011
  <span class="cline-any cline-yes">2x</span>
969
1012
  <span class="cline-any cline-yes">2x</span>
970
1013
  <span class="cline-any cline-yes">2x</span>
1014
+ <span class="cline-any cline-no">&nbsp;</span>
1015
+ <span class="cline-any cline-no">&nbsp;</span>
1016
+ <span class="cline-any cline-no">&nbsp;</span>
971
1017
  <span class="cline-any cline-neutral">&nbsp;</span>
972
1018
  <span class="cline-any cline-no">&nbsp;</span>
973
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1062,7 +1108,7 @@ import {
1062
1108
  import { cloneDeep } from "lodash/fp"
1063
1109
  import { context, db as dbCore } from "@budibase/backend-core"
1064
1110
  import { finaliseRow, updateRelatedFormula } from "./staticFormula"
1065
- import { csv, json, jsonWithSchema, Format, isFormat } from "../view/exporters"
1111
+ import { csv, json, jsonWithSchema, Format } from "../view/exporters"
1066
1112
  import { apiFileReturn } from "../../../utilities/fileSystem"
1067
1113
  import {
1068
1114
  Ctx,
@@ -1073,6 +1119,8 @@ import {
1073
1119
  Table,
1074
1120
  } from "@budibase/types"
1075
1121
  &nbsp;
1122
+ const { cleanExportRows } = require("./utils")
1123
+ &nbsp;
1076
1124
  const CALCULATION_TYPES = {
1077
1125
  SUM: "sum",
1078
1126
  COUNT: "count",
@@ -1391,6 +1439,14 @@ export async function search(ctx: Ctx) {
1391
1439
  const { paginate, query, ...params } = ctx.request.body
1392
1440
  params.version = ctx.version
1393
1441
  params.tableId = tableId
1442
+ &nbsp;
1443
+ let table
1444
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (params.sort &amp;&amp; !params.sortType) {
1445
+ <span class="cstat-no" title="statement not covered" > table = await db.get(tableId)</span>
1446
+ const schema = <span class="cstat-no" title="statement not covered" >table.schema</span>
1447
+ const sortField = <span class="cstat-no" title="statement not covered" >schema[params.sort]</span>
1448
+ <span class="cstat-no" title="statement not covered" > params.sortType = sortField.type == "number" ? "number" : "string"</span>
1449
+ }
1394
1450
  &nbsp;
1395
1451
  let response
1396
1452
  <span class="missing-if-branch" title="if path not taken" >I</span>if (paginate) {
@@ -1405,7 +1461,7 @@ export async function search(ctx: Ctx) {
1405
1461
  <span class="missing-if-branch" title="if path not taken" >I</span>if (tableId === InternalTables.USER_METADATA) {
1406
1462
  <span class="cstat-no" title="statement not covered" > response.rows = await getGlobalUsersFromMetadata(response.rows)</span>
1407
1463
  }
1408
- const table = await db.get(tableId)
1464
+ table = table || (await db.get(tableId))
1409
1465
  response.rows = await outputProcessing(table, response.rows)
1410
1466
  }
1411
1467
  &nbsp;
@@ -1424,16 +1480,25 @@ export async function exportRows(ctx: Ctx) {
1424
1480
  const table = await db.get(ctx.params.tableId)
1425
1481
  const rowIds = ctx.request.body.rows
1426
1482
  let format = ctx.query.format
1427
- const { columns } = ctx.request.body
1428
- let response = (
1429
- await db.allDocs({
1430
- include_docs: true,
1431
- keys: rowIds,
1432
- })
1433
- ).rows.map(row =&gt; row.doc)
1483
+ const { columns, query } = ctx.request.body
1484
+ &nbsp;
1485
+ let result
1486
+ if (rowIds) {
1487
+ let response = (
1488
+ await db.allDocs({
1489
+ include_docs: true,
1490
+ keys: rowIds,
1491
+ })
1492
+ ).rows.map(row =&gt; row.doc)
1493
+ &nbsp;
1494
+ result = await outputProcessing(table, response)
1495
+ } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span><span class="missing-if-branch" title="else path not taken" >E</span>if (query) {</span>
1496
+ let searchResponse = <span class="cstat-no" title="statement not covered" >await exports.search(ctx)</span>
1497
+ <span class="cstat-no" title="statement not covered" > result = searchResponse.rows</span>
1498
+ }
1434
1499
  &nbsp;
1435
- let result = (await outputProcessing(table, response)) as Row[]
1436
1500
  let rows: Row[] = []
1501
+ let schema = table.schema
1437
1502
  &nbsp;
1438
1503
  // Filter data to only specified columns if required
1439
1504
  if (columns &amp;&amp; columns.length) {
@@ -1447,13 +1512,17 @@ export async function exportRows(ctx: Ctx) {
1447
1512
  rows = result
1448
1513
  }
1449
1514
  &nbsp;
1515
+ let exportRows = cleanExportRows(rows, schema, format, columns)
1450
1516
  <span class="missing-if-branch" title="if path not taken" >I</span>if (format === Format.CSV) {
1451
1517
  <span class="cstat-no" title="statement not covered" > ctx.attachment("export.csv")</span>
1452
- <span class="cstat-no" title="statement not covered" > return apiFileReturn(csv(Object.keys(rows[0]), rows))</span>
1518
+ <span class="cstat-no" title="statement not covered" > return apiFileReturn(csv(Object.keys(rows[0]), exportRows))</span>
1453
1519
  } else if (format === Format.JSON) {
1454
1520
  ctx.attachment("export.json")
1455
- return apiFileReturn(json(rows))
1456
- } else <span class="missing-if-branch" title="else path not taken" >E</span>{
1521
+ return apiFileReturn(json(exportRows))
1522
+ } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (format === Format.JSON_WITH_SCHEMA) {</span>
1523
+ <span class="cstat-no" title="statement not covered" > ctx.attachment("export.json")</span>
1524
+ <span class="cstat-no" title="statement not covered" > return apiFileReturn(jsonWithSchema(schema, exportRows))</span>
1525
+ } else {
1457
1526
  <span class="cstat-no" title="statement not covered" > throw "Format not recognised"</span>
1458
1527
  }
1459
1528
  }
@@ -1525,7 +1594,7 @@ export async function fetchEnrichedRow(ctx: Ctx) {
1525
1594
  <div class='footer quiet pad2 space-top1 center small'>
1526
1595
  Code coverage generated by
1527
1596
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1528
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
1597
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
1529
1598
  </div>
1530
1599
  <script src="../../../../prettify.js"></script>
1531
1600
  <script>
@@ -1663,7 +1663,7 @@ export async function fullSearch(query: SearchFilters, params: SearchParams) {
1663
1663
  <div class='footer quiet pad2 space-top1 center small'>
1664
1664
  Code coverage generated by
1665
1665
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1666
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
1666
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
1667
1667
  </div>
1668
1668
  <script src="../../../../prettify.js"></script>
1669
1669
  <script>
@@ -562,7 +562,7 @@ export async function finaliseRow(
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 Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
565
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
566
566
  </div>
567
567
  <script src="../../../../prettify.js"></script>
568
568
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">63.93% </span>
26
+ <span class="strong">65% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>39/61</span>
28
+ <span class='fraction'>52/80</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">35.48% </span>
33
+ <span class="strong">36.11% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>11/31</span>
35
+ <span class='fraction'>13/36</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">80% </span>
40
+ <span class="strong">68.75% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>8/10</span>
42
+ <span class='fraction'>11/16</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">62.71% </span>
47
+ <span class="strong">64.1% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>37/59</span>
49
+ <span class='fraction'>50/78</span>
50
50
  </div>
51
51
 
52
52
 
@@ -182,7 +182,45 @@
182
182
  <a name='L117'></a><a href='#L117'>117</a>
183
183
  <a name='L118'></a><a href='#L118'>118</a>
184
184
  <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">57x</span>
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>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">57x</span>
186
224
  <span class="cline-any cline-yes">57x</span>
187
225
  <span class="cline-any cline-yes">57x</span>
188
226
  <span class="cline-any cline-yes">57x</span>
@@ -191,6 +229,7 @@
191
229
  <span class="cline-any cline-yes">75x</span>
192
230
  <span class="cline-any cline-yes">57x</span>
193
231
  <span class="cline-any cline-yes">57x</span>
232
+ <span class="cline-any cline-yes">57x</span>
194
233
  <span class="cline-any cline-neutral">&nbsp;</span>
195
234
  <span class="cline-any cline-yes">57x</span>
196
235
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -301,6 +340,43 @@
301
340
  <span class="cline-any cline-neutral">&nbsp;</span>
302
341
  <span class="cline-any cline-yes">87x</span>
303
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-yes">116x</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-yes">6x</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-yes">6x</span>
353
+ <span class="cline-any cline-yes">12x</span>
354
+ <span class="cline-any cline-no">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-yes">6x</span>
357
+ <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-no">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-yes">6x</span>
365
+ <span class="cline-any cline-yes">2x</span>
366
+ <span class="cline-any cline-yes">2x</span>
367
+ <span class="cline-any cline-yes">4x</span>
368
+ <span class="cline-any cline-no">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-yes">4x</span>
371
+ <span class="cline-any cline-yes">4x</span>
372
+ <span class="cline-any cline-no">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-yes">6x</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
380
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { InternalTables } from "../../../db/utils"
305
381
  import * as userController from "../user"
306
382
  import { FieldTypes } from "../../../constants"
@@ -310,6 +386,7 @@ import { BBContext, Row, Table } from "@budibase/types"
310
386
  export { removeKeyNumbering } from "../../../integrations/base/utils"
311
387
  const validateJs = require("validate.js")
312
388
  const { cloneDeep } = require("lodash/fp")
389
+ import { Format } from "../view/exporters"
313
390
  import { Ctx } from "@budibase/types"
314
391
  import sdk from "../../../sdk"
315
392
  &nbsp;
@@ -420,6 +497,43 @@ export async function validate({
420
497
  }
421
498
  return { valid: Object.keys(errors).length === 0, errors }
422
499
  }
500
+ &nbsp;
501
+ export function cleanExportRows(
502
+ rows: any[],
503
+ schema: any,
504
+ format: string,
505
+ columns: string[]
506
+ ) {
507
+ let cleanRows = [...rows]
508
+ &nbsp;
509
+ const relationships = Object.entries(schema)
510
+ .filter((entry: any[]) =&gt; entry[1].type === FieldTypes.LINK)
511
+ .map(<span class="fstat-no" title="function not covered" >entry =&gt; <span class="cstat-no" title="statement not covered" >e</span>ntry[0])</span>
512
+ &nbsp;
513
+ relationships.forEach(<span class="fstat-no" title="function not covered" >column =&gt; {</span>
514
+ <span class="cstat-no" title="statement not covered" > cleanRows.forEach(<span class="fstat-no" title="function not covered" >row =&gt; {</span></span>
515
+ <span class="cstat-no" title="statement not covered" > delete row[column]</span>
516
+ })
517
+ <span class="cstat-no" title="statement not covered" > delete schema[column]</span>
518
+ })
519
+ &nbsp;
520
+ // Intended to avoid 'undefined' in export
521
+ if (format === Format.CSV) {
522
+ const schemaKeys = Object.keys(schema)
523
+ for (let key of schemaKeys) {
524
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (columns?.length &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >columns.indexOf(key) &gt; 0) {</span>
525
+ <span class="cstat-no" title="statement not covered" > continue</span>
526
+ }
527
+ for (let row of cleanRows) {
528
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (row[key] == null) {
529
+ <span class="cstat-no" title="statement not covered" > row[key] = ""</span>
530
+ }
531
+ }
532
+ }
533
+ }
534
+ &nbsp;
535
+ return cleanRows
536
+ }
423
537
  &nbsp;</pre></td></tr></table></pre>
424
538
 
425
539
  <div class='push'></div><!-- for sticky footer -->
@@ -427,7 +541,7 @@ export async function validate({
427
541
  <div class='footer quiet pad2 space-top1 center small'>
428
542
  Code coverage generated by
429
543
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
430
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
544
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
431
545
  </div>
432
546
  <script src="../../../../prettify.js"></script>
433
547
  <script>
@@ -448,7 +448,7 @@ function findPlugins(component: ScreenProps, foundPlugins: string[]) {
448
448
  <div class='footer quiet pad2 space-top1 center small'>
449
449
  Code coverage generated by
450
450
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
451
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
451
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
452
452
  </div>
453
453
  <script src="../../../prettify.js"></script>
454
454
  <script>
@@ -106,7 +106,7 @@ export async function <span class="cstat-no" title="statement not covered" ><spa
106
106
  <div class='footer quiet pad2 space-top1 center small'>
107
107
  Code coverage generated by
108
108
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
109
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
109
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
110
110
  </div>
111
111
  <script src="../../../prettify.js"></script>
112
112
  <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 Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
104
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../../../prettify.js"></script>
107
107
  <script>
@@ -664,7 +664,7 @@ export const getSignedUploadURL = async function (ctx: any) {
664
664
  <div class='footer quiet pad2 space-top1 center small'>
665
665
  Code coverage generated by
666
666
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
667
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
667
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
668
668
  </div>
669
669
  <script src="../../../../prettify.js"></script>
670
670
  <script>
@@ -634,7 +634,7 @@ export async function runStaticFormulaChecks(
634
634
  <div class='footer quiet pad2 space-top1 center small'>
635
635
  Code coverage generated by
636
636
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
637
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
637
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
638
638
  </div>
639
639
  <script src="../../../../prettify.js"></script>
640
640
  <script>
@@ -1138,7 +1138,7 @@ export async function <span class="cstat-no" title="statement not covered" ><spa
1138
1138
  <div class='footer quiet pad2 space-top1 center small'>
1139
1139
  Code coverage generated by
1140
1140
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1141
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
1141
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
1142
1142
  </div>
1143
1143
  <script src="../../../../prettify.js"></script>
1144
1144
  <script>
@@ -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 Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
164
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
165
165
  </div>
166
166
  <script src="../../../../prettify.js"></script>
167
167
  <script>
@@ -499,7 +499,7 @@ export async function <span class="fstat-no" title="function not covered" >valid
499
499
  <div class='footer quiet pad2 space-top1 center small'>
500
500
  Code coverage generated by
501
501
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
502
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
502
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
503
503
  </div>
504
504
  <script src="../../../../prettify.js"></script>
505
505
  <script>
@@ -643,7 +643,7 @@ export async function bulkImport(ctx: any) {
643
643
  <div class='footer quiet pad2 space-top1 center small'>
644
644
  Code coverage generated by
645
645
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
646
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
646
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
647
647
  </div>
648
648
  <script src="../../../../prettify.js"></script>
649
649
  <script>
@@ -1237,7 +1237,7 @@ export { _TableSaveFunctions as TableSaveFunctions }
1237
1237
  <div class='footer quiet pad2 space-top1 center small'>
1238
1238
  Code coverage generated by
1239
1239
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1240
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
1240
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
1241
1241
  </div>
1242
1242
  <script src="../../../../prettify.js"></script>
1243
1243
  <script>
@@ -199,7 +199,7 @@ export async function <span class="fstat-no" title="function not covered" >downl
199
199
  <div class='footer quiet pad2 space-top1 center small'>
200
200
  Code coverage generated by
201
201
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
202
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
202
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
203
203
  </div>
204
204
  <script src="../../../prettify.js"></script>
205
205
  <script>
@@ -619,7 +619,7 @@ export async function getFlags(ctx: BBContext) {
619
619
  <div class='footer quiet pad2 space-top1 center small'>
620
620
  Code coverage generated by
621
621
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
622
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
622
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
623
623
  </div>
624
624
  <script src="../../../prettify.js"></script>
625
625
  <script>
@@ -140,7 +140,7 @@
140
140
  <span class="cline-any cline-no">&nbsp;</span>
141
141
  <span class="cline-any cline-neutral">&nbsp;</span>
142
142
  <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-yes">56x</span>
143
+ <span class="cline-any cline-yes">57x</span>
144
144
  <span class="cline-any cline-neutral">&nbsp;</span>
145
145
  <span class="cline-any cline-neutral">&nbsp;</span>
146
146
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -199,7 +199,7 @@ export function isFormat(format: any): format is Format {
199
199
  <div class='footer quiet pad2 space-top1 center small'>
200
200
  Code coverage generated by
201
201
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
202
- at Tue Jan 31 2023 11:33:26 GMT+0000 (Coordinated Universal Time)
202
+ at Tue Jan 31 2023 15:45:01 GMT+0000 (Coordinated Universal Time)
203
203
  </div>
204
204
  <script src="../../../../prettify.js"></script>
205
205
  <script>