@budibase/server 2.2.12-alpha.20 → 2.2.12-alpha.21

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 (374) hide show
  1. package/builder/assets/{index.fa480d5b.css → index.34817feb.css} +1 -1
  2. package/builder/assets/{index.35af2c9c.js → index.61dfdc1c.js} +245 -244
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +772 -771
  5. package/coverage/coverage-final.json +40 -40
  6. package/coverage/lcov-report/index.html +55 -55
  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 +56 -56
  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 +12 -12
  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 +69 -69
  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 +1 -1
  64. package/coverage/lcov-report/src/api/controllers/row/index.html +15 -15
  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 +23 -20
  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 +1 -1
  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 +17 -17
  76. package/coverage/lcov-report/src/api/controllers/table/index.html +33 -33
  77. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +122 -35
  78. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +5 -5
  79. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +23 -26
  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 +61 -16
  83. package/coverage/lcov-report/src/api/controllers/view/index.html +28 -28
  84. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +52 -25
  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 +5 -5
  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 +17 -86
  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 +2 -2
  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 +2 -2
  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 +11 -11
  178. package/coverage/lcov-report/src/constants/index.html +1 -1
  179. package/coverage/lcov-report/src/constants/index.ts.html +25 -25
  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 +3 -3
  198. package/coverage/lcov-report/src/db/utils.ts.html +15 -15
  199. package/coverage/lcov-report/src/definitions/automations.ts.html +1 -1
  200. package/coverage/lcov-report/src/definitions/datasource.ts.html +1 -1
  201. package/coverage/lcov-report/src/definitions/index.html +1 -1
  202. package/coverage/lcov-report/src/environment.ts.html +19 -19
  203. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
  204. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
  205. package/coverage/lcov-report/src/events/index.html +1 -1
  206. package/coverage/lcov-report/src/events/index.ts.html +1 -1
  207. package/coverage/lcov-report/src/events/utils.ts.html +1 -1
  208. package/coverage/lcov-report/src/index.html +1 -1
  209. package/coverage/lcov-report/src/index.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/airtable.ts.html +1 -1
  211. package/coverage/lcov-report/src/integrations/arangodb.ts.html +1 -1
  212. package/coverage/lcov-report/src/integrations/base/index.html +1 -1
  213. package/coverage/lcov-report/src/integrations/base/query.ts.html +1 -1
  214. package/coverage/lcov-report/src/integrations/base/sql.ts.html +1 -1
  215. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +1 -1
  216. package/coverage/lcov-report/src/integrations/base/utils.ts.html +1 -1
  217. package/coverage/lcov-report/src/integrations/couchdb.ts.html +1 -1
  218. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +1 -1
  219. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +1 -1
  220. package/coverage/lcov-report/src/integrations/firebase.ts.html +1 -1
  221. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1 -1
  222. package/coverage/lcov-report/src/integrations/index.html +1 -1
  223. package/coverage/lcov-report/src/integrations/index.ts.html +1 -1
  224. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1 -1
  225. package/coverage/lcov-report/src/integrations/mongodb.ts.html +1 -1
  226. package/coverage/lcov-report/src/integrations/mysql.ts.html +1 -1
  227. package/coverage/lcov-report/src/integrations/oracle.ts.html +1 -1
  228. package/coverage/lcov-report/src/integrations/postgres.ts.html +1 -1
  229. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  230. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
  231. package/coverage/lcov-report/src/integrations/redis.ts.html +1 -1
  232. package/coverage/lcov-report/src/integrations/rest.ts.html +1 -1
  233. package/coverage/lcov-report/src/integrations/s3.ts.html +1 -1
  234. package/coverage/lcov-report/src/integrations/snowflake.ts.html +1 -1
  235. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  236. package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
  237. package/coverage/lcov-report/src/integrations/utils.ts.html +1 -1
  238. package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
  239. package/coverage/lcov-report/src/middleware/authorized.ts.html +21 -21
  240. package/coverage/lcov-report/src/middleware/builder.ts.html +12 -12
  241. package/coverage/lcov-report/src/middleware/currentapp.ts.html +33 -33
  242. package/coverage/lcov-report/src/middleware/index.html +1 -1
  243. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  244. package/coverage/lcov-report/src/middleware/publicApi.ts.html +1 -1
  245. package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
  246. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  247. package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
  248. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
  249. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +1 -1
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
  258. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +1 -1
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
  263. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
  265. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
  266. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  267. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
  268. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
  269. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
  274. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
  275. package/coverage/lcov-report/src/migrations/index.html +1 -1
  276. package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
  277. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  278. package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
  279. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  280. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  281. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +1 -1
  282. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +18 -18
  283. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +7 -7
  284. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  285. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
  286. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +1 -1
  287. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
  288. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +1 -1
  289. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +1 -1
  290. package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
  291. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
  292. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
  293. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +1 -1
  294. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  295. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +1 -1
  296. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  298. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +1 -1
  299. package/coverage/lcov-report/src/sdk/index.html +1 -1
  300. package/coverage/lcov-report/src/sdk/index.ts.html +2 -2
  301. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  302. package/coverage/lcov-report/src/sdk/users/index.ts.html +1 -1
  303. package/coverage/lcov-report/src/sdk/users/utils.ts.html +20 -20
  304. package/coverage/lcov-report/src/startup.ts.html +1 -1
  305. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +59 -59
  306. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +3 -3
  307. package/coverage/lcov-report/src/tests/utilities/index.html +1 -1
  308. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  309. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +2 -2
  310. package/coverage/lcov-report/src/threads/automation.ts.html +1 -1
  311. package/coverage/lcov-report/src/threads/index.html +1 -1
  312. package/coverage/lcov-report/src/threads/index.ts.html +1 -1
  313. package/coverage/lcov-report/src/threads/query.ts.html +1 -1
  314. package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
  315. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  316. package/coverage/lcov-report/src/utilities/centralPath.ts.html +2 -2
  317. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +16 -16
  318. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +8 -8
  319. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +30 -30
  320. package/coverage/lcov-report/src/utilities/fileSystem/index.html +15 -15
  321. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +6 -6
  322. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +8 -8
  323. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  324. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +7 -7
  325. package/coverage/lcov-report/src/utilities/global.ts.html +33 -33
  326. package/coverage/lcov-report/src/utilities/index.html +24 -24
  327. package/coverage/lcov-report/src/utilities/index.ts.html +4 -4
  328. package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
  329. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  330. package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
  331. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
  332. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +1 -1
  333. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +1 -1
  334. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +1 -1
  335. package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
  336. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
  337. package/coverage/lcov-report/src/utilities/security.ts.html +1 -1
  338. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  339. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +1 -1
  340. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  341. package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
  342. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +1 -1
  343. package/coverage/lcov-report/src/watch.ts.html +1 -1
  344. package/coverage/lcov-report/src/websocket.ts.html +1 -1
  345. package/coverage/lcov.info +1303 -1267
  346. package/dist/api/controllers/row/internal.js +12 -8
  347. package/dist/api/controllers/table/external.js +8 -30
  348. package/dist/api/controllers/table/index.js +44 -15
  349. package/dist/api/controllers/table/internal.js +4 -4
  350. package/dist/api/controllers/table/utils.js +9 -9
  351. package/dist/api/controllers/view/exporters.js +22 -6
  352. package/dist/api/controllers/view/index.js +19 -34
  353. package/dist/api/routes/table.js +6 -37
  354. package/dist/api/routes/utils/validators.js +1 -1
  355. package/dist/package.json +6 -6
  356. package/dist/tsconfig.build.tsbuildinfo +1 -1
  357. package/dist/utilities/schema.js +108 -0
  358. package/package.json +7 -7
  359. package/src/api/controllers/row/internal.ts +10 -9
  360. package/src/api/controllers/table/external.ts +10 -10
  361. package/src/api/controllers/table/index.ts +46 -17
  362. package/src/api/controllers/table/internal.ts +4 -4
  363. package/src/api/controllers/table/utils.ts +12 -13
  364. package/src/api/controllers/view/exporters.ts +20 -5
  365. package/src/api/controllers/view/index.ts +21 -12
  366. package/src/api/routes/table.ts +15 -38
  367. package/src/api/routes/tests/misc.spec.js +4 -10
  368. package/src/api/routes/tests/table.spec.js +8 -30
  369. package/src/api/routes/utils/validators.ts +1 -1
  370. package/src/utilities/schema.ts +141 -0
  371. package/dist/utilities/csvParser.js +0 -152
  372. package/src/utilities/csvParser.ts +0 -161
  373. package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
  374. package/src/utilities/tests/csvParser.spec.js +0 -112
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">85.93% </span>
26
+ <span class="strong">66.25% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>55/64</span>
28
+ <span class='fraction'>53/80</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">76.92% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>20/26</span>
35
+ <span class='fraction'>15/30</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">86.66% </span>
40
+ <span class="strong">73.68% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>13/15</span>
42
+ <span class='fraction'>14/19</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">87.3% </span>
47
+ <span class="strong">67.08% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>55/63</span>
49
+ <span class='fraction'>53/79</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line high'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -177,14 +177,48 @@
177
177
  <a name='L112'></a><a href='#L112'>112</a>
178
178
  <a name='L113'></a><a href='#L113'>113</a>
179
179
  <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
181
210
  <span class="cline-any cline-yes">55x</span>
211
+ <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
213
+ <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
215
  <span class="cline-any cline-yes">55x</span>
183
216
  <span class="cline-any cline-yes">55x</span>
184
217
  <span class="cline-any cline-yes">55x</span>
185
218
  <span class="cline-any cline-yes">55x</span>
186
219
  <span class="cline-any cline-neutral">&nbsp;</span>
187
220
  <span class="cline-any cline-yes">55x</span>
221
+ <span class="cline-any cline-yes">55x</span>
188
222
  <span class="cline-any cline-neutral">&nbsp;</span>
189
223
  <span class="cline-any cline-neutral">&nbsp;</span>
190
224
  <span class="cline-any cline-yes">134x</span>
@@ -235,8 +269,8 @@
235
269
  <span class="cline-any cline-yes">177x</span>
236
270
  <span class="cline-any cline-yes">130x</span>
237
271
  <span class="cline-any cline-yes">130x</span>
238
- <span class="cline-any cline-neutral">&nbsp;</span>
239
272
  <span class="cline-any cline-yes">130x</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
240
274
  <span class="cline-any cline-yes">130x</span>
241
275
  <span class="cline-any cline-yes">130x</span>
242
276
  <span class="cline-any cline-yes">124x</span>
@@ -276,29 +310,58 @@
276
310
  <span class="cline-any cline-neutral">&nbsp;</span>
277
311
  <span class="cline-any cline-neutral">&nbsp;</span>
278
312
  <span class="cline-any cline-yes">54x</span>
313
+ <span class="cline-any cline-no">&nbsp;</span>
279
314
  <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-no">&nbsp;</span>
281
316
  <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-yes">1x</span>
317
+ <span class="cline-any cline-no">&nbsp;</span>
283
318
  <span class="cline-any cline-no">&nbsp;</span>
284
319
  <span class="cline-any cline-neutral">&nbsp;</span>
285
- <span class="cline-any cline-yes">1x</span>
286
320
  <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-yes">54x</span>
322
+ <span class="cline-any cline-no">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-no">&nbsp;</span>
325
+ <span class="cline-any cline-no">&nbsp;</span>
326
+ <span class="cline-any cline-no">&nbsp;</span>
287
327
  <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-no">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-yes">54x</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-no">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-no">&nbsp;</span>
337
+ <span class="cline-any cline-no">&nbsp;</span>
338
+ <span class="cline-any cline-no">&nbsp;</span>
339
+ <span class="cline-any cline-no">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-no">&nbsp;</span>
342
+ <span class="cline-any cline-no">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-no">&nbsp;</span>
346
+ <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-no">&nbsp;</span>
288
348
  <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-yes">1x</span>
290
349
  <span class="cline-any cline-no">&nbsp;</span>
291
350
  <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-yes">1x</span>
293
351
  <span class="cline-any cline-neutral">&nbsp;</span>
294
352
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import * as internal from "./internal"
295
353
  import * as external from "./external"
296
- import * as csvParser from "../../../utilities/csvParser"
354
+ import {
355
+ validate as validateSchema,
356
+ isSchema,
357
+ isRows,
358
+ } from "../../../utilities/schema"
297
359
  import { isExternalTable, isSQL } from "../../../integrations/utils"
298
360
  import { getDatasourceParams } from "../../../db/utils"
299
361
  import { context, events } from "@budibase/backend-core"
300
362
  import { Table, BBContext } from "@budibase/types"
301
363
  import sdk from "../../../sdk"
364
+ import csv from "csvtojson"
302
365
  &nbsp;
303
366
  function pickApi({ tableId, table }: { tableId?: string; table?: Table }) {
304
367
  if (table &amp;&amp; !tableId) {
@@ -349,16 +412,16 @@ export async function find(ctx: BBContext) {
349
412
  export async function save(ctx: BBContext) {
350
413
  const appId = ctx.appId
351
414
  const table = ctx.request.body
352
- const importFormat =
353
- table.dataImport &amp;&amp; table.dataImport.csvString ? "csv" : undefined
415
+ const isImport = table.rows
416
+ &nbsp;
354
417
  const savedTable = await pickApi({ table }).save(ctx)
355
418
  if (!table._id) {
356
419
  await events.table.created(savedTable)
357
420
  } else {
358
421
  await events.table.updated(savedTable)
359
422
  }
360
- if (importFormat) {
361
- await events.table.imported(savedTable, importFormat)
423
+ if (isImport) {
424
+ await events.table.imported(savedTable)
362
425
  }
363
426
  ctx.status = 200
364
427
  ctx.message = `Table ${table.name} saved successfully.`
@@ -389,21 +452,45 @@ export async function bulkImport(ctx: BBContext) {
389
452
  ctx.body = { message: `Bulk rows created.` }
390
453
  }
391
454
  &nbsp;
392
- export async function validateCSVSchema(ctx: BBContext) {
393
- // tableId being specified means its an import to an existing table
394
- const { csvString, schema = {}, tableId } = ctx.request.body
395
- let existingTable
396
- <span class="missing-if-branch" title="if path not taken" >I</span>if (tableId) {
397
- <span class="cstat-no" title="statement not covered" > existingTable = await sdk.tables.getTable(tableId)</span>
455
+ export async function <span class="fstat-no" title="function not covered" >csvToJson(</span>ctx: BBContext) {
456
+ const { csvString } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
457
+ &nbsp;
458
+ const result = <span class="cstat-no" title="statement not covered" >await csv().fromString(csvString)</span>
459
+ &nbsp;
460
+ <span class="cstat-no" title="statement not covered" > ctx.status = 200</span>
461
+ <span class="cstat-no" title="statement not covered" > ctx.body = result</span>
462
+ }
463
+ &nbsp;
464
+ export async function <span class="fstat-no" title="function not covered" >validateNewTableImport(</span>ctx: BBContext) {
465
+ const { rows, schema }: { rows: unknown; schema: unknown } = <span class="cstat-no" title="statement not covered" >ctx.request.body</span>
466
+ &nbsp;
467
+ <span class="cstat-no" title="statement not covered" > if (isRows(rows) &amp;&amp; isSchema(schema)) {</span>
468
+ <span class="cstat-no" title="statement not covered" > ctx.status = 200</span>
469
+ <span class="cstat-no" title="statement not covered" > ctx.body = validateSchema(rows, schema)</span>
470
+ } else {
471
+ <span class="cstat-no" title="statement not covered" > ctx.status = 422</span>
398
472
  }
399
- let result: Record&lt;string, any&gt; | undefined = await csvParser.parse(
400
- csvString,
401
- schema
402
- )
403
- <span class="missing-if-branch" title="if path not taken" >I</span>if (existingTable) {
404
- <span class="cstat-no" title="statement not covered" > result = csvParser.updateSchema({ schema: result, existingTable })</span>
473
+ }
474
+ &nbsp;
475
+ export async function <span class="fstat-no" title="function not covered" >validateExistingTableImport(</span>ctx: BBContext) {
476
+ const { rows, tableId }: { rows: unknown; tableId: unknown } =
477
+ <span class="cstat-no" title="statement not covered" > ctx.request.body</span>
478
+ &nbsp;
479
+ let schema = <span class="cstat-no" title="statement not covered" >null</span>
480
+ <span class="cstat-no" title="statement not covered" > if (tableId) {</span>
481
+ const table = <span class="cstat-no" title="statement not covered" >await sdk.tables.getTable(tableId)</span>
482
+ <span class="cstat-no" title="statement not covered" > schema = table.schema</span>
483
+ } else {
484
+ <span class="cstat-no" title="statement not covered" > ctx.status = 422</span>
485
+ <span class="cstat-no" title="statement not covered" > return</span>
486
+ }
487
+ &nbsp;
488
+ <span class="cstat-no" title="statement not covered" > if (tableId &amp;&amp; isRows(rows) &amp;&amp; isSchema(schema)) {</span>
489
+ <span class="cstat-no" title="statement not covered" > ctx.status = 200</span>
490
+ <span class="cstat-no" title="statement not covered" > ctx.body = validateSchema(rows, schema)</span>
491
+ } else {
492
+ <span class="cstat-no" title="statement not covered" > ctx.status = 422</span>
405
493
  }
406
- ctx.body = { schema: result }
407
494
  }
408
495
  &nbsp;</pre></td></tr></table></pre>
409
496
 
@@ -412,7 +499,7 @@ export async function validateCSVSchema(ctx: BBContext) {
412
499
  <div class='footer quiet pad2 space-top1 center small'>
413
500
  Code coverage generated by
414
501
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
415
- at Mon Jan 16 2023 11:39:43 GMT+0000 (Coordinated Universal Time)
502
+ at Tue Jan 17 2023 15:17:11 GMT+0000 (Coordinated Universal Time)
416
503
  </div>
417
504
  <script src="../../../../prettify.js"></script>
418
505
  <script>
@@ -482,7 +482,7 @@ function checkAutoColumns(table: Table, oldTable: Table) {
482
482
  &nbsp;
483
483
  export async function save(ctx: any) {
484
484
  const db = context.getAppDB()
485
- const { dataImport, ...rest } = ctx.request.body
485
+ const { rows, ...rest } = ctx.request.body
486
486
  let tableToSave = {
487
487
  type: "table",
488
488
  _id: generateTableID(),
@@ -508,7 +508,7 @@ export async function save(ctx: any) {
508
508
  const tableSaveFunctions = new TableSaveFunctions({
509
509
  user: ctx.user,
510
510
  oldTable,
511
- dataImport,
511
+ importRows: rows,
512
512
  })
513
513
  tableToSave = await tableSaveFunctions.before(tableToSave)
514
514
  &nbsp;
@@ -632,8 +632,8 @@ export async function destroy(ctx: any) {
632
632
  &nbsp;
633
633
  export async function bulkImport(ctx: any) {
634
634
  const table = await sdk.tables.getTable(ctx.params.tableId)
635
- const { dataImport } = ctx.request.body
636
- await handleDataImport(ctx.user, table, dataImport)
635
+ const { rows } = ctx.request.body
636
+ await handleDataImport(ctx.user, table, rows)
637
637
  return table
638
638
  }
639
639
  &nbsp;</pre></td></tr></table></pre>
@@ -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 Mon Jan 16 2023 11:39:43 GMT+0000 (Coordinated Universal Time)
646
+ at Tue Jan 17 2023 15:17:11 GMT+0000 (Coordinated Universal Time)
647
647
  </div>
648
648
  <script src="../../../../prettify.js"></script>
649
649
  <script>
@@ -23,16 +23,16 @@
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">64.13% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>117/183</span>
28
+ <span class='fraction'>118/184</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">45% </span>
33
+ <span class="strong">45.9% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>27/60</span>
35
+ <span class='fraction'>28/61</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">63.84% </span>
47
+ <span class="strong">64.04% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>113/177</span>
49
+ <span class='fraction'>114/178</span>
50
50
  </div>
51
51
 
52
52
 
@@ -452,8 +452,7 @@
452
452
  <a name='L387'></a><a href='#L387'>387</a>
453
453
  <a name='L388'></a><a href='#L388'>388</a>
454
454
  <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
455
+ <a name='L390'></a><a href='#L390'>390</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
457
456
  <span class="cline-any cline-yes">55x</span>
458
457
  <span class="cline-any cline-yes">55x</span>
459
458
  <span class="cline-any cline-yes">55x</span>
@@ -585,21 +584,20 @@
585
584
  <span class="cline-any cline-neutral">&nbsp;</span>
586
585
  <span class="cline-any cline-yes">2x</span>
587
586
  <span class="cline-any cline-yes">132x</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-yes">132x</span>
588
589
  <span class="cline-any cline-yes">129x</span>
589
590
  <span class="cline-any cline-neutral">&nbsp;</span>
590
591
  <span class="cline-any cline-neutral">&nbsp;</span>
591
592
  <span class="cline-any cline-yes">3x</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
593
  <span class="cline-any cline-yes">3x</span>
594
594
  <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
595
  <span class="cline-any cline-yes">3x</span>
599
596
  <span class="cline-any cline-neutral">&nbsp;</span>
600
597
  <span class="cline-any cline-yes">3x</span>
601
598
  <span class="cline-any cline-neutral">&nbsp;</span>
602
599
  <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
601
  <span class="cline-any cline-yes">3x</span>
604
602
  <span class="cline-any cline-yes">3x</span>
605
603
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -843,7 +841,7 @@
843
841
  <span class="cline-any cline-neutral">&nbsp;</span>
844
842
  <span class="cline-any cline-yes">55x</span>
845
843
  <span class="cline-any cline-yes">130x</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { transform } from "../../../utilities/csvParser"
844
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { parse, isSchema, isRows } from "../../../utilities/schema"
847
845
  import { getRowParams, generateRowID, InternalTables } from "../../../db/utils"
848
846
  import { isEqual } from "lodash"
849
847
  import { AutoFieldSubTypes, FieldTypes } from "../../../constants"
@@ -973,24 +971,23 @@ export function <span class="cstat-no" title="statement not covered" >importToRo
973
971
  return finalData
974
972
  }
975
973
  &nbsp;
976
- export async function handleDataImport(user: any, table: any, dataImport: any) {
977
- if (!dataImport || !dataImport.csvString) {
974
+ export async function handleDataImport(user: any, table: any, rows: any) {
975
+ const schema: unknown = table.schema
976
+ &nbsp;
977
+ if (!rows || !isRows(rows) || !isSchema(schema)) {
978
978
  return table
979
979
  }
980
980
  &nbsp;
981
981
  const db = context.getAppDB()
982
- // Populate the table with rows imported from CSV in a bulk update
983
- const data = await transform({
984
- ...dataImport,
985
- existingTable: table,
986
- })
982
+ const data = parse(rows, schema)
987
983
  &nbsp;
988
984
  let finalData: any = importToRows(data, table, user)
989
985
  &nbsp;
990
986
  await quotas.addRows(finalData.length, () =&gt; db.bulkDocs(finalData), {
991
987
  tableId: table._id,
992
988
  })
993
- await events.rows.imported(table, "csv", finalData.length)
989
+ &nbsp;
990
+ await events.rows.imported(table, finalData.length)
994
991
  return table
995
992
  }
996
993
  &nbsp;
@@ -1055,14 +1052,14 @@ class TableSaveFunctions {
1055
1052
  db: any
1056
1053
  user: any
1057
1054
  oldTable: any
1058
- dataImport: any
1055
+ importRows: any
1059
1056
  rows: any
1060
1057
  &nbsp;
1061
- constructor({ user, oldTable, dataImport }: any) {
1058
+ constructor({ user, oldTable, importRows }: any) {
1062
1059
  this.db = context.getAppDB()
1063
1060
  this.user = user
1064
1061
  this.oldTable = oldTable
1065
- this.dataImport = dataImport
1062
+ this.importRows = importRows
1066
1063
  // any rows that need updated
1067
1064
  this.rows = []
1068
1065
  }
@@ -1086,7 +1083,7 @@ class TableSaveFunctions {
1086
1083
  // after saving
1087
1084
  async after(table: any) {
1088
1085
  table = await handleSearchIndexes(table)
1089
- table = await handleDataImport(this.user, table, this.dataImport)
1086
+ table = await handleDataImport(this.user, table, this.importRows)
1090
1087
  return table
1091
1088
  }
1092
1089
  &nbsp;
@@ -1240,7 +1237,7 @@ export { _TableSaveFunctions as TableSaveFunctions }
1240
1237
  <div class='footer quiet pad2 space-top1 center small'>
1241
1238
  Code coverage generated by
1242
1239
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1243
- at Mon Jan 16 2023 11:39:43 GMT+0000 (Coordinated Universal Time)
1240
+ at Tue Jan 17 2023 15:17:11 GMT+0000 (Coordinated Universal Time)
1244
1241
  </div>
1245
1242
  <script src="../../../../prettify.js"></script>
1246
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 Mon Jan 16 2023 11:39:43 GMT+0000 (Coordinated Universal Time)
202
+ at Tue Jan 17 2023 15:17:11 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 Mon Jan 16 2023 11:39:43 GMT+0000 (Coordinated Universal Time)
622
+ at Tue Jan 17 2023 15:17:11 GMT+0000 (Coordinated Universal Time)
623
623
  </div>
624
624
  <script src="../../../prettify.js"></script>
625
625
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
26
+ <span class="strong">73.91% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>13/13</span>
28
+ <span class='fraction'>17/23</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">50% </span>
33
+ <span class="strong">57.14% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/4</span>
35
+ <span class='fraction'>4/7</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">75% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>7/7</span>
42
+ <span class='fraction'>9/12</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
47
+ <span class="strong">68.42% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>11/11</span>
49
+ <span class='fraction'>13/19</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line high'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -91,7 +91,22 @@
91
91
  <a name='L26'></a><a href='#L26'>26</a>
92
92
  <a name='L27'></a><a href='#L27'>27</a>
93
93
  <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
95
110
  <span class="cline-any cline-neutral">&nbsp;</span>
96
111
  <span class="cline-any cline-yes">2x</span>
97
112
  <span class="cline-any cline-yes">4x</span>
@@ -115,11 +130,26 @@
115
130
  <span class="cline-any cline-yes">4x</span>
116
131
  <span class="cline-any cline-neutral">&nbsp;</span>
117
132
  <span class="cline-any cline-neutral">&nbsp;</span>
133
+ <span class="cline-any cline-no">&nbsp;</span>
134
+ <span class="cline-any cline-no">&nbsp;</span>
135
+ <span class="cline-any cline-no">&nbsp;</span>
136
+ <span class="cline-any cline-no">&nbsp;</span>
137
+ <span class="cline-any cline-no">&nbsp;</span>
138
+ <span class="cline-any cline-neutral">&nbsp;</span>
139
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
+ <span class="cline-any cline-no">&nbsp;</span>
141
+ <span class="cline-any cline-neutral">&nbsp;</span>
142
+ <span class="cline-any cline-neutral">&nbsp;</span>
118
143
  <span class="cline-any cline-yes">55x</span>
119
144
  <span class="cline-any cline-neutral">&nbsp;</span>
120
145
  <span class="cline-any cline-neutral">&nbsp;</span>
121
146
  <span class="cline-any cline-neutral">&nbsp;</span>
122
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Row } from "@budibase/types"
147
+ <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-yes">4x</span>
150
+ <span class="cline-any cline-yes">4x</span>
151
+ <span class="cline-any cline-neutral">&nbsp;</span>
152
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Row, TableSchema } from "@budibase/types"
123
153
  &nbsp;
124
154
  export function csv(headers: string[], rows: Row[]) {
125
155
  let csv = headers.map(key =&gt; `"${key}"`).join(",")
@@ -139,13 +169,28 @@ export function csv(headers: string[], rows: Row[]) {
139
169
  return csv
140
170
  }
141
171
  &nbsp;
142
- export function json(headers: string[], rows: Row[]) {
172
+ export function json(rows: Row[]) {
143
173
  return JSON.stringify(rows, undefined, 2)
144
174
  }
145
175
  &nbsp;
146
- export const ExportFormats = {
147
- CSV: "csv",
148
- JSON: "json",
176
+ export function <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >jsonWithSchema<span class="fstat-no" title="function not covered" >(</span></span>s</span>chema: TableSchema, rows: Row[]) {
177
+ const newSchema: TableSchema = <span class="cstat-no" title="statement not covered" >{}</span>
178
+ <span class="cstat-no" title="statement not covered" > Object.values(schema).forEach(<span class="fstat-no" title="function not covered" >column =&gt; {</span></span>
179
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!column.autocolumn) {</span>
180
+ <span class="cstat-no" title="statement not covered" > newSchema[column.name] = column</span>
181
+ }
182
+ })
183
+ <span class="cstat-no" title="statement not covered" > return JSON.stringify({ schema: newSchema, rows }, undefined, 2)</span>
184
+ }
185
+ &nbsp;
186
+ export enum Format {
187
+ CSV = "csv",
188
+ JSON = "json",
189
+ JSON_WITH_SCHEMA = "jsonWithSchema",
190
+ }
191
+ &nbsp;
192
+ export function isFormat(format: any): format is Format {
193
+ return Object.values(Format).includes(format as Format)
149
194
  }
150
195
  &nbsp;</pre></td></tr></table></pre>
151
196
 
@@ -154,7 +199,7 @@ export const ExportFormats = {
154
199
  <div class='footer quiet pad2 space-top1 center small'>
155
200
  Code coverage generated by
156
201
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
157
- at Mon Jan 16 2023 11:39:43 GMT+0000 (Coordinated Universal Time)
202
+ at Tue Jan 17 2023 15:17:11 GMT+0000 (Coordinated Universal Time)
158
203
  </div>
159
204
  <script src="../../../../prettify.js"></script>
160
205
  <script>